3
0
mirror of https://github.com/jlu5/PyLink.git synced 2024-12-27 13:12:45 +01:00
Commit Graph

1050 Commits

Author SHA1 Message Date
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
James Lu
3ffbbe60ff global: configurable output format 2017-03-13 13:39:30 -07:00
James Lu
cfe72e2cd0 global: set loopback=False on messages to prevent duplicating them via relay 2017-03-13 13:29:04 -07:00
James Lu
0a57c084bb global: only send to connected networks 2017-03-13 13:23:22 -07:00
James Lu
a3dff204d3 global: remove extraneous metadata
Core plugins do not need to track authors and version, because git does that for us.
2017-03-13 13:21:11 -07:00
Ken Spencer
7e6ad089c0 plugins: add global notice plugin 2017-03-13 12:30:06 -04:00
James Lu
716ac681b6 exec: add 'pieval' and 'peval' to evaluate expressions pretty-printed 2017-03-11 22:47:30 -08:00
James Lu
bf42109d81 Split fantasy prefix definitions into service-specific blocks
Closes #426.

This makes the pylink::prefix (aka bot::prefix) option only affect the main PyLink bot, and deprecates the pylink::prefixes::<...> options.
As the bot: config block is no longer checked, this commit depends on commit 45ed5b962e215763f7659631d1b98a5031dbab92 (ref #343) to alias it to conf::pylink.
2017-03-10 23:47:07 -08:00
James Lu
b09565a723 bots, opercmds: add a "Done" reply to most commands as they finish 2017-03-09 20:50:14 -08: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
e8bf1d08bc handlers, fantasy: migrate away from irc.botdata (#273) 2017-03-05 00:10:33 -08:00
James Lu
733d7d7c87 exec: add ieval command using the isolated local scope 2017-03-04 22:05:03 -08:00
James Lu
42ba1775d7 exec: add irc, source, and args to isolated locals scopes
This allows basic things like irc.reply() to work in 'iexec'.
2017-03-04 21:59:42 -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
bf702575be servprotect: fix a syntax error 2017-02-21 21:49:41 -08:00
James Lu
02faa3fcb6 relay: more verbosity in TS-related link errors 2017-02-21 21:14:03 -08:00
Ken Spencer
a8fe353ba4 servprotect: make length and age configurable (#417)
Fixes #395
2017-02-21 17:02:26 -08:00
James Lu
0c88602d1f fantasy: check for nick prefix case insensitively 2017-02-18 21:21:32 -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
902b246f96 bots: allow specifying channel prefixes (e.g. @+) in 'join'
This functionality should really be merged with what ServiceBot does, but whatever...
2017-02-13 17:01:09 -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
18826ad5c6 exec: add 'iexec' to run code in an isolated, persistent local scope 2017-02-05 20:26:40 -08:00
James Lu
a3a5569156 exec: print a "Done" after executing code 2017-02-05 20:14:30 -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
b5cf2e8a4e stats: add an --all option to 'uptime', and check for disconnected networks 2017-01-30 00:18:50 -08:00
James Lu
efded33f4a stats: oops, use the right Irc object 2017-01-30 00:08:40 -08:00
James Lu
de99be720e stats: prettier formatting for the uptime command
Closes #381.
2017-01-30 00:06:42 -08:00
James Lu
1c19d82f53 Merge branch 'wip/stats' into devel 2017-01-29 23:31:43 -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
d6a6d069bc Move 'mkpasswd' to the commands plugin 2017-01-22 16:42:46 -08:00
James Lu
c20c144222 automode, relay: remove unused imports 2017-01-21 12:01:41 -08:00
James Lu
170738ee10 Revert "automode: bandaid fix for "service already registered" errors on first load"
This reverts commit e2a853c98e.
2017-01-21 11:59:43 -08:00
James Lu
3dd35ba5a1 Add an example services plugin
Closes #399.
2017-01-21 11:59:43 -08:00
James Lu
1fe64cca04 example.py: update to reflect 1.1.x docstring changes (#307) 2017-01-21 11:59:43 -08:00
James Lu
d749fbb2ab ctcp: -that 2017-01-20 22:32:32 -08:00
James Lu
b7470c3c42 ctcp: remove puns 2017-01-20 22:31:46 -08:00
James Lu
b1918f5392 Initial pass at a Stats plugin (#121, #381) 2017-01-11 23:35:35 -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
605d242677 automode: remove repeated "Error:" in error messages 2017-01-02 10:11:55 -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
James Lu
614c029538 relay: add missing 'relay.linked' permissions check 2016-12-25 00:31:38 -08:00
James Lu
ec13bae7e6 opercmds: remove pointless source argument from 'kick' and 'kill' 2016-12-24 10:58:03 -08:00
James Lu
77dd8224ae relay: use built-in hash() for colorizing text
This is way faster than md5.
2016-12-21 23:48:40 -08:00
James Lu
c09fce344d relay: whitelist _ on InspIRCd, UnrealIRCd, Nefarious, clientbot 2016-12-19 00:00:24 -08:00
James Lu
ef8ec03e41 relay: re-add / in hosts for networks that support it 2016-12-18 23:56:47 -08:00
James Lu
3339bf0fe6 relay: rewrite normalizeHost() to whitelist characters instead 2016-12-17 23:47:26 -08:00
James Lu
f9adaa85ca commands: implement 'logout'
Closes #370.
2016-12-16 19:05:08 -08:00
James Lu
045abfa9c1 commands: add permissions checks to echo, showuser, showchan, and status 2016-12-16 18:31:19 -08:00
James Lu
2de36caea0 commands: fix previous commit 2016-12-09 22:13:32 -08:00
IotaSpencer
b0296933a1 plugins/commands.py: change over to permissions API 2016-12-09 22:13:32 -08:00
IotaSpencer
9199186309 plugins/opercmds.py: change over to permissions API 2016-12-09 22:13:32 -08:00
IotaSpencer
69083cfcfd plugins/bots.py: change over to permissions API 2016-12-09 22:13:32 -08:00
James Lu
12a8509299 changehost: limit 'applyhosts' to those with the changehost.applyhosts perm 2016-12-09 22:13:32 -08:00
James Lu
60ca5af813 networks: port to the permissions API (#367) 2016-12-09 21:55:47 -08:00
James Lu
fb463e3b26 networks.remote: override the login to a valid user, so that permissions can match it 2016-12-09 21:53:54 -08:00
James Lu
34ad79744a networks: update help for 'disconnect'
The 'disconnect' command has been changed to disable autoconnect, but this text was never updated.
2016-12-09 21:51:57 -08:00
James Lu
01f2a4ca20 servermaps: fix wrong permission name 2016-12-09 21:43:58 -08:00
James Lu
3d4cb02ce2 exec: rewrap docstirngs 2016-12-09 21:43:58 -08:00
James Lu
9e2598612a exec: port to permissions API (#367) 2016-12-09 21:43:58 -08:00
James Lu
b5f244009a relay: rename camel case functions to lowercase with underscores
The exception is isRelayClient(), which is aliased only to is_relay_client() to be consistent with isXYZ() functions elsewhere in the framework
Also, getRemoteChan() was renamed to get_remote_channel()
2016-12-09 18:02:30 -08:00
James Lu
2b4943a780 relay: add locks in db read/writes (thread safety) 2016-12-09 17:44:11 -08:00
James Lu
e40b2f6529 relay: add 'purge' command to remove all relays involving a network
Closes #356.
2016-12-09 17:34:51 -08:00
James Lu
8855ef2a41 relay: don't break in removeChannel if irc.pseudoclient isn't set 2016-12-09 17:34:34 -08:00
James Lu
638b9dc84a relay: rewrap help for LINKACL
More formatting changes to come.
2016-12-05 23:33:42 -08:00
James Lu
a57f194123 changehost: add options to match users by IP and realhost 2016-11-20 12:34:11 -08:00
James Lu
476f84a181 changehost: implement enforce exceptions 2016-11-20 12:33:58 -08:00
James Lu
d90f44c510 changehost: explicitly ignore PyLink internal clients 2016-11-20 12:04:30 -08:00
James Lu
501647805c changehost: add optional vHost enforcement 2016-11-20 11:53:55 -08:00
James Lu
c77ad6faa9 bots: PseudoClient->client in help text & error messages 2016-11-18 23:13:56 -08:00
Ken Spencer
d467d27ecd plugins: change remaining plugins over irc.error() use 2016-11-18 23:11:44 -08:00
Ken Spencer
289ab78052 plugins/bots: change over to irc.error() use 2016-11-18 23:10:45 -08:00
Ken Spencer
940430b075 plugins/automode: change errors over to irc.error() based use 2016-11-18 23:10:45 -08:00
James Lu
8ff292bd1f automode: support remote channel manipulation in the form netname#channel
Closes #352.
2016-11-12 12:20:25 -08:00
James Lu
691a8178b2 relay: implement 'showchan' with links info
Closes #353.
2016-11-12 10:43:55 -08:00
James Lu
b94e11930e structures: directly retrieve DB save delay in DataStore (#303) 2016-11-09 22:53:13 -08:00
James Lu
b0636b40ab Finish the plugin migration to DataStore
Closes #303.
2016-11-09 22:47:22 -08:00
James Lu
377df413ed Irc: s/isServiceBot/getServiceBot/g (#355)
This function is renamed to better reflect its return value (ServiceBot object instead of boolean True).
2016-11-09 19:09:59 -08:00
James Lu
b0bd5d47ae relay: fix logging format in spawnRelayUser error 2016-11-07 22:04:34 -08:00
James Lu
44743d860e relay: don't break autoconnect anymore when there's a server conflict
This reverts most of commits 5c7524b and f2a5e1d.
2016-11-07 21:53:52 -08:00
James Lu
4246a3d113 relay: work on sane fallbacks when a network's SID goes missing (#354) 2016-11-07 21:47:53 -08:00
James Lu
b79e693808 exec: Drop 'raw' text logging to DEBUG for security purposes
Closes #347.
2016-11-07 21:25:57 -08:00
James Lu
2d20256ed8 Relay: rework to use the permission system
This defines the following permissions:

Granted to opers by default:
- relay.create
- relay.destroy
- relay.claim
- relay.link
- relay.delink
- relay.linkacl.view
- relay.linkacl

Granted to all users by default:
- relay.linked

And the following which is not explicitly granted:
- relay.savedb

Closes #325.
2016-11-07 21:22:52 -08:00
James Lu
e977c95520 Merge branch 'master' into devel
Conflicts:
	VERSION
	example-conf.yml
2016-11-02 22:28:39 -07:00
James Lu
9f43c0fe17 automode: fix typo in DB error message 2016-11-02 22:27:01 -07:00
James Lu
9f4c68f114 relay: skip channel TS check for Clientbot
(cherry picked from commit d230af1d5e)
2016-10-22 20:59:34 -07:00
James Lu
d230af1d5e relay: skip channel TS check for Clientbot 2016-10-22 20:45:43 -07:00
James Lu
a5d97c15e7 relay: disable nick collide messages to debug 2016-10-20 20:13:17 -07:00
James Lu
2ed8b68c44 relay: allow configuring custom relay server suffixes
Closes #333.

(cherry picked from commit 3900833458)
2016-10-20 19:10:47 -07:00
James Lu
386c71475a servermaps: removing leading - from entries 2016-10-07 18:51:31 -07:00
James Lu
57b566286d relay: make clientbot modesync more configurable (#287) 2016-09-25 20:07:16 -07:00
James Lu
4222cc30a8 relay, clientbot: implement clientbot mode sync
Closes #287.
2016-09-25 20:07:16 -07:00
James Lu
13a42c17b2 servermaps: skip clientbot networks (servers aren't properly tracked) 2016-09-24 16:36:28 -07:00
James Lu
438838f81d ServiceBot: handle autojoin additions even if bots haven't spawned yet 2016-09-24 12:33:57 -07:00
James Lu
7d20b70d33 relay_cb: fix UnboundLocalError when kicking a service bot 2016-09-24 12:20:18 -07:00
James Lu
b9d8ec5039 relay: listen to PYLINK_SERVICE_JOIN from services_support 2016-09-24 12:13:33 -07:00
James Lu
dfa75f6606 servermaps: simplify output format
Drawing all the |'s and `'s is a rather complex process, so just replace this with bullet-point output.
2016-09-24 12:02:43 -07:00
James Lu
60b595ea6f servermaps: fix help for 'localmap' 2016-09-24 11:58:28 -07:00
James Lu
595bceda2e servermaps: implement network maps over relay!
Local-only map is available too using the 'localmap' command.
2016-09-24 11:56:37 -07:00
James Lu
68c247f764 New servermaps plugin: displays network /map's from the PyLink server's perspective 2016-09-24 11:19:33 -07:00
James Lu
d59732f6dd automode: simplify join routines to use ServiceBot.join() (#326) 2016-09-23 23:43:27 -07:00
James Lu
a040c3c7d2 ServiceBot: modularize join() for explicit channel joining (#326) 2016-09-23 23:43:07 -07:00
James Lu
3900833458 relay: allow configuring custom relay server suffixes
Closes #333.
2016-09-23 22:49:04 -07:00
James Lu
d05917222d relay: clobber colour codes in hosts
(cherry picked from commit b467da13b1)
2016-09-20 07:01:16 -07:00
James Lu
df50b7b137 bots: allow JOIN/NICK/QUIT on ServiceBot clients
(cherry picked from commit 1c86f32003)
2016-09-20 07:01:16 -07:00
James Lu
b467da13b1 relay: clobber colour codes in hosts 2016-09-20 06:58:04 -07:00
James Lu
e0f56a157d relay_cb: remove dark gray from colours index
It's too hard to read on a dark background.
2016-09-19 21:56:12 -07:00
James Lu
1c86f32003 bots: allow JOIN/NICK/QUIT on ServiceBot clients 2016-09-19 18:23:11 -07:00
James Lu
c62dd272d6 relay_clientbot: display the remote channel in join/kick/etc relay, not the local channel 2016-09-19 17:40:50 -07:00
James Lu
e60c020634 relay_clientbot: redo color hashing to be more unique 2016-09-19 17:40:33 -07:00
James Lu
eaa09d68ce Automode: limit 'list' permissions on all channels to opers 2016-09-12 11:26:31 -07:00
James Lu
838ea6bfc4 relay: skip iterating over modetype definitions during reverse mode lookup
This fixes a bug when setting +l on UnrealIRCd, where the type C mode definition is coincidentally also equal to 'l'. Reported by kevin via IRC.
2016-09-07 20:37:57 -07:00
James Lu
bbdffc797d relay_clientbot: Implement relaying of text sent from service bots 2016-09-06 20:11:08 -07:00
James Lu
dd083b9b8d relay: remove extraneous comment 2016-09-06 20:11:08 -07:00
James Lu
aacc3149ce fantasy: don't error when bots are removed while processing (e.g. on shutdown) 2016-09-06 18:06:29 -07:00
James Lu
c5c77eeb97 protocols: chandata->channeldata for MODE and JOIN hooks 2016-09-02 17:52:19 -07:00
James Lu
9b38ca7d68 automode: join modebot client on setacc
Reported by kevin via IRC.
2016-08-31 22:23:55 -07:00
James Lu
e85cc684a1 relay_cb: respect allow_clientbot_pms in 'rpm' (#292) 2016-08-31 19:51:52 -07:00
James Lu
7eb5e59842 relay_cb: implement outgoing PMs from clientbot networks via an 'rpm' command
Closes #292.
2016-08-31 19:48:17 -07:00
James Lu
7817898c14 relay_cb: distinguish between PM and private notice, switch to irc.msg() 2016-08-31 18:30:51 -07:00
James Lu
663d03ed2c relay/clientbot: begin work on outgoing PMs to clientbot users (#318)
This still needs to implement PMs going the other way around, and should eventually distinguish between PMs and private notices.
2016-08-31 14:08:28 -07:00
James Lu
7bae4062b1 automode: log successful sync/add/remove/clear events
Closes #320.
2016-08-31 13:32:50 -07:00
James Lu
1c4cb94a13 relay: block /OJOIN in claim 2016-08-27 19:09:02 -07:00
James Lu
3c7b201f57 protocols: rename 'oldchan' in MODE payloads to 'chandata' 2016-08-27 17:46:35 -07:00
James Lu
f890ddac1b permissions, automode: work on default permissions & add example permissions config (#190)
- Fix possible type errors in add/removeDefaultPermissions by converting permlist values to sets.
- Fix wrong permission string being checked in automode.<command>.#channel
- automode: register and unregister default permissions on load/unload.
- permissions: add an 'also_show' argument to checkPermissions(), to display alternative permissions that weren't directly checked.
2016-08-25 11:45:57 -07:00
James Lu
03a780f397 automode: reorder functions in a way that makes more sense 2016-08-25 11:10:55 -07:00
James Lu
104c0cef4b automode: switch from irc.checkAuthenticated to new-style permissions 2016-08-25 00:58:19 -07:00
James Lu
09c98f66ff relay: fix overzealous host normalization due to variable replacement during iteration 2016-08-21 18:06:53 -07:00
James Lu
5444b808b1 Revert "relay_clientbot: lowercase network name (stylistic choice)"
This reverts commit 42da216f5d.
2016-08-21 17:28:33 -07:00
James Lu
b572c58223 relay: {} are valid nick chars too... 2016-08-20 17:36:24 -07:00
James Lu
e1fab8c153 relay: fix a typo in comment 2016-08-13 11:40:01 -07:00
James Lu
1c83f59baa relay: rewrap some poorly placed comments 2016-08-13 11:03:58 -07:00
James Lu
63f40c9565 relay: delay RELAY_JOIN hooks to a second loop. Closes #311. 2016-08-12 18:47:12 -07:00
James Lu
e75c0d075f relay: on clientbot, explain _why_ calling LINK twice is needed 2016-08-11 12:51:08 -07:00
James Lu
bdadb27466 relay: reverse getPrefixModes() output so the right mode order is passed to sjoin()
This prevents users from bursted as "+@~UID" instead of "~@+UID", for example.
2016-08-09 18:39:13 -07:00
James Lu
1660705658 exec: repr() eval output for proper formatting
This ensures that results that are an empty string, for example, are properly formatted as ''.
2016-08-09 10:57:31 -07:00
James Lu
c09ff6a706 relay_clientbot: fix config key name 2016-08-08 22:23:42 -07:00
James Lu
1b747bf09d relay_clientbot: skip relaying non-PRIVMSGs for X seconds after connect
This can be configured via the option relay::clientbot_startup_delay, and defaults to 5 seconds.
2016-08-08 22:20:31 -07:00
James Lu
3878ae9e0d relay_clientbot: skip to next channel for SQUIT payloads if no nicks are affected 2016-08-08 21:05:55 -07:00
James Lu
8636280b91 relay_clientbot: use channel specific user lists when relaying SQUIT
Closes #312.
2016-08-08 20:59:15 -07:00
James Lu
b096c7a2e3 relay_clientbot: fix wrong key for clientbot_styles 2016-08-08 18:50:36 -07:00
James Lu
990f24938b relay: convert / to . in hostnames on hybrid
Also, switch this check to a whitelist instead of a blacklist for better compatibility.
2016-08-07 15:16:37 -07:00
James Lu
81ffa93bad relay: block attempts to LINK if local TS is lower than remote
Closes #301.
2016-08-04 13:04:32 -07:00
James Lu
acd0c673cb relay_cb: use safe_substitute, rename some fields, add SQUIT/SJOIN support
Closes #294. Closes #304. This renames the "nick" field to "sender", and "identhost" to "sender_identhost", to be less ambiguous when a message sender is a server.
2016-08-04 12:50:38 -07:00
James Lu
72da00d23c relay: block clientbot networks from hosting relays 2016-08-04 10:55:00 -07:00
James Lu
7a0fd1caa3 relay: rework "target in channel" requirements for clientbot links
Closes #305.
2016-08-04 10:47:06 -07:00
James Lu
66067c272f relay: limit hosts to 63 chars, not 64 2016-08-03 00:21:30 -07:00
James Lu
197d9fc14a commands: show topic only if it exists, disable TS output on clientbot 2016-08-02 23:57:18 -07:00
James Lu
a6258dd973 changehost: more friendly error when an expansion field is unavailable 2016-08-02 23:04:46 -07:00
James Lu
1cda5023c8 changehost: copy args before cloning, make $host expansion optional 2016-08-02 22:56:59 -07:00
James Lu
02b5f0b7e6 changehost: explicitly forbid $host from being expanded
This will cause recursion whenever applyhost is ran and a user matches a mask based on real host or IP, which haven't changed. Any suffix or prefix applied to $host will be reapplied, often leading to invalid hosts that are too long.
2016-08-02 22:17:23 -07:00
James Lu
eb032eb7f9 commands: explicitly sort mode lists in 'showuser' and 'showchan' 2016-07-31 21:46:33 -07:00
James Lu
f2a5e1dc78 relay: catch errors on remove_network() and ignore them 2016-07-31 20:36:27 -07:00
James Lu
1ef89560e2 core: rename IrcUser.identified attribute to IrcUser.account 2016-07-29 20:16:05 -07:00
James Lu
accd5b70b3 relay: show reasons when clientbot is force parted or kicked 2016-07-29 01:08:14 -07:00
James Lu
6bc3191077 relay: only block cmodes from relaying on clientbot (#289) 2016-07-29 00:54:29 -07:00
James Lu
8047186c58 plugins, coremods: remove usage of irc.conf (#273) 2016-07-27 17:02:04 -07:00
James Lu
42da216f5d relay_clientbot: lowercase network name (stylistic choice) 2016-07-26 16:41:15 -07:00
James Lu
fa1ce45bf3 relay: add configurable list of nick globs to always tag
Closes #276.
2016-07-26 16:01:42 -07:00
James Lu
af027e2288 networks: support protocol module reloading
Closes #177.
2016-07-25 11:00:56 -07:00
James Lu
d008814de9 opercmds: make 'kick' treat channels case insensitively 2016-07-24 16:40:31 -07:00
James Lu
a2c5b11194 opercmds: make 'jupe' admin only 2016-07-24 16:40:23 -07:00
James Lu
a905f74800 relay/clientbot: rework KICK handling to send the right thing at the right times
Some of the logic was inverted so that the Clientbot would try to kick invalid things like GLolol/ovd, and send clientbot KICK payloads when it's supposed to forward an actual kick.

This also fixes KICKs from servers not being relayed by clientbot.
2016-07-24 11:55:46 -07:00
James Lu
bcf5f612cc exec: make pylinkirc and importlib accessible 2016-07-24 11:51:44 -07:00
James Lu
832f22e7f0 relay: remove unnecessary "Relay plugin unloaded" quits 2016-07-24 11:13:51 -07:00
James Lu
dc364b3e9e relay: explicitly don't sync modes originating from clientbot 2016-07-24 11:11:54 -07:00
James Lu
62f78a60a9 commands: refactor showchan to use IrcChannel.getPrefixModes() 2016-07-24 11:03:23 -07:00
James Lu
04e37ebd04 commands: mention the VCS version as well 2016-07-24 10:59:25 -07:00
James Lu
8dd0a904d2 relay_cb: use the full network name in prefixes 2016-07-23 22:30:25 -07:00
James Lu
05a5ec7e19 relay: don't show "real server" for clientbot users, it's not accurately tracked 2016-07-23 22:30:10 -07:00
James Lu
e2a853c98e automode: bandaid fix for "service already registered" errors on first load 2016-07-23 21:46:55 -07:00
James Lu
38793654ea relay: error when someone attempts to PM a clientbot user
PMs aren't routed through Clientbot yet.
2016-07-23 21:09:25 -07:00
James Lu
cadf0a336c relay: limit auto-rejoin-on-part to relay channels 2016-07-23 19:06:35 -07:00
James Lu
08525e8eba relay: treat forced parts to clientbot as clearchan 2016-07-23 19:03:07 -07:00
James Lu
0db9d4e69e relay/clientbot: support relaying KICK, QUIT, NICK, CTCP ACTION, and NOTICE 2016-07-23 18:48:27 -07:00
James Lu
3e91118644 relay/clientbot: implement kick, join, part relaying 2016-07-23 12:25:52 -07:00
James Lu
fdaed4f700 relay_clientbot: configurable formatting, with defaults 1000x prettier than janus 2016-07-23 12:05:22 -07:00
James Lu
a9be5d0dc7 relay: treat kicks to the service bot on clientbot networks as clear channel
This is so if the bot is kickbanned from a channel, it will remove all users to prevent ghosts on the channel.

* cbot.relay has kicked ChanServ/cbot from #test ((xdxdxd.xdxdxd/cbot) Clientbot was kicked from channel.)
2016-07-23 11:20:52 -07:00
James Lu
88e510b4cf clientbot: begin work on special hooks & move event relaying to a separate plugin 2016-07-23 01:16:26 -07:00
James Lu
eb24e01619 relay: allow slashes for clientbot 2016-07-20 23:55:34 -07:00
James Lu
47a0a7f8c6 Make plugins/ and protocols/ namespaces 2016-07-20 23:55:26 -07:00
James Lu
8169a2b751 automode: fix typo in loadDB() 2016-07-17 15:19:48 -07:00
James Lu
40197e5f57 automode: fix help syntax 2016-07-17 10:54:46 -07:00
James Lu
d7538bee1b automode: remove mentions to "setacc #channel mask -" 2016-07-17 10:50:18 -07:00
James Lu
94f2422a1e relay: show secret channels in LINKED to those in the channel
Closes #278.
2016-07-16 21:07:08 -07:00
James Lu
b7852b1d01 relay: hint at JUPE being a reason why server spawning might fail 2016-07-13 18:56:55 -07:00
James Lu
5c7524bcf3 relay: use the "official" method of removing bad networks 2016-07-13 18:49:51 -07:00
James Lu
31bf984996 Revert "relay: don't try to force network disconnects"
This reverts commit 77edd9870c.
2016-07-13 18:43:22 -07:00
James Lu
ad5cd51189 automode: fix wrong indent in modebot_uid check 2016-07-12 22:16:24 -07:00
James Lu
6598d56400 automode: fix join handler, make match() take multiple users instead of one 2016-07-12 21:58:08 -07:00
James Lu
76554dccd1 automode: refactor to send only one MODE per channel (#275) 2016-07-12 21:58:08 -07:00
James Lu
256801c0b4 automode: send one MODE per user (first part of #275)
If a user matches multiple DB entries, only one is sent now. However, this still needs to be changed so if multiple people are being checked for entries at once, one MODE command is sent for the entire channel.
2016-07-12 00:08:11 -07:00