Commit graph

744 commits

Author SHA1 Message Date
jesopo
287d031281 Add ModuleManager.BaseModule so modules don't *have* to implement __init__ 2018-09-19 13:28:18 +01:00
jesopo
fcbb7c960c Refactor everything to use delimited events 2018-09-19 13:25:12 +01:00
jesopo
b86ca6088f Fix some styling in ducks.py 2018-09-19 13:23:18 +01:00
jesopo
b8aca72861 Support hooking functions in modules with @Utils.hook 2018-09-19 12:37:41 +01:00
jesopo
f3d8d35083 Send a FONT_RESET (\x0F) after stderr module names because a bug in weechat
pre-2.2 means that because red colors are displayed as red+bold, the second
FONT_COLOR (\x03) only resets the red coloring, not the bold, meaning the rest
of the line is bold.
2018-09-19 02:22:30 +01:00
jesopo
b3609db92c Actually remove channels from channel_save when the bot leaves the channel 2018-09-19 01:41:53 +01:00
jesopo
702b6a4dd3 permissions._identified takes server, user and nickname 2018-09-19 01:19:04 +01:00
jesopo
7331443631 Handle pre-register server NOTICES like :server NOTICE Auth :text 2018-09-19 01:14:13 +01:00
jesopo
b7dda02951 Add optional aliases for IRCServers, mostly to make logging prettier. 2018-09-19 01:13:54 +01:00
jesopo
2abb3c6787 Only allow the register command on networks that support internal identity 2018-09-19 00:45:14 +01:00
jesopo
e6f25e31db User.id doesn't exist anymore; it's User.get_id() 2018-09-19 00:45:01 +01:00
jesopo
11e62bb945 Fix exception in commands.py any time anyone sends an empty or
whitespace-prefixed PRIVMSG
2018-09-19 00:44:04 +01:00
jesopo
af01bccaa5 Change log level to show in logs as "[LEVEL]" instead of " - LEVEL - " 2018-09-19 00:43:44 +01:00
jesopo
0c7d088230 Set IRCServer.channel_types to ["#"] by default 2018-09-17 22:08:54 +01:00
jesopo
fda223ee46 Implement __str__ and __repr__ on Utils.IRCHostmask 2018-09-17 21:49:32 +01:00
jesopo
4a3dbeb7b8 Also catch socket.timeout in IRCServer.read() 2018-09-17 20:59:50 +01:00
jesopo
c3e667e0a1 When we get a command without *any* arguments e.g. ":nick!user@host AWAY" don't
continue to parse that when we've seperated hostmask and command
2018-09-17 20:19:57 +01:00
jesopo
17f318acb6 'USER <username> 0 * :<realname>' is technically more correct, per RFC2812, than
"USER <username> - - :<realname>'
2018-09-17 13:49:48 +01:00
jesopo
f796fddee5 Typo in sasl.py; proceed with sasl regardless of mechanism when using CAP 3.1 2018-09-17 13:25:11 +01:00
jesopo
b07da8c8c0 Fix a copypaste fail that caused sasl.py to have two sasl_success functions 2018-09-17 13:10:22 +01:00
jesopo
840957fda4 Utils.irc_lower was returning an unchanged string because .replace on a string
returns a new string
2018-09-17 13:09:45 +01:00
jesopo
9bb81253cb In handling raw.part, remove_channel after calling self.part instead of before 2018-09-17 13:09:22 +01:00
jesopo
007ffec762 Handle 904 (ERR_SASLFAIL) in sasl.py 2018-09-17 12:57:03 +01:00
jesopo
d522997992 Don't just listen for 'sasl=PLAIN' in IRCv3 CAP 3.2 2018-09-17 11:49:23 +01:00
jesopo
c3482e78ba Add ability to not vertify a server's certificate ('ssl-verify') 2018-09-17 11:38:40 +01:00
jesopo
fad61c2664 Support EXTERNAL sasl authentication 2018-09-17 11:31:40 +01:00
jesopo
bb5ff8ee0d Fix highlight checking in commands.py 2018-09-17 11:31:29 +01:00
jesopo
e2e4184bdc Ignore .key/.crt in .gitignore 2018-09-17 10:55:53 +01:00
jesopo
d307fab507 Add support for TLS client certificate/key 2018-09-17 10:55:39 +01:00
jesopo
3576f18a82 Verify server TLS certificates 2018-09-17 10:47:08 +01:00
jesopo
b768ba71ed Don't pass nickname!username@hostname through to IRCChannel's add_mode on
/NAMES resposne
2018-09-14 10:43:52 +01:00
jesopo
1eed727bc5 Add !enablemodule and !disablemodule to modules.py 2018-09-13 13:35:05 +01:00
jesopo
b4397071ed Oops, this isn't C#. 2018-09-13 11:50:18 +01:00
jesopo
8e003281b6 Support "nickname@hostname" hostmask, even though it's almost certain it'll
never be seen in the wild.
2018-09-13 11:46:42 +01:00
jesopo
e8c7abd19a Remove additional % 2018-09-13 10:27:50 +01:00
jesopo
36fe1fa0d5 Specific "n%" for WHOX as to only return nicks. 2018-09-13 10:25:33 +01:00
jesopo
6db97c7df5 join.py -> bot_channel.py, make the bot channel (default #bitbot) configurable 2018-09-12 15:44:50 +01:00
jesopo
461b4f4083 Add missing argument to Utils._multi_replace calls in irc_lower 2018-09-12 13:48:19 +01:00
jesopo
bb372964d6 .lower() is also not valid for ascii case mapping 2018-09-12 10:33:01 +01:00
jesopo
362bf7cec7 .lower() is not valid as "Á" is not the same as "á" within RFC1459 casemapping 2018-09-12 10:28:06 +01:00
jesopo
08aa72de82 Support 'strict-rfc1459' case mapping 2018-09-12 10:18:12 +01:00
jesopo
58bc741177 Don't return 0 as "time until next ping" when we've already sent a ping. return
None instead.
2018-09-11 18:25:27 +01:00
jesopo
788ba239e5 Fix weird double indentation in IRCBot.py 2018-09-11 18:25:01 +01:00
jesopo
614f63bda3 Remove boot_time from stats.py, move it to start_time in IRCBot otherwise a
module reload of stats.py would reset !uptime
2018-09-11 18:24:34 +01:00
jesopo
80ec110640 Utils.irc_lower and Utils.irc_equals take an IRCServer parameter 2018-09-11 10:15:16 +01:00
jesopo
a8bf248d47 Fix copypaste fail in Utils that meant we had no RFC1459_LOWER 2018-09-11 10:14:37 +01:00
jesopo
9236327366 Forgot to import Utils in IRCServer 2018-09-11 10:14:12 +01:00
jesopo
6c8399fa0f Respect RFC1459 casemapping rules 2018-09-11 08:52:12 +01:00
jesopo
7530bb7cbd Pass around an IRCPrefix object instead of "nickname!username@hostname", fix a
bug in TAGMSG handling that was trying to get a user object from a channel, fix
a bug in ACCOUNT handling that was literally using "nickname" as a user's
nickname, instead of the parsed nickname.
2018-09-10 09:31:24 +01:00
jesopo
35ae1a57c7 Handle CHGHOST referencing the bot instead of another user 2018-09-10 09:10:43 +01:00