Commit Graph

5913 Commits

Author SHA1 Message Date
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
Valentin Lorentz 90c5c78813 Add option --no-setuid to supybot-test
https://bugs.debian.org/834950
2017-01-10 22:56:17 +01:00
James Lu 010da43b29 Channel: use msg.prefix instead of nickToHostmask for capability checks
Closes #1233.
2016-12-18 15:36:47 -08:00
Valentin Lorentz cbb9f8c699 Merge pull request #1277 from GLolol/patch-1
Google: update link to supported languages list
2016-12-18 23:55:47 +01:00
James Lu 73be2bf3d8 Google: update link to supported languages list
Google has since reformatted their docs and moved the language support info to a separate page.
2016-12-18 14:53:01 -08:00
James Lu b934870702 Debug: import supybot for easier access to the module 2016-12-18 23:37:55 +01:00
Johannes Löthberg 07f98d3619 Add timeout to `web title` command
Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
2016-12-08 10:11:15 +01:00
Valentin Lorentz 9fe4abec48 Web: Use a timeout to fetch pages. Closes GH-1275.
This is required because the sandbox is not used anymore,
since 9c57199838.
2016-12-08 00:48:11 +01:00
Valentin Lorentz b9b36d4de5 Improve decorator. 2016-12-08 00:37:12 +01:00
Valentin Lorentz 4acb692f17 Web: Use new-style command wrap (as a decorator). 2016-12-08 00:36:30 +01:00
Valentin Lorentz bbaf3cd47e User: Fix previous commit by @IotaSpencer. 2016-11-28 10:31:37 +01:00
Ken Spencer 0c4f9d74eb User: allow for custom whoami error 2016-11-28 10:28:48 +01:00
Fudster 0be4e2c953 Add Fudster's repo (#1274)
* Add Fudster's repo

* fixed missing owner var

* Fix padding

* Fix padding.....

* Remove tabs
2016-11-28 10:24:56 +01:00
Valentin Lorentz ecf70a4de4 GPG: Limit number of headers fetched on old Python versions. 2016-11-22 22:15:43 +01:00
Valentin Lorentz 9c57199838 Web: Disable the fetch sandbox on Python versions with the _MAXHEADERS fix.
Partial fix to GH-1271.
2016-11-11 12:13:02 +01:00
Ken Spencer f29ede567b Update Iota's link 2016-11-09 12:23:31 -05:00
Valentin Lorentz 14180a24ec Fix error when printing the 'NoSuitableDatabase' error. 2016-11-05 08:51:29 +01:00
Valentin Lorentz f6419525ee Merge pull request #1269 from kyrias/fix-disable
disable: Actually disable command by plugin if specified
2016-11-03 18:53:19 +01:00
Johannes Löthberg 7c757cd52e disable: Actually disable command by plugin if specified
Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
2016-11-03 14:28:41 +01:00
Valentin Lorentz 95d4d40b22 Remove debug prints. 2016-11-01 21:30:39 +01:00
Valentin Lorentz 96c1ccc722 NickAuth: Fix error message. 2016-10-31 19:06:35 +01:00
Valentin Lorentz 167e66ed11 NickAuth: Use only the account name, not the current nick. 2016-10-31 17:02:14 +01:00
Valentin Lorentz 1fdbc24714 NickAuth: Improve error message. 2016-10-31 16:28:08 +01:00
Valentin Lorentz f5db2338c5 Reply: Restore supybot.reply.oneToOne in tests because it breaks Factoids. 2016-10-02 13:55:26 +02:00
Valentin Lorentz c6e29031d1 Make replies() behave consistently with reply() regarding the 'to' parameter.
Side-effect: Fixes channel-specificity of supybot.reply.onetoone for the Reply.replies command.
Closes GH-1266.
2016-10-01 13:37:03 +02:00
James Lu cd853f3e31 Factoids: add missing Raise in requireVoice checks
Reported by braimee on IRC.
2016-09-25 17:11:14 -07:00
Valentin Lorentz d7099794bc Fix Python 2 support of last commit. 2016-09-20 23:22:13 +02:00
Valentin Lorentz 2cfe0f679f Fix previous commit on some Python versions. 2016-09-20 23:09:29 +02:00
Valentin Lorentz d39647142c RSS: Fix shadowing of any/all. 2016-09-20 22:54:11 +02:00
Valentin Lorentz b3bed0d6f9 User: Fix error handling when hostmasks overlap. 2016-09-14 19:10:26 +02:00
Valentin Lorentz 4f280599e1 RSS: use the original FeedParserDict for substitution
instead of building a new keyword arguments dict by iteration.

