James Lu
2e3317ce07
relay: explicitly mention forwarding in relayed kill messages ( #520 )
2018-06-11 19:26:52 -07:00
James Lu
7d56b30582
opercmds: skip verbose formatting of kill reasons for internal targets ( #520 )
2018-06-11 19:26:51 -07:00
James Lu
5ecbc2750e
exec: fix textwrap error caused by passing the wrong type to reply()
2018-06-11 19:26:51 -07:00
James Lu
93fef9b923
relay: use match_text() to check forcetag_nicks globs
2018-06-11 18:51:30 -07:00
James Lu
73d0e153cf
relay: support relaying kills ( #520 )
...
Instead of always bouncing, kills to a relay client are now handled as follows:
1) If the target and source networks are both in any killshare pool, relay the kill entirely
2) Otherwise, iterate over all channels the kill target is in:
3) If the killer has claim access in a channel, forward the KILL as a kick
4) Otherwise, bounce the kill (so far, silently)
TODO: kill messages are currently very cluttered, we should make our parser deliver more concise strings...
* GL|unreal has quit (Killed (chary.relay (KILL from GL/chary: Killed (GL (test)))))
2018-06-11 18:34:52 -07:00
James Lu
9466813ba1
relay: switch to a flexible, pool-based configuration scheme for IP sharing
...
This deprecates the "relay::show_ips" and network-specific "relay_no_ips" options, replacing it with the "relay::ip_share_pools" list.
2018-06-11 17:29:29 -07:00
James Lu
17ffd1f640
automode: log mass-removals to INFO as well
2018-06-10 14:36:40 -07:00
James Lu
372e7fb405
automode: send delacc confirmations from the right client
...
Also bold some parts of the output for easier viewing.
2018-06-10 14:31:56 -07:00
James Lu
8608c72b16
automode: allow removing entries by entry numbers
...
Closes #506 .
This isn't the most efficient implementation because Automode entry lists are actually unordered...
So far we're relying on consistent sorting of entries between LISTACC and DELACC, and indrectly removing entries by comparing the entry list with remove_range's output.
2018-06-09 23:12:37 -07:00
James Lu
f8e3cfa346
antispam: strip IRC formatting by default before processing
...
Closes #615 .
2018-06-09 16:22:14 -07:00
James Lu
ebf7443d97
antispam: add a "block" verb, and make textfilter use it by default
...
Closes #616 .
2018-06-09 16:22:14 -07:00
James Lu
0ae7eb2563
relay_clientbot: allow overriding clientbot styles by network
...
Closes #455 .
2018-06-08 19:15:47 -07:00
James Lu
b1248524a9
relay: raise an error when trying to delink a leaf channel from another leaf network
...
Previously this would (confusingly) delink the channel from the network the command was called on instead of the intended target.
2018-06-08 18:45:45 -07:00
James Lu
180da83b4e
global: reply with a confirmation
...
We can also use this space to show the number of channels and networks announced to.
2018-06-08 18:28:41 -07:00
James Lu
f82ddb5336
global: allow configuring channels to exempt from announcements
...
Closes #453 .
2018-06-08 18:25:23 -07:00
James Lu
0edbeb7fad
global: do not allow sending empty messages
2018-06-08 18:25:23 -07:00
James Lu
6085b21e48
antispam: normalize logging format in handle_masshighlight
2018-06-08 17:54:32 -07:00
James Lu
18bc1942e5
antispam: implement text filters with optional PM spam checks
...
Also refactor the _punish code to account for events without a channel attached.
Closes #359 .
2018-06-08 17:49:26 -07:00
James Lu
8cc838e5ca
relay: allow "relay.link.force_ts" as an alternate permission to 'link --force'
2018-06-08 15:56:42 -07:00
James Lu
06d57a5b28
relay: rename 'link --force' to 'link --force-ts' to better reflect its purpose
...
Also mention explicitly that this option does not bypass LINKACL and other channel restrictions (e.g. the Clientbot one)
2018-06-07 13:48:38 -07:00
James Lu
d4bf407c5d
relay: oops, the op check in 'link' should be specific to clientbot
2018-06-07 13:44:37 -07:00
James Lu
b202954be4
relay: check permissions before clientbot op status to prevent arbitrary join triggering
...
This mirrors the fix in 1.x: commit 141e941fcd
2018-06-07 13:39:16 -07:00
James Lu
fee64ece04
relay: fix clientbot op requirement not being checked if the sender is in the target channel
...
Also, show a slightly different error when using the command with 'remote', since the clientbot client gets overridden to be the message sender.
This mirrors the fix in 1.x: commit 9578fd5ac3
2018-06-07 13:38:52 -07:00
James Lu
b120e2d701
antispam: allow individual punishments to fail gracefully when not supported
2018-06-02 00:31:14 -07:00
James Lu
e65d84960a
antispam: make punishments method-specific
2018-06-02 00:06:21 -07:00
James Lu
83aa3d262c
antispam: allow masshighlight blocking to be disabled
2018-06-01 23:48:22 -07:00
James Lu
62fcdf880c
relay: support setting freeform channel descriptions for LINKED
...
Closes #576 .
2018-06-01 23:03:31 -07:00
James Lu
32acc27967
relay: tweak the "wrong network" error message for claim, modedelta
2018-06-01 22:48:13 -07:00
James Lu
c8b2a676fd
relay: rename CHANNEL_DELINKED_PARTMSG -> CHANNEL_DELINKED_MSG
2018-05-30 12:45:20 -07:00
James Lu
08a7b5c837
relay: remove our persistent channels on unload
2018-05-30 12:43:59 -07:00
James Lu
f20fa5e995
Add User.get_fields(), and rework plugins to fix $nick broken expansions
...
User.nick is no longer a writable attribute since a085aed924
, so it won't show up in __dict__ now.
get_fields() replaces the User.__dict__ hack various plugins used and also provides some new expansion variables:
- $sid and $server expand to the server ID and name respectively
- $modes and $channels are now preformatted strings
- $netname expands to the network name
$manipulatable and $_irc were removed since their values aren't quite meaningful as strings
2018-05-26 02:12:38 -07:00
James Lu
2df3dc280c
commands.showuser: show home server and TS as "N/A" if they are spoofed values
2018-05-26 01:14:32 -07:00
James Lu
ec3a94c4ca
Move U:line checking into core as PyLinkNCWUtils.is_privileged_server()
...
Closes #604 .
2018-05-26 00:14:04 -07:00
James Lu
73261a31bd
opercmds: forbid killing the main PyLink client
2018-05-21 02:37:53 -07:00
James Lu
c9c937e7a7
relay: block networks not on the claim list from merging in modes when relinking
...
This can cause channels to be inadvertently set modes that it shouldn't be on a relink (e.g. modes set by services DEFCON), since relay ignores modes from defined u-lines instead of bouncing them.
2018-05-21 00:09:57 -07:00
James Lu
1fb2a90580
relay: log rejected links due to LINKACL to WARNING
...
Closes #609 .
2018-05-20 22:17:23 -07:00
James Lu
0ac5d424d8
core: implement text wrapping in irc.msg()
...
Closes #153 .
2018-05-11 14:38:21 -07:00
James Lu
741e2c8ece
relay: allow claim to be disabled by default on new channels
...
Closes #581 .
2018-05-11 13:26:13 -07:00
James Lu
fc275cfdca
relay: remove service bots joined persistently when the home network disconnects
2018-05-11 13:21:16 -07:00
James Lu
aa4cedd945
relay: allow default LINKACL mode to be configured as an option ( #394 )
2018-05-11 13:09:54 -07:00
James Lu
fb6aa88d83
Merge branch 'relay-linkacl-whitelist' into devel
...
Closes #394 .
2018-05-11 12:58:45 -07:00
James Lu
613e6412a2
networks.remote: properly error if the target service is not available on the target network
...
Closes #554 .
2018-05-10 16:06:16 -07:00
James Lu
30c1980b59
relay: consistently use bold instead of repr in LINKACL output
2018-05-09 23:33:00 -07:00
James Lu
0ae4aea133
relay: add a whitelist mode for LINKACL ( #394 )
2018-05-09 23:29:56 -07:00
James Lu
64a98120bf
relay: remove references to deprecated irc.proto
2018-05-09 22:44:17 -07:00
James Lu
b50ae89acc
relay: check service bot status before remote user presence
...
add_persistent_channels() is usable regardless of whether the service bot is ready, so we do not need to break if the remote copy of the service bot doesn't exist.
Closes #606 .
2018-05-09 21:44:04 -07:00
James Lu
f3c2149d7a
relay: fix variable confusion when managing service bots
...
We should be checking for service bot presence locally, and applying changes on the *remote* network.
2018-05-09 21:34:17 -07:00
James Lu
0c19b3719e
automode: clarify comments to main() slightly
2018-05-09 21:29:20 -07:00
James Lu
2f6c8d2938
Revert "relay: shortcut get_remote_user some more; only grab spawn lock if the user doesn't exist"
...
This seems to have caused sporadic duplicate user spawns once more (#602 )
This reverts commit 0bc24c94b2
.
2018-05-05 23:17:24 -07:00
James Lu
5a0cb9a4ff
automode: add/remove persistent channels on set/del/clearacc
2018-05-05 21:51:27 -07:00
James Lu
8aa67b93fa
automode: also rejoin DB channels on reload
2018-05-05 21:10:08 -07:00
James Lu
bf4863eb6d
relay, ServiceBot: remove dead code
2018-05-05 13:20:55 -07:00
James Lu
72c2fa38e9
relay: consistently use "Channel delinked." as part message for service bots too
2018-05-05 13:19:57 -07:00
James Lu
61d7bf18d3
relay: also attempt to part the PyLink service bot on delink
2018-05-05 13:15:17 -07:00
James Lu
92be421fad
relay: attempt to remove persistent channels on delink as well
...
Also, wrap remove_persistent_channel calls with a try/except when they may fail.
2018-05-05 12:57:17 -07:00
James Lu
8994811f54
relay: further fixes for persistent channels
...
Also, merge the 'relay_local' and 'relay_remote' namespaces into one.
2018-05-05 12:52:00 -07:00
James Lu
e9fe15bd7d
[WIP] Further revise the persistent channels implementation
...
- Make dynamic_channels per plugin as well as per network to work around relay-service conflicts (#265 )
- Introduce ServiceBot.(add|remove)_persistent_channel() to add/remove persistent channels and optionally join/part them
- Introduce ServiceBot.part(), which checks remaining persistent channels list and parts a channel only if it is still not marked persistent
- Refactor automode to autojoin channels on ENDBURST instead of plugin load
- Refactor relay to manage persistent channels on join/part/(de)init, both locally (namespace 'relay_local') and remotely (namespace 'relay_remote')
2018-05-04 22:52:26 -07:00
James Lu
af744123e6
automode: join channels regardless of whether they're empty
2018-04-20 19:35:06 -07:00
James Lu
281ac7aa31
antispam: add a workaround for clientbot support ( #359 )
2018-04-14 11:40:19 -07:00
James Lu
47052a3bba
antispam: use kick+ban as default punishment
2018-04-13 22:18:41 -07:00
James Lu
3e07239db4
antispam: don't kill users if they quit after previous punishments
2018-04-13 22:18:03 -07:00
James Lu
dd8f9411b6
antispam: filter protection-triggering messages from reaching other plugins ( #359 )
2018-04-13 22:15:24 -07:00
James Lu
3825b93dee
Initial pass of a mass-highlight blocking plugin ( #359 )
2018-04-13 22:08:37 -07:00
James Lu
4cdc19ac78
relay: fix is_internal_client call
2018-04-13 20:31:56 -07:00
James Lu
2f12a5b710
Initial work on dynamic service bot joining / parting ( #265 )
2018-04-12 12:45:33 -07:00
James Lu
2cb4a06e64
commands: report times in showuser, showchan in UTC
...
XXX: we could perhaps use abstraction to this since we're repetitively chaining commands
XXX: 'ts' is not type-safe yet, some protocol modules are storing it as a string?!
2018-04-12 10:58:09 -07:00
James Lu
f75b1eb356
Rename servers::<netname>::server_suffix -> servers::<netname>::relay_server_suffix
2018-04-03 17:43:02 -07:00
James Lu
9d21a5269f
relay: speed up shutdowns by not manually splitting off every relay server
...
The connection will soon be gone anyways, so this is fairly pointless.
2018-03-30 12:06:45 -07:00
James Lu
c978e1c52f
relay: fix a typo: CLIENTBOT_WHITELISTED_UMODES -> CLIENTBOT_WHITELISTED_CMODES
2018-03-30 12:01:38 -07:00
James Lu
0bc24c94b2
relay: shortcut get_remote_user some more; only grab spawn lock if the user doesn't exist
2018-03-24 00:31:15 -07:00
James Lu
bbb36cd956
relay: reuse get_relay_server_sid output when bursting groups of users
2018-03-24 00:25:05 -07:00
James Lu
ec8f744449
relay: only look up nick once in normalize_nick
2018-03-22 22:45:40 -07:00
James Lu
180bfa9917
relay: don't spam ulines with "notice failed" errors
2018-03-17 10:27:56 -07:00
James Lu
5bffe67416
relay: bandaid patch for freezes on startup when there are a ton of networks
...
The side effect of this patch is that it makes large bursts *really* CPU intensive. A proper fix for this will hopefully be introduced in the future.
2018-03-11 21:26:37 -07:00
James Lu
b7b49769e0
relay: silently abort if a network splits while we try to spawn a server or client
2018-03-11 21:25:42 -07:00
James Lu
5733418380
relay_cb: bandaid fix to prevent STATUSMSG messages from being interpreted as non-channel specific
2018-03-10 19:54:33 -08:00
James Lu
b6bac994c6
servermaps: show the uplink server name for Clientbot links
2018-03-07 22:28:34 -08:00
James Lu
c49147f232
stats: route permission error replies to notice and not privmsg
...
This prevents "unknown command" flood loops with stats services which poll these on link.
2018-03-04 12:11:50 -08:00
James Lu
57f77c676d
relay: don't show the network name when routing kicks through a server
...
This is redundant, as relay has always spawned subservers for quite some time now.
2018-03-02 21:42:25 -08:00
James Lu
d172831805
conf: rename methods to snake case ( #523 )
2018-03-02 20:23:48 -08:00
James Lu
87fdb1dde1
opercmds: migrate from utils.isServerName to irc.is_server_name
2018-03-02 20:23:47 -08:00
James Lu
3e656cd943
utils: mark reset_module_dirs, load_plugin, get_protocol_module as private
2018-03-02 20:23:47 -08:00
James Lu
1cdf16f5c9
various: migrate utils.loadPlugin, getProtocolModule, resetModuleDirs calls to snake-case ( #523 )
2018-03-02 20:23:47 -08:00
James Lu
bea2ea8ebd
plugins, coremods: migrate (un)registerService calls to snake case ( #523 )
2018-03-02 20:23:47 -08:00
James Lu
1c3f71ac1b
servermaps: assign servermaps.localmap to all opers
2018-03-02 16:18:55 -05:00
James Lu
d5d94f86e8
servermaps: split into two perms (servermaps.map and servermaps.localmap)
2018-03-02 16:14:04 -05:00
James Lu
e8e26daf05
ctcp: fix wrong logging format for unknown CTCPs
2018-03-01 02:48:04 -05:00
James Lu
5d25b3c105
ctcp: remove extraneous keyword argument
...
private is not defined in irc.msg()
2018-02-25 14:29:19 -05:00
James Lu
3c0809dce0
ctcp: don't use irc.reply in hook functions
...
This is undefined behaviour because nothing in this stack actually updates the 'last caller' variables irc.reply() use.
2018-02-24 14:19:57 -05:00
James Lu
5c9639b4a9
opercmds: alias 'trace' to checkban
2018-02-21 00:12:08 -08:00
James Lu
9cdb224c02
Replace use of conf.conf['bot'] with conf.conf['pylink']
2018-02-18 23:26:39 -08:00
James Lu
c40250330d
ctcp: log the service bot receiving CTCP messages
2018-02-18 23:13:44 -08:00
James Lu
e68db3689d
Rewrite the CTCP plugin
...
- Extend CTCP replies to all service bots - closes #468 .
- Use a generic hook handler instead of wrapping around the commands handler (#407 ).
This code takes advantage of the hook suppression feature introduced in 2e66b9bde6
(#547 ).
2018-02-18 23:11:36 -08:00
James Lu
4a01948647
relay: oops, multiple STATUSMSG prefixes should pick the lowest, not highest ( #570 )
...
This behaviour really isn't consistent across IRCds though...
- Unreal, Hybrid, and charybdis mangle messages at the server side to use the lowest prefix
- InspIRCd throws a "No such nick/channel" error
- Nefarious silently drops messages with multiple prefixes?
2018-02-18 22:29:16 -08:00
James Lu
81bd1e8474
relay: add basic support for STATUSMSG ( #570 )
...
So far, this code only knows about changing prefixes while keeping mode characters as-is.
A complete but longer solution would be to actually go through irc.cmodes, but I don't
think doing so is necessary given how little STATUSMSG is actually used in production.
2018-02-18 22:03:12 -08:00
James Lu
3f7e2328fe
relay: make endburst delay configurable
...
Also, raise the default to 10 seconds.
2018-02-10 15:53:49 -08:00
James Lu
a425f873b5
relay, inspircd: move endburst delay code to a private API
...
This is a very specific hack that shouldn't be extended across the protocol module spec. So far, all other protocol modules ignore the endburst_delay option anyways.
2018-02-10 15:34:07 -08:00
James Lu
ccbd79a95c
relay: fix KeyError when a local client is kicked from a claimed channel
...
Fixes #572 .
2018-02-10 15:12:40 -08:00
James Lu
28a62f629a
automode: replace assert usage with proper exceptions
2018-01-22 08:17:20 -08:00
James Lu
09c8b03705
automode: fix handling of channels with multiple #'s in them
2018-01-22 08:15:04 -08:00