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
James Lu
00f26b0a73
SedRegex: only operate on messages from the current network
...
Reported by @jztech101.
The 'receivedBy' tag is now checked to match the current IRC object, which Works around ProgVal/Limnoria#1211 .
From: 84b94d589c
2020-01-01 21:55:58 -08:00
James Lu
fa13c68ebc
SedRegex: work around "nothing to repeat" errors on Python < 2.7.6
...
Source: https://stackoverflow.com/questions/3675144/regex-error-nothing-to-repeat and https://bugs.python.org/issue18647
From: 335fc6e3da
2020-01-01 21:55:58 -08:00
James Lu
1499141f09
Import SedRegex plugin as of 2a556a1b84
...
Co-authored-by: Michael Daniel Telatynski <postmaster@webdevguru.co.uk>
Co-authored-by: nyuszika7h <nyuszika7h@openmailbox.org>
2020-01-01 21:55:57 -08:00
Valentin Lorentz
12b6c9d60e
Config: Sort output of @list.
2019-12-24 02:43:31 +01:00
Valentin Lorentz
8491d0b944
Web: Lower log level when title could not be found.
2019-12-15 18:43:51 +01:00
Valentin Lorentz
dc2068deca
Web: Remove leading space if the prefix is empty.
2019-12-15 17:27:47 +01:00
Richard
143cd9d506
Services: Fix typo in doInvite() ( #1394 )
2019-12-13 11:01:48 -08:00
Valentin Lorentz
83114e5fbd
src/callbacks.py: use network-specific values.
...
Closes GH-1393
2019-12-05 21:51:25 +01:00
Mattia Rizzolo
981a3b245a
QuoteGrabs: fix SyntaxWarning ( #1391 )
...
SyntaxWarning: "is" with a literal. Did you mean "=="?
Signed-off-by: Mattia Rizzolo <mattia@mapreri.org>
2019-11-27 07:59:11 -08:00
Valentin Lorentz
1a1707420b
Web: Add early returns on exception when snarfing titles.
...
Closes GH-1390.
2019-11-22 18:17:53 +01:00
James Lu
9291fbd4a0
All plugins: set Limnoria contributors as maintainer
2019-11-16 11:41:13 -08:00
James Lu
1858eaf59e
Plugin: support showing __maintainer__ field in the 'author' command
2019-11-16 11:41:13 -08:00
James Lu
a4701b258c
Plugin: accept author name in 'contributors' command
2019-11-16 11:41:13 -08:00
Valentin Lorentz
bace9cb6c0
MoobotFactoids: Fix support of commands sent in private.
...
Regression from c1ae3f5c81
.
2019-11-15 21:24:31 +01:00
Valentin Lorentz
bc663b164c
Nicer error message in getChannel/makeChannelFilename when channel is None.
2019-11-15 21:14:46 +01:00
Valentin Lorentz
f85287771d
RSS: Register feed config in config.py instead of plugin.py.
...
So they are not dropped if plugin.py fails to load before
feedparser is not installed.
Closes GH-1387.
2019-11-11 19:42:34 +01:00
Valentin Lorentz
8001de6960
Scheduler: Use assertRegexp instead of assertNotRegexp in tests.
...
It avoids self negatives.
2019-11-11 18:06:59 +01:00
Valentin Lorentz
5718eafc07
Scheduler: Use default timeout for assertResponse.
...
Needed for slow/busy computers like Travis, apparently.
2019-11-11 15:29:20 +01:00
Valentin Lorentz
ad6671966c
Scheduler: Use mocking to make tests faster.
...
40s -> less than 10s.
Also some timeout tweaks that might fix GH-1385.
2019-11-11 15:06:06 +01:00
Valentin Lorentz
1a69a7b892
Math: Fix test on Pypy.
2019-11-11 12:38:27 +01:00
Valentin Lorentz
78a50c81bd
Math: Display a nicer error in case of MemoryError.
2019-11-11 12:12:10 +01:00
Valentin Lorentz
3848ae78de
Math: Rewrite calc functions with a proper evaluator.
...
Instead of hacking around eval(), which everyone knows is a bad idea
even with prior expression sanitizing.
2019-11-09 15:49:31 +01:00
Valentin Lorentz
813f688858
Config: Add : prefix to network-specific values listed by 'config list'.
2019-11-02 18:50:20 +01:00
Valentin Lorentz
322923c957
Config: make 'config list' exclude pseudo-children of network-specific variables.
2019-11-02 18:49:10 +01:00
Valentin Lorentz
9e58b2c936
Owner: Fix @upkeep reply on recent Pypy versions.
...
Because their gc.collect() function returns None.
2019-11-01 22:21:51 +01:00
Rodrigo Nascimento Hernandez
7466058c8f
Web: Catch more errors in getTitle.
2019-11-01 09:06:45 +01:00
Valentin Lorentz
3648751911
MoobotFactoids: Don't rely on unspecified order of sqlite3 results. Closes GH-1383.
2019-10-28 18:17:13 +01:00
Valentin Lorentz
cf954cf500
MoobotFactoids: Fix test to actually detect that sqlite3 is installed.
...
It works in the test suite because other plugins do the right import,
but we need to do it here as well if we want supybot-test to run on
this plugin alone.
2019-10-28 18:17:13 +01:00
James Lu
9eecedee93
Fill in author info for plugins missing it
2019-10-27 12:59:37 -07:00
James Lu
d3a2964705
Plugin: add missing substitution, check for supybot.authors.unknown explicitly
2019-10-19 12:02:14 -07:00
James Lu
35a64eca38
Plugin: update tests
...
I'm taking the liberty of adding myself to supybot.authors here.
2019-10-19 11:34:24 -07:00
James Lu
e3d89875ae
Plugin: update plugin description in __init__.py
...
Also remove some outdated comments.
2019-10-19 11:27:39 -07:00
James Lu
75a96ffa17
Plugin: show individual contributions in 'contributors [nick]' as a list
...
Remove special handling of one word contributions as commands, which was never clearly documented and is prone to false positives.
2019-10-19 11:17:35 -07:00
James Lu
672652d780
Plugin: refactor the first half of 'contributors [nick]'
2019-10-19 11:10:42 -07:00
James Lu
65e3e18fe2
Plugin: simplify the 'contributors' command
...
- Remove author sorting; it's not obvious that this is being done anyways.
- Format author and contributors as separate sentences; conjunctions are messy for code and very language-specific.
2019-10-19 10:47:33 -07:00
James Lu
18f9a342b3
Throw out mungeEmail for supybot.Author
...
This has limited value these days, because 1) the email info for authors is most often in a public VCS already 2) it makes using the actual contact info harder.
2019-10-19 10:20:35 -07:00
Johannes Löthberg
27e7d6a9ac
Aka: Add web UI ( #1373 )
...
* utils.web: Import html escaping functions
Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
* Aka: Add web interface for browsing Akas
Fixes #1226 .
Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
* httpserver: Actually handle KeyError in unhook
Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
* test: FakeHTTPConnection: Don't decode data in send
BaseHTTPRequestHandler expects to get bytes, so we can't decode the sent
data.
Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
* test: HTTPPluginTestCase: Use BytesIO instead of StringIO
BaseHTTPRequestHandler expects bytes, not strings.
Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
* test: HTTPPluginTestCase: Rewind wfile to 0 before reading the response
Otherwise the read pointer is at the end of the file.
Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
* Aka: Add basic web UI tests
Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
2019-10-10 17:27:34 +02:00
jesopo
68539da7ab
Format: use string.capwords() - not .title() ( #1378 )
...
* use string.capwords() - not .title(). closes #1366
* add test case for "@format title" that checks handling apostrophes
* `assertResponse` evidently needs the relevant subcommand
2019-10-10 07:46:36 -07:00
James Lu
3c23faf1bd
RSS: add 'announce channels' command to list channels a feed is announced to
...
Closes #1322 .
2019-10-06 20:46:21 +02:00
Johannes Löthberg
ba6878375b
plugins/Config: Reply with success on setdefault
...
Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
2019-10-06 17:43:58 +02:00
James Lu
beb1000c7e
Network: send whois requests using the original nick case
...
Fixes #1350 . This works around an edge case in charybdis / ircd-seven where remote
whois requests to a UID are not accepted if it is given in a different case.
2019-10-05 16:40:37 -07:00
Valentin Lorentz
702cfaaf97
RSS: Fix __repr__ formatter.
2019-10-05 15:57:28 +02:00
Valentin Lorentz
dcf55cf6de
RSS: Use an explicit timeout for assertNoResponse, because it defaults to 0.
...
Which means there may be a command/update thread running and returning after assertNoResponse returns.
In particular, that's an issue when assertNoResponse is called right before
setting feedparser._open_resource, because the running thread might still
be holding the lock but have fetched the new version already, so the
thread announces the new feed elements earlier than expected.
2019-10-05 15:57:01 +02:00
Valentin Lorentz
a4665803fa
News + RSS: Mock time.time() instead of using time.sleep() in tests.
...
Saves 40s over the ~5min test suite.
2019-10-05 12:22:30 +02:00
Valentin Lorentz
656222e341
ChannelLogger: Fix filename escaping.
2019-09-14 14:35:43 +02:00
Valentin Lorentz
af6052997c
ChannelLogger: Fix test broken by previous merge.
2019-09-14 12:15:57 +02:00
Valentin Lorentz
573921c00f
Merge branch 'netconf-and-ircmsgs-channel' into testing
2019-09-14 12:10:47 +02:00
Valentin Lorentz
de9cea89cf
ChannelLogger: Fix NameError on 'irc'.
2019-09-08 19:22:30 +02:00
Valentin Lorentz
88524beada
ChannelLogger + Karka + all DB plugins: Sanitize channel names when used in filenames.
2019-09-06 20:42:13 +02:00
Valentin Lorentz
b166f4ad5c
Network: Make the 'network' argument of @disconnect mandatory. Closes GH-161.
...
Otherwise, if it's provided and the network doesn't exist (or the bot isn't
currently connected to it), it's interpreted as being a quit message and
disconnects from the current network.
2019-08-31 17:43:16 +02:00
Valentin Lorentz
0413304d53
Nickometer: Use non-euclidian division as was originally intended.
...
I accidentally broke it in 88c2c130ca
,
thinking the operands were both integers.
2019-08-26 22:24:14 +02:00
Valentin Lorentz
b65d78518c
Services: Add support for network-specific password.
2019-08-25 14:08:11 +02:00
Valentin Lorentz
68de4f8ffd
Config: Prevent accidental leak of private values on public channels.
2019-08-25 10:26:47 +02:00
Valentin Lorentz
c07086d7dc
Config: Add command '@config network'.
2019-08-25 10:25:14 +02:00
Valentin Lorentz
2f4644f7b3
Config: Prevent accidental leak of private values on public channels.
2019-08-25 10:24:57 +02:00
Valentin Lorentz
633eea0730
Config: Fix test failure when another test set this value before.
2019-08-24 23:35:46 +02:00
Valentin Lorentz
c1ae3f5c81
all plugins: Use msg.channel instead of msg.args[0] + give network name to self.registryValue.
2019-08-24 23:35:01 +02:00
Valentin Lorentz
9326331c60
Merge branch 'ircmsg-channel' into netconf-and-ircmsgs-channel
2019-08-24 15:39:17 +02:00
Valentin Lorentz
8bb31a54e7
Strip statusmsg chars in core to determine the actual channel.
...
Use msg.channel if relevant, otherwise strip them locally.
2019-08-24 14:52:59 +02:00
Valentin Lorentz
4f024cb0b2
Add network-specific config values.
2019-08-15 12:22:43 +02:00
Valentin Lorentz
696254ff1b
Use irc.isChannel instead of ircutils.isChannel when possible.
...
It's aware of the network's 'chantypes'.
2019-08-04 21:52:40 +02:00
Valentin Lorentz
dba0ae3771
Google: update scraping regexp
2019-07-22 21:39:41 +02:00
Valentin Lorentz
540b827213
Google: Update for Google's new HTML layout.
...
Closes GH-1365
2019-05-28 19:37:52 +02:00
James Lu
f0e75679fe
PluginDownloader: update my repo name
2019-03-19 21:35:03 -07:00
Valentin Lorentz
6b213f0686
Later: Add option senderHostname.
2019-03-06 15:29:09 +01:00
Gordon Shumway
61f03ff0ed
Add oddluck's repo
2019-02-14 20:55:10 +01:00
Valentin Lorentz
0f82f89eec
Web: Fix encoding issue on Python 2. Closes GH-1359.
2019-02-01 21:02:57 +01:00
Valentin Lorentz
fcf30a5601
Fix FutureWarning related to nested sets.
...
See https://bugs.python.org/issue30349
2018-12-29 23:36:57 +01:00
Valentin Lorentz
2c7c83b07d
Success: Declare __slots__
...
Required since 1ac7812d7a
.
2018-12-19 09:38:07 +01:00
James Lu
c7716de887
RSS: add a quick test for a malformed feed that has no entries
...
(Only both of these combined gives new output so far.)
2018-10-14 12:42:15 -07:00
James Lu
2fdc433cb3
RSS: show soft errors set by feedparser when no entries are found
...
Hopefully this will ease debugging - e.g. a bad TLS certificate will now show
"Error: Couldn't get RSS feed. Parser error: <urlopen error
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:720)>"
instead of only a generic message.
2018-10-14 12:41:22 -07:00
James Lu
9ba21a1cad
Unix: fix a typo in sysuname & sysuptime's command descriptions
...
runnning -> running
2018-09-30 18:03:29 -07:00
Valentin Lorentz
be36591760
Fix test.
2018-09-11 07:33:16 +02:00
Valentin Lorentz
1f400e4020
Fix Python 3.7 support, and run Travis tests on 3.7.
...
Travis' "nightly" python is actually older than 3.7.0 (3.7.0a4+)
2018-09-10 00:57:04 +02:00
Laurent Kislaire
fb3c8978b5
Small fix on french translation ( #1344 )
2018-08-31 17:50:14 -07:00
James Lu
2242aadde9
Web: add trailing space for snarferPrefix at runtime
...
Before, the trailing space in the default snarferPrefix value disappears after a reload because spaces at the end of config lines are ignored.
2018-07-22 04:01:21 +00:00
Valentin Lorentz
00b8b6b51e
Later: Add support for hostmasks.
2018-07-05 19:48:43 +02:00
Valentin Lorentz
50c41f5862
Fix previous commit on python 2.
2018-06-27 11:10:14 +02:00
Valentin Lorentz
1840b94453
Later: load the db with utf8 encoding (the default for AtomicFile).
2018-06-27 00:54:58 +02:00
Valentin Lorentz
01e4427057
Config: Fix previous commit.
2018-05-29 22:46:56 +02:00
Valentin Lorentz
c2b6305c46
Config: Support arbitrarily many channels for '@config channel'.
2018-05-29 22:17:28 +02:00
Valentin Lorentz
2d084f4deb
Math: Convert the output of factorial() to a float.
2018-05-10 06:20:55 +02:00
Valentin Lorentz
cd479717b8
Web: Add supybot.plugins.snarfMultipleUrls. Also, fix Web's test cases.
2018-04-14 21:50:32 +02:00
Tasos Sahanidis
b900a369a4
RSS: Fix feeds with missing description or title
...
An AttributeError would be raised when a blacklist or a whitelist
would be set on feeds that miss either a title or a description.
2018-03-13 23:50:47 +01:00
Valentin Lorentz
e2180a1e08
Add variable supybot.plugins.Web.snarferPrefix.
2018-03-02 01:26:00 +01:00
Valentin Lorentz
9c1d46d151
Add channel-specific config variables that are only settable by the owner.
2018-02-06 14:20:37 +01:00
Valentin Lorentz
030ce5e6d4
Fix previous commit.
2018-02-01 22:37:24 +01:00
James Lu
55723c2161
Services: fix rejoin-on-kickban with atheme 7.x
...
- Adjust _chanRe to only match channels, as atheme also puts the target nick in bold
- Look for "unbanned <botnick>" messages in ChanServ notices (after stripping formatting)
This likely fixes GH-166. atheme has been using this format since at least 2005[1],
so it's possible that Supybot's rejoin-on-ban had never worked with it.
[1]: 4017c0da85 (diff-ba2bdc02ba7b29fd7e4931cafe63baa0R218)
2018-01-27 13:22:21 -08:00
James Lu
add3ceb4e7
Services: do not send the bot's nick in ChanServ commands
...
On Atheme, Anope, and oftc-ircservices, /cs unban, invite, op, and voice
implicitly assume the caller if no nick is given. However, certain combinations
such as /cs invite *with* a nick are not supported on atheme per
https://github.com/atheme/atheme/issues/568 , and cause rejoin-on-kick to +i
channels to fail.
This fixes one part of GH-1118.
2018-01-27 13:22:15 -08:00
James Lu
eb1cb9bd76
Services: don't mangle the case of NickServ notices in logging
...
This might be confusing if you're dealing with password changes, etc.
2018-01-27 12:33:36 -08:00
Valentin Lorentz
5daaa14825
NickAuth: Fix NameError caused by e732931688
.
2018-01-25 14:09:19 +01:00
Nicolas Coevoet
e732931688
Modified NickAuth to match the new WHOX
2018-01-23 19:37:19 +01:00
Valentin Lorentz
d656db454d
User: if '@hostmask add' detects a conflict and the caller is the owner, tell them who the conflicting user is.
2017-12-30 18:47:09 +01:00
Valentin Lorentz
bd39debb48
User: Simplify owner-checking logic, and fix crash when @hostmask remove is called by an unregistered user.
2017-12-30 17:12:35 +01:00
Valentin Lorentz
8cfb841f3b
BadWords: better tests.
2017-12-26 05:46:46 +01:00
James Lu
289c894dc5
Services: log all messages from NickServ to info
...
Closes GH-1016.
2017-12-10 11:03:30 -08:00
Valentin Lorentz
3ab226c129
RSS: Only defer feed loading at plugin load while the bot is starting.
...
Defering it if the plugin is (re)loaded while already running is useless.
Closes GH-922.
2017-12-10 09:39:20 +01:00
James Lu
bdd0adfef5
RSS: add missing configuration help for feed URL options
...
This fixes confusing "That configuration group exists, but seems to have no help." errors on the URL
options for feeds, when these options are actually relevant and settable.
2017-12-09 23:03:42 -08:00
James Lu
c78aff24e8
Hashes: fix copyright year format
...
[skip ci]
2017-11-09 09:08:41 -08:00
James Lu
fffe1efa9b
Hashes: remove duplicate check for hashlib.algorithms_available
...
This code is never wrap()'ed if the attribute is unavailable, so it isn't necessary to check for it in runtime twice.
2017-11-09 09:05:58 -08:00
James Lu
287610b776
Hashes: simplify test suites
...
- Use hasattr instead of assigning the import availability to a variable
- Use a simple if statement instead of redefining skipIf
2017-11-09 09:04:21 -08:00
James Lu
41830a46aa
String, Hashes: remove links describing hashing methods
...
These are either dead or don't accurately describe the state of these methods
today. For example, the SHA1 site still describes SHA-1 and MD5 as "trusted"
despite widely reported collision attacks already being possible[1][2][3].
[1]: https://www.computerworld.com/article/3173616/security/the-sha1-hash-function-is-now-completely-unsafe.html
[2]: https://arstechnica.com/information-technology/2017/02/at-deaths-door-for-years-widely-used-sha1-function-is-now-dead/
[3]: https://techcrunch.com/2017/02/23/security-researchers-announce-first-practical-sha-1-collision-attack/
2017-11-09 09:01:29 -08:00
Ken Spencer
b84ce3e43f
Add hashes plugin ( #1315 )
...
* add plugin Hashes, containing hash and encryption related commands
* Hashes: make the default plugin Hashes when the commands are used by themselves
* Hashes: add supybot.conf because of registerDefaultPlugin
* Hashes: import registry to help with registerDefaultPlugin
* Hashes: add in nicks for test
* actually use hashlib instead of crypt, also s/'String'/'Hashes'
* Hashes/test: add group in for testing
* Hashes: add in changes per @GLolol
* Hashes: remove xor
* Hashes: make plugins = ('Hashes',) instead of ('Hashes') because python is weird
* Hashes: fix sha512 calling sha256, use utils.str.format on 'algorithms'
* Hashes: just use the variable instead of substitution per @GLolol
* Hashes: follow through with not using substitution
* Hashes: disable the 'algorithms' and 'mkhash' commands if the underlying 'hashlib.algorithms_available' isn't available
* Hashes: don't use registerDefaultPlugin its for core plugins
* Hashes: also somehow I didn't change the copyright
* Hashes/test: fix copyright in file
2017-11-09 17:56:43 +01:00
James Lu
fd59612002
Time: tweak 'ddate missing' error message
...
Fix grammar and use a consistent URL format.
2017-10-29 16:24:45 -07:00
James Lu
9e7ca56067
Time: be less noisy about missing ddate module
...
This is a fairly niche command so it's not necessary to bother the user on every load.
Also, clarify which plugin this message originates from.
2017-10-29 16:24:45 -07:00
James Lu
f4cae9614f
ShrinkUrl: remove 'expand' as longurl.org has been dead for some time
...
Closes #1243 .
2017-10-28 00:14:05 -07:00
James Lu
e05f1ae5df
ShrinkUrl: fix tests for x0, broken by #1242
2017-10-27 23:48:52 -07:00
James Lu
ec2cf4af37
Owner: fix 'unload' writing duplicate entries to supybot.plugins
...
Fetch the existing plugin callback to determine the plugin's name in the right case.
Closes #1295 .
2017-10-27 23:35:44 -07:00
Ken Spencer
2ba7bc5c16
Time: add 'ddate' ( #1310 )
...
* Time: add 'ddate', fix contributors, add Time.local as a package_dir in setup.py
* Time: add in license information for ddate.py
* Time: change 'ddate' command to where it will error out gracefully if 'ddate.base' isn't available
* Time: add tests, remove Time.local from package_dir
2017-10-27 19:25:02 +02:00
Valentin Lorentz
bee98f6711
Conditional: Do not use noReply() after running the command.
...
As the command already calls reply() or noReply(), calling noReply()
there had disastrous effects:
* if reply() was called, noReply() erases the argument
* if noReply() was called, calling noReply() a second time erases **the next argument** (because the current argument was already erased).
This was 'caused' by the change of behavior of noReply() in 543edccd41
.
2017-10-26 09:55:52 +02:00
Ken Spencer
76c73a57b9
Use a prefix-less help string, don't assume a '@' prefix ( #1309 )
...
* Use a prefix-less help string, don't assume a '@' prefix
* Nickometer: follow through on plugin.py with ` -> '
2017-10-25 21:19:37 +02:00
Ken Spencer
71ed64e6b2
Config: Don't use a prefix in _setValue ( closes #1307 ) ( #1308 )
...
* Config: Don't use a prefix in _setValue
-- deviated from normal '' line enclosure to allow use of ' in lines without escaping
* fix up edits per @Mikaela
2017-10-25 12:21:50 +02:00
Valentin Lorentz
e08e899134
Fix test
2017-10-21 17:11:21 +02:00
Valentin Lorentz
e16faab805
RSS: On startup, only delay feeds loading for 10 seconds instead of the whole of supybot.plugins.RSS.waitPeriod.
2017-10-21 16:48:44 +02:00
Valentin Lorentz
543edccd41
Properly handle noReplies() in nested commands.
...
This fix prevents the bot from replying 'Error: I tried to send you an empty message'
when 'utilities ignore' is called from an Aka.
2017-10-21 15:37:43 +02:00
Valentin Lorentz
eaa5a5523e
RSS: Add var supybot.plugins.RSS.maximumAnnounceHeadlines.
2017-10-12 21:21:50 +02:00
Valentin Lorentz
0998651f61
Aka: Escape the command in help strings, so they can be copy-pasted into @aka add.
2017-10-01 10:40:23 +02:00
James Lu
5ee15c38bb
ChannelIdDatabasePlugin: limit --regexp to trusted users
...
Overcomplicated regexps can freeze the bot, an issue which is amplified as a database (e.g. for quotes) grows. Closes #855 .
2017-09-29 16:31:56 -07:00
James Lu
0e1e37a5a2
dictclient: remove overly complex dequote method
2017-09-29 16:20:13 -07:00
James Lu
989ac5ee97
Dict: make dictclient reloadable
2017-09-29 16:16:25 -07:00
James Lu
b6c75a70d3
Math: sync convertcore unit data with ConvertAll 0.7.2
...
Also add in a special case for handling the new unitless unit ("!!")
2017-09-29 16:02:36 -07:00
James Lu
b5f53fb22f
Math.convertcore: remove unused imports
2017-09-29 15:55:27 -07:00
James Lu
2460c0abca
Math.convertcore: remove unnecessary StringIO usage
...
Since the unit data is already a variable, we can read from it as is
2017-09-29 15:54:04 -07:00
James Lu
21a729d95a
Math.convertcore: remove useless try/except clause
2017-09-29 15:50:58 -07:00
James Lu
2ea93cdcfd
Math: reload convertcore along with the plugin
2017-09-29 15:50:49 -07:00
Valentin Lorentz
e5ef138378
Remove confusing comment (irrelevant since 69ead6c2677262a52f8e9fcd185110d383f2c63d)
2017-09-24 21:21:55 +02:00
Valentin Lorentz
4f6a5e7db9
Add config variable supybot.commands.allowShell. ( #1301 )
2017-09-24 21:11:21 +02:00
Ken Spencer
82cdf17964
Unix: make the default ping count configurable ( fixes #1187 )
...
Squashed commit of the following:
commit 2952c1f3e3d81a4d473bc7037f3fa9091219e483
Author: James Lu <james@overdrivenetworks.com>
Date: Sat Sep 23 12:42:05 2017 -0700
Unix: fix wrong conf var name
commit a3ea173ee0995e9d22472cc569d54d7e65648117
Merge: ca037a94
165d9f25
Author: James Lu <james@overdrivenetworks.com>
Date: Sat Sep 23 12:41:37 2017 -0700
Merge branch 'configurable-ping-count' of https://github.com/IotaSpencer/Limnoria into configurable-ping-count
commit 165d9f258f02c5adf0087b164e144038c06a46c4
Author: Ken Spencer <ken@electrocode.net>
Date: Sat Sep 23 15:39:02 2017 -0400
Unix: use str() on the integer-type defaultCount so we don't get a TypeError
commit f3b58710752f3b40db44ddc97369e15951563ea7
Author: Ken Spencer <ken@electrocode.net>
Date: Sat Sep 23 15:35:30 2017 -0400
Unix: use PositiveInteger so < 0 is inherently invalid
commit b4f9e4fdfffcc75c4803480702271647decf73a0
Author: Ken Spencer <ken@electrocode.net>
Date: Sat Sep 23 15:03:37 2017 -0400
Unix: make the default ping count configurable
2017-09-23 12:45:17 -07:00
Ken Spencer
ca037a94c5
Network: add all+server+channels and all+channels commands ( #1305 )
...
* Network: add all+server+channels and all+channels commands
* Network: fix up commands for PR as per @GLolol
* Network: fix syntax docs, style, use irc.state.channels, not its keys
* move acmd to Admin, remove cmdallchans, can be used by 'cmdall acmd ...'
2017-09-23 15:51:00 +02:00
James Lu
5e880fd73d
Karma: reword readme & mention the onlyNicks option
...
[skip ci]
2017-09-20 21:46:38 -07:00
Valentin Lorentz
a870d02a27
Merge pull request #1304 from tatokis/testing
...
Fix exception raised due to lack of Content-Type on the Web plugin.
2017-09-21 00:39:19 +02:00
Tasos Sahanidis
8dbf37a173
Web: Fix exception raised due to lack of Content-Type
2017-09-20 04:57:47 +03:00
Valentin Lorentz
4b37f91928
Merge pull request #1300 from GLolol/plugindownloader-multibranch
...
Support non-master branches in PluginDownloader
2017-09-17 10:10:04 +02:00
Valentin Lorentz
afb0cf042f
Merge pull request #1299 from GLolol/network-specific-history
...
Make irc.state.history network specific
2017-09-17 10:09:38 +02:00
James Lu
9fb72bed97
Add the Python 2 (legacy) branch of my repository
2017-08-24 19:13:17 -07:00
James Lu
32ab953dd1
PluginDownloader: support non-master branches
2017-08-24 18:58:09 -07:00
Valentin Lorentz
087fa71d63
Aka: Tell in the help message what channel the aka is for.
2017-08-20 19:55:28 +02:00
Valentin Lorentz
0d7714d490
Unix: disable ipv6 test if ipv6 is disabled (eg. Travis).
2017-08-18 23:03:06 +02:00
Valentin Lorentz
5272bf3a86
Aka: Fix combination of required and optional arguments.
...
Was broken by 7f43727835
(why?)
2017-08-18 18:30:22 +02:00
James Lu
03c4529d9e
Owner: make irc.state.history network specific
...
It is fairly counterintuitive for plugins to read the IrcState history, only to find that the message it got is from the wrong network.
I'm not sure why the original Supybot chose to link all the history buffers together, as those lines came from before Supybot was introduced to Git.
Closes #1211 .
2017-08-03 12:25:34 -07:00
Valentin Lorentz
417f38b8c1
MessageParser: Prevent empty matches from leaving unreplaced.
2017-07-21 20:05:18 +02:00
Marc Chevalier
b93b5a237e
ChannelLogger: Normalize channel name in getLogDir
2017-05-09 12:50:21 +02:00
nyuszika7h
bb448f412d
Math: Fix round() with single argument in 'calc' command
...
I broke this with my previous commit related to this.
2017-05-08 18:50:27 +02:00
Valentin Lorentz
7e756eec79
Admin: Add tests for joining-on-invite.
2017-05-04 21:53:56 +02:00
Valentin Lorentz
1615b3b55f
Unix: Don't assume tests are running from Limnoria's source root.
2017-05-04 21:53:23 +02:00
Marc Chevalier
afbefc5f2b
Karma: remove unused variable in karma command
2017-05-04 14:59:04 +02:00
Marc Chevalier
99b4a7289b
Aka: fix backquote matching in readme
2017-05-04 14:58:48 +02:00
Valentin Lorentz
7f43727835
Aka: Proper mitigation of expansion bomb.
2017-04-17 11:05:04 +02:00
Valentin Lorentz
3075a41a3b
Aka: Allow more than one in an aka. Closes GH-1283.
2017-04-17 10:53:26 +02:00
Valentin Lorentz
5452d4194a
Aka: Remove first elements of the 'args' list in a single pass.
2017-04-17 10:31:43 +02:00
Valentin Lorentz
d73de5e512
Fix potential bug due to mutability of lists as default argument.
2017-03-30 21:38:18 +00:00
nyuszika7h
7d299dc3d1
Math: Fix round() in calc command
...
The second argument of `round()` has to be an integer, and since every
number is converted to a float to avoid using too much memory, a wrapper
has to be added for this function. I've tested it with big numbers and
it doesn't seem to cause any issue.
2017-03-27 16:35:33 +02:00
James Lu
6cb747744a
User: force replies for 'hostmask list' in private instead of requiring the command to be called that way
2017-02-12 11:42:42 +01:00
Valentin Lorentz
3633a2b2e3
RSS: Only keep the most recent entries in the initial announce.
2017-01-27 21:00:58 +01:00
Valentin Lorentz
e52db064ca
Less ambiguous name for the content of @owner announce.
2017-01-22 12:50:00 +01:00
nyuszika7h
dab4737010
Allow specifying the format of Owner.announce
...
Someone asked how to remove the owner's username from announcements,
so it may be useful to make this configurable instead of making them
edit a core plugin's code which is not the best idea,
or write another plugin.
2017-01-22 12:34:54 +01:00