settings.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package v1
  2. import (
  3. "github.com/allanpk716/ChineseSubFinder/internal/pkg/settings"
  4. "github.com/allanpk716/ChineseSubFinder/internal/types/backend"
  5. "github.com/gin-gonic/gin"
  6. "net/http"
  7. )
  8. func (cb ControllerBase) SettingsHandler(c *gin.Context) {
  9. var err error
  10. defer func() {
  11. // 统一的异常处理
  12. cb.ErrorProcess(c, "SettingsHandler", err)
  13. }()
  14. switch c.Request.Method {
  15. case "GET":
  16. {
  17. // 回复没有密码的 settings
  18. c.JSON(http.StatusOK, settings.GetSettings().GetNoPasswordSettings())
  19. }
  20. case "PUT":
  21. {
  22. // 修改设置,这里不允许修改密码
  23. reqSetupInfo := settings.Settings{}
  24. err = c.ShouldBindJSON(&reqSetupInfo)
  25. if err != nil {
  26. return
  27. }
  28. // 需要去除 user 的 password 信息再保存,也就是继承之前的 password 即可
  29. err = settings.GetSettings().Read()
  30. if err != nil {
  31. return
  32. }
  33. nowPassword := settings.GetSettings().UserInfo.Password
  34. reqSetupInfo.UserInfo.Password = nowPassword
  35. err = settings.SetFullNewSettings(&reqSetupInfo)
  36. if err != nil {
  37. return
  38. }
  39. err = settings.GetSettings().Save()
  40. if err != nil {
  41. return
  42. }
  43. // 不管如何,都进行一次代理服务器的关闭,然后开启由具体的 获取 ProxySettings GetLocalHttpProxyUrl 操作开启这个服务器
  44. err = settings.GetSettings().AdvancedSettings.ProxySettings.CloseLocalHttpProxyServer()
  45. if err != nil {
  46. return
  47. }
  48. // 重新设置本地的静态文件服务器
  49. cb.StaticFileSystemBackEnd.Stop()
  50. cb.StaticFileSystemBackEnd.Start(cb.cronHelper.Settings.CommonSettings)
  51. c.JSON(http.StatusOK, backend.ReplyCommon{Message: "Settings Save Success"})
  52. }
  53. default:
  54. c.JSON(http.StatusNoContent, backend.ReplyCommon{Message: "Settings Request.Method Error"})
  55. }
  56. }