diff --git a/internal/certacme/certifiers/sp_byteplus_dns.go b/internal/certacme/certifiers/sp_byteplus_dns.go index 5ff252f44..1f253db96 100644 --- a/internal/certacme/certifiers/sp_byteplus_dns.go +++ b/internal/certacme/certifiers/sp_byteplus_dns.go @@ -17,8 +17,8 @@ func init() { } provider, err := byteplus.NewChallenger(&byteplus.ChallengerConfig{ - AccessKey: credentials.AccessKey, - SecretKey: credentials.SecretKey, + AccessKeyId: credentials.AccessKeyId, + SecretAccessKey: credentials.SecretAccessKey, DnsPropagationTimeout: options.DnsPropagationTimeout, DnsTTL: options.DnsTTL, }) diff --git a/internal/certmgmt/deployers/sp_byteplus_cdn.go b/internal/certmgmt/deployers/sp_byteplus_cdn.go index 5b3e5fabc..94e74f4f9 100644 --- a/internal/certmgmt/deployers/sp_byteplus_cdn.go +++ b/internal/certmgmt/deployers/sp_byteplus_cdn.go @@ -17,8 +17,8 @@ func init() { } provider, err := bytepluscdn.NewDeployer(&bytepluscdn.DeployerConfig{ - AccessKey: credentials.AccessKey, - SecretKey: credentials.SecretKey, + AccessKeyId: credentials.AccessKeyId, + SecretAccessKey: credentials.SecretAccessKey, ProjectName: credentials.ProjectName, DomainMatchPattern: xmaps.GetString(options.ProviderExtendedConfig, "domainMatchPattern"), Domain: xmaps.GetString(options.ProviderExtendedConfig, "domain"), diff --git a/internal/certmgmt/deployers/sp_byteplus_certcenter.go b/internal/certmgmt/deployers/sp_byteplus_certcenter.go index ac135f088..21844d385 100644 --- a/internal/certmgmt/deployers/sp_byteplus_certcenter.go +++ b/internal/certmgmt/deployers/sp_byteplus_certcenter.go @@ -17,10 +17,10 @@ func init() { } provider, err := bytepluscertcenter.NewDeployer(&bytepluscertcenter.DeployerConfig{ - AccessKey: credentials.AccessKey, - SecretKey: credentials.SecretKey, - ProjectName: credentials.ProjectName, - Region: xmaps.GetString(options.ProviderExtendedConfig, "region"), + AccessKeyId: credentials.AccessKeyId, + SecretAccessKey: credentials.SecretAccessKey, + ProjectName: credentials.ProjectName, + Region: xmaps.GetString(options.ProviderExtendedConfig, "region"), }) return provider, err }) diff --git a/internal/domain/access.go b/internal/domain/access.go index fd0b2556b..6f475bfa4 100644 --- a/internal/domain/access.go +++ b/internal/domain/access.go @@ -135,9 +135,9 @@ type AccessConfigForBunny struct { } type AccessConfigForBytePlus struct { - AccessKey string `json:"accessKey"` - SecretKey string `json:"secretKey"` - ProjectName string `json:"projectName,omitempty"` + AccessKeyId string `json:"accessKeyId"` + SecretAccessKey string `json:"secretAccessKey"` + ProjectName string `json:"projectName,omitempty"` } type AccessConfigForCacheFly struct { diff --git a/migrations/1780408800_upgrade_v0.4.25.go b/migrations/1780408800_upgrade_v0.4.25.go new file mode 100644 index 000000000..2187bd555 --- /dev/null +++ b/migrations/1780408800_upgrade_v0.4.25.go @@ -0,0 +1,66 @@ +package migrations + +import ( + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + tracer := NewTracer("v0.4.25") + tracer.Printf("go ...") + + // update collection `access` + // - modify field `config` schema + { + collection, err := app.FindCollectionByNameOrId("4yzbv8urny5ja1e") + if err != nil { + return err + } + + records, err := app.FindAllRecords(collection) + if err != nil { + return err + } + + for _, record := range records { + changed := false + + provider := record.GetString("provider") + config := make(map[string]any) + if err := record.UnmarshalJSONField("config", &config); err != nil { + return err + } + + switch provider { + case "byteplus": + if _, ok := config["accessKey"]; ok { + config["accessKeyId"] = config["accessKey"] + delete(config, "accessKey") + record.Set("config", config) + changed = true + } + if _, ok := config["secretKey"]; ok { + config["secretAccessKey"] = config["secretKey"] + delete(config, "secretKey") + record.Set("config", config) + changed = true + } + } + + if changed { + if err := app.Save(record); err != nil { + return err + } + + tracer.Printf("record #%s in collection '%s' updated", record.Id, collection.Name) + } + } + } + + tracer.Printf("done") + return nil + }, func(app core.App) error { + return nil + }) +} diff --git a/pkg/core/certifier/challengers/dns01/byteplus/byteplus.go b/pkg/core/certifier/challengers/dns01/byteplus/byteplus.go index d315e1e8e..cdaeb170f 100644 --- a/pkg/core/certifier/challengers/dns01/byteplus/byteplus.go +++ b/pkg/core/certifier/challengers/dns01/byteplus/byteplus.go @@ -10,8 +10,8 @@ import ( ) type ChallengerConfig struct { - AccessKey string `json:"accessKey"` - SecretKey string `json:"secretKey"` + AccessKeyId string `json:"accessKeyId"` + SecretAccessKey string `json:"secretAccessKey"` DnsPropagationTimeout int `json:"dnsPropagationTimeout,omitempty"` DnsTTL int `json:"dnsTTL,omitempty"` } @@ -22,8 +22,8 @@ func NewChallenger(config *ChallengerConfig) (certifier.ACMEChallenger, error) { } providerConfig := internal.NewDefaultConfig() - providerConfig.AccessKey = config.AccessKey - providerConfig.SecretKey = config.SecretKey + providerConfig.AccessKey = config.AccessKeyId + providerConfig.SecretKey = config.SecretAccessKey if config.DnsPropagationTimeout != 0 { providerConfig.PropagationTimeout = time.Duration(config.DnsPropagationTimeout) * time.Second } diff --git a/pkg/core/certmgr/providers/byteplus-cdn/byteplus_cdn.go b/pkg/core/certmgr/providers/byteplus-cdn/byteplus_cdn.go index 6624bd385..8f5b93b1c 100644 --- a/pkg/core/certmgr/providers/byteplus-cdn/byteplus_cdn.go +++ b/pkg/core/certmgr/providers/byteplus-cdn/byteplus_cdn.go @@ -17,10 +17,10 @@ import ( ) type CertmgrConfig struct { - // BytePlus AccessKey。 - AccessKey string `json:"accessKey"` - // BytePlus SecretKey。 - SecretKey string `json:"secretKey"` + // BytePlus AccessKeyId。 + AccessKeyId string `json:"accessKeyId"` + // BytePlus SecretAccessKey。 + SecretAccessKey string `json:"secretAccessKey"` } type Certmgr struct { @@ -37,8 +37,8 @@ func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) { } client := bpcdn.NewInstance() - client.Client.SetAccessKey(config.AccessKey) - client.Client.SetSecretKey(config.SecretKey) + client.Client.SetAccessKey(config.AccessKeyId) + client.Client.SetSecretKey(config.SecretAccessKey) return &Certmgr{ config: config, diff --git a/pkg/core/certmgr/providers/byteplus-cdn/byteplus_cdn_test.go b/pkg/core/certmgr/providers/byteplus-cdn/byteplus_cdn_test.go index 6d8a9dc14..f9ab9f6f8 100644 --- a/pkg/core/certmgr/providers/byteplus-cdn/byteplus_cdn_test.go +++ b/pkg/core/certmgr/providers/byteplus-cdn/byteplus_cdn_test.go @@ -8,18 +8,18 @@ import ( ) var ( - fp = tester.Args("BYTEPLUSCDN_") - fTestCertPath string - fTestKeyPath string - fAccessKey string - fSecretKey string + fp = tester.Args("BYTEPLUSCDN_") + fTestCertPath string + fTestKeyPath string + fAccessKeyId string + fSecretAccessKey string ) func init() { fp.DefineString(&fTestCertPath, "TESTCERTPATH") fp.DefineString(&fTestKeyPath, "TESTKEYPATH") - fp.DefineString(&fAccessKey, "ACCESSKEY") - fp.DefineString(&fSecretKey, "SECRETKEY") + fp.DefineString(&fAccessKeyId, "ACCESSKEYID") + fp.DefineString(&fSecretAccessKey, "SECRETACCESSKEY") } /* @@ -28,16 +28,16 @@ Shell command to run this test: go test -v ./byteplus_cdn_test.go -args \ --BYTEPLUSCDN_TESTCERTPATH="/path/to/your-test-cert.pem" \ --BYTEPLUSCDN_TESTKEYPATH="/path/to/your-test-key.pem" \ - --BYTEPLUSCDN_ACCESSKEY="your-access-key" \ - --BYTEPLUSCDN_SECRETKEY="your-secret-key" + --BYTEPLUSCDN_ACCESSKEYID="your-access-key-id" \ + --BYTEPLUSCDN_SECRETACCESSKEY="your-secret-access-key" */ func TestProvider(t *testing.T) { fp.Parse() t.Run("Upload", func(t *testing.T) { provider, err := impl.NewCertmgr(&impl.CertmgrConfig{ - AccessKey: fAccessKey, - SecretKey: fSecretKey, + AccessKeyId: fAccessKeyId, + SecretAccessKey: fSecretAccessKey, }) if err != nil { t.Errorf("err: %+v", err) diff --git a/pkg/core/certmgr/providers/byteplus-certcenter/byteplus_certcenter.go b/pkg/core/certmgr/providers/byteplus-certcenter/byteplus_certcenter.go index 8019037ac..8e8033603 100644 --- a/pkg/core/certmgr/providers/byteplus-certcenter/byteplus_certcenter.go +++ b/pkg/core/certmgr/providers/byteplus-certcenter/byteplus_certcenter.go @@ -14,10 +14,10 @@ import ( ) type CertmgrConfig struct { - // BytePlus AccessKey。 - AccessKey string `json:"accessKey"` - // BytePlus SecretKey。 - SecretKey string `json:"secretKey"` + // BytePlus AccessKeyId。 + AccessKeyId string `json:"accessKeyId"` + // BytePlus SecretAccessKey。 + SecretAccessKey string `json:"secretAccessKey"` // BytePlus 项目名称。 ProjectName string `json:"projectName,omitempty"` // BytePlus 地域。 @@ -37,7 +37,7 @@ func NewCertmgr(config *CertmgrConfig) (*Certmgr, error) { return nil, fmt.Errorf("the configuration of the certmgr provider is nil") } - client, err := createSDKClient(config.AccessKey, config.SecretKey, config.Region) + client, err := createSDKClient(config.AccessKeyId, config.SecretAccessKey, config.Region) if err != nil { return nil, fmt.Errorf("could not create client: %w", err) } @@ -95,13 +95,13 @@ func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, pri return nil, certmgr.ErrUnsupported } -func createSDKClient(accessKey, secretKey, region string) (*bpcertificateservice.CERTIFICATESERVICE, error) { +func createSDKClient(accessKeyId, secretAccessKey, region string) (*bpcertificateservice.CERTIFICATESERVICE, error) { if region == "" { region = "ap-singapore-1" // 证书中心默认区域:新加坡 } config := bp.NewConfig(). - WithAkSk(accessKey, secretKey). + WithAkSk(accessKeyId, secretAccessKey). WithRegion(region) session, err := bpsesion.NewSession(config) diff --git a/pkg/core/certmgr/providers/byteplus-certcenter/byteplus_certcenter_test.go b/pkg/core/certmgr/providers/byteplus-certcenter/byteplus_certcenter_test.go index 9d4d10716..171ee1d32 100644 --- a/pkg/core/certmgr/providers/byteplus-certcenter/byteplus_certcenter_test.go +++ b/pkg/core/certmgr/providers/byteplus-certcenter/byteplus_certcenter_test.go @@ -8,18 +8,18 @@ import ( ) var ( - fp = tester.Args("BYTEPLUSCERTCENTER_") - fTestCertPath string - fTestKeyPath string - fAccessKey string - fSecretKey string + fp = tester.Args("BYTEPLUSCERTCENTER_") + fTestCertPath string + fTestKeyPath string + fAccessKeyId string + fSecretAccessKey string ) func init() { fp.DefineString(&fTestCertPath, "TESTCERTPATH") fp.DefineString(&fTestKeyPath, "TESTKEYPATH") - fp.DefineString(&fAccessKey, "ACCESSKEY") - fp.DefineString(&fSecretKey, "SECRETKEY") + fp.DefineString(&fAccessKeyId, "ACCESSKEYID") + fp.DefineString(&fSecretAccessKey, "SECRETACCESSKEY") } /* @@ -28,16 +28,16 @@ Shell command to run this test: go test -v ./byteplus_certcenter_test.go -args \ --BYTEPLUSCERTCENTER_TESTCERTPATH="/path/to/your-test-cert.pem" \ --BYTEPLUSCERTCENTER_TESTKEYPATH="/path/to/your-test-key.pem" \ - --BYTEPLUSCERTCENTER_ACCESSKEY="your-access-key" \ - --BYTEPLUSCERTCENTER_SECRETKEY="your-secret-key" + --BYTEPLUSCERTCENTER_ACCESSKEYID="your-access-key-id" \ + --BYTEPLUSCERTCENTER_SECRETACCESSKEY="your-secret-access-key" */ func TestProvider(t *testing.T) { fp.Parse() t.Run("Upload", func(t *testing.T) { provider, err := impl.NewCertmgr(&impl.CertmgrConfig{ - AccessKey: fAccessKey, - SecretKey: fSecretKey, + AccessKeyId: fAccessKeyId, + SecretAccessKey: fSecretAccessKey, }) if err != nil { t.Errorf("err: %+v", err) diff --git a/pkg/core/deployer/providers/byteplus-cdn/byteplus_cdn.go b/pkg/core/deployer/providers/byteplus-cdn/byteplus_cdn.go index 3604a575a..7b66ed660 100644 --- a/pkg/core/deployer/providers/byteplus-cdn/byteplus_cdn.go +++ b/pkg/core/deployer/providers/byteplus-cdn/byteplus_cdn.go @@ -17,10 +17,10 @@ import ( ) type DeployerConfig struct { - // BytePlus AccessKey。 - AccessKey string `json:"accessKey"` - // BytePlus SecretKey。 - SecretKey string `json:"secretKey"` + // BytePlus AccessKeyId。 + AccessKeyId string `json:"accessKeyId"` + // BytePlus SecretAccessKey。 + SecretAccessKey string `json:"secretAccessKey"` // BytePlus 项目名称。 ProjectName string `json:"projectName,omitempty"` // 域名匹配模式。 @@ -45,12 +45,12 @@ func NewDeployer(config *DeployerConfig) (*Deployer, error) { } client := bpcdn.NewInstance() - client.Client.SetAccessKey(config.AccessKey) - client.Client.SetSecretKey(config.SecretKey) + client.Client.SetAccessKey(config.AccessKeyId) + client.Client.SetSecretKey(config.SecretAccessKey) pcertmgr, err := certmgrimpl.NewCertmgr(&certmgrimpl.CertmgrConfig{ - AccessKey: config.AccessKey, - SecretKey: config.SecretKey, + AccessKeyId: config.AccessKeyId, + SecretAccessKey: config.SecretAccessKey, }) if err != nil { return nil, fmt.Errorf("could not create certmgr: %w", err) diff --git a/pkg/core/deployer/providers/byteplus-cdn/byteplus_cdn_test.go b/pkg/core/deployer/providers/byteplus-cdn/byteplus_cdn_test.go index 81cb66d9b..af3c96b3f 100644 --- a/pkg/core/deployer/providers/byteplus-cdn/byteplus_cdn_test.go +++ b/pkg/core/deployer/providers/byteplus-cdn/byteplus_cdn_test.go @@ -8,19 +8,19 @@ import ( ) var ( - fp = tester.Args("BYTEPLUSCDN_") - fTestCertPath string - fTestKeyPath string - fAccessKey string - fSecretKey string - fDomain string + fp = tester.Args("BYTEPLUSCDN_") + fTestCertPath string + fTestKeyPath string + fAccessKeyId string + fSecretAccessKey string + fDomain string ) func init() { fp.DefineString(&fTestCertPath, "TESTCERTPATH") fp.DefineString(&fTestKeyPath, "TESTKEYPATH") - fp.DefineString(&fAccessKey, "ACCESSKEY") - fp.DefineString(&fSecretKey, "SECRETKEY") + fp.DefineString(&fAccessKeyId, "ACCESSKEYID") + fp.DefineString(&fSecretAccessKey, "SECRETACCESSKEY") fp.DefineString(&fDomain, "DOMAIN") } @@ -30,8 +30,8 @@ Shell command to run this test: go test -v ./byteplus_cdn_test.go -args \ --BYTEPLUSCDN_TESTCERTPATH="/path/to/your-test-cert.pem" \ --BYTEPLUSCDN_TESTKEYPATH="/path/to/your-test-key.pem" \ - --BYTEPLUSCDN_ACCESSKEY="your-access-key" \ - --BYTEPLUSCDN_SECRETKEY="your-secret-key" \ + --BYTEPLUSCDN_ACCESSKEYID="your-access-key-id" \ + --BYTEPLUSCDN_SECRETACCESSKEY="your-secret-access-key" \ --BYTEPLUSCDN_DOMAIN="example.com" */ func TestProvider(t *testing.T) { @@ -39,9 +39,9 @@ func TestProvider(t *testing.T) { t.Run("Deploy", func(t *testing.T) { provider, err := impl.NewDeployer(&impl.DeployerConfig{ - AccessKey: fAccessKey, - SecretKey: fSecretKey, - Domain: fDomain, + AccessKeyId: fAccessKeyId, + SecretAccessKey: fSecretAccessKey, + Domain: fDomain, }) if err != nil { t.Errorf("err: %+v", err) diff --git a/pkg/core/deployer/providers/byteplus-certcenter/byteplus_certcenter.go b/pkg/core/deployer/providers/byteplus-certcenter/byteplus_certcenter.go index a64239a58..aeda4647f 100644 --- a/pkg/core/deployer/providers/byteplus-certcenter/byteplus_certcenter.go +++ b/pkg/core/deployer/providers/byteplus-certcenter/byteplus_certcenter.go @@ -11,10 +11,10 @@ import ( ) type DeployerConfig struct { - // BytePlus AccessKey。 - AccessKey string `json:"accessKey"` - // BytePlus SecretKey。 - SecretKey string `json:"secretKey"` + // BytePlus AccessKeyId。 + AccessKeyId string `json:"accessKeyId"` + // BytePlus SecretAccessKey。 + SecretAccessKey string `json:"secretAccessKey"` // BytePlus 项目名称。 ProjectName string `json:"projectName,omitempty"` // BytePlus 地域。 @@ -35,10 +35,10 @@ func NewDeployer(config *DeployerConfig) (*Deployer, error) { } pcertmgr, err := certmgrimpl.NewCertmgr(&certmgrimpl.CertmgrConfig{ - AccessKey: config.AccessKey, - SecretKey: config.SecretKey, - ProjectName: config.ProjectName, - Region: config.Region, + AccessKeyId: config.AccessKeyId, + SecretAccessKey: config.SecretAccessKey, + ProjectName: config.ProjectName, + Region: config.Region, }) if err != nil { return nil, fmt.Errorf("could not create certmgr: %w", err) diff --git a/ui/src/components/access/forms/AccessConfigFieldsProviderBytePlus.tsx b/ui/src/components/access/forms/AccessConfigFieldsProviderBytePlus.tsx index 7e8d06e80..3112ed0e2 100644 --- a/ui/src/components/access/forms/AccessConfigFieldsProviderBytePlus.tsx +++ b/ui/src/components/access/forms/AccessConfigFieldsProviderBytePlus.tsx @@ -18,23 +18,23 @@ const AccessConfigFormFieldsProviderBytePlus = () => { return ( <> } + tooltip={} > - + } + tooltip={} > - + { const getInitialValues = (): Nullish>> => { return { - accessKey: "", - secretKey: "", + accessKeyId: "", + secretAccessKey: "", }; }; @@ -61,8 +61,8 @@ const getSchema = ({ i18n = getI18n() }: { i18n: ReturnType }) = const { t: _ } = i18n; return z.object({ - accessKey: z.string().nonempty(), - secretKey: z.string().nonempty(), + accessKeyId: z.string().nonempty(), + secretAccessKey: z.string().nonempty(), projectName: z.string().nullish(), }); }; diff --git a/ui/src/i18n/resources/en/nls.access.json b/ui/src/i18n/resources/en/nls.access.json index 2c7b64411..b050de1ee 100644 --- a/ui/src/i18n/resources/en/nls.access.json +++ b/ui/src/i18n/resources/en/nls.access.json @@ -326,14 +326,14 @@ "placeholder": "Please enter Bunny API key", "tooltip": "For more information, see https://docs.bunny.net/reference/bunnynet-api-overview" }, - "byteplus_access_key": { - "label": "BytePlus AccessKey", - "placeholder": "Please enter BytePlus AccessKey", + "byteplus_access_key_id": { + "label": "BytePlus AccessKeyID", + "placeholder": "Please enter BytePlus AccessKeyID", "tooltip": "For more information, see https://docs.byteplus.com/en/docs/byteplus-platform/docs-managing-keys" }, - "byteplus_secret_key": { - "label": "BytePlus SecretKey", - "placeholder": "Please enter BytePlus SecretKey", + "byteplus_secret_access_key": { + "label": "BytePlus SecretAccessKey", + "placeholder": "Please enter BytePlus SecretAccessKey", "tooltip": "For more information, see https://docs.byteplus.com/en/docs/byteplus-platform/docs-managing-keys" }, "byteplus_project_name": { diff --git a/ui/src/i18n/resources/zh/nls.access.json b/ui/src/i18n/resources/zh/nls.access.json index 85f0623f7..d871d8c74 100644 --- a/ui/src/i18n/resources/zh/nls.access.json +++ b/ui/src/i18n/resources/zh/nls.access.json @@ -324,14 +324,14 @@ "placeholder": "请输入 Bunny API Key", "tooltip": "这是什么?请参阅 https://docs.bunny.net/reference/bunnynet-api-overview" }, - "byteplus_access_key": { - "label": "BytePlus AccessKey", - "placeholder": "请输入 BytePlus AccessKey", + "byteplus_access_key_id": { + "label": "BytePlus AccessKeyID", + "placeholder": "请输入 BytePlus AccessKeyID", "tooltip": "这是什么?请参阅 https://docs.byteplus.com/zh-CN/docs/byteplus-platform/docs-managing-keys" }, - "byteplus_secret_key": { - "label": "BytePlus SecretKey", - "placeholder": "请输入 BytePlus SecretKey", + "byteplus_secret_access_key": { + "label": "BytePlus SecretAccessKey", + "placeholder": "请输入 BytePlus SecretAccessKey", "tooltip": "这是什么?请参阅 https://docs.byteplus.com/zh-CN/docs/byteplus-platform/docs-managing-keys" }, "byteplus_project_name": {