'description' is a field in FeedParserDict, but is not present when iterating,
which made it unavailable as a substitution variable.
2016-09-08 21:42:31 +02:00
Valentin Lorentz 2d30b40a80 NickAuth: Fix indentation. 2016-08-21 23:47:45 +02:00
Valentin Lorentz 1e7c3007e0 Later: Strip duplicate nicks given to @tell to avoid spam.
Suggested by @cottongin but implemented differently.
Closes GH-1261.
2016-08-19 19:20:17 +02:00
jacksonmj 0f14c1c654 Filter: add more filters - vowelrot, caps, capwords 2016-08-16 11:16:51 +02:00
Valentin Lorentz 3776404628 RSS: Use HTTP(S) proxy. Closes GH-1234. 2016-08-16 10:56:29 +02:00
Valentin Lorentz fa755c3a9c Google: Decode URLs. Closes GH-1260. 2016-08-10 22:52:00 +02:00
Valentin Lorentz b4182753be Internet: Add support for TLDs and IP addresses in @whois. Closes GH-1253. 2016-08-09 21:08:18 +02:00
James Lu 66736b22d5 Web: optionally hide the domain in titleSnarfer
This adds a snarferShowDomain option to optionally hide the domain ("(at site.abc)" text) in titleSnarfer output. Closes #1236.
2016-08-09 11:22:00 -07:00
Valentin Lorentz de8d4fbe52 PluginDownloader: Fix decoding issue (caught in stepnem/Freenode). 2016-08-01 16:09:11 +02:00
Valentin Lorentz 9c76750ff9 PluginDownloader: Add test case.
Someone reported it to crash, but it does no. Hmm…
2016-08-01 16:08:31 +02:00
Valentin Lorentz 035c38a4f1 ChannelStats: Forbid large numbers for factorial(). 2016-07-30 20:25:52 +02:00
Valentin Lorentz 66782d47d8 GPG: Improve error messages. 2016-07-29 10:26:59 +02:00
Valentin Lorentz 0d820477c2 GPG: Improve error messages. 2016-07-29 01:28:12 +02:00
James Lu 30ba4bbe22 Google: mention the format of language codes
This might reduce confusion when people do things like "!google translate english to french hello", which produces no result.
2016-07-15 11:48:26 -07:00
Kevin Fenzi 932f49648b change abuse command flood to except trusted users instead of just owners 2016-07-06 16:50:14 -06:00
Valentin Lorentz 7b658e714b Factoids: Fix Python 3 support. 2016-06-04 18:57:31 +02:00
Valentin Lorentz 59df2ff038 Factoids: Fix names of utils.web.url(un)quote. 2016-06-04 18:53:55 +02:00
James Lu 88a8bbb4d8 Google: remove unused & duplicated imports
"import json" was being done twice. cgi, time, and socket all appear to be unused.
2016-05-11 18:24:36 -07:00
James Lu 7f13b939f7 ShrinkUrl: Update API URL, now serving HTTPS links
Source: https://x0.no/api/
For reference, http://api.x0.no/ now redirects to https://x0.no/api/
2016-05-07 21:02:38 -07:00
James Lu 218ba764cc Google: self-promot-- add DDG plugin with py2/py3 support 2016-05-06 07:14:25 -07:00
Valentin Lorentz b6695172c8 Google: Add warning about deprecation. 2016-05-06 09:02:54 +02:00
Valentin Lorentz de290d12f3 Google: Fix @lucky. 2016-05-05 09:01:51 +02:00
Valentin Lorentz 8321d8a547 Google: Fix URL formatting.
For some reason, it worked on Python 3…
2016-05-05 08:31:04 +02:00
Valentin Lorentz 6f1045ed20 Google: Fixes. 2016-05-05 08:03:10 +02:00
Valentin Lorentz f8aaddd5b5 Google: Fix google URL. 2016-05-04 19:29:53 +02:00
Valentin Lorentz b5268d63a3 Google: AJAX API was closed today, using HTML scraping instead. 2016-05-04 19:05:31 +02:00
Valentin Lorentz c9e5486806 Ctcp: Don't strip CTCP character in output. (bug added in previous commit) 2016-04-24 21:26:25 +02:00
Valentin Lorentz 6ec0af2da3 Strip CTCP characters from irc.reply by default. 2016-04-24 21:11:34 +02:00
Valentin Lorentz 52517c8ca6 Open CSV files in binary mode on Python 2. Closes GH-1230. 2016-04-13 17:56:03 +02:00
Valentin Lorentz 2d1816e8f4 Ctcp: s/Supybot/Limnoria/ in version reply. 2016-04-10 19:31:59 +02:00
Valentin Lorentz 443999df25 Misc: s/Supybot/Limnoria/ in @version. 2016-04-02 18:57:10 +02:00
James Lu 3879f30d47 User: allow owners to change their own password
I don't understand why this restriction exists. If someone gains access to someone else's owner account, they can do a lot worse damage than just changing the owner password.
People logging in via NickAuth or hostmasks should be able to change their passwords at will, even if the owner doesn't know his previous password.
2016-03-21 20:57:13 +01:00
James Lu d4a71497c4 Misc.last: add a timeout in --regexp search to prevent various ReDoS attacks 2016-03-21 20:57:04 +01:00
Valentin Lorentz 51c354bcfb Conditional: disable threading. 2016-03-16 16:49:07 +01:00
James Lu 9ace3004aa Network: fix getopts key for --nossl 2016-03-11 20:05:41 -08:00
Valentin Lorentz 5db3faca7a Unix: Add support for -4 and -6 in @ping. Closes GH-1224. 2016-03-11 21:12:04 +01:00
Valentin Lorentz 6936e3d634 Aka: make @list --keys reply on a single line, even if supybot.reply.oneToOne is False. Closes GH-1225. 2016-03-11 21:00:01 +01:00
Valentin Lorentz fc3c9eec7c Time: Explicitely handle the 'now' case.
dateutil never handled it, and just returned the current day.
https://github.com/dateutil/dateutil/issues/212
2016-03-08 22:40:41 +01:00
Valentin Lorentz 25a913a82b Unix: Make fortune.equal and fortune.file channel-specific. 2016-03-01 19:21:17 +01:00
Valentin Lorentz 0b66abaf5b Channel: Fix 'ignore remove' converter to work like 'ignore add'. 2016-02-23 19:12:22 +00:00
Valentin Lorentz c3dd5f8b64 Make SSL the default for connecting to a new network. 2016-02-21 13:04:26 +01:00
Valentin Lorentz b33dadea9e Make INFO a bit less verbose when connecting. 2016-02-21 11:01:31 +01:00
Valentin Lorentz de3265ed58 Merge pull request #1208 from damascene/testing
Add some explanation about Google plugin functions
2016-02-09 19:11:29 +01:00
Usama Akkad 1335962fd3 changed the link to markdown format 2016-02-09 20:09:35 +02:00
Usama Akkad 914dc4c4ec small fix 2016-02-07 12:52:27 +02:00
Usama Akkad 1ecf9c2206 applied @GLolol suggestions 2016-02-07 12:50:35 +02:00
Valentin Lorentz 61e5a29351 Fix scheme-matching regexp.
Old behavior allowed underscores and schemes starting with a digit,
and did not allow -+.
New behavior: https://tools.ietf.org/html/rfc3986\#section-3.1

Side effect: closes GH-1146
2016-02-07 09:44:08 +01:00
Valentin Lorentz e9b122c973 Later: Do not use ValueError for reporting full queues.
Someone on IRC reported a ValueError being raised from an other part of the code.
2016-01-31 12:11:04 +01:00
Valentin Lorentz ce0b788f2f Merge remote-tracking branch 'freeboson/patch-2' into testing 2016-01-27 14:27:32 +01:00
Sujeet Akula 26840f7a2e add desc for wizard — plugindownloader 2016-01-27 08:23:47 -05:00
Valentin Lorentz 6b3766dcd1 Remove trailing spaces. 2016-01-27 14:04:58 +01:00
Valentin Lorentz 638897671e Merge remote-tracking branch 'freeboson/patch-1' into testing 2016-01-27 14:04:14 +01:00
Sujeet Akula c44d2007c4 add desc for wizard 2016-01-27 08:03:05 -05:00
Usama Akkad 44a4d31b05 Add some explanation about Google plugin functions 2016-01-27 01:08:38 +02:00
Usama Akkad 8c191a8ce2 Add some explantation about Google plugin functions 2016-01-27 00:05:06 +02:00
Valentin Lorentz a4a0082c17 Later: use .tag() to set tags, as there is no IrcMsg.__setattr__. 2016-01-22 20:13:22 +00:00
Valentin Lorentz 4576874128 httpserver: Respond to HEAD requests. Closes GH-1203. 2016-01-05 18:25:35 +01:00
Valentin Lorentz 1010ea244b Filter: Extend outfilter to cover NOTICEs. Closes GH-1164. 2016-01-02 13:32:03 +01:00
Valentin Lorentz 715f9cd52d Merge pull request #1201 from GLolol/web/strip-newlines
Web: normalize whitespace in titles
2015-12-30 10:00:42 +01:00
James Lu e2dedcc5a4 Web: normalize whitespace in titles
Sample link: http://googleblog.blogspot.com/2015/08/android-wear-now-works-with-iphones.html
Before: <bot> 'Title: \nOfficial Google Blog: Android Wear now works with iPhones\n (at googleblog.blogspot.com)'
After: <bot> Title: Official Google Blog: Android Wear now works with iPhones (at googleblog.blogspot.com)
2015-12-29 17:12:26 -08:00
Valentin Lorentz f26716f2b8 Utilities: Add @let. 2015-12-29 18:00:05 +01:00
Valentin Lorentz f7943a6697 Plugin: make @plugins take non-first words into account. Closes GH-68. 2015-12-28 20:09:48 +01:00
Valentin Lorentz 8e427838cd Plugin: internationalize a string. 2015-12-28 20:04:31 +01:00
Valentin Lorentz f4d36cd087 Admin: internationalize a string. 2015-12-28 20:01:40 +01:00
Valentin Lorentz 857027a26f Fix tests for Python 2. 2015-12-27 12:43:35 +01:00
Valentin Lorentz b42437c711 Unix: Channel-specific list of files for @fortune.
Also forbid file names starting with a dash, because
arguments to the fortune argument could be used for
DoSing.
2015-12-27 12:32:09 +01:00
Valentin Lorentz 49ff291f61 Use utf-8 to encode files by default.
Should fix this bug in Seen:
Traceback (most recent call last):
  File "C:\Program Files\Python34\lib\site-packages\supybot\world.py", line 121, in flush
    f()
  File "C:\Program Files\Python34\lib\site-packages\supybot\plugins\__init__.py", line 271, in flush
    writer.writerow(L)
  File "C:\Program Files\Python34\lib\site-packages\supybot\utils\file.py", line 172, in write
    return self._fd.write(data)
  File "C:\Program Files\Python34\lib\encodings\cp1250.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u25c4' in position 33: character maps to <undefined>
