udphp

package module
v0.0.8 Latest Latest
Warning

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

Go to latest
Published: Oct 23, 2021 License: MIT Imports: 10 Imported by: 0

README

go-udphp-server

Documentation

Index

Constants

View Source
const (
	RouteGreeting  = "greeting"
	RouteConnect   = "connect"
	RouteRegister  = "register"
	RouteEstablish = "establish"
	RouteKey       = "key"
	RouteNotFound  = "not-found"
)

Variables

View Source
var (
	ErrHeaderNotFound  = errors.New("header not found")
	ErrHandlerNotFound = errors.New("handler not found")
)
View Source
var (
	ErrPeerNotFound           = errors.New("peer not found")
	ErrPeerConnectionNotFound = errors.New("peer connection not found")
)
View Source
var (
	ErrAddMustBeUDPAddr = errors.New("could not assert net.Addr to *net.UDPAddr")

	DefaultPeerRepository = NewPeerMemoryRepository
)
View Source
var (
	ErrConnectionIsNil = errors.New("connection is nil")
)
View Source
var (
	ErrPeerConnectionTimeout = errors.New("peer connection timeout")
)

Functions

func GenKeyPair

func GenKeyPair() ([32]byte, [32]byte, error)

func GenSharedSecret

func GenSharedSecret(selfPri, otherPub []byte) ([]byte, error)

func MustJson

func MustJson(v interface{}) []byte

Types

type Client

type Client interface {
	WasKeySent(string) bool
	SetKeySent(string, bool)
	WasKeyReceived(string) bool
	SetKeyReceived(string, bool)
	GetServer() Server
	GetSelf() *Peer
	GetPeer(id string) (*Peer, error)
	SetPeer(*Peer)
	GetPeerConn(id string) (Connection, error)
	SetPeerConn(string, Connection)
	GetServerConn() Connection
	SetServerConn(Connection)
	Connect(id string) error
	Stop()
	Start() error
	RegisteredCallback()
	ConnectingCallback()
	ConnectedCallback()
	OnRegistered(func(Client))
	OnConnecting(func(Client))
	OnConnected(func(Client))
	Handle(handler *Handler)
}

func NewUDPClient

func NewUDPClient(ID string, s Server, sAddr *net.UDPAddr,
	publicKey []byte, privateKey []byte) (Client, error)

NewUDPClient create udp client with sAddr relay address

type Connection

type Connection interface {
	Send(message Message) error
	GetAddr() net.Addr
	GetSecret() ([]byte, error)
	SetSecret([]byte)
}

func NewUDPConn

func NewUDPConn(send chan Message, addr *net.UDPAddr) Connection

type Connections

type Connections map[string]Connection

type Handler added in v0.0.3

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

func NewHandler added in v0.0.3

func NewHandler() *Handler

func (*Handler) Handle added in v0.0.3

func (h *Handler) Handle(path string, handlerFunc HandlerFunc)

func (*Handler) Handlers added in v0.0.3

func (h *Handler) Handlers() map[string]HandlerFunc

type HandlerFunc

type HandlerFunc func(ctx context.Context, serverConnection Connection, req Message) (Message, error)

type Message

type Message interface {
	GetPath() string
	GetPeerID() string
	GetError() error
	GetHeader(string) (string, error)
	RawBody() []byte
	GetAddr() net.Addr
	SetAddr(net.Addr)
	Bytes() []byte
}

func NewUDPErrMessage

func NewUDPErrMessage(err error) Message

func NewUDPMessage

func NewUDPMessage(request []byte) (Message, error)

type Peer

type Peer struct {
	ID         string `json:"id"`
	PublicKey  []byte `json:"public_key"`
	PrivateKey []byte `json:"-"`
	Addr       *net.UDPAddr
}

type PeerMemoryRepository added in v0.0.4

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

func (*PeerMemoryRepository) Create added in v0.0.4

func (r *PeerMemoryRepository) Create(ctx context.Context, peer *Peer) error

func (*PeerMemoryRepository) Get added in v0.0.4

func (r *PeerMemoryRepository) Get(ctx context.Context, id string) (*Peer, error)

func (*PeerMemoryRepository) GetAll added in v0.0.4

func (r *PeerMemoryRepository) GetAll(ctx context.Context) ([]*Peer, error)

func (*PeerMemoryRepository) Remove added in v0.0.4

func (r *PeerMemoryRepository) Remove(ctx context.Context, id string) error

type PeerRepository added in v0.0.4

type PeerRepository interface {
	Create(ctx context.Context, peer *Peer) error
	GetAll(ctx context.Context) ([]*Peer, error)
	Get(ctx context.Context, id string) (*Peer, error)
	Remove(ctx context.Context, id string) error
}

