json.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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. VersionID int
  32. }
  33. var RoomConfigName = "spinplay"
  34. func init() {
  35. configFile := "spinplay/server.json"
  36. data, err := os.ReadFile(configFile)
  37. if err != nil {
  38. log.Fatalf("read config failed spinplay/server.json %v", err)
  39. }
  40. fmt.Println(string(data))
  41. err = json.Unmarshal(data, &Server)
  42. if err != nil {
  43. log.Fatalf("Unmarshal config failed spinplay/server.json err:%v", err)
  44. return
  45. }
  46. logger, err := slog.New(Server.LogLevel, Server.FileLevel, fmt.Sprintf("%v/%v", Server.LogPath, RoomConfigName), log.LstdFlags)
  47. if err == nil {
  48. slog.Export(logger)
  49. }
  50. originPort := Server.ServerPort
  51. for i := 0; i < 100; i++ {
  52. if utils.CheckPortInUse(Server.ServerPort) {
  53. Server.ServerPort++
  54. continue
  55. }
  56. break
  57. }
  58. if Server.MonitorPort == 0 {
  59. Server.MonitorPort = Server.ServerPort + 100
  60. }
  61. now := time.Now()
  62. Server.LastHour = now.Hour()
  63. if originPort != Server.ServerPort {
  64. d, _ := json.Marshal(Server)
  65. os.WriteFile(configFile, d, 0644)
  66. }
  67. }
  68. func Run() {
  69. refreshLogFile()
  70. loadRoomConfig()
  71. }
  72. func refreshLogFile() {
  73. time.AfterFunc(5*time.Minute, refreshLogFile)
  74. doRefreshLogFile()
  75. }
  76. func doRefreshLogFile() {
  77. if Server.LogPath != "" {
  78. now := time.Now()
  79. if now.Hour() != Server.LastHour {
  80. Server.LastHour = now.Hour()
  81. slog.RecreateFileLog(fmt.Sprintf("%v/%v", Server.LogPath, RoomConfigName), log.LstdFlags)
  82. }
  83. }
  84. }