Commit Graph

131 Commits (da68de67fabddc7c50350ca78ced8383cc65f926)

Author SHA1 Message Date
Kyle Larose dfea8a1624
handle invalid characeters in encoding
When establishing a connection to an SSH server, WebSSH tries to guess
at its encoding using a command sent prior to opening the terminal.
Unfortunately, sometimes this can return data which does not form proper
input for the `encode` function used by `is_valid_encoding` to test
whether the encoding is known.

In particular, we ran in to a case where the server was returning a
string which had a \0 in it when converted to ascii. That raised a
`ValueError` (as opposed to `LookupError`), which was uncaught.

Handle the `ValueError` case as well, treating it as an unknown encoding
so that we fall back on the default.
2023-03-30 10:52:53 -04:00
Sheng 5ffb1da69b Drop support for Python version below 3.8 2023-02-27 22:13:24 +08:00
Sheng bb2fba30f3 Removed LGPL 2023-01-17 13:23:41 +08:00
Sheng 50fc9908eb Added test_worker_closed 2022-11-21 16:48:49 +08:00
Sheng 9238c01c35 Updated test_failed_weak_ref 2022-11-21 16:39:13 +08:00
Kyle Larose f0e2ddb821
do not process message for closed workers
WsockHandler stores a weak reference to the ssh backend worker. The
worker closes itself if the backend connection closes (e.g. the user
exists the ssh session). That happens in parallel to the websocket
handler processing messages, so it is possible for a message to arrive
when the worker no longer has any strong references, leading to an
exception being thrown.

Handle this case by treating the None worker the same way we do invalid
messages: by simply returning.
2022-11-18 08:55:03 -05:00
Sheng d54f5b547a Use options.delay instead of DELAY 2020-10-07 20:29:13 +08:00
Sheng 83f739ca35 Added test for check_encoding_setting 2020-02-13 10:15:29 +08:00
Sheng 8901eb0580 Added class Font 2020-01-23 19:15:39 +08:00
Sheng dcbd4a575a Added fonts directory 2020-01-23 17:25:51 +08:00
Sheng b805605278 Eased custom font configuration 2020-01-23 16:50:14 +08:00
Sheng ccb40d2bed Support openssh new format key 2019-12-11 09:32:42 +08:00
Sheng d5d654407f Refactoring 2019-10-09 11:46:47 +08:00
Sheng fc30ead69e Refactoring 2019-10-09 11:40:07 +08:00
Sheng 049baad909 Try to detect the encoding set by the user 2019-10-06 15:18:23 +08:00
Sheng afcf8b52cc Validate the result of locale charmap 2019-10-05 13:18:53 +08:00
Sheng 7f6db649bf Support link scope ipv6 address 2019-09-19 10:55:34 +08:00
khuxkm fbexl b2261367e8 Fix wrong passphrase test 2019-09-06 14:19:24 -04:00
khuxkm fbexl 850dd39f26 Fix test for passphrase 2019-09-06 13:54:24 -04:00
Sheng 0775c0c3ae Refactored handler.py 2019-07-08 15:37:32 +08:00
Sheng d197133c95 Support 2fa 2019-07-07 14:52:43 +08:00
Sheng bec5b605fb Updated tests 2019-07-05 13:15:18 +08:00
Sheng ec545ec463 Refactored PrivateKey 2019-07-04 21:53:39 +08:00
Sheng 2b8b978ca2 Added PrivateKey class 2019-06-27 12:52:19 +08:00
Sheng 786b42da7e Re-raise InvalidValueError for PasswordRequiredException 2019-05-19 20:27:44 +08:00
Sheng 9fbd5d325f Made tests compatible with tornado 4.5.3 2019-02-21 17:32:55 +08:00
Sheng b25fbd7b57 Changed exception error message 2019-02-21 16:12:48 +08:00
Sheng 824e6b9113 Refactored tests 2019-02-13 20:51:12 +08:00
Sheng 8922813142 Refactored tests 2019-02-13 11:40:44 +08:00
Sheng d389e32b85 Enhanced tests 2019-02-13 09:30:06 +08:00
Sheng a1c9378048 Support CORS 2019-01-23 21:48:03 +08:00
Sheng 713ae1e8f1 Support cross origin connect 2019-01-19 19:19:45 +08:00
Sheng c35f801235 Support custom origin configuration 2019-01-19 16:46:25 +08:00
Sheng 8a8d741230 Refactored method is_forbidden 2019-01-16 22:58:49 +08:00
Sheng 682ddbf65f Removed function for detecting whether the http(s) server is open to public 2019-01-15 23:02:14 +08:00
Sheng 2e0f06e650 Fixed is_same_primary_domain 2019-01-11 15:02:30 +08:00
Sheng 5c8bd84b95 Added an option for configuring cross-origin websocket level 2019-01-10 22:09:32 +08:00
Sheng 2653a3e35a Added function for limiting connections for every client(ip) 2018-12-29 16:16:06 +08:00
Sheng 699b37d7a1 Updated test_app.py 2018-11-16 11:42:25 +08:00
Sheng 32f303474e Updated test_app.py 2018-11-15 20:23:42 +08:00
Sheng 646621279b Updated test_policy.py 2018-11-15 19:49:45 +08:00
Sheng 4525f50b11 Added test_main.py to tests 2018-10-23 22:56:18 +08:00
Sheng d0542e72c6 Fixed test_get_redirect_url 2018-10-21 14:45:58 +08:00
Sheng 8e4039a24a Support redirecting http to https 2018-10-21 14:07:44 +08:00
Sheng 40cf1095ff Use open_to_public to store the status of the http(s) server 2018-10-20 17:54:12 +08:00
Sheng e31e9be433 Updated get_trusted_downstream 2018-10-20 15:30:11 +08:00
Sheng 1f835f5a70 Refactored handler.py 2018-10-19 18:18:55 +08:00
Sheng 68468585ee Added a command line option xheaders 2018-10-18 20:25:30 +08:00
Sheng a8a444d7ed Always reset fbidhttp to False if not open to public 2018-10-18 18:17:42 +08:00
Sheng 5d6f92e529 Move some config variables to handler.py 2018-10-18 15:07:45 +08:00