Documentation ¶
Index ¶
- type AddHandler
- type AddHandlerFunc
- type AllowedPublicKey
- type Core
- func (c *Core) AddPeer(peer string, intf string) error
- func (c *Core) Address() net.IP
- func (c *Core) CallPeer(u *url.URL, sintf string) error
- func (c *Core) GetDHT() []DHTEntryInfo
- func (c *Core) GetPaths() []PathEntryInfo
- func (c *Core) GetPeers() []PeerInfo
- func (c *Core) GetSelf() SelfInfo
- func (c *Core) GetSessions() []SessionInfo
- func (c *Core) Listen(u *url.URL, sintf string) (*Listener, error)
- func (c *Core) MTU() uint64
- func (c *Core) PublicKey() ed25519.PublicKey
- func (c *Core) ReadFrom(p []byte) (n int, from net.Addr, err error)
- func (c *Core) RemovePeer(uri string, sourceInterface string) error
- func (c *Core) RemovePeers() error
- func (c *Core) SetAdmin(a AddHandler) error
- func (c *Core) SetLogger(log Logger)
- func (c *Core) Stop()
- func (c *Core) Subnet() net.IPNet
- func (c *Core) WriteTo(p []byte, addr net.Addr) (n int, err error)
- type DHTEntryInfo
- type DebugGetDHTRequest
- type DebugGetDHTResponse
- type DebugGetPeersRequest
- type DebugGetPeersResponse
- type DebugGetSelfRequest
- type DebugGetSelfResponse
- type GetNodeInfoRequest
- type GetNodeInfoResponse
- type ListenAddress
- type Listener
- type Logger
- type NodeInfo
- type NodeInfoPayload
- type NodeInfoPrivacy
- type PathEntryInfo
- type Peer
- type PeerInfo
- type SelfInfo
- type SessionInfo
- type SetupOption
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AddHandler ¶
type AddHandler interface {
AddHandler(name, desc string, args []string, handlerfunc AddHandlerFunc) error
}
type AddHandlerFunc ¶
type AddHandlerFunc func(json.RawMessage) (interface{}, error)
type AllowedPublicKey ¶
type Core ¶
type Core struct { // This is the main data structure that holds everything else for a node // We're going to keep our own copy of the provided config - that way we can // guarantee that it will be covered by the mutex phony.Inbox *iwe.PacketConn // contains filtered or unexported fields }
The Core object represents the Mesh node. You should create a Core object for each Mesh node you plan to run.
func New ¶
func New(secret ed25519.PrivateKey, logger Logger, opts ...SetupOption) (*Core, error)
func (*Core) Address ¶
Address gets the IPv6 address of the Mesh node. This is always a /128 address. The IPv6 address is only relevant when the node is operating as an IP router and often is meaningless when embedded into an application, unless that application also implements either VPN functionality or deals with IP packets specifically.
func (*Core) CallPeer ¶
CallPeer calls a peer once. This should be specified in the peer URI format, e.g.:
tcp://a.b.c.d:e socks://a.b.c.d:e/f.g.h.i:j
This does not add the peer to the peer list, so if the connection drops, the peer will not be called again automatically.
func (*Core) GetDHT ¶
func (c *Core) GetDHT() []DHTEntryInfo
func (*Core) GetPaths ¶
func (c *Core) GetPaths() []PathEntryInfo
func (*Core) GetSessions ¶
func (c *Core) GetSessions() []SessionInfo
func (*Core) Listen ¶
Listen starts a new listener (either TCP or TLS). The input should be a url.URL parsed from a string of the form e.g. "tcp://a.b.c.d:e". In the case of a link-local address, the interface should be provided as the second argument.
func (*Core) RemovePeers ¶
func (*Core) SetAdmin ¶
func (c *Core) SetAdmin(a AddHandler) error
SetAdmin must be called after Init and before Start. It sets the admin handler for NodeInfo and the Debug admin functions.
func (*Core) SetLogger ¶
SetLogger sets the output logger of the Mesh node after startup. This may be useful if you want to redirect the output later. Note that this expects a Logger from the github.com/gologme/log package and not from Go's built-in log package.
func (*Core) Subnet ¶
Subnet gets the routed IPv6 subnet of the Mesh node. This is always a /64 subnet. The IPv6 subnet is only relevant when the node is operating as an IP router and often is meaningless when embedded into an application, unless that application also implements either VPN functionality or deals with IP packets specifically.
type DebugGetDHTRequest ¶
type DebugGetDHTRequest struct {
Key string `json:"key"`
}
type DebugGetDHTResponse ¶
type DebugGetDHTResponse map[string]interface{}
type DebugGetPeersRequest ¶
type DebugGetPeersRequest struct {
Key string `json:"key"`
}
type DebugGetPeersResponse ¶
type DebugGetPeersResponse map[string]interface{}
type DebugGetSelfRequest ¶
type DebugGetSelfRequest struct {
Key string `json:"key"`
}
type DebugGetSelfResponse ¶
type DebugGetSelfResponse map[string]interface{}
type GetNodeInfoRequest ¶
type GetNodeInfoRequest struct {
Key string `json:"key"`
}
type GetNodeInfoResponse ¶
type GetNodeInfoResponse map[string]json.RawMessage
type ListenAddress ¶
type ListenAddress string
type NodeInfoPayload ¶
type NodeInfoPayload []byte
NodeInfoPayload represents a RequestNodeInfo response, in bytes.
type NodeInfoPrivacy ¶
type NodeInfoPrivacy bool
type PathEntryInfo ¶
type SessionInfo ¶
type SetupOption ¶
type SetupOption interface {
// contains filtered or unexported methods
}