go-stun: github.com/ccding/go-stun/stun Index | Files

package stun

import "github.com/ccding/go-stun/stun"

Package stun is a STUN (RFC 3489 and RFC 5389) client implementation in golang.

It is extremely easy to use -- just one line of code.

nat, host, err := stun.NewClient().Discover()

More details please go to `main.go`.

Index

Package Files

attribute.go client.go const.go discover.go doc.go host.go log.go net.go packet.go response.go tests.go utils.go

Constants

const (
    DefaultServerAddr   = "stun.ekiga.net:3478"
    DefaultSoftwareName = "StunClient"
)

Default server address and client name.

type Client Uses

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

Client is a STUN client, which can be set STUN server address and is used to discover NAT type.

func NewClient Uses

func NewClient() *Client

NewClient returns a client without network connection. The network connection will be build when calling Discover function.

func NewClientWithConnection Uses

func NewClientWithConnection(conn net.PacketConn) *Client

NewClientWithConnection returns a client which uses the given connection. Please note the connection should be acquired via net.Listen* method.

func (*Client) Discover Uses

func (c *Client) Discover() (NATType, *Host, error)

Discover contacts the STUN server and gets the response of NAT type, host for UDP punching.

func (*Client) Keepalive Uses

func (c *Client) Keepalive() (*Host, error)

Keepalive sends and receives a bind request, which ensures the mapping stays open Only applicable when client was created with a connection.

func (*Client) SetServerAddr Uses

func (c *Client) SetServerAddr(address string)

SetServerAddr allows user to set the transport layer STUN server address.

func (*Client) SetServerHost Uses

func (c *Client) SetServerHost(host string, port int)

SetServerHost allows user to set the STUN hostname and port.

func (*Client) SetSoftwareName Uses

func (c *Client) SetSoftwareName(name string)

SetSoftwareName allows user to set the name of the software, which is used for logging purpose (NOT used in the current implementation).

func (*Client) SetVVerbose Uses

func (c *Client) SetVVerbose(v bool)

SetVVerbose sets the client to be in the double verbose mode, which prints information and packet in the discover process.

func (*Client) SetVerbose Uses

func (c *Client) SetVerbose(v bool)

SetVerbose sets the client to be in the verbose mode, which prints information in the discover process.

type Host Uses

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

Host defines the network address including address family, IP address and port.

func (*Host) Family Uses

func (h *Host) Family() uint16

Family returns the family type of a host (IPv4 or IPv6).

func (*Host) IP Uses

func (h *Host) IP() string

IP returns the internet protocol address of the host.

func (*Host) Port Uses

func (h *Host) Port() uint16

Port returns the port number of the host.

func (*Host) String Uses

func (h *Host) String() string

String returns the string representation of the host address.

func (*Host) TransportAddr Uses

func (h *Host) TransportAddr() string

TransportAddr returns the transport layer address of the host.

type Logger Uses

type Logger struct {
    log.Logger
    // contains filtered or unexported fields
}

Logger is a simple logger specified for this STUN client.

func NewLogger Uses

func NewLogger() *Logger

NewLogger creates a default logger.

func (*Logger) Debug Uses

func (l *Logger) Debug(v ...interface{})

Debug outputs the log in the format of log.Print.

func (*Logger) Debugf Uses

func (l *Logger) Debugf(format string, v ...interface{})

Debugf outputs the log in the format of log.Printf.

func (*Logger) Debugln Uses

func (l *Logger) Debugln(v ...interface{})

Debugln outputs the log in the format of log.Println.

func (*Logger) Info Uses

func (l *Logger) Info(v ...interface{})

Info outputs the log in the format of log.Print.

func (*Logger) Infof Uses

func (l *Logger) Infof(format string, v ...interface{})

Infof outputs the log in the format of log.Printf.

func (*Logger) Infoln Uses

func (l *Logger) Infoln(v ...interface{})

Infoln outputs the log in the format of log.Println.

func (*Logger) SetDebug Uses

func (l *Logger) SetDebug(v bool)

SetDebug sets the logger running in debug mode or not.

func (*Logger) SetInfo Uses

func (l *Logger) SetInfo(v bool)

SetInfo sets the logger running in info mode or not.

type NATType Uses

type NATType int

NATType is the type of NAT described by int.

const (
    NATError NATType = iota
    NATUnknown
    NATNone
    NATBlocked
    NATFull
    NATSymmetric
    NATRestricted
    NATPortRestricted
    NATSymmetricUDPFirewall

    // Deprecated spellings of these constants
    NATSymetric            = NATSymmetric
    NATSymetricUDPFirewall = NATSymmetricUDPFirewall
)

NAT types.

func (NATType) String Uses

func (nat NATType) String() string

Package stun imports 12 packages (graph) and is imported by 27 packages. Updated 2018-07-26. Refresh now. Tools for package owners.