Commit graph

2450 commits

Author SHA1 Message Date
jesopo
ac958384fe SCRAM doesn't need constant_time_compare, nonces prevent replay (scram.py) 2019-02-12 23:47:24 +00:00
jesopo
62d2449958 MONITOR actually catches NICK changes (nick_regain.py) 2019-02-12 21:01:28 +00:00
jesopo
ef43c9aeef Also use ISON even if MONITOR is supported - to catch NICK changes
(nick_regain.py)
2019-02-12 20:59:11 +00:00
jesopo
f2a7acfe4d Use RPL_ENDOFMOTD or ERR_NOMOTD to denote end-of-registration and a time to
check if we got MONITOR in 005 at any point (nick_regain.py)
2019-02-12 20:48:52 +00:00
jesopo
554b041822 Remove debug print (nick_regain.py) 2019-02-12 20:43:50 +00:00
jesopo
3fc2fec324 Add nick_regain.py, to watch for the bot's desired nick becoming free 2019-02-12 20:42:26 +00:00
jesopo
e1de8cd9be We were just checking if arbitrary was falsey, thus losing empty trailing args
(' :' with nothing after it) (utils.irc)
2019-02-12 20:42:09 +00:00
jesopo
1f1a19b5b6 set nick to '<nickname>|' when we get a nickname-in-use error (line_handler.py) 2019-02-12 20:40:40 +00:00
jesopo
2e925a6853 user is null when we sent a NOTICE non-echo-message (line_handler.py) 2019-02-12 17:07:39 +00:00
jesopo
44df8240cc user is null when we're sending a message non-echo-mesasge (line_handler.py) 2019-02-12 17:04:55 +00:00
jesopo
e573f9de51 We can *receive* PRIVMSG/NOTICE without a prefix (line_handler.py) 2019-02-12 17:02:12 +00:00
jesopo
21b2e0bbe7 Typo, 'datetme' -> 'datetime' (ctcp.py) 2019-02-12 16:55:56 +00:00
jesopo
0e1535a88d Definte channel before trying to use it for event hook constuction
(line_handler.py)
2019-02-12 16:50:11 +00:00
jesopo
938495fc3a Refactor how CTCPs are sent through events 2019-02-12 16:49:57 +00:00
jesopo
b4092a14ca Also strip \x01 off the start of CTCP commands, if it's there (utils.irc) 2019-02-12 16:49:24 +00:00
jesopo
b2d942027e Implement IRCv3 echo-message (line_handler.py) 2019-02-12 16:12:15 +00:00
jesopo
e1c81efa6f Add a way to blacklist CAPs per-network (line_handler.py) 2019-02-12 15:34:50 +00:00
jesopo
7e4c1cadb1 Add !cointoss to random_number.py 2019-02-12 15:23:02 +00:00
jesopo
86bc49a0a1 Only put a ":" on trailing args when it's required 2019-02-12 13:55:57 +00:00
jesopo
01a7c05687 Change arg types of constant_time_compare to typing.AnyStr (utils.security) 2019-02-12 11:59:55 +00:00
jesopo
ce23442f4b Use constant-time compare in permissions.py for password identifying 2019-02-12 11:59:47 +00:00
jesopo
9667b8a6e0 Move constant-time compare function to utils.security 2019-02-12 11:57:49 +00:00
jesopo
305b998a52 Use hmac.compare_digest to do a constant-time compare (sasl.scram) 2019-02-12 11:50:37 +00:00
jesopo
144182868c Upgrade resume.py to draft/resume-0.3 and support sending last-read timestamp 2019-02-12 11:14:36 +00:00
jesopo
8c9626f0a9 Put an strf format for ISO8601 in utils 2019-02-12 11:08:24 +00:00
jesopo
98b82c7f2c Insert label tag to lines in labeled BATCHes (line_handler.py) 2019-02-11 22:19:20 +00:00
jesopo
2f5a232c4e Hold on to tags and type for BATCHes 2019-02-11 22:15:12 +00:00
jesopo
b37a50ed7a IRCServer should handle ping_sent, not IRCSocket 2019-02-11 21:23:52 +00:00
jesopo
a8d9365442 last_read/last_send is now handled by IRCSocket.py 2019-02-11 20:49:53 +00:00
jesopo
6c6f1f9c2b socket.getpeername() can return more than 2 values (IRCSocket) 2019-02-11 20:34:15 +00:00
jesopo
137d5b1a58 connected status is now tracked by IRCSockets 2019-02-11 20:34:02 +00:00
jesopo
b6df18930c bytes_written/bytes_read is now on IRCServer.socket (stats.py) 2019-02-11 18:26:16 +00:00
jesopo
48fe6b7391 Add IRCSocket.connected_ip to hold on to the IP address we connected to (e.g.
so we know which IP we picked from a round robin DNS)
2019-02-11 16:10:23 +00:00
jesopo
d8244ccae3 Add faulthandler (and faulthandler.enable()) to start.py 2019-02-11 11:43:14 +00:00
jesopo
399723db94 Show file add/remove/change *after* saying it's a push (github) 2019-02-11 11:17:07 +00:00
jesopo
18bb7ec4af Actually return function hook from _shutdown_hook (admin.py) 2019-02-11 10:09:39 +00:00
jesopo
e644888e3e Actually shutdown socket when !shutdown is called (admin.py) 2019-02-11 10:00:55 +00:00
jesopo
9b44b6cd13 Shift socket.socket related logic to IRCSocket.py 2019-02-11 10:00:41 +00:00
jesopo
b6b7345764 We don't need to send writebuffer.empty event any more (src/IRCServer.py) 2019-02-11 00:00:58 +00:00
jesopo
63dc5009f7 Actually return str object from IRCLine.__str__ 2019-02-10 23:57:38 +00:00
jesopo
d087143a5d Iterate through bot.servers.values(), not .keys() (admin.py) 2019-02-10 23:54:31 +00:00
jesopo
fadd21c6d9 Add !shutdown (admin.py) 2019-02-10 23:53:33 +00:00
jesopo
1d48f6f19d Add _char_limit return type hint, fix decoded_data return type hint
(src/IRCLine.py)
2019-02-10 23:52:25 +00:00
jesopo
ecb197858e Import IRCServer in IRCLine so type hint comment is valid (src/IRCLine.py) 2019-02-10 23:51:28 +00:00
jesopo
f8e6a55ada Add a comment as to why IRCLine's LINE_CUTOFF is 470, not 510 2019-02-10 22:52:23 +00:00
jesopo
fc5ade7112 Change LINE_CUTOFF to 470, now that we compute max char counts (src/IRCLine.py) 2019-02-10 20:54:12 +00:00
jesopo
bb4ec082dd Let IRCLine.Line handle truncating command output 2019-02-10 20:49:59 +00:00
jesopo
abf5679b68 Parse sent data in IRCServer._send, not IRCServer.send 2019-02-10 20:49:03 +00:00
jesopo
89f035fdcf Add IRCServer.hostmask() to construct our nick!user@host hostmask 2019-02-10 20:44:29 +00:00
jesopo
a3b9be3d3d Shift encoding/truncating IRC lines to src/IRCLine.py 2019-02-10 18:43:04 +00:00