server

package
v1.0.11 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 28, 2026 License: MIT Imports: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrProtocolTypeRequired  = errors.New("protocol type is required")
	ErrDuplicateProtocolType = errors.New("duplicate protocol type")
	ErrDuplicateProtocolPort = errors.New("duplicate protocol port")
	ErrInvalidProtocolConfig = errors.New("invalid protocol configuration")
)

Functions

func MarshalProtocols

func MarshalProtocols(protocols []*Protocol) (string, error)

MarshalProtocols converts protocol array to JSON string

func ValidateProtocols

func ValidateProtocols(protocols []*Protocol) error

ValidateProtocols validates protocol list

Types

type Protocol

type Protocol struct {
	Type                                   string   `json:"type"`
	Port                                   int32    `json:"port"`
	Enable                                 bool     `json:"enable"`
	Security                               string   `json:"security,omitempty"`
	SNI                                    string   `json:"sni,omitempty"`
	AllowInsecure                          bool     `json:"allow_insecure,omitempty"`
	Fingerprint                            string   `json:"fingerprint,omitempty"`
	RealityServerAddr                      string   `json:"reality_server_addr,omitempty"`
	RealityServerPort                      int32    `json:"reality_server_port,omitempty"`
	RealityPrivateKey                      string   `json:"reality_private_key,omitempty"`
	RealityPublicKey                       string   `json:"reality_public_key,omitempty"`
	RealityShortId                         string   `json:"reality_short_id,omitempty"`
	Transport                              string   `json:"transport,omitempty"`
	Host                                   string   `json:"host,omitempty"`
	Path                                   string   `json:"path,omitempty"`
	ServiceName                            string   `json:"service_name,omitempty"`
	Mc1Mode                                string   `json:"mc1_mode,omitempty"`
	Mc1CidrSegments                        []string `json:"mc1_cidr_segments,omitempty"`
	MundoUsername                          string   `json:"mundo_username,omitempty"`
	MundoCertificateFingerprint            string   `json:"mundo_certificate_fingerprint,omitempty"`
	MundoFakeTitle                         string   `json:"mundo_fake_title,omitempty"`
	MundoFakeMessage                       string   `json:"mundo_fake_message,omitempty"`
	MundoAcceptProxyProtocol               bool     `json:"mundo_accept_proxy_protocol,omitempty"`
	MundoUseTLSCertificate                 bool     `json:"mundo_use_tls_certificate,omitempty"`
	Cipher                                 string   `json:"cipher,omitempty"`
	ServerKey                              string   `json:"server_key,omitempty"`
	Flow                                   string   `json:"flow,omitempty"`
	HopPorts                               string   `json:"hop_ports,omitempty"`
	HopInterval                            int32    `json:"hop_interval,omitempty"`
	ObfsPassword                           string   `json:"obfs_password,omitempty"`
	DisableSNI                             bool     `json:"disable_sni,omitempty"`
	ReduceRtt                              bool     `json:"reduce_rtt,omitempty"`
	UDPRelayMode                           string   `json:"udp_relay_mode,omitempty"`
	CongestionController                   string   `json:"congestion_controller,omitempty"`
	Multiplex                              string   `json:"multiplex,omitempty"`
	PaddingScheme                          string   `json:"padding_scheme,omitempty"`
	UpMbps                                 int32    `json:"up_mbps,omitempty"`
	DownMbps                               int32    `json:"down_mbps,omitempty"`
	Obfs                                   string   `json:"obfs,omitempty"`
	ObfsHost                               string   `json:"obfs_host,omitempty"`
	ObfsPath                               string   `json:"obfs_path,omitempty"`
	XhttpMode                              string   `json:"xhttp_mode,omitempty"`
	XhttpExtra                             string   `json:"xhttp_extra,omitempty"`
	Encryption                             string   `json:"encryption,omitempty"`
	EncryptionMode                         string   `json:"encryption_mode,omitempty"`
	EncryptionRtt                          string   `json:"encryption_rtt,omitempty"`
	EncryptionTicket                       string   `json:"encryption_ticket,omitempty"`
	EncryptionServerPadding                string   `json:"encryption_server_padding,omitempty"`
	EncryptionPrivateKey                   string   `json:"encryption_private_key,omitempty"`
	EncryptionClientPadding                string   `json:"encryption_client_padding,omitempty"`
	EncryptionPassword                     string   `json:"encryption_password,omitempty"`
	Ratio                                  float64  `json:"ratio,omitempty"`
	CertMode                               string   `json:"cert_mode,omitempty"`
	CertDNSProvider                        string   `json:"cert_dns_provider,omitempty"`
	CertDNSEnv                             string   `json:"cert_dns_env,omitempty"`
	SimnetPsk                              string   `json:"simnet_psk,omitempty"`
	SimnetKeyID                            int32    `json:"simnet_key_id,omitempty"`
	SimnetTicketID                         string   `json:"simnet_ticket_id,omitempty"`
	SimnetPath                             string   `json:"simnet_path,omitempty"`
	SimnetCarrier                          string   `json:"simnet_carrier,omitempty"`
	SimnetAfEnabled                        bool     `json:"simnet_af_enabled,omitempty"`
	SimnetAfPathMode                       string   `json:"simnet_af_path_mode,omitempty"`
	SimnetAfPathPrefix                     string   `json:"simnet_af_path_prefix,omitempty"`
	SimnetAfPathSuffix                     string   `json:"simnet_af_path_suffix,omitempty"`
	SimnetAfMagicMode                      string   `json:"simnet_af_magic_mode,omitempty"`
	SimnetAfResponseJitterMs               int32    `json:"simnet_af_response_jitter_ms,omitempty"`
	SimnetAfHandshakePolymorphism          bool     `json:"simnet_af_handshake_polymorphism,omitempty"`
	SimnetAfSettingsJitter                 bool     `json:"simnet_af_settings_jitter,omitempty"`
	SimnetAfFakeHeaderInjection            bool     `json:"simnet_af_fake_header_injection,omitempty"`
	SimnetReverseEnabled                   bool     `json:"simnet_reverse_enabled,omitempty"`
	SimnetReverseListenAddr                string   `json:"simnet_reverse_listen_addr,omitempty"`
	SimnetReverseListenPort                int32    `json:"simnet_reverse_listen_port,omitempty"`
	SimnetReverseTargetHost                string   `json:"simnet_reverse_target_host,omitempty"`
	SimnetReverseTargetPort                int32    `json:"simnet_reverse_target_port,omitempty"`
	SimnetFallbackEnabled                  bool     `json:"simnet_fallback_enabled,omitempty"`
	SimnetFallbackTargetScheme             string   `json:"simnet_fallback_target_scheme,omitempty"`
	SimnetFallbackTargetHost               string   `json:"simnet_fallback_target_host,omitempty"`
	SimnetFallbackTargetPort               int32    `json:"simnet_fallback_target_port,omitempty"`
	SimnetFallbackHostHeader               string   `json:"simnet_fallback_host_header,omitempty"`
	SimnetFallbackTLSSNI                   string   `json:"simnet_fallback_tls_sni,omitempty"`
	SimnetInboundMaxStreamsPerSession      int32    `json:"simnet_inbound_max_streams_per_session,omitempty"`
	SimnetInboundMaxUDPStreamsPerSession   int32    `json:"simnet_inbound_max_udp_streams_per_session,omitempty"`
	SimnetInboundMaxHandlerTasksPerSession int32    `json:"simnet_inbound_max_handler_tasks_per_session,omitempty"`
	SimnetStreamEventChannelCapacity       int32    `json:"simnet_stream_event_channel_capacity,omitempty"`
	SimnetStreamDataChannelCapacity        int32    `json:"simnet_stream_data_channel_capacity,omitempty"`
	SimnetTargetDialTimeoutMs              int32    `json:"simnet_target_dial_timeout_ms,omitempty"`
	SimnetTargetMaxConcurrentDials         int32    `json:"simnet_target_max_concurrent_dials,omitempty"`
	SimnetEgressBlockLoopback              bool     `json:"simnet_egress_block_loopback,omitempty"`
	SimnetEgressBlockPrivate               bool     `json:"simnet_egress_block_private,omitempty"`
	SimnetEgressBlockLinkLocal             bool     `json:"simnet_egress_block_link_local,omitempty"`
	SimnetEgressBlockMetadata              bool     `json:"simnet_egress_block_metadata,omitempty"`
	SimnetSendWindow                       int32    `json:"simnet_send_window,omitempty"`
	SimnetRecvWindow                       int32    `json:"simnet_recv_window,omitempty"`
	SimnetMaxConcurrentStreams             int32    `json:"simnet_max_concurrent_streams,omitempty"`
	SimnetInitialWindowSize                int32    `json:"simnet_initial_window_size,omitempty"`
	SimnetMaxFrameSize                     int32    `json:"simnet_max_frame_size,omitempty"`
	SimnetClientMaxConcurrentStreams       int32    `json:"simnet_client_max_concurrent_streams,omitempty"`
	SimnetClientMaxStreamsPerSession       int32    `json:"simnet_client_max_streams_per_session,omitempty"`
	SimnetClientSessionIdleTimeoutSecs     int32    `json:"simnet_client_session_idle_timeout_secs,omitempty"`
	SimnetClientMaxUDPSessions             int32    `json:"simnet_client_max_udp_sessions,omitempty"`

	// OmniFlow 基础配置
	OmniflowCarrier     string `json:"omniflow_carrier,omitempty"`
	OmniflowPath        string `json:"omniflow_path,omitempty"`
	OmniflowContentType string `json:"omniflow_content_type,omitempty"`
	OmniflowProfilePath string `json:"omniflow_profile_path,omitempty"`
	OmniflowProfileJson string `json:"omniflow_profile_json,omitempty"`
	OmniflowServerHost  string `json:"omniflow_server_host,omitempty"`
	OmniflowServerPort  int32  `json:"omniflow_server_port,omitempty"`
	OmniflowCaCertPath  string `json:"omniflow_ca_cert_path,omitempty"`
	OmniflowTargetMeta  string `json:"omniflow_target_meta,omitempty"`
	OmniflowSpkiPin     string `json:"omniflow_spki_pin,omitempty"`

	// OmniFlow H3 Fallback 策略
	OmniflowH3FallbackEnabled          bool   `json:"omniflow_h3_fallback_enabled,omitempty"`
	OmniflowH3FallbackPolicy           string `json:"omniflow_h3_fallback_policy,omitempty"`
	OmniflowH3FallbackTimeoutMs        int32  `json:"omniflow_h3_fallback_timeout_ms,omitempty"`
	OmniflowH3FallbackRetryBudget      int32  `json:"omniflow_h3_fallback_retry_budget,omitempty"`
	OmniflowH3FallbackSmokeEnabled     bool   `json:"omniflow_h3_fallback_smoke_enabled,omitempty"`
	OmniflowH3FallbackSmokeIntervalSec int32  `json:"omniflow_h3_fallback_smoke_interval_sec,omitempty"`
	OmniflowH3FallbackSmokeTimeoutMs   int32  `json:"omniflow_h3_fallback_smoke_timeout_ms,omitempty"`

	// OmniFlow 连接管理
	OmniflowMaxAgeSec      int32 `json:"omniflow_max_age_sec,omitempty"`
	OmniflowIdleTimeoutSec int32 `json:"omniflow_idle_timeout_sec,omitempty"`
	OmniflowMaxConnections int32 `json:"omniflow_max_connections,omitempty"`

	// OmniFlow 抗指纹
	OmniflowAdaptiveTlsEnabled    bool   `json:"omniflow_adaptive_tls_enabled,omitempty"`
	OmniflowTlsFingerprint        string `json:"omniflow_tls_fingerprint,omitempty"`
	OmniflowSniMode               string `json:"omniflow_sni_mode,omitempty"`
	OmniflowPaddingMode           string `json:"omniflow_padding_mode,omitempty"`
	OmniflowTrafficShapingEnabled bool   `json:"omniflow_traffic_shaping_enabled,omitempty"`
	OmniflowAfEnabled             bool   `json:"omniflow_af_enabled,omitempty"`
	OmniflowAfPathMode            string `json:"omniflow_af_path_mode,omitempty"`
	OmniflowAfPathPrefix          string `json:"omniflow_af_path_prefix,omitempty"`
	OmniflowAfPathSuffix          string `json:"omniflow_af_path_suffix,omitempty"`
	OmniflowAfPathRotationSecs    int32  `json:"omniflow_af_path_rotation_secs,omitempty"`
	OmniflowAfPathSkewSlots       int32  `json:"omniflow_af_path_skew_slots,omitempty"`

	// OmniFlow 同端口浏览器 Fallback 反向代理
	OmniflowFallbackEnabled      bool   `json:"omniflow_fallback_enabled,omitempty"`
	OmniflowFallbackTargetScheme string `json:"omniflow_fallback_target_scheme,omitempty"`
	OmniflowFallbackTargetHost   string `json:"omniflow_fallback_target_host,omitempty"`
	OmniflowFallbackTargetPort   int32  `json:"omniflow_fallback_target_port,omitempty"`
	OmniflowFallbackHostHeader   string `json:"omniflow_fallback_host_header,omitempty"`
	OmniflowFallbackTLSSNI       string `json:"omniflow_fallback_tls_sni,omitempty"`

	// OmniFlow 回退 Carrier
	OmniflowFallbackCarrierEnabled bool `json:"omniflow_fallback_carrier_enabled,omitempty"`
	OmniflowFallbackConnectTunnel  bool `json:"omniflow_fallback_connect_tunnel,omitempty"`
	OmniflowFallbackWssEnabled     bool `json:"omniflow_fallback_wss_enabled,omitempty"`
}

Protocol represents a server protocol configuration - 完全按照原项目定义

func UnmarshalProtocols

func UnmarshalProtocols(protocolsJSON string) ([]*Protocol, error)

UnmarshalProtocols converts JSON string to protocol array

func (*Protocol) NormalizeOmniflow

func (p *Protocol) NormalizeOmniflow()

func (*Protocol) NormalizeSimnet

func (p *Protocol) NormalizeSimnet()

func (*Protocol) UnmarshalJSON added in v1.0.8

func (p *Protocol) UnmarshalJSON(data []byte) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL