Commit Graph

5581 Commits

Author SHA1 Message Date
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