171 lines
3.2 KiB
Go
171 lines
3.2 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"io"
|
|
"jiujunet.com/alipay"
|
|
"net/http"
|
|
"time"
|
|
)
|
|
|
|
type (
|
|
IpRes struct {
|
|
Ret string `json:"ret"`
|
|
Data *IpInfo `json:"data"`
|
|
}
|
|
|
|
IpInfo struct {
|
|
Ip string `json:"ip"`
|
|
Location []string `json:"location"`
|
|
}
|
|
|
|
GroupRole struct {
|
|
Desc string `json:"desc"`
|
|
GroupId string `json:"groupId"`
|
|
RuleId string `json:"ruleId"`
|
|
}
|
|
)
|
|
|
|
var (
|
|
lastIp = ""
|
|
groupRoleList = []*GroupRole{
|
|
{
|
|
Desc: "收银系统正式-宝塔",
|
|
GroupId: "sg-bp1csfr2wcn7ujwoabkk",
|
|
RuleId: "sgr-bp1adiq57mnoe3asdpoh",
|
|
},
|
|
{
|
|
Desc: "收银系统正式-22",
|
|
GroupId: "sg-bp1csfr2wcn7ujwoabkk",
|
|
RuleId: "sgr-bp10yy3lg5lw9g6qhv8o",
|
|
},
|
|
{
|
|
Desc: "支付系统-22",
|
|
GroupId: "sg-bp1hnd3bgw6jq8kmn1ju",
|
|
RuleId: "sgr-bp1dwhn7mi8mlf60xcgo",
|
|
},
|
|
{
|
|
Desc: "支付系统-支付宝塔",
|
|
GroupId: "sg-bp1hnd3bgw6jq8kmn1ju",
|
|
RuleId: "sgr-bp1653xk85wnusza1nvh",
|
|
},
|
|
{
|
|
Desc: "支付系统-预发布宝塔",
|
|
GroupId: "sg-bp1hnd3bgw6jq8kmn1ju",
|
|
RuleId: "sgr-bp1idleb69yzsb69yluz",
|
|
},
|
|
{
|
|
Desc: "支付系统-预发布宝塔",
|
|
GroupId: "sg-bp1hnd3bgw6jq8kmn1ju",
|
|
RuleId: "sgr-bp1idleb69yzsb69yluz",
|
|
},
|
|
{
|
|
Desc: "银收客-22",
|
|
GroupId: "sg-bp1hnylmydz8bi7gqtgj",
|
|
RuleId: "sgr-bp1flbqxvwq6f7ffu2qm",
|
|
},
|
|
}
|
|
)
|
|
|
|
func main() {
|
|
for {
|
|
updateServerSgIp()
|
|
|
|
duration := time.Hour
|
|
//duration := 5 * time.Second
|
|
ticker := time.NewTicker(duration)
|
|
<-ticker.C
|
|
fmt.Println("定时结束!")
|
|
ticker.Stop()
|
|
}
|
|
}
|
|
|
|
func updateServerSgIp() {
|
|
fmt.Println("updateServerSgIp start")
|
|
fmt.Println("lastIp: ", lastIp)
|
|
fmt.Println("start time: ", time.Now().Format("2006-01-02 15:04:05"))
|
|
ipInfo := getSelfIp()
|
|
|
|
if ipInfo == nil {
|
|
fmt.Println("get self ip err")
|
|
return
|
|
}
|
|
|
|
fmt.Println("ipInfo:", ipInfo)
|
|
|
|
if !StrArrIsContain(ipInfo.Location, "西安") {
|
|
fmt.Println("not in xian")
|
|
return
|
|
}
|
|
|
|
if lastIp == ipInfo.Ip {
|
|
fmt.Println("ip not change")
|
|
return
|
|
}
|
|
|
|
lastIp = ipInfo.Ip
|
|
|
|
fmt.Println("ip change, go to update aliyun")
|
|
|
|
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.Println("UpdateAliIp err:", err)
|
|
}
|
|
}
|
|
|
|
func getSelfIp() *IpInfo {
|
|
url := "https://myip.ipip.net/json"
|
|
|
|
resp, err := http.Get(url)
|
|
if err != nil {
|
|
fmt.Println("http.Get err:", err)
|
|
return nil
|
|
}
|
|
|
|
defer func(Body io.ReadCloser) {
|
|
e := Body.Close()
|
|
if e != nil {
|
|
|
|
}
|
|
}(resp.Body)
|
|
|
|
// 读取内容
|
|
buf := make([]byte, 1024)
|
|
n, _ := resp.Body.Read(buf)
|
|
fmt.Println(string(buf[:n]))
|
|
|
|
result := &IpRes{}
|
|
err = json.Unmarshal(buf[:n], result)
|
|
if err != nil {
|
|
fmt.Println("json.Unmarshal err:", err)
|
|
return nil
|
|
}
|
|
|
|
if result.Ret != "ok" {
|
|
fmt.Println("result.Ret err:", result.Ret)
|
|
return nil
|
|
}
|
|
|
|
return result.Data
|
|
}
|
|
|
|
func StrArrIsContain(arr []string, str string) bool {
|
|
for _, v := range arr {
|
|
if v == str {
|
|
return true
|
|
}
|
|
}
|
|
|
|
return false
|
|
}
|