]> git.proxmox.com Git - pmg-api.git/commitdiff
replace novnc with xtermjs
authorDominik Csapak <d.csapak@proxmox.com>
Mon, 11 Dec 2017 13:30:51 +0000 (14:30 +0100)
committerDietmar Maurer <dietmar@proxmox.com>
Mon, 11 Dec 2017 13:47:38 +0000 (14:47 +0100)
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
PMG/API2/APT.pm
PMG/API2/Nodes.pm
PMG/Service/pmgproxy.pm

index 3dbae9be6e5921327e841fbef3cd9fcf62d955ff..4e97bbcad9945e569b569b40d32a027de582c89a 100644 (file)
@@ -511,7 +511,7 @@ __PACKAGE__->register_method({
 
        my @opt_pack = ('zfsutils-linux', 'libpve-apiclient-perl');
 
-       push @list, qw(libpve-http-server-perl lvm2 pve-firmware libpve-common-perl vncterm pmg-docs novnc-pve libarchive-perl libxdgmime-perl );
+       push @list, qw(libpve-http-server-perl lvm2 pve-firmware libpve-common-perl vncterm pmg-docs pve-xtermjs libarchive-perl libxdgmime-perl );
 
        @list = (@list, @opt_pack);
        my $pkglist = [];
index 22440295c71a9a2d63fa668a73b5eaa6666dec1f..d5283a8ba1ad295d451c4ad5e5d6c809a202c68e 100644 (file)
@@ -114,7 +114,7 @@ __PACKAGE__->register_method ({
            { name => 'time' },
            { name => 'status' },
            { name => 'subscription' },
-           { name => 'vncshell' },
+           { name => 'termproxy' },
            { name => 'rrddata' },
        ];
 
@@ -237,12 +237,13 @@ __PACKAGE__->register_method({
        return $lines;
     }});
 
+
 __PACKAGE__->register_method ({
-    name => 'vncshell',
-    path => 'vncshell',
+    name => 'termproxy',
+    path => 'termproxy',
     method => 'POST',
     protected => 1,
-    description => "Creates a VNC Shell proxy.",
+    description => "Creates a Terminal proxy.",
     parameters => {
        additionalProperties => 0,
        properties => {
@@ -253,12 +254,6 @@ __PACKAGE__->register_method ({
                optional => 1,
                default => 0,
            },
-           websocket => {
-               optional => 1,
-               type => 'boolean',
-               description => "use websocket instead of standard vnc.",
-               default => 1,
-           },
        },
     },
     returns => {
@@ -276,13 +271,9 @@ __PACKAGE__->register_method ({
        my $node = $param->{node};
 
        if ($node ne PVE::INotify::nodename()) {
-           die "vncproxy to remote node not implemented";
+           die "termproxy to remote node not implemented";
        }
 
-       # we only implement the websocket based VNC here
-       my $websocket = $param->{websocket} // 1;
-       die "standard VNC not implemented" if !$websocket;
-
        my $authpath = "/nodes/$node";
 
        my $restenv = PMG::RESTEnvironment->get();
@@ -309,37 +300,23 @@ __PACKAGE__->register_method ({
            $shcmd = [ '/bin/login' ];
        }
 
-       my $cmd = ['/usr/bin/vncterm', '-rfbport', $port,
-                  '-timeout', 10, '-notls', '-listen', 'localhost',
-                  '-c', @$shcmd];
+       my $cmd = ['/usr/bin/termproxy', $port, '--path', $authpath,
+                  '--', @$shcmd];
 
        my $realcmd = sub {
            my $upid = shift;
 
-           syslog ('info', "starting vnc proxy $upid\n");
+           syslog ('info', "starting termproxy $upid\n");
 
            my $cmdstr = join (' ', @$cmd);
            syslog ('info', "launch command: $cmdstr");
 
-           eval {
-               foreach my $k (keys %ENV) {
-                   next if $k eq 'PATH' || $k eq 'TERM' || $k eq 'USER' || $k eq 'HOME';
-                   delete $ENV{$k};
-               }
-               $ENV{PWD} = '/';
-
-               $ENV{PVE_VNC_TICKET} = $ticket; # pass ticket to vncterm
-
-               PVE::Tools::run_command($cmd, errmsg => "vncterm failed");
-           };
-           if (my $err = $@) {
-               syslog('err', $err);
-           }
+           PVE::Tools::run_command($cmd);
 
            return;
        };
 
-       my $upid = $restenv->fork_worker('vncshell', "", $user, $realcmd);
+       my $upid = $restenv->fork_worker('termproxy', "", $user, $realcmd);
 
        PVE::Tools::wait_for_vnc_port($port);
 
index 36b30f0aaf97da8977919eadcc12a1b19c314674..19ab7dae0be1ae3a149b4ac96a8be598a8838eaf 100755 (executable)
@@ -47,7 +47,7 @@ sub add_dirs {
 
 my $gui_base_dir = "/usr/share/javascript/pmg-gui";
 my $fontawesome_dir = "/usr/share/fonts-font-awesome";
-my $novnc_dir = '/usr/share/novnc-pve';
+my $xtermjs_dir = '/usr/share/pve-xtermjs';
 
 sub init {
     my ($self) = @_;
@@ -69,7 +69,7 @@ sub init {
     add_dirs($dirs, '/pve2/js/' => "$gui_base_dir/js/");
     add_dirs($dirs, '/fontawesome/css/' => "$fontawesome_dir/css/");
     add_dirs($dirs, '/fontawesome/fonts/' => "$fontawesome_dir/fonts/");
-    add_dirs($dirs, '/novnc/' => "$novnc_dir/");
+    add_dirs($dirs, '/xtermjs/' => "$xtermjs_dir/");
     add_dirs($dirs, '/pmg-docs/' => '/usr/share/pmg-docs/');
 
     $self->{server_config} = {
@@ -136,7 +136,7 @@ sub get_template_toolkit {
     return $template_toolkit if $template_toolkit;
 
     $template_toolkit = Template->new(
-       { INCLUDE_PATH => [$gui_base_dir, $novnc_dir]});
+       { INCLUDE_PATH => [$gui_base_dir, $xtermjs_dir]});
 
     return $template_toolkit;
 }
@@ -192,7 +192,7 @@ sub get_index {
     };
 
     my $template_name;
-    if (defined($args->{console}) && $args->{novnc}) {
+    if (defined($args->{console}) && $args->{xtermjs}) {
        $template_name = "index.html.tpl"; # fixme: use better name
     } else {
        $template_name = "pmg-index.html.tt";