Documentation
¶
Index ¶
- Constants
- Variables
- func HookRegister(hookName string, p interface{})
- func Ipv4ToHex(ip string) string
- type Client
- func (c *Client) IsShuttingDown() bool
- func (c *Client) Log(level int, format string, args ...interface{})
- func (c *Client) ProcessLineFromClient(line string) (string, error)
- func (c *Client) ProcessLineFromUpstream(data string) string
- func (c *Client) SendClientSignal(signal string, args ...string)
- func (c *Client) SendIrcError(message string)
- func (c *Client) StartShutdown(reason string)
- func (c *Client) TrafficLog(isUpstream bool, toGateway bool, traffic string)
- type ClientSignal
- type Config
- type ConfigProxy
- type ConfigServer
- type ConfigUpstream
- type Gateway
- type Hook
- type HookClientState
- type HookGatewayClosing
- type HookIrcConnectionPre
- type HookIrcLine
- type HookStatus
- type LEManager
- type MessageTagManager
- func (tags *MessageTagManager) AddTagsFromMessage(client *Client, fromNick string, msg *irc.Message)
- func (tags *MessageTagManager) CanMessageContainClientTags(msg *irc.Message) bool
- func (tags *MessageTagManager) GetTagsFromMessage(client *Client, fromNick string, msg *irc.Message) (MessageTags, bool)
- func (tags *MessageTagManager) RunGarbageCollectionLoop()
- type MessageTags
- type ThrottledStringChannel
- type TransportKiwiirc
- type TransportKiwiircChannel
- type TransportSockjs
- type TransportTcp
- type TransportWebsocket
Constants ¶
View Source
const ( // ClientStateIdle - Client connected and just sat there ClientStateIdle = "idle" // ClientStateConnecting - Connecting upstream ClientStateConnecting = "connecting" // ClientStateRegistering - Registering to the IRC network ClientStateRegistering = "registering" // ClientStateConnected - Connected upstream ClientStateConnected = "connected" // ClientStateEnding - Client is ending its connection ClientStateEnding = "ending" )
Variables ¶
View Source
var (
Version = "-"
)
Functions ¶
func HookRegister ¶
func HookRegister(hookName string, p interface{})
Types ¶
type Client ¶
type Client struct {
Gateway *Gateway
Id uint64
State string
EndWG sync.WaitGroup
SeenQuit bool
Recv chan string
ThrottledRecv *ThrottledStringChannel
UpstreamRecv chan string
UpstreamSend chan string
UpstreamStarted bool
UpstreamConfig *ConfigUpstream
RemoteAddr string
RemoteHostname string
RemotePort int
DestHost string
DestPort int
DestTLS bool
IrcState *irc.State
Encoding string
// Tags get passed upstream via the WEBIRC command
Tags map[string]string
// Captchas may be needed to verify a client
Verified bool
SentPass bool
// Signals for the transport to make use of (data, connection state, etc)
Signals chan ClientSignal
Features struct {
Messagetags bool
Metadata bool
ExtJwt bool
}
// The specific message-tags CAP that the client has requested if we are wrapping it
RequestedMessageTagsCap string
// contains filtered or unexported fields
}
Client - Connecting client struct
func (*Client) IsShuttingDown ¶
func (*Client) ProcessLineFromClient ¶
* ProcessLineFromClient * Processes and makes any changes to a line of data sent from a client
func (*Client) ProcessLineFromUpstream ¶
* ProcessLineFromUpstream * Processes and makes any changes to a line of data sent from an upstream
func (*Client) SendClientSignal ¶
func (*Client) SendIrcError ¶
func (*Client) StartShutdown ¶
type ClientSignal ¶
type ClientSignal [3]string
type Config ¶
type Config struct {
ConfigFile string
LogLevel int
Gateway bool
GatewayName string
GatewayWhitelist []glob.Glob
GatewayThrottle int
GatewayTimeout int
GatewayWebircPassword map[string]string
Proxy ConfigServer
Upstreams []ConfigUpstream
Servers []ConfigServer
ServerTransports []string
RemoteOrigins []glob.Glob
ReverseProxies []net.IPNet
Webroot string
ClientRealname string
ClientUsername string
ClientHostname string
Identd bool
RequiresVerification bool
SendQuitOnClientClose string
ReCaptchaSecret string
ReCaptchaKey string
Secret string
Plugins []string
// contains filtered or unexported fields
}
Config - Config options for the running app
func (*Config) CurrentConfigFile ¶
CurrentConfigFile - Return the full path or command for the config file in use
func (*Config) ResolvePath ¶
ConfigResolvePath - If relative, resolve a path to it's full absolute path relative to the config file
func (*Config) SetConfigFile ¶
type ConfigProxy ¶
type ConfigServer ¶
type ConfigServer struct {
LocalAddr string
BindMode os.FileMode
Port int
TLS bool
CertFile string
KeyFile string
LetsEncryptCacheDir string
}
ConfigServer - A web server config
type ConfigUpstream ¶
type ConfigUpstream struct {
// Plugins may assign an arbitary address to an upstream network
NetworkCommonAddress string
Network string
Hostname string
Port int
TLS bool
Timeout int
Throttle int
WebircPassword string
ServerPassword string
GatewayName string
Proxy *ConfigProxy
}
ConfigUpstream - An upstream config
type Gateway ¶
type Gateway struct {
Config *Config
HttpRouter *http.ServeMux
LogOutput chan string
Clients cmap.ConcurrentMap
Acme *LEManager
Function string
// contains filtered or unexported fields
}
func NewGateway ¶
func (*Gateway) GetRemoteAddressFromRequest ¶
type HookClientState ¶
*
- HookClientState
- Dispatched after a client connects or disconnects
- Types: client.state
func (*HookClientState) Dispatch ¶
func (h *HookClientState) Dispatch(eventType string)
type HookGatewayClosing ¶
type HookGatewayClosing struct {
Hook
}
*
- HookGatewayClosing
- Dispatched when the gateway has been told to shutdown
- Types: gateway.closing
func (*HookGatewayClosing) Dispatch ¶
func (h *HookGatewayClosing) Dispatch(eventType string)
type HookIrcConnectionPre ¶
type HookIrcConnectionPre struct {
Hook
Client *Client
UpstreamConfig *ConfigUpstream
}
*
- HookIrcConnectionPre
- Dispatched just before an IRC connection is attempted
- Types: irc.connection.pre
func (*HookIrcConnectionPre) Dispatch ¶
func (h *HookIrcConnectionPre) Dispatch(eventType string)
type HookIrcLine ¶
type HookIrcLine struct {
Hook
Client *Client
UpstreamConfig *ConfigUpstream
Line string
Message *irc.Message
ToServer bool
}
*
- HookIrcLine
- Dispatched when either:
- * A line arrives from the IRCd, before sending to the client
- * A line arrives from the client, before sending to the IRCd
- Types: irc.line
func (*HookIrcLine) Dispatch ¶
func (h *HookIrcLine) Dispatch(eventType string)
type HookStatus ¶
*
- HookStatus
- Dispatched for each line output of the _status HTTP request
- Types: status.client
func (*HookStatus) Dispatch ¶
func (h *HookStatus) Dispatch(eventType string)
type LEManager ¶
type LEManager struct {
// ensure only one instance of the manager and handler is running
// while allowing multiple listeners to use it
Mutex sync.Mutex
Manager *autocert.Manager
// contains filtered or unexported fields
}
func NewLetsEncryptManager ¶
type MessageTagManager ¶
func NewMessageTagManager ¶
func NewMessageTagManager() *MessageTagManager
func (*MessageTagManager) AddTagsFromMessage ¶
func (tags *MessageTagManager) AddTagsFromMessage(client *Client, fromNick string, msg *irc.Message)
func (*MessageTagManager) CanMessageContainClientTags ¶
func (tags *MessageTagManager) CanMessageContainClientTags(msg *irc.Message) bool
func (*MessageTagManager) GetTagsFromMessage ¶
func (tags *MessageTagManager) GetTagsFromMessage(client *Client, fromNick string, msg *irc.Message) (MessageTags, bool)
func (*MessageTagManager) RunGarbageCollectionLoop ¶
func (tags *MessageTagManager) RunGarbageCollectionLoop()
type MessageTags ¶
type ThrottledStringChannel ¶
type ThrottledStringChannel struct {
Input chan<- string
Output <-chan string
*rate.Limiter
// contains filtered or unexported fields
}
func NewThrottledStringChannel ¶
func NewThrottledStringChannel(wrappedChan chan string, limiter *rate.Limiter) *ThrottledStringChannel
type TransportKiwiirc ¶
type TransportKiwiirc struct {
// contains filtered or unexported fields
}
func (*TransportKiwiirc) Init ¶
func (t *TransportKiwiirc) Init(g *Gateway)
type TransportKiwiircChannel ¶
type TransportSockjs ¶
type TransportSockjs struct {
// contains filtered or unexported fields
}
func (*TransportSockjs) Init ¶
func (t *TransportSockjs) Init(g *Gateway)
type TransportTcp ¶
type TransportTcp struct {
// contains filtered or unexported fields
}
func (*TransportTcp) Init ¶
func (t *TransportTcp) Init(g *Gateway)
func (*TransportTcp) Start ¶
func (t *TransportTcp) Start(lAddr string)
type TransportWebsocket ¶
type TransportWebsocket struct {
// contains filtered or unexported fields
}
func (*TransportWebsocket) Init ¶
func (t *TransportWebsocket) Init(g *Gateway)
Click to show internal directories.
Click to hide internal directories.