Reapply SingboxForPanel integration on upstream stable
This commit is contained in:
@@ -28,29 +28,38 @@ type ACMEExternalAccountOptions struct {
|
||||
}
|
||||
|
||||
type _ACMEDNS01ChallengeOptions struct {
|
||||
Provider string `json:"provider,omitempty"`
|
||||
AliDNSOptions ACMEDNS01AliDNSOptions `json:"-"`
|
||||
CloudflareOptions ACMEDNS01CloudflareOptions `json:"-"`
|
||||
ACMEDNSOptions ACMEDNS01ACMEDNSOptions `json:"-"`
|
||||
Provider string `json:"provider,omitempty"`
|
||||
AliDNSOptions ACMEDNS01AliDNSOptions `json:"-"`
|
||||
CloudflareOptions ACMEDNS01CloudflareOptions `json:"-"`
|
||||
ACMEDNSOptions ACMEDNS01ACMEDNSOptions `json:"-"`
|
||||
TencentCloudOptions ACMEDNS01TencentCloudOptions `json:"-"`
|
||||
DNSPodOptions ACMEDNS01DNSPodOptions `json:"-"`
|
||||
}
|
||||
|
||||
type ACMEDNS01ChallengeOptions _ACMEDNS01ChallengeOptions
|
||||
|
||||
func (o ACMEDNS01ChallengeOptions) MarshalJSON() ([]byte, error) {
|
||||
provider := C.NormalizeACMEDNSProvider(o.Provider)
|
||||
var v any
|
||||
switch o.Provider {
|
||||
switch provider {
|
||||
case C.DNSProviderAliDNS:
|
||||
v = o.AliDNSOptions
|
||||
case C.DNSProviderCloudflare:
|
||||
v = o.CloudflareOptions
|
||||
case C.DNSProviderACMEDNS:
|
||||
v = o.ACMEDNSOptions
|
||||
case C.DNSProviderTencentCloud:
|
||||
v = o.TencentCloudOptions
|
||||
case C.DNSProviderDNSPod:
|
||||
v = o.DNSPodOptions
|
||||
case "":
|
||||
return nil, E.New("missing provider type")
|
||||
default:
|
||||
return nil, E.New("unknown provider type: " + o.Provider)
|
||||
}
|
||||
return badjson.MarshallObjects((_ACMEDNS01ChallengeOptions)(o), v)
|
||||
copyValue := (_ACMEDNS01ChallengeOptions)(o)
|
||||
copyValue.Provider = provider
|
||||
return badjson.MarshallObjects(copyValue, v)
|
||||
}
|
||||
|
||||
func (o *ACMEDNS01ChallengeOptions) UnmarshalJSON(bytes []byte) error {
|
||||
@@ -58,6 +67,7 @@ func (o *ACMEDNS01ChallengeOptions) UnmarshalJSON(bytes []byte) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
o.Provider = C.NormalizeACMEDNSProvider(o.Provider)
|
||||
var v any
|
||||
switch o.Provider {
|
||||
case C.DNSProviderAliDNS:
|
||||
@@ -66,6 +76,10 @@ func (o *ACMEDNS01ChallengeOptions) UnmarshalJSON(bytes []byte) error {
|
||||
v = &o.CloudflareOptions
|
||||
case C.DNSProviderACMEDNS:
|
||||
v = &o.ACMEDNSOptions
|
||||
case C.DNSProviderTencentCloud:
|
||||
v = &o.TencentCloudOptions
|
||||
case C.DNSProviderDNSPod:
|
||||
v = &o.DNSPodOptions
|
||||
default:
|
||||
return E.New("unknown provider type: " + o.Provider)
|
||||
}
|
||||
@@ -94,3 +108,14 @@ type ACMEDNS01ACMEDNSOptions struct {
|
||||
Subdomain string `json:"subdomain,omitempty"`
|
||||
ServerURL string `json:"server_url,omitempty"`
|
||||
}
|
||||
|
||||
type ACMEDNS01TencentCloudOptions struct {
|
||||
SecretID string `json:"secret_id,omitempty"`
|
||||
SecretKey string `json:"secret_key,omitempty"`
|
||||
SessionToken string `json:"session_token,omitempty"`
|
||||
Region string `json:"region,omitempty"`
|
||||
}
|
||||
|
||||
type ACMEDNS01DNSPodOptions struct {
|
||||
APIToken string `json:"api_token,omitempty"`
|
||||
}
|
||||
|
||||
33
option/xboard.go
Normal file
33
option/xboard.go
Normal file
@@ -0,0 +1,33 @@
|
||||
package option
|
||||
|
||||
import (
|
||||
"github.com/sagernet/sing/common/json/badoption"
|
||||
)
|
||||
|
||||
type XBoardServiceOptions struct {
|
||||
PanelURL string `json:"panel_url"`
|
||||
ConfigPanelURL string `json:"config_panel_url,omitempty"`
|
||||
UserPanelURL string `json:"user_panel_url,omitempty"`
|
||||
Key string `json:"key"`
|
||||
NodeID int `json:"node_id"`
|
||||
ConfigNodeID int `json:"config_node_id,omitempty"`
|
||||
UserNodeID int `json:"user_node_id,omitempty"`
|
||||
NodeType string `json:"node_type,omitempty"`
|
||||
SyncInterval badoption.Duration `json:"sync_interval,omitempty"`
|
||||
ReportInterval badoption.Duration `json:"report_interval,omitempty"`
|
||||
Nodes []XBoardNodeOptions `json:"nodes,omitempty"`
|
||||
}
|
||||
|
||||
type XBoardNodeOptions struct {
|
||||
Tag string `json:"tag,omitempty"`
|
||||
PanelURL string `json:"panel_url,omitempty"`
|
||||
ConfigPanelURL string `json:"config_panel_url,omitempty"`
|
||||
UserPanelURL string `json:"user_panel_url,omitempty"`
|
||||
Key string `json:"key,omitempty"`
|
||||
NodeID int `json:"node_id,omitempty"`
|
||||
ConfigNodeID int `json:"config_node_id,omitempty"`
|
||||
UserNodeID int `json:"user_node_id,omitempty"`
|
||||
NodeType string `json:"node_type,omitempty"`
|
||||
SyncInterval badoption.Duration `json:"sync_interval,omitempty"`
|
||||
ReportInterval badoption.Duration `json:"report_interval,omitempty"`
|
||||
}
|
||||
Reference in New Issue
Block a user