From 6e30b52dd4114aa6128e70b32b3fad778c6354e6 Mon Sep 17 00:00:00 2001 From: Alexandre Derumier Date: Fri, 21 Jun 2013 10:33:21 +0200 Subject: [PATCH] rest : handle application/x-spice-configuration response format Signed-off-by: Alexandre Derumier --- PVE/HTTPServer.pm | 2 +- PVE/REST.pm | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/PVE/HTTPServer.pm b/PVE/HTTPServer.pm index 0ba99f76..3ed5ae26 100755 --- a/PVE/HTTPServer.pm +++ b/PVE/HTTPServer.pm @@ -46,7 +46,7 @@ my $baseuri = "/api2"; sub split_abs_uri { my ($abs_uri) = @_; - my ($format, $rel_uri) = $abs_uri =~ m/^\Q$baseuri\E\/+(html|text|json|extjs|png|htmljs)(\/.*)?$/; + my ($format, $rel_uri) = $abs_uri =~ m/^\Q$baseuri\E\/+(html|text|json|extjs|png|htmljs|spiceconfig)(\/.*)?$/; $rel_uri = '/' if !$rel_uri; return wantarray ? ($rel_uri, $format) : $rel_uri; diff --git a/PVE/REST.pm b/PVE/REST.pm index d59f88d0..9dafaf59 100644 --- a/PVE/REST.pm +++ b/PVE/REST.pm @@ -111,6 +111,17 @@ sub format_response_data { # we use this for extjs file upload forms $ct = 'text/html;charset=UTF-8'; $raw = encode_entities(to_json($data, {allow_nonref => 1})); + } elsif ($format eq 'spiceconfig') { + $ct = 'application/x-spice-configuration;charset=UTF-8'; + if ($data && ref($data) && ref($data->{data})) { + $raw = "[virt-viewer]\n"; + $raw .= "title=$data->{data}->{title}\n" if $data->{data}->{title}; + $raw .= "type=$data->{data}->{type}\n" if $data->{data}->{type}; + $raw .= "host=$data->{data}->{host}\n" if $data->{data}->{host}; + $raw .= "port=$data->{data}->{port}\n" if $data->{data}->{port}; + $raw .= "password=$data->{data}->{password}\n" if $data->{data}->{password}; + $raw .= "proxy=$data->{data}->{proxy}\n" if $data->{data}->{proxy}; + } } else { $ct = 'text/plain;charset=UTF-8'; $raw = to_json($data, {utf8 => 1, allow_nonref => 1, pretty => 1});