config

package
v0.34.0 Latest Latest
Warning

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

Go to latest
Published: Sep 19, 2020 License: Apache-2.0 Imports: 16 Imported by: 0

Documentation

Index

Constants

View Source
const (
	MB = 1024 * 1024
	KB = 1024
)

Variables

This section is empty.

Functions

func GetRenderedConfFromFile added in v0.23.0

func GetRenderedConfFromFile(path string) (out string, err error)

func LoadAllConfFromIni added in v0.22.0

func LoadAllConfFromIni(prefix string, content string, startProxy map[string]struct{}) (
	proxyConfs map[string]ProxyConf, visitorConfs map[string]VisitorConf, err error)

if len(startProxy) is 0, start all otherwise just start proxies in startProxy map

func ParseRangeSection added in v0.16.0

func ParseRangeSection(name string, section ini.Section) (sections map[string]ini.Section, err error)

func RenderContent added in v0.23.0

func RenderContent(in string) (out string, err error)

func UnmarshalPluginsFromIni added in v0.31.0

func UnmarshalPluginsFromIni(sections ini.File, cfg *ServerCommonConf)

Types

type BandwidthQuantity added in v0.30.0

type BandwidthQuantity struct {
	// contains filtered or unexported fields
}

func NewBandwidthQuantity added in v0.30.0

func NewBandwidthQuantity(s string) (BandwidthQuantity, error)

func (*BandwidthQuantity) Bytes added in v0.30.0

func (q *BandwidthQuantity) Bytes() int64

func (*BandwidthQuantity) Equal added in v0.30.0

func (*BandwidthQuantity) MarshalJSON added in v0.30.0

func (q *BandwidthQuantity) MarshalJSON() ([]byte, error)

func (*BandwidthQuantity) String added in v0.30.0

func (q *BandwidthQuantity) String() string

func (*BandwidthQuantity) UnmarshalJSON added in v0.30.0

func (q *BandwidthQuantity) UnmarshalJSON(b []byte) error

func (*BandwidthQuantity) UnmarshalString added in v0.30.0

func (q *BandwidthQuantity) UnmarshalString(s string) error

type BaseProxyConf

type BaseProxyConf struct {
	// ProxyName is the name of this proxy.
	ProxyName string `json:"proxy_name"`
	// ProxyType specifies the type of this proxy. Valid values include "tcp",
	// "udp", "http", "https", "stcp", and "xtcp". By default, this value is
	// "tcp".
	ProxyType string `json:"proxy_type"`

	// UseEncryption controls whether or not communication with the server will
	// be encrypted. Encryption is done using the tokens supplied in the server
	// and client configuration. By default, this value is false.
	UseEncryption bool `json:"use_encryption"`
	// UseCompression controls whether or not communication with the server
	// will be compressed. By default, this value is false.
	UseCompression bool `json:"use_compression"`
	// Group specifies which group the proxy is a part of. The server will use
	// this information to load balance proxies in the same group. If the value
	// is "", this proxy will not be in a group. By default, this value is "".
	Group string `json:"group"`
	// GroupKey specifies a group key, which should be the same among proxies
	// of the same group. By default, this value is "".
	GroupKey string `json:"group_key"`

	// ProxyProtocolVersion specifies which protocol version to use. Valid
	// values include "v1", "v2", and "". If the value is "", a protocol
	// version will be automatically selected. By default, this value is "".
	ProxyProtocolVersion string `json:"proxy_protocol_version"`

	// BandwidthLimit limit the proxy bandwidth
	// 0 means no limit
	BandwidthLimit BandwidthQuantity `json:"bandwidth_limit"`

	// meta info for each proxy
	Metas map[string]string `json:"metas"`

	LocalSvrConf
	HealthCheckConf
}

BaseProxyConf provides configuration info that is common to all proxy types.

func (*BaseProxyConf) GetBaseInfo

func (cfg *BaseProxyConf) GetBaseInfo() *BaseProxyConf

func (*BaseProxyConf) MarshalToMsg added in v0.17.0

func (cfg *BaseProxyConf) MarshalToMsg(pMsg *msg.NewProxy)

func (*BaseProxyConf) UnmarshalFromIni added in v0.17.0

func (cfg *BaseProxyConf) UnmarshalFromIni(prefix string, name string, section ini.Section) error

func (*BaseProxyConf) UnmarshalFromMsg added in v0.17.0

func (cfg *BaseProxyConf) UnmarshalFromMsg(pMsg *msg.NewProxy)

type BaseVisitorConf added in v0.22.0

