3
0
mirror of https://github.com/jlu5/PyLink.git synced 2024-11-24 19:49:24 +01:00
Commit Graph

1058 Commits

Author SHA1 Message Date
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
James Lu
5fd216c720 commands: fix 'showchan' displaying status prefixes in reverse 2018-01-22 08:10:55 -08:00
James Lu
8000d51453 Split the 'raw' command into a new plugin
Closes #565.
2018-01-21 13:50:37 -08:00
James Lu
7a51220309 relay: match P10 WALL* commands as notices 2018-01-08 20:56:06 -08:00
James Lu
ec9063b9e8 Revert "relay: differentiate between PRIVMSG vs. NOTICE via a blacklist"
This reverts commit d81a9cd5c3.
2018-01-08 20:56:06 -08:00
James Lu
60c05af9ed relay: allow defining server-specific nicks to always tags
Closes #564.
2017-12-30 01:22:24 -08:00
James Lu
c62580d228 bots: don't allow 'spawnclient' on protocols where it is stubbed 2017-12-22 12:28:27 -08:00
James Lu
7afe193259 bots: fix KeyError when attempting to join a channel not in the index 2017-12-22 12:28:27 -08:00
James Lu
5f9365a521 relay, inspircd: add support for blockhighlight +V 2017-12-21 21:18:20 -08:00
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
ab91acb2f7 relay_clientbot: rename isRelayClient => is_relay_client() 2017-12-18 13:23:53 -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
52f40ad7a2 networks.remote: don't clobber command switches for other commands
This also moves the --service argument to before the network name to prevent ambiguity with argparse.REMAINDER.

Closes #538.
2017-11-14 18:14:23 -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
48ea58c1fb bots: remove use of deprecated utils.isNick() 2017-11-07 19:19:11 -08:00
James Lu
15a231a371 global: ignore empty "global:" configuration blocks 2017-11-06 12:07:33 -08:00
James Lu
b6af6dddc5 relay: fix RuntimeError on handle_part for clientbot networks 2017-11-05 01:18:42 -08:00
James Lu
26b8292564 relay_clientbot: handle errors if the relay: or clientbot_styles: blocks are empty 2017-10-21 13:19:31 -07:00
James Lu
1470e7691f relay_clientbot: add support for showing prefix modes
This adds a new expansion $mode_prefix, and adds it to the default formats for MESSAGE and ACTION.
Closes #540
2017-10-15 01:42:07 -07: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
fe4fb9c84c stats: use a simpler /stats c format 2017-10-07 22:27:43 -07:00
James Lu
39b1e28061 Remove plugins/example_service, it is out of date and broken with 2.x
Closes #532.
2017-10-05 19:08:28 -07:00
James Lu
8443de4701 servermaps: display hopcount in 'map' for local servers 2017-09-23 22:36:49 -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
f27b179211 Merge branch 'master' into devel
Conflicts:
	plugins/automode.py
	protocols/clientbot.py
2017-09-05 18:57:24 -07:00
James Lu
7188081511 networks: throw a proper error in 'remote' if the remote network isn't connected 2017-09-05 18:55:19 -07:00
James Lu
f4c51cde00 automode: don't send empty mode lines if no users match the ACL 2017-09-05 18:36:37 -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
85a7dd3dff example, relay_cb: migrate to irc.is_channel 2017-08-30 21:22:19 -07:00
James Lu
36d6581bba automode, bots: migrate to irc.is_channel 2017-08-30 21:20:19 -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
96c89b13b1 opercmds: send KILL hook payloads from the calling user
This is so that Relay's kill warnings, etc. can be actually be routed back to the sender.
2017-08-22 23:55:53 -07:00
James Lu
29bb4c3dfd relay_clientbot: bump default startup delay to 20 seconds 2017-08-21 23:16:38 -07:00
James Lu
83183b366a exec: import all of pylinkirc for convenience 2017-08-21 23:12:42 -07:00
James Lu
89699051d5 Services API rework
- Move nick/ident/host/gecos fetching from services_support into functions
- Remove the unused 'ident' argument from ServiceBot
- Rename the 'nick' argument in ServiceBot to 'default_nick'
- Define default nicks for the PyLink, Automode, and Games services
2017-08-21 21:51:45 -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
00f70a9432 opercmds: remove extra newline in 'massbanre' help 2017-08-08 21:28:27 -07:00
Austin Ellis
fa0dd100e5 plugins/automode: fix SETACC example
Small fix to plugins/automode SETACC example given in help output.
2017-08-08 22:12:23 -05:00
James Lu
17ba9be238 exec.threadinfo: use case-insensitive sort 2017-08-08 00:30:47 -07:00