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
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
c8e7b72065
protocols: lowercase channel names in PRIVMSG handling
...
Merge NOTICE and PRIVMSG handlers together; they're essentially the same thing.
2015-08-31 11:45:00 -07:00
James Lu
37eecd7d69
pr/inspircd: use OPERTYPE to oper up clients correctly, and handle the metadata accordingly
2015-08-31 10:31:50 -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
7620cd7433
pr/inspircd: fix compatibility with channel mode +q (~)
...
InspIRCd's defaults use "founder" as the mode name for cmode +q, not "owner". My config was different, so I overlooked this.
2015-08-30 23:16:39 -07:00
James Lu
3523f8f766
LINKACL support
...
Merge commit '51389b96e26224aab262b7b090032d0b745e9590'
2015-08-29 15:20:19 -07:00
James Lu
80bebe3827
protocols: also validate TS on incoming SJOIN
2015-08-26 14:59:05 -07:00
James Lu
977b69b8e9
protocols/: Fix args parsing when the sender UID == the last argument
...
args.index() would return 0 instead of the index of the current argument.
2015-08-26 14:57:46 -07:00
James Lu
51389b96e2
relay: LINKACL command ( Closes #88 )
2015-08-25 20:18:14 -07:00
James Lu
da0101e750
Merge branch 'devel'
2015-08-25 19:54:05 -07:00
James Lu
7e449aaada
coreplugin: Don't stop iterating if one WHOIS handler errors
2015-08-24 18:40:31 -07:00
James Lu
0d497a8f72
coreplugin: show channel prefixes in WHOIS reply
2015-08-24 18:37:46 -07:00
James Lu
05be3e6c17
pr/: add prefixmodes in sjoinServer if TS <= theirs
...
The old comparison of our TS < theirs was wrong, because modes are merged (not dropped) when two channels of the same TS join.
2015-08-24 18:37:39 -07:00
James Lu
af02af6b4a
coreplugin: send WHOIS lines in a more standard order
2015-08-24 18:27:18 -07:00
James Lu
694e7b87f6
various: make the server description configurable
...
Two options for this: bot::serverdesc, and server::<network>::serverdesc, with the latter taking precedence if present.
2015-08-24 18:14:35 -07:00
James Lu
8f09c35672
Revert "example conf: remove unused sidrange option"
...
This reverts commit d533ce3d28
.
2015-08-23 21:15:49 -07:00
James Lu
94ed46fdba
Merge branch 'devel'
2015-08-23 11:52:18 -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
1e95f4b3df
main: Fix ImportError logging if a required library, and not the actual module is missing
...
The old message showed "the plugin/file could not be found" even if it's a library that couldn't be imported. "No module named X" is too broad to check for here!
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
1d245bf001
protoocols.sjoinServer: only add prefix modes to channel state if our TS < theirs
2015-08-20 01:32:30 -07:00
James Lu
3fc5896f82
Strip leading/trailing spaces when handling PM commands
2015-08-18 05:49:27 -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
f967f7a479
relay: hotfix to fix KILL handling of relay clients
...
(cherry picked from commit d6e6e56e03
)
2015-08-17 21:18:55 -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
8b77956ab9
Merge branch 'devel'
...
Closes #71 .
Closes #91 .
Closes #92 .
Closes #93 .
2015-08-17 03:48:35 -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
61d95c19cc
protocols: delete empty non-permanent channels
2015-08-15 23:29:40 -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
c99a6a7b9d
protocols: update topic in channel state when sending outbound TOPIC
2015-08-15 22:34:40 -07:00
James Lu
06c466896e
ts6: fix prefixmodes not being updated in sjoin
2015-08-15 20:14:36 -07:00
James Lu
487f730783
Merge branch 'devel' into wip/handle-ts-bursts
2015-08-15 20:02:24 -07:00
James Lu
579838e1ba
utils.applyModes: be more error tolerant?
2015-08-15 20:02:07 -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
James Lu
043a4bc27a
Merge branch 'devel' into wip/admin-commands-loopback
...
Conflicts:
plugins/relay.py
2015-08-15 19:21:38 -07:00
James Lu
dd91b7e5a0
relay: more efficient getLocalUser
...
Set the .remote attribute of each relay client to the original netname, user pair.
2015-08-15 19:18:04 -07:00
James Lu
a1db4932e1
relay: Don't allow kicks/parts to the PyLink client to be relayed.
2015-08-15 06:05:12 -07:00
James Lu
6ebe6e7867
relay: check for whether clients are relay clients, instead of just internal clients
...
This prevents things like non-relay PyLink clients being quit for "Left all shared channels", and allows kicks between internal clients to relay properly.
2015-08-15 05:54:18 -07:00
James Lu
f63d17f945
relay: don't relay kicks if the target has no client on the remote network?
2015-08-15 05:54:05 -07:00