Documentation
¶
Index ¶
- Constants
- Variables
- func AsyncHandler(f func(Message)) func(Message)
- func ReadMsgInto(c io.Reader, msg Message) (err error)
- func WriteMsg(c io.Writer, msg any) (err error)
- type ClientSpec
- type CloseProxy
- type Dispatcher
- type Login
- type LoginResp
- type Message
- type NatHoleClient
- type NatHoleDetectBehavior
- type NatHoleReport
- type NatHoleResp
- type NatHoleSid
- type NatHoleVisitor
- type NewProxy
- type NewProxyResp
- type NewVisitorConn
- type NewVisitorConnResp
- type NewWorkConn
- type Ping
- type Pong
- type PortsRange
- type ReqWorkConn
- type StartWorkConn
- type UDPPacket
Constants ¶
View Source
const ( TypeLogin = 'o' TypeLoginResp = '1' TypeNewProxy = 'p' TypeNewProxyResp = '2' TypeCloseProxy = 'c' TypeNewWorkConn = 'w' TypeReqWorkConn = 'r' TypeStartWorkConn = 's' TypeNewVisitorConn = 'v' TypeNewVisitorConnResp = '3' TypePing = 'h' TypePong = '4' TypeUDPPacket = 'u' TypeNatHoleVisitor = 'i' TypeNatHoleClient = 'n' TypeNatHoleResp = 'm' TypeNatHoleSid = '5' TypeNatHoleReport = '6' )
Variables ¶
View Source
var TypeNameNatHoleResp = reflect.TypeOf(&NatHoleResp{}).Elem().Name()
Functions ¶
func AsyncHandler ¶
Types ¶
type ClientSpec ¶
type ClientSpec struct {
// Due to the support of VirtualClient, frps needs to know the client type in order to
// differentiate the processing logic.
// Optional values: ssh-tunnel
Type string `json:"type,omitempty"`
// If the value is true, the client will not require authentication.
AlwaysAuthPass bool `json:"always_auth_pass,omitempty"`
}
type CloseProxy ¶
type CloseProxy struct {
ProxyName string `json:"proxy_name,omitempty"`
}
type Dispatcher ¶
type Dispatcher struct {
// contains filtered or unexported fields
}
Dispatcher is used to send messages to net.Conn or register handlers for messages read from net.Conn.
func NewDispatcher ¶
func NewDispatcher(rw io.ReadWriter) *Dispatcher
func (*Dispatcher) Done ¶
func (d *Dispatcher) Done() chan struct{}
func (*Dispatcher) RegisterDefaultHandler ¶
func (d *Dispatcher) RegisterDefaultHandler(handler func(Message))
func (*Dispatcher) RegisterHandler ¶
func (d *Dispatcher) RegisterHandler(msg Message, handler func(Message))
func (*Dispatcher) Run ¶
func (d *Dispatcher) Run()
Run will block until io.EOF or some error occurs.
func (*Dispatcher) Send ¶
func (d *Dispatcher) Send(m Message) error
func (*Dispatcher) SendChannel ¶
func (d *Dispatcher) SendChannel() chan Message
type Login ¶
type Login struct {
Version string `json:"version,omitempty"`
Hostname string `json:"hostname,omitempty"`
Os string `json:"os,omitempty"`
Arch string `json:"arch,omitempty"`
User string `json:"user,omitempty"`
PrivilegeKey string `json:"privilege_key,omitempty"`
Timestamp int64 `json:"timestamp,omitempty"`
RunID string `json:"run_id,omitempty"`
Metas map[string]string `json:"metas,omitempty"`
// Currently only effective for VirtualClient.
ClientSpec ClientSpec `json:"client_spec,omitempty"`
// Some global configures.
PoolCount int `json:"pool_count,omitempty"`
}
When frpc start, client send this message to login to server.
type NatHoleClient ¶
type NatHoleDetectBehavior ¶
type NatHoleDetectBehavior struct {
Role string `json:"role,omitempty"` // sender or receiver
Mode int `json:"mode,omitempty"` // 0, 1, 2...
TTL int `json:"ttl,omitempty"`
SendDelayMs int `json:"send_delay_ms,omitempty"`
ReadTimeoutMs int `json:"read_timeout,omitempty"`
CandidatePorts []PortsRange `json:"candidate_ports,omitempty"`
SendRandomPorts int `json:"send_random_ports,omitempty"`
ListenRandomPorts int `json:"listen_random_ports,omitempty"`
}
type NatHoleReport ¶
type NatHoleResp ¶
type NatHoleResp struct {
TransactionID string `json:"transaction_id,omitempty"`
Sid string `json:"sid,omitempty"`
Protocol string `json:"protocol,omitempty"`
CandidateAddrs []string `json:"candidate_addrs,omitempty"`
AssistedAddrs []string `json:"assisted_addrs,omitempty"`
DetectBehavior NatHoleDetectBehavior `json:"detect_behavior,omitempty"`
Error string `json:"error,omitempty"`
}
type NatHoleSid ¶
type NatHoleVisitor ¶
type NatHoleVisitor struct {
TransactionID string `json:"transaction_id,omitempty"`
ProxyName string `json:"proxy_name,omitempty"`
PreCheck bool `json:"pre_check,omitempty"`
Protocol string `json:"protocol,omitempty"`
SignKey string `json:"sign_key,omitempty"`
Timestamp int64 `json:"timestamp,omitempty"`
MappedAddrs []string `json:"mapped_addrs,omitempty"`
AssistedAddrs []string `json:"assisted_addrs,omitempty"`
}
type NewProxy ¶
type NewProxy struct {
ProxyName string `json:"proxy_name,omitempty"`
ProxyType string `json:"proxy_type,omitempty"`
UseEncryption bool `json:"use_encryption,omitempty"`
UseCompression bool `json:"use_compression,omitempty"`
BandwidthLimit string `json:"bandwidth_limit,omitempty"`
BandwidthLimitMode string `json:"bandwidth_limit_mode,omitempty"`
Group string `json:"group,omitempty"`
GroupKey string `json:"group_key,omitempty"`
Metas map[string]string `json:"metas,omitempty"`
Annotations map[string]string `json:"annotations,omitempty"`
// tcp and udp only
RemotePort int `json:"remote_port,omitempty"`
// http and https only
CustomDomains []string `json:"custom_domains,omitempty"`
SubDomain string `json:"subdomain,omitempty"`
Locations []string `json:"locations,omitempty"`
HTTPUser string `json:"http_user,omitempty"`
HTTPPwd string `json:"http_pwd,omitempty"`
HostHeaderRewrite string `json:"host_header_rewrite,omitempty"`
Headers map[string]string `json:"headers,omitempty"`
ResponseHeaders map[string]string `json:"response_headers,omitempty"`
RouteByHTTPUser string `json:"route_by_http_user,omitempty"`
// stcp, sudp, xtcp
Sk string `json:"sk,omitempty"`
AllowUsers []string `json:"allow_users,omitempty"`
// tcpmux
Multiplexer string `json:"multiplexer,omitempty"`
// Certificate fields for HTTPS2HTTP plugin
CrtBase64 string `json:"crt_base64,omitempty"`
KeyBase64 string `json:"key_base64,omitempty"`
AutoTls *bool `json:"auto_tls,omitempty"`
}
When frpc login success, send this message to frps for running a new proxy.
type NewProxyResp ¶
type NewVisitorConn ¶
type NewVisitorConn struct {
RunID string `json:"run_id,omitempty"`
ProxyName string `json:"proxy_name,omitempty"`
SignKey string `json:"sign_key,omitempty"`
Timestamp int64 `json:"timestamp,omitempty"`
UseEncryption bool `json:"use_encryption,omitempty"`
UseCompression bool `json:"use_compression,omitempty"`
}
type NewVisitorConnResp ¶
type NewWorkConn ¶
type PortsRange ¶
type ReqWorkConn ¶
type ReqWorkConn struct{}
type StartWorkConn ¶
Click to show internal directories.
Click to hide internal directories.