Valentin Lorentz
7444e656d8
supybot.reply.format.databaseRecord: Add $nick
2020-05-14 18:56:20 +02:00
Valentin Lorentz
4046a1b201
ChannelIdDatabasePlugin: Make the format of showRecord() configurable.
2020-05-14 18:45:04 +02:00
Valentin Lorentz
9e57913674
plugins/__init__.py: internationalize strings.
2020-05-14 18:42:22 +02:00
Valentin Lorentz
e90b89f5b2
Owner: Honor supybot.reply.error.detailed on command syntax errors.
2020-05-13 19:58:06 +02:00
Valentin Lorentz
a9eb31f1b5
Scheduler: Preserve network across restarts.
2020-05-12 18:32:37 +02:00
Valentin Lorentz
27edb4f6c9
Fediverse: Lower timeout of networkless tests.
...
There are many calls to assertSnarfNoResponse, so there's a lot
of time wasted sleeping, while these commands are fast enough
to answer in less than 0.1s
2020-05-10 21:42:41 +02:00
Valentin Lorentz
dc2fe4d5f3
Fediverse: Deduplicate username formatting and add some error handling.
2020-05-10 21:39:15 +02:00
Valentin Lorentz
2c9e6544f5
Fediverse: Add @status.
2020-05-10 21:12:05 +02:00
Valentin Lorentz
4e74c6dbb3
Fediverse: Make URL snarfer take precedence over Web.
2020-05-10 16:19:13 +02:00
Valentin Lorentz
6ea8b6bb31
Fediverse: Move test data to its own module.
2020-05-10 15:11:10 +02:00
Valentin Lorentz
d1854cfc9b
Fediverse: Add URL snarfer.
2020-05-10 14:52:55 +02:00
Valentin Lorentz
5908b86635
Fediverse: Add option format.statuses.showContentWithCW
2020-05-10 13:37:40 +02:00
Valentin Lorentz
a52e7fa91b
Fediverse: Show content warnings.
2020-05-10 13:04:01 +02:00
Valentin Lorentz
7511984a60
Fediverse: Fix compatibility with Python 3.4 and 3.5.
2020-05-10 11:21:08 +02:00
Valentin Lorentz
27219409b4
Fediverse: Document how to enable HTTP signatures.
2020-05-10 11:17:35 +02:00
Valentin Lorentz
ec1b1be8ff
Fediverse: Add proper tests.
2020-05-10 10:44:56 +02:00
Valentin Lorentz
759fca5eba
Switch names of TimeoutDict and ExpiringDict.
...
For consistency, as TimeoutQueue has guaranteed deletion after the timeout,
like the new TimeoutDict (ex-ExpiringDict).
2020-05-10 08:42:25 +02:00
Valentin Lorentz
d205a9b5f8
Fediverse: Use ExpiringDict instead of TimeoutDict for the cache, it guarantees expiry after the timeout.
2020-05-10 08:34:36 +02:00
Valentin Lorentz
cf2142ddd2
Fediverse: Sign headers Date and Host to prevent replays.
2020-05-09 22:18:03 +02:00
Valentin Lorentz
fd702a6a92
Fediverse: Add @statuses command.
2020-05-09 21:39:58 +02:00
Valentin Lorentz
4f027f2cbf
Config: Add @searchhelp, to search in the help string of config vars and groups.
2020-05-09 21:07:23 +02:00
Valentin Lorentz
ba0738c540
Fediverse: Generate instance key automatically.
2020-05-09 20:55:57 +02:00
Valentin Lorentz
d5e241cb0c
Fediverse: run Black.
2020-05-09 20:55:28 +02:00
Valentin Lorentz
e9ff57a1c9
Fediverse: Add usernameSnarfer.
2020-05-09 20:47:11 +02:00
Valentin Lorentz
76950126b5
Fediverse: Fix Python 3.4 compatibility.
2020-05-09 20:42:38 +02:00
Valentin Lorentz
79f13f3051
Fediverse: Add @featured command.
2020-05-09 20:29:24 +02:00
Valentin Lorentz
cb679d8599
Fediverse: Bug fixes.
2020-05-09 20:29:05 +02:00
Valentin Lorentz
d20bdbb5b7
Fediverse: Remove test @post command.
2020-05-09 19:29:00 +02:00
Valentin Lorentz
70fa18d155
Fediverse: Better error on unknown profile.
2020-05-09 19:28:37 +02:00
Valentin Lorentz
e87a14826e
Fediverse: First draft.
2020-05-09 19:27:34 +02:00
Valentin Lorentz
bd1d7c9fa1
Config: Add @searchvalues.
2020-05-08 22:02:05 +02:00
Valentin Lorentz
b07376d16f
Config: Exclude network pseudo-vars from @search.
2020-05-08 22:02:05 +02:00
Valentin Lorentz
428f5ca5dc
Misc: Show a basic help when @help is called without an argument and customHelpString isn't set.
2020-05-08 12:37:07 +02:00
Valentin Lorentz
d627ba7683
Scheduler: Make @list show period and time before next run.
2020-05-06 18:15:53 +02:00
Valentin Lorentz
482658529b
Scheduler: Add --delay option, to add an offset before the first run.
...
Closes GH-397.
2020-05-02 20:02:06 +02:00
Valentin Lorentz
ad05468257
Scheduler: Preserve period offset on restarts.
...
Partial fix for GH-397.
2020-05-02 18:28:41 +02:00
Valentin Lorentz
3ecc18e659
Scheduler: Add persistence tests.
2020-05-02 17:37:46 +02:00
Valentin Lorentz
ecc2c32950
Add support for storing STS policies.
...
If on an insecure connection: reconnect.
If on a secure connect: store it and do nothing else.
For now, stored STS policies are not read when connecting to an
insecure server.
2020-05-01 19:46:19 +02:00
Valentin Lorentz
3eb20adaf2
Fix extra arguments to irc.reply() being ignored by messages returned by '@more'.
...
This change builds all the ircmsg objects directly in irc.reply, with
the original arguments.
A side effect is that if a config var is changed between the initial command
call and the call to '@more', this commit makes it use the old values,
but that shouldn't be too much of an issue.
Closes GH-1405.
2020-04-11 16:40:07 +02:00
Valentin Lorentz
5e91a68ab0
Misc: Fix drop of the last (nb_mores % plugins.Misc.mores) messages.
...
If the last batch had less than plugins.Misc.mores messages;
getting the last messages of the batch would raise an IndexError,
causing the whole batch to be dropped.
2020-04-11 16:36:14 +02:00
Valentin Lorentz
f19079c75e
Misc: rewrite @more tests to fully check the output.
...
This uncovered a few bugs; next commits will fix them.
2020-04-11 16:09:24 +02:00
Valentin Lorentz
37a7029618
SedRegex: when looking up config vars, strip statusmsg prefix from channel, and use network name for lookup.
2020-04-11 15:04:11 +02:00
Valentin Lorentz
0b0da9716d
callbacks: honor network-specificity of supybot.reply.whenAddressedBy.
...
A side-effect is that plugins should now pass 'irc' instead of 'irc.nick'
when they call 'callbacks.addressed()'.
2020-04-11 15:00:46 +02:00
Valentin Lorentz
2953126fca
test: Make assertNoResponse default to a non-zero timeout for threaded plugins.
...
Else it doesn't reliably check there is no response.
2020-04-11 00:17:16 +02:00
Valentin Lorentz
7e48ba0ba8
SedRegex: Use assertSnarfNoResponse instead of assertNoResponse.
...
assertNoResponse was only passing by accident on faster machines.
2020-04-11 00:16:01 +02:00
Valentin Lorentz
2bbd43fd85
ChannelStats: Skip checks of nick in irc.state.channels[channel] when channel databases are linked.
...
It crashes with KeyError because databases.plugins.channelspecific sets
channel='#', which is a non-existent channel.
And it doesn't make sense to check for presence in channel if the DB is
shared between all channels anyway.
2020-04-07 21:20:01 +02:00
James Lu
c212ee0e5e
SedRegex: allow matching text with the trailing suffix missing
...
From: 866875ec5d
2020-04-02 10:00:40 -07:00
James Lu
c399272173
SedRegex: make callback matching case sensitive
...
This fixes a TypeError issue mentioned in d296bbb949
.
2020-04-02 10:00:39 -07:00
James Lu
13c03716c5
Revert "SedRegex: Make pattern case-insensitive."
...
This reverts commit d296bbb949
.
2020-04-02 09:47:32 -07:00
Valentin Lorentz
d296bbb949
SedRegex: Make pattern case-insensitive.
...
To fixes a mismatch between callbacks, which use flags=re.I by default,
and SED_REGEX.search which isn't; so 'S/foo/bar/' errored because it
matches case-insensitively so _unpack_sed is entered, but then _unpack_sed
fails to match it case-sensitively.
2020-04-02 17:30:57 +02:00
Valentin Lorentz
e2d72c5a43
Fix msgfmt warnings.
2020-03-26 22:10:28 +01:00
Valentin Lorentz
246925acce
Relay: Add missing 'network' argument.
...
Broken since c1ae3f5c81
.
2020-03-25 20:56:24 +01:00
James Lu
487897e7cc
PluginDownloader: remove legacy name & python 2 branch of my repo
2020-03-20 16:37:15 -07:00
Valentin Lorentz
2f49362510
RSS: If ids are missing, use <link> as id.
2020-01-31 20:59:42 +01:00
Valentin Lorentz
653afdd086
RSS: Show a meaningful error in case '@rss' is called with a non-URL/name.
...
Instead of letting feedparser try to parse the name.
2020-01-28 19:35:05 +01:00
James Lu
d3b991895c
SedRegex: skip testReDoSTimeout if multiprocessing is disabled
2020-01-27 08:00:46 -08:00
Valentin Lorentz
a6ae9f51a3
ChannelStats: Use the safe math evaluator.
2020-01-26 20:42:55 +01:00
Valentin Lorentz
99dd6f1506
core/Math: Move the math evaluator to src/utils/.
...
It will be used by ChannelStats.
2020-01-26 20:42:55 +01:00
Valentin Lorentz
5c10bea7aa
Math: Fix log/log10 return type.
...
They used to always return complex numbers, instead of floats on float argument.
2020-01-26 20:42:55 +01:00
James Lu
4528a847e4
Aka, Google, String: fix more DeprecationWarning in tests ( #1328 )
2020-01-26 11:31:28 -08:00
James Lu
358c3a741f
Channel: fix typo from 772862d49c
2020-01-26 11:22:51 -08:00
James Lu
304125cfd0
AutoMode, Channel, Nickometer: fix invalid escape sequence DeprecationWarning
2020-01-26 11:20:39 -08:00
James Lu
772862d49c
plugins: use r'' strings to fix DeprecationWarning in test cases ( #1328 )
2020-01-26 11:14:25 -08:00
James Lu
ff899f5158
Aka, Debug: cleanup imports
2020-01-26 10:42:43 -08:00
Valentin Lorentz
9ab908759a
Use importlib instead of imp.
...
importlib is deprecated.
2020-01-26 12:00:08 +01:00
Valentin Lorentz
9891b0fca4
Replace failUnless/failIf with assertTrue/assertFalse.
...
The old names are deprecated.
2020-01-26 11:14:18 +01:00
Valentin Lorentz
e7553dcca4
Add subcommand dispatching for CAP/FAIL/WARN/NOTE.
2020-01-23 14:25:10 +01:00
Valentin Lorentz
c457b52067
Deduplicate setting Accept-Language HTTP header.
...
This adds a new function conf.defaultHttpHeaders that can be used by plugins
to get all the default HTTP headers for a given network/channel.
2020-01-14 19:03:12 +01:00
Tasos Sahanidis
ae5ad2ceab
Web: Implement protocols.http.requestLanguage
2020-01-14 18:48:11 +01:00
Tasos Sahanidis
7bd68df8aa
Fix getSpecific usage
...
The channel and network arguments were incorrectly swapped
2020-01-12 10:35:35 +01:00
Valentin Lorentz
0fccea30ce
Import MutableMapping and MutableSet from collections.abc.
...
Aliases in collections itself are removed in 3.8.
2020-01-09 01:11:12 +01:00
James Lu
d080edce00
Readd Limnoria name to default part & quit messages
...
This was removed in c930edd943
2020-01-04 11:17:57 -08:00
James Lu
51f10dbb60
SedRegex: update plugin metadata
2020-01-01 21:56:40 -08:00
James Lu
35dd3c3d9c
Update plugin author/maintainer data
...
From: cbd953b32c
2020-01-01 21:55:58 -08:00
Valentin Lorentz
08764b85ef
SedRegex: spawn a single process to handle the whole history.
...
This is more efficient than spawning up to 1000 processes (assuming
Limnoria's default config).
From: ede85ca8b0
2020-01-01 21:55:58 -08:00
James Lu
9e0db63b5b
SedRegex: add test for ReDoS timeout
...
From: 81debc45ec
2020-01-01 21:55:58 -08:00
James Lu
1267d6452e
SedRegex: abort when a search times out
...
This requires commit b54d8f8073
, which separates the timeout and no match cases.
Also, raise the default processTimeout as the plugin now aborts on the first message that times out.
From: e5af479939
2020-01-01 21:55:58 -08:00
James Lu
43d4861577
Update my email & repo link references
...
From: 2ae51939b3
2020-01-01 21:55:58 -08:00
James Lu
6c54352713
SedRegex: test case normalization of channel names
...
From: 5672008a31
2020-01-01 21:55:58 -08:00
James Lu
937930ab6a
SedRegex: match channel names case insensitively
...
Some IRCds (Unreal 3.2) don't mangle target names for case correctness, leading to a bug where users end up ignored by the plugin.
Reported by DOMF via IRC.
From: e19abe0498
2020-01-01 21:55:58 -08:00
James Lu
67a3928e4d
SedRegex: log all errors, always display the not found mesage
...
From: fdab0edbc8
2020-01-01 21:55:58 -08:00
James Lu
06f70e59da
SedRegex: reuse processTimeout in the sub() process too
...
From: 4e08442cde
2020-01-01 21:55:58 -08:00
James Lu
363285cfbf
README: specifically mention that /s is specific to this plugin
...
[skip ci]
From: 5e6c9349fa
2020-01-01 21:55:58 -08:00
James Lu
e831d0e8ec
SedRegex: make the regexp process timeout configurable
...
Although the default has been adequate on my systems, busy or low-powered machines may fail to process regexps quickly enough and cause SedRegex to sporadically error.
Reported by @cottongin via IRC.
From: 51ff41251b
2020-01-01 21:55:58 -08:00
James Lu
fd7aa571e9
SedRegex: remove compatibility workaround for Python 2.7.6 and lower
...
From: c9bcbbb934
2020-01-01 21:55:58 -08:00
James Lu
1646ca25c2
SedRegex: skip testBoldReplacement on Python 2
...
I don't know why it breaks here and I don't really care.
From: b9481184cb
2020-01-01 21:55:58 -08:00
James Lu
dcadb7e73b
SedRegex: remove a duplicate test
...
From: 5e77c65a5f
2020-01-01 21:55:58 -08:00
James Lu
01e0c12641
SedRegex: use self.__class__ instead of __class__ in tests (Python 2 compat)
...
From: b53e6e40a0
2020-01-01 21:55:58 -08:00
James Lu
b01c50cd4d
SedRegex: add a bunch of test cases
...
Closes #53 .
From: a58785fa4a
2020-01-01 21:55:58 -08:00
James Lu
f40d8c530f
SedRegex: bump copyright year to 2017
...
From: 0ef8138ab3
2020-01-01 21:55:58 -08:00
James Lu
90ec8a6976
SedRegex: fix some replacement queries not working
...
From: 926454b01d
2020-01-01 21:55:58 -08:00
James Lu
6445e90ec7
SedRegex: also catch errors in the regexp_wrapper() step
...
E.g. sre_constants.error: invalid group reference
From: e137d29eb9
2020-01-01 21:55:58 -08:00
James Lu
5370296bbf
SedRegex: log the exact error name instead of "SedRegex error"
...
From: 406d7b1790
2020-01-01 21:55:58 -08:00
James Lu
dee2b6bdb3
SedRegex: require ending delimiter to prevent overzealous matching of replacement text
...
Closes #59 .
From: 414a4a4a16
2020-01-01 21:55:58 -08:00
James Lu
656d2172db
SedRegex: work around "nothing to replace" errors on < Python 2.7.6 again
...
From: 244a8c6bee
2020-01-01 21:55:58 -08:00
James Lu
889c6a1615
SedRegex: fix flag matching
...
From: db125ee5d1
2020-01-01 21:55:58 -08:00
James Lu
c1c423cc0d
SedRegex: add configuration / usage instructions
...
From: 9d0dce6ef5
2020-01-01 21:55:58 -08:00
James Lu
24ae250ac4
SedRegex: implement 's' regex flag to only match the caller's message
...
From: 87c79db3d0
2020-01-01 21:55:58 -08:00
James Lu
bd0b1158fc
SedRegex: allow free form flags and return them in _unpack_sed()
...
From: 423da9f996
2020-01-01 21:55:58 -08:00
James Lu
c1e2e2b8a6
SedRegex: sanitize against \n\r\t in output
...
From: 48445e256a
2020-01-01 21:55:58 -08:00