type BaseVisitorConf struct {
	ProxyName      string `json:"proxy_name"`
	ProxyType      string `json:"proxy_type"`
	UseEncryption  bool   `json:"use_encryption"`
	UseCompression bool   `json:"use_compression"`
	Role           string `json:"role"`
	Sk             string `json:"sk"`
	ServerName     string `json:"server_name"`
	BindAddr       string `json:"bind_addr"`
	BindPort       int    `json:"bind_port"`
}

func (*BaseVisitorConf) GetBaseInfo added in v0.22.0

func (cfg *BaseVisitorConf) GetBaseInfo() *BaseVisitorConf

func (*BaseVisitorConf) UnmarshalFromIni added in v0.22.0

func (cfg *BaseVisitorConf) UnmarshalFromIni(prefix string, name string, section ini.Section) (err error)

type BindInfoConf

type BindInfoConf struct {
	RemotePort int `json:"remote_port"`
}

Bind info

func (*BindInfoConf) MarshalToMsg added in v0.17.0

func (cfg *BindInfoConf) MarshalToMsg(pMsg *msg.NewProxy)

func (*BindInfoConf) UnmarshalFromIni added in v0.17.0

func (cfg *BindInfoConf) UnmarshalFromIni(prefix string, name string, section ini.Section) (err error)

func (*BindInfoConf) UnmarshalFromMsg added in v0.17.0

func (cfg *BindInfoConf) UnmarshalFromMsg(pMsg *msg.NewProxy)

type ClientCommonConf

type ClientCommonConf struct {
	auth.ClientConfig
	// ServerAddr specifies the address of the server to connect to. By
	// default, this value is "0.0.0.0".
	ServerAddr string `json:"server_addr"`
	// ServerPort specifies the port to connect to the server on. By default,
	// this value is 7000.
	ServerPort int `json:"server_port"`
	// HTTPProxy specifies a proxy address to connect to the server through. If
	// this value is "", the server will be connected to directly. By default,
	// this value is read from the "http_proxy" environment variable.
	HTTPProxy string `json:"http_proxy"`
	// LogFile specifies a file where logs will be written to. This value will
	// only be used if LogWay is set appropriately. By default, this value is
	// "console".
	LogFile string `json:"log_file"`
	// LogWay specifies the way logging is managed. Valid values are "console"
	// or "file". If "console" is used, logs will be printed to stdout. If
	// "file" is used, logs will be printed to LogFile. By default, this value
	// is "console".
	LogWay string `json:"log_way"`
	// LogLevel specifies the minimum log level. Valid values are "trace",
	// "debug", "info", "warn", and "error". By default, this value is "info".
	LogLevel string `json:"log_level"`
	// LogMaxDays specifies the maximum number of days to store log information
	// before deletion. This is only used if LogWay == "file". By default, this
	// value is 0.
	LogMaxDays int64 `json:"log_max_days"`
	// DisableLogColor disables log colors when LogWay == "console" when set to
	// true. By default, this value is false.
	DisableLogColor bool `json:"disable_log_color"`
	// AdminAddr specifies the address that the admin server binds to. By
	// default, this value is "127.0.0.1".
	AdminAddr string `json:"admin_addr"`
	// AdminPort specifies the port for the admin server to listen on. If this
	// value is 0, the admin server will not be started. By default, this value
	// is 0.
	AdminPort int `json:"admin_port"`
	// AdminUser specifies the username that the admin server will use for
	// login. By default, this value is "admin".
	AdminUser string `json:"admin_user"`
	// AdminPwd specifies the password that the admin server will use for
	// login. By default, this value is "admin".
	AdminPwd string `json:"admin_pwd"`
	// AssetsDir specifies the local directory that the admin server will load
	// resources from. If this value is "", assets will be loaded from the
	// bundled executable using statik. By default, this value is "".
	AssetsDir string `json:"assets_dir"`
	// PoolCount specifies the number of connections the client will make to
	// the server in advance. By default, this value is 0.
	PoolCount int `json:"pool_count"`
	// TCPMux toggles TCP stream multiplexing. This allows multiple requests
	// from a client to share a single TCP connection. If this value is true,
	// the server must have TCP multiplexing enabled as well. By default, this
	// value is true.
	TCPMux bool `json:"tcp_mux"`
	// User specifies a prefix for proxy names to distinguish them from other
	// clients. If this value is not "", proxy names will automatically be
	// changed to "{user}.{proxy_name}". By default, this value is "".
	User string `json:"user"`
	// DNSServer specifies a DNS server address for FRPC to use. If this value
	// is "", the default DNS will be used. By default, this value is "".
	DNSServer string `json:"dns_server"`
	// LoginFailExit controls whether or not the client should exit after a
	// failed login attempt. If false, the client will retry until a login
	// attempt succeeds. By default, this value is true.
	LoginFailExit bool `json:"login_fail_exit"`
	// Start specifies a set of enabled proxies by name. If this set is empty,
	// all supplied proxies are enabled. By default, this value is an empty
	// set.
	Start map[string]struct{} `json:"start"`
	// Protocol specifies the protocol to use when interacting with the server.
	// Valid values are "tcp", "kcp", and "websocket". By default, this value
	// is "tcp".
	Protocol string `json:"protocol"`
	// TLSEnable specifies whether or not TLS should be used when communicating
	// with the server. If "tls_cert_file" and "tls_key_file" are valid,
	// client will load the supplied tls configuration.
	TLSEnable bool `json:"tls_enable"`
	// ClientTLSCertPath specifies the path of the cert file that client will
	// load. It only works when "tls_enable" is true and "tls_key_file" is valid.
	TLSCertFile string `json:"tls_cert_file"`
	// ClientTLSKeyPath specifies the path of the secret key file that client
	// will load. It only works when "tls_enable" is true and "tls_cert_file"
	// are valid.
	TLSKeyFile string `json:"tls_key_file"`
	// TrustedCaFile specifies the path of the trusted ca file that will load.
	// It only works when "tls_enable" is valid and tls configuration of server
	// has been specified.
	TLSTrustedCaFile string `json:"tls_trusted_ca_file"`
	// HeartBeatInterval specifies at what interval heartbeats are sent to the
	// server, in seconds. It is not recommended to change this value. By
	// default, this value is 30.
	HeartBeatInterval int64 `json:"heartbeat_interval"`
	// HeartBeatTimeout specifies the maximum allowed heartbeat response delay
	// before the connection is terminated, in seconds. It is not recommended
	// to change this value. By default, this value is 90.
	HeartBeatTimeout int64 `json:"heartbeat_timeout"`
	// Client meta info
	Metas map[string]string `json:"metas"`
	// UDPPacketSize specifies the udp packet size
	// By default, this value is 1500
	UDPPacketSize int64 `json:"udp_packet_size"`
}

