<html><head><style type='text/css'>p { margin: 0; }</style></head><body><div style='font-family: Verdana; font-size: 10pt; color: #000000'><div><span style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;">This part is wrong</span></div><div><span style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;">-------------------------</span></div><div><span style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;"><br></span></div><div><span style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;"><br></span></div><div><span style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;">--- a/PVE/API2/Qemu.pm</span><br style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;"><span style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;">+++ b/PVE/API2/Qemu.pm</span><br style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;"><span style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;">@@ -1354,6 +1354,16 @@ __PACKAGE__->register_method({</span><br style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;"><span style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;">         properties => {</span><br style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;"><span style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;">             node => get_standard_option('pve-node'),</span><br style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;"><span style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;">             vmid => get_standard_option('pve-vmid'),</span><br style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;"><span style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;">+            unsecure => {</span><br style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;"><span style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;">+                optional => 1,</span><br style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;"><span style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;">+                type => 'boolean',</span><br style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;"><span style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;">+                description => "disables x509 auth",</span><br style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;"><span style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;">+            },</span><br style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;"><span style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;">+            websocket => {</span><br style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;"><span style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;">+                optional => 1,</span><br style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;"><span style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;">+                type => 'boolean',</span><br style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;"><span style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;">+                description => "starts websockify instead of vncproxy",</span><br style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;"><span style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;">+            },</span><br style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;"><span style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;">         },</span><br style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;"><span style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;">     },</span></div><div><span style="font-family: Helvetica, Arial, sans-serif; font-size: 16px;"><br></span></div><div><font face="Verdana" size="2"><br></font></div><div><font face="Verdana" size="2">It's apply on wrong method (</font><span style="font-family: Verdana; font-size: small;">vmcmdidx).</span></div><div><br></div><div><font face="Verdana" size="2"><br></font></div><div><font face="Verdana" size="2">__PACKAGE__->register_method({</font></div><div><font face="Verdana" size="2">    name => 'vmcmdidx',</font></div><div><font face="Verdana" size="2">    path => '{vmid}/status',</font></div><div><font face="Verdana" size="2">    method => 'GET',</font></div><div><font face="Verdana" size="2">    proxyto => 'node',</font></div><div><font face="Verdana" size="2">    description => "Directory index",</font></div><div><font face="Verdana" size="2">    permissions => {</font></div><div><font face="Verdana" size="2">        user => 'all',</font></div><div><font face="Verdana" size="2">    },</font></div><div><font face="Verdana" size="2">    parameters => {</font></div><div><font face="Verdana" size="2">        additionalProperties => 0,</font></div><div><font face="Verdana" size="2">        properties => {</font></div><div><font face="Verdana" size="2">            node => get_standard_option('pve-node'),</font></div><div><font face="Verdana" size="2">            vmid => get_standard_option('pve-vmid'),</font></div><div><font face="Verdana" size="2">            unsecure => {</font></div><div><font face="Verdana" size="2">                optional => 1,</font></div><div><font face="Verdana" size="2">                type => 'boolean',</font></div><div><font face="Verdana" size="2">                description => "disables x509 auth",</font></div><div><font face="Verdana" size="2">            },</font></div><div><font face="Verdana" size="2">            websocket => {</font></div><div><font face="Verdana" size="2">                optional => 1,</font></div><div><font face="Verdana" size="2">                type => 'boolean',</font></div><div><font face="Verdana" size="2">                description => "starts websockify instead of vncproxy",</font></div><div><font face="Verdana" size="2">            },</font></div><div><font face="Verdana" size="2">        },</font></div><div><font face="Verdana" size="2">    },</font></div><div style="color: rgb(0, 0, 0); font-family: Verdana; font-size: 10pt;"><br></div><br><div style="color: rgb(0, 0, 0); font-family: Verdana; font-size: 10pt;"><span name="x"></span><table cellpadding="0" border="0" class="MsoNormalTable" style="font-family: 'Times New Roman';"><tbody><tr><td style="padding: 0cm;"><p><span style="font-family: Calibri, sans-serif; color: rgb(31, 73, 125);"><img width="211" height="150" src="http://www.odiso.com/wp-content/uploads/2014/03/odiso.png"></span></p></td><td width="100%" style="width: 1679px; padding: 0cm 0cm 0cm 6pt;"><table cellspacing="4" cellpadding="0" border="0" class="MsoNormalTable"><tbody><tr><td style="padding: 3pt;"><p><b><span style="font-size: 12.5pt; font-family: Calibri, sans-serif; color: rgb(56, 139, 198);">Alexandre</span></b> <b><span style="font-size: 12.5pt; font-family: Calibri, sans-serif; color: rgb(66, 66, 66);">Derumier</span></b> <span style="font-family: Calibri, sans-serif; color: rgb(31, 73, 125);"><br></span><b><span style="font-size: 8pt; font-family: Calibri, sans-serif; color: rgb(66, 66, 66);">Ingénieur système et stockage</span></b></p></td></tr><tr><td style="padding: 3pt;"><p><b><span style="font-size: 8pt; font-family: Calibri, sans-serif; color: rgb(66, 66, 66);">Fixe :</span></b> <span style="font-size: 8pt; font-family: Calibri, sans-serif; color: rgb(99, 100, 102); text-align: right;">03 20 68 90 88</span> <span style="font-family: Calibri, sans-serif; color: rgb(31, 73, 125);"><br></span><b><span style="font-size: 8pt; font-family: Calibri, sans-serif; color: rgb(66, 66, 66);">Fax :</span></b> <span style="font-size: 8pt; font-family: Calibri, sans-serif; color: rgb(99, 100, 102); text-align: right;">03 20 68 90 81</span></p></td></tr><tr><td style="padding: 3pt;"><p><span style="font-size: 7.5pt; font-family: Calibri, sans-serif; color: gray;">45 Bvd du Général Leclerc 59100 Roubaix</span> <span style="font-family: Calibri, sans-serif; color: rgb(31, 73, 125);"><br></span><span style="font-size: 7.5pt; font-family: Calibri, sans-serif; color: gray;">12 rue Marivaux 75002 Paris</span></p></td></tr><tr><td style="padding: 3pt; line-height: 20px;"><a target="_blank" href="https://twitter.com/OdisoHosting"><img src="http://www.odiso.com/wp-content/uploads/2014/03/Twitter.png"></a> <a target="_blank" href="https://twitter.com/mindbaz"><img src="http://www.odiso.com/wp-content/uploads/2014/03/Twitter.png"></a> <a target="_blank" href="https://www.linkedin.com/company/odiso"><img src="http://www.odiso.com/wp-content/uploads/2014/03/Linkedin.png"></a> <a target="_blank" href="http://www.viadeo.com/fr/company/odiso"><img src="http://www.odiso.com/wp-content/uploads/2014/03/Viadeo.png"></a> <a target="_blank" href="https://www.facebook.com/monsiteestlent"><img src="http://www.odiso.com/wp-content/uploads/2014/03/Facebook.png"></a></td></tr></tbody></table></td></tr></tbody></table><table style="font-family: 'Times New Roman';"><tbody><tr><td><p style="font-style: italic;"><a href="http://www.monsiteestlent.com/" style="text-decoration: none;"><font color="#388bc6">MonSiteEstLent.com</font></a> - Blog dédié à la webperformance et la gestion de pics de trafic</p></td></tr></tbody></table><span name="x"></span><br></div><hr id="zwchr" style="color: rgb(0, 0, 0); font-family: Verdana; font-size: 10pt;"><div style="color: rgb(0, 0, 0); font-family: Helvetica, Arial, sans-serif; font-size: 12pt; font-weight: normal; font-style: normal; text-decoration: none;"><b>De: </b>"Stefan Priebe" <s.priebe@profihost.ag><br><b>À: </b>pve-devel@pve.proxmox.com<br><b>Envoyé: </b>Lundi 2 Juin 2014 09:44:33<br><b>Objet: </b>[pve-devel] [PATCH] API2/Qemu: add unsecure and websocket options        to vncpoxy also set qemu vnc server properties on the fly<br><br><br>Signed-off-by: Stefan Priebe <s.priebe@profihost.ag><br>---<br> PVE/API2/Qemu.pm |   38 +++++++++++++++++++++++++++++++++-----<br> 1 file changed, 33 insertions(+), 5 deletions(-)<br><br>diff --git a/PVE/API2/Qemu.pm b/PVE/API2/Qemu.pm<br>index e3aa24a..01de65b 100644<br>--- a/PVE/API2/Qemu.pm<br>+++ b/PVE/API2/Qemu.pm<br>@@ -1354,6 +1354,16 @@ __PACKAGE__->register_method({<br>         properties => {<br>             node => get_standard_option('pve-node'),<br>             vmid => get_standard_option('pve-vmid'),<br>+            unsecure => {<br>+                optional => 1,<br>+                type => 'boolean',<br>+                description => "disables x509 auth",<br>+            },<br>+            websocket => {<br>+                optional => 1,<br>+                type => 'boolean',<br>+                description => "starts websockify instead of vncproxy",<br>+            },<br>         },<br>     },<br>     returns => {<br>@@ -1375,6 +1385,8 @@ __PACKAGE__->register_method({<br> <br>         my $vmid = $param->{vmid};<br>         my $node = $param->{node};<br>+        my $unsecure = $param->{unsecure} // 0;<br>+        my $websocket = $param->{websocket} // 0;<br> <br>         my $conf = PVE::QemuServer::load_config($vmid, $node); # check if VM exists<br> <br>@@ -1392,7 +1404,7 @@ __PACKAGE__->register_method({<br> <br>         if ($node ne 'localhost' && $node ne PVE::INotify::nodename()) {<br>             $remip = PVE::Cluster::remote_node_ip($node);<br>-            # NOTE: kvm VNC traffic is already TLS encrypted<br>+            # NOTE: kvm VNC traffic is already TLS encrypted or is known unsecure<br>             $remcmd = ['/usr/bin/ssh', '-T', '-o', 'BatchMode=yes', $remip];<br>         }<br> <br>@@ -1407,6 +1419,8 @@ __PACKAGE__->register_method({<br> <br>             if ($conf->{vga} && ($conf->{vga} =~ m/^serial\d+$/)) {<br> <br>+                die "Unsecure mode is not supported in vga serial mode!" if $unsecure;<br>+<br>                 my $termcmd = [ '/usr/sbin/qm', 'terminal', $vmid, '-iface', $conf->{vga} ];<br>                 #my $termcmd = "/usr/bin/qm terminal -iface $conf->{vga}";<br>                 $cmd = ['/usr/bin/vncterm', '-rfbport', $port,<br>@@ -1414,12 +1428,26 @@ __PACKAGE__->register_method({<br>                         '-perm', 'Sys.Console', '-c', @$remcmd, @$termcmd];<br>             } else {<br> <br>-                my $qmcmd = [@$remcmd, "/usr/sbin/qm", 'vncproxy', $vmid];<br>+                my $vnc_socket = PVE::QemuServer::vnc_socket($vmid);<br> <br>-                my $qmstr = join(' ', @$qmcmd);<br>+                if ($unsecure) {<br>+                    PVE::QemuServer::vm_mon_cmd($vmid, "change", device => 'vnc', target => "unix:$vnc_socket,password");<br>+                    PVE::QemuServer::vm_mon_cmd($vmid, "set_password", protocol => 'vnc', password => $ticket);<br>+                    PVE::QemuServer::vm_mon_cmd($vmid, "expire_password", protocol => 'vnc', time => "+30");<br>+                } else {<br>+                    PVE::QemuServer::vm_mon_cmd($vmid, "change", device => 'vnc', target => "unix:$vnc_socket,x509,password");<br>+                }<br>+<br>+                if ($websocket) {<br>+                    $cmd = ["/usr/share/novnc/utils/wsproxy.py", '--run-once', '--timeout=90', '--idle-timeout=90', '--ssl-only', '--cert', '/etc/pve/local/pve-ssl.pem', '--key', '/etc/pve/local/pve-ssl.key', "--unix-target=$vnc_socket", $port];<br>+                } else {<br>+                    my $qmcmd = [@$remcmd, "/usr/sbin/qm", 'vncproxy', $vmid];<br>+<br>+                    my $qmstr = join(' ', @$qmcmd);<br> <br>-                # also redirect stderr (else we get RFB protocol errors)<br>-                $cmd = ['/bin/nc', '-l', '-p', $port, '-w', $timeout, '-c', "$qmstr 2>/dev/null"];<br>+                    # also redirect stderr (else we get RFB protocol errors)<br>+                    $cmd = ['/bin/nc', '-l', '-p', $port, '-w', $timeout, '-c', "$qmstr 2>/dev/null"];<br>+                }<br>             }<br> <br>             PVE::Tools::run_command($cmd);<br>-- <br>1.7.10.4<br><br>_______________________________________________<br>pve-devel mailing list<br>pve-devel@pve.proxmox.com<br>http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel<br></div><br></div></body></html>