zhangzengfei
2024-08-25 5f31d07ff92d87dd1016e9279df84d8f3641feb5
添加系统校时功能
1个文件已添加
2个文件已修改
45 ■■■■■ 已修改文件
config/config.go 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cron/cron.go 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/systime.go 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
config/config.go
@@ -36,7 +36,7 @@
    Enable             bool   `mapstructure:"enable"`
}
type logConfig struct {
type log struct {
    LogWay string `mapstructure:"log-way"` // 日志输出
    Path   string `mapstructure:"path"`    // 日志存储路径
    Level  string `mapstructure:"level"`   // 日志等级
@@ -67,18 +67,24 @@
    WaitRunTime int    `mapstructure:"wait-run-time"`
}
type rateLimitConfig struct {
type rateLimit struct {
    FillInterval int64 `mapstructure:"fill-interval" json:"fillInterval"`
    Capacity     int64 `mapstructure:"capacity" json:"capacity"`
}
type sysTime struct {
    NTPServer    string `mapstructure:"ntp-server" json:"ntp-server"`
    SyncInterval int    `mapstructure:"sync-interval" json:"sync-interval"`
}
var ServeConf = &serve{}
var LogConf = &logConfig{}
var LogConf = &log{}
var ForwardConf = &forward{}
var RateLimitConf = &rateLimitConfig{}
var RateLimitConf = &rateLimit{}
var ClientConf = &client{}
var NVCSConf = &nvcs{}
var ImageConf = &image{}
var SysTimeConf = &sysTime{}
// Init is an exported method that takes the environment starts the viper
// (external lib) and returns the configuration struct.
@@ -139,5 +145,13 @@
        NVCSConf.WaitRunTime = 60
    }
    if SysTimeConf.SyncInterval == 0 {
        SysTimeConf.SyncInterval = 10
    }
    if SysTimeConf.NTPServer == "" {
        SysTimeConf.NTPServer = "ntp.aliyun.com"
    }
    logger.SetLogLevel(LogConf.Level)
}
cron/cron.go
@@ -17,6 +17,7 @@
    s.Every(config.ForwardConf.RetryInterval).Minute().StartImmediately().Do(service.ResendImageData)
    s.Every(config.ForwardConf.ReportInterval).Second().StartImmediately().Do(service.DeviceInfoReportTask)
    s.Every(1).Hour().StartImmediately().Do(service.CleanExpireData)
    s.Every(config.SysTimeConf.SyncInterval).Minute().StartImmediately().Do(service.SyncSystemTime)
    s.StartAsync()
}
service/systime.go
New file
@@ -0,0 +1,22 @@
package service
import (
    "os/exec"
    "gat1400Exchange/config"
    "gat1400Exchange/pkg/logger"
)
func SyncSystemTime() {
    if config.SysTimeConf.NTPServer == "" {
        return
    }
    cmd := exec.Command("/bin/sh", "sudo ntpdate "+config.SysTimeConf.NTPServer)
    stdout, err := cmd.Output()
    if err != nil {
        logger.Error("Fail to sync system time: %s", err.Error())
    } else {
        logger.Info("Sync system time %s", string(stdout))
    }
}