Commit Graph

179 Commits

Author SHA1 Message Date
jesopo fedef3ba3d also catch sts outside of connection reg, throw up Disconnect to be sure 2020-04-20 16:21:29 +01:00
jesopo 3208ee738c don't catch and "handle" server disconnect. throw up to bot.py 2020-04-20 12:04:01 +01:00
jesopo feb71d5b14 STS transmuting doesn't need the context of a server object 2020-04-19 23:19:23 +01:00
jesopo 899d6f69d8 server_hostname is only useful for TLS connections 2020-04-19 23:05:21 +01:00
jesopo ae01201d39 support requested disconnects, support STS connection transmutations 2020-04-19 23:04:56 +01:00
jesopo 1bfe06d2ea implement STS policies; we're not parsing them yet though 2020-04-19 21:51:33 +01:00
jesopo c4019e6242 set future on awaited self.send() after we've processed for session state 2020-04-19 13:11:06 +01:00
jesopo 47223c257c remove commented-out proof of concept auto-join stuff 2020-04-19 02:23:00 +01:00
jesopo ebef439e0a grab WHO on JOIN but make sure we only do one at once 2020-04-19 02:19:19 +01:00
jesopo d15e9ee361 `Numeric` doesn't exist anymore 2020-04-19 01:32:55 +01:00
jesopo a187dd2175 SASL auth text should be wrapped at 400 bytes 2020-04-19 00:56:24 +01:00
jesopo a48a0dedd9 add missing Responses import on server.py 2020-04-19 00:56:01 +01:00
jesopo bf68b6cb75 ah oops, the bindhost port was a test value that got committed 2020-04-19 00:55:32 +01:00
jesopo 7232876a75 update ircstates to v0.9.0, use const RPL/ERR vars 2020-04-17 21:06:20 +01:00
jesopo 624ffe2cf8 add py.typed 2020-04-16 14:20:16 +01:00
jesopo 0e2a2bcd00 create a fake echo-message when we have not CAP negotiated echo-message 2020-04-15 21:10:24 +01:00
jesopo b88fa51907 should be checking `self.hostname`, not `self.hostmask` (func pointer!) 2020-04-15 21:10:02 +01:00
jesopo 68054eacd5 support PASS from ConnectionParams 2020-04-13 19:10:02 +01:00
jesopo 8656f63d09 support labeled-response (but don't REQ it yet) 2020-04-13 18:23:05 +01:00
jesopo bd424d11ff Future[Line], not Awaitable[Line] in self._wait_for 2020-04-13 17:32:39 +01:00
jesopo cb3439e674 also match wait_fors that were in progress when a new one was triggered 2020-04-13 17:30:14 +01:00
jesopo 7cb2457136 add util functions to join a channel and whois a user 2020-04-12 13:54:27 +01:00
jesopo d571ad7ff9 self.recv() can return an empty array 2020-04-12 13:53:39 +01:00
jesopo 923809ab43 add async_stagger reference for backported happy eyeballs open_connection 2020-04-11 11:33:53 +01:00
jesopo c4009e1c07 on ERR_SASLFAIL, pop from matches 2020-04-10 21:37:26 +01:00
jesopo 3700ba4ab6 on RPL_SASLMECHS, we should still wait_for the ERR_SASLFAIL after it 2020-04-10 21:36:17 +01:00
jesopo 5da82e7d66 check for PLAIN should use `match[0]` not `match` 2020-04-10 21:36:03 +01:00
jesopo a546a468b7 remove premature import for future work 2020-04-09 11:12:02 +01:00
jesopo 85ee8e95e0 WHO ourselves on 001 to get our realname 2020-04-09 11:09:44 +01:00
jesopo 9f832df2f1 allow Numerics() with `params` use NUMERICS list from ircstates 2020-04-09 11:09:15 +01:00
jesopo 179a2ca93a refactor TCP logic in to ITCPTransport (we can mock this for unittests) 2020-04-06 13:22:17 +01:00
jesopo 750fbd8acc comment about why server CAP/USER/NICK send() calls are not awaited 2020-04-05 23:57:02 +01:00
jesopo 730fef38f3 server.send() should be sync and return a Future - no nead for double await 2020-04-05 23:54:57 +01:00
jesopo 899d4821f0 add asyncs.MaybeAwait() - optionally awaitable coroutines 2020-04-05 23:37:54 +01:00
jesopo 84b374f43d FoldString -> ParamFolded 2020-04-05 17:40:22 +01:00
jesopo d837529698 next_line() doesn't need `wait_for` param 2020-04-05 17:22:33 +01:00
jesopo 423623fec1 add a Response subclass just to take RPL_/ERR_ names along with params 2020-04-05 17:16:19 +01:00
jesopo 0829fd9499 refactor and simplify normal reading vs wait_for 2020-04-05 17:11:04 +01:00
jesopo b8ddc6883d oops; add missing return statement from server.send 2020-04-05 13:19:19 +01:00
jesopo 1c7caf9039 use Server.registerd to detect handshake CAP LS; handle non-handshake CAP LS 2020-04-05 13:18:23 +01:00
jesopo 2a9d658207 return Future from `async send()` to *optionally* wait for it to hit the wire 2020-04-05 13:17:53 +01:00
jesopo e470d57780 pass IServer to Response so we can have FoldString (match with casefold rules) 2020-04-05 13:00:13 +01:00
jesopo f70932ac44 move more CAP related stuff to CAPContext 2020-04-05 12:48:29 +01:00
jesopo afe9ec359d update ircstates to 0.8.2 2020-04-05 12:47:19 +01:00
jesopo 404154e6a2 add __repr__ for matching.py objects 2020-04-03 13:05:38 +01:00
jesopo 688418df04 dont tg.spawn() for each message, allow wait_for to read 2020-04-03 13:04:02 +01:00
jesopo 45ac3be550 ssl/ssl_verify -> tls/tls_verify 2020-04-03 09:50:30 +01:00
jesopo 2d93e27feb maybe_sasl() -> sasl_auth(SASLParms) 2020-04-03 09:49:46 +01:00
jesopo 8cc3db5e58 ensure server nonce .startswith() our nonce 2020-04-03 00:07:48 +01:00
jesopo 99d55de170 fix JOIN emit typehint issue (emit.channel may be None) 2020-04-02 23:53:47 +01:00
jesopo b34e4fcc22 `await server.send()` should block until it hits the wire 2020-04-02 23:53:32 +01:00
jesopo 8dde7b7216 codestyle in ircv3.py 2020-04-02 23:07:09 +01:00
jesopo 5b4714ca1e query channel MODEs on-JOIN 2020-04-02 22:57:22 +01:00
jesopo 63fa470a3f add ConnectionParams.ssl_verify 2020-04-02 22:43:34 +01:00
jesopo 331cadfb39 use ConnectionParams.bindhost 2020-04-02 22:39:03 +01:00
jesopo 94c501d4de do `CAP LS 302` (not just `CAP LS`) 2020-04-02 22:38:02 +01:00
jesopo 60e601aa81 implement SASL SCRAM 2020-04-02 22:37:51 +01:00
jesopo a4f5d8045f add numerics.py to translate names, remove Response(errors=) 2020-04-02 20:55:01 +01:00
jesopo 06a4d20fc8 make handshake CAP dance happen in one async task. move to ircv3.py 2020-04-02 20:16:07 +01:00
jesopo 1b3c537e0a only try SASL on CAP NEW when one of the new CAPs is SASL 2020-04-02 18:43:59 +01:00
jesopo 61f1cdba9d don't try SASL twice, try SASL on CAP NEW 2020-04-02 18:38:37 +01:00
jesopo c139879670 add a matching Not() type - to invert other criteria 2020-04-02 18:38:28 +01:00
jesopo d310dad471 add SALContext().from_params() 2020-04-02 18:17:00 +01:00
jesopo 0dd7121469 add some useful imports to ircrobots/__init__.py 2020-04-02 18:16:29 +01:00
jesopo 03c71f6498 remove unneeded imports (thanks importchecker!) 2020-04-02 18:00:28 +01:00
jesopo f43cb75bfa move SASL logic out in to sasl.py.SASLContext 2020-04-02 17:56:44 +01:00
jesopo 023107385e add interface for code units that need an IServer context 2020-04-02 17:55:50 +01:00
jesopo b46cecf420 move ConnectionParams (and SASLParams) out to params.py 2020-04-02 17:55:15 +01:00
jesopo 971f49f4c7 move more sasl-related stuff out to sasl.py 2020-04-02 17:29:52 +01:00
jesopo d19e8d1df7 don't offer Emit logic in Bot, end-users shouldn't care 2020-04-02 17:11:29 +01:00
jesopo 7a1373d9b2 add SASL support! 2020-04-02 17:04:08 +01:00
jesopo 16e500fd43 remove unneeded "from queue import Queue" 2020-04-02 17:01:39 +01:00
jesopo 8148fead51 add Server.wait_for(), so you can await until getting a matching message 2020-04-02 17:00:50 +01:00
jesopo 4f61b89012 add objects needed to denote SASL in ConnectionParams 2020-04-02 16:59:02 +01:00
jesopo 1b9b12cb1e move managing each task of read/written data from to Bot 2020-04-02 00:10:59 +01:00
jesopo 0029506118 server.py visual reorganise, respond to PINGs 2020-04-01 23:40:03 +01:00
jesopo be31fe1936 make a Server interface, interface.IServer 2020-04-01 23:25:44 +01:00
jesopo fd934b1101 fix PriorityQueue, use both Line and Emit, add CAP REQ 2020-04-01 23:06:41 +01:00
jesopo a327d5dd96 first commit 2020-04-01 15:36:53 +01:00