routers.go 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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("install", api.InstallLockCheck)
  44. r.POST("install", api.InstallNginxUI)
  45. r.POST("/login", api.Login)
  46. r.DELETE("/logout", api.Logout)
  47. g := r.Group("/", authRequired())
  48. {
  49. r.GET("/analytic", api.Analytic)
  50. g.GET("/users", api.GetUsers)
  51. g.GET("/user/:id", api.GetUser)
  52. g.POST("/user", api.AddUser)
  53. g.POST("/user/:id", api.EditUser)
  54. g.DELETE("/user/:id", api.DeleteUser)
  55. g.GET("domains", api.GetDomains)
  56. g.GET("domain/:name", api.GetDomain)
  57. g.POST("domain/:name", api.EditDomain)
  58. g.POST("domain/:name/enable", api.EnableDomain)
  59. g.POST("domain/:name/disable", api.DisableDomain)
  60. g.DELETE("domain/:name", api.DeleteDomain)
  61. g.GET("configs", api.GetConfigs)
  62. g.GET("config/:name", api.GetConfig)
  63. g.POST("config", api.AddConfig)
  64. g.POST("config/:name", api.EditConfig)
  65. g.GET("backups", api.GetFileBackupList)
  66. g.GET("backup/:id", api.GetFileBackup)
  67. g.GET("template/:name", api.GetTemplate)
  68. g.GET("cert/issue/:domain", api.IssueCert)
  69. g.GET("cert/:domain/info", api.CertInfo)
  70. // 添加域名到自动续期列表
  71. g.POST("cert/:domain", api.AddDomainToAutoCert)
  72. // 从自动续期列表中删除域名
  73. g.DELETE("cert/:domain", api.RemoveDomainFromAutoCert)
  74. }
  75. return r
  76. }