server.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package main
  2. import (
  3. "fmt"
  4. "path/filepath"
  5. "gopkg.in/ini.v1"
  6. "hnyfkj.com.cn/rtu/linux/baseapp"
  7. "hnyfkj.com.cn/rtu/linux/sshd"
  8. )
  9. const MODULE_NAME = sshd.MODULE_NAME
  10. type MQTTBroker struct {
  11. Address string `ini:"BrokerAddress"` // 地址端口
  12. Username string `ini:"Username"` // 用户名称
  13. Password string `ini:"Password"` // 接入密码
  14. }
  15. type Config struct {
  16. MQTTSrv MQTTBroker `ini:"MQTTSrv"`
  17. }
  18. var (
  19. CfgServers = &Config{}
  20. Version = "1.0.0.1"
  21. )
  22. func loadCfgServers() error {
  23. cfgFile := filepath.Join(baseapp.CFG_DIR, "sshd_cfg.ini")
  24. cfgIni, err := ini.Load(cfgFile)
  25. if err != nil {
  26. return err
  27. }
  28. if cfgIni.HasSection("MQTTSrv") {
  29. if err := cfgIni.Section("MQTTSrv").MapTo(&CfgServers.MQTTSrv); err != nil {
  30. return err
  31. }
  32. } else {
  33. return fmt.Errorf("配置文件\"%s\"缺少\"[MQTTSrv]\"节", cfgFile)
  34. }
  35. return nil
  36. }
  37. func main() {
  38. baseapp.ModuleInit()
  39. baseapp.SingleInstanceRun() // 异步非阻塞
  40. baseapp.Logger.Infof("程序版本: %s 构建时间: %s\n程序开始运行...",
  41. Version, baseapp.BuildTime)
  42. if err := loadCfgServers(); err != nil {
  43. baseapp.Logger.Errorf("[%s] 加载服务器配置项失败: %v!!", MODULE_NAME, err)
  44. return
  45. }
  46. success := sshd.ModuleInit(CfgServers.MQTTSrv.Address, CfgServers.MQTTSrv.Username, CfgServers.MQTTSrv.Password)
  47. if !success {
  48. return
  49. }
  50. <-baseapp.IsExit2()
  51. sshd.ModuleExit()
  52. baseapp.Logger.Info("程序退出")
  53. baseapp.ExitLogger() // 安全的关闭日志模块
  54. baseapp.SafeExit() // 安全的关闭退出程序
  55. }