ClientCommonConf contains information for a client service. It is recommended to use GetDefaultClientConf instead of creating this object directly, so that all unspecified fields have reasonable default values.

func GetDefaultClientConf added in v0.17.0

func GetDefaultClientConf() ClientCommonConf

GetDefaultClientConf returns a client configuration with default values.

func UnmarshalClientConfFromIni added in v0.17.0

func UnmarshalClientConfFromIni(content string) (cfg ClientCommonConf, err error)

func (*ClientCommonConf) Check added in v0.17.0

func (cfg *ClientCommonConf) Check() (err error)

type DomainConf

type DomainConf struct {
	CustomDomains []string `json:"custom_domains"`
	SubDomain     string   `json:"sub_domain"`
}

Domain info

func (*DomainConf) MarshalToMsg added in v0.17.0

func (cfg *DomainConf) MarshalToMsg(pMsg *msg.NewProxy)

func (*DomainConf) UnmarshalFromIni added in v0.17.0

func (cfg *DomainConf) UnmarshalFromIni(prefix string, name string, section ini.Section) (err error)

func (*DomainConf) UnmarshalFromMsg added in v0.17.0

func (cfg *DomainConf) UnmarshalFromMsg(pMsg *msg.NewProxy)

type HTTPProxyConf added in v0.34.0

type HTTPProxyConf struct {
	BaseProxyConf
	DomainConf

	Locations         []string          `json:"locations"`
	HTTPUser          string            `json:"http_user"`
	HTTPPwd           string            `json:"http_pwd"`
	HostHeaderRewrite string            `json:"host_header_rewrite"`
	Headers           map[string]string `json:"headers"`
}

HTTP

func (*HTTPProxyConf) CheckForCli added in v0.34.0

func (cfg *HTTPProxyConf) CheckForCli() (err error)

func (*HTTPProxyConf) CheckForSvr added in v0.34.0

func (cfg *HTTPProxyConf) CheckForSvr(serverCfg ServerCommonConf) (err error)

func (*HTTPProxyConf) Compare added in v0.34.0

func (cfg *HTTPProxyConf) Compare(cmp ProxyConf) bool

func (*HTTPProxyConf) MarshalToMsg added in v0.34.0

func (cfg *HTTPProxyConf) MarshalToMsg(pMsg *msg.NewProxy)

func (*HTTPProxyConf) UnmarshalFromIni added in v0.34.0

