feat: add spaceship dns provider (#8501)

Refs https://github.com/1Panel-dev/1Panel/issues/8494
This commit is contained in:
ChengPlay 2025-04-28 18:43:48 +08:00 committed by GitHub
parent e5bd5d17ba
commit d6fde84dc9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 27 additions and 7 deletions

View file

@ -15,6 +15,7 @@ import (
"github.com/go-acme/lego/v4/providers/dns/namedotcom" "github.com/go-acme/lego/v4/providers/dns/namedotcom"
"github.com/go-acme/lego/v4/providers/dns/namesilo" "github.com/go-acme/lego/v4/providers/dns/namesilo"
"github.com/go-acme/lego/v4/providers/dns/rainyun" "github.com/go-acme/lego/v4/providers/dns/rainyun"
"github.com/go-acme/lego/v4/providers/dns/spaceship"
"github.com/go-acme/lego/v4/providers/dns/tencentcloud" "github.com/go-acme/lego/v4/providers/dns/tencentcloud"
"github.com/go-acme/lego/v4/providers/dns/vercel" "github.com/go-acme/lego/v4/providers/dns/vercel"
"github.com/go-acme/lego/v4/providers/dns/volcengine" "github.com/go-acme/lego/v4/providers/dns/volcengine"
@ -99,6 +100,7 @@ const (
HuaweiCloud DnsType = "HuaweiCloud" HuaweiCloud DnsType = "HuaweiCloud"
FreeMyIP DnsType = "FreeMyIP" FreeMyIP DnsType = "FreeMyIP"
Vercel DnsType = "Vercel" Vercel DnsType = "Vercel"
Spaceship DnsType = "Spaceship"
) )
type DNSParam struct { type DNSParam struct {
@ -240,6 +242,14 @@ func getDNSProviderConfig(dnsType DnsType, params string) (challenge.Provider, e
vercelConfig.PropagationTimeout = propagationTimeout vercelConfig.PropagationTimeout = propagationTimeout
vercelConfig.PollingInterval = pollingInterval vercelConfig.PollingInterval = pollingInterval
p, err = vercel.NewDNSProviderConfig(vercelConfig) p, err = vercel.NewDNSProviderConfig(vercelConfig)
case Spaceship:
spaceshipConfig := spaceship.NewDefaultConfig()
spaceshipConfig.APIKey = param.APIkey
spaceshipConfig.APISecret = param.APISecret
spaceshipConfig.PropagationTimeout = propagationTimeout
spaceshipConfig.PollingInterval = pollingInterval
spaceshipConfig.TTL = ttl
p, err = spaceship.NewDNSProviderConfig(spaceshipConfig)
} }
if err != nil { if err != nil {
return nil, err return nil, err

View file

@ -220,6 +220,10 @@ export const DNSTypes = [
label: i18n.global.t('website.rainyun'), label: i18n.global.t('website.rainyun'),
value: 'RainYun', value: 'RainYun',
}, },
{
label: 'Spaceship',
value: 'Spaceship',
},
]; ];
export const Fields = [ export const Fields = [

View file

@ -54,11 +54,6 @@
<el-input v-model.trim="account.authorization['secretKey']"></el-input> <el-input v-model.trim="account.authorization['secretKey']"></el-input>
</el-form-item> </el-form-item>
</div> </div>
<div v-if="account.type === 'RainYun'">
<el-form-item label="API Key" prop="authorization.apiKey">
<el-input v-model.trim="account.authorization['apiKey']"></el-input>
</el-form-item>
</div>
<div v-if="account.type === 'CloudDns'"> <div v-if="account.type === 'CloudDns'">
<el-form-item label="Client ID" prop="authorization.clientID"> <el-form-item label="Client ID" prop="authorization.clientID">
<el-input v-model.trim="account.authorization['clientID']"></el-input> <el-input v-model.trim="account.authorization['clientID']"></el-input>
@ -84,14 +79,24 @@
<el-form-item <el-form-item
label="API Key" label="API Key"
prop="authorization.apiKey" prop="authorization.apiKey"
v-if="account.type === 'NameCheap' || account.type === 'NameSilo' || account.type === 'Godaddy'" v-if="
account.type === 'NameCheap' ||
account.type === 'NameSilo' ||
account.type === 'Godaddy' ||
account.type === 'RainYun' ||
account.type === 'Spaceship'
"
> >
<el-input v-model.trim="account.authorization['apiKey']"></el-input> <el-input v-model.trim="account.authorization['apiKey']"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="API User" prop="authorization.apiUser" v-if="account.type === 'NameCheap'"> <el-form-item label="API User" prop="authorization.apiUser" v-if="account.type === 'NameCheap'">
<el-input v-model.trim="account.authorization['apiUser']"></el-input> <el-input v-model.trim="account.authorization['apiUser']"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="API Secret" prop="authorization.apiSecret" v-if="account.type === 'Godaddy'"> <el-form-item
label="API Secret"
prop="authorization.apiSecret"
v-if="account.type === 'Godaddy' || account.type === 'Spaceship'"
>
<el-input v-model.trim="account.authorization['apiSecret']"></el-input> <el-input v-model.trim="account.authorization['apiSecret']"></el-input>
</el-form-item> </el-form-item>
<div v-if="account.type === 'NameCom'"> <div v-if="account.type === 'NameCom'">
@ -153,6 +158,7 @@ const rules = ref<any>({
apiKey: [Rules.requiredInput], apiKey: [Rules.requiredInput],
apiUser: [Rules.requiredInput], apiUser: [Rules.requiredInput],
secretID: [Rules.requiredInput], secretID: [Rules.requiredInput],
apiSecret: [Rules.requiredInput],
}, },
}); });
const account = ref({ const account = ref({