James Lu
c71e9a6410
Merge branch 'services-v3' into devel
...
- Revamp persistent channel registration to be plugin specific, effectively working around relay-services conflicts (closes #265 )
- New abstraction in ServiceBot: add/remove_persistent_channel() to manage persistent channels independently of explicit joins and parts
- Introduce ServiceBot.part(), which sends a part "request" that succeeds only if a channel is not marked persistent by any plugin
- Replace ServiceBot.join() calls with the new registration mechanism, which queues joins instead of dropping them if the service client is not yet ready (closes #596 )
2018-05-05 23:17:10 -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
c7da7f0025
ServiceBot: allow sending service parts with reasons
2018-05-05 13:19:43 -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
2532042506
services_support: raise endburst handler priority
...
Other plugins may implement endburst handlers assuming that their service bots have already been created.
2018-05-05 13:07:28 -07:00
James Lu
01c22aac21
Revert "service_support: consistently rejoin all channels on kick and kill"
...
This is no longer needed with plugin-specific persistent channels.
This reverts commit 3c9dac7e6b
.
2018-05-05 13:07:07 -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
b46ab844fe
classes: really fix KeyError crashes on duplicate QUIT
2018-04-30 11:11:14 -07:00
James Lu
8eba402a33
clientbot: drop pre-WHO join bursting with userhost-in-names, it's too unreliable
...
Closes #602 .
Closes #551 .
2018-04-24 12:39:29 -07:00
James Lu
e96081aa6e
PyLinkNetworkCore: make deletion from self.users non-fatal
2018-04-20 19:39:35 -07:00
James Lu
af744123e6
automode: join channels regardless of whether they're empty
2018-04-20 19:35:06 -07:00
James Lu
0ead868546
service_support: skip dynamic join/part hooks on bot-only servers
2018-04-20 19:35:06 -07:00
Ken Spencer
78d1d20856
adv-relay-config: fix colons so they match example-conf ( #598 )
...
First part of #597 .
2018-04-16 20:27:00 -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
4d9fbc55ba
Merge branch 'wip/dynamic-services' into devel
2018-04-13 22:08:28 -07:00
James Lu
3c9dac7e6b
service_support: consistently rejoin all channels on kick and kill
...
This is the cheap fix to part one of #265 : "When a services client is killed, it won't join any relay leaf channels"
2018-04-13 20:34:26 -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
25d24e9bb2
Use non-blocking sockets again, since Linux select() doesn't guarantee that recv() won't block
2018-04-12 10:58:09 -07:00
James Lu
bbc7a981ba
example-conf: tweak some more defaults for clarity
...
(cherry picked from commit 66ec3d9755
)
Conflicts:
example-conf.yml
2018-04-10 22:31:24 -07:00
James Lu
c82b12d9d6
example-conf: clarify nick/ident setting on clientbot
...
(cherry picked from commit 170d793939
)
2018-04-10 22:29:43 -07:00
James Lu
c7159b9cad
core: move clearing channels on kick/part to coremods/handlers
...
This is for consistency with the rest of the state cleanup code.
2018-04-07 22:44:00 -07:00
James Lu
16faac83eb
core: delete empty permanent channels when -P is set on them
2018-04-07 22:38:19 -07:00
James Lu
6bcf7d325f
PyLinkNetworkCore: add get_service_option()
...
Closes #574 .
2018-04-07 22:20:35 -07:00
James Lu
138a52611e
classes: oops, actually tell the queue thread to abort before we wait for it to stop
2018-04-07 22:12:17 -07:00
James Lu
80cbd7a257
classes: make disconnections more synchronized
...
- Make ping timer abort instantly if the network is dead
- Shut down the read and write parts of the socket separately, and only close the socket once both parts are done.
2018-04-07 21:56:10 -07:00
James Lu
84dbca4bda
classes: thread socket connects once more since they block
2018-04-07 21:56:06 -07:00
James Lu
655221491c
ServiceBot: log access denials to warning - closes #593
2018-04-07 20:22:55 -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
7586989763
classes: really quash duplicate disconnect calls as much as possible
2018-03-31 11:53:50 -07:00
James Lu
d6952f0361
handlers: fix names of state cleanup function
...
Where did "stats cleanup" even come from?!
2018-03-31 00:09:30 -07:00
James Lu
57d7a70933
launcher: mention that -c is explicitly kept as a no-op for PyLink <= 1.2.x
...
(cherry picked from commit c0a061eff3
)
Conflicts:
launcher.py
2018-03-30 23:52:19 -07:00
James Lu
7dec2d15db
launcher: daemonize and write PID file only after reading control options (-s/-R/-r)
...
(cherry picked from commit b9a66244f0
)
2018-03-30 23:24:41 -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
310ad345a3
SECURITY: normalize account names before checking network / oper filters
...
(cherry picked from commit a6c1beaad0
)
2018-03-30 11:59:29 -07:00
James Lu
22efe1384c
_login: tweak error message: opered up => opered
...
(cherry picked from commit 557f1578bc
)
Conflicts:
coremods/corecommands.py
2018-03-30 11:58:50 -07:00
James Lu
f274088ea0
classes: more checks on _aborted to (hopefully) prevent duplicate disconnects triggered by _send
2018-03-30 10:47:34 -07:00
James Lu
93d590fdea
UserMapping: check for lower_nick rather than isinstance(userobj, User)
...
This makes classes reload-safe again.
2018-03-30 10:46:49 -07:00
Jordy Zomer
be8e4be49d
Use yaml.safe_load instead of yaml.load to prevent executing arbitrary code ( #589 )
2018-03-29 14:10:33 -07:00