diff --git a/base/tcpproxy.go b/base/tcpproxy.go index a12e4e0..83053ed 100644 --- a/base/tcpproxy.go +++ b/base/tcpproxy.go @@ -98,6 +98,7 @@ func (p *TCPProxy) StartProxy() { newConn.Close() continue } + //log.Printf("[%s]新连接[%s]安全检查通过", p.GetKey(), newConnAddr) //fmt.Printf("连接IP:[%s]\n", newConn.RemoteAddr().String()) diff --git a/config/ddns.go b/config/ddns.go index ee5820b..e43ec14 100644 --- a/config/ddns.go +++ b/config/ddns.go @@ -440,6 +440,10 @@ func UpdateTaskToDDNSTaskList(taskKey string, task DDNSTask) error { programConfigure.DDNSTaskList[taskIndex].DomainsState.WebhookCallHistroy = task.DomainsState.WebhookCallHistroy programConfigure.DDNSTaskList[taskIndex].DomainsState.SetDomainUpdateStatus(UpdateWaiting, "") programConfigure.DDNSTaskList[taskIndex].HttpClientTimeout = task.HttpClientTimeout + programConfigure.DDNSTaskList[taskIndex].DomainsState.WebhookCallErrorMsg = "" + programConfigure.DDNSTaskList[taskIndex].DomainsState.WebhookCallResult = false + programConfigure.DDNSTaskList[taskIndex].DomainsState.WebhookCallTime = "" + return Save() } diff --git a/config/info.go b/config/info.go index d40dac8..788b434 100644 --- a/config/info.go +++ b/config/info.go @@ -1,6 +1,9 @@ package config -import "runtime" +import ( + "runtime" + "time" +) type AppInfo struct { AppName string @@ -8,6 +11,7 @@ type AppInfo struct { OS string ARCH string Date string + RunTime string } var appInfo AppInfo @@ -22,4 +26,14 @@ func InitAppInfo(version, date string) { appInfo.Date = date appInfo.OS = runtime.GOOS appInfo.ARCH = runtime.GOARCH + appInfo.RunTime = time.Now().Format("2006-01-02 15:04:05") + + time.Now().Format("2006-01-02T15:04:05Z") + + buildTime, err := time.Parse("2006-01-02T15:04:05Z", date) + if err != nil { + return + } + appInfo.Date = buildTime.Local().Format("2006-01-02 15:04:05") + } diff --git a/config/safecheck.go b/config/safecheck.go index eb48f4e..f00cd40 100644 --- a/config/safecheck.go +++ b/config/safecheck.go @@ -1,13 +1,17 @@ //Copyright 2022 gdy, 272288813@qq.com package config -import "time" +import ( + "time" +) func SafeCheck(mode, ip string) bool { switch mode { case "whitelist": + //log.Printf("whitelist") return whiteListCheck(ip) case "blacklist": + //log.Printf("blacklist") return blackListCheck(ip) default: return false @@ -18,6 +22,7 @@ func whiteListCheck(ip string) bool { programConfigureMutex.RLock() defer programConfigureMutex.RUnlock() if programConfigure == nil { + //log.Printf("AAAA") return false } @@ -27,16 +32,19 @@ func whiteListCheck(ip string) bool { } itemEffectiveTime, err := time.ParseInLocation("2006-01-02 15:04:05", item.EffectiveTime, time.Local) if err != nil { + //log.Printf("BBBB") return false } if time.Since(itemEffectiveTime) < 0 { + //log.Printf("CCC") return true } return false } - return true + //log.Printf("DDDD") + return false } func blackListCheck(ip string) bool { diff --git a/ddns/ddns.go b/ddns/ddns.go index be1edf6..0b2b148 100644 --- a/ddns/ddns.go +++ b/ddns/ddns.go @@ -2,6 +2,7 @@ package ddns import ( "log" + "runtime/debug" "sync" "time" @@ -50,6 +51,7 @@ func syncAllDomainsOnce(params ...any) { return } log.Printf("syncDDNSTask[%s]panic:\n%v", task.TaskName, recoverErr) + log.Printf("%s", debug.Stack()) }() syncDDNSTask(&task) }() diff --git a/main.go b/main.go index f7b1ac7..0638d02 100644 --- a/main.go +++ b/main.go @@ -31,7 +31,7 @@ var ( runMode = "prod" version = "dev" commit = "none" - date = "unknown" + date = "2022-07-27T17:54:45Z" ) var runTime time.Time diff --git a/thirdlib/gdylib/service/service.go b/thirdlib/gdylib/service/service.go index 37e964e..5898968 100644 --- a/thirdlib/gdylib/service/service.go +++ b/thirdlib/gdylib/service/service.go @@ -4,6 +4,7 @@ import ( "context" "fmt" "log" + "runtime/debug" "sync" "time" ) @@ -146,6 +147,7 @@ func (s *Service) loop(params ...any) { return } log.Printf("service[%s] panic:\n%v", s.Name, recoverErr) + log.Printf("\n%s\n", debug.Stack()) s.State = StateStop log.Printf("server[%s] restart", s.Name) s.Start() diff --git a/web/adminviews/src/components/Status.vue b/web/adminviews/src/components/Status.vue index 598875c..0e3603d 100644 --- a/web/adminviews/src/components/Status.vue +++ b/web/adminviews/src/components/Status.vue @@ -6,6 +6,7 @@

