inspircd
index
/home/gl/pylink/protocols/inspircd.py

 
Modules
       
hashlib
os
re
socket
ssl
sys
threading
time
utils
world

 
Classes
       
ts6_common.TS6BaseProtocol(classes.Protocol)
InspIRCdProtocol

 
Class = class InspIRCdProtocol(ts6_common.TS6BaseProtocol)
    
Method resolution order:
InspIRCdProtocol
ts6_common.TS6BaseProtocol
classes.Protocol
builtins.object

Methods defined here:
__init__(self, irc)
awayClient(self, source, text)
Sends an AWAY message from a PyLink client. <text> can be an empty string
to unset AWAY status.
connect(self)
Initializes a connection to a server.
handle_away(self, numeric, command, args)
Handles incoming AWAY messages.
handle_encap(self, numeric, command, args)
Handles incoming encapsulated commands (ENCAP). Hook arguments
returned by this should have a parse_as field, that sets the correct
hook name for the message.
 
For InspIRCd, the only ENCAP command we handle right now is KNOCK.
handle_endburst(self, numeric, command, args)
ENDBURST handler; sends a hook with empty contents.
handle_events(self, data)
Event handler for the InspIRCd protocol. This passes most commands to
the various handle_ABCD() functions elsewhere in this module, but also
handles commands sent in the initial server linking phase.
handle_fhost(self, numeric, command, args)
Handles FHOST, used for denoting hostname changes.
handle_fident(self, numeric, command, args)
Handles FIDENT, used for denoting ident changes.
handle_fjoin(self, servernumeric, command, args)
Handles incoming FJOIN commands (InspIRCd equivalent of JOIN/SJOIN).
handle_fmode(self, numeric, command, args)
Handles the FMODE command, used for channel mode changes.
handle_fname(self, numeric, command, args)
Handles FNAME, used for denoting real name/gecos changes.
handle_ftopic(self, numeric, command, args)
Handles incoming FTOPIC (sets topic on burst).
handle_idle(self, numeric, command, args)
Handles the IDLE command, sent between servers in remote WHOIS queries.
handle_invite(self, numeric, command, args)
Handles incoming INVITEs.
handle_opertype(self, numeric, command, args)
Handles incoming OPERTYPE, which is used to denote an oper up.
 
This calls the internal hook PYLINK_CLIENT_OPERED, sets the internal
opertype of the client, and assumes setting user mode +o on the caller.
handle_ping(self, source, command, args)
Handles incoming PING commands, so we don't time out.
handle_pong(self, source, command, args)
Handles incoming PONG commands. This is used to keep track of whether
the uplink is alive by the Irc() internals - a server that fails to reply
to our PINGs eventually times out and is disconnected.
handle_server(self, numeric, command, args)
Handles incoming SERVER commands (introduction of servers).
handle_uid(self, numeric, command, args)
Handles incoming UID commands (user introduction).
inviteClient(self, numeric, target, channel)
Sends an INVITE from a PyLink client..
joinClient(self, client, channel)
Joins an internal spawned client <client> to a channel.
killClient(self, numeric, target, reason)
Sends a kill from a PyLink client.
killServer(self, numeric, target, reason)
Sends a kill from a PyLink server.
knockClient(self, numeric, target, text)
Sends a KNOCK from a PyLink client.
modeClient(self, numeric, target, modes, ts=None)
Sends modes from a PyLink client. <modes> should be
a list of (mode, arg) tuples, i.e. the format of utils.parseModes() output.
modeServer(self, numeric, target, modes, ts=None)
Sends modes from a PyLink server. <list of modes> should be
a list of (mode, arg) tuples, i.e. the format of utils.parseModes() output.
numericServer(self, source, numeric, text)
pingServer(self, source=None, target=None)
Sends a PING to a target server. Periodic PINGs are sent to our uplink
automatically by the Irc() internals; plugins shouldn't have to use this.
sjoinServer(self, server, channel, users, ts=None)
Sends an SJOIN for a group of users to a channel.
 
The sender should always be a Server ID (SID). TS is optional, and defaults
to the one we've stored in the channel state if not given.
<users> is a list of (prefix mode, UID) pairs:
 
