router.go 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  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. middlewares.CORSMiddleware()
  37. // 静态文件服务配置
  38. configureStaticFileServing(r)
  39. // 根路径请求处理
  40. configureRootHandler(r)
  41. public := r.Group("/api")
  42. {
  43. // 定义一个路由来主动触发一次数据抓取
  44. // r.POST("/capture", func(c *gin.Context) {
  45. // capture.CaptureOnce(global.OaDB, global.XuguDB)
  46. // c.JSON(200, gin.H{"status": "Data captured successfully"})
  47. // })
  48. public.POST("/register", controllers.Register)
  49. public.POST("/login", controllers.Login)
  50. public.GET("/image", func(c *gin.Context) {
  51. c.File("static/image/xugulogo.png")
  52. })
  53. }
  54. protected := r.Group("/api/admin")
  55. {
  56. protected.Use(middlewares.JwtAuthMiddleware()) // 在路由组中使用中间件
  57. //获取单个用户信息 , 有漏洞,需要判断登录的用户token是否是管理员
  58. protected.GET("/userInfo", controllers.GetUserInfo)
  59. //获取所有用户信息
  60. protected.GET("/userInfoAll", middlewares.PermissionMiddleware(middlewares.ReadUser), controllers.GetAllUserInfo)
  61. //修改用户信息
  62. protected.POST("/updateUser", middlewares.PermissionMiddleware(middlewares.UpdateUser), controllers.UpdateUserInfo)
  63. //删除用户信息
  64. protected.POST("/deleteUser", middlewares.PermissionMiddleware(middlewares.DeleteUser), controllers.DeleteUser)
  65. //上传文件
  66. protected.POST("/upfile", middlewares.PermissionMiddleware(middlewares.UploadLicense), controllers.UploadfileHandler)
  67. //lincense
  68. //protected.GET("/LicenseInfo", controllers.GetLicenseInfo)
  69. protected.POST("/distributeLicense", middlewares.PermissionMiddleware(middlewares.DispatLicense), controllers.DistributeOALicenseController)
  70. //分发按钮校验
  71. protected.GET("/GetDistributeButtenCheckController", middlewares.PermissionMiddleware(middlewares.DispatLicense), controllers.GetDistributeButtenCheckController)
  72. //上传文件的license 弃用
  73. protected.GET("/distributeLicenseByUserInfo", middlewares.PermissionMiddleware(middlewares.DispatLicense), controllers.DistributeLicenseByUser)
  74. //获取指定license信息
  75. protected.GET("/GetSingleSlicenseInfo", middlewares.PermissionMiddleware(middlewares.ReadLicense), controllers.GetSingleLicenseInfoController)
  76. //获取全部license信息 new
  77. protected.GET("/GetAllLicenseInfo", middlewares.PermissionMiddleware(middlewares.ReadLicense), controllers.GetAllLicenseInfoController)
  78. //主动抓取一次oalicense到支撑库
  79. protected.GET("/GetCaptureLicenseOnce", middlewares.PermissionMiddleware(middlewares.CaptureLicenseOnceToDb), controllers.CaptureLicenseOnceToDb)
  80. //搜索license
  81. protected.GET("/GetSearchLicInfoToDb", middlewares.PermissionMiddleware(middlewares.ReadLicense), controllers.SearchLicInfoToDb)
  82. protected.POST("/GetConditionalSearch", middlewares.PermissionMiddleware(middlewares.ReadLicense), controllers.ConditionalSearchController)
  83. //生成license new
  84. protected.POST("/GenerateLicense", middlewares.PermissionMiddleware(middlewares.GenerateLicense), controllers.GenerateOALicenseStrController)
  85. protected.POST("/GetlicenseRecord", middlewares.PermissionMiddleware(middlewares.ReadLicense), controllers.GetlicenseRecordInfo)
  86. //protected.POST("/GetlicenseRecordInfoByUser", middlewares.PermissionMiddleware(middlewares.ReadLicense), controllers.GetlicenseRecordInfoByUser)
  87. protected.POST("/UpdateLicense", middlewares.PermissionMiddleware(middlewares.UpdateLicense), controllers.UpdateLicense)
  88. protected.POST("/deleteLicRow", middlewares.PermissionMiddleware(middlewares.DeleteLicense), controllers.DelLicenseInfoRow)
  89. //role
  90. protected.POST("/GetSelfRoles", controllers.GetRoles)
  91. protected.POST("/GetRoles", middlewares.PermissionMiddleware(middlewares.GetRole), controllers.GetRoles)
  92. protected.GET("/GetRoleNames", controllers.GetRoleNames)
  93. protected.POST("/CreateRole", middlewares.PermissionMiddleware(middlewares.CreateRole), controllers.CreateRole)
  94. protected.POST("/UpdateRole", middlewares.PermissionMiddleware(middlewares.UpdateRole), controllers.UpdateRole)
  95. protected.POST("/DeleteRole", middlewares.PermissionMiddleware(middlewares.DeleteRole), controllers.DeleteRole)
  96. }
  97. return r
  98. }
  99. // configureStaticFileServing 配置静态文件服务
  100. func configureStaticFileServing(r *gin.Engine) {
  101. r.Static("/static", "./static")
  102. }
  103. // configureRootHandler 配置根路径请求处理
  104. func configureRootHandler(r *gin.Engine) {
  105. r.GET("/", func(c *gin.Context) {
  106. c.File("./static/login/login.html")
  107. })
  108. }
  109. // HttpController 启动 HTTP 服务器
  110. func HttpController() {
  111. r := SetupRouter()
  112. r.Run("127.0.0.1:8080")
  113. }