James Lu
c919c523dc
utils: add remove_range()
...
"""
Removes a range string of (one-indexed) items from the list.
Range strings are indices or ranges of them joined together with a ",":
e.g. "5", "2", "2-10", "1,3,5-8"
See test/test_utils.py for more complete examples.
"""
2018-06-09 17:03:40 -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
de62b2e77a
utils: add strip_irc_formatting()
2018-06-09 16:22:14 -07:00
James Lu
f9d21c2b10
UserMapping: fix wrong args to __copy__
2018-06-09 10:44:36 -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
31a0d36990
clientbot: ignore missing args in 324 / RPL_CHANNELMODEIS
...
Fixes #537 .
2018-06-08 18:45:20 -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
f4de604b7d
classes: split match_host() into match_host() and match_text()
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
10416013e8
example-conf: mention how kick, ban, etc. won't work for non-channel specific events
2018-06-08 17:54:03 -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
b0188dab92
get_friendly_name: strip STATUSMSG prefixes before checking is_channel
2018-06-08 17:26:25 -07:00
James Lu
7b744655ee
Merge branch 'devel' into wip/antispam-textfilters
2018-06-08 15:57:40 -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
6f3813d3a4
UserMapping: add in missing reference to the parent irc instance
2018-06-08 15:54:06 -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
e76c48f24c
Initial config skeleton for antispam text filters ( #359 )
2018-06-02 01:05:00 -07:00
James Lu
5b94a10c67
example-conf: rewrap antispam section, typo fix
...
[skip ci]
2018-06-02 00:57:26 -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
186b73c72d
example-conf: more wording tweaks
2018-06-02 00:15:26 -07:00
James Lu
df6562dcff
example-conf: add antispam to the available plugins list
2018-06-02 00:09:52 -07:00
James Lu
cb774ac3da
example-conf: document antispam::exempt_level
2018-06-02 00:07:20 -07:00
James Lu
e65d84960a
antispam: make punishments method-specific
2018-06-02 00:06:21 -07:00
James Lu
8cc4527ff7
example-conf: initial documentation for the antispam plugin
2018-06-01 23:50:50 -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
5ac283f018
ServiceBot: introduce clear_persistent_channels() to clear all persistent channels in a namespace
2018-05-30 12:43:51 -07:00
James Lu
1ab5d614c0
protocols: convert user TS to an int when receiving new users ( #594 )
2018-05-26 16:26:14 -07:00
James Lu
e3a935d0b7
classes: make User, Channel TS a property for type-safety ( #594 )
2018-05-26 02:30:25 -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
108d4b86d9
login: fix login for legacy accounts ( #590 )
2018-05-26 01:27:12 -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
b72420a8aa
Revert "NetworkCore: return the server in get_server if the arg was a server"
...
The complete implementation of is_privileged_service() in ec3a94c4ca
explicitly checks the entity ID type, so this strange hack is not needed.
This reverts commit 9113b34b46
.
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
9e936f1612
Rewrite login handling ( Closes #590 )
...
* Move identify command and login helpers into coremods.login
- corecommands._login -> login._irc_try_login
* Add login._get_account() function to consistently fetch login block info
* Rename functions in coremods.login to snake case:
- checkLogin -> check_login
- verifyHash -> verify_hash
* Replace explicit returns in login checks with raising utils.NotAuthorizedError()
2018-05-25 23:50:55 -07:00
James Lu
73261a31bd
opercmds: forbid killing the main PyLink client
2018-05-21 02:37:53 -07:00
James Lu
b9f782868c
inspircd: remove users from the state immediately when sending a kill
...
This matches Anope and Atheme's behaviours.
Closes #607 .
2018-05-21 00:33:13 -07:00
James Lu
a66a9b6336
core: demote KeyError logging in _remove_client to DEBUG
...
This is needed for #607 .
2018-05-21 00:28:16 -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