setting.go 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. package controller
  2. import (
  3. "errors"
  4. "time"
  5. "x-ui/web/entity"
  6. "x-ui/web/service"
  7. "x-ui/web/session"
  8. "github.com/gin-gonic/gin"
  9. )
  10. type updateUserForm struct {
  11. OldUsername string `json:"oldUsername" form:"oldUsername"`
  12. OldPassword string `json:"oldPassword" form:"oldPassword"`
  13. NewUsername string `json:"newUsername" form:"newUsername"`
  14. NewPassword string `json:"newPassword" form:"newPassword"`
  15. }
  16. type SettingController struct {
  17. settingService service.SettingService
  18. userService service.UserService
  19. panelService service.PanelService
  20. }
  21. func NewSettingController(g *gin.RouterGroup) *SettingController {
  22. a := &SettingController{}
  23. a.initRouter(g)
  24. return a
  25. }
  26. func (a *SettingController) initRouter(g *gin.RouterGroup) {
  27. g = g.Group("/setting")
  28. g.POST("/all", a.getAllSetting)
  29. g.POST("/defaultSettings", a.getDefaultSettings)
  30. g.POST("/update", a.updateSetting)
  31. g.POST("/updateUser", a.updateUser)
  32. g.POST("/restartPanel", a.restartPanel)
  33. }
  34. func (a *SettingController) getAllSetting(c *gin.Context) {
  35. allSetting, err := a.settingService.GetAllSetting()
  36. if err != nil {
  37. jsonMsg(c, I18n(c, "pages.setting.toasts.getSetting"), err)
  38. return
  39. }
  40. jsonObj(c, allSetting, nil)
  41. }
  42. func (a *SettingController) getDefaultSettings(c *gin.Context) {
  43. expireDiff, err := a.settingService.GetExpireDiff()
  44. if err != nil {
  45. jsonMsg(c, I18n(c, "pages.setting.toasts.getSetting"), err)
  46. return
  47. }
  48. trafficDiff, err := a.settingService.GetTrafficDiff()
  49. if err != nil {
  50. jsonMsg(c, I18n(c, "pages.setting.toasts.getSetting"), err)
  51. return
  52. }
  53. defaultCert, err := a.settingService.GetCertFile()
  54. if err != nil {
  55. jsonMsg(c, I18n(c, "pages.setting.toasts.getSetting"), err)
  56. return
  57. }
  58. defaultKey, err := a.settingService.GetKeyFile()
  59. if err != nil {
  60. jsonMsg(c, I18n(c, "pages.setting.toasts.getSetting"), err)
  61. return
  62. }
  63. result := map[string]interface{}{
  64. "expireDiff": expireDiff,
  65. "trafficDiff": trafficDiff,
  66. "defaultCert": defaultCert,
  67. "defaultKey": defaultKey,
  68. }
  69. jsonObj(c, result, nil)
  70. }
  71. func (a *SettingController) updateSetting(c *gin.Context) {
  72. allSetting := &entity.AllSetting{}
  73. err := c.ShouldBind(allSetting)
  74. if err != nil {
  75. jsonMsg(c, I18n(c, "pages.setting.toasts.modifySetting"), err)
  76. return
  77. }
  78. err = a.settingService.UpdateAllSetting(allSetting)
  79. jsonMsg(c, I18n(c, "pages.setting.toasts.modifySetting"), err)
  80. }
  81. func (a *SettingController) updateUser(c *gin.Context) {
  82. form := &updateUserForm{}
  83. err := c.ShouldBind(form)
  84. if err != nil {
  85. jsonMsg(c, I18n(c, "pages.setting.toasts.modifySetting"), err)
  86. return
  87. }
  88. user := session.GetLoginUser(c)
  89. if user.Username != form.OldUsername || user.Password != form.OldPassword {
  90. jsonMsg(c, I18n(c, "pages.setting.toasts.modifyUser"), errors.New(I18n(c, "pages.setting.toasts.originalUserPassIncorrect")))
  91. return
  92. }
  93. if form.NewUsername == "" || form.NewPassword == "" {
  94. jsonMsg(c, I18n(c, "pages.setting.toasts.modifyUser"), errors.New(I18n(c, "pages.setting.toasts.userPassMustBeNotEmpty")))
  95. return
  96. }
  97. err = a.userService.UpdateUser(user.Id, form.NewUsername, form.NewPassword)
  98. if err == nil {
  99. user.Username = form.NewUsername
  100. user.Password = form.NewPassword
  101. session.SetLoginUser(c, user)
  102. }
  103. jsonMsg(c, I18n(c, "pages.setting.toasts.modifyUser"), err)
  104. }
  105. func (a *SettingController) restartPanel(c *gin.Context) {
  106. err := a.panelService.RestartPanel(time.Second * 3)
  107. jsonMsg(c, I18n(c, "pages.setting.restartPanel"), err)
  108. }