routers.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package router
  2. import (
  3. "encoding/base64"
  4. "github.com/0xJacky/Nginx-UI/server/api"
  5. "github.com/0xJacky/Nginx-UI/server/model"
  6. "github.com/gin-gonic/gin"
  7. "net/http"
  8. )
  9. func authRequired() gin.HandlerFunc {
  10. return func(c *gin.Context) {
  11. token := c.GetHeader("Authorization")
  12. if token == "" {
  13. tmp, _ := base64.StdEncoding.DecodeString(c.Query("token"))
  14. token = string(tmp)
  15. if token == "" {
  16. c.JSON(http.StatusForbidden, gin.H{
  17. "message": "auth fail",
  18. })
  19. c.Abort()
  20. return
  21. }
  22. }
  23. n := model.CheckToken(token)
  24. if n < 1 {
  25. c.JSON(http.StatusForbidden, gin.H{
  26. "message": "auth fail",
  27. })
  28. c.Abort()
  29. return
  30. }
  31. c.Next()
  32. }
  33. }
  34. func InitRouter() *gin.Engine {
  35. r := gin.New()
  36. r.Use(gin.Logger())
  37. r.Use(gin.Recovery())
  38. r.GET("/", func(c *gin.Context) {
  39. c.JSON(http.StatusOK, gin.H{
  40. "message": "Hello World",
  41. })
  42. })
  43. r.GET("/analytic", api.Analytic)
  44. r.POST("/login", api.Login)
  45. r.DELETE("/logout", api.Logout)
  46. g := r.Group("/", authRequired())
  47. {
  48. g.GET("/users", api.GetUsers)
  49. g.GET("/user/:id", api.GetUser)
  50. g.POST("/user", api.AddUser)
  51. g.POST("/user/:id", api.EditUser)
  52. g.DELETE("/user/:id", api.DeleteUser)
  53. g.GET("domains", api.GetDomains)
  54. g.GET("domain/:name", api.GetDomain)
  55. g.POST("domain/:name", api.EditDomain)
  56. g.POST("domain/:name/enable", api.EnableDomain)
  57. g.POST("domain/:name/disable", api.DisableDomain)
  58. g.DELETE("domain/:name", api.DeleteDomain)
  59. g.GET("configs", api.GetConfigs)
  60. g.GET("config/:name", api.GetConfig)
  61. g.POST("config", api.AddConfig)
  62. g.POST("config/:name", api.EditConfig)
  63. g.GET("backups", api.GetFileBackupList)
  64. g.GET("backup/:id", api.GetFileBackup)
  65. g.GET("template/:name", api.GetTemplate)
  66. g.GET("cert/issue/:domain", api.IssueCert)
  67. g.GET("cert/:domain/info", api.CertInfo)
  68. }
  69. return r
  70. }