func (cfg *HTTPProxyConf) UnmarshalFromIni(prefix string, name string, section ini.Section) (err error)

func (*HTTPProxyConf) UnmarshalFromMsg added in v0.34.0

func (cfg *HTTPProxyConf) UnmarshalFromMsg(pMsg *msg.NewProxy)

type HTTPSProxyConf added in v0.34.0

type HTTPSProxyConf struct {
	BaseProxyConf
	DomainConf
}

HTTPS

func (*HTTPSProxyConf) CheckForCli added in v0.34.0

func (cfg *HTTPSProxyConf) CheckForCli() (err error)

func (*HTTPSProxyConf) CheckForSvr added in v0.34.0

func (cfg *HTTPSProxyConf) CheckForSvr(serverCfg ServerCommonConf) (err error)

func (*HTTPSProxyConf) Compare added in v0.34.0

func (cfg *HTTPSProxyConf) Compare(cmp ProxyConf) bool

func (*HTTPSProxyConf) MarshalToMsg added in v0.34.0

func (cfg *HTTPSProxyConf) MarshalToMsg(pMsg *msg.NewProxy)

func (*HTTPSProxyConf) UnmarshalFromIni added in v0.34.0

func (cfg *HTTPSProxyConf) UnmarshalFromIni(prefix string, name string, section ini.Section) (err error)

func (*HTTPSProxyConf) UnmarshalFromMsg added in v0.34.0

func (cfg *HTTPSProxyConf) UnmarshalFromMsg(pMsg *msg.NewProxy)

type HealthCheckConf added in v0.22.0

type HealthCheckConf struct {
	// HealthCheckType specifies what protocol to use for health checking.
	// Valid values include "tcp", "http", and "". If this value is "", health
	// checking will not be performed. By default, this value is "".
	//
	// If the type is "tcp", a connection will be attempted to the target
	// server. If a connection cannot be established, the health check fails.
	//
	// If the type is "http", a GET request will be made to the endpoint
	// specified by HealthCheckURL. If the response is not a 200, the health
	// check fails.
	HealthCheckType string `json:"health_check_type"` // tcp | http
	// HealthCheckTimeoutS specifies the number of seconds to wait for a health
	// check attempt to connect. If the timeout is reached, this counts as a
	// health check failure. By default, this value is 3.
	HealthCheckTimeoutS int `json:"health_check_timeout_s"`
	// HealthCheckMaxFailed specifies the number of allowed failures before the
	// proxy is stopped. By default, this value is 1.
	HealthCheckMaxFailed int `json:"health_check_max_failed"`
	// HealthCheckIntervalS specifies the time in seconds between health
	// checks. By default, this value is 10.
	HealthCheckIntervalS int `json:"health_check_interval_s"`
	// HealthCheckURL specifies the address to send health checks to if the
	// health check type is "http".
	HealthCheckURL string `json:"health_check_url"`
	// HealthCheckAddr specifies the address to connect to if the health check
	// type is "tcp".
	HealthCheckAddr string `json:"-"`
}

HealthCheckConf configures health checking. This can be useful for load balancing purposes to detect and remove proxies to failing services.

func (*HealthCheckConf) UnmarshalFromIni added in v0.22.0

func (cfg *HealthCheckConf) UnmarshalFromIni(prefix string, name string, section ini.Section) (err error)

type LocalSvrConf

type LocalSvrConf struct {
	// LocalIP specifies the IP address or host name to proxy to.
	LocalIP string `json:"local_ip"`
	// LocalPort specifies the port to proxy to.
	LocalPort int `json:"local_port"`

	// Plugin specifies what plugin should be used for proxying. If this value
	// is set, the LocalIp and LocalPort values will be ignored. By default,
	// this value is "".
	Plugin string `json:"plugin"`
	// PluginParams specify parameters to be passed to the plugin, if one is
	// being used. By default, this value is an empty map.
	PluginParams map[string]string `json:"plugin_params"`
}

LocalSvrConf configures what location the client will proxy to, or what plugin will be used.

func (*LocalSvrConf) UnmarshalFromIni added in v0.17.0

func (cfg *LocalSvrConf) UnmarshalFromIni(prefix string, name string, section ini.Section) (err error)

type ProxyConf

type ProxyConf interface {
	GetBaseInfo() *BaseProxyConf
	UnmarshalFromMsg(pMsg *msg.NewProxy)
	UnmarshalFromIni(prefix string, name string, conf ini.Section) error
	MarshalToMsg(pMsg *msg.NewProxy)
	CheckForCli() error
	CheckForSvr(serverCfg ServerCommonConf) error
	Compare(conf ProxyConf) bool
}

