Commit graph

1471 commits

Author SHA1 Message Date
jesopo
d772eaf36e need to .items() a dict to tuple-iterate it (rest_api.py) 2019-02-08 22:53:33 +00:00
jesopo
678e6606ed Abstract away sending response to REST API request (rest_api.py) 2019-02-08 22:04:39 +00:00
jesopo
4a68baa0a6 Return path from _path_data() (rest_api.py) 2019-02-08 21:56:58 +00:00
jesopo
e84f91977c Typo, 'utils.parse' -> 'urllib.parse' (rest_api.py) 2019-02-08 21:55:42 +00:00
jesopo
12591d2357 Remove now not used params on _request() (rest_api.py) 2019-02-08 21:54:33 +00:00
jesopo
c7843a9338 Simplify/refactor REST API request parsing code (rest_api.py) 2019-02-08 21:52:24 +00:00
jesopo
dc0a021231 Show capabilities in API server stats (stats.py) 2019-02-08 17:56:13 +00:00
jesopo
9a0b8f3d00 server_capabilities is a dict, capabilities is a set (line_handler.py) 2019-02-08 17:48:41 +00:00
jesopo
91f78e834e Still REQ CAPs caught from cap.ls command if line_handler.py doesn't request any 2019-02-08 17:32:43 +00:00
jesopo
518f32c4ec Fix 2 misspellings of "capabilities" and fix having not changed a variable name 2019-02-08 17:32:00 +00:00
jesopo
15ab772442 Request CAPs we support when we see them advertised with CAP NEW
(line_handler.py)
2019-02-08 17:30:07 +00:00
jesopo
d3f23eafb8 make !sp and alias of !spotify (spotify.py) 2019-02-08 15:34:04 +00:00
jesopo
d61bb387f7 Show when a check_run is queued (github) 2019-02-07 23:05:29 +00:00
jesopo
a1496e5415 Check that a check_run actually started before it finished (github) 2019-02-07 22:59:50 +00:00
jesopo
03a1f62297 Script travis module in favour of github webhook check_run events 2019-02-07 22:34:54 +00:00
jesopo
fb125081ad Turn seconds in to seconds/minutes/hours/etc (github) 2019-02-07 22:32:48 +00:00
jesopo
ede385aca8 Use check_run event instead of status for CI (github) 2019-02-07 22:30:50 +00:00
Evelyn
ce78bd850a quit: add quote 2019-02-07 18:21:35 +00:00
jesopo
53a819512f Make commit hash LIGHTBLUE in status event (github) 2019-02-07 15:56:30 +00:00
jesopo
58cd6338fd Color/bold status state (github) 2019-02-07 15:49:36 +00:00
jesopo
c401c45a02 typo, "_short_id" -> "_short_hash" (github) 2019-02-07 15:46:07 +00:00
jesopo
f6079d92c8 Remove hanging "or" that i forgot to remove (line_handler.py) 2019-02-07 14:26:36 +00:00
jesopo
172acfd0d5 Tidy up logic to figure out of a NOTICE is a AUTH notice (line_handler.py) 2019-02-07 14:25:56 +00:00
jesopo
f5f5a55e21 Add command to list, add and remove travis webhooks (travis) 2019-02-07 14:05:12 +00:00
jesopo
0bdac094ea Actually accept !ghwebhook list as a command (github) 2019-02-07 14:01:24 +00:00
jesopo
7d25ce44ad Use HTML entity for less-than symbol (sasl README.md) 2019-02-07 13:53:46 +00:00
jesopo
35ad1c7c7b Add SASL README.md 2019-02-07 13:51:08 +00:00
jesopo
a3ca29dabe Show server name when we log a SASL failure (sasl) 2019-02-07 12:23:11 +00:00
jesopo
1485947fcc First commit of travis webhook module 2019-02-07 11:49:42 +00:00
jesopo
90591ec5b4 Change isgd.py to use Exports to offer url shortening, not events 2019-02-07 10:07:11 +00:00
jesopo
d013703705 commit_comment events have commit_id in comment, not in the root data (github) 2019-02-07 07:42:05 +00:00
jesopo
7dd1eca7ae Don't use string concat when we're already using %s formatting (sasl.scram) 2019-02-06 23:04:26 +00:00
jesopo
65766a093a Add more comments, re-seperate out self._ variables and seperate some compound
function calls on to different lines for readability (sasl.scram)
2019-02-06 22:58:16 +00:00
jesopo
c77d8aaac8 Default error to "", _client_first/_salted_password/_auth_message to b""
(sasl.scram)
2019-02-06 22:36:25 +00:00
jesopo
1bac2f67de Add type hints to SCRAM ctor (sasl.scram) 2019-02-06 22:33:30 +00:00
jesopo
50a8de2792 Restrict scram algorithms to IANA Hash Function Textual Names (sasl.scram) 2019-02-06 22:28:50 +00:00
jesopo
4e3e782519 Remove pointless local auth_message variable (sasl.scram) 2019-02-06 22:00:23 +00:00
jesopo
efbbe4c3db Move parsing username, password and algorithm to the only place that uses it and
add comments (sasl.scram)
2019-02-06 21:49:44 +00:00
jesopo
bffd43648d uuid.uuid4() is not random enough for a nonce (sasl.scram) 2019-02-06 21:49:24 +00:00
jesopo
67252833c4 Remove pointless local salted_password variable (sasl.scram) 2019-02-06 21:19:25 +00:00
jesopo
cbdd8d6fc9 Remove pointless local assign of self._password (sasl.scram) 2019-02-06 21:16:55 +00:00
jesopo
90b540d5dc Add type annotations to scram util functions (sasl) 2019-02-06 21:05:20 +00:00
jesopo
bf3986a1be Log a WARN when we get a 904 (failed sasl) 2019-02-06 16:25:43 +00:00
jesopo
16ea48cb54 Assume we'll receive a 904 when SCRAM fails with an e= param (sasl) 2019-02-06 15:50:42 +00:00
jesopo
c006435fa1 Set SCRAM state to just Failure if there's a server-final-message error (sasl) 2019-02-06 15:41:31 +00:00
jesopo
09eb3d3314 Only panic about a scram failure if it's a server-final-message failure (sasl) 2019-02-06 15:38:59 +00:00
jesopo
0e63700761 Only send auth_text if it's not None (sasl) 2019-02-06 15:37:34 +00:00
jesopo
be95514174 auth_text would not be present in a failure scenario 2019-02-06 15:36:59 +00:00
jesopo
cfa590eef7 Handle error on server-final-message (sasl.scram) 2019-02-06 15:28:17 +00:00
jesopo
403466dee3 Remove particularly improper quit quotes, add Hillel the Elder quote (quit.py) 2019-02-06 14:22:27 +00:00
jesopo
3e54542b6a arguments was not defined if they weren't provided (sasl) 2019-02-06 11:22:13 +00:00
jesopo
0004a8a59c Fix mypy linting issue with dict creation (scram.py) 2019-02-06 11:09:45 +00:00
jesopo
a7554b835e "+" as part of a SASL handshake is irc-specific so remove it from scram.py 2019-02-06 11:07:50 +00:00
jesopo
6b4bb7cdba Type annotate scram.py and don't pass base64 data to scram.py functions 2019-02-06 08:50:19 +00:00
jesopo
13083e60a6 Don't take a users coins when they make an invalid roulette bet (coins.py) 2019-02-05 23:00:56 +00:00
jesopo
aa7aa17ec1 Split hash and hmac logic out to their own functions (sasl.scram) 2019-02-05 22:53:55 +00:00
jesopo
5d51a283bb Actually check that we don't have CAPs that we're waiting on a ACK/NAK for
before ending CAP negotiation (line_handler.py)
2019-02-05 22:26:57 +00:00
jesopo
5991e02b0a Manually count ACK/NAK for REQed CAPs before ENDing CAP negotiation 2019-02-05 19:20:02 +00:00
jesopo
ff2d5ef7e7 Disconnect from server and throw an exception if SCRAM server verification fails
(sasl)
2019-02-05 17:04:00 +00:00
jesopo
fd08e23bd4 Move scripts module to it's own directory 2019-02-05 16:56:21 +00:00
jesopo
8e59809db2 CAP capabilities would not be index 2 if the line is multiline
(line_handler.py)
2019-02-05 16:48:12 +00:00
jesopo
b742b1ecee Remove debug print in sasl/__init__.py 2019-02-05 15:58:11 +00:00
jesopo
1fe20a2c98 Move sasl.py to a directory module and move SCRAM logic to a different file,
move `github/module.py` to `github/__init__.py`
2019-02-05 15:54:20 +00:00
jesopo
d4503fdf28 Remove SCRAM-related variables on IRCServer object when we see
server-final-message (sasl.py)
2019-02-05 12:53:19 +00:00
jesopo
d68c73affa Remove SCRAM debug logging (sasl.py) 2019-02-05 12:34:50 +00:00
jesopo
51a4b8ef4e Support SCRAM SASL mechanisms (sasl.py) 2019-02-05 12:17:25 +00:00
jesopo
0344ad6470 Add ")" that should have been removed when we stopped using enumerate for
github webhook hooks (github)
2019-02-04 21:35:31 +00:00
jesopo
ac16887c48 Reply to statusmsg commands (e.g. '/msg +channel !ping') with the same statusmsg 2019-02-04 21:32:44 +00:00
jesopo
e2d60a541c Try to match against full repository name first, so that we can make specific
rules for specific repositories (github)
2019-02-04 10:17:27 +00:00
jesopo
66d2ef2c26 We don't need to enumerate hooks (github) 2019-02-04 10:17:15 +00:00
jesopo
36e838d585 Delete automodes user_channel setting when it's empty (auto_mode.py) 2019-02-04 08:45:48 +00:00
jesopo
d7d707d980 user doesn't exist in _move(), it's user1 (coins.py) 2019-02-02 20:41:08 +00:00
jesopo
1b94a72a65 apikey command should have a minimum argument restriction (rest_api.py) 2019-02-01 12:02:02 +00:00
jesopo
520d8b681f Actually add private_unban function def. oops. (channel_op.py) 2019-01-30 21:07:03 +00:00
jesopo
d2dbb0a249 Add private message unban command (channel_op.py) 2019-01-30 21:06:02 +00:00
jesopo
98e1d4460e Actually use channel arg in _kick_command (channel_op.py) 2019-01-30 21:03:21 +00:00
jesopo
8345ea36d4 Support kick and ban command in private message (channel_op.py) 2019-01-30 21:02:12 +00:00
jesopo
cd93118571 server.get_channel was moved to server.channels.get a long time ago (set.py) 2019-01-30 19:40:20 +00:00
jesopo
a2e23acc61 Logging takes format params as a separate arg (commands.py) 2019-01-30 19:39:03 +00:00
jesopo
72072bbd3d Make sure to call the specific hook we've decided is valid (commands.py) 2019-01-30 19:35:43 +00:00
jesopo
8ac989fa96 check we have a channel_arg kwarg before parsing it as an int
(channel_access.py)
2019-01-30 19:20:11 +00:00
jesopo
0e66921d34 Break when we've found a suitable command hook (commands.py) 2019-01-30 19:15:11 +00:00
jesopo
b0d67e5170 Use correct arg indexes for private channelset (set.py) 2019-01-30 19:07:34 +00:00
jesopo
051e4347f9 Actually remove call to preprocess.command to after min_args check
(commands.py)
2019-01-30 11:41:25 +00:00
jesopo
f25bfd0ae2 Correctly check if we're in a channel command before checking if the current
hook is valid (commands.py)
2019-01-30 11:37:47 +00:00
jesopo
c822a1afd6 Check min_args before we check if a user has permission (commands.py) 2019-01-30 11:37:29 +00:00
jesopo
fc39f8f9fc We need to turn channel_arg in to an int (channel_access.py) 2019-01-30 11:28:38 +00:00
jesopo
fc4a8d8e34 We should be using potential_hook until we've decided on a valid hook
(commands.py)
2019-01-30 11:26:54 +00:00
jesopo
64d12e3415 Get all hooks when checking command hooks, not just the first (commands.py) 2019-01-30 11:23:17 +00:00
jesopo
8a832b7230 Check all hooks for a command and pick the first applicable one, to allow for
private_only and channel_only commands to share the same command string
(commands.py)
2019-01-30 11:20:14 +00:00
jesopo
b197a537f0 Add a private channelset command (set.py) 2019-01-30 11:16:42 +00:00
jesopo
2071a10180 Support a way to check user channel access in a private command
(channel_access.py)
2019-01-30 11:16:34 +00:00
jesopo
bb84fc0291 Add a permission to !channelunset and !channelget (set.py) 2019-01-30 08:10:41 +00:00
jesopo
9491a44295 Correctly compare current time and token expire time and actually cache the
token (spotify.py)
2019-01-29 22:46:00 +00:00
jesopo
d178938463 Typo, {,} instead of {:} made headers a set (spotify.py) 2019-01-29 22:40:44 +00:00
jesopo
a177c5050e URL_SPOTIFY was renamed to URL_SEARCH (spotify.py) 2019-01-29 22:39:58 +00:00
jesopo
74e8ad0351 Forgot to import time (spotify.py) 2019-01-29 22:39:13 +00:00
jesopo
8acc01dd48 post_data is the kwarg for POST data, not data (spotify.py) 2019-01-29 22:38:31 +00:00
jesopo
bb047ec1b7 base64.b64encode(...) takes a byte array, not a string (spotify.py) 2019-01-29 22:37:44 +00:00
jesopo
af7a765547 Forgot to import base64 (spotify.py) 2019-01-29 22:36:54 +00:00
jesopo
2d085e7f91 Spotify now requires access tokens to use it's API (spotify.py) 2019-01-29 22:34:28 +00:00
jesopo
0c319be1e5 Correct usage help for kickban/tempkickban (channel_op.py) 2019-01-29 17:37:14 +00:00
jesopo
5e91f0d209 Remove haveibeenpwned.py, it's 99% useless 2019-01-29 16:01:43 +00:00
jesopo
a501fdea1f Stop processing a command when we've decided the user doesn't have permission
(commands.py)
2019-01-29 15:38:04 +00:00
jesopo
249734ebef We don't have an event object in _has_channel_access (channel_access.py) 2019-01-29 15:35:38 +00:00
jesopo
e0722dfc8a Seperate out access checking logic so we can call across-modules with the event
system to check if users have specific channel access (channel_access.py)
2019-01-29 15:33:55 +00:00
jesopo
7937be5128 Don't double up command prefix in !usage output (commands.py) 2019-01-29 08:36:47 +00:00
jesopo
f97c1f02fd Actually show the command prefix we now pass to _get_usage (commands.py) 2019-01-29 08:33:32 +00:00
jesopo
79ff20b66a Show command prefix in usage strings (commands.py) 2019-01-29 08:32:22 +00:00
jesopo
5d47e7e895 Add a permission to !ghwebhook so an admin user can use it without +o (github) 2019-01-29 08:06:59 +00:00
jesopo
0564a173a3 Typo, 'acess' -> 'access' (channel_access.py) 2019-01-29 07:35:48 +00:00
jesopo
66b2ffee68 Support * as a channel permission, to give users all access
(channel_access.py)
2019-01-29 07:32:25 +00:00
jesopo
5e5a62044c We don't need a seperate command for !channelset override (set.py) 2019-01-29 07:18:03 +00:00
jesopo
08404c4694 Use new utils.consts.PERMISSION_FORCE_SUCCESS in permissions.py 2019-01-29 07:14:53 +00:00
jesopo
f9446a3663 Show an error when an unknown subcommand is given to !access (channel_access.py) 2019-01-29 00:14:33 +00:00
jesopo
10b2ace653 Add require_access to commands on channel_op.py 2019-01-29 00:08:21 +00:00
jesopo
a3a535b195 Delete a user's 'access' channel setting when they have no permissions left
(channel_access.py)
2019-01-29 00:02:56 +00:00
jesopo
1b933e7c00 IRCUser.User objects don't have .id, they have .get_id() (channel_access.py) 2019-01-29 00:00:15 +00:00
jesopo
549332db38 Check a return is truthy before we decide it's an error (command.py) 2019-01-28 23:57:12 +00:00
jesopo
ee1770cc08 Typo, force_success -> force_success = False (commands.py) 2019-01-28 23:52:30 +00:00
jesopo
a94d35f0f1 Add channel_access.py, to give permissions to users in a channel (similar to
chanserv)
2019-01-28 23:50:43 +00:00
jesopo
d10a6d94c1 Add a way to force success and force failure of a command permission check
(commands.py)
2019-01-28 23:29:52 +00:00
jesopo
5e12d87ca3 Use target (after prefixes lstrip) to get channel object (line_handler.py) 2019-01-27 22:43:35 +00:00
jesopo
16337fa16e We need to pass a str to lstrip, not an array (line_handler.py) 2019-01-27 22:40:29 +00:00
jesopo
1301e80621 Strip prefix_symbols from PRIVMSG target, for e.g. 'PRIVMSG +#chan :hi'
(line_handler.py)
2019-01-27 22:38:19 +00:00
jesopo
0bb2491399 The event fired when we get an account-notify message iss
`received.account.login`, not `received.account` (auto_mode.py)
2019-01-27 07:16:41 +00:00
jesopo
1e72c39fda Handle prefix being null when we've received a server notice (line_handler.py) 2019-01-26 19:39:49 +00:00
jesopo
3b17cbacea Set server name by event["prefix"].hoskmask not .nickname, they're the same
thing at the moment when it's not a `nick!user@host` but eventually it might not
be (line_handler.py)
2019-01-26 19:38:14 +00:00
jesopo
0d7b39e7d9 extended-join JOINs have 3 args, not 2 (line_handler.py) 2019-01-26 16:17:34 +00:00
jesopo
6affadd306 Pass category arg to _set_quotes in quote_add (quotes.py) 2019-01-26 16:06:15 +00:00
jesopo
f217c5d192 Quote should be saved with saver and timestamp (quotes.py) 2019-01-26 16:03:40 +00:00
jesopo
eb5c685128 Typo, 'quote' -> 'quotes' (quotes.py) 2019-01-26 16:01:17 +00:00
jesopo
6e4607ea8d _set_quotes needs to be given a category (quotes.py) 2019-01-26 15:57:07 +00:00
jesopo
5b4954a96c add !quotegrab to take the last message from a user and quote it (quotes.py) 2019-01-26 15:55:20 +00:00
jesopo
ed44e6f78b Use .lower() on nickname, as we're using that on s and nickname_lower uses
special irc casemapping (github)
2019-01-26 10:53:28 +00:00
jesopo
506aef6366 Actually use the output of _prevent_highlight (github) 2019-01-26 10:53:14 +00:00
jesopo
2d113011ed Add a setting to insert zero width characters in to highlights (github) 2019-01-26 10:49:31 +00:00
jesopo
e6aad7e070 Don't give event object to webhook functions - they don't need them 2019-01-26 10:33:45 +00:00
jesopo
eb3f4db828 Don't put channel messages as low priority, so we can still catch "bitbot: ++"
(karma.py)
2019-01-25 23:53:53 +00:00
jesopo
f86a852d55 Strip "," and ":" from karma targets (karma.py) 2019-01-25 23:45:44 +00:00
jesopo
3c6827850a Remove users from channels they're kicked from (line_handler.py) 2019-01-25 18:59:00 +00:00
jesopo
45f47bc3fc Prevent users partaking in the lottery if doing so would put their coin total
below the coin redemption amount (coins.py)
2019-01-25 16:04:10 +00:00
jesopo
d75e2452ce Delete nickname_aliases.py as it's been disabled for a very long time due to
bugs
2019-01-25 13:21:44 +00:00
jesopo
335f1545a8 Give StdOut.send the new method param (commands.py) 2019-01-25 07:11:45 +00:00
jesopo
7b3d7f85a6 I totally forgot that we don't need flask. at all. 2019-01-24 19:17:31 +00:00
jesopo
301dd7378a Add irc_lower() and irc_equals() to IRCServer.Server so that no where else
in the code has to know about the server having a casemapping
2019-01-24 17:12:50 +00:00
jesopo
5bfa0d2b50 'self._get_all_user_coins' -> 'self._get_user_coins', forgot to change this when
we moved back away from wallets (coins.py)
2019-01-24 11:27:57 +00:00
jesopo
8ba7cb0396 Move logging API key from INFO to DEBUG (rest_api.py) 2019-01-23 22:23:21 +00:00
jesopo
086629f2dc Logging shouldn't use % string formatting (rest_api.py) 2019-01-23 22:10:32 +00:00
jesopo
6fef7fd0c6 INFO log when we get a HTTP request with an API key (including the key's
comment) (rest_api.py)
2019-01-23 22:08:26 +00:00