Documentation
¶
Index ¶
- Constants
- Variables
- func AsyncHandler(f func(Message)) func(Message)
- func DecodeV2MessageFrameInto(f *wire.Frame, out Message) error
- func EncodeV2MessageFrame(m Message) (*wire.Frame, error)
- func ReadMsgInto(c io.Reader, msg Message) (err error)
- func WriteMsg(c io.Writer, msg any) (err error)
- type ClientSpec
- type CloseProxy
- type Conn
- 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 ReadWriter
- type ReqWorkConn
- type StartWorkConn
- type UDPPacket
- type V1ReadWriter
- type V2ReadWriter
Constants ¶
View Source
const ( TypeLogin byte = 'o' TypeLoginResp byte = '1' TypeNewProxy byte = 'p' TypeNewProxyResp byte = '2' TypeCloseProxy byte = 'c' TypeNewWorkConn byte = 'w' TypeReqWorkConn byte = 'r' TypeStartWorkConn byte = 's' TypeNewVisitorConn byte = 'v' TypeNewVisitorConnResp byte = '3' TypePing byte = 'h' TypePong byte = '4' TypeUDPPacket byte = 'u' TypeNatHoleVisitor byte = 'i' TypeNatHoleClient byte = 'n' TypeNatHoleResp byte = 'm' TypeNatHoleSid byte = '5' TypeNatHoleReport byte = '6' )
View Source
const ( V2TypeLogin uint16 = 1 V2TypeLoginResp uint16 = 2 V2TypeNewProxy uint16 = 3 V2TypeNewProxyResp uint16 = 4 V2TypeCloseProxy uint16 = 5 V2TypeNewWorkConn uint16 = 6 V2TypeReqWorkConn uint16 = 7 V2TypeStartWorkConn uint16 = 8 V2TypeNewVisitorConn uint16 = 9 V2TypeNewVisitorConnResp uint16 = 10 V2TypePing uint16 = 11 V2TypePong uint16 = 12 V2TypeUDPPacket uint16 = 13 V2TypeNatHoleVisitor uint16 = 14 V2TypeNatHoleClient uint16 = 15 V2TypeNatHoleResp uint16 = 16 V2TypeNatHoleSid uint16 = 17 V2TypeNatHoleReport uint16 = 18 )
Variables ¶
View Source
var TypeNameNatHoleResp = reflect.TypeFor[NatHoleResp]().Name()
Functions ¶
func AsyncHandler ¶ added in v0.53.0
func DecodeV2MessageFrameInto ¶ added in v0.69.0
func EncodeV2MessageFrame ¶ added in v0.69.0
Types ¶
type ClientSpec ¶ added in v0.53.0
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 Conn ¶ added in v0.69.0
func (*Conn) ReadMsgInto ¶ added in v0.69.0
func (*Conn) WithContext ¶ added in v0.69.0
type Dispatcher ¶ added in v0.53.0
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 ¶ added in v0.53.0
func NewDispatcher(rw ReadWriter) *Dispatcher
func (*Dispatcher) Done ¶ added in v0.53.0
func (d *Dispatcher) Done() chan struct{}
func (*Dispatcher) RegisterHandler ¶ added in v0.53.0
func (d *Dispatcher) RegisterHandler(msg Message, handler func(Message))
func (*Dispatcher) Run ¶ added in v0.53.0
func (d *Dispatcher) Run()
Run will block until io.EOF or some error occurs.
func (*Dispatcher) Send ¶ added in v0.53.0
func (d *Dispatcher) Send(m Message) error
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"`
ClientID string `json:"client_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 Message ¶
func DecodeV2MessageFrame ¶ added in v0.69.0
type NatHoleClient ¶
type NatHoleDetectBehavior ¶ added in v0.49.0
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 ¶ added in v0.49.0
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"`
}
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 ¶ added in v0.49.0
type ReadWriter ¶ added in v0.69.0
type ReadWriter interface {
ReadMsg() (Message, error)
ReadMsgInto(Message) error
WriteMsg(Message) error
}
func NewReadWriter ¶ added in v0.69.0
func NewReadWriter(rw io.ReadWriter, wireProtocol string) ReadWriter
NewReadWriter wraps rw with the message codec for the selected wire protocol. An empty protocol keeps the historical v1 behavior for tests and older call sites.
func NewV1ReadWriter ¶ added in v0.69.0
func NewV1ReadWriter(rw io.ReadWriter) ReadWriter
type ReqWorkConn ¶
type ReqWorkConn struct{}
type StartWorkConn ¶
type V1ReadWriter ¶ added in v0.69.0
type V1ReadWriter struct {
// contains filtered or unexported fields
}
func (*V1ReadWriter) ReadMsg ¶ added in v0.69.0
func (rw *V1ReadWriter) ReadMsg() (Message, error)
func (*V1ReadWriter) ReadMsgInto ¶ added in v0.69.0
func (rw *V1ReadWriter) ReadMsgInto(m Message) error
func (*V1ReadWriter) WriteMsg ¶ added in v0.69.0
func (rw *V1ReadWriter) WriteMsg(m Message) error
type V2ReadWriter ¶ added in v0.69.0
type V2ReadWriter struct {
// contains filtered or unexported fields
}
func NewV2ReadWriter ¶ added in v0.69.0
func NewV2ReadWriter(rw io.ReadWriter) *V2ReadWriter
func NewV2ReadWriterWithConn ¶ added in v0.69.0
func NewV2ReadWriterWithConn(conn *wire.Conn) *V2ReadWriter
func (*V2ReadWriter) ReadMsg ¶ added in v0.69.0
func (rw *V2ReadWriter) ReadMsg() (Message, error)
func (*V2ReadWriter) ReadMsgInto ¶ added in v0.69.0
func (rw *V2ReadWriter) ReadMsgInto(m Message) error
func (*V2ReadWriter) WireConn ¶ added in v0.69.0
func (rw *V2ReadWriter) WireConn() *wire.Conn
func (*V2ReadWriter) WriteMsg ¶ added in v0.69.0
func (rw *V2ReadWriter) WriteMsg(m Message) error
Click to show internal directories.
Click to hide internal directories.