func NewConfByType

func NewConfByType(proxyType string) ProxyConf

NewConfByType creates a empty ProxyConf object by proxyType. If proxyType isn't exist, return nil.

func NewProxyConfFromIni added in v0.17.0

func NewProxyConfFromIni(prefix string, name string, section ini.Section) (cfg ProxyConf, err error)

func NewProxyConfFromMsg added in v0.17.0

func NewProxyConfFromMsg(pMsg *msg.NewProxy, serverCfg ServerCommonConf) (cfg ProxyConf, err error)

type STCPProxyConf added in v0.34.0

type STCPProxyConf struct {
	BaseProxyConf

	Role string `json:"role"`
	Sk   string `json:"sk"`
}

STCP

func (*STCPProxyConf) CheckForCli added in v0.34.0

func (cfg *STCPProxyConf) CheckForCli() (err error)

func (*STCPProxyConf) CheckForSvr added in v0.34.0

func (cfg *STCPProxyConf) CheckForSvr(serverCfg ServerCommonConf) (err error)

func (*STCPProxyConf) Compare added in v0.34.0

func (cfg *STCPProxyConf) Compare(cmp ProxyConf) bool

func (*STCPProxyConf) MarshalToMsg added in v0.34.0

func (cfg *STCPProxyConf) MarshalToMsg(pMsg *msg.NewProxy)

func (*STCPProxyConf) UnmarshalFromIni added in v0.34.0

func (cfg *STCPProxyConf) UnmarshalFromIni(prefix string, name string, section ini.Section) (err error)

func (*STCPProxyConf) UnmarshalFromMsg added in v0.34.0

func (cfg *STCPProxyConf) UnmarshalFromMsg(pMsg *msg.NewProxy)

Only for role server.

type STCPVisitorConf added in v0.34.0

type STCPVisitorConf struct {
	BaseVisitorConf
}

func (*STCPVisitorConf) Check added in v0.34.0

func (cfg *STCPVisitorConf) Check() (err error)

func (*STCPVisitorConf) Compare added in v0.34.0

func (cfg *STCPVisitorConf) Compare(cmp VisitorConf) bool

func (*STCPVisitorConf) UnmarshalFromIni added in v0.34.0

func (cfg *STCPVisitorConf) UnmarshalFromIni(prefix string, name string, section ini.Section) (err error)

type SUDPProxyConf added in v0.34.0

type SUDPProxyConf struct {
	BaseProxyConf

	Role string `json:"role"`
	Sk   string `json:"sk"`
}

SUDP

func (*SUDPProxyConf) CheckForCli added in v0.34.0

func (cfg *SUDPProxyConf) CheckForCli() (err error)

func (*SUDPProxyConf) CheckForSvr added in v0.34.0

func (cfg *SUDPProxyConf) CheckForSvr(serverCfg ServerCommonConf) (err error)

func (*SUDPProxyConf) Compare added in v0.34.0

func (cfg *SUDPProxyConf) Compare(cmp ProxyConf) bool

func (*SUDPProxyConf) MarshalToMsg added in v0.34.0

func (cfg *SUDPProxyConf) MarshalToMsg(pMsg *msg.NewProxy)

func (*SUDPProxyConf) UnmarshalFromIni added in v0.34.0

func (cfg *SUDPProxyConf) UnmarshalFromIni(prefix string, name string, section ini.Section) (err error)

func (*SUDPProxyConf) UnmarshalFromMsg added in v0.34.0

func (cfg *SUDPProxyConf) UnmarshalFromMsg(pMsg *msg.NewProxy)

Only for role server.

type SUDPVisitorConf added in v0.34.0

type SUDPVisitorConf struct {
	BaseVisitorConf
}

func (*SUDPVisitorConf) Check added in v0.34.0

func (cfg *SUDPVisitorConf) Check() (err error)

func (*SUDPVisitorConf) Compare added in v0.34.0

func (cfg *SUDPVisitorConf) Compare(cmp VisitorConf) bool

func (*SUDPVisitorConf) UnmarshalFromIni added in v0.34.0

func (cfg *SUDPVisitorConf) UnmarshalFromIni(prefix string, name string, section ini.Section) (err error)

type ServerCommonConf

