routers.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package router
  2. import (
  3. "encoding/base64"
  4. "github.com/0xJacky/Nginx-UI/api"
  5. "github.com/0xJacky/Nginx-UI/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.POST("/login", api.Login)
  44. r.DELETE("/logout", api.Logout)
  45. endpoint := r.Group("/", authRequired())
  46. {
  47. endpoint.GET("domains", api.GetDomains)
  48. endpoint.GET("domain/:name", api.GetDomain)
  49. endpoint.POST("domain/:name", api.EditDomain)
  50. endpoint.POST("domain/:name/enable", api.EnableDomain)
  51. endpoint.POST("domain/:name/disable", api.DisableDomain)
  52. endpoint.DELETE("domain/:name", api.DeleteDomain)
  53. endpoint.GET("configs", api.GetConfigs)
  54. endpoint.GET("config/:name", api.GetConfig)
  55. endpoint.POST("config", api.AddConfig)
  56. endpoint.POST("config/:name", api.EditConfig)
  57. endpoint.GET("backups", api.GetFileBackupList)
  58. endpoint.GET("backup/:id", api.GetFileBackup)
  59. endpoint.GET("template/:name", api.GetTemplate)
  60. endpoint.GET("analytic", api.Analytic)
  61. endpoint.GET("cert/issue/:domain", api.IssueCert)
  62. endpoint.GET("cert/:domain/info", api.CertInfo)
  63. }
  64. return r
  65. }