增加斯耀安全组处理

This commit is contained in:
GYJ 2025-01-14 10:28:44 +08:00
parent d5cd5edd5f
commit 3c4411b325
5 changed files with 198 additions and 22 deletions

6
.idea/vcs.xml Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

103
alipay/sy_update_ali_ip.go Normal file
View File

@ -0,0 +1,103 @@
package alipay
import (
"encoding/json"
"errors"
"fmt"
openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
ecs20140526 "github.com/alibabacloud-go/ecs-20140526/v4/client"
util "github.com/alibabacloud-go/tea-utils/v2/service"
"github.com/alibabacloud-go/tea/tea"
"github.com/google/uuid"
"strings"
)
// 用户登录名称 ecs-ip@1882833282563718.onaliyun.com
// 登录密码 ETVuwaiCHBKP36$jvdxkp7&!)Zt4JcWL
// AccessKey ID LTAI5tQCWkqiinoXLpC5q5ZG
// AccessKey Secret bp6V7H7pkB0bJygJkVVxhlm2i7RiqD
var (
_syClient *ecs20140526.Client
SyRegionId = "cn-nanjing"
SyAccessKeyId = "LTAI5tQCWkqiinoXLpC5q5ZG"
SyAccessKeySecret = "bp6V7H7pkB0bJygJkVVxhlm2i7RiqD"
SyEndPoint = "ecs.cn-nanjing.aliyuncs.com"
//SyEndPoint = "ecs-cn-hangzhou.aliyuncs.com"
)
func CreateSyClient() (_result *ecs20140526.Client, _err error) {
// 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
// 建议使用更安全的 STS 方式更多鉴权访问方式请参见https://help.aliyun.com/document_detail/378661.html。
config := &openapi.Config{
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
AccessKeyId: tea.String(SyAccessKeyId),
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
AccessKeySecret: tea.String(SyAccessKeySecret),
}
// Endpoint 请参考 https://api.aliyun.com/product/Ecs
config.Endpoint = tea.String(SyEndPoint)
_result = &ecs20140526.Client{}
_result, _err = ecs20140526.NewClient(config)
return _result, _err
}
func UpdateSyAliIp(groupId, ruleId, ip string) (_err error) {
if _syClient == nil {
client, e := CreateSyClient()
if e != nil {
return e
}
_syClient = client
}
newUUID, _ := uuid.NewUUID()
modifySecurityGroupRuleRequest := &ecs20140526.ModifySecurityGroupRuleRequest{
RegionId: tea.String(SyRegionId),
ClientToken: tea.String(newUUID.String()),
SecurityGroupId: tea.String(groupId),
SecurityGroupRuleId: tea.String(ruleId),
SourceCidrIp: tea.String(ip),
}
runtime := &util.RuntimeOptions{}
tryErr := func() (_e error) {
defer func() {
if r := tea.Recover(recover()); r != nil {
_e = r
}
}()
// 复制代码运行请自行打印 API 的返回值
_, _err = _syClient.ModifySecurityGroupRuleWithOptions(modifySecurityGroupRuleRequest, runtime)
if _err != nil {
return _err
}
return nil
}()
if tryErr != nil {
var err = &tea.SDKError{}
var _t *tea.SDKError
if errors.As(tryErr, &_t) {
err = _t
}
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
fmt.Println(tea.StringValue(err.Message))
// 诊断地址
var data interface{}
d := json.NewDecoder(strings.NewReader(tea.StringValue(err.Data)))
e := d.Decode(&data)
if e != nil {
return e
}
if m, ok := data.(map[string]interface{}); ok {
recommend, _ := m["Recommend"]
fmt.Println(recommend)
}
_, _err = util.AssertAsString(err.Message)
if _err != nil {
return _err
}
}
return _err
}

View File

