router.go 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. package internal
  2. import (
  3. "fmt"
  4. "os"
  5. "time"
  6. "xugu_license/internal/controllers"
  7. "xugu_license/internal/global"
  8. middlewares "xugu_license/internal/middleware"
  9. "github.com/gin-gonic/gin"
  10. )
  11. // SetupRouter 配置Gin路由
  12. func SetupRouter() *gin.Engine {
  13. r := gin.Default()
  14. // 创建按天生成的日志文件
  15. logFileName := fmt.Sprintf("./logs/GTlicenseGin-%s.log", time.Now().Format("2006-01-02"))
  16. f, err := os.OpenFile(logFileName, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
  17. if err != nil {
  18. panic(fmt.Sprintf("Failed to open log file: %s", err))
  19. }
  20. gin.DefaultWriter = f
  21. // 自定义日志格式
  22. r.Use(gin.LoggerWithFormatter(func(param gin.LogFormatterParams) string {
  23. return fmt.Sprintf("%s - [%s] \"%s %s %s %d %s \"%s\" %s\"\n",
  24. param.ClientIP,
  25. param.TimeStamp.Format(time.RFC1123),
  26. param.Method,
  27. param.Path,
  28. param.Request.Proto,
  29. param.StatusCode,
  30. param.Latency,
  31. param.Request.UserAgent(),
  32. param.ErrorMessage,
  33. )
  34. }))
  35. // 中间件配置
  36. //configureMiddleware(r)
  37. middlewares.CORSMiddleware()
  38. // 静态文件服务配置
  39. configureStaticFileServing(r)
  40. // 根路径请求处理
  41. configureRootHandler(r)
  42. public := r.Group("/api")
  43. {
  44. // 定义一个路由来主动触发一次数据抓取
  45. // r.POST("/capture", func(c *gin.Context) {
  46. // capture.CaptureOnce(global.OaDB, global.XuguDB)
  47. // c.JSON(200, gin.H{"status": "Data captured successfully"})
  48. // })
  49. public.POST("/register", controllers.Register)
  50. public.POST("/login", controllers.Login)
  51. public.GET("/image", func(c *gin.Context) {
  52. c.File("static/image/xugulogo.png")
  53. })
  54. }
  55. protected := r.Group("/api/admin")
  56. {
  57. protected.Use(middlewares.JwtAuthMiddleware()) // 在路由组中使用中间件
  58. //获取单个用户信息 , 有漏洞,需要判断登录的用户token是否是管理员
  59. protected.GET("/userInfo", controllers.GetUserInfo)
  60. //获取所有用户信息
  61. protected.GET("/userInfoAll", middlewares.PermissionMiddleware(middlewares.ReadUser), controllers.GetAllUserInfo)
  62. //修改用户信息
  63. protected.POST("/updateUser", middlewares.PermissionMiddleware(middlewares.UpdateUser), controllers.UpdateUserInfo)
  64. //删除用户信息
  65. protected.POST("/deleteUser", middlewares.PermissionMiddleware(middlewares.DeleteUser), controllers.DeleteUser)
  66. //上传文件
  67. protected.POST("/upfile", middlewares.PermissionMiddleware(middlewares.UploadLicense), controllers.UploadfileHandler)
  68. //lincense
  69. //protected.GET("/LicenseInfo", controllers.GetLicenseInfo)
  70. protected.POST("/distributeLicense", middlewares.PermissionMiddleware(middlewares.DispatLicense), controllers.DistributeOALicenseController)
  71. //分发按钮校验
  72. protected.GET("/GetDistributeButtenCheckController", middlewares.PermissionMiddleware(middlewares.DispatLicense), controllers.GetDistributeButtenCheckController)
  73. //上传文件的license 弃用
  74. protected.GET("/distributeLicenseByUserInfo", middlewares.PermissionMiddleware(middlewares.DispatLicense), controllers.DistributeLicenseByUser)
  75. //获取指定license信息
  76. protected.GET("/GetSingleSlicenseInfo", middlewares.PermissionMiddleware(middlewares.ReadLicense), controllers.GetSingleLicenseInfoController)
  77. //获取全部license信息 new
  78. protected.GET("/GetAllLicenseInfo", middlewares.PermissionMiddleware(middlewares.ReadLicense), controllers.GetAllLicenseInfoController)
  79. //主动抓取一次oalicense到支撑库
  80. protected.GET("/GetCaptureLicenseOnce", middlewares.PermissionMiddleware(middlewares.CaptureLicenseOnceToDb), controllers.CaptureLicenseOnceToDb)
  81. //搜索license
  82. protected.GET("/GetSearchLicInfoToDb", middlewares.PermissionMiddleware(middlewares.ReadLicense), controllers.SearchLicInfoToDb)
  83. protected.POST("/GetConditionalSearch", middlewares.PermissionMiddleware(middlewares.ReadLicense), controllers.ConditionalSearchController)
  84. //生成license new
  85. protected.POST("/GenerateLicense", middlewares.PermissionMiddleware(middlewares.GenerateLicense), controllers.GenerateOALicenseStrController)
  86. protected.POST("/GetlicenseRecord", middlewares.PermissionMiddleware(middlewares.ReadLicense), controllers.GetlicenseRecordInfo)
  87. //protected.POST("/GetlicenseRecordInfoByUser", middlewares.PermissionMiddleware(middlewares.ReadLicense), controllers.GetlicenseRecordInfoByUser)
  88. protected.POST("/UpdateLicense", middlewares.PermissionMiddleware(middlewares.UpdateLicense), controllers.UpdateLicense)
  89. protected.POST("/deleteLicRow", middlewares.PermissionMiddleware(middlewares.DeleteLicense), controllers.DelLicenseInfoRow)
  90. //role
  91. protected.POST("/GetSelfRoles", controllers.GetRoles)
  92. protected.POST("/GetRoles", middlewares.PermissionMiddleware(middlewares.GetRole), controllers.GetRoles)
  93. protected.GET("/GetRoleNames", controllers.GetRoleNames)
  94. protected.POST("/CreateRole", middlewares.PermissionMiddleware(middlewares.CreateRole), controllers.CreateRole)
  95. protected.POST("/UpdateRole", middlewares.PermissionMiddleware(middlewares.UpdateRole), controllers.UpdateRole)
  96. protected.POST("/DeleteRole", middlewares.PermissionMiddleware(middlewares.DeleteRole), controllers.DeleteRole)
  97. }
  98. return r
  99. }
  100. // configureStaticFileServing 配置静态文件服务
  101. func configureStaticFileServing(r *gin.Engine) {
  102. r.Static("/static", "./static")
  103. }
  104. // configureRootHandler 配置根路径请求处理
  105. func configureRootHandler(r *gin.Engine) {
  106. r.GET("/", func(c *gin.Context) {
  107. c.File("./static/login/login.html")
  108. })
  109. }
  110. // HttpController 启动 HTTP 服务器
  111. func HttpController() {
  112. r := SetupRouter()
  113. ipPort := fmt.Sprintf("%s:%s", global.Cfg.App.Ip, global.Cfg.App.Port)
  114. fmt.Println("ipPort:", ipPort)
  115. err := r.Run(ipPort)
  116. if err != nil {
  117. panic(err)
  118. }
  119. global.Logger.Info("Server is running on port", fmt.Sprintf("%s:%s", global.Cfg.App.Ip, global.Cfg.App.Port))
  120. }