进程协程数:{{ status.goroutine }} 占用内存:{{ status.processUsedMem }}

Lucky 全局连接数:{{ status.currentConnections }}

Lucky 全局限制连接数:{{ status.maxConnections }}

+

Lucky 启动时间:{{ status.runTime }}

@@ -63,7 +64,8 @@ var status=ref({totleMem: '0m', processUsedMem:"0m", currentConnections:0, maxConnections:0, - proxysStatus:""}) + proxysStatus:"", + runTime:""}) var timerID:any diff --git a/web/web.go b/web/web.go index 00dc1af..6cf35c8 100644 --- a/web/web.go +++ b/web/web.go @@ -741,6 +741,8 @@ func alterrule(c *gin.Context) { return } + dealRequestRule(&requestRule) + //fmt.Printf("balance:%v\n", requestRule.BalanceTargetAddressList) preConfigureStr := requestRule.MainConfigure @@ -797,6 +799,16 @@ func deleterule(c *gin.Context) { c.JSON(http.StatusOK, gin.H{"ret": 0, "msg": "删除成功", "syncres": syncRes}) } +func dealRequestRule(r *rule.RelayRule) { + r.ListenPorts = strings.TrimSpace(r.ListenPorts) + r.TargetPorts = strings.TrimSpace(r.TargetPorts) + r.ListenIP = strings.TrimSpace(r.ListenIP) + r.TargetIP = strings.TrimSpace(r.TargetIP) + r.RelayType = strings.TrimSpace(r.RelayType) + r.Name = strings.TrimSpace(r.Name) + +} + func addrule(c *gin.Context) { var requestRule rule.RelayRule err := c.BindJSON(&requestRule) @@ -805,6 +817,8 @@ func addrule(c *gin.Context) { return } + dealRequestRule(&requestRule) + configureStr := requestRule.CreateMainConfigure() r, err := rule.CreateRuleByConfigureAndOptions(requestRule.Name, configureStr, requestRule.Options) @@ -897,6 +911,8 @@ func status(c *gin.Context) { // proxyStatusList = append(proxyStatusList, p.GetStatus()) // } + appInfo := config.GetAppInfo() + respMap := make(map[string]interface{}) respMap["totleMem"] = formatFileSize(v.Total) respMap["usedMem"] = formatFileSize(v.Used) @@ -907,6 +923,7 @@ func status(c *gin.Context) { respMap["currentConnections"] = fmt.Sprintf("%d", base.GetGlobalConnections()) respMap["maxConnections"] = fmt.Sprintf("%d", base.GetGlobalMaxConnections()) respMap["usedCPU"] = fmt.Sprintf("%.2f%%", GetCpuPercent()) + respMap["runTime"] = appInfo.RunTime //respMap["proxysStatus"] = proxyStatusList c.JSON(http.StatusOK, gin.H{