server.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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.InitPath()
  39. cfgFile := filepath.Join(baseapp.CFG_DIR, "sshd_cfg.ini")
  40. baseapp.InitLogger(cfgFile)
  41. baseapp.SingleInstanceRun() // 异步非阻塞
  42. baseapp.Logger.Infof("程序版本: %s 构建时间: %s\n程序开始运行...",
  43. Version, baseapp.BuildTime)
  44. if err := loadCfgServers(); err != nil {
  45. baseapp.Logger.Errorf("[%s] 加载服务器配置项失败: %v!!", MODULE_NAME, err)
  46. return
  47. }
  48. success := sshd.ModuleInit(CfgServers.MQTTSrv.Address, CfgServers.MQTTSrv.Username, CfgServers.MQTTSrv.Password)
  49. if !success {
  50. return
  51. }
  52. <-baseapp.IsExit2()
  53. sshd.ModuleExit()
  54. baseapp.Logger.Info("程序退出")
  55. baseapp.ExitLogger() // 安全的关闭日志模块
  56. baseapp.SafeExit() // 安全的关闭退出程序
  57. }