{ name => 'time' },
{ name => 'status' },
{ name => 'subscription' },
- { name => 'vncshell' },
+ { name => 'termproxy' },
{ name => 'rrddata' },
];
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 => {
optional => 1,
default => 0,
},
- websocket => {
- optional => 1,
- type => 'boolean',
- description => "use websocket instead of standard vnc.",
- default => 1,
- },
},
},
returns => {
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();
$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);
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) = @_;
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} = {
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;
}
};
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";