json.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. package config
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "log"
  6. "os"
  7. "time"
  8. slog "bet24.com/log"
  9. "bet24.com/utils"
  10. )
  11. var Server struct {
  12. LogLevel string
  13. FileLevel string
  14. LogPath string
  15. CertFile string
  16. KeyFile string
  17. MaxConnNum int
  18. ChannelUrl string
  19. ChannelPassword string
  20. RedisDB int
  21. LastHour int
  22. ServiceAddr string
  23. ServerName string
  24. ServerIP string
  25. ServerPort int
  26. ServerAddr string
  27. MonitorPort int
  28. OfflineSeconds int64
  29. IsChipRoom int
  30. IsPrivateRoom int
  31. IsLadderRoom int
  32. VersionID int
  33. WebPort string
  34. }
  35. var RoomConfgName = "baloot"
  36. func init() {
  37. configFile := "baloot/server.json"
  38. data, err := os.ReadFile(configFile)
  39. if err != nil {
  40. log.Fatal("read config failed baloot/server.json ", err)
  41. }
  42. fmt.Println(string(data))
  43. err = json.Unmarshal(data, &Server)
  44. if err != nil {
  45. log.Fatalf("Unmarshal config failed baloot/server.json err:%v", err)
  46. return
  47. }
  48. logger, err := slog.New(Server.LogLevel, Server.FileLevel, fmt.Sprintf("%v/%v", Server.LogPath, RoomConfgName), log.LstdFlags)
  49. if err == nil {
  50. slog.Export(logger)
  51. }
  52. originPort := Server.ServerPort
  53. for i := 0; i < 100; i++ {
  54. if utils.CheckPortInUse(Server.ServerPort) {
  55. Server.ServerPort++
  56. continue
  57. }
  58. break
  59. }
  60. if Server.MonitorPort == 0 {
  61. Server.MonitorPort = Server.ServerPort + 100
  62. }
  63. if originPort != Server.ServerPort {
  64. slog.Debug("Port %d in use, change to %d", originPort, Server.ServerPort)
  65. d, _ := json.Marshal(Server)
  66. os.WriteFile(configFile, d, 0644)
  67. }
  68. now := time.Now()
  69. Server.LastHour = now.Hour()
  70. }
  71. func Run() {
  72. refreshLogFile()
  73. loadRoomConfig()
  74. if getConfigKey() == config_key {
  75. loadNewUserRoomConfig()
  76. }
  77. }
  78. func refreshLogFile() {
  79. time.AfterFunc(5*time.Minute, refreshLogFile)
  80. doRefreshLogFile()
  81. }
  82. func doRefreshLogFile() {
  83. if Server.LogPath != "" {
  84. now := time.Now()
  85. if now.Hour() != Server.LastHour {
  86. Server.LastHour = now.Hour()
  87. slog.RecreateFileLog(fmt.Sprintf("%v/%v", Server.LogPath, RoomConfgName), log.LstdFlags)
  88. }
  89. }
  90. }