2015-12-23 15:22:19 +01:00
Valentin Lorentz 2364cf176d Status: Fix sort on Python3 (dict_items, not list). Closes GH-1199. 2015-12-20 10:09:39 +01:00
James Lu 45c5e29849 Channel: fix help text in "cycle" command
Closes #1197.
2015-12-19 09:01:29 -08:00
Valentin Lorentz 65abedcca1 ChannelStats: Don't crash on messages with no argument, eg. AWAY. 2015-12-19 00:13:42 +01:00
Valentin Lorentz 856d275697 Status: Fix output of @cpu if the amount of memory is unknown. 2015-12-07 16:32:53 +01:00
Valentin Lorentz b0ee589702 Seen: Fix handling of MODE and TOPIC. 2015-12-05 21:29:07 +00:00
Valentin Lorentz 4d3fa77018 Fix typo. 2015-12-04 13:39:28 +01:00
Valentin Lorentz 2937152dc1 ChannelLogger && ChannelStats && Limiter && Relay && Seen: Use new QUIT and NICK 'channels' tag instead of copying the state. 2015-12-04 13:30:07 +01:00
Valentin Lorentz 1493adc041 Merge pull request #1194 from GLolol/filter/rainbow-stripcolor
Strip colour before applying new colour in Filter.rainbow and colorize
2015-12-02 09:41:56 +01:00
Valentin Lorentz 56d4cbec08 Aka: Fix Python 2 compatibility. 2015-12-02 09:06:34 +01:00
Valentin Lorentz 3fde279e50 Aka: Fix database name. 2015-12-02 07:55:00 +00:00
jacksonmj 61f2df5cc3 Strip colour before applying new colour in Filter.rainbow and colorize
This makes them work much better when the input text already contains colour.