type ServerCommonConf struct {
	auth.ServerConfig
	// BindAddr specifies the address that the server binds to. By default,
	// this value is "0.0.0.0".
	BindAddr string `json:"bind_addr"`
	// BindPort specifies the port that the server listens on. By default, this
	// value is 7000.
	BindPort int `json:"bind_port"`
	// BindUDPPort specifies the UDP port that the server listens on. If this
	// value is 0, the server will not listen for UDP connections. By default,
	// this value is 0
	BindUDPPort int `json:"bind_udp_port"`
	// KCPBindPort specifies the KCP port that the server listens on. If this
	// value is 0, the server will not listen for KCP connections. By default,
	// this value is 0.
	KCPBindPort int `json:"kcp_bind_port"`
	// ProxyBindAddr specifies the address that the proxy binds to. This value
	// may be the same as BindAddr. By default, this value is "0.0.0.0".
	ProxyBindAddr string `json:"proxy_bind_addr"`
	// VhostHTTPPort specifies the port that the server listens for HTTP Vhost
	// requests. If this value is 0, the server will not listen for HTTP
	// requests. By default, this value is 0.
	VhostHTTPPort int `json:"vhost_http_port"`
	// VhostHTTPSPort specifies the port that the server listens for HTTPS
	// Vhost requests. If this value is 0, the server will not listen for HTTPS
	// requests. By default, this value is 0.
	VhostHTTPSPort int `json:"vhost_https_port"`
	// TCPMuxHTTPConnectPort specifies the port that the server listens for TCP
	// HTTP CONNECT requests. If the value is 0, the server will not multiplex TCP
	// requests on one single port. If it's not - it will listen on this value for
	// HTTP CONNECT requests. By default, this value is 0.
	TCPMuxHTTPConnectPort int `json:"tcpmux_httpconnect_port"`
	// VhostHTTPTimeout specifies the response header timeout for the Vhost
	// HTTP server, in seconds. By default, this value is 60.
	VhostHTTPTimeout int64 `json:"vhost_http_timeout"`
	// DashboardAddr specifies the address that the dashboard binds to. By
	// default, this value is "0.0.0.0".
	DashboardAddr string `json:"dashboard_addr"`
	// DashboardPort specifies the port that the dashboard listens on. If this
	// value is 0, the dashboard will not be started. By default, this value is
	// 0.
	DashboardPort int `json:"dashboard_port"`
	// DashboardUser specifies the username that the dashboard will use for
	// login. By default, this value is "admin".
	DashboardUser string `json:"dashboard_user"`
	// DashboardUser specifies the password that the dashboard will use for
	// login. By default, this value is "admin".
	DashboardPwd string `json:"dashboard_pwd"`
	// EnablePrometheus will export prometheus metrics on {dashboard_addr}:{dashboard_port}
	// in /metrics api.
	EnablePrometheus bool `json:"enable_prometheus"`
	// AssetsDir specifies the local directory that the dashboard will load
	// resources from. If this value is "", assets will be loaded from the
	// bundled executable using statik. By default, this value is "".
	AssetsDir string `json:"asserts_dir"`
	// LogFile specifies a file where logs will be written to. This value will
	// only be used if LogWay is set appropriately. By default, this value is
	// "console".
	LogFile string `json:"log_file"`
	// LogWay specifies the way logging is managed. Valid values are "console"
	// or "file". If "console" is used, logs will be printed to stdout. If
	// "file" is used, logs will be printed to LogFile. By default, this value
	// is "console".
	LogWay string `json:"log_way"`
	// LogLevel specifies the minimum log level. Valid values are "trace",
	// "debug", "info", "warn", and "error". By default, this value is "info".
	LogLevel string `json:"log_level"`
	// LogMaxDays specifies the maximum number of days to store log information
	// before deletion. This is only used if LogWay == "file". By default, this
	// value is 0.
	LogMaxDays int64 `json:"log_max_days"`
	// DisableLogColor disables log colors when LogWay == "console" when set to
	// true. By default, this value is false.
	DisableLogColor bool `json:"disable_log_color"`
	// DetailedErrorsToClient defines whether to send the specific error (with
	// debug info) to frpc. By default, this value is true.
	DetailedErrorsToClient bool `json:"detailed_errors_to_client"`

	// SubDomainHost specifies the domain that will be attached to sub-domains
	// requested by the client when using Vhost proxying. For example, if this
	// value is set to "frps.com" and the client requested the subdomain
	// "test", the resulting URL would be "test.frps.com". By default, this
	// value is "".
	SubDomainHost string `json:"subdomain_host"`
	// TCPMux toggles TCP stream multiplexing. This allows multiple requests
	// from a client to share a single TCP connection. By default, this value
	// is true.
	TCPMux bool `json:"tcp_mux"`
	// Custom404Page specifies a path to a custom 404 page to display. If this
	// value is "", a default page will be displayed. By default, this value is
	// "".
	Custom404Page string `json:"custom_404_page"`

	// AllowPorts specifies a set of ports that clients are able to proxy to.
	// If the length of this value is 0, all ports are allowed. By default,
	// this value is an empty set.
	AllowPorts map[int]struct{}
	// MaxPoolCount specifies the maximum pool size for each proxy. By default,
	// this value is 5.
	MaxPoolCount int64 `json:"max_pool_count"`
	// MaxPortsPerClient specifies the maximum number of ports a single client
	// may proxy to. If this value is 0, no limit will be applied. By default,
	// this value is 0.
	MaxPortsPerClient int64 `json:"max_ports_per_client"`
	// TLSOnly specifies whether to only accept TLS-encrypted connections.
	// By default, the value is false.
	TLSOnly bool `json:"tls_only"`
	// TLSCertFile specifies the path of the cert file that the server will
	// load. If "tls_cert_file", "tls_key_file" are valid, the server will use this
	// supplied tls configuration. Otherwise, the server will use the tls
	// configuration generated by itself.
	TLSCertFile string `json:"tls_cert_file"`
	// TLSKeyFile specifies the path of the secret key that the server will
	// load. If "tls_cert_file", "tls_key_file" are valid, the server will use this
	// supplied tls configuration. Otherwise, the server will use the tls
	// configuration generated by itself.
	TLSKeyFile string `json:"tls_key_file"`
	// TLSTrustedCaFile specifies the paths of the client cert files that the
	// server will load. It only works when "tls_only" is true. If
	// "tls_trusted_ca_file" is valid, the server will verify each client's
	// certificate.
	TLSTrustedCaFile string `json:"tls_trusted_ca_file"`
	// HeartBeatTimeout specifies the maximum time to wait for a heartbeat
	// before terminating the connection. It is not recommended to change this
	// value. By default, this value is 90.
	HeartBeatTimeout int64 `json:"heart_beat_timeout"`
	// UserConnTimeout specifies the maximum time to wait for a work
	// connection. By default, this value is 10.
	UserConnTimeout int64 `json:"user_conn_timeout"`
	// HTTPPlugins specify the server plugins support HTTP protocol.
	HTTPPlugins map[string]plugin.HTTPPluginOptions `json:"http_plugins"`
	// UDPPacketSize specifies the UDP packet size
	// By default, this value is 1500
	UDPPacketSize int64 `json:"udp_packet_size"`
}

