Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
This module provides datatypes for modeling parts of IRC messages.
- data Prefix
- data UserAddr = UserAddr UserName (Maybe Host)
- data Target
- data Address
- data Host
- data Command
- data MaskPart
- newtype Mask = Mask [MaskPart]
- data TargetMask
- data GenericMessage = GenericMessage {}
- data SpecificMessage = SpecificMessage (Maybe Prefix) Message
- data MessageTarget
- data Message
- = PassMessage Password
- | NickMessage NickName
- | UserMessage UserName Bool Bool RealName
- | OperMessage UserName Password
- | UserModeMessage NickName [UserMode] [UserMode]
- | ServiceMessage NickName Mask String
- | QuitMessage (Maybe String)
- | SQuitMessage ServerName String
- | JoinMessage (Maybe ([ChannelName], [ChannelKey]))
- | PartMessage [ChannelName] (Maybe String)
- | ChannelModeMessage [ChannelMode] [ChannelMode]
- | TopicMessage ChannelName (Maybe ChannelTopic)
- | NamesMessage [ChannelName] (Maybe ServerName)
- | ListMessage [ChannelName] (Maybe ServerName)
- | InviteMessage NickName ChannelName
- | KickMessage [ChannelName] [UserName] (Maybe Comment)
- | PrivMsgMessage MessageTarget String
- | PrivActionMessage MessageTarget String
- | NoticeMessage MessageTarget String
- | MotdMessage (Maybe ServerName)
- | LusersMessage (Maybe (Mask, Maybe ServerName))
- | VersionMessage (Maybe (Either ServerName Mask))
- | StatsMessage (Maybe (Query, Maybe (Either ServerName Mask)))
- | LinksMessage (Maybe (Maybe (Either ServerName Mask), Mask))
- | TimeMessage (Maybe (Either ServerName Mask))
- | ConnectMessage ServerName PortNumber (Either ServerName Mask)
- | TraceMessage (Maybe Target)
- | AdminMessage (Maybe Target)
- | InfoMessage (Maybe Target)
- | ServlistMessage (Maybe (Mask, Maybe String))
- | SQueryMessage ServiceName String
- | WhoMessage (Maybe (Mask, Bool))
- | WhoisMessage (Maybe ServerName) [Mask]
- | WhowasMessage [NickName] (Maybe (Int, Maybe ServerName))
- | KillMessage NickName Comment
- | PingMessage ServerName (Maybe ServerName)
- | PongMessage ServerName (Maybe ServerName)
- | ErrorMessage String
- | AwayMessage (Maybe String)
- | RehashMessage
- | DieMessage
- | RestartMessage
- | SummonMessage UserName (Maybe (ServerName, Maybe ChannelName))
- | UsersMessage (Maybe ServerName)
- | WallopsMessage String
- | UserhostMessage [NickName]
- | IsonMessage [NickName]
- data UserMode
- data ChannelMode
- = CModeCreator
- | CModeOperator
- | CModeVoice
- | CModeAnonymous
- | CModeInviteOnly
- | CModeModerated
- | CModeNoMessagesFromOutside
- | CModeQuiet
- | CModePrivate
- | CModeSecret
- | CModeServerReop
- | CModeTopicSettableByChannelOpOnly
- | CModeKey (Maybe ChannelKey)
- | CModeUserLimit (Maybe Int)
- | CModeBanMask (Maybe Mask)
- | CModeExceptionMask (Maybe Mask)
- | CModeInvitationMask (Maybe Mask)
- | CModeOther Char [String]
- | CModeFreenodeQuiet (Maybe Mask)
- data ChannelModeType
- data CommandResponseCode
- = ReplyWelcome
- | ReplyYourHost
- | ReplyCreated
- | ReplyMyInfo
- | ReplyBounce
- | ReplyUserHost
- | ReplyIsOn
- | ReplyAway
- | ReplyUnAway
- | ReplyNoAway
- | ReplyWhoIsUser
- | ReplyWhoIsServer
- | ReplyWhoIsOperator
- | ReplyWhoIsIdle
- | ReplyEndOfWhoIs
- | ReplyWhoIsChannels
- | ReplyWhoWasUser
- | ReplyEndOfWhoWas
- | ReplyListStart
- | ReplyList
- | ReplyListEnd
- | ReplyUniqueOpIs
- | ReplyChannelModeIs
- | ReplyNoTopic
- | ReplyTopic
- | ReplyInviting
- | ReplySummoning
- | ReplyInviteList
- | ReplyEndOfInviteList
- | ReplyExceptList
- | ReplyEndOfExceptList
- | ReplyVersion
- | ReplyWhoReply
- | ReplyEndOfWho
- | ReplyNameReply
- | ReplyEndOfNames
- | ReplyLinks
- | ReplyEndOfLinks
- | ReplyBanList
- | ReplyEndOfBanList
- | ReplyInfo
- | ReplyEndOfInfo
- | ReplyMotdStart
- | ReplyMessageOfTheDay
- | ReplyEndOfMessageOfTheDay
- | ReplyYoureOper
- | ReplyRehashing
- | ReplyYoureService
- | ReplyTime
- | ReplyUsersStart
- | ReplyUsers
- | ReplyEndOfUsers
- | ReplyNoUsers
- | ReplyTraceLink
- | ReplyTraceConnecting
- | ReplyTraceHandshake
- | ReplyTraceUnknown
- | ReplyTraceOperator
- | ReplyTraceUser
- | ReplyTraceServer
- | ReplyTraceService
- | ReplyTraceNewType
- | ReplyTraceClass
- | ReplyTraceReconnect
- | ReplyTraceLog
- | ReplyTraceEnd
- | ReplyStatsLinkInfo
- | ReplyStatsCommands
- | ReplyEndOfStats
- | ReplyStatsUptime
- | ReplyStatsOLine
- | ReplyUModeIs
- | ReplyServList
- | ReplyServListEnd
- | ReplyLuserClient
- | ReplyLuserOp
- | ReplyLuserUnknown
- | ReplyLuserChannels
- | ReplyLuserMe
- | ReplyAdminMe
- | ReplyAdminLocation1
- | ReplyAdminLocation2
- | ReplyAdminEmail
- | ReplyTryAgain
- | ReplyFreenodeISupport
- data ErrorReplyCode
- = ErrorNoSuchNick
- | ErrorNoSuchServer
- | ErrorNoSuchChannel
- | ErrorCannotSendToChannel
- | ErrorTooManyChannels
- | ErrorWasNoSuchNick
- | ErrorTooManyTargets
- | ErrorNoSuchService
- | ErrorNoOrigin
- | ErrorNoRecipient
- | ErrorNoTextToSend
- | ErrorNoTopLevel
- | ErrorWildTopLevel
- | ErrorBadMask
- | ErrorUnknownCommand
- | ErrorNoMessageOfTheDay
- | ErrorNoAdminInfo
- | ErrorFileError
- | ErrorNoNickNameGiven
- | ErrorErroneousNickName
- | ErrorNickNameInUse
- | ErrorNickCollision
- | ErrorUnavailableResource
- | ErrorUserNotInChannel
- | ErrorNotOnChannel
- | ErrorUserOnChannel
- | ErrorNoLogin
- | ErrorSummonDisabled
- | ErrorUsersDisabled
- | ErrorNotRegistered
- | ErrorNeedMoreParams
- | ErrorAlreadyRegistered
- | ErrorNoPermissionForHost
- | ErrorPasswordMismatch
- | ErrorYoureBannedCreep
- | ErrorYouWillBeBanned
- | ErrorKeySet
- | ErrorChannelIsFull
- | ErrorUnknownMode
- | ErrorInviteOnlyChannel
- | ErrorBannedFromChannel
- | ErrorBadChannelKey
- | ErrorBadChannelMask
- | ErrorNoChannelModes
- | ErrorBanListFull
- | ErrorNoPrivileges
- | ErrorChannelOpPrivilegesNeeded
- | ErrorCantKillServer
- | ErrorRestricted
- | ErrorUniqueOpPrivilegesNeeded
- | ErrorNoOperHost
- | ErrorUModeUnknownFlag
- | ErrorUsersDontMatch
- data ReservedReplyCode
- = ReservedReplyServiceInfo
- | ReservedReplyEndOfServices
- | ReservedReplyService
- | ReservedReplyNone
- | ReservedReplyWhoIsChannelOp
- | ReservedReplyKillDone
- | ReservedReplyClosing
- | ReservedReplyCloseEnd
- | ReservedReplyInfoStart
- | ReservedReplyMyPortIs
- | ReservedReplyStatsCLine
- | ReservedReplyStatsNLine
- | ReservedReplyStatsILine
- | ReservedReplyStatsKLine
- | ReservedReplyStatsQLine
- | ReservedReplyStatsYLine
- | ReservedReplyStatsVLine
- | ReservedReplyStatsLLine
- | ReservedReplyStatsHLine
- | ReservedReplyStatsSLine
- | ReservedReplyStatsPing
- | ReservedReplyStatsBLine
- | ReservedReplyStatsDLine
- data ReservedErrorCode = ReservedErrorNoServiceHost
- data GenericReply = GenericReply {}
- data Reply
- = WelcomeReply
- | YourHostReply
- | CreatedReply
- | MyInfoReply
- | BounceReply
- | ISupportReply
- | UserHostReply
- | IsOnReply
- | AwayReply
- | UnAwayReply
- | NoAwayReply
- | WhoIsUserReply
- | WhoIsServerReply
- | WhoIsOperatorReply
- | WhoIsIdleReply
- | EndOfWhoIsReply
- | WhoIsChannelsReply
- | WhoWasUserReply
- | EndOfWhoWasReply
- | ListStartReply
- | ListReply
- | ListEndReply
- | UniqueOpIsReply
- | ChannelModeIsReply
- | NoTopicReply
- | TopicReply
- | InvitingReply
- | SummoningReply
- | InviteListReply
- | EndOfInviteListReply
- | ExceptListReply
- | EndOfExceptListReply
- | VersionReply
- | WhoReply
- | EndOfWhoReply
- | NamesReply ChannelPrivacy ChannelName [(Privilege, NickName)]
- | EndOfNamesReply
- | LinksReply
- | EndOfLinksReply
- | BanListReply
- | EndOfBanListReply
- | InfoReply
- | EndOfInfoReply
- | MotdStartReply
- | MessageOfTheDayReply
- | EndOfMessageOfTheDayReply
- | YoureOperReply
- | RehashingReply
- | YoureServiceReply
- | TimeReply
- | UsersStartReply
- | UsersReply
- | EndOfUsersReply
- | NoUsersReply
- | TraceLinkReply
- | TraceConnectingReply
- | TraceHandshakeReply
- | TraceUnknownReply
- | TraceOperatorReply
- | TraceUserReply
- | TraceServerReply
- | TraceServiceReply
- | TraceNewTypeReply
- | TraceClassReply
- | TraceReconnectReply
- | TraceLogReply
- | TraceEndReply
- | StatsLinkInfoReply
- | StatsCommandsReply
- | EndOfStatsReply
- | StatsUptimeReply
- | StatsOLineReply
- | UModeIsReply
- | ServListReply
- | ServListEndReply
- | LuserClientReply
- | LuserOpReply
- | LuserUnknownReply
- | LuserChannelsReply
- | LuserMeReply
- | AdminMeReply
- | AdminLocation1Reply
- | AdminLocation2Reply
- | AdminEmailReply
- | TryAgainReply
- data SpecificReply = SpecificReply ServerName Target Reply
- data Privilege
- data ChannelPrivacy
Message Parts
IRC message prefix.
User address containing a name part (as in "user") and an optional host part (as in "user@host").
TODO
A host, either a hostname (e.g. irc.freenode.net
) or an IP address, or a
cloak assigned by the server.
TODO
Mask
Part of a Mask
.
MaskChar Char | A literal character. |
MaskWildOne | A wildcard which matches a single character. |
MaskWildMany | A wildcard which matches zero or more characters. |
A pattern for matching host and server names. A mask in the protocol is a
string which consists of literal characters and wildcards. There are two
wildcards:
, which matches a single character; ?
, which matches any
number of characters (zero or more).*
data TargetMask Source
Some IRC command parameters are targets, and one way to specify a target
is using a Mask
.
HostMask Mask | Host mask, prefixed with |
ServerMask Mask | Server mask, prefixed with |
Message
data GenericMessage Source
A generic IRC message. It consists of a sender prefix, command name (string or numeric) and optionally a list of parameters.
data SpecificMessage Source
An IRC message of a specific type. This includes only messages whose command is a name. Messages with a numeric command are handled in the Network.IRC.Fun.Messages.Reply module.
data MessageTarget Source
Some IRC commands have targets. For example, to which channel to send a given text message. Targets are specified as parameters in IRC messages.
ChannelTarget ChannelName | An IRC channel. |
UserTarget (Maybe NickName) (Maybe UserAddr) (Maybe ServerName) | An IRC user. Possible combinations in the protocol are:
|
MaskTarget TargetMask | A mask which matches the server or host of the users to whom the message should be sent. |
An IRC message of specific type (excluding the optional sender prefix, see
SpecificMessage
).
Modes
TODO
data ChannelMode Source
TODO
Reply
data CommandResponseCode Source
TODO
data ErrorReplyCode Source
data ReservedReplyCode Source
data ReservedErrorCode Source
TODO
TODO
data SpecificReply Source
An IRC server numeric reply of a specific type.