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

951 Commits

Author SHA1 Message Date
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
James Lu
8b771f6d28 exec: add 'threadinfo' command 2017-08-08 00:22:57 -07:00
James Lu
8558a4e56d stats: treat stats characters case-insensitively 2017-08-08 00:00:12 -07:00
James Lu
7d26ce4ab5 stats: log to INFO attempts to call unknown /stats 2017-08-07 23:58:30 -07:00
James Lu
29fc73193f stats: removed unused code 2017-08-07 23:55:53 -07:00
James Lu
be41f57795 PyLink 2.0-dev, now with /stats support!
Closes #131.
2017-08-07 23:52:16 -07:00
James Lu
29458c8e47 commands, opercmds: remove explicit to_lower usage
Closes #500 - I'm going to skip relay and automode because DataStore doesn't do case normalization yet.
2017-08-07 21:47:31 -07:00
James Lu
716bb6da5e opercmds: exempt service bots from masskill/massban 2017-08-07 17:24:44 -07:00
James Lu
90eee9f5cb opercmds: skip opers by default in masskill/massban 2017-08-07 17:22:56 -07:00
James Lu
a080fd253f opercmds: log massban and masskill results to INFO 2017-08-07 17:15:23 -07:00
James Lu
1597c78089 opercmds: fix wrong counting in 'masskill' if a user gets kicked from multiple channels 2017-08-07 16:55:00 -07:00
James Lu
7266f09879 opercmds: add masskillre variant
Closes #499.
2017-08-07 16:50:15 -07:00
James Lu
8987b91845 opercmds: fix --force-kb check on masskill 2017-08-07 16:50:04 -07:00
James Lu
187ca11946 commands: show an error if 'echo' is called without a text argument. 2017-08-07 00:48:28 -07:00
James Lu
f3acb3c21d networks: support more specific 'remote' permissions by target network, service, and command
Closes #457.
2017-08-07 00:46:53 -07:00
James Lu
6e0145c3b7 networks: use nargs='+' instead of manual verification in 'networks' 2017-08-07 00:38:59 -07:00
James Lu
075b746f32 opercmds: add a note to 'remote' in 'masskill' 2017-08-07 00:37:09 -07:00
James Lu
d10da72545 opercmds: reword docs/errors and add a separate permission for --force-kb 2017-08-07 00:34:03 -07:00
James Lu
f0a82859a0 opercmds: apply claim checks to massban as well 2017-08-07 00:33:01 -07:00
James Lu
8b4e73e0ed opercmds: show failed kills in 'masskill' due to claim 2017-08-07 00:18:56 -07:00
James Lu
6dc41ca15a opercmds: join reason fields in massban/masskill properly 2017-08-07 00:18:11 -07:00
James Lu
aca78b52cf opercmds: add masskill command (#499) 2017-08-06 23:49:09 -07:00
James Lu
9e97dd0b75 opercmds: rename hook payloads to be more consistent 2017-08-06 20:03:20 -07:00
James Lu
a72f710a69 Add regex variants to checkban and massban 2017-08-06 20:02:20 -07:00
James Lu
d12f12ae22 Add a 'massban' command
Closes #174.
2017-08-06 19:21:55 -07:00
James Lu
cb36e29b92 opercmds: migrate to irc.match_all() 2017-08-06 17:56:27 -07:00
James Lu
f4da1fc94c Merge branch 'master' into devel
Conflicts:
	VERSION
	classes.py
	docs/faq.md
	example-conf.yml
	protocols/p10.py
	pylink
	world.py
2017-08-05 22:11:22 -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
d734fc3280 servprotect: bump default conf up to 10 hits/10 seconds 2017-08-03 10:10:28 -07:00
James Lu
a639efa93e relay: allow overriding tag_nicks per network
Closes #494.

(cherry picked from commit 1d6b692e14)

Conflicts:
	example-conf.yml
2017-08-03 09:55:29 -07:00
James Lu
4379ef68ef Migrate coremods.permissions to snake case 2017-08-02 22:24:23 +08:00
James Lu
d42eb82b62 bots: remove obsolete "Admin-only" tags from command help 2017-08-02 22:10:04 +08:00
James Lu
76b8932eeb bots: remove duplicate nick_to_uid call 2017-08-02 22:09:48 +08:00
James Lu
529d1d84be opercmds: remove obsolete "Oper/admin only" tags from commands
These have been long superseded by the permissions API.
2017-08-02 22:06:08 +08:00
James Lu
1d6b692e14 relay: allow overriding tag_nicks per network
Closes #494.
2017-08-02 21:57:48 +08:00
James Lu
def1c0bfd9 opercmds: use irc.reply() instead of irc.msg(source, ...) 2017-08-02 21:48:05 +08:00
James Lu
acceb4e714 opercmds: reword checkban docs 2017-08-02 21:45:20 +08:00
James Lu
bf495a0aae opercmds.checkban: make maxresults configurable, up to a cap of 200 2017-08-02 21:44:17 +08:00
James Lu
47f3977554 Move NetworkCore.parse_protocol_command to IRCNetwork.parse_irc_command
Also add a stub for handle_events.
2017-07-31 11:09:08 +08:00
James Lu
02bd2035e4 opercmds: refactor checkban to use IRCParser, and implement --channel
--channel is really just a wrapper around the $and and $channel exttargets, but it exists separately for convenience. Closes #491.
2017-07-30 01:12:02 +08:00
James Lu
9b271efc89 opercmds: use %r instead of '%s' in formatting 2017-07-30 00:37:27 +08:00
Mitchell Cooper
d1b321310e opercmds: add chghost, chgident, chgname commands (#488)
Closes #481.
2017-07-15 07:41:16 +08:00
James Lu
716ffd389b classes: mark reply_lock, init_vars as private 2017-07-14 05:22:05 -07:00
James Lu
561319bc57 networks: explicitly log successful network disconnects 2017-07-12 22:22:08 -07: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
bd19468825 automode: rename internal functions to snake case 2017-07-10 22:10:55 -07:00
James Lu
4df101c40c automode: fix alias definitions 2017-07-10 22:10:47 -07:00
James Lu
79db7b2124 automode: fix $ircop exttarget name in setacc examples
(cherry picked from commit 24caf36230)
2017-07-10 22:07:11 -07:00
James Lu
59a4ecdcb9 automode: rewrap help for SET
(cherry picked from commit 499e94e0a5)
2017-07-10 22:07:09 -07:00
James Lu
24caf36230 automode: fix $ircop exttarget name in setacc examples 2017-07-10 22:06:41 -07:00
James Lu
499e94e0a5 automode: rewrap help for SET 2017-07-10 22:06:08 -07:00
James Lu
bf24bac9c9 ServiceBot: replace 'alias' option with 'aliases' & condense multiple add_cmds calls into one 2017-07-10 21:59:29 -07:00
Mitchell Cooper
100089f6b8 add alias argument where appropriate in plugins 2017-07-09 21:19:08 -04: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
990a928602 relay: re-add 'CLAIM #channel -'
This was mistakenly removed in d51c399351 due to a merge conflict, oops...

(cherry picked from commit 62669c085d)
2017-07-02 22:07:58 -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
f0fab0c0ad games: remove 'fml'
This is a blocking command which can potentially freeze the server given enough network interruption.
It will likely be reintroduced later on in some sort of "Websites" plugin, possibly in the contrib repository.
2017-07-02 21:18:32 -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
60788e4ba5 relay_clientbot: remove dark blue from the random colours list
It's difficult to read on clients configurated to use a dark background. Reported by @MrBenC
2017-07-01 18:06:50 -07:00
James Lu
a204d2b2db core: convert IrcUser calls to User 2017-06-30 21:44:31 -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
85fbc9ea9d relay_clientbot: use isinstance(obj, dict) & cleanup imports (#410) 2017-06-29 18:08:41 -07:00
James Lu
8eebcb0b06 relay_clientbot: drop colour from network names by default 2017-06-29 18:07:40 -07:00
James Lu
4696519bad plugins: migrate irc.proto calls to irc 2017-06-25 02:09:59 -07:00
James Lu
60a0bcdc7a Rename config option log:stdout -> log:console
Closes #386.
2017-06-02 08:42:32 -07:00
James Lu
76ecc60675 servprotect: only track kills and saves to PyLink clients
why wasn't this done before...
2017-05-20 15:02:04 -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
a5b3011ea4 networks: clear the 'remote command used' state and break if overriding account/reply target fails 2017-05-12 19:58:03 -07:00
James Lu
084f58b499 automode: remove extraneous +'s from mode lists
Closes #447.
2017-05-12 19:41:55 -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
79e2d20d9d commands: remove extraneous private=True from showchan 2017-04-27 07:28:26 -07:00
James Lu
0e6d33a668 networks.remote: suppress errors if restoring remoteirc.pseudoclient.account
This should rarely happen, but can be purposely caused by causing the remote network to disconnect through 'remote'.
2017-04-09 15:21:19 -07:00
James Lu
709b1d2ead commands: show TS on networks without has-ts as well 2017-04-09 14:54:16 -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
ad4fe1924b networks: show an error instead of silently failing if the command is empty 2017-03-31 17:13:04 -07:00
James Lu
0749a42ef6 networks.remote: add recursion checks to prevent bad queries from crashing the server
For example, 'remote net1 remote net2 echo hi' was problematic if the source network was 'net1'.

It's a good thing this command is restricted by default...
2017-03-31 16:40:26 -07:00
James Lu
9d9b01839c Split Irc.reply() into _reply() to make 'networks.remote' actually thread-safe
Previously, the Irc.reply_lock check was in the reply() function itself: replacing it with another function checking for the same lock would delay execution,
but then run the wrong reply() code if another module used irc.reply() while 'remote' was executing.
2017-03-31 16:25:28 -07:00
James Lu
4cd71d12ef fantasy: don't trigger when the fantasy prefix is followed by a space
This prevents false positives such as "& that", "@ person", etc.
2017-03-28 22:00:41 -07:00
James Lu
d425cb9d47 relay: fix case sensitivity in channel TS check 2017-03-28 08:08:39 -07:00
James Lu
ff0eda1fba networks: flip **kwargs position to fix Python 3.4 support
Reported by @koaxirc.
2017-03-27 15:00:01 -07:00
James Lu
ce0c84266e fantasy: make responding to nick a per-service configuration option (#343)
This also renames the "respondtonick" option to "respond_to_nick", deprecating the former name.
2017-03-26 14:03:31 -07:00
James Lu
af3b350498 networks.remote: fix "unknown service" error format 2017-03-24 01:10:56 -07:00
James Lu
6c4e042307 networks.remote: break if the target network is the same as the source (#437)
_remote_reply() otherwise gets sent into a loop when remoteirc and irc is the same here.
2017-03-24 01:08:01 -07:00
James Lu
490f21ff9f networks.remote: override remoteirc.reply() to send replies back to the caller
Closes #437.
2017-03-24 00:59:48 -07:00
James Lu
0f472c8959 networks.remote: add an optional --service option to call commands for other services. 2017-03-24 00:25:19 -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
f188b29911 plugins: migrate to server capabilities 2017-03-23 23:37:24 -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