Valentin Lorentz
e9a8826805
irclib: catch exception when calling callback.reset()
...
We don't want the Irc driver to hang when a plugin crashes
in this function.
2020-05-17 12:46:01 +02:00
Valentin Lorentz
b78973265b
registry: Remove warnings in getSpecific, they are going to show up way too often.
...
Closes GH-1409
2020-05-16 10:43:37 +02:00
Valentin Lorentz
1b4205f1ac
registry: Fix comment about high-cardinality values.
2020-05-16 00:35:16 +02:00
Valentin Lorentz
2eb32de26e
registry: Hide warning when channel is 'global'.
2020-05-16 00:32:28 +02:00
Valentin Lorentz
f408f6cc42
registry: Prevent memory leaks caused by Value.getSpecific getting values with non-channel/non-network values.
2020-05-16 00:04:10 +02:00
Valentin Lorentz
7e7a7bf936
registry: Explain why Value.set sets self._wasSet.
2020-05-15 23:56:39 +02:00
Valentin Lorentz
eead5566e5
utils.gen: set __slots__.
...
We create *a lot* of these structs, so it saves a considerable
amount of space.
2020-05-15 22:57:35 +02:00
Valentin Lorentz
ddce09d257
Rename supybot.reply.format.databaseRecord to supybot.replies.databaseRecord.
2020-05-15 19:08:43 +02:00
Valentin Lorentz
3d1e88cb68
safeEval: Get rid of eval().
...
It should be safe considering the AST sanity checks,
but I don't see any point in keeping it.
2020-05-15 18:31:04 +02:00
Valentin Lorentz
7444e656d8
supybot.reply.format.databaseRecord: Add $nick
2020-05-14 18:56:20 +02:00
Valentin Lorentz
4046a1b201
ChannelIdDatabasePlugin: Make the format of showRecord() configurable.
2020-05-14 18:45:04 +02:00
Valentin Lorentz
dc736799b8
callbacks: Prevent passing 'value' as positional argument to registryValue.
...
In case we need to add other arguments in the future.
2020-05-14 18:43:54 +02:00
Valentin Lorentz
0c6b526fdd
Add -scheduler.repeat to default capabilities.
...
It's too easy to use to flood.
2020-05-13 20:16:35 +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
5c5cad5851
httpserver: Fix circular dependency when servers.http.keepAlive is true.
2020-05-09 22:17:28 +02:00
Valentin Lorentz
e87a14826e
Fediverse: First draft.
2020-05-09 19:27:34 +02:00
Valentin Lorentz
43a8724d3a
Don't strip spaces when parsing registry values.
...
It breaks plugins.Messageparser.listSeparator, and probably others.
2020-05-08 22:18:27 +02:00
Valentin Lorentz
e990ffa30c
Add long_description from a plugin's README.md
2020-05-08 22:02:05 +02:00
Valentin Lorentz
f54588f9dd
Add a 'limnoria.plugins entrypoint, to discover plugins installed via pip/setuptools.
2020-05-08 22:02:05 +02:00
Valentin Lorentz
f18eafc8d8
Fix crash on simulated echos (they don't have a prefix set).
2020-05-08 11:57:02 +02:00
Valentin Lorentz
83a8afde16
Add experimental support for +draft/reply client capability on outgoing messages.
2020-05-07 21:17:55 +02:00
Valentin Lorentz
eb1e27e20b
Add echo messages, either with the echo-message capability or simulated.
...
Plugin can opt in to getting echo messages by setting the class attribute
'echo_message = True' if they want to get echos.
This defaults to False in order not to break existing plugins, and because
they usually don't need it (there's outFilter for most cases).
2020-05-07 21:08:07 +02:00
Valentin Lorentz
572c609181
Add labels to outgoing messages when labeled-response is supported.
...
This is going to be useful for implementing echo-message; and to plugins
targetting only networks with labeled-response support.
2020-05-07 20:56:59 +02:00
Valentin Lorentz
bb063b8064
Check server_tags in IrcMsg.__eq__.
2020-05-07 18:38:18 +02:00
Valentin Lorentz
307a2367f4
Don't add line breaks in the middle of capability names.
2020-05-07 18:38:18 +02:00
Valentin Lorentz
fc06aa72a6
Fix parsing ISUPPORT MODES with empty value.
2020-05-07 18:38:18 +02:00
Valentin Lorentz
2008f7b815
Exclude server_tags from truncation.
...
They have their own 8191 bytes.
2020-05-07 18:38:17 +02:00
Valentin Lorentz
da328b4985
Expire batches that never ended to avoid leaking memory.
2020-05-06 20:39:21 +02:00
Valentin Lorentz
cc0af4e790
Include start and end messages in a batch.
...
They may have useful server tags (especially when we start
supporting labeled-response).
2020-05-06 18:29:17 +02:00
Valentin Lorentz
a58c994954
Negotiate the 'setname' capability.
...
We don't store the name anywhere, but it can be useful to plugins.
2020-05-05 19:56:24 +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
fc4cc956ba
Merge branch 'sts' into testing
2020-05-02 17:10:13 +02:00
Valentin Lorentz
01dcbf412b
Fix edge case of server tags unescaping, when the backslash is followed by an 'invalid' char.
2020-05-01 23:46:34 +02:00
Valentin Lorentz
e92156711b
Only spaces are token separators, not all whitespaces.
2020-05-01 23:44:38 +02:00
Valentin Lorentz
1854d86476
Add support for outputting server tags.
...
Will be useful when we start sending client tags.
2020-05-01 23:35:52 +02:00
Valentin Lorentz
309fc1233b
Add postTransition method to IrcCallback, called when irc.state.fsm changes.
2020-05-01 20:19:53 +02:00
Valentin Lorentz
f7130f2629
Add missing transition trigger on MOTD start.
2020-05-01 20:19:00 +02:00
Valentin Lorentz
22120ee862
Fix various issues with STS handling.
2020-05-01 19:46:19 +02:00
Valentin Lorentz
51ff013fcc
Apply STS policies when connecting to a server.
2020-05-01 19:46:19 +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
ff5edd95a3
Remove Twisted.
...
There's no reason to use it anymore instead of Socket.
It's already missing features compared to Socket, and I don't want to
maintain it anymore so it will keep getting worse.
2020-05-01 19:46:19 +02:00
Valentin Lorentz
45ff70907f
[WIP] Start reworking Irc around a FSM.
...
To keep track of connection state instead of a complex implicit flow
between handling functions.
2020-05-01 19:43:27 +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
61b47bb65b
Deduplicate list of arguments of _makeReply.
2020-04-11 16:36:14 +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
c489d2e9be
Prevent getChannelDb from overriding state.channel set by getChannel.
...
I don't see any use for this; and it means a 'channel' converter
called after 'channeldb' returns '#' instead of the actual channel
if it's after 'channeldb' in the arg list and
databases.plugins.channelspecific is False.
2020-04-07 21:20:01 +02:00
Valentin Lorentz
712d8c2eab
Remove debug print
...
Was added in 8bb31a54e7
.
2020-03-26 10:29:42 +01:00
Valentin Lorentz
de77ce6ddc
Raise exception instead of assert...
2020-03-21 02:21:06 +01:00
Valentin Lorentz
3576503e3f
Update links to the documentation.
2020-03-17 19:22:52 +01:00
Valentin Lorentz
8f001f8045
Check spec.loader is not None when importing a plugin.
2020-02-09 16:02:35 +01:00
nyuszika7h
0f3264cf26
Add modulo operator to new math evaluator
...
Closes #1402 .
2020-02-08 16:08:23 +01:00
opal hart
f24a17e5c4
Config docs: remove reference to grouped nicks
...
Some networks (e.g. freenode) now allow usage of grouped nicks for SASL
username
2020-02-08 11:07:19 +01: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
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
5efd2afa27
Socket: Don't add instances twice in cls._instances.
...
The connect() method already adds it, so it was in the list twice
(added both by __init__() and connect()).
This caused _select() to call _read() twice on the same instance,
except there is usually nothing to read on the second call,
so it blocks for up to conf.supybot.drivers.poll().
2020-01-25 21:00:42 +01:00
Valentin Lorentz
777d8e4920
Socket: use a proper lock instead of a boolean.
2020-01-23 16:47:49 +01:00
Valentin Lorentz
e7553dcca4
Add subcommand dispatching for CAP/FAIL/WARN/NOTE.
2020-01-23 14:25:10 +01:00
Valentin Lorentz
c4d073a9be
Rename doAuthenticate* functions to not conflict with callback names.
2020-01-23 14:24:41 +01:00
Valentin Lorentz
32d8d141ad
Make irc.error do nothing is no string is given as argument.
...
Fixes c1d3bad64f
, which crashed with:
```
ERROR 2020-01-18T01:34:07 Uncaught exception in NickAuth._callCommand:
Traceback (most recent call last):
File "/usr/local/lib/python3.7/dist-packages/supybot/callbacks.py", line 1337, in _callCommand
irc.errorNoCapability(cap)
File "/usr/local/lib/python3.7/dist-packages/supybot/callbacks.py", line 544, in errorNoCapability
raise Error()
supybot.callbacks.Error
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.7/dist-packages/supybot/log.py", line 368, in m
return f(self, *args, **kwargs)
File "/usr/local/lib/python3.7/dist-packages/supybot/callbacks.py", line 1359, in _callCommand
irc.error(str(e))
File "/usr/local/lib/python3.7/dist-packages/supybot/callbacks.py", line 1065, in error
raise ArgumentError
supybot.callbacks.ArgumentError
```
2020-01-18 11:04:54 +01:00
Valentin Lorentz
895881e66e
Call super().setValue() before defaultHttpHeaders.
...
To prevent infinite recursion on startup, because defaultHttpHeaders
gets the value; which is unset, so 'registry._lastModified > self._lastModified'
is True, so .set() is called, so .setValue() is called again.
2020-01-17 19:49:16 +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
62f8b47e61
Add supybot.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
Valentin Lorentz
ac07b440dc
Rewrite ecdsa-nist256p-challenge using python-cryptography instead of python-ecdsa.
...
Which is more secure. Closes GH-1389.
It also fixes the protocol/format to use the same one as Atheme.
See also: 8a81224ba8
2020-01-01 12:07:59 +01:00
James Lu
a6392c8582
test: choose a random free port for tests using the HTTP server
...
Closes #1392 .
2019-12-15 20:20:37 +01:00
Valentin Lorentz
a86df1fc35
Remove dead code from Group that belongs in Value.
2019-12-09 21:27:09 +01:00
Valentin Lorentz
83114e5fbd
src/callbacks.py: use network-specific values.
...
Closes GH-1393
2019-12-05 21:51:25 +01:00
Valentin Lorentz
1ed47f802f
Request msgid capability.
2019-12-05 21:11:35 +01:00
Valentin Lorentz
a1ee580d08
Make getLocaleFromRegistryCache reload existing locales.
...
The core locale is loaded before this function is called, so it needs to
reload it for non-en locales to be loaded.
2019-11-24 12:59:38 +01:00
Valentin Lorentz
63b0d7e653
Update core fr translation.
2019-11-24 12:47:03 +01:00
Valentin Lorentz
0828b207be
Add fallback if getting supybot.language from registry cache failed.
2019-11-24 12:46:10 +01:00
Valentin Lorentz
423a38770b
Get locale name on startup from registry cache instead of parsing config file.
...
Parsing the config file needlessly requires an extra read of it,
and is brittle (extra spaces, etc.)
It was especially broken as there was a newline character
at the end of currentLocale, which made everything fail
shamefully.
2019-11-24 12:04:21 +01:00
Valentin Lorentz
a8b6698849
Add config supybot.reply.format.list.maximumItems to limit the size of format('%L', ...).
2019-11-23 18:48:58 +01:00
James Lu
9291fbd4a0
All plugins: set Limnoria contributors as maintainer
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
James Lu
7854db7135
Better formatting in supybot.Author if some fields are missing
2019-11-16 11:41:13 -08:00
Valentin Lorentz
2dddfefa98
Fix log on SASL failure.
...
Broken by 04b55805b8
.
2019-11-09 18:38:40 +01:00
Valentin Lorentz
6a9462be00
Fix reset of capabilities_ls.
...
Broken by 0014b206ad
.
2019-11-09 18:27:07 +01:00
Valentin Lorentz
5e2343f717
Update doc of capabilities.default to mention 'channel capability setdefault'.
2019-11-08 20:53:04 +01:00
Valentin Lorentz
04b55805b8
Log SASL mechanism on failure. Closes GH-1014.
2019-11-02 20:52:58 +01:00
Valentin Lorentz
10ccfbbf3c
Remove early return in upkeep() in case sys.stdout is replaced.
...
We don't want flushing to be entirely skipped just because
of that.
2019-11-01 22:18:32 +01:00
Valentin Lorentz
9268356e97
Split 'CAP REQ' commands to not exceed 512 bytes.
2019-10-25 23:07:31 +02:00
Valentin Lorentz
0014b206ad
Reset capability set state on reconnection.
2019-10-25 22:40:51 +02:00
Valentin Lorentz
cfbbed3da9
Truncate incoming lines to 512-2, not 500.
2019-10-25 22:31:09 +02:00
Valentin Lorentz
71cc414ff3
Fix conditional on CTCP in urlSnarfer.
...
Broken in 8bb31a54e7
.
( 8bb31a54e7
\#diff-44309956f4d4fbbe0b8499c3d849080fL209-R212 )
2019-10-22 17:57:46 +02: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
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
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
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
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
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
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
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
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
b65d78518c
Services: Add support for network-specific password.
2019-08-25 14:08:11 +02:00
Valentin Lorentz
0b5bd625eb
Add test for simple registry value inheritance.
2019-08-25 00:07:29 +02:00
Valentin Lorentz
7e1a1a23a9
Fix fallback of Group.__getattr__ on protected attributes.
2019-08-25 00:06:35 +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
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
5b40b5136d
Limit statusmsg prefix stripping to PRIVMSG and NOTICE.
2019-08-18 10:09:11 +02:00
Valentin Lorentz
7a7cdb9f05
Add a 'channel' attribute to IrcMsg objects.
...
It's nicer to use 'irc.channel' instead of 'irc.args[0]', and .channel
provides the actual channel name (stripped of the statusmsg prefix),
so it can be used by plugins when they want to use the actual channel
name.
2019-08-17 22:23:51 +02:00
Valentin Lorentz
4f024cb0b2
Add network-specific config values.
2019-08-15 12:22:43 +02:00
Valentin Lorentz
d4cac026d4
Remove '+' from the default chantypes.
...
It's more likely to be a statusmsg than chantype.
2019-08-04 21:52:40 +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
bf7db13f01
Disallow mutating commands in Aka/Alias/Scheduler by default.
...
It's too easy to abuse these commands when owners don't know they have to set
the appropriate anticapabilities; so let's set the anticapabilities by default.
2019-07-31 23:00:55 +02:00
Valentin Lorentz
76699ec063
Add support for 'message-tags' capability, to receive TAGMSGs.
2019-05-08 21:19:53 +02:00
Valentin Lorentz
71dbd39dd7
Revert changes to the structure of sdist packages.
...
c87aacb690
b882d1cc00
b1db15c056
2019-02-23 00:12:06 +01:00
jesopo
e7b076aa44
startwith
-> startswith
2019-02-22 20:31:07 +01:00
jesopo
61d9596d35
Support [ipv6]:port
format
2019-02-22 20:31:07 +01:00
Valentin Lorentz
233deee0d3
Fix previous commit for py2 and pypy.
2019-02-07 21:35:39 +01:00
Valentin Lorentz
969b9ed341
Make utils.python.collect_extra_debug_data support objects with __slots__.
2019-02-07 21:00:56 +01:00
Valentin Lorentz
624553c069
irclib: Don't return the same nick twice when duplicates in supybot.nick.alternates + supybot.nick.
...
It migt crash on: 'assert newNick != self.nick'
2019-01-27 09:10:06 +01:00
Valentin Lorentz
b051537f7f
Add support for Python 3.8/nightly.
2019-01-06 18:08:15 +01:00
Valentin Lorentz
7adc958dd6
Fix SyntaxWarnings on Python 3.8
2019-01-06 18:06:44 +01:00
Valentin Lorentz
a03a89730a
Fix bugs in wrapping IRC messages.
2019-01-06 16:48:11 +01:00
Valentin Lorentz
93b0476751
Fix text wrapping when colors cross message boundaries.
2019-01-05 23:47:56 +01:00
Valentin Lorentz
b1db15c056
Add a symlink supybot pointing to src/ + move locales/ to src/
...
This looks like a more standard source tree, and allows for running tests without installing.
2019-01-02 14:29:32 +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
06400596e9
Prevent commands.process from trying to increase heap size. Closes GH-1353.
2018-12-15 22:15:12 +01:00
Valentin Lorentz
c1d3bad64f
Raise error even if supybot.replies.(generic)noCapability is empty.
2018-10-06 08:13:11 +02:00
Valentin Lorentz
11dd5049fe
Fix MITM warning.
2018-10-06 08:13:10 +02:00
Valentin Lorentz
88894d69bc
Fix fa2c11eec1
.
2018-09-25 20:04:07 +02:00
Valentin Lorentz
1ac7812d7a
Use __slots__ for core config values.
2018-09-25 18:59:46 +02:00
Valentin Lorentz
fa2c11eec1
registry: Get rid of the 'class X'-based hack.
2018-09-25 18:55:42 +02:00
296d44354f
src/conf.py: clarify supybot.protocols.http.proxy
2018-09-16 14:19:30 +02:00
Valentin Lorentz
c433f05190
Add a config var to require SASL auth when connecting.
2018-09-10 22:48:49 +02:00
Valentin Lorentz
7cc7b4fac9
Redesign the message truncation algorithm.
2018-09-10 22:39:45 +02:00
James Lu
c5175110e0
Socket: fix 91a38887a
with backported ipaddress on Python 2
...
Closes GH-1342.
2018-07-09 03:37:10 +00:00
James Lu
72c4801bb9
Socket: fix previous commit
2018-06-19 12:13:45 -07:00
James Lu
91a38887a2
Socket: suppress "not using TLS" errors on loopback addresses
...
This is a refined version of #1317 .
2018-06-19 11:59:42 -07:00
Valentin Lorentz
c2b6305c46
Config: Support arbitrarily many channels for '@config channel'.
2018-05-29 22:17:28 +02:00
James Lu
43ee68ee3d
conf: maxHistoryLength no longer requires a restart to apply
...
03c4529d9e
made irc.state.history network specific, so reconnecting each network separately will update its history buffer's max length.
2018-05-19 12:50:56 -07:00
Valentin Lorentz
0d627c05b7
Do not break UTF-8 characters in long words. Closes GH-1333.
2018-04-14 22:31:30 +02:00
James Lu
75e6816e91
Merge pull request #1332 from farooqkz/master
...
Added docstring for getIrc()
2018-03-26 08:10:12 -07:00
Farooq Karimi Zadeh
3a4b77cefd
Added docstring for getIrc()
2018-03-26 13:40:15 +04:30
Valentin Lorentz
c930edd943
Report 'Limnoria <foo>' instead of 'Limnoria Limnoria <foo>' as a version.
2018-03-02 01:20:52 +01:00
Valentin Lorentz
af98c0c12e
Allow MODE arguments that do not start with a + or a -.
2018-02-06 15:35:49 +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
636712be51
Limit the number of combinations of capabilities required for command names with spaces.
...
To call a command named 'X Y Z' in plugin 'P', we used to require lots of capabilities,
like 'P.X', 'P.Y', 'P.Z', 'P.X.Y', 'X.Y', 'P.Y', ...
Now, we only require 'P', 'P.X', 'P.X.Y', 'P.X.Y.Z', and 'Z'.
It makes it a lot easier to work with command names with a space when
supybot.capabilities.default is False.
2018-02-02 18:20:05 +01:00
Valentin Lorentz
39dacf6e5b
Fix Python 2 support.
2018-02-01 23:21:18 +01:00
Valentin Lorentz
030ce5e6d4
Fix previous commit.
2018-02-01 22:37:24 +01:00
Valentin Lorentz
63a17f7491
Rewrite text wrapping to count line size in bytes instead of characters.
...
Also, fix shitty comparisons that were done in reverse.
2018-02-01 21:32:14 +01:00
Valentin Lorentz
7e98802809
Drop STARTTLS support, it complicates the connection initialization too much.
2018-01-24 09:27:39 +01:00
Nicolas Coevoet
2b030ac178
more arguments added for WHOX, to avoid external plugins recall same requests
2018-01-23 19:37:19 +01:00
Valentin Lorentz
40b9bbcb1b
Send 'AUTHENTICATE :+' at the end of a SCRAM auth.
...
https://github.com/ircv3/ircv3-specifications/pull/326
2018-01-14 22:53:40 +01:00
James Lu
8981b225f1
ircdb: fix typo in supybot.capabilities.registeredUsers description
2018-01-06 10:39:05 -08:00
Valentin Lorentz
b9a159b68a
Add supybot.capabilities.registeredUsers, to give default capabilities to all registered users.
2018-01-05 19:24:54 +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
James Lu
37a42b0e3b
ircutils: split ! and @ in hostmasks from the right
...
This fixes /names parsing when ! is a prefix character and userhost-in-names is enabled: previously, strings such as "!@user!ident@some.host" were incorrectly split into "" for nick and "@user!ident@some.host" for ident@host.
2017-12-17 04:21:35 -05:00
James Lu
dbbd7b4c4e
log: fix a typo (normal->normally)
2017-12-12 20:54:34 -05:00
James Lu
cc06c9f5f0
conf: mention that externalIP is not used by Limnoria core
...
Closes #1311 .
2017-10-29 16:24:45 -07:00
Ken Spencer
e08a393960
src/ircmsgs: modes doesn't just quiet ('Returns a MODE to /quiet/ each of nicks on channel') ( #1313 )
...
* src/ircmsgs: modes doesn't just quiet ('Returns a MODE to /quiet/ each of nicks on channel')
* plus also fix some possible english issues
* src/ircmsgs: fix up docs per @GLolol
* src/ircmsgs: fix up wording per @ProgVal s/pairs/2-tuples/
2017-10-29 16:55:10 +01:00
Valentin Lorentz
11bbc89c9d
Properly handle multiple hosts in supybot.servers.http.hosts4.
...
See ebb48a4808
(which I reverted).
2017-10-28 09:50:12 +02:00
Valentin Lorentz
96694a31f6
Revert "conf: fix validation of multiple IP addresses"
...
This reverts commit ebb48a4808
.
2017-10-28 09:32:52 +02:00
James Lu
ebb48a4808
conf: fix validation of multiple IP addresses
...
Previously, setting supybot.servers.http.hosts6 to multiple IP addresses always
failed because utils.net.isIPV6() gets passed a string with a space in it.
This code worked however for multiple IPv4 addresses because inet_aton(), which
is used internally by isIPV4(), allows and ignores trailing data after the
first IP address it finds.
Thanks to @MrBenC for reporting.
2017-10-27 23:57:52 -07:00
Valentin Lorentz
965dcc293d
Do not call noReply() on raw IRC objects.
2017-10-26 09:21:31 +02:00
Valentin Lorentz
73ddedd73c
Fix previous commit to work with Karma.
2017-10-21 15:53:38 +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
4f6a5e7db9
Add config variable supybot.commands.allowShell. ( #1301 )
2017-09-24 21:11:21 +02:00
Valentin Lorentz
4a0ad92e58
Remove overly complicated code.
2017-09-19 00:34:25 +02:00
James Lu
d96d464698
test: lower wait time between fetching responses, for faster tests
2017-09-17 19:29:50 +02:00
Valentin Lorentz
bdbc79bfc6
Fix for Slack.
2017-08-23 18:51:54 +02:00
Valentin Lorentz
b00081f6c9
Make REMOVE a high-priority message. Closes GH-1294.
2017-08-03 22:02:01 +02:00
Valentin Lorentz
d5b4275b23
Merge pull request #1297 from Peppernrino/patch-1
...
Fix spelling mistake.
2017-08-01 09:48:41 +02:00
Peppernrino
f0b2af9ab2
Fix spelling mistake.
2017-07-31 23:50:01 -06:00
Valentin Lorentz
59ed253a0e
supybot-wizard: do not pollute the CWD before paths to directories are known.
2017-06-04 15:59:06 +02:00
Valentin Lorentz
5665f2f477
Use msg.tagged instead of deprecated IrcMsg.__getattr__ API.
2017-03-25 22:03:03 +01:00
Valentin Lorentz
355ff7ffdf
Fix support for Python < 3.4.
2017-02-25 13:24:03 +01:00
Valentin Lorentz
dab026169f
Use ast.literal_eval() instead of eval() when possible.
...
It's unlikely to change anything, but a little more safety
does not hurt.
2017-02-25 13:10:33 +01:00
Valentin Lorentz
8bae847682
Use ast.parse in 'eval' mode instead of 'exec'.
...
This fixes compatibility with Python 3.7; but we should have
been doing this since b8fe420ef3
.
The incompatibility with Python 3.7 was introduced in
cb41b2766d
See also: http://bugs.python.org/issue29646
2017-02-25 11:31:52 +01:00
James Lu
9f57bde853
ircutils: remove redundant str.replace
...
As strings, '\x0f' == '\x0F', and '\x1f' == '\x1F'
2017-02-23 17:30:34 -08:00
Valentin Lorentz
8652c683ab
Fix case-insensitive plugin loading if a plugin is in two directories.
2017-01-22 21:22:39 +01:00
Valentin Lorentz
8ce43110b6
Working support of scram-sha-256.
2017-01-11 00:10:46 +01:00
Valentin Lorentz
9be4db01f8
Fix ecdsa nameerror introduced in previous commit.
2017-01-10 23:27:50 +01:00
Valentin Lorentz
e87ad5b5a3
Untested implementation of SASL SCRAM auth.
2017-01-10 23:23:56 +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
Valentin Lorentz
95a1f21600
Revert some instances of s/iteritems/items/ in be118c3338
.
2016-11-11 13:04:00 +01:00
Valentin Lorentz
5b29c8c0dd
utils.iter: Allow None argument to filterfalse and all.
...
Fixes bug in the Debian plugin.
2016-10-27 20:51:36 +02:00
Valentin Lorentz
337094a1f4
Document argument 'heap_size' of commands.process.
2016-10-26 18:11:01 +02:00
Valentin Lorentz
97d29d7913
Bring back VersionIsEmpty for supybot.user
...
Was removed by e5729bc86d
, but
the removal breaks compatibility with popular IRCds.
2016-10-01 23:47:42 +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
Valentin Lorentz
79bcc04d0a
Fix Python 3.6 support of utils.python.glob2re.
2016-09-14 20:09:00 +02:00
Valentin Lorentz
e5729bc86d
Remove VersionIfEmpty config type, useless since 278a111f5f
.
2016-08-16 11:03:58 +02:00
James Lu
278a111f5f
irclib: expand standard substitutions in realname
2016-08-16 11:00:58 +02:00
Valentin Lorentz
40a06d6527
Deprecate IrcMsg.__getattr__ and fix compatibility with Python ≥ 3.6.
2016-08-02 10:32:01 +02:00
James Lu
fea1ae1c20
ircutils: expand $version to Limnoria instead of Supybot
2016-08-01 20:57:21 -07:00
Valentin Lorentz
0d820477c2
GPG: Improve error messages.
2016-07-29 01:28:12 +02:00
Valentin Lorentz
e41b75d636
Merge remote-tracking branch 'mapreri/stable-output' into testing. Closes GH-1250.
2016-07-23 16:23:09 +02:00
Mattia Rizzolo
a69117a203
always sort the produced config files
2016-07-23 13:36:00 +00:00
Valentin Lorentz
dc4afb45a0
Try to provide Server Name Indication even if Python does not have SSLContext.
2016-07-20 20:42:40 +02:00
Valentin Lorentz
fa5552ee5f
Merge pull request #1235 from JunaidLoonat/master
...
Use HTTP proxy for HTTPS requests as well
2016-04-29 22:09:17 +02:00
Junaid Loonat
3a2b603f2f
Improved HttpProxy validation routine
...
Validation routine for HttpProxy updated to use the newly introduced isSocketAddress() function
2016-04-26 23:32:48 +02:00
Junaid Loonat
3e72aa5da5
New isSocketAddress() method
...
Introduction of the isSocketAddress() method which will use the existing getSocket() method in order to validate whether the provided string is a valid socket address.
2016-04-26 23:12:26 +02:00
Junaid Loonat
7be7b98e68
Update conf.py
2016-04-25 23:21:46 +02:00
Junaid Loonat
c211c60e52
Removed HTTP(S) proxy code
...
The HTTP(S) proxy is now set globally from the configuration logic.
2016-04-25 22:12:52 +02:00
Junaid Loonat
14e5c490e6
Update conf.py
2016-04-25 22:03:00 +02:00
Junaid Loonat
8d2da9aa3a
Immediate HTTP(S) proxy (de)activation
...
Introduction of HttpProxy class which is based off of the SocksProxy class.
Allows for immediate HTTP(S) proxy activation and deactivation, as the configuration is changed.
2016-04-25 21:50:52 +02:00
Junaid Loonat
654d98c125
Use proxy for HTTPS requests as well
...
Use proxy handler/opener classes, instead of request.set_proxy, to avoid any potential bugs in older Python versions.
Use the HTTP proxy (if configured) for HTTPS requests as well.
2016-04-25 10:14:49 +02:00
Valentin Lorentz
6ec0af2da3
Strip CTCP characters from irc.reply by default.
2016-04-24 21:11:34 +02:00
Valentin Lorentz
92ed5d484d
Open log files with UTF-8 encoding.
...
It seems to work better that way, at least on Python 3.
2016-03-24 22:04:35 +01:00
Valentin Lorentz
b64926814b
Add another fallback to log emitting in case of unicode-related error.
2016-03-20 12:56:33 +01:00
Valentin Lorentz
93feb71b66
Normalize fingerprints to allow more formats.
...
https://github.com/Limnoria/Limnoria-doc/issues/76#issuecomment-198794341
2016-03-20 10:28:33 +01:00
Valentin Lorentz
9cd2170a14
Add supported server fingerprint algorithms to the help of supybot.networks.*.ssl.serverFingerprints. Closes GH-1221.
2016-03-17 19:18:41 +01:00
James Lu
1b0c2ab95a
ircutils: add $network to standard substitutions
2016-03-14 20:30:11 -07:00
Valentin Lorentz
7f38076e59
Use HTMLParser.unescape instead of chr to decode HTML entities.
...
This adds support for entities encoded in hexadecimal notation.
2016-03-08 22:00:44 +01:00
Valentin Lorentz
bf02f79847
Merge pull request #1220 from GLolol/drivers/logging
...
Socket: lower SSL related log level, and reword text to flow better
2016-02-24 19:31:13 +01:00
Valentin Lorentz
2c1de2328b
Merge pull request #1219 from GLolol/patch-1
...
conf: fix help for verifyCertificates
2016-02-24 17:27:22 +01:00
Valentin Lorentz
f1390b1aec
Improve SSL-related version warnings.
2016-02-24 17:25:51 +01:00
James Lu
afc8d828b2
Merge remote-tracking branch 'origin/patch-1' into drivers/logging
...
Conflicts:
src/drivers/Socket.py
2016-02-24 07:07:29 -08:00
James Lu
7c9b92bee5
conf: fix help for verifyCertificates
...
Closes #1216 .
2016-02-24 07:02:10 -08:00
Valentin Lorentz
e1a86665ae
Remove unsupported option verify_mode to ssl.wrap_socket.
2016-02-24 07:43:21 +01:00
Valentin Lorentz
90c565c0c5
Fix name.
...
I thought I fixed that d922af1043
, but I
messed up with Git so hard I had to re-do that commit multiple times,
forgetting a new thing each time; and apparently that one passed through.
2016-02-23 21:56:52 +01:00
Valentin Lorentz
d163d1a1a3
Add support for authority certificates.
2016-02-23 20:52:36 +01:00
Valentin Lorentz
81a9d1fa39
Remove “Supybot” by “Limnoria” in the default version (following 661a32d1a9
).
2016-02-23 20:52:07 +01:00
James Lu
b344126318
Socket: update logging text to flow better
2016-02-23 07:29:16 -08:00
Valentin Lorentz
78cf550674
Socket: fix crash on Python versions that do no support certificate validation.
2016-02-23 16:25:37 +01:00
Valentin Lorentz
880addf256
Add link to FAQ items on how to upgrade to Python 3.
2016-02-22 20:18:37 +01:00
Valentin Lorentz
8c3946d31c
Actually, 3.2 and 3.3 don't have SSLContext either. Let's recommend only ≥ 3.4.
2016-02-22 18:36:53 +01:00
James Lu
aee7ac3583
Socket: drop SSL-related logging from critical to warning / error, and fix spacing
2016-02-22 07:09:56 -08:00
Valentin Lorentz
a7096f8b3e
Disable SSL cert verification by default.
...
Having it enabled by default would break existing bots just by
doing the update.
Let's just show a warning and give owners some time to update
their config, for the moment.
2016-02-21 14:47:44 +01:00
Valentin Lorentz
ae560dbd2a
Add supybot.protocols.ssl.verifyCertificates.
...
And remove unused variable supybot.protocols.ssl.verifyMode.
2016-02-21 14:42:41 +01:00
Valentin Lorentz
e77e78e79e
Add support for using server certificate fingerprint instead of CA signature.
2016-02-21 14:18:14 +01:00
Valentin Lorentz
d922af1043
Verify server certificate, and deprecate Python < 2.7.9. Closes GH-1031.
2016-02-21 13:20:09 +01: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
c260a76e06
Add fallback for interpreters which do not support __slots__ for str subclasses.
...
Affects CPython 2.x, but neither CPython 3.x or Pypy.
Incompatibility introduced in 38e7589ff3
.
2016-02-20 13:35:40 +01:00
Valentin Lorentz
15e387ea46
Make irc.replies return all results in a single line by default (instead of following the conf), if used in a nested command. Closes GH-219.
2016-02-20 12:57:04 +01:00
Valentin Lorentz
38e7589ff3
Make i18n.InternationalizeString use less memory.
2016-02-20 09:51:24 +01:00
Valentin Lorentz
a538920df7
Catch more unicode-related exceptions when trying to write logs to a file.
2016-02-09 18:40:00 +01:00
Valentin Lorentz
6d4ea07b72
Remove a driver from the list of dead drivers after it has been restarted. Closes GH-1165.
2016-02-09 17:31:39 +00:00
Valentin Lorentz
11496b4bbb
ircdb: When serializing, do not write a 'password' command if there is no password set.
...
Having a 'password' command with no password stops the unserialization for that user.
May be a first step toward allowing users with no password (GH-1140).
2016-02-07 10:49:17 +01: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