func NewPeerMemoryRepository added in v0.0.4

func NewPeerMemoryRepository() PeerRepository

type Server

type Server interface {
	Stop()
	Listen()
	CreateConnection(addr net.Addr) (Connection, error)
	Handle(handler *Handler)
	PeerRepository(repository PeerRepository)
}

func NewUDPServer

func NewUDPServer(udpAddr *net.UDPAddr, publicKey []byte, privateKey []byte) (Server, error)

type UDPClient

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

func (*UDPClient) Connect

func (c *UDPClient) Connect(id string) error

func (*UDPClient) ConnectedCallback

func (c *UDPClient) ConnectedCallback()

func (*UDPClient) ConnectingCallback

func (c *UDPClient) ConnectingCallback()

func (*UDPClient) GetPeer

func (c *UDPClient) GetPeer(id string) (*Peer, error)

func (*UDPClient) GetPeerConn

func (c *UDPClient) GetPeerConn(id string) (Connection, error)

func (*UDPClient) GetSelf

func (c *UDPClient) GetSelf() *Peer

func (*UDPClient) GetServer

func (c *UDPClient) GetServer() Server

func (*UDPClient) GetServerConn

func (c *UDPClient) GetServerConn() Connection

func (*UDPClient) Handle

func (c *UDPClient) Handle(handler *Handler)

func (*UDPClient) OnConnected

func (c *UDPClient) OnConnected(f func(Client))

func (*UDPClient) OnConnecting

func (c *UDPClient) OnConnecting(f func(Client))

func (*UDPClient) OnRegistered

func (c *UDPClient) OnRegistered(f func(Client))

func (*UDPClient) RegisteredCallback

func (c *UDPClient) RegisteredCallback()

func (*UDPClient) SetKeyReceived

func (c *UDPClient) SetKeyReceived(id string, b bool)

func (*UDPClient) SetKeySent

func (c *UDPClient) SetKeySent(id string, b bool)

func (*UDPClient) SetPeer

func (c *UDPClient) SetPeer(peer *Peer)

func (*UDPClient) SetPeerConn

func (c *UDPClient) SetPeerConn(id string, connection Connection)

func (*UDPClient) SetServerConn

func (c *UDPClient) SetServerConn(connection Connection)

func (*UDPClient) Start

func (c *UDPClient) Start() error

func (*UDPClient) Stop

func (c *UDPClient) Stop()

func (*UDPClient) WasKeyReceived

func (c *UDPClient) WasKeyReceived(id string) bool

func (*UDPClient) WasKeySent

func (c *UDPClient) WasKeySent(id string) bool

type UDPConnection

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

func (*UDPConnection) GetAddr

func (c *UDPConnection) GetAddr() net.Addr

func (*UDPConnection) GetSecret

func (c *UDPConnection) GetSecret() ([]byte, error)

func (*UDPConnection) Send

func (c *UDPConnection) Send(message Message) error

func (*UDPConnection) SetSecret

func (c *UDPConnection) SetSecret(secret []byte)

type UDPMessage

type UDPMessage struct {
	Path    string            `json:"path"`
	PeerID  string            `json:"peerID"`
	Error   string            `json:"error"`
	Headers map[string]string `json:"headers"`
	Body    []byte            `json:"body"`
	Addr    *net.UDPAddr
}

func (*UDPMessage) Bytes

func (r *UDPMessage) Bytes() []byte

func (*UDPMessage) GetAddr

func (r *UDPMessage) GetAddr() net.Addr

func (*UDPMessage) GetError

func (r *UDPMessage) GetError() error

func (*UDPMessage) GetHeader

func (r *UDPMessage) GetHeader(s string) (string, error)

func (*UDPMessage) GetPath

func (r *UDPMessage) GetPath() string

func (*UDPMessage) GetPeerID

func (r *UDPMessage) GetPeerID() string

func (*UDPMessage) RawBody

func (r *UDPMessage) RawBody() []byte

func (*UDPMessage) SetAddr

func (r *UDPMessage) SetAddr(addr net.Addr)

type UDPServer

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

func (*UDPServer) CreateConnection

func (s *UDPServer) CreateConnection(addr net.Addr) (Connection, error)

func (*UDPServer) Handle

func (s *UDPServer) Handle(handler *Handler)

func (*UDPServer) Listen

func (s *UDPServer) Listen()

func (*UDPServer) PeerRepository added in v0.0.4

func (s *UDPServer) PeerRepository(repository PeerRepository)

func (*UDPServer) Stop

func (s *UDPServer) Stop()

Jump to

Keyboard shortcuts

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