Commit Graph

32 Commits

Author SHA1 Message Date
Dietmar Maurer
ed8d2557ae websocket: set $max_payload_size = 128*1024; (131072)
AnyEvent checks rbuf_max after calling the callback (too late), so
we can receive larger data, because AnyEvent uses MAX_READ_SIZE=131072
to fill the buffer.

So a more elegant solution is to set $max_payload_size=128*1024. At least
I am not able to receive rbuf larger than 128*1024 now. But I keep the
protection from the previous patch - just to be sure.
2018-06-07 10:08:59 +02:00
Dietmar Maurer
cdb6932787 limit websocket frame size
AnyEvent checks rbuf_max after calling the callback (too late), so
we can receive larger data.
2018-06-06 16:41:30 +02:00
René Jochum
ed979f7a2c Fix #1684 WebSocket proxy behind a buffered proxy.
The given patch fixes incoming WebSocket traffic behind buffered Proxies
like NGINX.

NGINX buffers multiple requests from the Browser into one frame and sends that to pveproxy,
before this patch we then processed the first message of the frame and cleared the buffer which
may contained more messages.
With this patch we process each message and clear the buffer right.

This fixes the "NoVNC blank screen" problem users reported on the forums.
2018-05-28 10:27:08 +02:00
Thomas Lamprecht
d8327719e3 auth_handler: respond with passed error if we get a PVE::Exception
Allows to fix a problem where a logged in connected client was logged
out because we could not verify him for this call as the cluster
filesystem was unavailable.

If we get such a exception then use it for responding.
THis is save as no logged out client can get ever do anything where
login privileges are required and a logged in client cannot to
anything during the problematic period, but does not gets logged out.
Partail fix for #1589

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2017-12-11 14:53:24 +01:00
Wolfgang Bumiller
b1e84aa34d whitespace fixup
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2017-11-24 09:25:55 +01:00
Dominik Csapak
ae5e0a954b add 'map' filetype to http-server
those files are used for javascript source maps
(useful for debugging purposes)

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2017-11-24 09:19:21 +01:00
Dominik Csapak
e3b29cc9da do not send websocket status code to port
this is not data, but the status code,
so print it in debug mode instead

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2017-11-24 09:19:21 +01:00
Dietmar Maurer
80d61dd6bb add content type application/x-compressed-tar 2017-11-09 07:17:49 +01:00
Dietmar Maurer
20a61215ce allow API calls to download file contents.
We use this to download backup files with pmg.
2017-11-08 09:23:30 +01:00
Dietmar Maurer
66a7a3a38d pass $format to rest_handler()
Used by PMG::HTTPServer.
2017-08-10 08:47:32 +02:00
Dominik Csapak
3d12de14cc add json/mp3/oga/svg filetypes
those are needed for the noVNC upgrade

svg: button images
mp3/oga: bell sound of terminal
json: language files

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2017-05-24 13:10:39 +02:00
Thomas Lamprecht
967dcb7682 increase max POST data limit to 64 KB
this matches also our wbuf_max settings of our AnyEvent handle

Tested with 1000 parallel started dummy POST request with 64KB
payload, wh

It should not be too problematic to increase the limit

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2017-05-24 11:28:22 +02:00
Dietmar Maurer
256da58194 assume all parameters are utf8 encoded
Previously, we called decode_utf8_parameters(), which only encoded
some parameters. This was just an optimization, and it turend out to
be error prone (for example passwords also contain utf8 parameters).
2017-05-02 11:54:29 +02:00
Dietmar Maurer
2fd728c93b avoid locale specific time stamps 2017-04-24 07:39:27 +02:00
Fabian Grünbichler
10f9a4b775 fix #1332: allow ECDHE with all supported curves
with openssl 1.0.1, we had to limit ourself to one curve to
allow ECDHE at all.

with openssl 1.1.x, the same limit actually means only
allowing ECDSA certificates using that curve, even for
non-ephemeral ECDH handshakes, effectively only allowing
prime256 EC certificates.

since openssl 1.1.x supports auto-negotiation of the curve
used for ECDHE, simply use that for now.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2017-04-03 15:05:40 +02:00
Dietmar Maurer
666d3ae1d1 cleanup error message for non-existent files 2017-03-03 06:32:25 +01:00
Dietmar Maurer
8d88baec13 call Net::SSLeay::ERR_clear_error after all handlers
just to be sure.
2017-01-21 11:55:18 +01:00
Dietmar Maurer
6389088689 call Net::SSLeay::ERR_clear_error() after auth_handler
Some auth_handlers use Crypt::OpenSSL::RSA, which seems to set the openssl error
variable. We need to clear that here, else AnyEvent::TLS aborts the connection.
2017-01-20 18:17:13 +01:00
Dietmar Maurer
133e058609 avoid warnings when clients disconnects early 2017-01-20 11:22:40 +01:00
Dietmar Maurer
555a5ab311 improve error message 2017-01-16 11:45:36 +01:00
Dietmar Maurer
ca304f91ce pass basic server configuration to formatter functions 2017-01-15 11:55:52 +01:00
Dietmar Maurer
c5f0a96ffd add some inline docs 2017-01-15 10:54:26 +01:00
Dietmar Maurer
af76fd782d remove base_handler_class from required arguments 2017-01-15 09:25:24 +01:00
Dietmar Maurer
58ddb769fb remove all references to rpcenv (we can do this in the subclass). 2017-01-15 08:34:46 +01:00
Dietmar Maurer
fc87cd5ec3 pass $title to formatter functions 2017-01-14 16:39:25 +01:00
Dietmar Maurer
6edb39f69b include bootstrap-3.3.7-dist.zip files 2017-01-14 15:36:15 +01:00
Dietmar Maurer
911ede9b12 new helper add_dirs (copied from pveproxy.pm) 2017-01-14 14:26:33 +01:00
Dietmar Maurer
5f14e56e33 white space cleanups 2017-01-14 13:18:27 +01:00
Dietmar Maurer
a3bb607024 add new hook function to generate CSRF token
This avoid the reference to PVE::AccessControl.
2017-01-14 13:16:59 +01:00
Dietmar Maurer
c715437597 rework formatter registration
Do the whole thing inside PVE/APIServer/Formatter.pm
2017-01-14 10:42:33 +01:00
Dietmar Maurer
63307bebd9 add generic formatter framework 2017-01-14 09:53:44 +01:00
Dietmar Maurer
d08808bc8a rename class to PVE::APIServer::AnyEvent
So that we can move all api server related code into PVE::APIServer::*.
2017-01-13 18:18:13 +01:00