json.go 2.2 KB

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