cdnweb.go 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package web
  2. import (
  3. "context"
  4. "fmt"
  5. v1 "github.com/go-nunu/nunu-layout-advanced/api/v1"
  6. "github.com/go-nunu/nunu-layout-advanced/internal/model"
  7. )
  8. type CdnWeb interface {
  9. CreateCdnWebsite(ctx context.Context, formData v1.Website) (int64, error)
  10. UpdateCdnConfiguration(ctx context.Context, req *v1.WebForwardingRequest, oldData *model.WebForwarding, tag string, formData v1.Website) error
  11. DeleteCdnServer(ctx context.Context, cdnWebId int) error
  12. }
  13. // CreateCdnWebsite 创建CDN网站
  14. func (s *aidedWebService) CreateCdnWebsite(ctx context.Context, formData v1.Website) (int64, error) {
  15. formDataSend, err := s.BulidFormData(ctx, formData)
  16. if err != nil {
  17. return 0, fmt.Errorf("构建表单数据失败: %w", err)
  18. }
  19. webId, err := s.cdn.CreateWebsite(ctx, formDataSend)
  20. if err != nil {
  21. return 0, fmt.Errorf("创建CDN网站失败: %w", err)
  22. }
  23. return webId, nil
  24. }
  25. // UpdateCdnConfiguration 更新CDN配置
  26. func (s *aidedWebService) UpdateCdnConfiguration(ctx context.Context, req *v1.WebForwardingRequest, oldData *model.WebForwarding, tag string, formData v1.Website) error {
  27. // 修改网站端口、协议或证书
  28. if oldData.Port != req.WebForwardingData.Port || oldData.IsHttps != req.WebForwardingData.IsHttps ||
  29. oldData.HttpsCert != req.WebForwardingData.HttpsCert || oldData.HttpsKey != req.WebForwardingData.HttpsKey {
  30. if err := s.updateWebsiteProtocolAndCert(ctx, req.WebForwardingData.IsHttps, int64(oldData.CdnWebId), formData); err != nil {
  31. return err
  32. }
  33. }
  34. // 修改网站域名
  35. if oldData.Domain != req.WebForwardingData.Domain {
  36. if err := s.updateWebsiteDomain(ctx, req.WebForwardingData.Domain, int64(oldData.CdnWebId)); err != nil {
  37. return err
  38. }
  39. }
  40. // 修改网站名字
  41. if oldData.Comment != req.WebForwardingData.Comment {
  42. if err := s.updateWebsiteBasicInfo(ctx, int64(oldData.CdnWebId), tag); err != nil {
  43. return err
  44. }
  45. }
  46. return nil
  47. }
  48. // DeleteCdnServer 删除CDN服务器
  49. func (s *aidedWebService) DeleteCdnServer(ctx context.Context, cdnWebId int) error {
  50. if err := s.cdn.DelServer(ctx, int64(cdnWebId)); err != nil {
  51. return fmt.Errorf("删除CDN服务器失败: %w", err)
  52. }
  53. return nil
  54. }