Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions lib/Ravada/Domain.pm
Original file line number Diff line number Diff line change
Expand Up @@ -6657,9 +6657,9 @@ sub _add_hardware_display($orig, $self, $index, $data) {
$sth->execute($self->id, $data->{port});
my ($exposed) = $sth->fetchrow;

confess "Error: ".$self->name."[".$self->id."] display $data->{driver} can not be used because port $data->{port} "
." is already exported. Remove it from hardware / ports\n"
if $exposed;
if ( $exposed ) {
$self->remove_expose($data->{port});
}
Comment on lines +6660 to +6662
Comment on lines +6660 to +6662

my $public_port = $self->expose( port => $data->{port}
, name => $data->{driver}
Expand Down
9 changes: 5 additions & 4 deletions script/rvd_front
Original file line number Diff line number Diff line change
Expand Up @@ -4672,10 +4672,11 @@ sub shutdown_machine {
my $id_req;
if ($domain) {
my $req;
$req = Ravada::Request->force_shutdown_domain(id_domain => $domain->id, uid => $USER->id)
if ($c->param('force') && $c->param('force') eq 'true');
$req = Ravada::Request->shutdown_domain(id_domain => $domain->id, uid => $USER->id)
unless ($c->param('force') eq 'true');
if ($c->param('force') && $c->param('force') eq 'true') {
$req = Ravada::Request->force_shutdown_domain(id_domain => $domain->id, uid => $USER->id)
} else {
$req = Ravada::Request->shutdown_domain(id_domain => $domain->id, uid => $USER->id)
}
$id_req = $req->id if $req;
}
return $c->redirect_to('/machines') if $type eq 'html';
Expand Down
17 changes: 0 additions & 17 deletions t/vm/20_base.t
Original file line number Diff line number Diff line change
Expand Up @@ -1537,21 +1537,6 @@ sub test_display_drivers($vm, $remove) {
$domain->remove(user_admin);
}

sub test_display_port_already_used($vm) {
my $domain = create_domain($vm);
$domain->expose( port => 22 );
my $req = Ravada::Request->add_hardware(
uid => user_admin->id
,name => 'display'
,data => { driver => 'x2go' }
,id_domain =>$domain->id
);
wait_request(check_error => 0);
is($req->status,'done');
like($req->error,qr'already');
$domain->remove(user_admin);
}

sub test_display_conflict_non_builtin($vm) {
my $base= $BASE->clone(name => new_domain_name, user => user_admin);
my $req = Ravada::Request->add_hardware(
Expand Down Expand Up @@ -1917,8 +1902,6 @@ for my $vm_name ( vm_names() ) {

test_display_info($vm);

test_display_port_already_used($vm);

test_remove_display($vm);

test_display_drivers($vm,0);
Expand Down
26 changes: 26 additions & 0 deletions t/vm/23_display.t
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,31 @@ my $DISPLAY_IP = '99.1.99.1';
my $BASE;

########################################################################
sub test_display_overwrite($vm) {
diag("Test display overwrite");
my $domain = $BASE->clone(name => new_domain_name, user => user_admin);
Ravada::Request->expose( uid => user_admin->id
, id_domain => $domain->id
, port => 3389
, restricted => 0
, name => 'old'
);
wait_request();

Ravada::Request->add_hardware(
uid => user_admin->id
,id_domain => $domain->id
,name => 'display'
,data => { driver => 'rdp'}
);
wait_request();

my $port = $domain->exposed_port(3389);
is($port->{restricted},1);
is($port->{name}, 'rdp');

remove_domain($domain);
}

sub test_display_conflict($vm) {
diag("Test display conflict");
Expand Down Expand Up @@ -231,6 +256,7 @@ for my $db ( 'mysql', 'sqlite' ) {
}
flush_rules() if !$<;

test_display_overwrite($vm);
test_display_conflict($vm);
}
}
Expand Down
5 changes: 5 additions & 0 deletions templates/main/manage_machine_new_display.html.ep
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,10 @@
ng-options="driver for driver in showmachine.drivers['display']">
</select>
</div>
<div class="col-lg-6" ng-show="showmachine.ports.length">
<b><%=l 'Warning' %></b>
<%=l 'There are already ports exported.' %>
<%=l 'They may be overwritten on creating some displays.' %>
</div>
</div>
</div>
Loading