1.修复一处因为空格引发的添加转发规则异常

2.修复白名单失效bug
This commit is contained in:
古大羊 2022-07-28 03:27:05 +08:00
parent 7661ec7903
commit 1c41d042cd
9 changed files with 55 additions and 5 deletions

View File

@ -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())

View File

@ -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()
}

View File

@ -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")
}

View File

@ -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 {

View File

@ -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)
}()

View File

@ -31,7 +31,7 @@ var (
runMode = "prod"
version = "dev"
commit = "none"
date = "unknown"
date = "2022-07-27T17:54:45Z"
)
var runTime time.Time

View File

@ -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()

View File

@ -6,6 +6,7 @@
<p class="status">进程协程数:{{ status.goroutine }} 占用内存:{{ status.processUsedMem }}</p>
<p class="status">Lucky 全局连接数:{{ status.currentConnections }} </p>
<p class="status">Lucky 全局限制连接数:{{ status.maxConnections }}</p>
<p class="status">Lucky 启动时间:{{ status.runTime }}</p>
@ -63,7 +64,8 @@ var status=ref({totleMem: '0m',
processUsedMem:"0m",
currentConnections:0,
maxConnections:0,
proxysStatus:""})
proxysStatus:"",
runTime:""})
var timerID:any

View File

@ -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{