router.go 5.2 KB

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