#!/usr/bin/perl
# addapp.cgi
# ... Services with Tarantella.
# STTA Rev. 1.3 Copyright (c) 2001-2004 Jesús Pérez Lorenzo --- license GNU GPL
# stta: (@#) 1.31051043346- [2004_01_29_102036]
require './stta-lib.pl';
do 'app-lib.pl';
&headerstta($text{'index_addapp'}, "", "addapp",undef,1,0,"$text{'headpage_right'}"."$text{'head_logout'}",undef,undef,"$text{head_below}" );
print "
\n";
&foreign_require("proc", "proc-lib.pl");
&ReadParse();
if ( $config{'is_ldapcache'} eq "true" && $in{tta3tier_login} ) {
do "ldap-lib.pl";
}
$type_cmd = $in{ttacmd};
$tta_norun = $in{ttanorun};
$appname=$in{appname};
$grp_apps=$in{grpapps};
$obj_descrip=$in{descrip};
$aliasapp=$in{aliasapp};
$appserv=$in{appserv};
$maxsess=$in{maxsess};
$tta_AppType= $in{ttaapptype};
@appdef=&get_tta_appdef($tta_AppType);
print "
\n";
print " $text{'titidx_adapp'} $appname |
\n";
print " \n";
print "\n";
if (!$appname) { &footHere; exit } ;
$alias=$aliasapp;
%h_app=&list_apps();
if ( $h_app{$aliasapp}->{'alias'} eq $aliasapp ) {
$err_msg=$aliasapp.": ".$text{'list_err'};
&footHere;
exit;
}
$grp_name="";
$grp_descrip="";
$dn_grpapps="";
$ens_grpapps="";
%h_grpapps=&list_grpapps();
if ( $h_grpapps{$grp_apps}->{'alias'} eq $grp_apps ) {
$dn_grpapps=$h_grpapps{$grp_apps}->{obj};
$ens_grpapps=$h_grpapps{$grp_apps}->{ens};
$grp_name=$h_grpapps{$grp_apps}->{name};
$grp_descrip=$h_grpapps{$grp_apps}->{descrip};
} else {
$err_msg="grp_apps: ".$text{'list_errno'};
&footHere;
exit;
}
if ( $dn_grpapps eq "" ) {
$dn_app = "ou=$appname";
$ens_app ="cn=$appname";
} else {
$dn_app = "ou=$appname,$dn_grpapps";
$ens_app ="$ens_grpapps/cn=$appname";
}
$dnldap = "default";
$default_obj="cn=$config{ldapcache_defaultobj}";
$ens_obj = "--name \"".$config{tta_base}."/$ens_app\"";
$dn_org=$dn;
$| = 1;
$temp = &tempname();
open(TEMP, ">$temp");
print TEMP "#!/bin/sh\n";
print TEMP $env;
print TEMP "export $export\n" if ($export);
print TEMP "$str\n";
close(TEMP);
$temp_f = &tempname();
open(TEMPF, ">$temp_f");
print TEMPF "$ens_obj \\\n";
print TEMPF " --description \"$obj_descrip\"\\\n";
foreach $data (@appdef) {
next if ( $data->{att} eq "name" );
next if ( $data->{att} eq "description" );
next if ( $data->{att} eq "appserv" );
$fname=$data->{att};
if ( $in{$fname} ne "" && $in{$fname} ne "none" && $in{$fname} ne $data->{ops} ) {
print TEMPF " --$fname \"$in{$fname}\"\\\n";
}
}
%h_hosts=&list_hosts();
$hosts_list="";
$appserv =~ s/\r|\n/ /g;
foreach $h (split(/ /, $appserv)) {
next if ( $h eq "" );
next if ( $h_hosts{$h}->{ens} eq "" );
if ( $hosts_list ne "" ) { $hosts_list .= " " }
$hosts_list .="\"$config{tta_base}/".$h_hosts{$h}->{ens}."\"";
}
print TEMPF " --appserv $hosts_list\\\n";
print TEMPF "\n";
close(TEMPF);
if ( $tta_norun eq "true" ) { $type_cmd = "no_run $type_cmd"; };
if (&run_tta_cmd($type_cmd,$ens_obj,$temp_f)) {
print "\n";
} else { &html_errshow("tta")};
if ( $config{'is_ldapcache'} eq "true" && $in{tta3tier_login} ) {
$ldapcache_server=1;
&connect_cache ();
@tta3tier=&set_tta3tier($default_obj,$dn_app,$dnldap,"add","app");
if ( &cache_obj(\%tta3tier) ne 0 ) {
&html_errshow("ldap");
&footHere; exit;
};
if ( $config{ldapcache2_server}.length gt 0 ) {
$ldapcache_server=2;
&connect_cache ();
if ( &cache_obj(\%tta3tier) ne 0 ) { &err_replication() }
}
}
print " \n";
$lin_app=$aliasapp."::".$appname."::".$grp_apps."::".$dn_app."::".$ens_app."::".$maxsess."::".$tta_AppType."::".$obj_descrip."::";
&out_objslist( "add", "addapps.cgi", "apps", "apps_list", $aliasapp, $lin_app, undef );
print "".$text{'user_made'}.$appname." -> ".$grp_name." \n";
if ( $debug lt 2 ) { unlink($temp_f); }
&footHere;
exit;
|