Example uses:
    sjoinServer('100', '#test', [('', '100AAABBC'), ('qo', 100AAABBB'), ('h', '100AAADDD')])
    sjoinServer(self.irc.sid, '#test', [('o', self.irc.pseudoclient.uid)])
spawnClient(self, nick, ident='null', host='null', realhost=None, modes=set(), server=None, ip='0.0.0.0', realname=None, ts=None, opertype=None)
Spawns a client with nick <nick> on the given IRC connection.
 
Note: No nick collision / valid nickname checks are done here; it is
up to plugins to make sure they don't introduce anything invalid.
spawnServer(self, name, sid=None, uplink=None, desc=None)
Spawns a server off a PyLink server.
squitServer(self, source, target, text='No reason given')
SQUITs a PyLink server.
topicServer(self, numeric, target, text)
Sends a burst topic from a PyLink server. This is usally used on burst.
updateClient(self, numeric, field, text)
Updates the ident, host, or realname of a PyLink client.

Methods inherited from ts6_common.TS6BaseProtocol:
handle_error(self, numeric, command, args)
Handles ERROR messages - these mean that our uplink has disconnected us!
handle_kick(self, source, command, args)
Handles incoming KICKs.
handle_kill(self, source, command, args)
Handles incoming KILLs.
handle_mode(self, numeric, command, args)
Handles incoming user mode changes. For channel mode changes,
TMODE (TS6/charybdis) and FMODE (InspIRCd) are used instead.
handle_nick(self, numeric, command, args)
Handles incoming NICK changes.
handle_notice = handle_privmsg(self, source, command, args)
Handles incoming PRIVMSG/NOTICE.
handle_part(self, source, command, args)
Handles incoming PART commands.
handle_privmsg(self, source, command, args)
Handles incoming PRIVMSG/NOTICE.
handle_quit(self, numeric, command, args)
Handles incoming QUITs.
handle_save(self, numeric, command, args)
Handles incoming SAVE messages, used to handle nick collisions.
handle_squit(self, numeric, command, args)
Handles incoming SQUITs (netsplits).
handle_topic(self, numeric, command, args)
Handles incoming TOPIC changes from clients. For topic bursts,
TB (TS6/charybdis) and FTOPIC (InspIRCd) are used instead.
kickClient(self, numeric, channel, target, reason=None)
Sends a kick from a PyLink client.
kickServer(self, numeric, channel, target, reason=None)
Sends a kick from a PyLink server.
messageClient(self, numeric, target, text)
Sends a PRIVMSG from a PyLink client.
nickClient(self, numeric, newnick)
Changes the nick of a PyLink client.
noticeClient(self, numeric, target, text)
Sends a NOTICE from a PyLink client.
parseArgs(self, args)
Parses a string of RFC1459-style arguments split into a list, where ":" may
be used for multi-word arguments that last until the end of a line.
parseTS6Args(self, args)
Similar to parseArgs(), but stripping leading colons from the first argument
of a line (usually the sender field).
partClient(self, client, channel, reason=None)
Sends a part from a PyLink client.
quitClient(self, numeric, reason)
Quits a PyLink client.
removeClient(self, numeric)
Internal function to remove a client from our internal state.
topicClient(self, numeric, target, text)
Sends a TOPIC change from a PyLink client.

Data descriptors inherited from classes.Protocol:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
class InspIRCdProtocol(ts6_common.TS6BaseProtocol)
    
Method resolution order:
InspIRCdProtocol
ts6_common.TS6BaseProtocol
classes.Protocol
builtins.object

Methods defined here:
__init__(self, irc)
awayClient(self, source, text)
Sends an AWAY message from a PyLink client. <text> can be an empty string
to unset AWAY status.
connect(self)
Initializes a connection to a server.
handle_away(self, numeric, command, args)
Handles incoming AWAY messages.
handle_encap(self, numeric, command, args)
Handles incoming encapsulated commands (ENCAP). Hook arguments
returned by this should have a parse_as field, that sets the correct
hook name for the message.
 
For InspIRCd, the only ENCAP command we handle right now is KNOCK.
handle_endburst(self, numeric, command, args)
ENDBURST handler; sends a hook with empty contents.
handle_events(self, data)
Event handler for the InspIRCd protocol. This passes most commands to
the various handle_ABCD() functions elsewhere in this module, but also
handles commands sent in the initial server linking phase.
handle_fhost(self, numeric, command, args)
Handles FHOST, used for denoting hostname changes.
handle_fident(self, numeric, command, args)
Handles FIDENT, used for denoting ident changes.
handle_fjoin(self, servernumeric, command, args)
Handles incoming FJOIN commands (InspIRCd equivalent of JOIN/SJOIN).
handle_fmode(self, numeric, command, args)
Handles the FMODE command, used for channel mode changes.
handle_fname(self, numeric, command, args)
Handles FNAME, used for denoting real name/gecos changes.
handle_ftopic(self, numeric, command, args)
Handles incoming FTOPIC (sets topic on burst).
handle_idle(self, numeric, command, args)
Handles the IDLE command, sent between servers in remote WHOIS queries.
handle_invite(self, numeric, command, args)
Handles incoming INVITEs.
handle_opertype(self, numeric, command, args)
Handles incoming OPERTYPE, which is used to denote an oper up.
 
This calls the internal hook PYLINK_CLIENT_OPERED, sets the internal
opertype of the client, and assumes setting user mode +o on the caller.
handle_ping(self, source, command, args)
Handles incoming PING commands, so we don't time out.
handle_pong(self, source, command, args)
Handles incoming PONG commands. This is used to keep track of whether
the uplink is alive by the Irc() internals - a server that fails to reply
to our PINGs eventually times out and is disconnected.
handle_server(self, numeric, command, args)
Handles incoming SERVER commands (introduction of servers).
handle_uid(self, numeric, command, args)
Handles incoming UID commands (user introduction).
inviteClient(self, numeric, target, channel)
Sends an INVITE from a PyLink client..
joinClient(self, client, channel)
Joins an internal spawned client <client> to a channel.
killClient(self, numeric, target, reason)
Sends a kill from a PyLink client.
killServer(self, numeric, target, reason)
Sends a kill from a PyLink server.
knockClient(self, numeric, target, text)
Sends a KNOCK from a PyLink client.
modeClient(self, numeric, target, modes, ts=None)
Sends modes from a PyLink client. <modes> should be
a list of (mode, arg) tuples, i.e. the format of utils.parseModes() output.
modeServer(self, numeric, target, modes, ts=None)
Sends modes from a PyLink server. <list of modes> should be
a list of (mode, arg) tuples, i.e. the format of utils.parseModes() output.
numericServer(self, source, numeric, text)
pingServer(self, source=None, target=None)
Sends a PING to a target server. Periodic PINGs are sent to our uplink
automatically by the Irc() internals; plugins shouldn't have to use this.
sjoinServer(self, server, channel, users, ts=None)
Sends an SJOIN for a group of users to a channel.
 
The sender should always be a Server ID (SID). TS is optional, and defaults
to the one we've stored in the channel state if not given.
<users> is a list of (prefix mode, UID) pairs:
 
Example uses:
    sjoinServer('100', '#test', [('', '100AAABBC'), ('qo', 100AAABBB'), ('h', '100AAADDD')])
    sjoinServer(self.irc.sid, '#test', [('o', self.irc.pseudoclient.uid)])
spawnClient(self, nick, ident='null', host='null', realhost=None, modes=set(), server=None, ip='0.0.0.0', realname=None, ts=None, opertype=None)
Spawns a client with nick <nick> on the given IRC connection.
 
Note: No nick collision / valid nickname checks are done here; it is
up to plugins to make sure they don't introduce anything invalid.
spawnServer(self, name, sid=None, uplink=None, desc=None)
Spawns a server off a PyLink server.
squitServer(self, source, target, text='No reason given')
SQUITs a PyLink server.
topicServer(self, numeric, target, text)
Sends a burst topic from a PyLink server. This is usally used on burst.
updateClient(self, numeric, field, text)
Updates the ident, host, or realname of a PyLink client.

Methods inherited from ts6_common.TS6BaseProtocol:
handle_error(self, numeric, command, args)
Handles ERROR messages - these mean that our uplink has disconnected us!
handle_kick(self, source, command, args)
Handles incoming KICKs.
handle_kill(self, source, command, args)
Handles incoming KILLs.
handle_mode(self, numeric, command, args)
Handles incoming user mode changes. For channel mode changes,
TMODE (TS6/charybdis) and FMODE (InspIRCd) are used instead.
handle_nick(self, numeric, command, args)
Handles incoming NICK changes.
handle_notice = handle_privmsg(self, source, command, args)
Handles incoming PRIVMSG/NOTICE.
handle_part(self, source, command, args)
Handles incoming PART commands.
handle_privmsg(self, source, command, args)
Handles incoming PRIVMSG/NOTICE.
handle_quit(self, numeric, command, args)
Handles incoming QUITs.
handle_save(self, numeric, command, args)
Handles incoming SAVE messages, used to handle nick collisions.
handle_squit(self, numeric, command, args)
Handles incoming SQUITs (netsplits).
handle_topic(self, numeric, command, args)
Handles incoming TOPIC changes from clients. For topic bursts,
TB (TS6/charybdis) and FTOPIC (InspIRCd) are used instead.
kickClient(self, numeric, channel, target, reason=None)
Sends a kick from a PyLink client.
kickServer(self, numeric, channel, target, reason=None)
Sends a kick from a PyLink server.
messageClient(self, numeric, target, text)
Sends a PRIVMSG from a PyLink client.
nickClient(self, numeric, newnick)
Changes the nick of a PyLink client.
noticeClient(self, numeric, target, text)
Sends a NOTICE from a PyLink client.
parseArgs(self, args)
Parses a string of RFC1459-style arguments split into a list, where ":" may
be used for multi-word arguments that last until the end of a line.
parseTS6Args(self, args)
Similar to parseArgs(), but stripping leading colons from the first argument
of a line (usually the sender field).
partClient(self, client, channel, reason=None)
Sends a part from a PyLink client.
quitClient(self, numeric, reason)
Quits a PyLink client.
removeClient(self, numeric)
Internal function to remove a client from our internal state.
topicClient(self, numeric, target, text)
Sends a TOPIC change from a PyLink client.

Data descriptors inherited from classes.Protocol:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
Data
        conf = {'bot': {'loglevel': 'CRITICAL', 'nick': 'PyLink', 'realname': 'PyLink Service Client', 'serverdesc': 'PyLink unit tests', 'user': 'pylink'}, 'servers': defaultdict(<function <lambda> at 0x7f0dbb516c80>, {})}
curdir = 'protocols'
log = <logging.RootLogger object>