mirror of
https://github.com/certimate-go/certimate.git
synced 2026-07-20 21:01:41 +08:00
chore: add documentation links for sdk3rd clients
This commit is contained in:
parent
dcd0ac6916
commit
f0401db3bf
@ -120,7 +120,6 @@ func (d *DNSProvider) Present(ctx context.Context, domain, token, keyAuth string
|
||||
return fmt.Errorf("conohavpsv3: error when list zones: %w", err)
|
||||
}
|
||||
|
||||
// REF: https://doc.conoha.jp/reference/api-vps3/api-dns-vps3/dnsaas-create_record-v3/
|
||||
response, err := d.client.DnsCreateRecordWithContext(ctx, zoneInfo.UUID, &conohavpssdk.DnsCreateRecordRequest{
|
||||
Name: lo.ToPtr(info.EffectiveFQDN),
|
||||
Type: lo.ToPtr("TXT"),
|
||||
@ -187,7 +186,6 @@ func (d *DNSProvider) findZone(ctx context.Context, zoneName string) (*conohavps
|
||||
offset := 0
|
||||
limit := 10
|
||||
for {
|
||||
// REF: https://doc.conoha.jp/reference/api-vps3/api-dns-vps3/dnsaas-get_domains_list-v3/
|
||||
request := &conohavpssdk.DnsGetDomainsListRequest{
|
||||
Offset: lo.ToPtr(offset),
|
||||
Limit: lo.ToPtr(limit),
|
||||
|
||||
@ -102,7 +102,6 @@ func (d *DNSProvider) Present(ctx context.Context, domain, token, keyAuth string
|
||||
return fmt.Errorf("ctyun: %w", err)
|
||||
}
|
||||
|
||||
// REF: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=122&api=11259&data=181&isNormal=1&vid=259
|
||||
request := &ctyundns.AddRecordRequest{
|
||||
Domain: lo.ToPtr(dns01.UnFqdn(authZone)),
|
||||
Host: lo.ToPtr(subDomain),
|
||||
@ -134,7 +133,6 @@ func (d *DNSProvider) CleanUp(ctx context.Context, domain, token, keyAuth string
|
||||
return fmt.Errorf("tencentcloud-eo: unknown record ID for '%s'", info.EffectiveFQDN)
|
||||
}
|
||||
|
||||
// REF: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=122&api=11262&data=181&isNormal=1&vid=259
|
||||
request := &ctyundns.DeleteRecordRequest{
|
||||
RecordId: lo.ToPtr(recordID),
|
||||
}
|
||||
|
||||
@ -109,7 +109,6 @@ func (d *DNSProvider) Present(ctx context.Context, domain, token, keyAuth string
|
||||
return fmt.Errorf("dynv6: error when list zones: %w", err)
|
||||
}
|
||||
|
||||
// REF: https://dynv6.github.io/api-spec/#tag/records/operation/addRecord
|
||||
response, err := d.client.AddRecordWithContext(ctx, zoneInfo.ID, &dynv6sdk.AddRecordRequest{
|
||||
Type: lo.ToPtr("TXT"),
|
||||
Name: lo.ToPtr(subDomain),
|
||||
@ -172,7 +171,6 @@ func (d *DNSProvider) Timeout() (timeout, interval time.Duration) {
|
||||
}
|
||||
|
||||
func (d *DNSProvider) findZone(ctx context.Context, zoneName string) (*dynv6sdk.ZoneRecord, error) {
|
||||
// REF: https://dynv6.github.io/api-spec/#tag/zones/operation/findZones
|
||||
zones, err := d.client.ListZonesWithContext(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
||||
@ -113,7 +113,6 @@ func (d *DNSProvider) Present(ctx context.Context, domain, token, keyAuth string
|
||||
return fmt.Errorf("linode: error when list domains: %w", err)
|
||||
}
|
||||
|
||||
// REF: https://techdocs.akamai.com/linode-api/reference/post-domain-record
|
||||
response, err := d.client.CreateDomainRecordWithContext(ctx, lo.FromPtr(zoneInfo.ID), &linodesdk.CreateDomainRecordRequest{
|
||||
Name: lo.ToPtr(dns01.UnFqdn(info.EffectiveFQDN)),
|
||||
Type: lo.ToPtr("TXT"),
|
||||
@ -194,7 +193,6 @@ func (d *DNSProvider) findZone(ctx context.Context, zoneName string) (*linodesdk
|
||||
page := 1
|
||||
pageSize := 100
|
||||
for {
|
||||
// REF: https://techdocs.akamai.com/linode-api/reference/get-domains
|
||||
request := &linodesdk.ListDomainsRequest{
|
||||
Page: lo.ToPtr(page),
|
||||
PageSize: lo.ToPtr(pageSize),
|
||||
|
||||
@ -98,7 +98,6 @@ func (d *DNSProvider) Present(ctx context.Context, domain, token, keyAuth string
|
||||
return fmt.Errorf("qingcloud: could not find zone for domain %q: %w", domain, err)
|
||||
}
|
||||
|
||||
// REF: https://docsv4.qingcloud.com/user_guide/development_docs/api/api_list/dns/record/#_createrecord
|
||||
request := &qingcloudsdk.CreateRecordRequest{
|
||||
ZoneName: lo.ToPtr(authZone),
|
||||
DomainName: lo.ToPtr(info.EffectiveFQDN),
|
||||
@ -141,7 +140,6 @@ func (d *DNSProvider) CleanUp(ctx context.Context, domain, token, keyAuth string
|
||||
return fmt.Errorf("qingcloud: unknown record ID for '%s'", info.EffectiveFQDN)
|
||||
}
|
||||
|
||||
// REF: https://docsv4.qingcloud.com/user_guide/development_docs/api/api_list/dns/record/#_deleterecord
|
||||
if _, err := d.client.DeleteRecordWithContext(ctx, []*int64{recordID}); err != nil {
|
||||
return fmt.Errorf("qingcloud: error when delete record: %w", err)
|
||||
}
|
||||
|
||||
@ -89,7 +89,7 @@ func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*Uplo
|
||||
Page: lo.ToPtr(listCertificatesPage),
|
||||
PerPage: lo.ToPtr(listCertificatesPerPage),
|
||||
}
|
||||
listCertificatesResp, err := c.sdkClient.ListCertificates(listCertificatesReq)
|
||||
listCertificatesResp, err := c.sdkClient.ListCertificatesWithContext(ctx, listCertificatesReq)
|
||||
c.logger.Debug("sdk request 'ListCertificates'", slog.Any("request", listCertificatesReq), slog.Any("response", listCertificatesResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'ListCertificates': %w", err)
|
||||
|
||||
@ -4,6 +4,7 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
gcore "github.com/G-Core/gcorelabscdn-go/gcore/provider"
|
||||
@ -58,29 +59,56 @@ func (c *Certmgr) SetLogger(logger *slog.Logger) {
|
||||
}
|
||||
|
||||
func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*UploadResult, error) {
|
||||
// 新增证书
|
||||
// REF: https://api.gcore.com/docs/cdn#tag/SSL-certificates/operation/add_ssl_certificates
|
||||
createCertificateReq := &sslcerts.CreateRequest{
|
||||
// Add SSL certificate
|
||||
// REF: https://gcore.com/docs/api-reference/cdn/ssl-certificates/add-ssl-certificate
|
||||
addSSLDataReq := &sslcerts.CreateRequest{
|
||||
Name: fmt.Sprintf("certimate_%d", time.Now().UnixMilli()),
|
||||
Cert: certPEM,
|
||||
PrivateKey: privkeyPEM,
|
||||
Automated: false,
|
||||
ValidateRootCA: false,
|
||||
}
|
||||
createCertificateResp, err := c.sdkClient.Create(ctx, createCertificateReq)
|
||||
c.logger.Debug("sdk request 'sslcerts.Create'", slog.Any("request", createCertificateReq), slog.Any("response", createCertificateResp))
|
||||
addSSLDataResp, err := c.sdkClient.Create(ctx, addSSLDataReq)
|
||||
c.logger.Debug("sdk request 'sslData.Add'", slog.Any("request", addSSLDataReq), slog.Any("response", addSSLDataResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'sslcerts.Create': %w", err)
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'sslData.Add': %w", err)
|
||||
}
|
||||
|
||||
return &UploadResult{
|
||||
CertId: fmt.Sprintf("%d", createCertificateResp.ID),
|
||||
CertName: createCertificateResp.Name,
|
||||
CertId: fmt.Sprintf("%d", addSSLDataResp.ID),
|
||||
CertName: addSSLDataResp.Name,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, privkeyPEM string) (*ReplaceResult, error) {
|
||||
return nil, core.ErrUnsupported
|
||||
sslId, err := strconv.ParseInt(certIdOrName, 10, 64)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Get SSL certificate details
|
||||
// REF: https://gcore.com/docs/api-reference/cdn/ssl-certificates/get-ssl-certificate-details
|
||||
getSSLDataDetailResp, err := c.sdkClient.Get(ctx, sslId)
|
||||
c.logger.Debug("sdk request 'sslData.GetDetail'", slog.Any("params.sslId", sslId), slog.Any("response", getSSLDataDetailResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'sslData.GetDetail': %w", err)
|
||||
}
|
||||
|
||||
// Change SSL certificate
|
||||
// REF: https://gcore.com/docs/api-reference/cdn/ssl-certificates/change-ssl-certificate
|
||||
changeSSLDataReq := &sslcerts.UpdateRequest{
|
||||
Name: getSSLDataDetailResp.Name,
|
||||
Cert: certPEM,
|
||||
PrivateKey: privkeyPEM,
|
||||
ValidateRootCA: false,
|
||||
}
|
||||
changeSSLDataResp, err := c.sdkClient.Update(ctx, sslId, changeSSLDataReq)
|
||||
c.logger.Debug("sdk request 'sslData.Change'", slog.Any("request", changeSSLDataReq), slog.Any("response", changeSSLDataResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'sslData.Change': %w", err)
|
||||
}
|
||||
|
||||
return &ReplaceResult{}, nil
|
||||
}
|
||||
|
||||
func createSDKClient(apiToken string) (*sslcerts.Service, error) {
|
||||
|
||||
@ -68,7 +68,7 @@ func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*Uplo
|
||||
}
|
||||
|
||||
// SSL 证书上传
|
||||
// REF: https://apifox.com/apidoc/shared/a4595cc8-44c5-4678-a2a3-eed7738dab03/api-69943046
|
||||
// REF: https://api.rainyun.com/#/paths/product-sslcenter/post
|
||||
sslCenterCreateReq := &rainyunsdk.SslCenterCreateRequest{
|
||||
Cert: certPEM,
|
||||
Key: privkeyPEM,
|
||||
@ -96,7 +96,7 @@ func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, pri
|
||||
}
|
||||
|
||||
// SSL 证书替换操作
|
||||
// REF: https://s.apifox.cn/a4595cc8-44c5-4678-a2a3-eed7738dab03/api-69943049
|
||||
// REF: https://api.rainyun.com/#/paths/product-sslcenter-:id/put
|
||||
sslCenterUpdateReq := &rainyunsdk.SslCenterUpdateRequest{
|
||||
Cert: certPEM,
|
||||
Key: privkeyPEM,
|
||||
@ -118,8 +118,8 @@ func (c *Certmgr) tryGetResultIfCertExists(ctx context.Context, certPEM string)
|
||||
}
|
||||
|
||||
// 获取 SSL 证书列表
|
||||
// REF: https://apifox.com/apidoc/shared/a4595cc8-44c5-4678-a2a3-eed7738dab03/api-69943046
|
||||
// REF: https://apifox.com/apidoc/shared/a4595cc8-44c5-4678-a2a3-eed7738dab03/api-69943048
|
||||
// REF: https://api.rainyun.com/#/paths/product-sslcenter/get
|
||||
// REF: https://api.rainyun.com/#/paths/product-sslcenter-:id/get
|
||||
sslCenterListPage := 1
|
||||
sslCenterListPerPage := 100
|
||||
for {
|
||||
|
||||
@ -56,7 +56,7 @@ func (d *Deployer) SetLogger(logger *slog.Logger) {
|
||||
|
||||
func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*DeployResult, error) {
|
||||
// 上传证书
|
||||
// REF: https://api.cachefly.com/api/2.5/docs#tag/Certificates/paths/~1certificates/post
|
||||
// REF: https://api.cachefly.com/api/v2/docs/api/#tag/Certificates/operation/post-certificates
|
||||
createCertificateReq := &cacheflysdk.CreateCertificateRequest{
|
||||
Certificate: lo.ToPtr(certPEM),
|
||||
CertificateKey: lo.ToPtr(privkeyPEM),
|
||||
|
||||
@ -97,7 +97,7 @@ func (d *Deployer) deployToCertificate(ctx context.Context, certPEM, privkeyPEM
|
||||
}
|
||||
|
||||
// 修改证书
|
||||
// REF: https://flexcdn.cloud/dev/api/service/SSLCertService?role=user#updateSSLCert
|
||||
// REF: https://flexcdn.cn/developer/api/service/SSLCertService
|
||||
updateSSLCertReq := &flexcdnsdk.UpdateSSLCertRequest{
|
||||
SSLCertId: d.config.CertificateId,
|
||||
IsOn: true,
|
||||
|
||||
@ -10,6 +10,7 @@ import (
|
||||
"github.com/G-Core/gcorelabscdn-go/gcore/provider"
|
||||
"github.com/G-Core/gcorelabscdn-go/resources"
|
||||
"github.com/G-Core/gcorelabscdn-go/sslcerts"
|
||||
"github.com/samber/lo"
|
||||
|
||||
"github.com/certimate-go/certimate/pkg/core"
|
||||
cmgrimpl "github.com/certimate-go/certimate/pkg/core/certmgr/providers/gcore-cdn"
|
||||
@ -98,29 +99,15 @@ func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*Dep
|
||||
|
||||
cloudCertId, _ = strconv.ParseInt(upres.CertId, 10, 64)
|
||||
} else {
|
||||
// 获取证书
|
||||
// REF: https://api.gcore.com/docs/cdn#tag/SSL-certificates/paths/~1cdn~1sslData~1%7Bssl_id%7D/get
|
||||
getCertificateDetailResp, err := d.sdkClients.SSLCerts.Get(ctx, d.config.CertificateId)
|
||||
d.logger.Debug("sdk request 'sslcerts.Get'", slog.Int64("params.sslId", d.config.CertificateId), slog.Any("response", getCertificateDetailResp))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'sslcerts.Get': %w", err)
|
||||
}
|
||||
cloudCertId = d.config.CertificateId
|
||||
|
||||
// 更新证书
|
||||
// REF: https://api.gcore.com/docs/cdn#tag/SSL-certificates/paths/~1cdn~1sslData~1%7Bssl_id%7D/get
|
||||
changeCertificateReq := &sslcerts.UpdateRequest{
|
||||
Name: getCertificateDetailResp.Name,
|
||||
Cert: certPEM,
|
||||
PrivateKey: privkeyPEM,
|
||||
ValidateRootCA: false,
|
||||
}
|
||||
changeCertificateResp, err := d.sdkClients.SSLCerts.Update(ctx, getCertificateDetailResp.ID, changeCertificateReq)
|
||||
d.logger.Debug("sdk request 'sslcerts.Update'", slog.Int64("params.sslId", getCertificateDetailResp.ID), slog.Any("request", changeCertificateReq), slog.Any("response", changeCertificateResp))
|
||||
rplres, err := d.sdkCertmgr.Replace(ctx, strconv.FormatInt(cloudCertId, 10), certPEM, privkeyPEM)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to execute sdk request 'sslcerts.Update': %w", err)
|
||||
return nil, fmt.Errorf("failed to replace certificate file: %w", err)
|
||||
} else {
|
||||
d.logger.Info("ssl certificate replaced", slog.Any("result", rplres))
|
||||
}
|
||||
|
||||
cloudCertId = changeCertificateResp.ID
|
||||
}
|
||||
|
||||
// 获取 CDN 资源详情
|
||||
@ -142,14 +129,10 @@ func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*Dep
|
||||
SSlEnabled: true,
|
||||
SSLData: int(cloudCertId),
|
||||
ProxySSLEnabled: getResourceResp.ProxySSLEnabled,
|
||||
ProxySSLCA: lo.Ternary(getResourceResp.ProxySSLCA != 0, &getResourceResp.ProxySSLCA, nil),
|
||||
ProxySSLData: lo.Ternary(getResourceResp.ProxySSLData != 0, &getResourceResp.ProxySSLData, nil),
|
||||
Options: &gcore.Options{},
|
||||
}
|
||||
if getResourceResp.ProxySSLCA != 0 {
|
||||
updateResourceReq.ProxySSLCA = &getResourceResp.ProxySSLCA
|
||||
}
|
||||
if getResourceResp.ProxySSLData != 0 {
|
||||
updateResourceReq.ProxySSLData = &getResourceResp.ProxySSLData
|
||||
}
|
||||
updateResourceResp, err := d.sdkClients.Resources.Update(ctx, d.config.ResourceId, updateResourceReq)
|
||||
d.logger.Debug("sdk request 'resources.Update'", slog.Int64("params.resourceId", d.config.ResourceId), slog.Any("request", updateResourceReq), slog.Any("response", updateResourceResp))
|
||||
if err != nil {
|
||||
|
||||
@ -89,7 +89,7 @@ func (d *Deployer) Deploy(ctx context.Context, certPEM, privkeyPEM string) (*Dep
|
||||
}
|
||||
|
||||
// RCDN SSL 绑定域名
|
||||
// REF: https://apifox.com/apidoc/shared/a4595cc8-44c5-4678-a2a3-eed7738dab03/api-184214120
|
||||
// REF: https://api.rainyun.com/#/paths/product-rcdn-instance-:id-ssl_bind/post
|
||||
certId, _ := strconv.ParseInt(upres.CertId, 10, 64)
|
||||
rcdnInstanceSslBindReq := &rainyunsdk.RcdnInstanceSslBindRequest{
|
||||
CertId: certId,
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for 1Panel v1.
|
||||
// API documentation: https://1panel.cn/docs/v1/dev_manual/api_manual/
|
||||
package onepanel
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for 1Panel v2.
|
||||
// API documentation: https://1panel.cn/docs/v2/dev_manual/api_manual/
|
||||
package v2
|
||||
|
||||
import (
|
||||
|
||||
@ -1,4 +1,6 @@
|
||||
package oss
|
||||
// A simple SDK client for AliababaCloud OSS.
|
||||
// API documentation: https://www.alibabacloud.com/help/en/oss/developer-reference/list-of-operations-by-function
|
||||
package oss
|
||||
|
||||
import (
|
||||
"crypto/md5"
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for APISIX.
|
||||
// API documentation: https://apisix.apache.org/zh/docs/apisix/admin-api/
|
||||
package apisix
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// An extension SDK client for BaiduCloud SSL service.
|
||||
// Based on github.com/baidubce/bce-sdk-go.
|
||||
package cert
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for BaishanCloud.
|
||||
// API documentation: https://portal.baishancloud.com/track/document/api/1/1249
|
||||
package baishan
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for aaPanel.
|
||||
// API documentation: https://www.aapanel.com/docs/api/api-list.html
|
||||
package btpanel
|
||||
|
||||
import (
|
||||
@ -162,5 +164,6 @@ func generateSignature(timestamp string, apiKey string) string {
|
||||
|
||||
signMd5 := md5.Sum([]byte(timestamp + keyMd5Hex))
|
||||
signMd5Hex := strings.ToLower(hex.EncodeToString(signMd5[:]))
|
||||
|
||||
return signMd5Hex
|
||||
}
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for aaPanel Windows Go version.
|
||||
// API documentation: https://www.aapanel.com/docs/api/api-list.html
|
||||
package btpanelgo
|
||||
|
||||
import (
|
||||
@ -213,5 +215,6 @@ func generateSignature(timestamp string, apiKey string) string {
|
||||
|
||||
signMd5 := md5.Sum([]byte(timestamp + keyMd5Hex))
|
||||
signMd5Hex := strings.ToLower(hex.EncodeToString(signMd5[:]))
|
||||
|
||||
return signMd5Hex
|
||||
}
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for aaWAF.
|
||||
// API documentation: https://github.com/aaPanel/aaWAF/blob/main/API.md
|
||||
package btwaf
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for Bunny.
|
||||
// API documentation: https://docs.bunny.net/api-reference
|
||||
package bunny
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for CacheFly.
|
||||
// API documentation: https://api.cachefly.com/api/v2/docs/api/
|
||||
package cachefly
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for Cdnfly.
|
||||
// API documentation: http://doc.cdnfly.com/shiyongjieshao.html
|
||||
package cdnfly
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for Cloudflare.
|
||||
// API documentation: https://developers.cloudflare.com/api/
|
||||
package cloudflare
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for ConoHa VPS v3.
|
||||
// API documentation: https://doc.conoha.jp/reference/api-vps3/
|
||||
package v3
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for cPanel.
|
||||
// API documentation: https://api.docs.cpanel.net/
|
||||
package cpanel
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for StateCloud AccessOne.
|
||||
// API documentation: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=113&vid=167
|
||||
package ao
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for StateCloud CDN.
|
||||
// API documentation: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=108&vid=154
|
||||
package cdn
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for StateCloud CMS.
|
||||
// API documentation: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=152&vid=283
|
||||
package cms
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for StateCloud DNS.
|
||||
// API documentation: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=122&vid=259
|
||||
package dns
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for StateCloud ELB.
|
||||
// API documentation: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=24&vid=82
|
||||
package elb
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for StateCloud FaaS.
|
||||
// API documentation: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=53&vid=40
|
||||
package faas
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for StateCloud ICDN.
|
||||
// API documentation: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=112&vid=166
|
||||
package icdn
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for StateCloud LVDN.
|
||||
// API documentation: https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=125&vid=261
|
||||
package lvdn
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
// A mock HTTP client for uniCloud.
|
||||
package unicloud
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for DigitalOcean.
|
||||
// API documentation: https://docs.digitalocean.com/reference/api/
|
||||
package digitalocean
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for DogeCloud.
|
||||
// API documentation: https://docs.dogecloud.com/
|
||||
package dogecloud
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for Dokploy.
|
||||
// API documentation: https://docs.dokploy.com/docs/api
|
||||
package dokploy
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for Dynv6.
|
||||
// API documentation: https://dynv6.com/docs/apis
|
||||
package dynv6
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for FlexCDN.
|
||||
// API documentation: https://flexcdn.cn/docs/api/list
|
||||
package flexcdn
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for Fly.io.
|
||||
// API documentation: https://fly.io/docs/machines/api/
|
||||
package flyio
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for GoEdge.
|
||||
// API documentation: https://goedge.cloud/docs/API/List.md
|
||||
package goedge
|
||||
|
||||
import (
|
||||
|
||||
@ -1,4 +1,6 @@
|
||||
package obs
|
||||
// A simple SDK client for HuaweiCloud OBS.
|
||||
// API documentation: https://support.huaweicloud.com/api-obs/obs_04_0005.html
|
||||
package obs
|
||||
|
||||
import (
|
||||
"crypto/md5"
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for Kong.
|
||||
// API documentation: https://developer.konghq.com/api/
|
||||
package kong
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
// A simple SDK client for LeCDN v3 as user.
|
||||
package client
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
// A simple SDK client for LeCDN v3 as admin.
|
||||
package master
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for Linode.
|
||||
// API documentation: https://techdocs.akamai.com/linode-api/reference/api
|
||||
package linode
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
// A simple SDK client for MohuaTech.
|
||||
package mohua
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for Netlify.
|
||||
// API documentation: https://open-api.netlify.com/
|
||||
package netlify
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for NginxProxyManager.
|
||||
// API documentation: https://github.com/NginxProxyManager/nginx-proxy-manager/discussions/3265
|
||||
package nginxproxymanager
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for Proxmox VE.
|
||||
// API documentation: https://pve.proxmox.com/pve-docs/api-viewer/index.html
|
||||
package proxmoxve
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for QingCloud DNS.
|
||||
// API documentation: https://docsv4.qingcloud.com/user_guide/development_docs/api/api_list/dns/api_intro/
|
||||
package dns
|
||||
|
||||
import (
|
||||
|
||||
@ -1,4 +1,6 @@
|
||||
package lb
|
||||
// An extension SDK client for QingCloud LB service.
|
||||
// Based on github.com/yunify/qingcloud-sdk-go.
|
||||
package lb
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
3
pkg/sdk3rd/qiniu/doc.go
Normal file
3
pkg/sdk3rd/qiniu/doc.go
Normal file
@ -0,0 +1,3 @@
|
||||
// An extension SDK client for Qiniu.
|
||||
// Based on github.com/qiniu/go-sdk.
|
||||
package qiniu
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for Rainyun.
|
||||
// API documentation: https://api.rainyun.com/
|
||||
package rainyun
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for AcePanel.
|
||||
// API documentation: https://acepanel.net/en/advanced/api
|
||||
package ratpanel
|
||||
|
||||
import (
|
||||
|
||||
@ -20,6 +20,7 @@ type signer struct {
|
||||
func (s *signer) Sign(req *http.Request) error {
|
||||
// API 签名机制:
|
||||
// https://ratpanel.github.io/advanced/api#authentication-mechanism
|
||||
// https://acepanel.net/en/advanced/api
|
||||
|
||||
payloadStr := ""
|
||||
if req.Body != nil {
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for SafeLine.
|
||||
// API documentation: https://help.waf-ce.chaitin.cn/node/01973fc6-e25e-7eda-8ea8-dae97bdd4213
|
||||
package safeline
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for SamWAF.
|
||||
// API documentation: https://doc.samwaf.com/api/
|
||||
package samwaf
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
// A mock HTTP client for Synology DSM.
|
||||
package synologydsm
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// An extension SDK client for UCloud CDN service.
|
||||
// Based on github.com/ucloud/ucloud-sdk-go.
|
||||
package ucdn
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// An extension SDK client for UCloud WAF service.
|
||||
// Based on github.com/ucloud/ucloud-sdk-go.
|
||||
package uewaf
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// An extension SDK client for UCloud OS service.
|
||||
// Based on github.com/ucloud/ucloud-sdk-go.
|
||||
package ufile
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// An extension SDK client for UCloud LB service.
|
||||
// Based on github.com/ucloud/ucloud-sdk-go.
|
||||
package ulb
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// An extension SDK client for UCloud PathX service.
|
||||
// Based on github.com/ucloud/ucloud-sdk-go.
|
||||
package upathx
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// An extension SDK client for UCloud SSL service.
|
||||
// Based on github.com/ucloud/ucloud-sdk-go.
|
||||
package ussl
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
// A mock HTTP client for Upyun Console.
|
||||
package console
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for Vercel.
|
||||
// API documentation: https://vercel.com/docs/rest-api
|
||||
package vercel
|
||||
|
||||
import (
|
||||
|
||||
@ -1,4 +1,6 @@
|
||||
package tos
|
||||
// A simple SDK client for VolcEngine TOS.
|
||||
// API documentation: https://www.volcengine.com/docs/6349/74837
|
||||
package tos
|
||||
|
||||
import (
|
||||
"crypto/md5"
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for WangsuCloud CDN.
|
||||
// API documentation: https://www.wangsu.com/document/api-doc/product
|
||||
package cdn
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for WangsuCloud CDN.
|
||||
// API documentation: https://www.wangsu.com/document/api-doc/product
|
||||
package cdnpro
|
||||
|
||||
import (
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
// A simple SDK client for WangsuCloud CDN.
|
||||
// API documentation: https://www.wangsu.com/document/api-doc/product
|
||||
package certificate
|
||||
|
||||
import (
|
||||
|
||||
@ -1,4 +1,6 @@
|
||||
package cdn
|
||||
// An extension SDK client for ZenlayerCloud CDN service.
|
||||
// Based on github.com/zenlayer/zenlayercloud-sdk-go.
|
||||
package cdn
|
||||
|
||||
import (
|
||||
"github.com/zenlayer/zenlayercloud-sdk-go/zenlayercloud/common"
|
||||
|
||||
@ -1,4 +1,6 @@
|
||||
package zga
|
||||
// An extension SDK client for ZenlayerCloud CDN service.
|
||||
// Based on github.com/zenlayer/zenlayercloud-sdk-go.
|
||||
package zga
|
||||
|
||||
import (
|
||||
"github.com/zenlayer/zenlayercloud-sdk-go/zenlayercloud/common"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user