Documentation ¶
Index ¶
- func OnUpdate(f func(c *Config) error) error
- func Set(c *Config)
- type APIConfig
- type AdmissionConfig
- type AuthConfig
- type AutherConfig
- type BypassConfig
- type ChainConfig
- type ChainGroupConfig
- type Config
- type ConnectorConfig
- type DialerConfig
- type FileLoader
- type FileRecorder
- type ForwardNodeConfig
- type ForwarderConfig
- type HTTPBodyRewriteConfig
- type HTTPLoader
- type HTTPNodeConfig
- type HTTPRecorder
- type HTTPURLRewriteConfig
- type HandlerConfig
- type HopConfig
- type HostMappingConfig
- type HostsConfig
- type IngressConfig
- type IngressRuleConfig
- type LimiterConfig
- type ListenerConfig
- type LogConfig
- type LogRotationConfig
- type LoggerConfig
- type MetricsConfig
- type NameserverConfig
- type NodeConfig
- type NodeFilterConfig
- type ObserverConfig
- type PluginConfig
- type ProfilingConfig
- type RecorderConfig
- type RecorderObject
- type RedisLoader
- type RedisRecorder
- type ResolverConfig
- type RouterConfig
- type RouterRouteConfig
- type SDConfig
- type SelectorConfig
- type ServiceConfig
- type ServiceEvent
- type ServiceStats
- type ServiceStatus
- type SockOptsConfig
- type TCPRecorder
- type TLSConfig
- type TLSNodeConfig
- type TLSOptions
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type APIConfig ¶
type APIConfig struct { Addr string `json:"addr"` PathPrefix string `yaml:"pathPrefix,omitempty" json:"pathPrefix,omitempty"` AccessLog bool `yaml:"accesslog,omitempty" json:"accesslog,omitempty"` Auth *AuthConfig `yaml:",omitempty" json:"auth,omitempty"` Auther string `yaml:",omitempty" json:"auther,omitempty"` }
type AdmissionConfig ¶
type AdmissionConfig struct { Name string `json:"name"` // DEPRECATED by whitelist since beta.4 Reverse bool `yaml:",omitempty" json:"reverse,omitempty"` Whitelist bool `yaml:",omitempty" json:"whitelist,omitempty"` Matchers []string `yaml:",omitempty" json:"matchers,omitempty"` Reload time.Duration `yaml:",omitempty" json:"reload,omitempty"` File *FileLoader `yaml:",omitempty" json:"file,omitempty"` Redis *RedisLoader `yaml:",omitempty" json:"redis,omitempty"` HTTP *HTTPLoader `yaml:"http,omitempty" json:"http,omitempty"` Plugin *PluginConfig `yaml:",omitempty" json:"plugin,omitempty"` }
type AuthConfig ¶
type AutherConfig ¶
type AutherConfig struct { Name string `json:"name"` Auths []*AuthConfig `yaml:",omitempty" json:"auths,omitempty"` Reload time.Duration `yaml:",omitempty" json:"reload,omitempty"` File *FileLoader `yaml:",omitempty" json:"file,omitempty"` Redis *RedisLoader `yaml:",omitempty" json:"redis,omitempty"` HTTP *HTTPLoader `yaml:"http,omitempty" json:"http,omitempty"` Plugin *PluginConfig `yaml:",omitempty" json:"plugin,omitempty"` }
type BypassConfig ¶
type BypassConfig struct { Name string `json:"name"` // DEPRECATED by whitelist since beta.4 Reverse bool `yaml:",omitempty" json:"reverse,omitempty"` Whitelist bool `yaml:",omitempty" json:"whitelist,omitempty"` Matchers []string `yaml:",omitempty" json:"matchers,omitempty"` Reload time.Duration `yaml:",omitempty" json:"reload,omitempty"` File *FileLoader `yaml:",omitempty" json:"file,omitempty"` Redis *RedisLoader `yaml:",omitempty" json:"redis,omitempty"` HTTP *HTTPLoader `yaml:"http,omitempty" json:"http,omitempty"` Plugin *PluginConfig `yaml:",omitempty" json:"plugin,omitempty"` }
type ChainConfig ¶
type ChainGroupConfig ¶
type ChainGroupConfig struct { Chains []string `yaml:",omitempty" json:"chains,omitempty"` Selector *SelectorConfig `yaml:",omitempty" json:"selector,omitempty"` }
type Config ¶
type Config struct { Services []*ServiceConfig `json:"services"` Chains []*ChainConfig `yaml:",omitempty" json:"chains,omitempty"` Hops []*HopConfig `yaml:",omitempty" json:"hops,omitempty"` Authers []*AutherConfig `yaml:",omitempty" json:"authers,omitempty"` Admissions []*AdmissionConfig `yaml:",omitempty" json:"admissions,omitempty"` Bypasses []*BypassConfig `yaml:",omitempty" json:"bypasses,omitempty"` Resolvers []*ResolverConfig `yaml:",omitempty" json:"resolvers,omitempty"` Hosts []*HostsConfig `yaml:",omitempty" json:"hosts,omitempty"` Ingresses []*IngressConfig `yaml:",omitempty" json:"ingresses,omitempty"` Routers []*RouterConfig `yaml:",omitempty" json:"routers,omitempty"` SDs []*SDConfig `yaml:"sds,omitempty" json:"sds,omitempty"` Recorders []*RecorderConfig `yaml:",omitempty" json:"recorders,omitempty"` Limiters []*LimiterConfig `yaml:",omitempty" json:"limiters,omitempty"` CLimiters []*LimiterConfig `yaml:"climiters,omitempty" json:"climiters,omitempty"` RLimiters []*LimiterConfig `yaml:"rlimiters,omitempty" json:"rlimiters,omitempty"` Observers []*ObserverConfig `yaml:",omitempty" json:"observers,omitempty"` Loggers []*LoggerConfig `yaml:",omitempty" json:"loggers,omitempty"` TLS *TLSConfig `yaml:",omitempty" json:"tls,omitempty"` Log *LogConfig `yaml:",omitempty" json:"log,omitempty"` Profiling *ProfilingConfig `yaml:",omitempty" json:"profiling,omitempty"` API *APIConfig `yaml:",omitempty" json:"api,omitempty"` Metrics *MetricsConfig `yaml:",omitempty" json:"metrics,omitempty"` }
type ConnectorConfig ¶
type ConnectorConfig struct { Type string `json:"type"` Auth *AuthConfig `yaml:",omitempty" json:"auth,omitempty"` TLS *TLSConfig `yaml:",omitempty" json:"tls,omitempty"` Metadata map[string]any `yaml:",omitempty" json:"metadata,omitempty"` }
type DialerConfig ¶
type DialerConfig struct { Type string `json:"type"` Auth *AuthConfig `yaml:",omitempty" json:"auth,omitempty"` TLS *TLSConfig `yaml:",omitempty" json:"tls,omitempty"` Metadata map[string]any `yaml:",omitempty" json:"metadata,omitempty"` }
type FileLoader ¶
type FileLoader struct {
Path string `json:"path"`
}
type FileRecorder ¶
type ForwardNodeConfig ¶
type ForwardNodeConfig struct { Name string `yaml:",omitempty" json:"name,omitempty"` Addr string `yaml:",omitempty" json:"addr,omitempty"` Network string `yaml:",omitempty" json:"network,omitempty"` Bypass string `yaml:",omitempty" json:"bypass,omitempty"` Bypasses []string `yaml:",omitempty" json:"bypasses,omitempty"` // DEPRECATED by filter.protocol Protocol string `yaml:",omitempty" json:"protocol,omitempty"` // DEPRECATED by filter.host Host string `yaml:",omitempty" json:"host,omitempty"` // DEPRECATED by filter.path Path string `yaml:",omitempty" json:"path,omitempty"` // DEPRECATED by http.auth Auth *AuthConfig `yaml:",omitempty" json:"auth,omitempty"` Filter *NodeFilterConfig `yaml:",omitempty" json:"filter,omitempty"` HTTP *HTTPNodeConfig `yaml:",omitempty" json:"http,omitempty"` TLS *TLSNodeConfig `yaml:",omitempty" json:"tls,omitempty"` Metadata map[string]any `yaml:",omitempty" json:"metadata,omitempty"` }
type ForwarderConfig ¶
type ForwarderConfig struct { // DEPRECATED by hop field Name string `yaml:",omitempty" json:"name,omitempty"` // the referenced hop name Hop string `yaml:",omitempty" json:"hop,omitempty"` Selector *SelectorConfig `yaml:",omitempty" json:"selector,omitempty"` Nodes []*ForwardNodeConfig `json:"nodes"` }
type HTTPBodyRewriteConfig ¶ added in v0.1.4
type HTTPLoader ¶
type HTTPNodeConfig ¶
type HTTPNodeConfig struct { // rewrite host header Host string `yaml:",omitempty" json:"host,omitempty"` // additional request header Header map[string]string `yaml:",omitempty" json:"header,omitempty"` // additional response header ResponseHeader map[string]string `yaml:",omitempty" json:"responseHeader,omitempty"` // rewrite URL Rewrite []HTTPURLRewriteConfig `yaml:",omitempty" json:"rewrite,omitempty"` // rewrite response body RewriteBody []HTTPBodyRewriteConfig `yaml:"rewriteBody,omitempty" json:"rewriteBody,omitempty"` // HTTP basic auth Auth *AuthConfig `yaml:",omitempty" json:"auth,omitempty"` }
type HTTPRecorder ¶
type HTTPURLRewriteConfig ¶
type HandlerConfig ¶
type HandlerConfig struct { Type string `json:"type"` Retries int `yaml:",omitempty" json:"retries,omitempty"` Chain string `yaml:",omitempty" json:"chain,omitempty"` ChainGroup *ChainGroupConfig `yaml:"chainGroup,omitempty" json:"chainGroup,omitempty"` Auther string `yaml:",omitempty" json:"auther,omitempty"` Authers []string `yaml:",omitempty" json:"authers,omitempty"` Auth *AuthConfig `yaml:",omitempty" json:"auth,omitempty"` TLS *TLSConfig `yaml:",omitempty" json:"tls,omitempty"` Limiter string `yaml:",omitempty" json:"limiter,omitempty"` Observer string `yaml:",omitempty" json:"observer,omitempty"` Metadata map[string]any `yaml:",omitempty" json:"metadata,omitempty"` }
type HopConfig ¶
type HopConfig struct { Name string `json:"name"` Interface string `yaml:",omitempty" json:"interface,omitempty"` SockOpts *SockOptsConfig `yaml:"sockopts,omitempty" json:"sockopts,omitempty"` Selector *SelectorConfig `yaml:",omitempty" json:"selector,omitempty"` Bypass string `yaml:",omitempty" json:"bypass,omitempty"` Bypasses []string `yaml:",omitempty" json:"bypasses,omitempty"` Resolver string `yaml:",omitempty" json:"resolver,omitempty"` Hosts string `yaml:",omitempty" json:"hosts,omitempty"` Nodes []*NodeConfig `yaml:",omitempty" json:"nodes,omitempty"` Reload time.Duration `yaml:",omitempty" json:"reload,omitempty"` File *FileLoader `yaml:",omitempty" json:"file,omitempty"` Redis *RedisLoader `yaml:",omitempty" json:"redis,omitempty"` HTTP *HTTPLoader `yaml:"http,omitempty" json:"http,omitempty"` Plugin *PluginConfig `yaml:",omitempty" json:"plugin,omitempty"` Metadata map[string]any `yaml:",omitempty" json:"metadata,omitempty"` }
type HostMappingConfig ¶
type HostsConfig ¶
type HostsConfig struct { Name string `json:"name"` Mappings []*HostMappingConfig `yaml:",omitempty" json:"mappings,omitempty"` Reload time.Duration `yaml:",omitempty" json:"reload,omitempty"` File *FileLoader `yaml:",omitempty" json:"file,omitempty"` Redis *RedisLoader `yaml:",omitempty" json:"redis,omitempty"` HTTP *HTTPLoader `yaml:"http,omitempty" json:"http,omitempty"` Plugin *PluginConfig `yaml:",omitempty" json:"plugin,omitempty"` }
type IngressConfig ¶
type IngressConfig struct { Name string `json:"name"` Rules []*IngressRuleConfig `yaml:",omitempty" json:"rules,omitempty"` Reload time.Duration `yaml:",omitempty" json:"reload,omitempty"` File *FileLoader `yaml:",omitempty" json:"file,omitempty"` Redis *RedisLoader `yaml:",omitempty" json:"redis,omitempty"` HTTP *HTTPLoader `yaml:"http,omitempty" json:"http,omitempty"` Plugin *PluginConfig `yaml:",omitempty" json:"plugin,omitempty"` }
type IngressRuleConfig ¶
type LimiterConfig ¶
type LimiterConfig struct { Name string `json:"name"` Limits []string `yaml:",omitempty" json:"limits,omitempty"` Reload time.Duration `yaml:",omitempty" json:"reload,omitempty"` File *FileLoader `yaml:",omitempty" json:"file,omitempty"` Redis *RedisLoader `yaml:",omitempty" json:"redis,omitempty"` HTTP *HTTPLoader `yaml:"http,omitempty" json:"http,omitempty"` Plugin *PluginConfig `yaml:",omitempty" json:"plugin,omitempty"` }
type ListenerConfig ¶
type ListenerConfig struct { Type string `json:"type"` Chain string `yaml:",omitempty" json:"chain,omitempty"` ChainGroup *ChainGroupConfig `yaml:"chainGroup,omitempty" json:"chainGroup,omitempty"` Auther string `yaml:",omitempty" json:"auther,omitempty"` Authers []string `yaml:",omitempty" json:"authers,omitempty"` Auth *AuthConfig `yaml:",omitempty" json:"auth,omitempty"` TLS *TLSConfig `yaml:",omitempty" json:"tls,omitempty"` Metadata map[string]any `yaml:",omitempty" json:"metadata,omitempty"` }
type LogConfig ¶
type LogConfig struct { Output string `yaml:",omitempty" json:"output,omitempty"` Level string `yaml:",omitempty" json:"level,omitempty"` Format string `yaml:",omitempty" json:"format,omitempty"` Rotation *LogRotationConfig `yaml:",omitempty" json:"rotation,omitempty"` }
type LogRotationConfig ¶
type LogRotationConfig struct { // MaxSize is the maximum size in megabytes of the log file before it gets // rotated. It defaults to 100 megabytes. MaxSize int `yaml:"maxSize,omitempty" json:"maxSize,omitempty"` // MaxAge is the maximum number of days to retain old log files based on the // timestamp encoded in their filename. Note that a day is defined as 24 // hours and may not exactly correspond to calendar days due to daylight // savings, leap seconds, etc. The default is not to remove old log files // based on age. MaxAge int `yaml:"maxAge,omitempty" json:"maxAge,omitempty"` // MaxBackups is the maximum number of old log files to retain. The default // is to retain all old log files (though MaxAge may still cause them to get // deleted.) MaxBackups int `yaml:"maxBackups,omitempty" json:"maxBackups,omitempty"` // LocalTime determines if the time used for formatting the timestamps in // backup files is the computer's local time. The default is to use UTC // time. LocalTime bool `yaml:"localTime,omitempty" json:"localTime,omitempty"` // Compress determines if the rotated log files should be compressed // using gzip. The default is not to perform compression. Compress bool `yaml:"compress,omitempty" json:"compress,omitempty"` }
type LoggerConfig ¶
type MetricsConfig ¶
type MetricsConfig struct { Addr string `json:"addr"` Path string `yaml:",omitempty" json:"path,omitempty"` Auth *AuthConfig `yaml:",omitempty" json:"auth,omitempty"` Auther string `yaml:",omitempty" json:"auther,omitempty"` }
type NameserverConfig ¶
type NameserverConfig struct { Addr string `json:"addr"` Chain string `yaml:",omitempty" json:"chain,omitempty"` Prefer string `yaml:",omitempty" json:"prefer,omitempty"` ClientIP string `yaml:"clientIP,omitempty" json:"clientIP,omitempty"` Hostname string `yaml:",omitempty" json:"hostname,omitempty"` TTL time.Duration `yaml:",omitempty" json:"ttl,omitempty"` Timeout time.Duration `yaml:",omitempty" json:"timeout,omitempty"` Async bool `yaml:",omitempty" json:"async,omitempty"` Only string `yaml:",omitempty" json:"only,omitempty"` }
type NodeConfig ¶
type NodeConfig struct { Name string `json:"name"` Addr string `yaml:",omitempty" json:"addr,omitempty"` Network string `yaml:",omitempty" json:"network,omitempty"` Bypass string `yaml:",omitempty" json:"bypass,omitempty"` Bypasses []string `yaml:",omitempty" json:"bypasses,omitempty"` Resolver string `yaml:",omitempty" json:"resolver,omitempty"` Hosts string `yaml:",omitempty" json:"hosts,omitempty"` Connector *ConnectorConfig `yaml:",omitempty" json:"connector,omitempty"` Dialer *DialerConfig `yaml:",omitempty" json:"dialer,omitempty"` Interface string `yaml:",omitempty" json:"interface,omitempty"` Netns string `yaml:",omitempty" json:"netns,omitempty"` SockOpts *SockOptsConfig `yaml:"sockopts,omitempty" json:"sockopts,omitempty"` Filter *NodeFilterConfig `yaml:",omitempty" json:"filter,omitempty"` HTTP *HTTPNodeConfig `yaml:",omitempty" json:"http,omitempty"` TLS *TLSNodeConfig `yaml:",omitempty" json:"tls,omitempty"` Metadata map[string]any `yaml:",omitempty" json:"metadata,omitempty"` }
type NodeFilterConfig ¶
type ObserverConfig ¶
type ObserverConfig struct { Name string `json:"name"` Plugin *PluginConfig `yaml:",omitempty" json:"plugin,omitempty"` }
type PluginConfig ¶
type ProfilingConfig ¶
type ProfilingConfig struct {
Addr string `json:"addr"`
}
type RecorderConfig ¶
type RecorderConfig struct { Name string `json:"name"` File *FileRecorder `yaml:",omitempty" json:"file,omitempty"` TCP *TCPRecorder `yaml:"tcp,omitempty" json:"tcp,omitempty"` HTTP *HTTPRecorder `yaml:"http,omitempty" json:"http,omitempty"` Redis *RedisRecorder `yaml:",omitempty" json:"redis,omitempty"` Plugin *PluginConfig `yaml:",omitempty" json:"plugin,omitempty"` }
type RecorderObject ¶
type RedisLoader ¶
type RedisLoader struct { Addr string `json:"addr"` DB int `yaml:",omitempty" json:"db,omitempty"` Username string `yaml:",omitempty" json:"username,omitempty"` Password string `yaml:",omitempty" json:"password,omitempty"` Key string `yaml:",omitempty" json:"key,omitempty"` Type string `yaml:",omitempty" json:"type,omitempty"` }
type RedisRecorder ¶
type RedisRecorder struct { Addr string `json:"addr"` DB int `yaml:",omitempty" json:"db,omitempty"` Username string `yaml:",omitempty" json:"username,omitempty"` Password string `yaml:",omitempty" json:"password,omitempty"` Key string `yaml:",omitempty" json:"key,omitempty"` Type string `yaml:",omitempty" json:"type,omitempty"` }
type ResolverConfig ¶
type ResolverConfig struct { Name string `json:"name"` Nameservers []*NameserverConfig `yaml:",omitempty" json:"nameservers,omitempty"` Plugin *PluginConfig `yaml:",omitempty" json:"plugin,omitempty"` }
type RouterConfig ¶
type RouterConfig struct { Name string `json:"name"` Routes []*RouterRouteConfig `yaml:",omitempty" json:"routes,omitempty"` Reload time.Duration `yaml:",omitempty" json:"reload,omitempty"` File *FileLoader `yaml:",omitempty" json:"file,omitempty"` Redis *RedisLoader `yaml:",omitempty" json:"redis,omitempty"` HTTP *HTTPLoader `yaml:"http,omitempty" json:"http,omitempty"` Plugin *PluginConfig `yaml:",omitempty" json:"plugin,omitempty"` }
type RouterRouteConfig ¶
type SDConfig ¶
type SDConfig struct { Name string `json:"name"` Plugin *PluginConfig `yaml:",omitempty" json:"plugin,omitempty"` }
type SelectorConfig ¶
type ServiceConfig ¶
type ServiceConfig struct { Name string `json:"name"` Addr string `yaml:",omitempty" json:"addr,omitempty"` // DEPRECATED by metadata.interface since beta.5 Interface string `yaml:",omitempty" json:"interface,omitempty"` // DEPRECATED by metadata.so_mark since beta.5 SockOpts *SockOptsConfig `yaml:"sockopts,omitempty" json:"sockopts,omitempty"` Admission string `yaml:",omitempty" json:"admission,omitempty"` Admissions []string `yaml:",omitempty" json:"admissions,omitempty"` Bypass string `yaml:",omitempty" json:"bypass,omitempty"` Bypasses []string `yaml:",omitempty" json:"bypasses,omitempty"` Resolver string `yaml:",omitempty" json:"resolver,omitempty"` Hosts string `yaml:",omitempty" json:"hosts,omitempty"` Limiter string `yaml:",omitempty" json:"limiter,omitempty"` CLimiter string `yaml:"climiter,omitempty" json:"climiter,omitempty"` RLimiter string `yaml:"rlimiter,omitempty" json:"rlimiter,omitempty"` Logger string `yaml:",omitempty" json:"logger,omitempty"` Loggers []string `yaml:",omitempty" json:"loggers,omitempty"` Observer string `yaml:",omitempty" json:"observer,omitempty"` Recorders []*RecorderObject `yaml:",omitempty" json:"recorders,omitempty"` Handler *HandlerConfig `yaml:",omitempty" json:"handler,omitempty"` Listener *ListenerConfig `yaml:",omitempty" json:"listener,omitempty"` Forwarder *ForwarderConfig `yaml:",omitempty" json:"forwarder,omitempty"` Metadata map[string]any `yaml:",omitempty" json:"metadata,omitempty"` // service status, read-only Status *ServiceStatus `yaml:",omitempty" json:"status,omitempty"` }
type ServiceEvent ¶
type ServiceStats ¶
type ServiceStats struct { TotalConns uint64 `yaml:"totalConns" json:"totalConns"` CurrentConns uint64 `yaml:"currentConns" json:"currentConns"` TotalErrs uint64 `yaml:"totalErrs" json:"totalErrs"` InputBytes uint64 `yaml:"inputBytes" json:"inputBytes"` OutputBytes uint64 `yaml:"outputBytes" json:"outputBytes"` }
type ServiceStatus ¶
type ServiceStatus struct { CreateTime int64 `yaml:"createTime" json:"createTime"` State string `yaml:"state" json:"state"` Events []ServiceEvent `yaml:",omitempty" json:"events,omitempty"` Stats *ServiceStats `yaml:",omitempty" json:"stats,omitempty"` }
type SockOptsConfig ¶
type SockOptsConfig struct {
Mark int `yaml:",omitempty" json:"mark,omitempty"`
}
type TCPRecorder ¶
type TLSConfig ¶
type TLSConfig struct { CertFile string `yaml:"certFile,omitempty" json:"certFile,omitempty"` KeyFile string `yaml:"keyFile,omitempty" json:"keyFile,omitempty"` CAFile string `yaml:"caFile,omitempty" json:"caFile,omitempty"` Secure bool `yaml:",omitempty" json:"secure,omitempty"` ServerName string `yaml:"serverName,omitempty" json:"serverName,omitempty"` Options *TLSOptions `yaml:",omitempty" json:"options,omitempty"` // for auto-generated default certificate. Validity time.Duration `yaml:",omitempty" json:"validity,omitempty"` CommonName string `yaml:"commonName,omitempty" json:"commonName,omitempty"` Organization string `yaml:",omitempty" json:"organization,omitempty"` }
type TLSNodeConfig ¶
type TLSNodeConfig struct { ServerName string `yaml:"serverName,omitempty" json:"serverName,omitempty"` Secure bool `yaml:",omitempty" json:"secure,omitempty"` Options *TLSOptions `yaml:",omitempty" json:"options,omitempty"` }
type TLSOptions ¶
type TLSOptions struct { MinVersion string `yaml:"minVersion,omitempty" json:"minVersion,omitempty"` MaxVersion string `yaml:"maxVersion,omitempty" json:"maxVersion,omitempty"` CipherSuites []string `yaml:"cipherSuites,omitempty" json:"cipherSuites,omitempty"` ALPN []string `yaml:"alpn,omitempty" json:"alpn,omitempty"` }
Click to show internal directories.
Click to hide internal directories.