Documentation ¶
Overview ¶
Package campfire implements the "camp fire" protocol.
Index ¶
Constants ¶
const PSKSize = 32
PSKSize is the size of the PSK in bytes.
const Protocol = "/webmesh/campfire/1.0.0"
Protocol is the protocol name.
Variables ¶
var ( // ErrClosed is returned when the camp fire is closed. ErrClosed = net.ErrClosed )
var Now = time.Now
Now is the current time. It is a variable so it can be mocked out in tests.
Functions ¶
func GeneratePSK ¶ added in v0.1.13
GeneratePSK generates a random PSK of length PSKSize.
func Join ¶
func Join(ctx context.Context, campfire *CampfireURI) (io.ReadWriteCloser, error)
Join will attempt to join the peer waiting at the given location.
func MustGeneratePSK ¶ added in v0.1.13
func MustGeneratePSK() []byte
MustGeneratePSK generates a random PSK of length PSKSize. It panics if an error occurs.
Types ¶
type CampfireChannel ¶ added in v0.1.13
type CampfireChannel interface { // Accept returns a connection to a peer. Accept() (io.ReadWriteCloser, error) // Close closes the camp fire. Close() error // Errors returns a channel of errors. Errors() <-chan error // Expired returns a channel that is closed when the camp fire expires. Expired() <-chan struct{} // Opened returns true if the camp fire is open. Opened() bool }
CampfireChannel is a connection to one or more peers sharing the same pre-shared key.
func Wait ¶ added in v0.1.5
func Wait(ctx context.Context, camp *CampfireURI) (CampfireChannel, error)
Wait will wait for peers to join at the given location.
type CampfireURI ¶ added in v0.1.13
type CampfireURI struct { TURNServers []string // Username for TURN authentication TURNUsername string // Username for TURN authentication TURNPassword string // Password for TURN authentication StunHosts []string // List of STUN server hosts StunPorts []string // List of STUN server ports RemoteHosts []string // List of remote hosts RemotePorts []string // List of remote ports Fingerprint string // Raw query string, representing fingerprint PSK []byte // Pre-shared key }
CampfireURI represents the components parsed from a camp URL.
func ParseCampfireURI ¶ added in v0.1.13
func ParseCampfireURI(rawURL string) (*CampfireURI, error)
ParseCampfireURI parses the given rawURL and returns a CampfireURI struct.
func (*CampfireURI) EncodeURI ¶ added in v0.1.13
func (c *CampfireURI) EncodeURI() string
EncodeURI encodes the CampfireURI into a string.
type Location ¶
type Location struct { // PSK is the pre-shared key. PSK []byte // LocalSecret is the computed local secret from the PSK. LocalSecret string // RemoteSecret is the computed remote secret from the PSK. RemoteSecret string // TURNServer is the selected TURN server. TURNServer string // ExpiresAt is the time at which the campfire expires. ExpiresAt time.Time }
Location is the secret and location of a campfire.
func Find ¶
Find finds a campfire using the given PSK and TURN servers. If turnServers is empty, a default list will be fetched from always-online-stun.
func (*Location) Expired ¶
func (l *Location) Expired() <-chan struct{}
Expired returns a channel that is closed when the campfire expires.
func (*Location) LocalUfrag ¶ added in v0.1.5
LocalUfrag returns the local ufrag.
func (*Location) RemoteUfrag ¶ added in v0.1.5
RemoteUfrag returns the remote ufrag.
func (*Location) TURNSessionID ¶ added in v0.1.5
TURNSessionID returns the TURN session ID.