James Lu
d01b9aaa23
relay: improve fallback KNOCK notices
...
- Show the network that the /knock originated from (it is *not* obvious when we have a user with no relay client)
- Specifically hint that users with no relay client cannot be invited directly because there is no client to actually /invite!
- Prefer sending the notice to %#channel when halfops are available, as they usually have the power to /invite
2017-12-21 01:57:43 -08:00
James Lu
2df608307d
relay: block sending STATUSMSG messages to IRCds not supporting them
2017-12-21 01:41:01 -08:00
James Lu
d81a9cd5c3
relay: differentiate between PRIVMSG vs. NOTICE via a blacklist
...
This is so that P10 WALL* commands are forwarded correctly as notices instead of privmsgs.
2017-12-21 01:27:34 -08:00
James Lu
63f3cdaea8
relay: add knock forwarding support
2017-12-21 00:19:09 -08:00
James Lu
954f4f9886
relay: capitalize constants related to modes
2017-12-18 13:23:16 -08:00
James Lu
0104462782
relay: whitelist cmodes kicknorejoin, kicknorejoin_insp, repeat, repeat_insp
...
Closes #559 .
2017-12-18 13:17:05 -08:00
James Lu
9a5072824d
relay: stop lowercasing modedelta args, as that can break things like unreal +f
2017-12-14 13:40:47 -08:00
James Lu
f908e407d4
relay: also ignore clientbot networks in modedelta
...
TODO: abstract all these checks out!
2017-12-14 13:26:43 -08:00
James Lu
923795719f
relay: drop all list and prefix modes in modedelta
2017-12-14 13:07:00 -08:00
James Lu
57a2132d5d
relay: always enforce modedelta modes, and prevent them from being unset
2017-12-14 12:46:25 -08:00
James Lu
b2270ca3eb
relay: move claim enforcement routines outside the mode/kick loops
...
This prevents claim responses from being sent multiple times.
2017-12-14 12:15:19 -08:00
James Lu
59c12ff354
relay: merge in modedelta branch, port to latest 2.x relay
...
Merge remote-tracking branch 'origin/wip/relay-modedelta' into devel
Conflicts:
plugins/relay.py
2017-12-14 11:56:41 -08:00
James Lu
d54bf0d06c
relay: also log the extban prefix strings being readded
2017-12-07 11:38:27 -08:00
James Lu
a2cb4daa46
relay: mangle the mode name when forwarding extban->cmode so that +b syntax filters don't trigger
...
This should allow bidirectional forwarding between UnrealIRCd +b ~T:block:<glob> and InspIRCd +g <glob> to work.
(#557 )
2017-12-07 11:26:16 -08:00
James Lu
8fcb5f9df0
relay: ignore static extbans when looking up dynamic extban prefixes
...
This fixes #560 , which was caused by relay confusing ban_all_registered ($a) with ban_account ($a:), since $a:account also starts with $a.
2017-12-07 11:05:39 -08:00
James Lu
6adeada598
relay: add more complete debug logging in extban handlers
2017-12-07 11:04:26 -08:00
James Lu
d30eca77e9
relay: add more channel modes to the whitelist
...
* blockcaps: inspircd +B, elemental-ircd +G
* exemptchanops: inspircd +X
* filter: inspircd +g
* hidequits: nefarious +Q, snircd +u
* history: inspircd +H
* largebanlist: ts6 +L
* noamsg: snircd/nefarious +T
2017-12-05 12:01:57 -08:00
James Lu
03e02dda51
relay: replace garbage locking code with proper filtering in relay_joins
...
I'm not even going to start on how much time I spent working on this...
Closes #548 , #529
2017-11-12 11:58:36 -08:00
James Lu
b6af6dddc5
relay: fix RuntimeError on handle_part for clientbot networks
2017-11-05 01:18:42 -08:00
James Lu
aa44bc15a3
classes: fix backwards sorting in Channel.sort_prefixes()
...
Also remove various workaround code added to address this.
2017-10-15 01:29:42 -07:00
James Lu
b52082ed05
relay: various cleanup
...
- Raise desync-related state checks to warning
- Rename get_remote_sid to get_relay_server_sid - it's less ambiguous
- Clarify and add some missing function docstrings
2017-09-23 20:43:21 -07:00
James Lu
6cbb6617ef
relay: don't forward simple bans as text to clientbot links if modesync is on
...
Closes #528 .
2017-09-23 14:39:26 -07:00
James Lu
a60e6e7f22
relay: add missing comment to last commit
2017-09-23 14:09:28 -07:00
James Lu
b667bed1e6
relay: only allow one thread to run initialize_channel at a time
...
Closes #529 .
2017-09-23 13:58:15 -07:00
James Lu
0136ac9e41
relay: fix potential irc.channels KeyErrors in get_prefix_modes and handle_join
2017-09-02 21:35:21 -07:00
James Lu
afd4558531
relay: bind handle_messages at a higher priority than fantasy
...
This fixes #123 , where responses for fantasy commands are relayed before the original message if the Fantasy plugin is loaded before Relay.
2017-09-02 21:17:54 -07:00
James Lu
5c14a9c8c2
relay: add iterate_all_present to condense network iteration code
...
Closes #471 .
2017-08-31 14:19:30 -07:00
James Lu
450718cce6
relay: don't block on client spawning
...
Just fail instantly if the remote isn't ready.
2017-08-31 12:27:52 -07:00
James Lu
979d5a48f1
relay: migrate away from deprecated utils.isHostmask
2017-08-30 21:09:19 -07:00
James Lu
9380336948
relay: fall back to the current time on TS-less servers if the remote channel doesn't exist
2017-08-30 21:08:54 -07:00
James Lu
43b6566aa8
Move getDatabaseName from utils to conf ( #476 )
2017-08-28 20:27:39 -07:00
James Lu
ff8587736f
fantasy, relay: migrate to irc.is_*
2017-08-28 20:14:14 -07:00
James Lu
1031aaa320
relay: add checks for channel presence
2017-08-25 02:29:10 -07:00
James Lu
579bfecdb4
relay: improve logging related to extban handling
2017-08-23 23:23:02 -07:00
James Lu
11d63e19cd
relay: allow adding back multiple extban prefixes ( #498 )
...
This fixes inbound relaying of modes such as +q $a:test, which are eventually converted into double extbans on InspIRCd and UnrealIRCd.
2017-08-23 22:29:14 -07:00
James Lu
de1a6379df
Add (experimental) support for matching extbans ( #498 )
2017-08-23 21:18:57 -07:00
James Lu
ffc734d8e2
relay: only send RAW_MODES payloads to networks without can-spawn-clients
2017-08-18 15:51:14 -07:00
James Lu
15be760b19
relay: send RELAY_RAW_MODE payloads to the *remote* channel name
2017-08-18 13:30:17 -07:00
James Lu
8563556850
relay: fix relaying between channels not matching their lowercase (DB) name
...
This rewrites get_relay() to be case insensitive by taking the IRC object instead of a string name.
This fixes a regression introduced by 32249ac
(case-insensitive channel state)
2017-08-18 12:42:47 -07:00
James Lu
d679859d7d
relay: explain/comment the code for extban handling
2017-08-12 17:12:56 -07:00
James Lu
d2466dd33c
relay: support relaying channel mode changes as text
...
Closes #389 .
This adds a new internal hook RELAY_RAW_MODE, which is called once on every relayed network but with the mode list from the source network.
2017-08-11 19:22:14 -07:00
James Lu
e17837cbb1
relay: add nickflood (inspircd +F) to whitelisted cmodes
2017-08-11 13:32:04 -07:00
James Lu
5250e41a94
relay: reformat whitelisted mode lists
2017-08-11 13:29:45 -07:00
James Lu
4a6f94f8fc
relay: add workarounds for u-lined servers
...
- Allow ulines to join with modes (this status gets forwarded as part of relay_joins()), but *ignore* this status when checking for claim
- For U-lined clients to set modes properly and kick, they be on the claim list
- Allow ulines to set modes on ulined clients including itself. These changes are ignored: not forwarded, not bounced, but just left there.
- Ignore uline attempts to set non-list modes - this is mostly for compatibility with Anope's DEFCON, as it would otherwise lead to a mode flood.
This requires commit 9113b34b46
, i.e. the get_server() update.
2017-08-11 13:15:03 -07:00
James Lu
b456966dd3
relay: move ban-style and whitelist checks to earlier in get_supported_cmodes
2017-08-05 22:03:58 -07:00
James Lu
ffde2c6b32
relay: add in muteban relaying on InspIRCd and UnrealIRCd
2017-08-05 22:03:51 -07:00
James Lu
b9a58670ef
relay: cleanup code flow in handle_mode
2017-08-05 21:13:39 -07:00
James Lu
4379ef68ef
Migrate coremods.permissions to snake case
2017-08-02 22:24:23 +08:00
James Lu
1d6b692e14
relay: allow overriding tag_nicks per network
...
Closes #494 .
2017-08-02 21:57:48 +08:00
Mitchell Cooper
c92bb1e33b
relay: add server-specific server_suffix ( closes #462 ) ( #484 )
2017-07-12 14:10:36 -07:00
James Lu
654df0889d
relay: rename checkSendKey -> _check_send_key
2017-07-12 07:51:34 -07:00
James Lu
508253af7e
relay: switch to Channel.is_op_plus()
2017-07-11 02:23:13 -07:00
James Lu
f203abdeb0
relay: move iteration over all networks into a wrapper function
...
First part of #471 .
2017-07-10 23:09:00 -07:00
James Lu
a43076e815
relay: rename isRelayClient to is_relay_client
2017-07-10 22:38:25 -07:00
James Lu
2f87aa63e9
relay: remove double iteration when firing the PYLINK_RELAY_JOIN hook
2017-07-10 22:36:43 -07:00
James Lu
f7dfc38688
relay: only initialize channels that are relevant to the called network in initialize_all()
...
Previously, this would quite often hit channel names that simply don't exist on the target network.
2017-07-07 14:20:24 -07:00
James Lu
3b091f9e20
relay: remove a useless logging line
2017-07-07 13:43:30 -07:00
James Lu
d2d76baad8
relay: more detailed logging when the spawn_* condition times out
2017-07-07 13:32:04 -07:00
James Lu
62669c085d
relay: re-add 'CLAIM #channel -'
...
This was mistakenly removed in d51c399351
due to a merge conflict, oops...
2017-07-02 22:06:50 -07:00
James Lu
f800c9f7c2
Merge branch 'wip/irc-explosion-2' into devel ( #475 )
...
This brings in a major refactor of the IRC/protocol stack, to start off 2.0-dev.
2017-07-02 21:16:06 -07:00
James Lu
f2b644e2bb
relay: be more verbose in 'grabbing spawnlocks' messages
2017-07-02 12:36:33 -07:00
James Lu
7d68c03101
various: convert sortPrefixes/getPrefixModes calls to snake case
2017-06-30 21:40:05 -07:00
James Lu
61ed209abb
coremods, plugins: migrate to snake case for protocol communication
2017-06-30 21:30:20 -07:00
James Lu
0c7fb861f1
classes, relay, ircs2s_c: tweak/remove various debug statements
2017-06-29 23:19:21 -07:00
James Lu
10bca676fc
coremods, plugins: migrate to snake case
2017-06-29 23:01:39 -07:00
James Lu
4696519bad
plugins: migrate irc.proto calls to irc
2017-06-25 02:09:59 -07:00
James Lu
89f9b46ec0
relay: demote "PM from server" warnings to debug
...
InspIRCd's m_chanlog.so sends these on purpose, so it's best not to warn about this "feature" endlessly...
2017-05-15 21:32:41 -07:00
James Lu
04f88df385
Actually use 'irc' in main() and die() as a keyword argument (per docs)
2017-05-12 19:19:52 -07:00
James Lu
24b5fd92ef
relay: don't error if the pylink service is gone (e.g. during shutdown)
2017-05-07 13:58:11 -07:00
James Lu
5c7752a203
relay: stop execution if spawn lock acquire fails
...
Also, make the lock timeout a consistent, global variable.
(partial merge of commit e24bc54bbcefc40bf73a197de2dc24f7cd42cf79)
2017-05-04 21:18:02 -07:00
James Lu
d51c399351
Revert "relay: add locks in db read/writes (thread safety)"
...
Unfortunately, this made relay prone to freezing the entire PyLink server.
This reverts commit 2b4943a780
.
2017-05-04 18:53:07 -07:00
James Lu
bf1d7812e2
clientbot: track channel modes and TS on join
...
Closes #345 .
2017-04-09 14:49:19 -07:00
James Lu
2e5cccc381
relay: fix incrementing changes to modedelta
2017-04-01 12:50:32 -07:00
James Lu
13be8ff6d0
relay: apply modedelta rules on SJOIN as well
2017-04-01 12:50:32 -07:00
James Lu
4312983ca5
relay: initial modedelta implementation
2017-04-01 12:50:32 -07:00
James Lu
d425cb9d47
relay: fix case sensitivity in channel TS check
2017-03-28 08:08:39 -07:00
James Lu
90d3ac3cf6
relay: skip message prefixing when forwarding a message for a service client ( #403 )
2017-03-23 23:53:48 -07:00
James Lu
ad00fdfa53
relay: migrate normalizeHost, normalizeNick to protocol capabilities
2017-03-23 23:12:59 -07:00
James Lu
21670a5d51
relay: migrate most protocol checks to protocol capabilities
...
Some things I left out include modesync and op status checking on LINK, since these are pretty specific to Clientbot IRC.
2017-03-23 22:52:11 -07:00
James Lu
ebd5b77576
relay: normalize channel case in 'link'
...
(regression from commit 93c9b6289c
)
Reported by @koaxirc.
2017-03-09 20:42:38 -08:00
James Lu
4df8567fa6
Irc: move PYLINK_DISCONNECT firing and connected.clear() into disconnect() ( #421 )
...
This may prevent extra irc.connected.clear() calls from messing with the was_connected state.
2017-02-25 22:06:43 -08:00
James Lu
cd65da75c6
relay: only announce disconnects if the last connection was successful
2017-02-24 21:42:58 -08:00
James Lu
cd3d795296
relay: implement optional network disconnect announcements
...
Closes #421 .
2017-02-24 21:15:40 -08:00
James Lu
c03f2d772c
relay: allow dropping messages from user-less clients
...
This adds two new options, both defaulting to True:
- relay:accept_weird_senders (global)
- servers:<name>:relay_weird_senders (per-server)
Closes #404 .
2017-02-24 19:16:01 -08:00
James Lu
f432f6f082
relay: don't allow linking to channels when the home network is down
...
This check can be overridden via --force, and should stop unreliable TS checks from appearing instead
Closes #419 .
2017-02-21 21:58:32 -08:00
James Lu
93c9b6289c
relay: switch to IRCParser in 'link' and add a --force option to skip TS checks
...
Closes #416 .
2017-02-21 21:52:22 -08:00
James Lu
02faa3fcb6
relay: more verbosity in TS-related link errors
2017-02-21 21:14:03 -08:00
James Lu
a9d2a2c4bc
relay, handlers: rewrite oper WHOIS replies to show the target's home network
2017-02-18 13:51:45 -08:00
James Lu
3c98ef172e
relay: use the new Irc.getFullNetworkName() where applicable
2017-02-18 13:33:35 -08:00
James Lu
0b0efbaf9f
relay: less ambiguous error if a relay channel doesn't exist on the caller network
2017-02-05 21:47:11 -08:00
James Lu
6e94375ed9
relay: clarify/revise help text for 'claim'
2017-02-05 21:43:53 -08:00
James Lu
dcacfb0c10
relay: catch RuntimeError in spawnRelayServer as well
...
This is raised when a network runs out of SIDs, for example.
2017-02-03 18:06:49 -08:00
James Lu
8901ed72ee
relay: s/spawnIfMissing/spawn_if_missing/g
2017-01-29 22:18:05 -08:00
James Lu
fa30d3c732
relay: rework fallback message routing to be less annoying ( #384 )
...
- PRIVMSGs from users not spawned on a network are sent via the main PyLink client in the format "<$orignick/$network> <$text>"
- <PyLink> <user/net> blah blah
- NOTICEs from users use the same format above, and are routed from the relay subserver representing the network that the message originated from
- Notice(somenet.relay): <user/net> blah blah
- PRIVMSGs from servers are blocked, because they aren't valid on all IRCds and are fairly obscure anyways (suggestsions/improvements welcome)
- NOTICEs from servers are forwarded as raw text, from the relay subserver representing the origin network
- Notice(somenet.relay): some server announcement
2017-01-29 20:21:45 -08:00
James Lu
e936b9cfd2
relay: add a spawn_if_missing option to get_remote_sid()
2017-01-29 20:20:39 -08:00
James Lu
c20c144222
automode, relay: remove unused imports
2017-01-21 12:01:41 -08:00
James Lu
a2e7a35998
relay: remove incorrect network name in logging for blocked kicks
2017-01-06 22:51:50 -08:00
James Lu
e0bda6b850
relay: also filter out low TS values in burst relaying
2017-01-06 22:48:11 -08:00
James Lu
3e706366bd
relay: on Clientbot networks, don't relay prefix mode changes for the relayer bot
...
Closes #366 .
2017-01-06 16:45:48 -08:00
James Lu
a340ab15e1
relay: local channel in 'link' is optional
...
Thanks to Digerati for noticing this.
2016-12-29 08:47:35 -08:00