James Lu
9a139212dd
relay/utils: make mode reversals work with mode changes that affect op statuses.
2015-09-13 13:48:14 -07:00
James Lu
fa4583c272
relay: basic CLAIM checking when setting modes ( #51 )
...
There's still some desyncs with checking op statuses, because hooks are only called AFTER the internal state updates. Fix for this will come soon.
2015-09-12 23:36:52 -07:00
James Lu
945306af34
relay: make CLAIM checking a shared function
2015-09-12 22:50:53 -07:00
James Lu
b3902c7711
relay: KILL war protection ( #23 )
...
TODO: possibly integrate this into core?
2015-09-12 17:41:49 -07:00
James Lu
1fcacd0d7c
relay: more compact "showuser" output
2015-09-12 16:03:59 -07:00
James Lu
1c97927b5d
relay: monitor SAVE floods by network, not by target nick
2015-09-12 16:03:47 -07:00
James Lu
95b70f3ebf
relay: spawn a server for every linked network ( Closes #105 )
2015-09-12 12:08:02 -07:00
James Lu
7f526267ec
relay: minor typo in error message
2015-09-09 20:53:04 -07:00
James Lu
9e73af050c
relay: unpluralize "relayWhoisHandlers"
...
There's only one handler, why did I make it plural?
2015-09-06 22:39:40 -07:00
James Lu
9dc836d921
Merge remote-tracking branch 'origin/wip/document-everything' into devel
2015-09-06 22:31:41 -07:00
James Lu
62e7cc4fca
move utils.msg() => classes.Irc.msg()
...
New function gets an extra (optional) "source" argument for specifying a sender UID. It's also shorter since no IRC object has to be passed to utils.
2015-09-06 22:23:44 -07:00
James Lu
57da0aa3b3
Classify all our protocol modules - why didn't I do this earlier
2015-09-05 18:00:57 -07:00
James Lu
2777b88d33
commands: Add a shutdown command ( #82 )
...
Sometimes exiting takes a little time, possibly from waiting for sockets to close?
2015-09-02 23:46:59 -07:00
James Lu
0404801b18
plugins/admin.py -> plugins/bots.py
...
- admin: Drop "showchan" command. It's not very useful, and doesn't handle long output strings at all.
- All the remaining commands are dedicated to spawning bots and playing with them anyways, so this new name fits better.
2015-09-02 23:24:58 -07:00
James Lu
c0f5bedbd3
Add new "networks" plugin, for controlling connections to networks
...
Daemonized threads are lovely; when all connections are closed, PyLink just exits :)
Closes #82 .
2015-09-02 23:08:04 -07:00
James Lu
320de2079a
relay: add INVITE support ( Closes #94 )
2015-09-02 21:30:31 -07:00
James Lu
60dc3fe026
relay: use "Channel delinked." part message when delinking channels
2015-09-02 20:46:21 -07:00
James Lu
9a47ff87af
Merge branch 'master' into devel
2015-09-02 20:44:03 -07:00
James Lu
043fccf447
Fix previous commit ( Closes #100 )
2015-09-02 18:56:53 -07:00
James Lu
ace0ddf28c
relay: use JOIN instead of SJOIN for non-burst joins
...
Closes #96 .
2015-09-02 18:33:04 -07:00
James Lu
c2ee9ef808
Merge branch 'master' into devel
2015-09-02 18:15:34 -07:00
James Lu
708d949164
relay: join remote users before sending ours
...
This fixes race conditions where modes can be set on our joining users (e.g. auto-op by ChanServ), but are promptly erased as relay joins remote users and resets the channel TS.
Also, move relayModes() calls back into relayJoins(), with an optional "burst" argument.
Closes #102 .
2015-09-02 18:08:39 -07:00
James Lu
19fa31d012
relay: fix incorrect logging in getSupportedUmodes()
2015-09-01 22:14:25 -07:00
James Lu
2f760c8c92
relay: Don't send empty user mode changes
2015-09-01 22:13:29 -07:00
James Lu
4f40faeaf0
relay: in logs, be a bit more specific why we're blocking KILLs and KICKs
2015-09-01 22:02:34 -07:00
James Lu
0b590d6ab3
relay/protocols: use utils.toLower() for channel names, respecting IRCd casemappings
...
Closes #102 .
2015-09-01 22:01:22 -07:00
James Lu
8d44830d5c
relay.handle_kill: prevent yet another RuntimeError
...
(cherry picked from commit 4525b8117e
)
Conflicts:
plugins/relay.py
2015-09-01 19:42:12 -07:00
James Lu
6d6606900e
relay: coerse "/" to "|" in nicks if "/" isn't present in the separator
...
a.k.a. make J*anus* happy :)
2015-09-01 09:56:28 -07:00
James Lu
4525b8117e
relay.handle_kill: prevent yet another RuntimeError
2015-08-31 15:04:06 -07:00
James Lu
26e102f01a
Show oper types on WHOIS
2015-08-31 14:52:56 -07:00
James Lu
8d19057118
relay: set umode +H (hideoper) on all remote opered clients
2015-08-31 14:23:42 -07:00
James Lu
f9b4457ced
Decorate relay clients, etc. with custom OPERTYPEs
...
New PyLink internal hook: PYLINK_CLIENT_OPERED, called (supposedly) when a client opers up.
2015-08-31 13:31:20 -07:00
James Lu
4a964b1595
Merge branch 'master' into devel
2015-08-31 10:58:47 -07:00
James Lu
9f0f4cb124
relay: burst the right set of modes
...
It's moments like this where I wonder what I'm even doing with my life...
2015-08-31 09:28:14 -07:00
James Lu
94f83eb33b
relay.showuser: show home network/nick, and relay nicks regardless of oper status
2015-08-29 19:49:37 -07:00
James Lu
5503477646
commands: distinguish commands with multiple binds in 'list'
2015-08-29 19:29:49 -07:00
James Lu
8976322273
Replace admin.showuser with prettier whois-style cmds in 'commands' and 'relay'
2015-08-29 19:29:05 -07:00
James Lu
e1e31f64ad
Allow multiple plugins to bind to one command name!
...
They will get called in a list, one after the other. The "help" command is able to distinguish with this too.
2015-08-29 19:25:07 -07:00
James Lu
973aba6de7
Move utils' global variables to world.py
2015-08-29 09:39:33 -07:00
James Lu
2fe9b624e7
Consistently capitalize errors and other messages
2015-08-25 20:55:39 -07:00
James Lu
bc7765b241
Let's use consistent "Unknown command" errors, right?
2015-08-25 20:51:13 -07:00
James Lu
d059bd4ff1
Move 'exec' command into its separate plugin
2015-08-25 20:47:21 -07:00
James Lu
3d621b00df
Move checkAuthenticated() to utils, and give it and isOper() toggles for allowing oper/PyLink logins
2015-08-25 20:47:21 -07:00
James Lu
51389b96e2
relay: LINKACL command ( Closes #88 )
2015-08-25 20:18:14 -07:00
James Lu
0610783479
Merge branch 'devel' into wip/document-everything
2015-08-24 10:09:41 -07:00
James Lu
713ba1469b
relay: log blocked KILLs/KICKs ( Closes #95 )
2015-08-22 21:43:25 -07:00
James Lu
20474dabac
relay: fix many bugs with nick collision handling, and add flood prevention for fixing nicks
...
Closes #85 . Nick collisions caused by internal clients are handled fine now, including the following cases:
- Abusing spawnClient to create a user with the same nick as a relay client, but with a lower TS.
- When both an UID (e.g. 42XAAAAAA) and a tagged UID (_42XAAAAAA) exist on the same network (the two will both try to take the same nick of _42XAAAAAA/net over the relay).
The case where changing NICK from a long cut-off nick to another long cut-off nick is also mitigated. somelongnick/net won't show nick changes to somelongnic//net if the old and new nicks have give the same normalized relay nick.
This introduces a new dependency, expiringdict, from https://pypi.python.org/pypi/expiringdict/1.1.2 , which is used as a cache for flood prevention.
2015-08-22 21:01:51 -07:00
James Lu
c1d98838d7
plugins/admin: allow sending KICK from servers ( #90 )
2015-08-21 00:39:58 -07:00
James Lu
bd2bd55e89
relay: fix mode relaying when sender is a client but isn't in any shared channels
2015-08-20 22:13:28 -07:00
James Lu
834136e848
Merge branch 'devel' into wip/document-everything
2015-08-20 08:14:22 -07:00