main.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. package main
  2. import (
  3. "flag"
  4. "fmt"
  5. "net/http"
  6. "time"
  7. "github.com/IceWhaleTech/CasaOS/model/notify"
  8. "github.com/IceWhaleTech/CasaOS/pkg/cache"
  9. "github.com/IceWhaleTech/CasaOS/pkg/config"
  10. "github.com/IceWhaleTech/CasaOS/pkg/sqlite"
  11. "github.com/IceWhaleTech/CasaOS/pkg/utils/loger"
  12. "github.com/IceWhaleTech/CasaOS/route"
  13. "github.com/IceWhaleTech/CasaOS/service"
  14. "github.com/robfig/cron"
  15. "gorm.io/gorm"
  16. )
  17. var sqliteDB *gorm.DB
  18. var configFlag = flag.String("c", "", "config address")
  19. var dbFlag = flag.String("db", "", "db path")
  20. var showUserInfo = flag.Bool("show-user-info", false, "show user info")
  21. func init() {
  22. flag.Parse()
  23. config.InitSetup(*configFlag)
  24. config.UpdateSetup()
  25. loger.LogInit()
  26. if len(*dbFlag) == 0 {
  27. *dbFlag = config.AppInfo.ProjectPath + "/db"
  28. }
  29. sqliteDB = sqlite.GetDb(*dbFlag)
  30. //gredis.GetRedisConn(config.RedisInfo),
  31. service.MyService = service.NewService(sqliteDB)
  32. service.Cache = cache.Init()
  33. go service.UDPService()
  34. fmt.Println("t", service.GetToken())
  35. service.UDPAddressMap = make(map[string]string)
  36. //go service.SocketConnect()
  37. service.CancelList = make(map[string]string)
  38. service.InternalInspection = make(map[string][]string)
  39. service.NewVersionApp = make(map[string]string)
  40. route.InitFunction()
  41. go service.SendIPToServer()
  42. // go service.LoopFriend()
  43. // go service.MyService.App().CheckNewImage()
  44. }
  45. // @title casaOS API
  46. // @version 1.0.0
  47. // @contact.name lauren.pan
  48. // @contact.url https://www.zimaboard.com
  49. // @contact.email lauren.pan@icewhale.org
  50. // @description casaOS v1版本api
  51. // @host 192.168.2.217:8089
  52. // @securityDefinitions.apikey ApiKeyAuth
  53. // @in header
  54. // @name Authorization
  55. // @BasePath /v1
  56. func main() {
  57. service.NotifyMsg = make(chan notify.Message, 10)
  58. if *showUserInfo {
  59. fmt.Println("CasaOS User Info")
  60. fmt.Println("UserName:" + config.UserInfo.UserName)
  61. fmt.Println("Password:" + config.UserInfo.PWD)
  62. return
  63. }
  64. go route.SocketInit(service.NotifyMsg)
  65. go func() {
  66. for i := 0; i < 1000; i++ {
  67. time.Sleep(2 * time.Second)
  68. //service.NotifyMsg <- strconv.Itoa(i)
  69. }
  70. }()
  71. //model.Setup()
  72. //gredis.Setup()
  73. r := route.InitRouter()
  74. //service.SyncTask(sqliteDB)
  75. cron2 := cron.New()
  76. //every day execution
  77. err := cron2.AddFunc("0 0/5 * * * *", func() {
  78. //service.PushIpInfo(*&config.ServerInfo.Token)
  79. //service.UpdataDDNSList(mysqldb)
  80. //service.SyncTask(sqliteDB)
  81. service.SendIPToServer()
  82. service.LoopFriend()
  83. //service.MyService.App().CheckNewImage()
  84. })
  85. if err != nil {
  86. fmt.Println(err)
  87. }
  88. err = cron2.AddFunc("0/3 * * * * *", func() {
  89. if service.ClientCount > 0 {
  90. route.SendNetINfoBySocket()
  91. route.SendCPUBySocket()
  92. route.SendMemBySocket()
  93. route.SendDiskBySocket()
  94. route.SendUSBBySocket()
  95. }
  96. })
  97. if err != nil {
  98. fmt.Println(err)
  99. }
  100. cron2.Start()
  101. defer cron2.Stop()
  102. s := &http.Server{
  103. Addr: fmt.Sprintf(":%v", config.ServerInfo.HttpPort),
  104. Handler: r,
  105. ReadTimeout: 60 * time.Second,
  106. WriteTimeout: 60 * time.Second,
  107. MaxHeaderBytes: 1 << 20,
  108. }
  109. s.ListenAndServe()
  110. // if err := r.Run(fmt.Sprintf(":%v", config.ServerInfo.HttpPort)); err != nil {
  111. // fmt.Println("failed run app: ", err)
  112. // }
  113. }