ServerCommonConf contains information for a server service. It is recommended to use GetDefaultServerConf instead of creating this object directly, so that all unspecified fields have reasonable default values.

func GetDefaultServerConf added in v0.17.0

func GetDefaultServerConf() ServerCommonConf

GetDefaultServerConf returns a server configuration with reasonable defaults.

func UnmarshalServerConfFromIni added in v0.17.0

func UnmarshalServerConfFromIni(content string) (cfg ServerCommonConf, err error)

UnmarshalServerConfFromIni parses the contents of a server configuration ini file and returns the resulting server configuration.

func (*ServerCommonConf) Check added in v0.17.0

func (cfg *ServerCommonConf) Check() error

type TCPMuxProxyConf added in v0.34.0

type TCPMuxProxyConf struct {
	BaseProxyConf
	DomainConf

	Multiplexer string `json:"multiplexer"`
}

TCP Multiplexer

func (*TCPMuxProxyConf) CheckForCli added in v0.34.0

func (cfg *TCPMuxProxyConf) CheckForCli() (err error)

func (*TCPMuxProxyConf) CheckForSvr added in v0.34.0

func (cfg *TCPMuxProxyConf) CheckForSvr(serverCfg ServerCommonConf) (err error)

func (*TCPMuxProxyConf) Compare added in v0.34.0

func (cfg *TCPMuxProxyConf) Compare(cmp ProxyConf) bool

func (*TCPMuxProxyConf) MarshalToMsg added in v0.34.0

func (cfg *TCPMuxProxyConf) MarshalToMsg(pMsg *msg.NewProxy)

func (*TCPMuxProxyConf) UnmarshalFromIni added in v0.34.0

func (cfg *TCPMuxProxyConf) UnmarshalFromIni(prefix string, name string, section ini.Section) (err error)

func (*TCPMuxProxyConf) UnmarshalFromMsg added in v0.34.0

func (cfg *TCPMuxProxyConf) UnmarshalFromMsg(pMsg *msg.NewProxy)

type TCPProxyConf added in v0.34.0

type TCPProxyConf struct {
	BaseProxyConf
	BindInfoConf
}

TCP

func (*TCPProxyConf) CheckForCli added in v0.34.0

func (cfg *TCPProxyConf) CheckForCli() (err error)

