api

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Jun 7, 2024 License: MIT Imports: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func SetConfig

func SetConfig(cfg *Config)

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 AuthConfig struct {
	Username string `json:"username"`
	Password string `yaml:",omitempty" json:"password,omitempty"`
}

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 ChainConfig struct {
	Name     string         `json:"name"`
	Hops     []*HopConfig   `json:"hops"`
	Metadata map[string]any `yaml:",omitempty" json:"metadata,omitempty"`
}

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"`
}

func GetConfig

func GetConfig() *Config

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 FileRecorder struct {
	Path string `json:"path"`
	Sep  string `yaml:",omitempty" json:"sep,omitempty"`
}

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"`
}

type ForwarderConfig

type ForwarderConfig struct {
	Hop      string               `yaml:",omitempty" json:"hop,omitempty"`
	Selector *SelectorConfig      `yaml:",omitempty" json:"selector,omitempty"`
	Nodes    []*ForwardNodeConfig `json:"nodes"`
}

type HTTPLoader

type HTTPLoader struct {
	URL     string        `yaml:"url" json:"url"`
	Timeout time.Duration `yaml:",omitempty" json:"timeout,omitempty"`
}

type HTTPNodeConfig

type HTTPNodeConfig struct {
	Host    string                 `yaml:",omitempty" json:"host,omitempty"`
	Header  map[string]string      `yaml:",omitempty" json:"header,omitempty"`
	Auth    *AuthConfig            `yaml:",omitempty" json:"auth,omitempty"`
	Rewrite []HTTPURLRewriteConfig `yaml:",omitempty" json:"rewrite,omitempty"`
}

type HTTPRecorder

type HTTPRecorder struct {
	URL     string        `json:"url" yaml:"url"`
	Timeout time.Duration `json:"timeout"`
}

type HTTPURLRewriteConfig

type HTTPURLRewriteConfig struct {
	Match       string
	Replacement string
}

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"`
}

type HostMappingConfig

type HostMappingConfig struct {
	IP       string   `json:"ip"`
	Hostname string   `json:"hostname"`
	Aliases  []string `yaml:",omitempty" json:"aliases,omitempty"`
}

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 IngressRuleConfig struct {
	Hostname string `json:"hostname"`
	Endpoint string `json:"endpoint"`
}

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 LoggerConfig struct {
	Name string     `json:"name"`
	Log  *LogConfig `yaml:",omitempty" json:"log,omitempty"`
}

type Metadata

type Metadata map[string]any

func NewMetadata

func NewMetadata(m map[string]any) Metadata

func (Metadata) Get

func (md Metadata) Get(key string) any

func (Metadata) GetBool

func (md Metadata) GetBool(keys ...string) (v bool)

func (Metadata) GetDuration

func (md Metadata) GetDuration(keys ...string) (v time.Duration)

func (Metadata) GetFloat

func (md Metadata) GetFloat(keys ...string) (v float64)

func (Metadata) GetInt

func (md Metadata) GetInt(keys ...string) (v int)

func (Metadata) GetString

func (md Metadata) GetString(keys ...string) (v string)

func (Metadata) IsExists

func (md Metadata) IsExists(key string) bool

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"`
	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 NodeFilterConfig struct {
	Protocol string `yaml:",omitempty" json:"protocol,omitempty"`
	Host     string `yaml:",omitempty" json:"host,omitempty"`
	Path     string `yaml:",omitempty" json:"path,omitempty"`
}

type ObserverConfig

type ObserverConfig struct {
	Name   string        `json:"name"`
	Plugin *PluginConfig `yaml:",omitempty" json:"plugin,omitempty"`
}

type PluginConfig

type PluginConfig struct {
	Type    string        `json:"type"`
	Addr    string        `json:"addr"`
	TLS     *TLSConfig    `yaml:",omitempty" json:"tls,omitempty"`
	Timeout time.Duration `yaml:",omitempty" json:"timeout,omitempty"`
	Token   string        `yaml:",omitempty" json:"token,omitempty"`
}

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 RecorderObject struct {
	Name     string `json:"name"`
	Record   string `json:"record"`
	Metadata map[string]any
}

type RedisLoader

type RedisLoader struct {
	Addr     string `json:"addr"`
	DB       int    `yaml:",omitempty" json:"db,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"`
	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 Response

type Response struct {
	Code int    `json:"code,omitempty"`
	Msg  string `json:"msg,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 RouterRouteConfig struct {
	Net     string `json:"net"`
	Gateway string `json:"gateway"`
}

type SDConfig

type SDConfig struct {
	Name   string        `json:"name"`
	Plugin *PluginConfig `yaml:",omitempty" json:"plugin,omitempty"`
}

type SelectorConfig

type SelectorConfig struct {
	Strategy    string        `json:"strategy"`
	MaxFails    int           `yaml:"maxFails" json:"maxFails"`
	FailTimeout time.Duration `yaml:"failTimeout" json:"failTimeout"`
}

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"`
}

func (*ServiceConfig) Copy

func (p *ServiceConfig) Copy() *ServiceConfig

type ServiceEvent

type ServiceEvent struct {
	Time int64  `yaml:"time" json:"time"`
	Msg  string `yaml:"msg" json:"msg"`
}

type ServiceStats

type ServiceStats struct {
	Time            time.Time `yaml:"-" json:"-"`
	TotalConns      uint64    `yaml:"totalConns" json:"totalConns"`
	RequestRate     float64   `yaml:"-" json:"-"`
	CurrentConns    uint64    `yaml:"currentConns" json:"currentConns"`
	TotalErrs       uint64    `yaml:"totalErrs" json:"totalErrs"`
	InputBytes      uint64    `yaml:"inputBytes" json:"inputBytes"`
	InputRateBytes  uint64    `yaml:"-" json:"-"`
	OutputBytes     uint64    `yaml:"outputBytes" json:"outputBytes"`
	OutputRateBytes uint64    `yaml:"-" json:"-"`
}

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 TCPRecorder struct {
	Addr    string        `json:"addr"`
	Timeout time.Duration `json:"timeout"`
}

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"`
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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