#!/usr/bin/perl -I. use strict; use Pos::Webtop::Web::ContentModule; use Pos::Webtop::OcxLauncher; use URI::Escape; package Pos::Webtop::Web::ContentModule::RemoteDesktop; our $timeoutMinutes = 10; our @ISA = qw( Pos::Webtop::Web::ContentModule ); sub new { my $this = shift; my $class = ref($this) || $this; my ($self) = @{{@_}}{qw/self/}; if ( not defined $self ) { $self = {}; bless($self,$class); } # setup base class my %args = @_; $args{'self'} = $self; Pos::Webtop::Web::ContentModule->new( %args ); return $self; } sub canManuallyConnectRemoteDesktop { my $self = shift; my $tb = $self->getToolBox(); my $client = $tb->getClient(); if ( not defined( $self->{'canManuallyConnectRemoteDesktop'} ) ) { my $moduleAccess = $client->getAllowedContentModules(); $self->{'canManuallyConnectRemoteDesktop'} = $moduleAccess->{'RemoteDesktop'}->{'sm_manuallyConnect'}; } return $self->{'canManuallyConnectRemoteDesktop'}; } sub canInstallRemoteDesktop { my $self = shift; my $tb = $self->getToolBox(); my $client = $tb->getClient(); if ( not defined( $self->{'canInstallRemoteDesktop'} ) ) { my $moduleAccess = $client->getAllowedContentModules(); $self->{'canInstallRemoteDesktop'} = $moduleAccess->{'RemoteDesktop'}->{'sm_installAgent'}; } return $self->{'canInstallRemoteDesktop'}; } # (pure virtual defined in Pos::Webtop::Web::ContentModule) sub main { my $self = shift; my $toolBox = $self->getToolBox(); my $client = $toolBox->getClient(); my $cgi = $toolBox->getCgi(); my $db = $toolBox->getWebtopDbReader(); my $ret = undef; my $action = $cgi->param('action'); $client->checkSession(); # if the user was clicked sign off while they were at the Remote Desktop page # this makes sure that if they are not using the activex that they get returned # to the download page instead of the main remote desktop page and stuff (!$client->isWebtopVpnConnectionEstablished(tb=>$toolBox, db=>$db) && !defined($action)) and $action = "newDesktop"; my ($rdaAllowed) = $db->query( sql => " SELECT can_use_rda FROM user_abilities WHERE user_id = '" . $client->getUserId() . "' "); (!$client->isWebtopVpnConnectionEstablished(tb=>$toolBox, db=>$db) && !$self->canInstallRemoteDesktop()) and $rdaAllowed = 0; $rdaAllowed = 1 unless defined $rdaAllowed; if ( ! $rdaAllowed ) { my $p = $toolBox->getPage(); print $p->getHeaderHtml(title => "Webtop: Remote Desktop: Disabled"); print Pos::Webtop::OcxLauncher::getLauncherHtml(tb => $toolBox); print "
|
";
if ($rdaAllowed == 0)
{
$ret .= "REMOTE DESKTOP IS CURRENTLY DISABLED. "; } elsif ((scalar(@computersOnline) == 0 && scalar(@computersOffline) == 0 && scalar(@computersShared) == 0) || !$activeXConnected) { } else { $ret .= "Click on a computer to connect to a remote desktop:
|
| " . $client->getFormGetCode( text => 'Install a Remote Desktop Agent', values => [ { name => 'module', value => 'RemoteDesktop' }, { name => 'action', value => 'newDesktop' } ]) . " | "; } $ret .="" . $client->getFormGetCode( text => 'More...', values => [ { name => 'module', value => 'RemoteDesktop' } ]) . " |
| Name | Last Access | Options | "; foreach my $computer (@computersOnline) { my ($computerId, $computerName, $computerLastAccess, $computerIp, $computerType, $rdaSoftwareId, $remotePort) = @{ $computer }; my $cleanName = $computerName; $cleanName =~ s/\\/\\\\/g; $cleanName =~ s/\'/\\\'/g; print "||||||
|---|---|---|---|---|---|---|---|---|
|
" . ((defined($computerLastAccess) && length($computerLastAccess) > 0)?"$computerLastAccess":"Never") . " | " . (($computerType ne 'SHARED')?"[ " . $client->getFormGetCode( text => 'remove', values => [ { name => 'module', value => 'RemoteDesktop' }, { name => 'action', value => 'removeComputer' }, { name => 'computerId', value => $computerId }, { name => 'computerName', value => $computerName } ]) . " ] [ " . $client->getFormGetCode( text => 'rename', values => [ { name => 'module', value => 'RemoteDesktop' }, { name => 'action', value => 'renameComputer' }, { name => 'computerId', value => $computerId }, { name => 'computerName', value => $computerName } ]) . " ] ":"none") . " | ||||||
|
" . ((length($computerLastAccess) > 0)?"$computerLastAccess":"Never") . " | [ " . $client->getFormGetCode( text => 'remove', values => [ { name => 'module', value => 'RemoteDesktop' }, { name => 'action', value => 'removeComputer' }, { name => 'computerId', value => $computerId }, { name => 'computerName', value => $computerName } ]) . " ] [ " . $client->getFormGetCode( text => 'rename', values => [ { name => 'module', value => 'RemoteDesktop' }, { name => 'action', value => 'renameComputer' }, { name => 'computerId', value => $computerId }, { name => 'computerName', value => $computerName } ]) . " ] |
",
values => [
{
name => 'installNow',
value => '1'
},
{
name => 'action',
value => 'newDesktop'
},
{
name => 'is98',
value => (defined($cgi->param('is98')) ? $cgi->param('is98') : "0")
}
]) . "