Commit Graph

11096 Commits

Author SHA1 Message Date
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
930da6a6ba Use a real invalid email in supybot.authors.unknown 2019-10-19 10:20:38 -07:00
James Lu
e7f033539b Don't repeat nick in supybot.Author if nick and name are the same
This is the case e.g. for quantumlemur's plugins.
2019-10-19 10:20:38 -07:00
James Lu
7ac2828ab2 supybot-plugin-create: CVS is dead, stop mentioning it 2019-10-19 10:20:38 -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
Louis-Philippe Véronneau
00b2e9c97a Remove the /debian directory.
This is not really a native Debian package and this directory hasn't been touched in years.
The actual Debian packaging work is done on salsa.debian.org.
2019-10-18 22:03:33 +02:00
James Lu
b54d8f8073
regexp_wrapper: return None instead of False when search times out (#1379)
This allows plugins to detect whether a search timed out or did not match, which are two distinct outcomes.
2019-10-17 12:30:07 -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
8b2cbbc583 Use a monotonic time for registry cache.
So an old cache does not take precedence over a newly set value.
I noticed this bug because of the time going backward in tests
because of the time.time mock introduced in
dcf55cf6de, but this may happen
in production systems too.

Also adds another deprecation warning for python < 3.3.
2019-10-05 22:29:11 +02: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
3c42ce0861 Only clear users db if the filename is set. 2019-09-28 10:33:54 +02:00
Valentin Lorentz
bcbaa979d5 Revert "Deduplicate (de)serialization code shared by UsersDictionary and ChannelsDictionary."
This reverts commit a4f8e3f647.
2019-09-28 10:33:10 +02:00
Valentin Lorentz
5bfee2e72b Fix typo in doc. 2019-09-26 23:00:01 +02:00
Valentin Lorentz
a4f8e3f647 Deduplicate (de)serialization code shared by UsersDictionary and ChannelsDictionary. 2019-09-26 22:48:05 +02:00
Valentin Lorentz
7d218ec8ce Document unpreserve.Reader (expected format + method hooks). 2019-09-26 22:47:04 +02:00
Valentin Lorentz
84c1f1572d Don't temporarily set msg.channel to invalid values.
This causes issue when multiple command threads deal with the same message.
2019-09-20 21:25:32 +02:00
jesopo
6c5072cfe0 only raise in commands.process() when a raise was wrapped (#1370) 2019-09-18 20:27:02 +02:00
Valentin Lorentz
219ac6d154 Include plugins setup.py in installed files / release tarballs. 2019-09-15 08:03:12 +02:00
Valentin Lorentz
853935743a Include README.md in installed files / release tarballs. 2019-09-15 08:03:00 +02:00
Valentin Lorentz
40837dbda0 Don't mutate server list while iterating on it.
It causes hanging at bot/test stops.
2019-09-15 08:02:10 +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
67c2bacd69 Set msg.channel in ReplyIrcProxy and NestedCommandsIrcProxy.
Needed when plugins use a self.Proxy with a crafted message;
else the called commands will assume the message was sent in
private.
2019-09-08 21:35:35 +02:00
Valentin Lorentz
de9cea89cf ChannelLogger: Fix NameError on 'irc'. 2019-09-08 19:22:30 +02:00
Valentin Lorentz
f143e977d6 Interpret empty server tag values as missing tag values.
As required by https://ircv3.net/specs/extensions/message-tags
2019-09-08 14:47:05 +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
0b5bd625eb Add test for simple registry value inheritance. 2019-08-25 00:07:29 +02:00
Valentin Lorentz
e878279e6a py2.6 compat for cac3de71b1. 2019-08-25 00:07:11 +02:00
Valentin Lorentz
7e1a1a23a9 Fix fallback of Group.__getattr__ on protected attributes. 2019-08-25 00:06:35 +02:00
Valentin Lorentz
cac3de71b1 Add test for escaping registry key names. 2019-08-24 23:37:47 +02:00
Valentin Lorentz
e9bf05bbab Don't unregister subtree if only the child is unset.
Because now, grandchildren may have set values.
2019-08-24 23:37:23 +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
81968d9970 Merge branch 'network-config' into netconf-and-ircmsgs-channel 2019-08-24 15:39:10 +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