Documentation
¶
Index ¶
- Constants
- Variables
- func CanSeeChannel(client *Client, channel *Channel) bool
- func ComparePassword(hash, password []byte) error
- func DecodePassword(encoded string) (decoded []byte, err error)
- func FullVersion() string
- func IsHostname(name string) bool
- func NewNumericReply(target *Client, code NumericCode, format string, args ...interface{}) string
- func NewStringReply(source Identifiable, code StringCode, format string, args ...interface{}) string
- func RplAuthenticate(client *Client, arg string) string
- func RplCTCPAction(source Identifiable, target Identifiable, action CTCPText) string
- func RplCap(client *Client, subCommand CapSubCommand, arg interface{}) string
- func RplChannelMode(client *Client, channel *Channel, changes ChannelModeChanges) string
- func RplError(message string) string
- func RplInviteMsg(inviter *Client, invitee *Client, channel Name) string
- func RplJoin(client *Client, channel *Channel) string
- func RplKick(channel *Channel, client *Client, target *Client, comment Text) string
- func RplKill(client *Client, target *Client, comment Text) string
- func RplModeChanges(client *Client, target *Client, changes ModeChanges) string
- func RplNick(source Identifiable, newNick Name) string
- func RplNotice(source Identifiable, target Identifiable, message Text) string
- func RplPart(client *Client, channel *Channel, message Text) string
- func RplPing(target Identifiable) string
- func RplPong(client *Client, msg Text) string
- func RplPrivMsg(source Identifiable, target Identifiable, message Text) string
- func RplQuit(client *Client, message Text) string
- func RplTopicMsg(source Identifiable, channel *Channel) string
- func SHA256(data string) string
- type AuthenticateCommand
- type AwayCommand
- type Base64BCryptPasswordHasher
- type BaseCommand
- type CTCPText
- type CapCommand
- type CapModifier
- type CapState
- type CapSubCommand
- type Capability
- type CapabilitySet
- type Channel
- func (channel *Channel) CanSpeak(client *Client) bool
- func (channel *Channel) CheckKey(key Text) bool
- func (channel *Channel) ClientIsOperator(client *Client) bool
- func (channel *Channel) GetTopic(client *Client)
- func (channel *Channel) Id() Name
- func (channel *Channel) Invite(invitee *Client, inviter *Client)
- func (channel *Channel) IsEmpty() bool
- func (channel *Channel) IsFull() bool
- func (channel *Channel) Join(client *Client, key Text)
- func (channel *Channel) Kick(client *Client, target *Client, comment Text)
- func (channel *Channel) Mode(client *Client, changes ChannelModeChanges)
- func (channel *Channel) ModeString(client *Client) (str string)
- func (channel *Channel) Names(client *Client)
- func (channel *Channel) Nick() Name
- func (channel *Channel) Nicks(target *Client) []string
- func (channel *Channel) Notice(client *Client, message Text)
- func (channel *Channel) Part(client *Client, message Text)
- func (channel *Channel) PrivMsg(client *Client, message Text)
- func (channel *Channel) Quit(client *Client)
- func (channel *Channel) SetTopic(client *Client, topic Text)
- func (channel *Channel) ShowMaskList(client *Client, mode ChannelMode)
- func (channel *Channel) String() string
- type ChannelMode
- type ChannelModeChange
- type ChannelModeChanges
- type ChannelModeCommand
- type ChannelModeSet
- type ChannelModes
- type ChannelNameMap
- type ChannelSet
- type Client
- func (client *Client) Active()
- func (client *Client) CanSpeak(target *Client) bool
- func (client *Client) ChangeNickname(nickname Name)
- func (target *Client) ErrAlreadyRegistered()
- func (target *Client) ErrBadChannelKey(channel *Channel)
- func (target *Client) ErrBannedFromChan(channel *Channel)
- func (target *Client) ErrCannotSendToChan(channel *Channel)
- func (target *Client) ErrCannotSendToUser(nick Name, reason string)
- func (target *Client) ErrChanOPrivIsNeeded(channel *Channel)
- func (target *Client) ErrChannelIsFull(channel *Channel)
- func (target *Client) ErrConfiguredMode(mode ChannelMode)
- func (target *Client) ErrErroneusNickname(nick Name)
- func (target *Client) ErrInvalidCapCmd(subCommand CapSubCommand)
- func (target *Client) ErrInviteOnlyChan(channel *Channel)
- func (target *Client) ErrInviteOnlyChannel(channel *Channel)
- func (target *Client) ErrNeedMoreParams(command StringCode)
- func (target *Client) ErrNickLocked()
- func (target *Client) ErrNickNameInUse(nick Name)
- func (target *Client) ErrNoChanModes(channel *Channel)
- func (target *Client) ErrNoMOTD()
- func (target *Client) ErrNoNicknameGiven()
- func (target *Client) ErrNoPrivileges()
- func (target *Client) ErrNoSuchChannel(channel Name)
- func (target *Client) ErrNoSuchNick(nick Name)
- func (target *Client) ErrNoSuchServer(server Name)
- func (target *Client) ErrNotOnChannel(channel *Channel)
- func (target *Client) ErrPasswdMismatch()
- func (target *Client) ErrRestricted()
- func (target *Client) ErrSaslAborted()
- func (target *Client) ErrSaslAlready()
- func (target *Client) ErrSaslFail(message string)
- func (target *Client) ErrSaslTooLong()
- func (target *Client) ErrUnknownCommand(code StringCode)
- func (target *Client) ErrUnknownMode(mode ChannelMode, channel *Channel)
- func (target *Client) ErrUserNotInChannel(channel *Channel, client *Client)
- func (target *Client) ErrUserOnChannel(channel *Channel, member *Client)
- func (target *Client) ErrUsersDontMatch()
- func (target *Client) ErrWasNoSuchNick(nickname Name)
- func (client *Client) Friends() *ClientSet
- func (client *Client) HasNick() bool
- func (client *Client) HasUsername() bool
- func (c *Client) Id() Name
- func (client *Client) Idle()
- func (client *Client) IdleSeconds() uint64
- func (client *Client) IdleTime() time.Duration
- func (c *Client) ModeString() (str string)
- func (target *Client) MultilineReply(names []string, code NumericCode, format string, args ...interface{})
- func (c *Client) Nick() Name
- func (target *Client) NumericReply(code NumericCode, format string, args ...interface{})
- func (client *Client) Quit(message Text)
- func (client *Client) Register()
- func (client *Client) Reply(reply string)
- func (target *Client) RplAway(client *Client)
- func (target *Client) RplBanList(channel *Channel, mask Name)
- func (target *Client) RplChannelModeIs(channel *Channel)
- func (target *Client) RplCreated()
- func (target *Client) RplEndOfBanList(channel *Channel)
- func (target *Client) RplEndOfExceptList(channel *Channel)
- func (target *Client) RplEndOfInviteList(channel *Channel)
- func (target *Client) RplEndOfMaskList(mode ChannelMode, channel *Channel)
- func (target *Client) RplEndOfNames(channel *Channel)
- func (target *Client) RplEndOfWho(name Name)
- func (target *Client) RplEndOfWhoWas(nickname Name)
- func (target *Client) RplEndOfWhois(client *Client)
- func (target *Client) RplExceptList(channel *Channel, mask Name)
- func (target *Client) RplInviteList(channel *Channel, mask Name)
- func (target *Client) RplInviting(invitee *Client, channel Name)
- func (target *Client) RplInvitingMsg(invitee *Client, channel Name)
- func (target *Client) RplIsOn(nicks []string)
- func (target *Client) RplLUserChannels()
- func (target *Client) RplLUserClient()
- func (target *Client) RplLUserMe()
- func (target *Client) RplLUserOp()
- func (target *Client) RplLUserUnknown()
- func (target *Client) RplList(channel *Channel)
- func (target *Client) RplListEnd(server *Server)
- func (target *Client) RplLoggedIn(authcid string)
- func (target *Client) RplLoggedOut()
- func (target *Client) RplMOTD(line string)
- func (target *Client) RplMOTDEnd()
- func (target *Client) RplMOTDStart()
- func (target *Client) RplMaskList(mode ChannelMode, channel *Channel, mask Name)
- func (target *Client) RplMyInfo()
- func (target *Client) RplNamReply(channel *Channel)
- func (target *Client) RplNoTopic(channel *Channel)
- func (target *Client) RplNowAway()
- func (target *Client) RplRehashing()
- func (target *Client) RplSaslMechs(mechs ...string)
- func (target *Client) RplSaslSuccess()
- func (target *Client) RplTime()
- func (target *Client) RplTopic(channel *Channel)
- func (target *Client) RplUModeIs(client *Client)
- func (target *Client) RplUnAway()
- func (target *Client) RplVersion()
- func (target *Client) RplWelcome()
- func (target *Client) RplWhoReply(channel *Channel, client *Client)
- func (target *Client) RplWhoWasUser(whoWas *WhoWas)
- func (target *Client) RplWhois(client *Client)
- func (target *Client) RplWhoisChannels(client *Client)
- func (target *Client) RplWhoisIdle(client *Client)
- func (target *Client) RplWhoisLoggedIn(client *Client)
- func (target *Client) RplWhoisOperator(client *Client)
- func (target *Client) RplWhoisSecure(client *Client)
- func (target *Client) RplWhoisServer(client *Client)
- func (target *Client) RplWhoisUser(client *Client)
- func (target *Client) RplYourHost()
- func (target *Client) RplYoureOper()
- func (c *Client) Server() Name
- func (c *Client) ServerInfo() string
- func (client *Client) SetNickname(nickname Name)
- func (client *Client) SignonTime() int64
- func (c *Client) String() string
- func (client *Client) Touch()
- func (c *Client) UserHost(cloacked bool) Name
- func (client *Client) WhoisChannelsNames(target *Client) []string
- type ClientLookupSet
- func (clients *ClientLookupSet) Add(client *Client) error
- func (clients *ClientLookupSet) Count() int
- func (clients *ClientLookupSet) Find(userhost Name) *Client
- func (clients *ClientLookupSet) FindAll(userhost Name) *ClientSet
- func (clients *ClientLookupSet) Get(nick Name) *Client
- func (clients *ClientLookupSet) Range(f func(nick Name, client *Client) bool)
- func (clients *ClientLookupSet) Remove(client *Client) error
- type ClientSet
- type Command
- func ParseAuthenticateCommand(args []string) (Command, error)
- func ParseAwayCommand(args []string) (Command, error)
- func ParseCapCommand(args []string) (Command, error)
- func ParseChannelModeCommand(channel Name, args []string) (Command, error)
- func ParseCommand(line string) (cmd Command, err error)
- func ParseInviteCommand(args []string) (Command, error)
- func ParseIsOnCommand(args []string) (Command, error)
- func ParseJoinCommand(args []string) (Command, error)
- func ParseKickCommand(args []string) (Command, error)
- func ParseKillCommand(args []string) (Command, error)
- func ParseLUsersCommand(args []string) (Command, error)
- func ParseListCommand(args []string) (Command, error)
- func ParseMOTDCommand(args []string) (Command, error)
- func ParseModeCommand(args []string) (Command, error)
- func ParseNamesCommand(args []string) (Command, error)
- func ParseNickCommand(args []string) (Command, error)
- func ParseNoticeCommand(args []string) (Command, error)
- func ParseOperCommand(args []string) (Command, error)
- func ParseOperNickCommand(args []string) (Command, error)
- func ParsePartCommand(args []string) (Command, error)
- func ParsePassCommand(args []string) (Command, error)
- func ParsePingCommand(args []string) (Command, error)
- func ParsePongCommand(args []string) (Command, error)
- func ParsePrivMsgCommand(args []string) (Command, error)
- func ParseQuitCommand(args []string) (Command, error)
- func ParseRehashCommand(args []string) (Command, error)
- func ParseTimeCommand(args []string) (Command, error)
- func ParseTopicCommand(args []string) (Command, error)
- func ParseUserCommand(args []string) (Command, error)
- func ParseUserModeCommand(nickname Name, args []string) (Command, error)
- func ParseVersionCommand(args []string) (Command, error)
- func ParseWallopsCommand(args []string) (Command, error)
- func ParseWhoCommand(args []string) (Command, error)
- func ParseWhoWasCommand(args []string) (Command, error)
- func ParseWhoisCommand(args []string) (Command, error)
- type Config
- type Counter
- type Identifiable
- type Identity
- type InviteCommand
- type IsOnCommand
- type JoinCommand
- type KickCommand
- type KillCommand
- type LUsersCommand
- type ListCommand
- type MOTDCommand
- type MemberSet
- func (set *MemberSet) Add(member *Client)
- func (set *MemberSet) Count() int
- func (set *MemberSet) Get(member *Client) *ChannelModeSet
- func (set *MemberSet) Has(member *Client) bool
- func (set *MemberSet) HasMode(member *Client, mode ChannelMode) bool
- func (set *MemberSet) Range(f func(client *Client, modes *ChannelModeSet) bool)
- func (set *MemberSet) Remove(member *Client)
- type MemoryPasswordStore
- type Metrics
- func (m *Metrics) Counter(subsystem, name string) prometheus.Counter
- func (m *Metrics) Gauge(subsystem, name string) prometheus.Gauge
- func (m *Metrics) GaugeVec(subsystem, name string) *prometheus.GaugeVec
- func (m *Metrics) Handler() http.Handler
- func (m *Metrics) NewCounter(subsystem, name, help string) prometheus.Counter
- func (m *Metrics) NewCounterFunc(subsystem, name, help string, f func() float64) prometheus.CounterFunc
- func (m *Metrics) NewGauge(subsystem, name, help string) prometheus.Gauge
- func (m *Metrics) NewGaugeFunc(subsystem, name, help string, f func() float64) prometheus.GaugeFunc
- func (m *Metrics) NewGaugeVec(subsystem, name, help string, labels []string) *prometheus.GaugeVec
- func (m *Metrics) NewSummary(subsystem, name, help string) prometheus.Summary
- func (m *Metrics) NewSummaryVec(subsystem, name, help string, labels []string) *prometheus.SummaryVec
- func (m *Metrics) Run(addr string)
- func (m *Metrics) Summary(subsystem, name string) prometheus.Summary
- func (m *Metrics) SummaryVec(subsystem, name string) *prometheus.SummaryVec
- type ModeChange
- type ModeChanges
- type ModeCommand
- type ModeOp
- type Name
- type NamesCommand
- type NickCommand
- type NoticeCommand
- type NumericCode
- type OperCommand
- type OperNickCommand
- type PartCommand
- type PassCommand
- type PassConfig
- type PasswordHasher
- type PasswordStore
- type PasswordStoreOpts
- type PingCommand
- type PongCommand
- type PrivMsgCommand
- type QuitCommand
- type RFC1459UserCommand
- type RFC2812UserCommand
- type RegServerCommand
- type RehashCommand
- type ReplyCode
- type SaslState
- type Server
- func (server *Server) Global(message string)
- func (server *Server) Globalf(format string, args ...interface{})
- func (s *Server) Id() Name
- func (server *Server) MOTD(client *Client)
- func (s *Server) Network() Name
- func (s *Server) Nick() Name
- func (s *Server) Rehash() error
- func (server *Server) Reply(target *Client, message string)
- func (server *Server) Replyf(target *Client, format string, args ...interface{})
- func (server *Server) Run()
- func (server *Server) Shutdown()
- func (server *Server) Stop()
- func (s *Server) String() string
- func (server *Server) Wallops(message string)
- func (server *Server) Wallopsf(format string, args ...interface{})
- type ServerCommand
- type Socket
- type StringCode
- type TLSConfig
- type Text
- type TimeCommand
- type TopicCommand
- type UnknownCommand
- type UserCommand
- type UserMaskSet
- type UserMode
- type UserModes
- type VersionCommand
- type WallopsCommand
- type WhoCommand
- type WhoWas
- type WhoWasCommand
- type WhoWasList
- type WhoisCommand
Constants ¶
const ( IDLE_TIMEOUT = time.Minute // how long before a client is considered idle QUIT_TIMEOUT = time.Minute // how long after idle before a client is kicked )
const ( CRLF = "\r\n" MAX_REPLY_LEN = 512 - len(CRLF) // string codes AUTHENTICATE StringCode = "AUTHENTICATE" // SASL AWAY StringCode = "AWAY" CAP StringCode = "CAP" ERROR StringCode = "ERROR" INVITE StringCode = "INVITE" ISON StringCode = "ISON" JOIN StringCode = "JOIN" KICK StringCode = "KICK" KILL StringCode = "KILL" LIST StringCode = "LIST" MODE StringCode = "MODE" MOTD StringCode = "MOTD" NAMES StringCode = "NAMES" NICK StringCode = "NICK" NOTICE StringCode = "NOTICE" ONICK StringCode = "ONICK" OPER StringCode = "OPER" REHASH StringCode = "REHASH" PART StringCode = "PART" PASS StringCode = "PASS" PING StringCode = "PING" PONG StringCode = "PONG" PRIVMSG StringCode = "PRIVMSG" QUIT StringCode = "QUIT" TIME StringCode = "TIME" LUSERS StringCode = "LUSERS" TOPIC StringCode = "TOPIC" USER StringCode = "USER" VERSION StringCode = "VERSION" WALLOPS StringCode = "WALLOPS" WHO StringCode = "WHO" WHOIS StringCode = "WHOIS" WHOWAS StringCode = "WHOWAS" // numeric codes RPL_WELCOME NumericCode = 1 RPL_YOURHOST NumericCode = 2 RPL_CREATED NumericCode = 3 RPL_MYINFO NumericCode = 4 RPL_BOUNCE NumericCode = 5 RPL_TRACELINK NumericCode = 200 RPL_TRACECONNECTING NumericCode = 201 RPL_TRACEHANDSHAKE NumericCode = 202 RPL_TRACEUNKNOWN NumericCode = 203 RPL_TRACEOPERATOR NumericCode = 204 RPL_TRACEUSER NumericCode = 205 RPL_TRACESERVER NumericCode = 206 RPL_TRACESERVICE NumericCode = 207 RPL_TRACENEWTYPE NumericCode = 208 RPL_TRACECLASS NumericCode = 209 RPL_TRACERECONNECT NumericCode = 210 RPL_STATSLINKINFO NumericCode = 211 RPL_STATSCOMMANDS NumericCode = 212 RPL_ENDOFSTATS NumericCode = 219 RPL_UMODEIS NumericCode = 221 RPL_SERVLIST NumericCode = 234 RPL_SERVLISTEND NumericCode = 235 RPL_STATSUPTIME NumericCode = 242 RPL_STATSOLINE NumericCode = 243 RPL_LUSERCLIENT NumericCode = 251 RPL_LUSEROP NumericCode = 252 RPL_LUSERUNKNOWN NumericCode = 253 RPL_LUSERCHANNELS NumericCode = 254 RPL_LUSERME NumericCode = 255 RPL_ADMINME NumericCode = 256 RPL_ADMINLOC1 NumericCode = 257 RPL_ADMINLOC2 NumericCode = 258 RPL_ADMINEMAIL NumericCode = 259 RPL_TRACELOG NumericCode = 261 RPL_TRACEEND NumericCode = 262 RPL_TRYAGAIN NumericCode = 263 RPL_AWAY NumericCode = 301 RPL_USERHOST NumericCode = 302 RPL_ISON NumericCode = 303 RPL_UNAWAY NumericCode = 305 RPL_NOWAWAY NumericCode = 306 RPL_WHOISUSER NumericCode = 311 RPL_WHOISSERVER NumericCode = 312 RPL_WHOISOPERATOR NumericCode = 313 RPL_WHOWASUSER NumericCode = 314 RPL_ENDOFWHO NumericCode = 315 RPL_WHOISIDLE NumericCode = 317 RPL_ENDOFWHOIS NumericCode = 318 RPL_WHOISCHANNELS NumericCode = 319 RPL_LIST NumericCode = 322 RPL_LISTEND NumericCode = 323 RPL_CHANNELMODEIS NumericCode = 324 RPL_UNIQOPIS NumericCode = 325 RPL_WHOISLOGGEDIN NumericCode = 330 RPL_NOTOPIC NumericCode = 331 RPL_TOPIC NumericCode = 332 RPL_INVITING NumericCode = 341 RPL_SUMMONING NumericCode = 342 RPL_INVITELIST NumericCode = 346 RPL_ENDOFINVITELIST NumericCode = 347 RPL_EXCEPTLIST NumericCode = 348 RPL_ENDOFEXCEPTLIST NumericCode = 349 RPL_VERSION NumericCode = 351 RPL_WHOREPLY NumericCode = 352 RPL_NAMREPLY NumericCode = 353 RPL_LINKS NumericCode = 364 RPL_ENDOFLINKS NumericCode = 365 RPL_ENDOFNAMES NumericCode = 366 RPL_BANLIST NumericCode = 367 RPL_ENDOFBANLIST NumericCode = 368 RPL_ENDOFWHOWAS NumericCode = 369 RPL_INFO NumericCode = 371 RPL_MOTD NumericCode = 372 RPL_ENDOFINFO NumericCode = 374 RPL_MOTDSTART NumericCode = 375 RPL_ENDOFMOTD NumericCode = 376 RPL_YOUREOPER NumericCode = 381 RPL_REHASHING NumericCode = 382 RPL_YOURESERVICE NumericCode = 383 RPL_TIME NumericCode = 391 RPL_USERSSTART NumericCode = 392 RPL_USERS NumericCode = 393 RPL_ENDOFUSERS NumericCode = 394 RPL_NOUSERS NumericCode = 395 ERR_NOSUCHNICK NumericCode = 401 ERR_NOSUCHSERVER NumericCode = 402 ERR_NOSUCHCHANNEL NumericCode = 403 ERR_CANNOTSENDTOCHAN NumericCode = 404 ERR_TOOMANYCHANNELS NumericCode = 405 ERR_WASNOSUCHNICK NumericCode = 406 ERR_TOOMANYTARGETS NumericCode = 407 ERR_NOSUCHSERVICE NumericCode = 408 ERR_NOORIGIN NumericCode = 409 ERR_INVALIDCAPCMD NumericCode = 410 ERR_NORECIPIENT NumericCode = 411 ERR_NOTEXTTOSEND NumericCode = 412 ERR_NOTOPLEVEL NumericCode = 413 ERR_WILDTOPLEVEL NumericCode = 414 ERR_BADMASK NumericCode = 415 ERR_UNKNOWNCOMMAND NumericCode = 421 ERR_NOMOTD NumericCode = 422 ERR_NOADMININFO NumericCode = 423 ERR_FILEERROR NumericCode = 424 ERR_NONICKNAMEGIVEN NumericCode = 431 ERR_ERRONEUSNICKNAME NumericCode = 432 ERR_NICKNAMEINUSE NumericCode = 433 ERR_NICKCOLLISION NumericCode = 436 ERR_UNAVAILRESOURCE NumericCode = 437 ERR_USERNOTINCHANNEL NumericCode = 441 ERR_NOTONCHANNEL NumericCode = 442 ERR_USERONCHANNEL NumericCode = 443 ERR_NOLOGIN NumericCode = 444 ERR_SUMMONDISABLED NumericCode = 445 ERR_USERSDISABLED NumericCode = 446 ERR_NOTREGISTERED NumericCode = 451 ERR_NEEDMOREPARAMS NumericCode = 461 ERR_ALREADYREGISTRED NumericCode = 462 ERR_NOPERMFORHOST NumericCode = 463 ERR_PASSWDMISMATCH NumericCode = 464 ERR_YOUREBANNEDCREEP NumericCode = 465 ERR_YOUWILLBEBANNED NumericCode = 466 ERR_KEYSET NumericCode = 467 ERR_CHANNELISFULL NumericCode = 471 ERR_UNKNOWNMODE NumericCode = 472 ERR_INVITEONLYCHAN NumericCode = 473 ERR_BANNEDFROMCHAN NumericCode = 474 ERR_BADCHANNELKEY NumericCode = 475 ERR_BADCHANMASK NumericCode = 476 ERR_NOCHANMODES NumericCode = 477 ERR_BANLISTFULL NumericCode = 478 ERR_NOPRIVILEGES NumericCode = 481 ERR_CHANOPRIVSNEEDED NumericCode = 482 ERR_CANTKILLSERVER NumericCode = 483 ERR_RESTRICTED NumericCode = 484 ERR_UNIQOPPRIVSNEEDED NumericCode = 485 ERR_NOOPERHOST NumericCode = 491 ERR_CANNOTSENDTOUSER NumericCode = 492 ERR_UMODEUNKNOWNFLAG NumericCode = 501 ERR_USERSDONTMATCH NumericCode = 502 RPL_WHOISSECURE NumericCode = 671 // SASL RPL_LOGGEDIN NumericCode = 900 RPL_LOGGEDOUT NumericCode = 901 ERR_NICKLOCKED NumericCode = 902 RPL_SASLSUCCESS NumericCode = 903 ERR_SASLFAIL NumericCode = 904 ERR_SASLTOOLONG NumericCode = 905 ERR_SASLABORTED NumericCode = 906 ERR_SASLALREADY NumericCode = 907 RPL_SASLMECHS NumericCode = 908 )
const ( R = '→' W = '←' )
Variables ¶
var ( ErrNickMissing = errors.New("nick missing") ErrNicknameInUse = errors.New("nickname in use") ErrNicknameMismatch = errors.New("nickname mismatch") )
var ( NotEnoughArgsError = errors.New("not enough arguments") ErrParseCommand = errors.New("failed to parse message") )
var ( SupportedUserModes = UserModes{ Invisible, Operator, HostMask, } DefaultChannelModes = ChannelModes{ NoOutside, OpOnlyTopic, } )
var ( // regexps ChannelNameExpr = regexp.MustCompile(`^[&!#+][\pL\pN]{1,63}$`) NicknameExpr = regexp.MustCompile(`^[\pL\pN\pP\pS]{1,32}$`) )
var ( // Package package name Package = "eris" // Version release version Version = "1.6.4" // Commit will be overwritten automatically by the build system Commit = "HEAD" )
var DefObjectives = map[float64]float64{
0.50: 0.05,
0.90: 0.01,
0.95: 0.005,
0.99: 0.001,
}
var DefaultPasswordHasher = &Base64BCryptPasswordHasher{}
var ( SERVER_SIGNALS = []os.Signal{ syscall.SIGINT, syscall.SIGHUP, syscall.SIGTERM, syscall.SIGQUIT, } )
var ( SupportedCapabilities = CapabilitySet{ MultiPrefix: true, SASL: true, } )
var ( SupportedChannelModes = ChannelModes{ BanMask, ExceptMask, InviteMask, InviteOnly, Key, NoOutside, OpOnlyTopic, Private, UserLimit, Secret, SecureChan, } )
Functions ¶
func CanSeeChannel ¶ added in v1.6.3
func ComparePassword ¶
func DecodePassword ¶
func IsHostname ¶ added in v1.5.3
func NewNumericReply ¶
func NewNumericReply(target *Client, code NumericCode, format string, args ...interface{}) string
func NewStringReply ¶
func NewStringReply(source Identifiable, code StringCode, format string, args ...interface{}) string
func RplAuthenticate ¶ added in v1.6.1
func RplCTCPAction ¶
func RplCTCPAction(source Identifiable, target Identifiable, action CTCPText) string
func RplCap ¶
func RplCap(client *Client, subCommand CapSubCommand, arg interface{}) string
func RplChannelMode ¶
func RplChannelMode(client *Client, channel *Channel, changes ChannelModeChanges) string
func RplModeChanges ¶
func RplModeChanges(client *Client, target *Client, changes ModeChanges) string
func RplNick ¶
func RplNick(source Identifiable, newNick Name) string
func RplNotice ¶
func RplNotice(source Identifiable, target Identifiable, message Text) string
func RplPing ¶
func RplPing(target Identifiable) string
func RplPrivMsg ¶
func RplPrivMsg(source Identifiable, target Identifiable, message Text) string
func RplTopicMsg ¶
func RplTopicMsg(source Identifiable, channel *Channel) string
Types ¶
type AuthenticateCommand ¶ added in v1.6.1
type AuthenticateCommand struct { BaseCommand // contains filtered or unexported fields }
func (*AuthenticateCommand) HandleRegServer ¶ added in v1.6.1
func (msg *AuthenticateCommand) HandleRegServer(server *Server)
type AwayCommand ¶
type AwayCommand struct { BaseCommand // contains filtered or unexported fields }
func (*AwayCommand) HandleServer ¶
func (msg *AwayCommand) HandleServer(server *Server)
type Base64BCryptPasswordHasher ¶ added in v1.6.1
type Base64BCryptPasswordHasher struct{}
func (*Base64BCryptPasswordHasher) Compare ¶ added in v1.6.1
func (hasher *Base64BCryptPasswordHasher) Compare(encoded, password []byte) error
type BaseCommand ¶
type BaseCommand struct {
// contains filtered or unexported fields
}
func (*BaseCommand) Client ¶
func (command *BaseCommand) Client() *Client
func (*BaseCommand) Code ¶
func (command *BaseCommand) Code() StringCode
func (*BaseCommand) SetClient ¶
func (command *BaseCommand) SetClient(client *Client)
func (*BaseCommand) SetCode ¶
func (command *BaseCommand) SetCode(code StringCode)
type CapCommand ¶
type CapCommand struct { BaseCommand // contains filtered or unexported fields }
func (*CapCommand) HandleRegServer ¶
func (msg *CapCommand) HandleRegServer(server *Server)
type CapModifier ¶
type CapModifier rune
CapModifiers are indicators showing the state of a capability after a REQ or ACK.
const ( Ack CapModifier = '~' Disable CapModifier = '-' Sticky CapModifier = '=' )
func (CapModifier) String ¶
func (mod CapModifier) String() string
type CapSubCommand ¶
type CapSubCommand string
const ( CAP_LS CapSubCommand = "LS" CAP_LIST CapSubCommand = "LIST" CAP_REQ CapSubCommand = "REQ" CAP_ACK CapSubCommand = "ACK" CAP_NAK CapSubCommand = "NAK" CAP_CLEAR CapSubCommand = "CLEAR" CAP_END CapSubCommand = "END" )
type Capability ¶
type Capability string
Capabilities are optional features a client may request from a server.
const ( MultiPrefix Capability = "multi-prefix" SASL Capability = "sasl" )
func (Capability) String ¶
func (capability Capability) String() string
type CapabilitySet ¶
type CapabilitySet map[Capability]bool
func (CapabilitySet) DisableString ¶
func (set CapabilitySet) DisableString() string
func (CapabilitySet) String ¶
func (set CapabilitySet) String() string
type Channel ¶
type Channel struct {
// contains filtered or unexported fields
}
func NewChannel ¶
NewChannel creates a new channel from a `Server` and a `name` string, which must be unique on the server.
func (*Channel) ClientIsOperator ¶
func (*Channel) Mode ¶
func (channel *Channel) Mode(client *Client, changes ChannelModeChanges)
func (*Channel) ModeString ¶
<mode> <mode params>
func (*Channel) ShowMaskList ¶
func (channel *Channel) ShowMaskList(client *Client, mode ChannelMode)
type ChannelMode ¶
type ChannelMode rune
channel mode flags
const ( BanMask ChannelMode = 'b' // arg ChannelCreator ChannelMode = 'O' // flag ChannelOperator ChannelMode = 'o' // arg ExceptMask ChannelMode = 'e' // arg InviteMask ChannelMode = 'I' // arg InviteOnly ChannelMode = 'i' // flag Key ChannelMode = 'k' // flag arg Moderated ChannelMode = 'm' // flag NoOutside ChannelMode = 'n' // flag OpOnlyTopic ChannelMode = 't' // flag Private ChannelMode = 'p' // flag Secret ChannelMode = 's' // flag, deprecated UserLimit ChannelMode = 'l' // flag arg Voice ChannelMode = 'v' // arg SecureChan ChannelMode = 'Z' // arg )
func (ChannelMode) String ¶
func (mode ChannelMode) String() string
type ChannelModeChange ¶
type ChannelModeChange struct {
// contains filtered or unexported fields
}
func (*ChannelModeChange) String ¶
func (change *ChannelModeChange) String() (str string)
type ChannelModeChanges ¶
type ChannelModeChanges []*ChannelModeChange
func (ChannelModeChanges) String ¶
func (changes ChannelModeChanges) String() (str string)
type ChannelModeCommand ¶
type ChannelModeCommand struct { BaseCommand // contains filtered or unexported fields }
func (*ChannelModeCommand) HandleServer ¶
func (msg *ChannelModeCommand) HandleServer(server *Server)
type ChannelModeSet ¶
ChannelModeSet holds a mapping of channel modes
func NewChannelModeSet ¶ added in v1.6.0
func NewChannelModeSet() *ChannelModeSet
NewChannelModeSet returns a new ChannelModeSet
func (*ChannelModeSet) Has ¶ added in v1.6.0
func (set *ChannelModeSet) Has(mode ChannelMode) bool
Has returns true if the mode is set
func (*ChannelModeSet) Range ¶ added in v1.6.0
func (set *ChannelModeSet) Range(f func(mode ChannelMode) bool)
Range ranges of the modes calling f
func (*ChannelModeSet) Set ¶ added in v1.6.0
func (set *ChannelModeSet) Set(mode ChannelMode)
Set sets mode
func (*ChannelModeSet) String ¶
func (set *ChannelModeSet) String() string
String returns a string representing the channel modes
func (*ChannelModeSet) Unset ¶ added in v1.6.0
func (set *ChannelModeSet) Unset(mode ChannelMode)
Unset unsets mode
type ChannelModes ¶
type ChannelModes []ChannelMode
func (ChannelModes) String ¶
func (modes ChannelModes) String() string
type ChannelNameMap ¶
ChannelNameMap holds a mapping of channel names to *Channel structs that is safe for concurrent readers and writers.
func NewChannelNameMap ¶ added in v1.5.4
func NewChannelNameMap() *ChannelNameMap
NewChannelNameMap returns a new initialized *ChannelNameMap
func (*ChannelNameMap) Add ¶
func (c *ChannelNameMap) Add(channel *Channel) error
Add adds a new *Channel if not already exists or an error otherwise
func (*ChannelNameMap) Count ¶ added in v1.6.0
func (c *ChannelNameMap) Count() int
Count returns the number of *Channel9s)
func (*ChannelNameMap) Get ¶
func (c *ChannelNameMap) Get(name Name) *Channel
Get returns a *Channel given a name if it exists or a zero-value *Channel
func (*ChannelNameMap) Range ¶ added in v1.5.4
func (c *ChannelNameMap) Range(f func(kay Name, value *Channel) bool)
Range ranges of the *Channels(s) calling f
func (*ChannelNameMap) Remove ¶
func (c *ChannelNameMap) Remove(channel *Channel) error
Remove removes a *Channel if it exists or an error otherwise
type ChannelSet ¶
func NewChannelSet ¶ added in v1.6.0
func NewChannelSet() *ChannelSet
func (*ChannelSet) Add ¶
func (set *ChannelSet) Add(channel *Channel)
func (*ChannelSet) Count ¶ added in v1.6.0
func (set *ChannelSet) Count() int
func (*ChannelSet) Range ¶ added in v1.6.0
func (set *ChannelSet) Range(f func(channel *Channel) bool)
func (*ChannelSet) Remove ¶
func (set *ChannelSet) Remove(channel *Channel)
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
func (*Client) ChangeNickname ¶
func (*Client) ErrAlreadyRegistered ¶
func (target *Client) ErrAlreadyRegistered()
func (*Client) ErrBadChannelKey ¶
func (*Client) ErrBannedFromChan ¶
func (*Client) ErrCannotSendToChan ¶
func (*Client) ErrCannotSendToUser ¶
func (*Client) ErrChanOPrivIsNeeded ¶
<channel> :You're not channel operator
func (*Client) ErrChannelIsFull ¶
func (*Client) ErrConfiguredMode ¶
func (target *Client) ErrConfiguredMode(mode ChannelMode)
func (*Client) ErrErroneusNickname ¶
func (*Client) ErrInvalidCapCmd ¶
func (target *Client) ErrInvalidCapCmd(subCommand CapSubCommand)
func (*Client) ErrInviteOnlyChan ¶
func (*Client) ErrInviteOnlyChannel ¶
func (*Client) ErrNeedMoreParams ¶
func (target *Client) ErrNeedMoreParams(command StringCode)
func (*Client) ErrNickLocked ¶ added in v1.6.1
func (target *Client) ErrNickLocked()
func (*Client) ErrNickNameInUse ¶
func (*Client) ErrNoChanModes ¶
func (*Client) ErrNoNicknameGiven ¶
func (target *Client) ErrNoNicknameGiven()
func (*Client) ErrNoPrivileges ¶
func (target *Client) ErrNoPrivileges()
func (*Client) ErrNoSuchChannel ¶
func (*Client) ErrNoSuchNick ¶
func (*Client) ErrNoSuchServer ¶
func (*Client) ErrNotOnChannel ¶
func (*Client) ErrPasswdMismatch ¶
func (target *Client) ErrPasswdMismatch()
func (*Client) ErrRestricted ¶
func (target *Client) ErrRestricted()
func (*Client) ErrSaslAborted ¶ added in v1.6.1
func (target *Client) ErrSaslAborted()
func (*Client) ErrSaslAlready ¶ added in v1.6.1
func (target *Client) ErrSaslAlready()
func (*Client) ErrSaslFail ¶ added in v1.6.1
func (*Client) ErrSaslTooLong ¶ added in v1.6.1
func (target *Client) ErrSaslTooLong()
func (*Client) ErrUnknownCommand ¶
func (target *Client) ErrUnknownCommand(code StringCode)
func (*Client) ErrUnknownMode ¶
func (target *Client) ErrUnknownMode(mode ChannelMode, channel *Channel)
func (*Client) ErrUserNotInChannel ¶
func (*Client) ErrUserOnChannel ¶
func (*Client) ErrUsersDontMatch ¶
func (target *Client) ErrUsersDontMatch()
func (*Client) ErrWasNoSuchNick ¶
func (*Client) HasUsername ¶
func (*Client) IdleSeconds ¶
func (*Client) MultilineReply ¶
func (target *Client) MultilineReply(names []string, code NumericCode, format string, args ...interface{})
func (*Client) NumericReply ¶
func (target *Client) NumericReply(code NumericCode, format string, args ...interface{})
func (*Client) RplBanList ¶
func (*Client) RplChannelModeIs ¶
func (*Client) RplCreated ¶
func (target *Client) RplCreated()
func (*Client) RplEndOfBanList ¶
func (*Client) RplEndOfExceptList ¶
func (*Client) RplEndOfInviteList ¶
func (*Client) RplEndOfMaskList ¶
func (target *Client) RplEndOfMaskList(mode ChannelMode, channel *Channel)
func (*Client) RplEndOfNames ¶
func (*Client) RplEndOfWhoWas ¶
func (*Client) RplEndOfWhois ¶
func (*Client) RplExceptList ¶
func (*Client) RplInviteList ¶
func (*Client) RplInviting ¶
func (*Client) RplInvitingMsg ¶
<nick> <channel> NB: correction in errata
func (*Client) RplLUserChannels ¶ added in v1.5.3
func (target *Client) RplLUserChannels()
func (*Client) RplLUserClient ¶ added in v1.5.3
func (target *Client) RplLUserClient()
func (*Client) RplLUserMe ¶ added in v1.5.3
func (target *Client) RplLUserMe()
func (*Client) RplLUserOp ¶ added in v1.5.3
func (target *Client) RplLUserOp()
func (*Client) RplLUserUnknown ¶ added in v1.5.3
func (target *Client) RplLUserUnknown()
func (*Client) RplListEnd ¶
func (*Client) RplLoggedIn ¶ added in v1.6.1
func (*Client) RplLoggedOut ¶ added in v1.6.1
func (target *Client) RplLoggedOut()
func (*Client) RplMOTDEnd ¶
func (target *Client) RplMOTDEnd()
func (*Client) RplMOTDStart ¶
func (target *Client) RplMOTDStart()
func (*Client) RplMaskList ¶
func (target *Client) RplMaskList(mode ChannelMode, channel *Channel, mask Name)
func (*Client) RplNamReply ¶
func (*Client) RplNoTopic ¶
func (*Client) RplNowAway ¶
func (target *Client) RplNowAway()
func (*Client) RplRehashing ¶ added in v1.5.3
func (target *Client) RplRehashing()
<config file> :Rehashing
func (*Client) RplSaslMechs ¶ added in v1.6.1
func (*Client) RplSaslSuccess ¶ added in v1.6.1
func (target *Client) RplSaslSuccess()
func (*Client) RplUModeIs ¶
func (*Client) RplVersion ¶
func (target *Client) RplVersion()
func (*Client) RplWelcome ¶
func (target *Client) RplWelcome()
func (*Client) RplWhoReply ¶
<channel> <user> <host> <server> <nick> ( "H" / "G" ) ["*"] [ ( "@" / "+" ) ] :<hopcount> <real name>
func (*Client) RplWhoWasUser ¶
func (*Client) RplWhoisChannels ¶
func (*Client) RplWhoisIdle ¶
func (*Client) RplWhoisLoggedIn ¶ added in v1.6.1
func (*Client) RplWhoisOperator ¶
func (*Client) RplWhoisSecure ¶
func (*Client) RplWhoisServer ¶ added in v1.5.3
func (*Client) RplWhoisUser ¶
func (*Client) RplYourHost ¶
func (target *Client) RplYourHost()
func (*Client) ServerInfo ¶ added in v1.5.3
func (*Client) SetNickname ¶
func (*Client) SignonTime ¶
func (*Client) WhoisChannelsNames ¶
type ClientLookupSet ¶
func NewClientLookupSet ¶
func NewClientLookupSet() *ClientLookupSet
func (*ClientLookupSet) Add ¶
func (clients *ClientLookupSet) Add(client *Client) error
func (*ClientLookupSet) Count ¶ added in v1.5.3
func (clients *ClientLookupSet) Count() int
func (*ClientLookupSet) Find ¶
func (clients *ClientLookupSet) Find(userhost Name) *Client
func (*ClientLookupSet) FindAll ¶
func (clients *ClientLookupSet) FindAll(userhost Name) *ClientSet
func (*ClientLookupSet) Get ¶
func (clients *ClientLookupSet) Get(nick Name) *Client
func (*ClientLookupSet) Range ¶ added in v1.6.0
func (clients *ClientLookupSet) Range(f func(nick Name, client *Client) bool)
func (*ClientLookupSet) Remove ¶
func (clients *ClientLookupSet) Remove(client *Client) error
type ClientSet ¶
func NewClientSet ¶ added in v1.6.0
func NewClientSet() *ClientSet
type Command ¶
type Command interface { Client() *Client Code() StringCode SetClient(*Client) SetCode(StringCode) }
func ParseAuthenticateCommand ¶ added in v1.6.1
func ParseAwayCommand ¶
func ParseCapCommand ¶
func ParseChannelModeCommand ¶
MODE <channel> *( ( "-" / "+" ) *<modes> *<modeparams> )
func ParseCommand ¶
func ParseInviteCommand ¶
func ParseIsOnCommand ¶
func ParseJoinCommand ¶
func ParseKickCommand ¶
func ParseKillCommand ¶
func ParseLUsersCommand ¶ added in v1.5.3
func ParseListCommand ¶
func ParseMOTDCommand ¶
func ParseModeCommand ¶
func ParseNamesCommand ¶
func ParseNickCommand ¶
func ParseNoticeCommand ¶
func ParseOperCommand ¶
OPER <name> <password>
func ParseOperNickCommand ¶
func ParsePartCommand ¶
func ParsePassCommand ¶
func ParsePingCommand ¶
func ParsePongCommand ¶
func ParsePrivMsgCommand ¶
func ParseQuitCommand ¶
func ParseRehashCommand ¶ added in v1.5.3
REHASH
func ParseTimeCommand ¶
func ParseTopicCommand ¶
func ParseUserCommand ¶
func ParseUserModeCommand ¶
MODE <nickname> *( ( "+" / "-" ) *( "i" / "w" / "o" / "O" / "r" ) )
func ParseVersionCommand ¶
func ParseWallopsCommand ¶ added in v1.6.0
func ParseWhoWasCommand ¶
func ParseWhoisCommand ¶
WHOIS [ <target> ] <mask> *( "," <mask> )
type Config ¶
type Config struct { sync.Mutex Network struct { Name string } Server struct { PassConfig `yaml:",inline"` Listen []string TLSListen map[string]*TLSConfig Log string MOTD string Name string Description string } Operator map[string]*PassConfig Account map[string]*PassConfig // contains filtered or unexported fields }
func LoadConfig ¶
type Identifiable ¶
type Identity ¶ added in v1.6.0
type Identity struct {
// contains filtered or unexported fields
}
func NewIdentity ¶ added in v1.6.0
type InviteCommand ¶
type InviteCommand struct { BaseCommand // contains filtered or unexported fields }
func (*InviteCommand) HandleServer ¶
func (msg *InviteCommand) HandleServer(server *Server)
type IsOnCommand ¶
type IsOnCommand struct { BaseCommand // contains filtered or unexported fields }
func (*IsOnCommand) HandleServer ¶
func (msg *IsOnCommand) HandleServer(server *Server)
type JoinCommand ¶
type JoinCommand struct { BaseCommand // contains filtered or unexported fields }
func (*JoinCommand) HandleServer ¶
func (m *JoinCommand) HandleServer(s *Server)
type KickCommand ¶
type KickCommand struct { BaseCommand // contains filtered or unexported fields }
func (*KickCommand) Comment ¶
func (msg *KickCommand) Comment() Text
func (*KickCommand) HandleServer ¶
func (msg *KickCommand) HandleServer(server *Server)
type KillCommand ¶
type KillCommand struct { BaseCommand // contains filtered or unexported fields }
func (*KillCommand) HandleServer ¶
func (msg *KillCommand) HandleServer(server *Server)
type LUsersCommand ¶ added in v1.5.3
type LUsersCommand struct {
BaseCommand
}
func (*LUsersCommand) HandleServer ¶ added in v1.5.3
func (msg *LUsersCommand) HandleServer(server *Server)
type ListCommand ¶
type ListCommand struct { BaseCommand // contains filtered or unexported fields }
func (*ListCommand) HandleServer ¶
func (msg *ListCommand) HandleServer(server *Server)
type MOTDCommand ¶
type MOTDCommand struct { BaseCommand // contains filtered or unexported fields }
func (*MOTDCommand) HandleServer ¶
func (msg *MOTDCommand) HandleServer(server *Server)
type MemberSet ¶
func NewMemberSet ¶ added in v1.6.0
func NewMemberSet() *MemberSet
func (*MemberSet) Get ¶ added in v1.6.0
func (set *MemberSet) Get(member *Client) *ChannelModeSet
type MemoryPasswordStore ¶ added in v1.6.1
func NewMemoryPasswordStore ¶ added in v1.6.1
func NewMemoryPasswordStore(passwords map[string][]byte, opts PasswordStoreOpts) *MemoryPasswordStore
func (*MemoryPasswordStore) Get ¶ added in v1.6.1
func (store *MemoryPasswordStore) Get(username string) ([]byte, bool)
func (*MemoryPasswordStore) Set ¶ added in v1.6.1
func (store *MemoryPasswordStore) Set(username, password string) error
func (*MemoryPasswordStore) Verify ¶ added in v1.6.1
func (store *MemoryPasswordStore) Verify(username, password string) error
type Metrics ¶ added in v1.6.0
type Metrics struct {
// contains filtered or unexported fields
}
func NewMetrics ¶ added in v1.6.0
func (*Metrics) Counter ¶ added in v1.6.0
func (m *Metrics) Counter(subsystem, name string) prometheus.Counter
func (*Metrics) Gauge ¶ added in v1.6.0
func (m *Metrics) Gauge(subsystem, name string) prometheus.Gauge
func (*Metrics) GaugeVec ¶ added in v1.6.3
func (m *Metrics) GaugeVec(subsystem, name string) *prometheus.GaugeVec
func (*Metrics) NewCounter ¶ added in v1.6.0
func (m *Metrics) NewCounter(subsystem, name, help string) prometheus.Counter
func (*Metrics) NewCounterFunc ¶ added in v1.6.0
func (m *Metrics) NewCounterFunc(subsystem, name, help string, f func() float64) prometheus.CounterFunc
func (*Metrics) NewGauge ¶ added in v1.6.0
func (m *Metrics) NewGauge(subsystem, name, help string) prometheus.Gauge
func (*Metrics) NewGaugeFunc ¶ added in v1.6.0
func (m *Metrics) NewGaugeFunc(subsystem, name, help string, f func() float64) prometheus.GaugeFunc
func (*Metrics) NewGaugeVec ¶ added in v1.6.3
func (m *Metrics) NewGaugeVec(subsystem, name, help string, labels []string) *prometheus.GaugeVec
func (*Metrics) NewSummary ¶ added in v1.6.0
func (m *Metrics) NewSummary(subsystem, name, help string) prometheus.Summary
func (*Metrics) NewSummaryVec ¶ added in v1.6.0
func (m *Metrics) NewSummaryVec(subsystem, name, help string, labels []string) *prometheus.SummaryVec
func (*Metrics) Summary ¶ added in v1.6.0
func (m *Metrics) Summary(subsystem, name string) prometheus.Summary
func (*Metrics) SummaryVec ¶ added in v1.6.0
func (m *Metrics) SummaryVec(subsystem, name string) *prometheus.SummaryVec
type ModeChange ¶
type ModeChange struct {
// contains filtered or unexported fields
}
func (*ModeChange) String ¶
func (change *ModeChange) String() string
type ModeChanges ¶
type ModeChanges []*ModeChange
func (ModeChanges) String ¶
func (changes ModeChanges) String() string
type ModeCommand ¶
type ModeCommand struct { BaseCommand // contains filtered or unexported fields }
func (*ModeCommand) HandleServer ¶
func (m *ModeCommand) HandleServer(s *Server)
type Name ¶
type Name string
Names are normalized and canonicalized to remove formatting marks and simplify usage. They are things like hostnames and usermasks.
func AddrLookupHostname ¶
func ExpandUserHost ¶
func LookupHostname ¶
func (Name) IsNickname ¶
type NamesCommand ¶
type NamesCommand struct { BaseCommand // contains filtered or unexported fields }
func (*NamesCommand) HandleServer ¶
func (msg *NamesCommand) HandleServer(server *Server)
type NickCommand ¶
type NickCommand struct { BaseCommand // contains filtered or unexported fields }
func (*NickCommand) HandleRegServer ¶
func (m *NickCommand) HandleRegServer(s *Server)
func (*NickCommand) HandleServer ¶
func (msg *NickCommand) HandleServer(server *Server)
type NoticeCommand ¶
type NoticeCommand struct { BaseCommand // contains filtered or unexported fields }
func (*NoticeCommand) HandleServer ¶
func (msg *NoticeCommand) HandleServer(server *Server)
type NumericCode ¶
type NumericCode uint
func (NumericCode) String ¶
func (code NumericCode) String() string
type OperCommand ¶
type OperCommand struct { PassCommand // contains filtered or unexported fields }
func (*OperCommand) HandleServer ¶
func (msg *OperCommand) HandleServer(server *Server)
func (*OperCommand) LoadPassword ¶
func (msg *OperCommand) LoadPassword(server *Server)
type OperNickCommand ¶
type OperNickCommand struct { BaseCommand // contains filtered or unexported fields }
func (*OperNickCommand) HandleServer ¶
func (msg *OperNickCommand) HandleServer(server *Server)
type PartCommand ¶
type PartCommand struct { BaseCommand // contains filtered or unexported fields }
func (*PartCommand) HandleServer ¶
func (m *PartCommand) HandleServer(server *Server)
func (*PartCommand) Message ¶
func (cmd *PartCommand) Message() Text
type PassCommand ¶
type PassCommand struct { BaseCommand // contains filtered or unexported fields }
func (*PassCommand) CheckPassword ¶
func (cmd *PassCommand) CheckPassword()
func (*PassCommand) HandleRegServer ¶
func (msg *PassCommand) HandleRegServer(server *Server)
func (*PassCommand) HandleServer ¶
func (m *PassCommand) HandleServer(s *Server)
func (*PassCommand) LoadPassword ¶
func (cmd *PassCommand) LoadPassword(server *Server)
type PassConfig ¶
type PassConfig struct {
Password string
}
func (*PassConfig) PasswordBytes ¶
func (conf *PassConfig) PasswordBytes() []byte
type PasswordHasher ¶ added in v1.6.1
type PasswordStore ¶ added in v1.6.1
type PasswordStoreOpts ¶ added in v1.6.1
type PasswordStoreOpts struct {
// contains filtered or unexported fields
}
type PingCommand ¶
type PingCommand struct { BaseCommand // contains filtered or unexported fields }
func (*PingCommand) HandleServer ¶
func (m *PingCommand) HandleServer(s *Server)
type PongCommand ¶
type PongCommand struct { BaseCommand // contains filtered or unexported fields }
func (*PongCommand) HandleServer ¶
func (m *PongCommand) HandleServer(s *Server)
type PrivMsgCommand ¶
type PrivMsgCommand struct { BaseCommand // contains filtered or unexported fields }
func (*PrivMsgCommand) HandleServer ¶
func (msg *PrivMsgCommand) HandleServer(server *Server)
type QuitCommand ¶
type QuitCommand struct { BaseCommand // contains filtered or unexported fields }
func NewQuitCommand ¶
func NewQuitCommand(message Text) *QuitCommand
func (*QuitCommand) HandleRegServer ¶
func (msg *QuitCommand) HandleRegServer(server *Server)
func (*QuitCommand) HandleServer ¶
func (msg *QuitCommand) HandleServer(server *Server)
type RFC1459UserCommand ¶
type RFC1459UserCommand struct { UserCommand // contains filtered or unexported fields }
USER <username> <hostname> <servername> <realname>
func (*RFC1459UserCommand) HandleRegServer ¶
func (msg *RFC1459UserCommand) HandleRegServer(server *Server)
type RFC2812UserCommand ¶
type RFC2812UserCommand struct { UserCommand // contains filtered or unexported fields }
USER <user> <mode> <unused> <realname>
func (*RFC2812UserCommand) Flags ¶
func (cmd *RFC2812UserCommand) Flags() []UserMode
func (*RFC2812UserCommand) HandleRegServer ¶
func (msg *RFC2812UserCommand) HandleRegServer(server *Server)
type RegServerCommand ¶
type RehashCommand ¶ added in v1.5.3
type RehashCommand struct {
BaseCommand
}
func (*RehashCommand) HandleServer ¶ added in v1.5.3
func (msg *RehashCommand) HandleServer(server *Server)
type SaslState ¶ added in v1.6.1
func NewSaslState ¶ added in v1.6.1
func NewSaslState() *SaslState
func (*SaslState) WriteString ¶ added in v1.6.1
type Server ¶
type Server struct {
// contains filtered or unexported fields
}
type ServerCommand ¶
type StringCode ¶
type StringCode string
func ParseLine ¶
func ParseLine(line string) (command StringCode, args []string)
func (StringCode) String ¶
func (code StringCode) String() string
type Text ¶
type Text string
Text is PRIVMSG, NOTICE, or TOPIC data. It's canonicalized UTF8 data to simplify but keeps all formatting.
type TimeCommand ¶
type TimeCommand struct { BaseCommand // contains filtered or unexported fields }
func (*TimeCommand) HandleServer ¶
func (msg *TimeCommand) HandleServer(server *Server)
type TopicCommand ¶
type TopicCommand struct { BaseCommand // contains filtered or unexported fields }
func (*TopicCommand) HandleServer ¶
func (msg *TopicCommand) HandleServer(server *Server)
type UnknownCommand ¶
type UnknownCommand struct { BaseCommand // contains filtered or unexported fields }
func ParseUnknownCommand ¶
func ParseUnknownCommand(args []string) *UnknownCommand
type UserCommand ¶
type UserCommand struct { BaseCommand // contains filtered or unexported fields }
func (*UserCommand) HandleServer ¶
func (m *UserCommand) HandleServer(s *Server)
type UserMaskSet ¶
type UserMaskSet struct {
// contains filtered or unexported fields
}
func NewUserMaskSet ¶
func NewUserMaskSet() *UserMaskSet
func (*UserMaskSet) Add ¶
func (set *UserMaskSet) Add(mask Name) bool
func (*UserMaskSet) AddAll ¶
func (set *UserMaskSet) AddAll(masks []Name) (added bool)
func (*UserMaskSet) Match ¶
func (set *UserMaskSet) Match(userhost Name) bool
func (*UserMaskSet) Remove ¶
func (set *UserMaskSet) Remove(mask Name) bool
func (*UserMaskSet) String ¶
func (set *UserMaskSet) String() string
type VersionCommand ¶
type VersionCommand struct { BaseCommand // contains filtered or unexported fields }
func (*VersionCommand) HandleServer ¶
func (msg *VersionCommand) HandleServer(server *Server)
type WallopsCommand ¶ added in v1.6.0
type WallopsCommand struct { BaseCommand // contains filtered or unexported fields }
func (*WallopsCommand) HandleServer ¶ added in v1.6.0
func (msg *WallopsCommand) HandleServer(server *Server)
type WhoCommand ¶
type WhoCommand struct { BaseCommand // contains filtered or unexported fields }
func (*WhoCommand) HandleServer ¶
func (msg *WhoCommand) HandleServer(server *Server)
type WhoWasCommand ¶
type WhoWasCommand struct { BaseCommand // contains filtered or unexported fields }
func (*WhoWasCommand) HandleServer ¶
func (msg *WhoWasCommand) HandleServer(server *Server)
type WhoWasList ¶
func NewWhoWasList ¶
func NewWhoWasList(size uint) *WhoWasList
func (*WhoWasList) Append ¶
func (list *WhoWasList) Append(client *Client)
func (*WhoWasList) Each ¶
func (list *WhoWasList) Each() <-chan *WhoWas
Iterate the buffer in reverse.
type WhoisCommand ¶
type WhoisCommand struct { BaseCommand // contains filtered or unexported fields }
func (*WhoisCommand) HandleServer ¶
func (m *WhoisCommand) HandleServer(server *Server)