stta/stta/tmp/t/tarantella/ttasess-lib.pl
2021-10-01 20:35:43 +01:00

287 lines
9.8 KiB
Perl
Executable File

# ttasess-lib.pl
# Common functions
# load_tta_emulses($temp_f)
# Returns an array of hashtable, each containing info about one webtop. Each hash
# will always contain the keys "alias" "name" "link" etc .
sub load_tta_emulses
{
# read the obj properties from file
local(@ttasess, $_, %idx, $lnum, @lin);
# start by reading from file List
$lnum = 0;
open(FILETTASESS, $temp_f);
while(<FILETTASESS>) {
if (/\S/ && !/^[#\+\-]/ && $lnum gt 0 ) {
chomp($lin);
@lin = split(/: /, $_, -1);
$lin[1]=~ s/"//g;
$is_space=chop($lin[1]);
if ( $is_space eq " " ) { chop($lin[1]); }
push(@ttasess, { 'property' => $lin[0],
'value' => $lin[1],
'num' => scalar(@ttasess) });
$idx{$lin[0]} = $ttasess[$#ttaobj];
}
$lnum++;
}
close(FILETTASESS);
return @ttasess;
}
sub load_tta_sess_info
{
$ttases_id= $config{'ttases_id'};
$ttases_app= $config{'ttases_app'};
$ttases_client=$config{'ttases_client'};
$ttases_appserv=$config{'ttases_appserv'};
$ttases_time=$config{'ttases_time'};
$ttases_user=$config{'ttases_user'};
$ttases_pe=$config{'ttases_pe'};
$ttases_resume=$config{'ttases_resume'};
$ttases_status=$config{'ttases_status'};
$ttases_serveruser=$config{'ttases_serveruser'};
$lnum = 0;
$nlin = 0;
foreach $lin (&load_tta_emulses()) {
$to_include=false;
if ( $lin->{'property'} eq $ttases_id ) {
if ( $nlin > 0 ) { $lnum++; };
$all_ttasess[$lnum]{'id'} = $lin->{'value'};
}
if ( $lin->{'property'} eq $ttases_app ) {
$all_ttasess[$lnum]{'application'} = $lin->{'value'};
$to_include=true;
}
if ( $lin->{'property'} eq $ttases_client ) {
$all_ttasess[$lnum]{'client'} = $lin->{'value'};
$to_include=true;
}
if ( $lin->{'property'} eq $ttases_appserv ) {
$all_ttasess[$lnum]{'applicationServer'} = $lin->{'value'};
$to_include=true;
}
if ( $lin->{'property'} eq $ttases_time ) {
$all_ttasess[$lnum]{'startTime'} = $lin->{'value'};
}
if ( $lin->{'property'} eq $ttases_user ) {
$all_ttasess[$lnum]{'user'} = $lin->{'value'};
$to_include=true;
}
if ( $lin->{'property'} eq $ttases_pe ) {
$all_ttasess[$lnum]{'pe_id'} = $lin->{'value'};
}
if ( $lin->{'property'} eq $ttases_resume ) {
$all_ttasess[$lnum]{'resume'} = $lin->{'value'};
}
if ( $lin->{'property'} eq $ttases_status ) {
$all_ttasess[$lnum]{'status'} = $lin->{'value'};
$to_include=true;
}
if ( $lin->{'property'} eq $ttases_serveruser ) {
$all_ttasess[$lnum]{'serverUser'} = $lin->{'value'};
$to_include=true;
}
$nlin++;
if ( $to_include eq true ) {
$ncount=0;
foreach $countsess (@count_sess) {
if ( $countsess->{'name'} eq $lin->{'value'} ) {
$ncount=$countsess->{num}+1;
$countsess->{num}=$ncount;
last;
}
}
if ( $ncount eq 0 ) {
push(@count_sess, { 'name' => $lin->{'value'},
'obj' => $lin->{'property'} ,
'objalias' => $lin->{'value'} ,
'objgrpalias' => "" ,
'alias' => $lin->{'value'} , 'num' => '1' });
}
}
}
}
sub sum_grp_sess
{
local ($lin,$ncount,%lista);
@lista=@count_sess;
foreach $lin (@lista) {
$ncount=0;
foreach $countsess (@count_sess) {
if ( $countsess->{'name'} eq $lin->{'objgrpalias'} && $lin->{'objgrpalias'} ne "" ) {
#print "=".$countsess->{'objgrpalias'}."=eq=".$lin->{'objgrpalias'}."==\n";
$ncount=$countsess->{num}+1;
$countsess->{num}=$ncount;
last;
}
}
if ( $ncount eq 0 && $lin->{'objgrpalias'} ne "" ) {
$obj=$lin->{'obj'};
if ( $lin->{'obj'} eq "user" ) { $obj="ous"; }
elsif ( $lin->{'obj'} eq "app" ) { $obj="grpapps"; }
elsif ( $lin->{'obj'} eq "host" ) { $obj="grphosts"; }
push(@count_sess, { 'name' => $lin->{'objgrpalias'},
'obj' => $obj ,
'objalias' => $lin->{'objgrpalias'} ,
'objgrpalias' => $lin->{'objgrpalias'} ,
'alias' => $lin->{'objgrpalias'} , 'num' => '1' });
}
}
}
sub setcount_envsess
{
foreach $countsess (@count_sess) {
if ( $countsess->{'name'} eq $ttasess->{'user'} ) {
$countsess->{'alias'}="$NameUser ($OuName)";
$countsess->{'obj'}="user";
$countsess->{'objalias'}=$UserName;
$countsess->{'objgrpalias'}=$OuAlias;
}
if ( $countsess->{'name'} eq $ttasess->{'application'} ) {
$countsess->{'alias'}="$NameApp ($NameAppGrp)";
$countsess->{'obj'}="app";
$countsess->{'objalias'}=$AppAlias;
$countsess->{'objgrpalias'}=$GrpAppAlias;
}
if ( $countsess->{'name'} eq $ttasess->{'applicationServer'} ) {
$countsess->{'alias'}="$NameHost ($NameHostGrp)";
$countsess->{'obj'}="host";
$countsess->{'objalias'}=$HostAlias;
$countsess->{'objgrpalias'}=$GrpHostAlias;
}
}
}
sub alias_envsess
{
local ($item,$ensObj);
$app=$NameApp;
$AppAlias="";
$GrpAppAlias="";
$OuAlias="";
$HostAlias="";
$GrpHostAlias="";
$DomainAlias="";
$ensObj=$OuName;
foreach $item (&list_ous()) {
if ( $item->{'ens'} eq $ensObj ) {
$OuAlias=$item->{'alias'};
last;
}
}
$ensObj="ou=".$NameApp.",".$NameAppGrp;
foreach $item (&list_apps()) {
if ( $item->{'ens'} eq $ensObj ) {
$AppAlias=$item->{'alias'};
$GrpAppAlias=$item->{'grpalias'};
last;
}
}
$ensObj="ou=".$NameHost.",".$NameHostGrp;
foreach $item (&list_hosts()) {
if ( $item->{'ens'} eq $ensObj ) {
$HostAlias=$item->{'alias'};
$GrpHostAlias=$item->{'grpalias'};
last;
}
}
if ( "$NameDomain" ne "" ) { $NameDomain=$config{'cache_domain'}; }
$ensObj="ou=".$NameDomain;
foreach $item (&list_domains()) {
if ( $item->{'ens'} eq $ensObj ) {
$DomainAlias=$item->{'alias'};
last;
}
}
}
sub scan_envsess {
$ens_base=$config{'ens_base'}.$config{'tta_base'};
$UserName=~s/$config{'tta_ldapUser'}//;
$UserName=~s/,$config{'ldap_base'}//;
$UserName=~s/$config{'ens_base'}//;
$AppName=~s/$ens_base\///;
$AppName=~s/$config{'ens_base'}//;
$HostName=~s/...\/_dns\///;
$HostName=~s/$ens_base\///;
if ( $debug eq 2 ) { print DebugLog "\nScanning $UserName ....\n";}
$lnumUser =0 ;
# First LDAP user and second TTA user
$userType="LDAP";
@linUserName = split(/,/, $UserName);
if ("$linUserName[0]" eq "$UserName") {
$userType="TTA";
@linUserName = split(/\//, $UserName);
}
$OuName="";
foreach $obj (@linUserName) {
@UserPath= split(/=/,$obj);
$lnumUser++;
if ( $debug eq 2 ) { print DebugLog "$UserPath[0] -- $UserPath[1] \n"; }
if ( "$userType" eq "LDAP" ) {
if ( $UserPath[0] eq "cn" && $lnumUser eq 1 ) {
$NameUser=$UserPath[1];
} else {
if ( "$OuName" ne "" ) { $OuName=",".$OuName; }
$OuName="ou=".$UserPath[1].$OuName;
}
} else {
$lastOuName=$OuName;
if ( "$OuName" ne "" ) { $OuName=",".$OuName; }
$OuName="ou=".$UserPath[1].$OuName;
}
}
if ( "$userType" ne "LDAP" ) {
$NameUser=$UserPath[1];
$OuName=$lastOuName;
}
if ( "$tta_username" eq "" ) { $tta_username=$NameUser; }
if ( $debug eq 2 ) { print DebugLog "\nScanning $AppName ....\n";}
$lnumApp = 0;
@linAppName = split(/\//, $AppName);
$NameAppGrp="";
foreach $obj (@linAppName) {
@AppPath= split(/=/,$obj);
if ( $lnumApp lt $#linAppName ) {
if ( "$NameAppGrp" ne "" ) { $NameAppGrp=",".$NameAppGrp; }
$NameAppGrp="ou=".$AppPath[1].$NameAppGrp;
}
$lnumApp++;
if ( $debug eq 2 ) { print DebugLog "$AppPath[0] -- $AppPath[1] \n"; }
}
$NameApp=$AppPath[1];
if ( $debug eq 2 ) { print DebugLog "\nScanning $HostName ....\n";}
$lnumHost = 0;
@linHostName = split(/\//, $HostName);
$NameHostGrp="";
foreach $obj (@linHostName) {
@HostPath= split(/=/,$obj);
if ( $lnumHost lt $#linHostName ) {
if ( "$NameHostGrp" ne "" ) { $NameHostGrp=",".$NameHostGrp; }
$NameHostGrp=$HostPath[0]."=".$HostPath[1].$NameHostGrp;
}
$lnumHost++;
if ( $debug eq 2 ) { print DebugLog "$HostPath[0] -- $HostPath[1] \n"; }
}
if ( $HostPath[1].length eq 0 ) {
$NameHost=$HostPath[0];
} else {
$NameHost=$HostPath[1];
}
# if ( $NameHostGrp.length eq 0 ) {
# $NameHostGrp=$NameAppGrp;
# $NameHostGrp=~s/RIMA/servidores/g;
# }
if ( $debug eq 2 ) { print DebugLog "\n";}
}
1; # Return true