James Lu
cd244ee89b
relay: block until irc.maxnicklen is set, and remove check for "nick already in use" for internal clients
...
Closes #48 . This fixes the edge case where, if a person with a long, cut-off nick changes to another long nick, and the resulting normalized nick is the same,
normalizeNick will start incrementing the separator anyway. The correct behavior is to NOT send any nick changes if the old (normalized) nick and the new nick
match.
2015-07-15 13:53:14 -07:00
James Lu
bbe71e22ab
relay: fixes for NICK and TOPIC propogation
2015-07-15 11:48:26 -07:00
James Lu
e3e643de54
relay: don't try to spawn clients on disconnected networks (those raise errors)
2015-07-15 11:48:03 -07:00
James Lu
4c77ad93d7
relay: fix over-reaching behavior of delink #chan <remotenet> when you're the host
2015-07-15 11:47:06 -07:00
James Lu
0918b2f958
relay: missing line in initializeChannel
2015-07-14 23:29:03 -07:00
James Lu
3a9df57c39
relay: remove unused relay() function; what was that about?
2015-07-14 23:26:56 -07:00
James Lu
5999eedd98
relay: block kills, respawning their targets transparently
...
Closes #47 .
2015-07-14 23:26:52 -07:00
James Lu
13e4cadf2b
relay: add TOPIC support (experimental)
...
Closes #46 .
2015-07-14 23:26:39 -07:00
James Lu
46e1538bd2
relay: fix #45 - cases when MODE/KICK is sent by a server, not a client
2015-07-14 22:37:50 -07:00
James Lu
7de8f1509d
relay: factorize getLocalUser, introduce MODE (experimental) and PRIVMSG handler
2015-07-14 19:39:49 -07:00
James Lu
f74e704733
relay: whoops, check for claim properly
2015-07-14 18:27:26 -07:00
James Lu
28f1d4ba19
relay: add a working KICK handler
...
This should block kicks from non-opped remote users, and handle kicks across the relay properly by mapping our pseudoclients to the real targets.
2015-07-14 18:23:19 -07:00
James Lu
876cf34825
relay: Remove spawning a sub-server for each relay network
...
It introduced bugs, and made the relay code more complicated than it has to be :(
2015-07-14 17:42:17 -07:00
James Lu
a1299676f1
relay: factorize fetching of remote users/SIDs, spawning them if they don't exist
2015-07-14 12:04:05 -07:00
James Lu
59295f921b
relay: part users on DELINK/DESTROY
2015-07-13 23:29:20 -07:00
James Lu
310a9201e2
relay: fix bugs with removing nonexistant channels in DELINK, and linking a channel multiple times in LINK
2015-07-13 22:54:51 -07:00
James Lu
1cbcec1001
relay: sync modes on initializeChannel as well
2015-07-13 22:42:50 -07:00
James Lu
c5298e3931
relay: fix joining users on initializeChannel
2015-07-13 21:46:05 -07:00
James Lu
235f169e54
relay: add quit, part, and nick handlers
2015-07-13 19:53:57 -07:00
James Lu
9bc8a35c25
relay: fix cases where a remote linked channel has different name
2015-07-13 19:46:24 -07:00
James Lu
a5e2beb566
relay: propogate prefix modes in relayJoins, if the remote net supports them
2015-07-13 18:23:58 -07:00
James Lu
d8cb3f1973
relay: spawn users on the right pseudoservers, and use SJOIN to introduce them if possible
2015-07-13 16:09:22 -07:00
James Lu
67f5bbba4b
add a utils.started threaded trigger, so plugins can ACTUALLY wait until all Irc objects have been initialized to do their work
2015-07-13 16:07:55 -07:00
James Lu
b3528a2b04
relay: better channel initialization
2015-07-13 00:01:04 -07:00
James Lu
b3206822d2
relay: fix users being cloned on every JOIN
2015-07-12 23:31:26 -07:00
James Lu
6b9ec694b7
relay: basic JOIN handling
2015-07-12 23:28:54 -07:00
James Lu
3c2d0dbe3f
relay: (de)initialize channels using shared initialize/removechannel()
2015-07-12 19:03:18 -07:00
James Lu
0dc0770d6d
relay: add LINK and DELINK commands; many fixes to checkers (WIP)
2015-07-12 17:59:09 -07:00
James Lu
6870e041bc
relay: catch nicks that start with digits and add tests
2015-07-12 16:59:49 -07:00
James Lu
b538037e22
relay: add normalizeNick stub
2015-07-12 14:02:17 -07:00
James Lu
450584b963
relay: hack in utils.schedulers so that exportDB only gets queued once globally
...
Previously, exportDB would be queued once by every IRC object, which was the wrong behavior!
2015-07-12 13:09:35 -07:00
James Lu
e073f21417
relay: spawn servers, raise exportDB interval to 60; use main(irc)
2015-07-11 20:21:10 -07:00
James Lu
8d4a06b60e
Initial PyLink-Relay stub, with CREATE and DESTROY commands using a pickle database.
...
ref #37 .
2015-07-10 20:26:46 -07:00
James Lu
3156d83ec3
plugins/admin: rename quitclient -> quit
2015-07-10 16:43:16 -07:00
James Lu
070bba77cb
admin.py: check to see if queried channels exist; sort output fields
2015-07-09 17:05:23 -07:00
James Lu
e7922be9fb
plugins/commands.py: warn on failed login attempts
2015-07-08 23:21:01 -07:00
James Lu
27bb6af7f6
plugins/admin.py: add 'mode' and 'showchan' commands
2015-07-08 23:01:09 -07:00
James Lu
edfcacfdd1
plugins/admin.py: remove -client suffixes from commands, and fix argument checking
2015-07-08 22:50:19 -07:00
James Lu
211decd2aa
everything: Improve logging
2015-07-05 13:44:48 -07:00
James Lu
f06bcc7928
Merge commit 'bd755e137ffa034007a77d75fbd00d21e759163e' into wip/logger-module
...
Conflicts:
proto.py
2015-07-05 13:22:17 -07:00
James Lu
d23d34e316
Refactor hooks to send parsed arguments instead of raw args
...
ref #18 .
- Command handlers that support hooks will now return parsed args, which are then sent to the hooks
- Hook commands are now stored in uppercase letters, consistent with the IRC spec
2015-07-04 19:00:29 -07:00
James Lu
6370ad492f
Add basic command hooks (ref #18 )
2015-06-23 19:08:43 -07:00
James Lu
0db5c4c209
plugins/admin.py: add 'showuser' command
2015-06-19 13:00:23 -07:00
James Lu
d8b562865d
plugins/admin.py: this is an exec command, not eval
2015-06-19 10:44:25 -07:00
James Lu
f40cb7954a
Allow dynamic protocol loading again, and make proto an attribute of Irc()
...
This should remove the need for plugins, etc. to import proto directly,
which wouldn't work because of dynamic naming.
2015-06-16 20:05:41 -07:00
James Lu
4d763288e5
rename utils._nicktoUid to utils.nickToUid
...
Consistency in function capitalization is a good thing!!
2015-06-07 19:36:21 -07:00
James Lu
43a46d3d99
Many fixes
...
- 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 .
2015-06-07 19:31:56 -07:00
James Lu
86c7fd0db1
WIP admin commands
2015-06-07 13:40:18 -07:00
James Lu
6680942424
More code and broken shenanigans
...
- 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 :(
2015-06-06 23:06:33 -07:00
James Lu
0ed1e13115
Remove plugins/hello.py
...
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.
2015-06-03 16:09:53 -07:00