main.go 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. package main
  2. import (
  3. "flag"
  4. "fmt"
  5. "net/http"
  6. "time"
  7. "github.com/IceWhaleTech/CasaOS/model"
  8. "github.com/IceWhaleTech/CasaOS/pkg/cache"
  9. "github.com/IceWhaleTech/CasaOS/pkg/config"
  10. "github.com/IceWhaleTech/CasaOS/pkg/sqlite"
  11. loger2 "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 showUserInfo = flag.Bool("show-user-info", false, "show user info")
  20. func init() {
  21. flag.Parse()
  22. config.InitSetup(*configFlag)
  23. config.UpdateSetup()
  24. loger2.LogSetup()
  25. sqliteDB = sqlite.GetDb(config.AppInfo.ProjectPath)
  26. //gredis.GetRedisConn(config.RedisInfo),
  27. service.MyService = service.NewService(sqliteDB, loger2.NewOLoger())
  28. service.Cache = cache.Init()
  29. go service.UDPService()
  30. service.Summary = make(map[string]model.FileSummaryModel)
  31. service.UDPAddressMap = make(map[string]string)
  32. //go service.SocketConnect()
  33. route.InitFunction()
  34. go service.SendIPToServer()
  35. go service.LoopFriend()
  36. }
  37. // @title casaOS API
  38. // @version 1.0.0
  39. // @contact.name lauren.pan
  40. // @contact.url https://www.zimaboard.com
  41. // @contact.email lauren.pan@icewhale.org
  42. // @description casaOS v1版本api
  43. // @host 192.168.2.217:8089
  44. // @securityDefinitions.apikey ApiKeyAuth
  45. // @in header
  46. // @name Authorization
  47. // @BasePath /v1
  48. func main() {
  49. if *showUserInfo {
  50. fmt.Println("CasaOS User Info")
  51. fmt.Println("UserName:" + config.UserInfo.UserName)
  52. fmt.Println("Password:" + config.UserInfo.PWD)
  53. return
  54. }
  55. //model.Setup()
  56. //gredis.Setup()
  57. r := route.InitRouter()
  58. //service.SyncTask(sqliteDB)
  59. cron2 := cron.New() //创建一个cron实例
  60. //every day execution
  61. err := cron2.AddFunc("0 0/5 * * * *", func() {
  62. //service.PushIpInfo(*&config.ServerInfo.Token)
  63. //service.UpdataDDNSList(mysqldb)
  64. //service.SyncTask(sqliteDB)
  65. service.SendIPToServer()
  66. service.LoopFriend()
  67. })
  68. if err != nil {
  69. fmt.Println(err)
  70. }
  71. //启动/关闭
  72. cron2.Start()
  73. defer cron2.Stop()
  74. s := &http.Server{
  75. Addr: fmt.Sprintf(":%v", config.ServerInfo.HttpPort),
  76. Handler: r,
  77. ReadTimeout: 60 * time.Second,
  78. WriteTimeout: 60 * time.Second,
  79. MaxHeaderBytes: 1 << 20,
  80. }
  81. s.ListenAndServe()
  82. }