save.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package web
  2. import (
  3. "backup-x/client"
  4. "backup-x/entity"
  5. "net/http"
  6. "strconv"
  7. "strings"
  8. )
  9. // Save 保存
  10. func Save(writer http.ResponseWriter, request *http.Request) {
  11. conf := &entity.Config{}
  12. // 覆盖以前的配置
  13. conf.Username = strings.TrimSpace(request.FormValue("Username"))
  14. conf.Password = request.FormValue("Password")
  15. if conf.Username == "" || conf.Password == "" {
  16. writer.Write([]byte("请输入登录用户名/密码"))
  17. return
  18. }
  19. forms := request.PostForm
  20. for index, projectName := range forms["ProjectName"] {
  21. saveDays, _ := strconv.Atoi(forms["SaveDays"][index])
  22. startTime, _ := strconv.Atoi(forms["StartTime"][index])
  23. period, _ := strconv.Atoi(forms["Period"][index])
  24. conf.BackupConfig = append(
  25. conf.BackupConfig,
  26. entity.BackupConfig{
  27. ProjectName: projectName,
  28. Command: forms["Command"][index],
  29. SaveDays: saveDays,
  30. StartTime: startTime,
  31. Period: period,
  32. },
  33. )
  34. }
  35. // Webhook
  36. conf.WebhookURL = strings.TrimSpace(request.FormValue("WebhookURL"))
  37. conf.WebhookRequestBody = strings.TrimSpace(request.FormValue("WebhookRequestBody"))
  38. // S3
  39. conf.Endpoint = strings.TrimSpace(request.FormValue("Endpoint"))
  40. conf.AccessKey = strings.TrimSpace(request.FormValue("AccessKey"))
  41. conf.SecretKey = strings.TrimSpace(request.FormValue("SecretKey"))
  42. conf.BucketName = strings.TrimSpace(request.FormValue("BucketName"))
  43. // 保存到用户目录
  44. err := conf.SaveConfig()
  45. // 没有错误
  46. if err == nil {
  47. conf.CreateBucketIfNotExist()
  48. if request.URL.Query().Get("backupNow") == "true" {
  49. go client.RunOnce()
  50. }
  51. // 重新进行循环
  52. client.StopRunLoop()
  53. go client.RunLoop()
  54. }
  55. // 回写错误信息
  56. if err == nil {
  57. writer.Write([]byte("ok"))
  58. } else {
  59. writer.Write([]byte(err.Error()))
  60. }
  61. }