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
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
dde9539e77
relay: fix incorrect logging in normalizeNick
2015-08-20 03:04:40 -07:00
James Lu
821f546f12
Make sure the PyLink client rejoins all relay channels on KILL
...
This adds a new internal hook, 'PYLINK_SPAWNMAIN', which is triggered whenever Irc().spawnMain() is called.
2015-08-18 05:44:36 -07:00
James Lu
f93349ae1f
relay: when restoring a user after KICK, join them to the *right* channel
2015-08-18 02:59:56 -07:00
James Lu
5704fddfb4
relay: ignore internal clients for CLAIM checks
2015-08-18 02:57:40 -07:00
James Lu
0d2fbc330d
relay: fix "Left all shared channels" quits for KICK handling
2015-08-18 02:44:27 -07:00
James Lu
d6e6e56e03
relay: hotfix to fix KILL handling of relay clients
2015-08-17 21:15:44 -07:00
James Lu
de36c7a62a
Merge branch 'wip/admin-commands-loopback' into devel
...
Conflicts:
plugins/relay.py
2015-08-17 07:52:45 -07:00
James Lu
e7f187c672
relay: send modes once at init, not on every JOIN
2015-08-15 23:31:54 -07:00
James Lu
3b83c3d567
relay: fix TOPIC relaying when the source and target channels have different names
2015-08-15 23:05:09 -07:00
James Lu
4352a68357
Check for TS changes on SJOIN (both incoming and outgoing)
...
Restore relay to the devel branch; TS bursts shouldn't be handled there, but in the protocol modules.
TODO: fix prefixmodes being cleared after BURST, and never being reset?
2015-08-15 19:53:09 -07:00
James Lu
0d41e35d9c
Merge branch 'devel' into wip/handle-ts-bursts
...
Conflicts:
plugins/relay.py
2015-08-15 19:28:49 -07:00
James Lu
aec29d2aae
relay: continue, not return
...
(fix SQUIT not rejoining relay users properly)
2015-08-15 19:23:41 -07:00