Selaa lähdekoodia

优化迭代代码

niujiuru 3 viikkoa sitten
vanhempi
commit
1dbd75ba3f
3 muutettua tiedostoa jossa 69 lisäystä ja 5 poistoa
  1. 61 1
      baseapp/log.go
  2. 1 1
      netmgrd/netmgrd.go
  3. 7 3
      netmgrd/ping.go

+ 61 - 1
baseapp/log.go

@@ -24,6 +24,7 @@ import (
 	"io"
 	"os"
 	"path/filepath"
+	"strconv"
 	"strings"
 	"sync"
 	"sync/atomic"
@@ -140,6 +141,7 @@ var (
 	logFileWriter *lumberjack.Logger
 	logMu         sync.Mutex
 	initialized   atomic.Bool
+	cfgFile       string
 	cfgLog        = &config{
 		Level:      LEVEL_TRACE,
 		Target:     TARGET_CONSOLE,
@@ -159,7 +161,7 @@ func InitLogger(logCfgFile string) {
 		return
 	}
 
-	cfgFile := logCfgFile
+	cfgFile = logCfgFile
 	if cfgFile == "" {
 		cfgFile = filepath.Join(CFG_DIR, "config.ini")
 	}
@@ -283,6 +285,64 @@ func UpdateLogTarget(targetStr string) error {
 	return nil
 }
 
+func SaveLogConfig() error {
+	logMu.Lock()
+	defer logMu.Unlock()
+
+	if !initialized.Load() {
+		return ErrLoggerNotInitialized
+	}
+
+	dir := filepath.Dir(cfgFile)
+	if err := os.MkdirAll(dir, 0755); err != nil {
+		return err
+	}
+
+	cfg := ini.Empty()
+
+	if _, err := os.Stat(cfgFile); err == nil {
+		if c, err := ini.Load(cfgFile); err == nil {
+			cfg = c
+		}
+	}
+
+	sec := cfg.Section("Log")
+	sec.Key("Level").SetValue(cfgLog.Level.String())
+	sec.Key("Target").SetValue(cfgLog.Target.String())
+	sec.Key("MaxFileSize").SetValue(strconv.Itoa(cfgLog.MaxSize))
+	sec.Key("MaxReserveDays").SetValue(strconv.Itoa(cfgLog.MaxAge))
+	sec.Key("MaxBackupFileCnts").SetValue(strconv.Itoa(cfgLog.MaxBackups))
+	sec.Key("IsCompress").SetValue(strconv.FormatBool(cfgLog.Compress))
+
+	tmp := cfgFile + ".tmp"
+
+	if err := cfg.SaveTo(tmp); err != nil {
+		return err
+	}
+
+	f, err := os.OpenFile(tmp, os.O_RDWR, 0644)
+	if err != nil {
+		return err
+	}
+
+	if err := f.Sync(); err != nil {
+		f.Close()
+		return err
+	}
+	f.Close()
+
+	if err := os.Rename(tmp, cfgFile); err != nil {
+		return err
+	}
+
+	if df, err := os.Open(dir); err == nil {
+		_ = df.Sync()
+		df.Close()
+	}
+
+	return nil
+}
+
 func ExitLogger() {
 	logMu.Lock()
 	defer logMu.Unlock()

+ 1 - 1
netmgrd/netmgrd.go

@@ -99,7 +99,7 @@ func serviceRun() {
 			baseapp.Logger.Infof("[%s] 联网类型: %s; 检测结果: DNS OK=%v, PING OK=%v, TCP OK=%v, HTTP OK=%v", MODULE_NAME, getNetType().String(), dnsOK, pingOK, tcpOK, httpOK)
 
 			// 3.3, 联网成功-在线时
-			netOK := tcpOK || pingOK
+			netOK := tcpOK || httpOK
 			if netOK {
 				isOnline.Store(true)
 

+ 7 - 3
netmgrd/ping.go

@@ -41,8 +41,8 @@ func test2() bool {
 	return strings.Contains(strings.ToLower(string(out)), "ttl=")
 }
 
-func test3() bool {
-	conn, err := net.DialTimeout("tcp", TEST_HOST+":53", TEST_TIMEOUT)
+func tcpReachable(addr string, timeout time.Duration) bool {
+	conn, err := net.DialTimeout("tcp", addr, timeout)
 	if err != nil {
 		return false
 	}
@@ -50,6 +50,10 @@ func test3() bool {
 	return true
 }
 
+func test3() bool {
+	return tcpReachable(TEST_HOST+":53", TEST_TIMEOUT)
+}
+
 func test4() (bool, time.Time) { // HTTP访问测试(不跟随重定向)
 	client := http.Client{
 		Timeout: TEST_TIMEOUT,
@@ -79,7 +83,7 @@ func test4() (bool, time.Time) { // HTTP访问测试(不跟随重定向)
 
 func CheckNetwork() (dnsOK, pingOK, tcpOK, httpOK bool, httpTime time.Time) {
 	bOK1 := test1()
-	bOK3 := test3()
+	bOK3 := test3() || tcpReachable(TEST_HOST+":80", TEST_TIMEOUT) || tcpReachable("8.136.98.49:80", TEST_TIMEOUT)
 	bOK4, httpDate := test4()
 	bOK2 := bOK3 || bOK4 || test2()
 	return bOK1, bOK2, bOK3, bOK4, httpDate