Skip to content

Commit

Permalink
feat: make ip update period modifiable (#13)
Browse files Browse the repository at this point in the history
* feat: make ip update period modifiable

* doc: change text lead to misunderstand
  • Loading branch information
DarcJC authored Feb 24, 2024
1 parent a19ada8 commit 4bfb17d
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 5 deletions.
4 changes: 3 additions & 1 deletion main.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ type AgentCliParam struct {
ReportDelay int // 报告间隔
TLS bool // 是否使用TLS加密传输至服务端
Version bool // 当前版本号
IPReportPeriod uint32 // 上报IP间隔
}

var (
Expand Down Expand Up @@ -164,6 +165,7 @@ func main() {
flag.BoolVar(&agentCliParam.DisableForceUpdate, "disable-force-update", false, "禁用强制升级")
flag.BoolVar(&agentCliParam.TLS, "tls", false, "启用SSL/TLS加密")
flag.BoolVarP(&agentCliParam.Version, "version", "v", false, "查看当前版本号")
flag.Uint32VarP(&agentCliParam.IPReportPeriod, "ip-report-period", "u", 30*60, "本地IP更新间隔, 上报频率依旧取决于report-delay的值")
flag.Parse()

if agentCliParam.Version {
Expand Down Expand Up @@ -201,7 +203,7 @@ func run() {
// 上报服务器信息
go reportState()
// 更新IP信息
go monitor.UpdateIP()
go monitor.UpdateIP(agentCliParam.IPReportPeriod)

// 定时检查更新
if _, err := semver.Parse(version); err == nil && !agentCliParam.DisableAutoUpdate {
Expand Down
14 changes: 10 additions & 4 deletions pkg/monitor/myip.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package monitor
import (
"fmt"
"io"
"log"
"net/http"
"strings"
"time"
Expand Down Expand Up @@ -53,13 +54,18 @@ var (
httpClientV6 = util.NewSingleStackHTTPClient(time.Second*20, time.Second*5, time.Second*10, true)
)

// UpdateIP 每30分钟更新一次IP地址与国家码的缓存
func UpdateIP() {
// UpdateIP 按设置时间间隔更新IP地址与国家码的缓存
func UpdateIP(period uint32) {
for {
log.Println("NEZHA_AGENT>> 正在更新本地缓存IP信息")
ipv4 := fetchGeoIP(geoIPApiList, false)
ipv6 := fetchGeoIP(geoIPApiList, true)
if ipv4.IP == "" && ipv6.IP == "" {
time.Sleep(time.Minute)
if period > 60 {
time.Sleep(time.Minute)
} else {
time.Sleep(time.Second * time.Duration(period))
}
continue
}
if ipv4.IP == "" || ipv6.IP == "" {
Expand All @@ -72,7 +78,7 @@ func UpdateIP() {
} else if ipv6.CountryCode != "" {
cachedCountry = ipv6.CountryCode
}
time.Sleep(time.Minute * 30)
time.Sleep(time.Second * time.Duration(period))
}
}

Expand Down

0 comments on commit 4bfb17d

Please sign in to comment.