json.go 2.1 KB

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