api_other.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. package admin
  2. import (
  3. "encoding/json"
  4. "errors"
  5. "io"
  6. "net/http"
  7. "regexp"
  8. "github.com/bjdgyc/anylink/base"
  9. "github.com/bjdgyc/anylink/dbdata"
  10. )
  11. func setOtherGet(data interface{}, w http.ResponseWriter) {
  12. err := dbdata.SettingGet(data)
  13. if err != nil && !dbdata.CheckErrNotFound(err) {
  14. RespError(w, RespInternalErr, err)
  15. return
  16. }
  17. // 不明文输出SMTP的密码
  18. switch dbdata.StructName(data) {
  19. case "SettingSmtp":
  20. data.(*dbdata.SettingSmtp).Password = ""
  21. }
  22. RespSucess(w, data)
  23. }
  24. func setOtherEdit(data interface{}, w http.ResponseWriter, r *http.Request) {
  25. body, err := io.ReadAll(r.Body)
  26. if err != nil {
  27. RespError(w, RespInternalErr, err)
  28. return
  29. }
  30. defer r.Body.Close()
  31. err = json.Unmarshal(body, data)
  32. if err != nil {
  33. RespError(w, RespInternalErr, err)
  34. return
  35. }
  36. // fmt.Println(data)
  37. switch dbdata.StructName(data) {
  38. case "SettingSmtp":
  39. // 密码为空时则不修改
  40. smtp := &dbdata.SettingSmtp{}
  41. err := dbdata.SettingGet(smtp)
  42. if err == nil && data.(*dbdata.SettingSmtp).Password == "" {
  43. data.(*dbdata.SettingSmtp).Password = smtp.Password
  44. }
  45. }
  46. err = dbdata.SettingSet(data)
  47. if err != nil {
  48. RespError(w, RespInternalErr, err)
  49. return
  50. }
  51. RespSucess(w, data)
  52. }
  53. func SetOtherSmtp(w http.ResponseWriter, r *http.Request) {
  54. data := &dbdata.SettingSmtp{}
  55. setOtherGet(data, w)
  56. }
  57. func SetOtherSmtpEdit(w http.ResponseWriter, r *http.Request) {
  58. data := &dbdata.SettingSmtp{}
  59. setOtherEdit(data, w, r)
  60. }
  61. func SetOther(w http.ResponseWriter, r *http.Request) {
  62. data := &dbdata.SettingOther{}
  63. setOtherGet(data, w)
  64. }
  65. func SetOtherEdit(w http.ResponseWriter, r *http.Request) {
  66. data := &dbdata.SettingOther{}
  67. setOtherEdit(data, w, r)
  68. }
  69. func SetOtherAuditLog(w http.ResponseWriter, r *http.Request) {
  70. data, err := dbdata.SettingGetAuditLog()
  71. if err != nil {
  72. RespError(w, RespInternalErr, err)
  73. return
  74. }
  75. data.AuditInterval = base.Cfg.AuditInterval
  76. RespSucess(w, data)
  77. }
  78. func SetOtherAuditLogEdit(w http.ResponseWriter, r *http.Request) {
  79. body, err := io.ReadAll(r.Body)
  80. if err != nil {
  81. RespError(w, RespInternalErr, err)
  82. return
  83. }
  84. defer r.Body.Close()
  85. data := &dbdata.SettingAuditLog{}
  86. err = json.Unmarshal(body, data)
  87. if err != nil {
  88. RespError(w, RespInternalErr, err)
  89. return
  90. }
  91. if data.LifeDay < 0 || data.LifeDay > 365 {
  92. RespError(w, RespParamErr, errors.New("日志存储时长范围在 0 ~ 365"))
  93. return
  94. }
  95. ok, _ := regexp.Match("^([0-9]|0[0-9]|1[0-9]|2[0-3]):([0][0])$", []byte(data.ClearTime))
  96. if !ok {
  97. RespError(w, RespParamErr, errors.New("每天清理时间填写有误"))
  98. return
  99. }
  100. err = dbdata.SettingSet(data)
  101. if err != nil {
  102. RespError(w, RespInternalErr, err)
  103. return
  104. }
  105. RespSucess(w, data)
  106. }