@ -17,6 +17,7 @@ var (
RegionId = "cn-hangzhou"
AccessKeyId = "LTAI5tS5pSkUwm6VURuaetxs"
AccessKeySecret = "iQFIO4MFa7tZ7HbHs0OXOaMDvMozM5"
EndPoint = "ecs-cn-hangzhou.aliyuncs.com"
)
func CreateClient() (_result *ecs20140526.Client, _err error) {
@ -29,7 +30,7 @@ func CreateClient() (_result *ecs20140526.Client, _err error) {
AccessKeySecret: tea.String(AccessKeySecret),
}
// Endpoint 请参考 https://api.aliyun.com/product/Ecs
config.Endpoint = tea.String("ecs-cn-hangzhou.aliyuncs.com")
config.Endpoint = tea.String(EndPoint)
_result = &ecs20140526.Client{}
_result, _err = ecs20140526.NewClient(config)
return _result, _err

2
go.mod
View File

@ -7,6 +7,7 @@ require (
github.com/alibabacloud-go/ecs-20140526/v4 v4.26.0
github.com/alibabacloud-go/tea v1.2.2
github.com/alibabacloud-go/tea-utils/v2 v2.0.7
github.com/google/uuid v1.6.0
)
require (
@ -24,7 +25,6 @@ require (
github.com/alibabacloud-go/tea-xml v1.1.3 // indirect
github.com/aliyun/credentials-go v1.3.10 // indirect
github.com/clbanning/mxj/v2 v2.5.5 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect

106
main.go
View File

@ -66,22 +66,76 @@ var (
RuleId: "sgr-bp1flbqxvwq6f7ffu2qm",
},
}
syGroupRoleList = []*GroupRole{
{
Desc: "2881",
GroupId: "sg-gc7huspbax0pywqu423w",
RuleId: "sgr-gc7i4mfwl67i3w4au7vi",
}, {
Desc: "8889",
GroupId: "sg-gc7huspbax0pywqu423w",
RuleId: "sgr-gc7djax9mkuc2vdb4tl2",
}, {
Desc: "3306",
GroupId: "sg-gc7huspbax0pywqu423w",
RuleId: "sgr-gc7ajavhz3quy6bqj84n",
}, {
Desc: "8680",
GroupId: "sg-gc7huspbax0pywqu423w",
RuleId: "sgr-gc7djax9mkuc2tea0rlx",
}, {
Desc: "3000",
GroupId: "sg-gc7huspbax0pywqu423w",
RuleId: "sgr-gc7bugau2qp748f0h56h",
}, {
Desc: "3307",
GroupId: "sg-gc7huspbax0pywqu423w",
RuleId: "sgr-gc76hu8bzkckm2l0geun",
}, {
Desc: "9200",
GroupId: "sg-gc7huspbax0pywqu423w",
RuleId: "sgr-gc7dagt483s8m2nyz4s1",
}, {
Desc: "8089",
GroupId: "sg-gc7huspbax0pywqu423w",
RuleId: "sgr-gc73tx7hw41tmksce625",
}, {
Desc: "5601",
GroupId: "sg-gc7huspbax0pywqu423w",
RuleId: "sgr-gc76hu8bzkcj33l0hd4g",
}, {
Desc: "28893",
GroupId: "sg-gc7huspbax0pywqu423w",
RuleId: "sgr-gc79b1igyb7t1u69o4lg",
}, {
Desc: "雷池-9443",
GroupId: "sg-gc7huspbax0pywqu423w",
RuleId: "sgr-gc7dqmoucm29ij296ue6",
}, {
Desc: "20884",
GroupId: "sg-gc7huspbax0pywqu423w",
RuleId: "sgr-gc7882ccgyc006rs1i4j",
},
}
)
func main() {
for {
updateServerSgIp()
duration := time.Hour
//duration := 5 * time.Second
ticker := time.NewTicker(duration)
<-ticker.C
fmt.Println("定时结束!")
ticker.Stop()
}
//updateServerSgIp(true)
updateServerSgIp(false)
//for {
// updateServerSgIp()
//
// duration := time.Hour
// //duration := 5 * time.Second
// ticker := time.NewTicker(duration)
// <-ticker.C
// fmt.Println("定时结束!")
// ticker.Stop()
//}
}
func updateServerSgIp() {
func updateServerSgIp(isCzg bool) {
fmt.Println("updateServerSgIp start")
fmt.Println("lastIp: ", lastIp)
fmt.Println("start time: ", time.Now().Format("2006-01-02 15:04:05"))
@ -108,19 +162,31 @@ func updateServerSgIp() {
fmt.Println("ip change, go to update aliyun")
for _, groupRole := range groupRoleList {
err := alipay.UpdateAliIp(groupRole.GroupId, groupRole.RuleId, ipInfo.Ip)
if isCzg {
for _, groupRole := range groupRoleList {
err := alipay.UpdateAliIp(groupRole.GroupId, groupRole.RuleId, ipInfo.Ip)
if err != nil {
fmt.Printf("UpdateAliIp err: %s, Desc: %s\n", err.Error(), groupRole.Desc)
} else {
fmt.Println("UpdateAliIp success: ", groupRole.Desc)
}
}
err := alipay.UpdateAliIp("sg-bp1csfr2wcn7ujwoabkk", "sgr-bp1adiq57mnoe3asdpoh", ipInfo.Ip)
if err != nil {
fmt.Printf("UpdateAliIp err: %s, Desc: %s\n", err.Error(), groupRole.Desc)
} else {
fmt.Println("UpdateAliIp success: ", groupRole.Desc)
fmt.Println("UpdateAliIp err:", err)
}
} else {
for _, groupRole := range syGroupRoleList {
err := alipay.UpdateSyAliIp(groupRole.GroupId, groupRole.RuleId, ipInfo.Ip)
if err != nil {
fmt.Printf("UpdateAliIp err: %s, Desc: %s\n", err.Error(), groupRole.Desc)
} else {
fmt.Println("UpdateAliIp success: ", groupRole.Desc)
}
}
}
err := alipay.UpdateAliIp("sg-bp1csfr2wcn7ujwoabkk", "sgr-bp1adiq57mnoe3asdpoh", ipInfo.Ip)
if err != nil {
fmt.Println("UpdateAliIp err:", err)
}
}
func getSelfIp() *IpInfo {