- collections.defaultdict for simpler channel handling
- proto/inspircd: fix join/partClient not updating the channel's user list
- move isInternal* to utils
Although InspIRCd doesn't seem to care, the correct PONG syntax is:
-> :<our sid> PONG <our sid> <their sid>,
and not
-> :<our sid> PONG <our sid>,
which was used prior to this commit.
Use the client's TS, not the global IRC start time. Everything else for client timestamp tracking is basically done, at least for this protocol handler. Closes#11.
- Move _nicktoUid to utils.py
- Make _sendFromUser arguments more consistent (irc, sendfrom, message) instead of (irc, message, sendfrom=None)
- Add admin only kickclient, partclient, and nickclient commands
- proto.joinClient: take UIDs instead of an IrcUser object, in order to be more consistent
Closes#4, Closes#12.
- plugins/commands.py: add admin-only eval command
- add IrcChannel class and basic channel (FJOIN/QUIT) handling
- Move SQUIT/QUIT handling code to a shared removeClient function
- Unfortunately, this causes a regression where the users and channels indexes aren't purged on a netsplit :(
This was solely a testing module for the plugin/commands system, and serves no purpose anymore. commands.py provides basic commands that are both simple and actually useful.
- Move config handling into separate module
- Implement identify and status commands, currently only supporting the admin account defined in the config. Closes#1.
- Move proto.add_cmd to utils.py, rename _msg() to msg()
- Allow sending the command name as an optional argument in add_cmd
- Add catch-all exception handling in plugins to prevent them from crashing the program!
- Server enumeration, with handlers for BURST (introduction to uplink), SERVER (introduction of uplink's other leaf servers), NICK, and SQUIT (closes#2)
- Store UIDs instead of nicks in the user database - this makes the protocol a lot easier to work with.
- PLUGIN SUPPORT and COMMAND HANDLING, wow!!!!!!!
- Restructuring of files so that there's only one protocol module (anything else is too much to maintain for now)
- Split protocol things into utils.py
- Bugfixes: don't go into an endless loop of text spamming when the remote host closes the connection!