func (*TCPProxyConf) CheckForSvr added in v0.34.0

func (cfg *TCPProxyConf) CheckForSvr(serverCfg ServerCommonConf) error

func (*TCPProxyConf) Compare added in v0.34.0

func (cfg *TCPProxyConf) Compare(cmp ProxyConf) bool

func (*TCPProxyConf) MarshalToMsg added in v0.34.0

func (cfg *TCPProxyConf) MarshalToMsg(pMsg *msg.NewProxy)

func (*TCPProxyConf) UnmarshalFromIni added in v0.34.0

func (cfg *TCPProxyConf) UnmarshalFromIni(prefix string, name string, section ini.Section) (err error)

func (*TCPProxyConf) UnmarshalFromMsg added in v0.34.0

func (cfg *TCPProxyConf) UnmarshalFromMsg(pMsg *msg.NewProxy)

type UDPProxyConf added in v0.34.0

type UDPProxyConf struct {
	BaseProxyConf
	BindInfoConf
}

UDP

func (*UDPProxyConf) CheckForCli added in v0.34.0

func (cfg *UDPProxyConf) CheckForCli() (err error)

func (*UDPProxyConf) CheckForSvr added in v0.34.0

func (cfg *UDPProxyConf) CheckForSvr(serverCfg ServerCommonConf) error

func (*UDPProxyConf) Compare added in v0.34.0

func (cfg *UDPProxyConf) Compare(cmp ProxyConf) bool

func (*UDPProxyConf) MarshalToMsg added in v0.34.0

func (cfg *UDPProxyConf) MarshalToMsg(pMsg *msg.NewProxy)

func (*UDPProxyConf) UnmarshalFromIni added in v0.34.0

func (cfg *UDPProxyConf) UnmarshalFromIni(prefix string, name string, section ini.Section) (err error)

func (*UDPProxyConf) UnmarshalFromMsg added in v0.34.0

func (cfg *UDPProxyConf) UnmarshalFromMsg(pMsg *msg.NewProxy)

type Values added in v0.23.0

type Values struct {
	Envs map[string]string // environment vars
}

func GetValues added in v0.23.0

func GetValues() *Values

type VisitorConf added in v0.22.0

type VisitorConf interface {
	GetBaseInfo() *BaseVisitorConf
	Compare(cmp VisitorConf) bool
	UnmarshalFromIni(prefix string, name string, section ini.Section) error
	Check() error
}

func NewVisitorConfByType added in v0.22.0

func NewVisitorConfByType(cfgType string) VisitorConf

func NewVisitorConfFromIni added in v0.22.0

func NewVisitorConfFromIni(prefix string, name string, section ini.Section) (cfg VisitorConf, err error)

type XTCPProxyConf added in v0.34.0

type XTCPProxyConf struct {
	BaseProxyConf

	Role string `json:"role"`
	Sk   string `json:"sk"`
}

XTCP

func (*XTCPProxyConf) CheckForCli added in v0.34.0

func (cfg *XTCPProxyConf) CheckForCli() (err error)

func (*XTCPProxyConf) CheckForSvr added in v0.34.0

func (cfg *XTCPProxyConf) CheckForSvr(serverCfg ServerCommonConf) (err error)

func (*XTCPProxyConf) Compare added in v0.34.0

func (cfg *XTCPProxyConf) Compare(cmp ProxyConf) bool

func (*XTCPProxyConf) MarshalToMsg added in v0.34.0

func (cfg *XTCPProxyConf) MarshalToMsg(pMsg *msg.NewProxy)

func (*XTCPProxyConf) UnmarshalFromIni added in v0.34.0

func (cfg *XTCPProxyConf) UnmarshalFromIni(prefix string, name string, section ini.Section) (err error)

func (*XTCPProxyConf) UnmarshalFromMsg added in v0.34.0

func (cfg *XTCPProxyConf) UnmarshalFromMsg(pMsg *msg.NewProxy)

Only for role server.

type XTCPVisitorConf added in v0.34.0

type XTCPVisitorConf struct {
	BaseVisitorConf
}

func (*XTCPVisitorConf) Check added in v0.34.0

func (cfg *XTCPVisitorConf) Check() (err error)

func (*XTCPVisitorConf) Compare added in v0.34.0

func (cfg *XTCPVisitorConf) Compare(cmp VisitorConf) bool

func (*XTCPVisitorConf) UnmarshalFromIni added in v0.34.0

func (cfg *XTCPVisitorConf) UnmarshalFromIni(prefix string, name string, section ini.Section) (err error)

Jump to

Keyboard shortcuts

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