(cherry picked from commit jacksonmj/Limnoria@be83befabf)
2015-12-01 18:20:01 -08:00
Valentin Lorentz bc19a9fc7f Web: fix syntax. 2015-11-30 07:45:05 +00:00
Valentin Lorentz eaf9e40dc2 Web: increase subprocess memory limit and catch MemoryError appropriately. 2015-11-29 18:34:54 +00:00
Valentin Lorentz a070b658a0 Web: Fix title fetching. 2015-11-29 17:59:57 +00:00
Valentin Lorentz ad8883a724 Network: Perform susbstitution in quit message. 2015-11-18 12:18:46 +01:00
Valentin Lorentz b69e6e22bb Conditional: Rename @iferror to @cerror and simplify its logic to just return a boolean. 2015-11-14 19:28:05 +01:00
Valentin Lorentz 5f361ef180 Conditional: Add command @iferror. Closes GH-1114. 2015-11-14 19:20:25 +01:00
Valentin Lorentz 534fb5c78f ShrinkUrl: Fix previous commit. 2015-11-11 12:20:44 +00:00
Valentin Lorentz c65762544c ShrinkUrl: Preven crash for commands with no arguments. 2015-11-11 12:15:55 +00:00
Valentin Lorentz b3dbde18b8 Conditional: Don't import * from commands and remove the hack for any/all. 2015-11-09 19:10:19 +01:00
Valentin Lorentz 8bdab5e23e Condition: Add support for integers (casted to booleans). 2015-11-07 18:44:33 +01:00
Valentin Lorentz e1d0c232ea Aka: Deprecate SQLAlchemy backend. 2015-11-07 18:29:43 +01:00
Valentin Lorentz 3f66dbc3d5 Channel & Dunno & Misc & RSS & Scheduler: Let the logging facility perform string templating to avoid extra format chars in argument. 2015-11-03 17:25:13 +01:00
Valentin Lorentz a8748c3b73 GPG: Fix test crash since 57b77a6725. 2015-10-25 16:27:57 +01:00
Valentin Lorentz 1f57c31665 Web: Fix NameError with snarferShowTargetDomain. Closes GH-1177. 2015-10-25 16:20:31 +01:00
Valentin Lorentz e3ff413734 Web & core: Merge features of Web's title parser and utils.web.HtmlToText + don't unescape HTML twice. Closes GH-1176. 2015-10-23 07:41:36 +02:00
Jussi Timperi 1f96471d93 Web: Correct capitalization in testTitle. 2015-10-22 17:19:03 +03:00
Jussi Timperi 5cf1b34f55 Web: Use title instead of parser.title. 2015-10-22 17:13:47 +03:00
Jussi Timperi df7689cc2e Web & utils.web: Force HTMLParser to process all buffered data.
Python issue 23144.
2015-10-22 16:56:53 +03:00
Valentin Lorentz 526ffb0ccb Web: Fix code factorization (576a96fb71). Closes GH-1173. 2015-10-17 15:41:20 +02:00
Valentin Lorentz fb52b16429 RSS: Allow @announce add to take URLs as feed names. 2015-10-10 20:40:25 +02:00
Valentin Lorentz d397b4706d Merge pull request #1172 from GLolol/web/strip-titles
Web: actually return a whitespace-stripped title
2015-10-04 22:05:08 +02:00
James Lu 6e96f8f8bf Web: actually return the whitespace-stripped title 2015-10-04 12:54:41 -07:00
Jussi Timperi 67e5b55c1a Google: Handle empty results in translate. 2015-10-03 01:06:18 +03:00
Valentin Lorentz 27b878ff7c Math: Add comment about security. 2015-09-28 18:59:29 +02:00
Valentin Lorentz 0371480bd6 Math: add the 'round' function. 2015-09-28 18:57:46 +02:00
Valentin Lorentz 532309ecff Merge pull request #1170 from GLolol/badwords-1
BadWords: truly fix the bot kicking people when badwords list is empty
2015-09-26 08:57:16 +02:00
James Lu 96dc860313 BadWords: truly fix kicks when badwords list is empty (#989) 2015-09-25 20:51:15 -07:00
Valentin Lorentz 4498548cb3 RSS: Add supybot.plugins.RSS.notice. Closes GH-1151. 2015-09-23 11:27:20 +02:00
Valentin Lorentz 1002ec5d30 Later: Allow multiple targets. Closes GH-1169. 2015-09-23 11:23:21 +02:00
Valentin Lorentz 82332ff87c RSS: Add feed-specific waitPeriod. 2015-09-23 11:05:25 +02:00
Valentin Lorentz 685bedcd74 Add config variable supybot.abuse.flood.command.notify. 2015-09-16 21:32:25 +02:00
Valentin Lorentz 2e7df9cfc2 Service: Actually allow 0. 2015-09-15 21:00:31 +02:00
Valentin Lorentz e54ae6dc77 Service: Don't ghost if ghostDelay is set to 0. 2015-09-15 20:59:26 +02:00
James Lu f5146e8af4 Filter: more efficient _squish code 2015-09-10 06:57:40 -07:00
James Lu ed493e6504 Filter: strip spaces in "unbinary" (Closes #1166)
This makes _squish() a shared function to prevent code duplication. Also, remove duplicate testUnbinary function, and add tests for this.
2015-09-09 19:32:15 -07:00
Valentin Lorentz b51075969f Google: Move the main code of translate to a separate function (usable by other plugins). 2015-09-09 21:24:47 +02:00
Valentin Lorentz 1c218592af RSS: Add fallback on sorting by update timestamp + add outdatedFirst and updatedFirst sorts. Closes GH-1139. 2015-09-02 10:04:04 +02:00
Valentin Lorentz 29ca3eb5e4 RSS: Sort on time tuples instead of formatted dates. 2015-09-02 09:43:29 +02:00
Valentin Lorentz c81d5d3151 Make the 'command flood' banmask follow supybot.protocols.irc.banmask. 2015-09-01 20:40:32 +02:00
Valentin Lorentz 6d60616597 Merge pull request #1161 from jacksonmj/private-user-list
Send User.list response in private
2015-08-31 15:16:25 +02:00
jacksonmj 5914499766 Change User.listInPrivate config value from global to channel-specific 2015-08-31 13:04:33 +00:00
Valentin Lorentz 69358681f7 ChannelLogger: Fix 'dictionary changed size during iteration'. 2015-08-31 08:40:30 +00:00
Valentin Lorentz c01a956a8b utils: Remove dependency on parent package. 2015-08-30 17:33:39 +02:00
jacksonmj 3b1c56bbcd User.list: add config value plugins.User.listInPrivate to force user list response to be sent in private
This prevents mass-highlights of people who use their IRC nick as their bot username.
2015-08-30 00:48:29 +00:00
James Lu dbd12e9c0c Aka: allow filtering 'list' by Aka lock status
This adds two mutually incompatible options to Aka list: --locked and --unlocked
2015-08-29 17:21:17 -07:00
Valentin Lorentz e5d8315e64 Language. 2015-08-29 21:46:47 +02:00
Valentin Lorentz 20ef13ef9f Web: Ignore SVG titles. Closes GH-1147. 2015-08-29 21:08:35 +02:00
Valentin Lorentz 576a96fb71 Web: Factorize the code of the title snarfer and the title command. 2015-08-29 21:04:38 +02:00
Valentin Lorentz 8033e6ae14 Merge pull request #1159 from jacksonmj/math
Prevent untrusted users from freezing the bot with Math.rpn, and allow factorial calculation for smaller numbers
2015-08-29 08:09:12 +02:00
jacksonmj 97c7d0a9c3 Math.calc: allow factorial for smallish numbers 2015-08-29 01:27:50 +00:00
jacksonmj 1aeb847509 Math.rpn should use _mathSafeEnv, otherwise untrusted users can freeze the bot 2015-08-29 01:26:45 +00:00
Valentin Lorentz b8f5423130 Unix: Skip tests instead of ignoring them if a dep is missing + use ls instead of ping. 2015-08-26 23:09:55 +02:00
Valentin Lorentz 4d6bd84d00 Time: skip tests if dependencies are not available. 2015-08-26 22:45:33 +02:00
Valentin Lorentz 33e8966e4b ChannelLogger & core: Use IRCv3.2 extension invite-notify if available. 2015-08-22 18:24:32 +02:00
jacksonmj 9eafe29c30 Alias: fix tests 2015-08-22 14:36:00 +00:00
jacksonmj ff4040f479 Alias: prevent "RuntimeError: dictionary changed size during iteration" for invalid aliases 2015-08-22 13:24:19 +00:00
jacksonmj f5c66afe4f Alias: add hard-coded check that alias names are valid registry names 2015-08-22 13:24:01 +00:00
jacksonmj 4507771ce7 Alias: clearer description for list command, as suggested by ProgVal 2015-08-22 12:54:06 +00:00
jacksonmj 92acea7785 Alias: refactor some of the registry access 2015-08-22 12:48:59 +00:00