package main import ( "fmt" "path/filepath" "gopkg.in/ini.v1" "hnyfkj.com.cn/rtu/linux/baseapp" "hnyfkj.com.cn/rtu/linux/sshd" ) const MODULE_NAME = sshd.MODULE_NAME type MQTTBroker struct { Address string `ini:"BrokerAddress"` // 地址端口 Username string `ini:"Username"` // 用户名称 Password string `ini:"Password"` // 接入密码 } type Config struct { MQTTSrv MQTTBroker `ini:"MQTTSrv"` } var ( CfgServers = &Config{} Version = "1.0.0.1" ) func loadCfgServers() error { cfgFile := filepath.Join(baseapp.CFG_DIR, "sshd_cfg.ini") cfgIni, err := ini.Load(cfgFile) if err != nil { return err } if cfgIni.HasSection("MQTTSrv") { if err := cfgIni.Section("MQTTSrv").MapTo(&CfgServers.MQTTSrv); err != nil { return err } } else { return fmt.Errorf("配置文件\"%s\"缺少\"[MQTTSrv]\"节", cfgFile) } return nil } func main() { baseapp.InitPath() cfgFile := filepath.Join(baseapp.CFG_DIR, "sshd_cfg.ini") baseapp.InitLogger(cfgFile) baseapp.SingleInstanceRun() // 异步非阻塞 baseapp.Logger.Infof("程序版本: %s 构建时间: %s\n程序开始运行...", Version, baseapp.BuildTime) if err := loadCfgServers(); err != nil { baseapp.Logger.Errorf("[%s] 加载服务器配置项失败: %v!!", MODULE_NAME, err) return } success := sshd.ModuleInit(CfgServers.MQTTSrv.Address, CfgServers.MQTTSrv.Username, CfgServers.MQTTSrv.Password) if !success { return } <-baseapp.IsExit2() sshd.ModuleExit() baseapp.Logger.Info("程序退出") baseapp.ExitLogger() // 安全的关闭日志模块 baseapp.SafeExit() // 安全的关闭退出程序 }