Files
sing-box/option/openconnect.go
2026-07-25 22:58:38 +08:00

125 lines
7.9 KiB
Go

package option
import "github.com/sagernet/sing/common/json/badoption"
type OpenConnectEndpointOptions struct {
DialerOptions
System bool `json:"system,omitempty"`
Name string `json:"name,omitempty"`
UDPTimeout badoption.Duration `json:"udp_timeout,omitempty"`
UDPMapping UDPNATBehavior `json:"udp_mapping,omitempty"`
UDPFiltering UDPNATBehavior `json:"udp_filtering,omitempty"`
UDPNATMax uint32 `json:"udp_nat_max,omitempty"`
Server string `json:"server"`
Flavor string `json:"flavor,omitempty" enum:"anyconnect,gp,fortinet,f5,pulse,nc"`
Username string `json:"username,omitempty"`
Password string `json:"password,omitempty"`
AuthGroup string `json:"auth_group,omitempty"`
Cookie string `json:"cookie,omitempty"`
Token *OpenConnectTokenOptions `json:"token,omitempty"`
ReportedOS string `json:"reported_os,omitempty"`
UserAgent string `json:"user_agent,omitempty"`
Version string `json:"version,omitempty"`
LocalHostname string `json:"local_hostname,omitempty"`
Mobile *OpenConnectMobileOptions `json:"mobile,omitempty"`
CSD *OpenConnectCSDOptions `json:"csd,omitempty"`
HIP *OpenConnectHIPOptions `json:"hip,omitempty"`
TNCC *OpenConnectTNCCOptions `json:"tncc,omitempty"`
FortinetHostCheck *OpenConnectFortinetHostCheckOptions `json:"fortinet_host_check,omitempty"`
NoUDP bool `json:"no_udp,omitempty"`
DTLSLocalPort uint16 `json:"dtls_local_port,omitempty"`
CompressionDisabled bool `json:"compression_disabled,omitempty"`
CompressionMode string `json:"compression_mode,omitempty" enum:"stateless,all"`
IPv6Disabled bool `json:"ipv6_disabled,omitempty"`
HTTPKeepAliveDisabled bool `json:"http_keepalive_disabled,omitempty"`
XMLPostDisabled bool `json:"xml_post_disabled,omitempty"`
ExternalAuthDisabled bool `json:"external_auth_disabled,omitempty"`
PasswordAuthenticationDisabled bool `json:"password_authentication_disabled,omitempty"`
TCPKeepAliveEnabled bool `json:"tcp_keep_alive_enabled,omitempty"`
PFS bool `json:"pfs,omitempty"`
MTU uint32 `json:"mtu,omitempty"`
BaseMTU uint32 `json:"base_mtu,omitempty"`
DPDInterval badoption.Duration `json:"dpd_interval,omitempty"`
ReconnectTimeout badoption.Duration `json:"reconnect_timeout,omitempty"`
TrojanInterval badoption.Duration `json:"trojan_interval,omitempty"`
QueueLength uint32 `json:"queue_length,omitempty"`
AllowInsecureCrypto bool `json:"allow_insecure_crypto,omitempty"`
TLS OpenConnectTLSOptions `json:"tls,omitempty"`
FormEntries []OpenConnectFormEntryOptions `json:"form_entries,omitempty"`
}
type OpenConnectTokenOptions struct {
Mode string `json:"mode,omitempty" enum:"totp,hotp,stoken,oidc"`
Secret string `json:"secret,omitempty"`
SecretPath string `json:"secret_path,omitempty"`
PIN string `json:"pin,omitempty"`
Password string `json:"password,omitempty"`
DeviceID string `json:"device_id,omitempty"`
Counter uint64 `json:"counter,omitempty"`
}
type OpenConnectMobileOptions struct {
PlatformVersion string `json:"platform_version"`
DeviceType string `json:"device_type"`
DeviceUniqueID string `json:"device_unique_id"`
}
type OpenConnectCSDOptions struct {
WrapperPath string `json:"wrapper_path,omitempty"`
}
type OpenConnectHIPOptions struct {
WrapperPath string `json:"wrapper_path,omitempty"`
}
type OpenConnectTNCCOptions struct {
WrapperPath string `json:"wrapper_path,omitempty"`
DeviceID string `json:"device_id,omitempty"`
UserAgent string `json:"user_agent,omitempty"`
MachineIdentificationEnabled bool `json:"machine_identification_enabled,omitempty"`
Certificates []OpenConnectTNCCCertificateOptions `json:"certificates,omitempty"`
}
type OpenConnectFortinetHostCheckOptions struct {
HostCheck string `json:"hostcheck,omitempty"`
CheckVirtualDesktop string `json:"check_virtual_desktop,omitempty"`
}
type OpenConnectTNCCCertificateOptions struct {
Certificate badoption.Listable[string] `json:"certificate,omitempty"`
CertificatePath string `json:"certificate_path,omitempty"`
}
type OpenConnectTLSOptions struct {
Insecure bool `json:"insecure,omitempty"`
ServerName string `json:"server_name,omitempty"`
PeerFingerprint badoption.Listable[string] `json:"peer_fingerprint,omitempty"`
SystemTrustDisabled bool `json:"system_trust_disabled,omitempty"`
CertificateAuthority badoption.Listable[string] `json:"certificate_authority,omitempty"`
CertificateAuthorityPath string `json:"certificate_authority_path,omitempty"`
ClientCertificate badoption.Listable[string] `json:"client_certificate,omitempty"`
ClientCertificatePath string `json:"client_certificate_path,omitempty"`
ClientKey badoption.Listable[string] `json:"client_key,omitempty"`
ClientKeyPath string `json:"client_key_path,omitempty"`
ClientKeyPassword string `json:"client_key_password,omitempty"`
MCACertificate badoption.Listable[string] `json:"mca_certificate,omitempty"`
MCACertificatePath string `json:"mca_certificate_path,omitempty"`
MCAKey badoption.Listable[string] `json:"mca_key,omitempty"`
MCAKeyPath string `json:"mca_key_path,omitempty"`
MCAKeyPassword string `json:"mca_key_password,omitempty"`
}
type OpenConnectFormEntryOptions struct {
FormID string `json:"form_id,omitempty"`
SubmissionKey string `json:"submission_key,omitempty"`
Name string `json:"name,omitempty"`
Value string `json:"value,omitempty"`
Promote bool `json:"promote,omitempty"`
}
type OpenConnectDNSServerOptions struct {
Endpoint string `json:"endpoint,omitempty"`
AcceptDefaultResolvers bool `json:"accept_default_resolvers,omitempty"`
AcceptSearchDomain bool `json:"accept_search_domain,omitempty"`
}