version 1.14, 2002/06/06 15:44:27
|
version 1.43, 2005/12/09 00:53:54
|
Line 1
|
Line 1
|
<!-- updatequery.piml --> |
<!-- updatequery.piml --> |
<!-- Scott Harrison --> |
|
|
|
<!-- $Id$ --> |
<!-- $Id$ --> |
|
|
Line 52 sleep(3);
|
Line 51 sleep(3);
|
</perlscript> |
</perlscript> |
</file> |
</file> |
<file> |
<file> |
|
<target dist='default'>loncom/hosts.tab</target> |
|
<perlscript mode='fg'> |
|
unless (-l "<TARGET />") { |
|
print(<<END); |
|
|
|
=============================================================================== |
|
Which cluster option would you like to have installed? |
|
IMPORTANT: to take advantage of the cluster options 1) and 3), |
|
you must contact lon-capa\@lon-capa.org. |
|
|
|
1) PRODUCTION - you want to eventually connect this machine to the |
|
LON-CAPA content sharing network. This setting is for |
|
schools, colleges, and universities, that currently |
|
are running - or in the future will run - courses |
|
2) STAND-ALONE - you want this machine to run in 'stand-alone' mode and |
|
not be connected to other LON-CAPA machines for now |
|
3) DEVELOPMENT - you want to do software (not content!) development with |
|
this workstation and eventually link it with the |
|
workstations of other LON-CAPA software developers. |
|
4) RUNNING YOUR OWN CLUSTER - this machine is not in the standard LON-CAPA |
|
clusters and won't be in the future and you want the existing |
|
hosts.tab and domain.tab files to be left alone. |
|
(This choice is unlikely what you want to select.) |
|
END |
|
# Option number 26 will install rawhide_hosts.tab, but |
|
# the typical user does not want to be part of an intensive |
|
# machine test cluster. |
|
|
|
# get input |
|
# if valid then process, otherwise loop |
|
$flag=0; |
|
while (!$flag) { |
|
print "ENTER 1, 2, 3, or 4:\n"; |
|
my $choice=<>; |
|
chomp($choice); |
|
if ($choice==1) { |
|
$lonCluster='production'; $flag=1; |
|
} |
|
elsif ($choice==2) { |
|
$lonCluster='standalone'; $flag=1; |
|
} |
|
elsif ($choice==3) { |
|
$lonCluster='development'; $flag=1; |
|
} |
|
elsif ($choice==4) { |
|
$lonCluster='existing'; $flag=1; |
|
if (-e '/home/httpd/lonTabs/hosts.tab') { |
|
`cp /home/httpd/lonTabs/hosts.tab ../existing_hosts.tab`; |
|
} |
|
else { |
|
print <<END; |
|
There is no existing /home/httpd/lonTabs/hosts.tab |
|
END |
|
die(''); |
|
} |
|
if (-e '/home/httpd/lonTabs/domain.tab') { |
|
`cp /home/httpd/lonTabs/domain.tab ../existing_domain.tab`; |
|
} |
|
else { |
|
print <<END; |
|
There is no existing /home/httpd/lonTabs/domain.tab |
|
END |
|
die(''); |
|
} |
|
} |
|
elsif ($choice==26) { |
|
$lonCluster='rawhide'; $flag=1; |
|
} |
|
} |
|
} |
|
</perlscript> |
|
</file> |
|
<file> |
<target dist='default'>/home/httpd/lonTabs/hosts.tab</target> |
<target dist='default'>/home/httpd/lonTabs/hosts.tab</target> |
<perlscript mode='fg'> |
<perlscript mode='fg'> |
$|=1; |
$|=1; |
|
my $domainDescription; |
|
my $domainTabExtras; |
|
my $primaryLibServer; |
|
my @libservers = (); |
unless (-e "<TARGET />") { |
unless (-e "<TARGET />") { |
print(<<END); |
print(<<END); |
WELCOME TO LON-CAPA! |
WELCOME TO LON-CAPA! |
|
|
If you have questions, please visit http://install.lon-capa.org |
If you have questions, please visit http://install.lon-capa.org |
or contact sharrison\@mail.lon-capa.org. |
or contact helpdesk\@lon-capa.org. |
|
|
=============================================================================== |
=============================================================================== |
The following 4 values are needed to configure LON-CAPA: |
The following 4 values are needed to configure LON-CAPA: |
Line 68 The following 4 values are needed to con
|
Line 144 The following 4 values are needed to con
|
* LON-CAPA Domain Name |
* LON-CAPA Domain Name |
* LON-CAPA Machine ID Name, and |
* LON-CAPA Machine ID Name, and |
* System Administration E-mail Address. |
* System Administration E-mail Address. |
|
=============================================================================== |
|
|
|
In addition, a Support E-mail Address can also be included. If |
|
an address is included then one of the options in the LON-CAPA |
|
help menu will be a link to a form that a user will complete to |
|
request LON-CAPA help. |
|
|
END |
END |
|
|
open(OUT,'>/tmp/loncapa_updatequery.out'); |
open(OUT,'>/tmp/loncapa_updatequery.out'); |
Line 115 while (!$flag) {
|
Line 198 while (!$flag) {
|
} |
} |
|
|
# need to recommend a machine ID name (ipdomain.l.somenumber) |
# need to recommend a machine ID name (ipdomain.l.somenumber) |
my $hostname=`hostname`; chomp($hostname); |
my $hostname=`hostname -f`; chomp($hostname); |
my $ipdomain=''; |
my $ipdomain=''; |
if ($hostname=~/([^\.]*)\.([^\.]*)$/) { |
if ($hostname=~/([^\.]*)\.([^\.]*)$/) { |
$ipdomain=$1; |
$ipdomain=$1; |
Line 125 if ($hostname=~/([^\.]*)\.([^\.]*)$/) {
|
Line 208 if ($hostname=~/([^\.]*)\.([^\.]*)$/) {
|
|
|
**** Domain **** |
**** Domain **** |
[this does NOT need to correspond to internet address domains, |
[this does NOT need to correspond to internet address domains, |
examples might be "msu" or "bionet" or "vermontcc"] |
good examples might be "msu" or "bionet" or "vermontcc", |
|
bad examples are "physics" (too general) |
|
or "michiganstateuniversity" (too long) |
|
or "msuedu" (internet domain, just make it "msu") |
|
or "msuphysics" (only if there is a good reason to limit) |
|
or "mydomain" (what is that?) |
|
Please make this name short AND descriptive of your organization. |
|
Note that the domain is very hard to change later. |
|
Double-check with the LON-CAPA group at MSU if this domain is |
|
going to be part of the main production cluster, since it needs |
|
to be unique.] |
END |
END |
|
|
# get domain name |
# get domain name |
Line 145 END
|
Line 238 END
|
} |
} |
my $choice=<>; |
my $choice=<>; |
chomp($choice); |
chomp($choice); |
|
my $bad_domain_flag=0; |
|
my @bad_domain_names=('res','raw','userfiles','priv','adm','uploaded', |
|
'editupload'); |
|
foreach my $bad (@bad_domain_names) { |
|
$bad_domain_flag=1 if $choice eq $bad; |
|
} |
|
if ($choice=~/capa/i) { |
|
$bad_domain_flag=1; |
|
} |
if ($ipdomain and $choice=~/^\s*$/) { |
if ($ipdomain and $choice=~/^\s*$/) { |
$choice=$ipdomain; |
$choice=$ipdomain; |
open(OUT,'>>/tmp/loncapa_updatequery.out'); |
open(OUT,'>>/tmp/loncapa_updatequery.out'); |
Line 152 END
|
Line 254 END
|
close(OUT); |
close(OUT); |
$lonDefDomain=$choice; |
$lonDefDomain=$choice; |
$flag=1; |
$flag=1; |
} |
} elsif (length($choice)>12) { |
elsif ($choice!~/\_/ and $choice=~/^\w+$/) { |
print "Name too long\n"; |
|
} elsif (length($choice)<2) { |
|
print "Name too short\n"; |
|
} elsif ($bad_domain_flag) { |
|
print "Invalid input ('$choice' conflicts with LON-CAPA namespace).\n"; |
|
print "Please try something different than '$choice'\n"; |
|
} elsif ($choice!~/\_/ and $choice=~/^\w+$/) { |
open(OUT,'>>/tmp/loncapa_updatequery.out'); |
open(OUT,'>>/tmp/loncapa_updatequery.out'); |
print(OUT 'lonDefDomain'."\t".$choice."\n"); |
print(OUT 'lonDefDomain'."\t".$choice."\n"); |
close(OUT); |
close(OUT); |
$lonDefDomain=$choice; |
$lonDefDomain=$choice; |
$r='l'; |
$r='l'; |
$flag=1; |
$flag=1; |
|
} else { |
|
print "Invalid input (only alphanumeric characters supported).\n"; |
|
} |
|
} |
|
|
|
|
|
# get domain description |
|
# accept if valid, if not valid, tell user and repeat |
|
$flag=0; |
|
|
|
while (!$flag) { |
|
print(<<END); |
|
|
|
**** Domain Description **** |
|
String describing the domain, to be shown to users. |
|
[Example, msu is Michigan State University] |
|
ENTER DOMAIN DESCRIPTION: |
|
END |
|
|
|
my $choice=<>; |
|
chomp($choice); |
|
if ($choice!~/:/) { |
|
open(OUT,'>>/tmp/loncapa_updatequery.out'); |
|
print(OUT 'domainDescription'."\t".$choice."\n"); |
|
close(OUT); |
|
$domainDescription=$choice; |
|
$flag=1; |
} |
} |
else { |
else { |
print "Invalid input (only alphanumeric characters supported).\n"; |
print "Invalid input (no ':' allowed).\n"; |
} |
} |
} |
} |
|
|
Line 178 if ($lonDefDomain) {
|
Line 313 if ($lonDefDomain) {
|
[this does NOT need to correspond to internet address names; |
[this does NOT need to correspond to internet address names; |
this name MUST be unique to the whole LON-CAPA network; |
this name MUST be unique to the whole LON-CAPA network; |
we recommend that you use a name based off of your institution; |
we recommend that you use a name based off of your institution; |
good examples: "msul1" or "bionetl1"; |
good examples: "msul1" or "bioneta2"; |
bad examples: "loncapabox" or "studentsinside"] |
bad examples: "loncapabox" or "studentsinside". |
|
Note that machine names are very hard to change later.] |
END |
END |
# get machine name |
# get machine name |
# accept if valid, if not valid, tell user and repeat |
# accept if valid, if not valid, tell user and repeat |
Line 197 END
|
Line 333 END
|
} |
} |
my $choice=<>; |
my $choice=<>; |
chomp($choice); |
chomp($choice); |
if ($lonHostID and $choice=~/^\s*$/) { |
if ($choice=~/capa/i) { |
|
print "Invalid input (names containing 'capa' are reserved).\n"; |
|
} elsif ($lonHostID and $choice=~/^\s*$/) { |
$choice=$lonHostID; |
$choice=$lonHostID; |
open(OUT,'>>/tmp/loncapa_updatequery.out'); |
open(OUT,'>>/tmp/loncapa_updatequery.out'); |
print(OUT 'lonHostID'."\t".$choice."\n"); |
print(OUT 'lonHostID'."\t".$choice."\n"); |
close(OUT); |
close(OUT); |
$lonHostID=$choice; |
$lonHostID=$choice; |
$flag=1; |
$flag=1; |
} |
} elsif (length($choice)>15) { |
elsif ($choice!~/\_/ and $choice=~/^\w+$/) { |
print "Name too long\n"; |
|
} elsif (length($choice)<4) { |
|
print "Name too short\n"; |
|
} elsif ($choice!~/\_/ and $choice=~/^\w+$/) { |
open(OUT,'>>/tmp/loncapa_updatequery.out'); |
open(OUT,'>>/tmp/loncapa_updatequery.out'); |
print(OUT 'lonHostID'."\t".$choice."\n"); |
print(OUT 'lonHostID'."\t".$choice."\n"); |
close(OUT); |
close(OUT); |
$lonHostID=$choice; |
$lonHostID=$choice; |
$flag=1; |
$flag=1; |
} |
} else { |
else { |
|
print "Invalid input (only alphanumeric characters supported).\n"; |
print "Invalid input (only alphanumeric characters supported).\n"; |
} |
} |
} |
} |
|
|
# get e-mail address |
# get primary library server in domain |
|
if ($lonRole eq 'library') { |
|
if (!grep/^\Q$lonHostID\E$/,@libservers) { |
|
push(@libservers,$lonHostID); |
|
} |
|
if (@libservers == 1) { |
|
$primaryLibServer = $libservers[0]; |
|
} |
|
} |
|
while (!$flag) { |
|
print(<<END); |
|
**** Domain's Primary Library Server ID **** |
|
This should be the LON-CAPA machine ID of a library server in your |
|
domain. If you only have a single library server in your domain, then |
|
the Primary Library server ID will be the machine ID of that server. |
|
This server will be where domain data which are not associated with any |
|
specific home library server will be stored (e.g., e-mail broadcast by |
|
administrators to users in the domain). |
|
END |
|
if (defined($primaryLibServer)) { |
|
print(<<END); |
|
ENTER DOMAIN'S PRIMARY LIBRARY SERVER ID [$primaryLibServer]: |
|
END |
|
} elsif (@libservers > 0) { |
|
print(<<END); |
|
ENTER DOMAIN'S PRIMARY LIBRARY SERVER ID [$libservers[0]] |
|
END |
|
} else { |
|
print (<<END); |
|
No library servers could be identified for this domain. If you have already installed LON-CAPA on a different server (designated as a library server) in this domain, please enter the LONCAPA MACHINE ID of that server. If not, you will need to install a LON-CAPA library server. Enter the MACHINE ID of the server you plan to designate as a library server. |
|
END |
|
} |
|
|
|
my $choice=<>; |
|
chomp($choice); |
|
if ($primaryLibServer and $choice=~/^\s*$/) { |
|
$choice=$primaryLibServer; |
|
open(OUT,'>>/tmp/loncapa_updatequery.out'); |
|
print(OUT 'primaryLibServer'."\t".$choice."\n"); |
|
close(OUT); |
|
$flag=1; |
|
} elsif (length($choice)>15) { |
|
print "Name too long\n"; |
|
} elsif (length($choice)<4) { |
|
print "Name too short\n"; |
|
} elsif ($choice!~/\_/ and $choice=~/^\w+$/) { |
|
open(OUT,'>>/tmp/loncapa_updatequery.out'); |
|
print(OUT 'primaryLibServer'."\t".$choice."\n"); |
|
close(OUT); |
|
$primaryLibServer=$choice; |
|
$flag=1; |
|
} else { |
|
print "Invalid input (only alphanumeric characters supported).\n"; |
|
} |
|
} |
|
|
|
|
|
# get admin e-mail address |
# accept if valid, if not valid, tell user and repeat |
# accept if valid, if not valid, tell user and repeat |
$flag=0; |
$flag=0; |
my $lonAdmEMail; |
my $lonAdmEMail; |
Line 227 while (!$flag) {
|
Line 424 while (!$flag) {
|
**** System Administrator's E-mail **** |
**** System Administrator's E-mail **** |
E-mail address of the person who will manage this machine |
E-mail address of the person who will manage this machine |
[should be in the form somebody\@somewhere] |
[should be in the form somebody\@somewhere] |
ENTER E-MAIL ADDRESS: |
ENTER ADMIN E-MAIL ADDRESS: |
END |
END |
|
|
my $choice=<>; |
my $choice=<>; |
Line 244 END
|
Line 441 END
|
} |
} |
} |
} |
|
|
|
|
|
# get support e-mail address |
|
# accept if valid, if not valid, tell user and repeat |
|
$flag=0; |
|
my $lonSupportEMail; |
|
while (!$flag) { |
|
print(<<END); |
|
|
|
**** Support E-mail **** |
|
E-mail address of the person who will receive |
|
help requests from LON-CAPA users who access |
|
the system via this server. If the address is left blank, |
|
then a help support form will not be displayed |
|
as part of the help menu. |
|
[should be in the form somebody\@somewhere] |
|
ENTER SUPPORT E-MAIL ADDRESS: |
|
END |
|
|
|
my $choice=<>; |
|
chomp($choice); |
|
$choice =~ s/\s//g; |
|
if ( ($choice=~/\@/) || $choice eq '') { |
|
open(OUT,'>>/tmp/loncapa_updatequery.out'); |
|
print(OUT 'lonSupportEMail'."\t".$choice."\n"); |
|
close(OUT); |
|
$lonSupportEMail=$choice; |
|
$flag=1; |
|
} |
|
else { |
|
print "Invalid input (this either needs to be blank, or look like an e-mail address!).\n"; |
|
} |
|
} |
|
|
|
|
# update loncapa.conf |
# update loncapa.conf |
my $confdir='/etc/httpd/conf/'; |
my $confdir='/etc/httpd/conf/'; |
#my $confdir=''; |
#my $confdir=''; |
Line 263 my %perlvar;
|
Line 494 my %perlvar;
|
$perlvar{'lonHostID'}=$lonHostID; |
$perlvar{'lonHostID'}=$lonHostID; |
$perlvar{'lonDefDomain'}=$lonDefDomain; |
$perlvar{'lonDefDomain'}=$lonDefDomain; |
$perlvar{'lonAdmEMail'}=$lonAdmEMail; |
$perlvar{'lonAdmEMail'}=$lonAdmEMail; |
|
$perlvar{'lonSupportEMail'}=$lonSupportEMail; |
$perlvar{'lonRole'}=$lonRole; |
$perlvar{'lonRole'}=$lonRole; |
unless ($perlvar{'lonSqlAccess'}) { |
unless ($perlvar{'lonLoadLim'} and $perlvar{'lonLoadLim'}!~/\{\[\[\[\[/) { |
$perlvar{'lonSqlAccess'}='localhostkey'; |
|
} |
|
unless ($perlvar{'lonLoadLim'}) { |
|
$perlvar{'lonLoadLim'}='2.00'; |
$perlvar{'lonLoadLim'}='2.00'; |
} |
} |
unless ($perlvar{'lonExpire'}) { |
unless ($perlvar{'lonUserLoadLim'} and $perlvar{'lonUserLoadLim'}!~/\{\[\[\[\[/) { |
|
$perlvar{'lonUserLoadLim'}='0'; |
|
} |
|
unless ($perlvar{'lonExpire'} and $perlvar{'lonExpire'}!~/\{\[\[\[\[/) { |
$perlvar{'lonExpire'}='86400'; |
$perlvar{'lonExpire'}='86400'; |
} |
} |
unless ($perlvar{'lonReceipt'}) { |
unless ($perlvar{'lonReceipt'} and $perlvar{'lonReceipt'}!~/\{\[\[\[\[/) { |
my $lonReceipt=''; |
my $lonReceipt=''; |
srand(time ^ $$ ^ unpack "%L*", `ps axww | gzip`); |
srand(time ^ $$ ^ unpack "%L*", `ps axww | gzip`); |
my @alnum=(0..9,a..z); |
my @alnum=(0..9,a..z); |
Line 297 END
|
Line 529 END
|
<file> |
<file> |
<target dist='default'>/</target> |
<target dist='default'>/</target> |
<perlscript mode='fg'> |
<perlscript mode='fg'> |
|
sub securesetting { |
|
my (%perlvar)=@_; |
|
my $securestatus='unknown'; |
|
my $securenum=''; |
|
if ( $perlvar{'loncAllowInsecure'}&& $perlvar{'londAllowInsecure'}) { |
|
$securestatus='no'; $securenum='4'; |
|
} elsif ( $perlvar{'loncAllowInsecure'}&& !$perlvar{'londAllowInsecure'}) { |
|
$securestatus='lond'; $securenum='3'; |
|
} elsif (!$perlvar{'loncAllowInsecure'}&& $perlvar{'londAllowInsecure'}) { |
|
$securestatus='lonc'; $securenum='2'; |
|
} elsif (!$perlvar{'loncAllowInsecure'}&& !$perlvar{'londAllowInsecure'}) { |
|
$securestatus='yes (lond and lonc)'; $securenum='1'; |
|
} |
|
return ($securestatus,$securenum); |
|
} |
# read values from loncapa.conf |
# read values from loncapa.conf |
my $confdir='/etc/httpd/conf/'; |
my $confdir='/etc/httpd/conf/'; |
#my $confdir=''; |
|
my $filename='loncapa.conf'; |
my $filename='loncapa.conf'; |
my %perlvar; |
my %perlvar; |
|
my ($securestatus,$securenum); |
if (-e "$confdir$filename") { |
if (-e "$confdir$filename") { |
open(CONFIG,'<'.$confdir.$filename) or |
open(CONFIG,'<'.$confdir.$filename) or |
die("Can't read $confdir$filename"); |
die("Can't read $confdir$filename"); |
Line 314 my %perlvar;
|
Line 561 my %perlvar;
|
} |
} |
close(CONFIG); |
close(CONFIG); |
} |
} |
|
unless ($perlvar{'lonLoadLim'} and $perlvar{'lonLoadLim'}!~/\{\[\[\[\[/) { |
|
$perlvar{'lonLoadLim'}='2.00'; |
|
} |
|
unless ($perlvar{'lonUserLoadLim'} and $perlvar{'lonUserLoadLim'}!~/\{\[\[\[\[/) { |
|
$perlvar{'lonUserLoadLim'}='0'; |
|
} |
|
unless ($perlvar{'lonExpire'} and $perlvar{'lonExpire'}!~/\{\[\[\[\[/) { |
|
$perlvar{'lonExpire'}='86400'; |
|
} |
|
unless ($perlvar{'londAllowInsecure'} and $perlvar{'londAllowInsecure'}!~/\{\[\[\[\[/) { |
|
$perlvar{'londAllowInsecure'}='1'; |
|
} |
|
unless ($perlvar{'loncAllowInsecure'} and $perlvar{'loncAllowInsecure'}!~/\{\[\[\[\[/) { |
|
$perlvar{'loncAllowInsecure'}='1'; |
|
} |
|
($securestatus,$securenum)=&securesetting(%perlvar); |
|
unless ($perlvar{'lonReceipt'} and $perlvar{'lonReceipt'}!~/\{\[\[\[\[/) { |
|
my $lonReceipt=''; |
|
srand(time ^ $$ ^ unpack "%L*", `ps axww | gzip`); |
|
my @alnum=(0..9,a..z); |
|
foreach my $i (1..20) { |
|
$lonReceipt.=$alnum[int(rand(36))]; |
|
} |
|
$perlvar{'lonReceipt'}=$lonReceipt; |
|
} |
my %perlvarstatic; |
my %perlvarstatic; |
if (-e "${confdir}loncapa_apache.conf") { |
if (-e "${confdir}loncapa_apache.conf") { |
open(CONFIG,'<'.$confdir.'loncapa_apache.conf') or |
open(CONFIG,'<'.$confdir.'loncapa_apache.conf') or |
Line 327 my %perlvarstatic;
|
Line 599 my %perlvarstatic;
|
} |
} |
close(CONFIG); |
close(CONFIG); |
} |
} |
|
if (!$domainDescription && $lonCluster ne 'existing') { |
|
open(IN,'<../'.$lonCluster.'_domain.tab'); |
|
while(<IN>) { |
|
if (/^$perlvar{'lonDefDomain'}\:/) { |
|
(undef,$domainDescription,$domainTabExtras)=split(/:/,$_,3); |
|
chomp($domainDescription); |
|
chomp($domainTabExtras); |
|
last; |
|
} |
|
} |
|
close(IN); |
|
} |
|
if (!$domainDescription) { |
|
open(IN,'</home/httpd/lonTabs/domain.tab'); |
|
while(<IN>) { |
|
if (/^$perlvar{'lonDefDomain'}\:/) { |
|
(undef,$domainDescription,$domainTabExtras)=split(/:/,$_,3); |
|
chomp($domainDescription); |
|
chomp($domainTabExtras); |
|
last; |
|
} |
|
} |
|
close(IN); |
|
} |
|
if (!$primaryLibServer and $lonCluster ne 'existing') { |
|
open(IN,'<../'.$lonCluster.'_domain.tab'); |
|
while(<IN>) { |
|
if (/^$perlvar{'lonDefDomain'}\:/) { |
|
(undef,undef,undef,undef,undef,undef,undef,undef, |
|
$primaryLibServer)=split(/:/,$_); |
|
chomp($primaryLibServer); |
|
} |
|
} |
|
close(IN); |
|
if (!$primaryLibServer) { |
|
open(IN,'<../'.$lonCluster.'_hosts.tab'); |
|
while(<IN>) { |
|
if (/^([^\:]+)\:\Q$perlvar{'lonDefDomain'}\E\:library\:/) { |
|
push(@libservers,$1); |
|
} |
|
} |
|
close(IN); |
|
if (@libservers == 1) { |
|
$primaryLibServer = $libservers[0]; |
|
} |
|
} |
|
} |
|
if (!$primaryLibServer) { |
|
open(IN,'</home/httpd/lonTabs/domain.tab'); |
|
while(<IN>) { |
|
if (/^$perlvar{'lonDefDomain'}\:/) { |
|
(undef,undef,undef,undef,undef,undef,undef,undef, |
|
$primaryLibServer)=split(/:/,$_); |
|
chomp($primaryLibServer); |
|
} |
|
close(IN); |
|
} |
|
if (!$primaryLibServer) { |
|
open(IN,'</home/httpd/lonTabs/hosts.tab'); |
|
while(<IN>) { |
|
if (/^([^\:]+)\:\Q$perlvar{'lonDefDomain'}\E\:library\:/) { |
|
push(@libservers,$1); |
|
} |
|
} |
|
close(IN); |
|
if (@libservers == 1) { |
|
$primaryLibServer = $libservers[0]; |
|
} |
|
} |
|
} |
|
$primaryLibServer = ''; |
|
|
# implement editing logic below, interactively |
# implement editing logic below, interactively |
# update loncapa.conf until 7 is entered |
# update loncapa.conf until 8 is entered |
|
|
$flag=0; |
$flag=0; |
|
|
while (!$flag) { |
while (!$flag) { |
print(<<END); |
print(<<END); |
|
|
=============================================================================== |
=============================================================================== |
This is now the current configuration of your machine. |
This is now the current configuration of your machine. |
1) Domain Name: $perlvar{'lonDefDomain'} |
1) Domain Name: $perlvar{'lonDefDomain'} |
2) Machine Name: $perlvar{'lonHostID'} |
2) Domain Description: $domainDescription |
3) System Administrator's E-mail Address: $perlvar{'lonAdmEMail'} |
3) Machine Name: $perlvar{'lonHostID'} |
4) Role: $perlvar{'lonRole'} |
4) ID of primary library server for domain: $primaryLibServer |
5) Cache Expiration Time: $perlvar{'lonExpire'} |
5) System Administrator's E-mail Address: $perlvar{'lonAdmEMail'} |
6) Server Load: $perlvar{'lonLoadLim'} |
6) Support E-mail Address: $perlvar{'lonSupportEMail'} |
7) Everything is correct up above |
7) Role: $perlvar{'lonRole'} |
END |
8) Cache Expiration Time: $perlvar{'lonExpire'} |
|
9) Server Load: $perlvar{'lonLoadLim'} |
|
10) User Load: $perlvar{'lonUserLoadLim'} |
|
11) Allow only secure connections: $securestatus |
|
12) Everything is correct up above |
|
END |
|
|
|
my $error=''; |
|
foreach my $v ($perlvar{'lonDefDomain'},$perlvar{'lonHostID'}) { |
|
if (length($v)>16) { $error.="\nName $v too long"; } |
|
if (length($v)<2) { $error.="\nName $v too short"; } |
|
if ($v=~/capa/i) { |
|
if ($v!~/^oucapa\d+$/ && |
|
($v!~/^capa\d+$/ && $perlvar{'lonDefDomain'} eq 'uwsp')) { |
|
$error.="\nName $v contains 'capa'"; |
|
} |
|
} |
|
foreach my $bad ('res','raw','userfiles','priv','adm','uploaded', |
|
'editupload') { |
|
$error.="\nName $v reserved." if $v eq $bad; |
|
} |
|
if ($v=~/\W/) { $error.="\nName $v contains special characters"; } |
|
} |
|
if ($domainDescription!~/^[\(\)\-\w\s,]+$/) { |
|
$error.="\nDomain Description contains special characters"; |
|
} |
|
foreach my $v ($perlvar{'lonExpire'},$perlvar{'lonLoadLim'}) { |
|
unless ($v=~/^[\d+\.]+$/) { $error.="\nNumber expected instead of $v"; } |
|
} |
|
unless (($perlvar{'lonRole'} eq 'library') || ($perlvar{'lonRole'} eq 'access')) { |
|
$error.="\nInvalid Role"; |
|
} |
|
|
|
if (!defined($primaryLibServer)) { |
|
if (@libservers > 0) { |
|
$error .= "No primary library server ID designated. Choose from: ".join(',',sort(@libservers)); |
|
} else { |
|
$error .= "No library servers in this domain (including current server)"; |
|
} |
|
} else { |
|
if (length($primaryLibServer)>16) { $error.="\nPrimary Library Server ID: $primaryLibServer too long"; } |
|
if (length($primaryLibServer)<2) { $error.="\nPrimary Library Server ID: $primaryLibServer too short"; } |
|
if ($primaryLibServer =~/capa/i) { |
|
if ($primaryLibServer!~/^oucapa\d+$/ && |
|
($primaryLibServer!~/^capa\d+$/ && $perlvar{'lonDefDomain'} eq 'uwsp')) { |
|
$error.="\nPrimary library server ID $primaryLibServer contains 'capa'"; |
|
} |
|
} |
|
foreach my $bad ('res','raw','userfiles','priv','adm','uploaded', |
|
'editupload') { |
|
$error.="\nPrimary library server ID $primaryLibServer reserved." if $primaryLibServer eq $bad; |
|
} |
|
if ($primaryLibServer=~/\W/) { $error.="\nPrimary library server ID $primaryLibServer contains special characters"; } |
|
} |
|
|
|
|
|
if ($error) { print "\n*** ERRORS: $error\n"; } |
print(<<END); |
print(<<END); |
ENTER A CHOICE OF 1-6 TO CHANGE, otherwise ENTER 7: |
ENTER A CHOICE OF 1-11 TO CHANGE, otherwise ENTER 12: |
END |
END |
my $choice=<>; |
my $choice=<>; |
chomp($choice); |
chomp($choice); |
if ($choice==1) { |
if ($choice==1) { |
print(<<END); |
print(<<END); |
2) Domain Name: $perlvar{'lonDefDomain'} |
1) Domain Name: $perlvar{'lonDefDomain'} |
ENTER NEW VALUE: |
ENTER NEW VALUE (this is an internal value used to identify a group of |
|
LON-CAPA machines, it must be alphanumerical, we suggest |
|
using a part of your actual DNS domain. For example, for |
|
the machine loncapa.msu.edu, we set the Domain to msu): |
END |
END |
my $choice2=<>; |
my $choice2=<>; |
chomp($choice2); |
chomp($choice2); |
Line 360 END
|
Line 764 END
|
} |
} |
elsif ($choice==2) { |
elsif ($choice==2) { |
print(<<END); |
print(<<END); |
1) Machine Name: $perlvar{'lonHostID'} |
2) Domain Description: $domainDescription |
ENTER NEW VALUE: |
ENTER NEW VALUE (this should be a string that describes your domain, spaces |
|
and punctuation are fine except for ':'): |
END |
END |
my $choice2=<>; |
my $choice2=<>; |
chomp($choice2); |
chomp($choice2); |
$perlvar{'lonHostID'}=$choice2; |
$domainDescription=$choice2; |
} |
} |
elsif ($choice==3) { |
elsif ($choice==3) { |
print(<<END); |
print(<<END); |
3) System Administrator's E-mail Address: $perlvar{'lonAdmEMail'} |
3) Machine Name: $perlvar{'lonHostID'} |
|
ENTER NEW VALUE (this will be the name of the machine in the LON-CAPA network |
|
it cannot contain any of '_' '-' '.' or ':'. We suggest that |
|
if you are in the domain 'example' and are the first library |
|
server you enter 'examplel1') : |
|
END |
|
my $choice2=<>; |
|
chomp($choice2); |
|
$perlvar{'lonHostID'}=$choice2; |
|
} |
|
elsif ($choice==4) { |
|
print(<<END); |
|
4) ID of primary library server for domain: $primaryLibServer |
|
ENTER NEW VALUE (this will be the LON-CAPA Machine ID of a library server in |
|
your domain; it cannot contain any of '_' '-' '.' or ':'. |
|
This server will be where domain data which are not |
|
associated with any specific home library server |
|
will be stored (e.g., e-mail broadcast by Domain Coordinators |
|
to users in the domain). |
|
END |
|
my $choice2=<>; |
|
chomp($choice2); |
|
$primaryLibServer=$choice2; |
|
} |
|
elsif ($choice==5) { |
|
print(<<END); |
|
5) System Administrator's E-mail Address: $perlvar{'lonAdmEMail'} |
ENTER NEW VALUE: |
ENTER NEW VALUE: |
END |
END |
my $choice2=<>; |
my $choice2=<>; |
chomp($choice2); |
chomp($choice2); |
$perlvar{'lonAdmEMail'}=$choice2; |
$perlvar{'lonAdmEMail'}=$choice2; |
} |
} |
elsif ($choice==4) { |
elsif ($choice==6) { |
print(<<END); |
print(<<END); |
4) Role: $perlvar{'lonRole'} |
6) Support E-mail Address: $perlvar{'lonSupportEMail'} |
ENTER NEW VALUE: |
ENTER NEW VALUE: |
END |
END |
my $choice2=<>; |
my $choice2=<>; |
chomp($choice2); |
chomp($choice2); |
|
$perlvar{'lonSupportEMail'}=$choice2; |
|
} |
|
elsif ($choice==7) { |
|
print(<<END); |
|
7) Role: $perlvar{'lonRole'} |
|
ENTER NEW VALUE (this should be either 'access' or 'library' |
|
if in doubt select 'library'): |
|
END |
|
my $choice2=<>; |
|
chomp($choice2); |
$perlvar{'lonRole'}=$choice2; |
$perlvar{'lonRole'}=$choice2; |
} |
} |
elsif ($choice==5) { |
elsif ($choice==8) { |
print(<<END); |
print(<<END); |
5) Cache Expiration Time: $perlvar{'lonExpire'} |
8) Cache Expiration Time: $perlvar{'lonExpire'} |
ENTER NEW VALUE: |
ENTER NEW VALUE (in seconds, 86400 is a reasonable value): |
END |
END |
my $choice2=<>; |
my $choice2=<>; |
chomp($choice2); |
chomp($choice2); |
$perlvar{'lonExpire'}=$choice2; |
$perlvar{'lonExpire'}=$choice2; |
} |
} |
elsif ($choice==6) { |
elsif ($choice==9) { |
print(<<END); |
print(<<END); |
6) Server Load: $perlvar{'lonLoadLim'} |
9) Server Load: $perlvar{'lonLoadLim'} |
ENTER NEW VALUE: |
ENTER NEW VALUE: |
END |
END |
my $choice2=<>; |
my $choice2=<>; |
chomp($choice2); |
chomp($choice2); |
$perlvar{'lonLoadLim'}=$choice2; |
$perlvar{'lonLoadLim'}=$choice2; |
} |
} |
elsif ($choice==7) { |
elsif ($choice==10) { |
|
print(<<END); |
|
10) User Load: $perlvar{'lonUserLoadLim'} |
|
Numer of users that can login before machine is 'overloaded' |
|
ENTER NEW VALUE (integer value, 0 means there is no limit): |
|
END |
|
my $choice2=<>; |
|
chomp($choice2); |
|
$perlvar{'lonUserLoadLim'}=$choice2; |
|
} |
|
elsif ($choice==11) { |
|
print(<<END); |
|
11) Allow only secure connections: $securestatus |
|
The Lon-CAPA communication daemons lonc and lond can be configured to |
|
allow only secure connections by default. |
|
|
|
POSSIBLE CHOICES: |
|
1) allow only secure connections and don't connect to machines that |
|
can not be connected to securely |
|
2) allow only secure connections but allow this machine to connect to |
|
machines that don't support secure connections |
|
3) allow insecure connections to this machine but only allow connections |
|
to machines that support secure connections |
|
4) allow insecure connections |
|
ENTER NEW VALUE (currenly $securenum): |
|
END |
|
my $choice2=<>; |
|
chomp($choice2); |
|
if ($choice2 eq '1') { |
|
$perlvar{'loncAllowInsecure'}=0;$perlvar{'londAllowInsecure'}=0; |
|
} elsif ($choice2 eq '2') { |
|
$perlvar{'loncAllowInsecure'}=0;$perlvar{'londAllowInsecure'}=1; |
|
} elsif ($choice2 eq '3') { |
|
$perlvar{'loncAllowInsecure'}=1;$perlvar{'londAllowInsecure'}=0; |
|
} elsif ($choice2 eq '4') { |
|
$perlvar{'loncAllowInsecure'}=1;$perlvar{'londAllowInsecure'}=1; |
|
} |
|
($securestatus,$securenum)=&securesetting(%perlvar); |
|
} |
|
elsif (($choice==12) && (!$error)) { |
$flag=1; |
$flag=1; |
} |
} |
else { |
else { |
|
print "Invalid input.\n"; |
} |
} |
} |
} |
open(OUT,">$confdir$filename") or |
open(OUT,">$confdir$filename") or |
Line 425 END
|
Line 905 END
|
<target dist='default'>loncom/hosts.tab</target> |
<target dist='default'>loncom/hosts.tab</target> |
<perlscript mode='fg'> |
<perlscript mode='fg'> |
unless (-l "<TARGET />") { |
unless (-l "<TARGET />") { |
print(<<END); |
my $hostname=`hostname -f`;chomp($hostname); |
|
$date=`date -I`; chomp($date); |
=============================================================================== |
$lonHostID=$perlvar{'lonHostID'}; |
What hosts.tab would you like to have installed? |
$lonHostID=~s/\W//g; |
(hosts.tab is a listing of all other internet machines |
$lineexistflag=0; |
that a server system considers to be valid server systems |
$hostidexistflag=0; |
on the LON-CAPA network) |
$line2insert=<<END; |
|
$perlvar{'lonHostID'}:$perlvar{'lonDefDomain'}:$perlvar{'lonRole'}:$hostname |
1) PRODUCTION - you want to deliver courses today or sometime very soon |
END |
on this machine |
$domaininsert="$perlvar{'lonDefDomain'}:$domainDescription:$domainTabExtras:$primaryLibServer\n"; |
2) STAND-ALONE - you want this machine to run in 'stand-alone' mode and |
if ($lonCluster eq 'standalone') { |
not be connected to other LON-CAPA machines for now |
open(OUT,'>../'.$lonCluster.'_hosts.tab') or |
3) DEVELOPMENT - you want to play with or explore LON-CAPA |
die('file generation error'); |
4) PRESERVE the existing hosts.tab (/home/httpd/lonTabs/hosts.tab) |
print(OUT $line2insert); |
|
close(OUT); |
END |
open(OUT,'>../'.$lonCluster.'_domain.tab') or |
# Option number 26 will install rawhide_hosts.tab, but |
die('file generation error'); |
# the typical user does not want to be part of an intensive |
print(OUT $domaininsert); |
# machine test cluster. |
close(OUT); |
|
} |
# get input |
if ($flag==1) { |
# if valid then process, otherwise loop |
|
my $hostname=`hostname`;chomp($hostname); |
|
my $hostaddress=`hostname -i $hostname`;chomp($hostaddress); |
|
$flag=0; |
|
while (!$flag) { |
|
print "ENTER 1, 2, 3, or 4:\n"; |
|
my $choice=<>; |
|
chomp($choice); |
|
$line2insert=<<END; |
|
$perlvar{'lonHostID'}:$perlvar{'lonDefDomain'}:$perlvar{'lonRole'}:$hostname:$hostaddress |
|
END |
|
$date=`date -I`; chomp($date); |
|
$lonHostID=$perlvar{'lonHostID'}; |
|
$lonHostID=~s/\W//g; |
|
$lineexistflag=0; |
|
$hostidexistflag=0; |
|
if ($choice==1) { |
|
$lonCluster='production'; |
|
`rm -f ../hosts.tab`; |
`rm -f ../hosts.tab`; |
open(IN,'<../production_hosts.tab'); |
open(IN,'<../'.$lonCluster.'_hosts.tab'); |
while(<IN>) { |
while(<IN>) { |
if (/^$line2insert$/) { |
if (/^$line2insert$/) { |
$lineexistflag=1; |
$lineexistflag=1; |
} |
} |
if (/^$perlvar{'lonHostID'}\:/) { |
if (/^$lonHostID\:/) { |
$hostidexistflag=1; |
$hostidexistflag=1; |
} |
} |
} |
} |
Line 478 END
|
Line 940 END
|
if ($hostidexistflag and !$lineexistflag) { |
if ($hostidexistflag and !$lineexistflag) { |
print <<END; |
print <<END; |
WARNING: $lonHostID already exists inside |
WARNING: $lonHostID already exists inside |
loncapa/loncom/production_hosts.tab. The entry inside |
loncapa/loncom/${lonCluster}_hosts.tab. The entry inside |
production_hosts.tab does not match your settings. |
${lonCluster}_hosts.tab does not match your settings. |
The entry inside production_hosts.tab is being replaced |
The entry inside ${lonCluster}_hosts.tab is being replaced |
with your new values. |
with your new values. |
END |
END |
`grep -v "$lonHostID:" ../production_hosts.tab > ../new_production_hosts.tab`; |
`grep -v "$lonHostID:" ../${lonCluster}_hosts.tab > ../new_${lonCluster}_hosts.tab`; |
open(OUT,'>>../new_production_hosts.tab') or |
open(OUT,'>>../new_'.$lonCluster.'_hosts.tab') or |
die("cannot open loncom/standalone_hosts.tab for output\n"); |
die("cannot open loncom/${lonCluster}_hosts.tab for output\n"); |
print(OUT $line2insert); |
print(OUT $line2insert); |
close(OUT); |
close(OUT); |
`ln -s new_production_hosts.tab ../hosts.tab`; |
`ln -s new_${lonCluster}_hosts.tab ../hosts.tab`; |
# email appropriate message |
# email appropriate message |
`echo "REPLACE:$lonHostID:date:$line2insert" | mail -s "REPLACE:$lonHostID:$date" installrecord\@mail.lon-capa.org`; |
`echo "REPLACE:$lonCluster:$lonHostID:$date:$line2insert" | mail -s "REPLACE:$lonCluster:$lonHostID:$date" installrecord\@mail.lon-capa.org`; |
} |
} |
elsif ($hostidexistflag and $lineexistflag) { |
elsif ($hostidexistflag and $lineexistflag) { |
`ln -s production_hosts.tab ../hosts.tab`; |
print <<END; |
|
Entry exists in ${lonCluster}_hosts.tab. |
|
END |
|
`ln -s ${lonCluster}_hosts.tab ../hosts.tab`; |
|
# email appropriate message |
|
`echo "STABLEUPDATE:$lonCluster:$lonHostID:$date:$line2insert" | mail -s "STABLEUPDATE:$lonCluster:$lonHostID:$date" installrecord\@mail.lon-capa.org`; |
} |
} |
elsif (!$$hostidexistflag and !$lineexistflag) { |
elsif (!$hostidexistflag and !$lineexistflag) { |
`cat ../production_hosts.tab > ../new_production_hosts.tab`; |
print <<END; |
`ln -s new_production_hosts.tab > ../hosts.tab`; |
New entry for $lonCluster. |
|
END |
|
`cat ../${lonCluster}_hosts.tab > ../new_${lonCluster}_hosts.tab`; |
|
open(OUT,'>>../new_'.$lonCluster.'_hosts.tab') or |
|
die("cannot open loncom/new_${lonCluster}_hosts.tab for output\n"); |
|
print(OUT $line2insert); |
|
close(OUT); |
|
`ln -s new_${lonCluster}_hosts.tab ../hosts.tab`; |
|
# email appropriate message |
|
`echo "INSERT:$lonCluster:$lonHostID:$date:$line2insert" | mail -s "INSERT:$lonCluster:$lonHostID:$date" installrecord\@mail.lon-capa.org`; |
} |
} |
$flag=1; |
|
} |
} |
elsif ($choice==2) { |
$lineexistflag=0; |
$lonCluster='standalone'; |
if ($flag==1) { |
open(OUT,'>../standalone_hosts.tab') or |
`rm -f ../domain.tab`; |
die("cannot open loncom/standalone_hosts.tab for output\n"); |
open(IN,'<../'.$lonCluster.'_domain.tab'); |
print(OUT <<END); |
while(<IN>) { |
$perlvar{'lonHostID'}:$perlvar{'lonDefDomain'}:$perlvar{'lonRole'}:$hostname:$hostaddress |
if (/^$domaininsert$/) { |
|
$lineexistflag=1; |
|
} |
|
if (/^$perlvar{'lonDefDomain'}\:/) { |
|
$domainexistflag=1; |
|
} |
|
} |
|
close(IN); |
|
if ($domainexistflag and !$lineexistflag) { |
|
print <<END; |
|
WARNING: $perlvar{'lonDefDomain'} already exists inside |
|
loncapa/loncom/${lonCluster}_domain.tab. The entry inside |
|
${lonCluster}_domain.tab does not match your settings. |
|
The entry inside ${lonCluster}_domain.tab is being replaced |
|
with your new values. |
END |
END |
close(OUT); |
`grep -v "$perlvar{'lonDefDomain'}:" ../${lonCluster}_domain.tab > ../new_${lonCluster}_domain.tab`; |
`rm -f ../hosts.tab`; |
open(OUT,'>>../new_'.$lonCluster.'_domain.tab') or |
`ln -s standalone_hosts.tab ../hosts.tab`; |
die("cannot open loncom/${lonCluster}_domain.tab for output\n"); |
$flag=1; |
print(OUT $domaininsert); |
} |
close(OUT); |
elsif ($choice==3) { |
`ln -s new_${lonCluster}_domain.tab ../domain.tab`; |
$lonCluster='development'; |
# email appropriate message |
`rm -f loncom/hosts.tab`; |
`echo "REPLACEdom:$lonCluster:$lonHostID:$date:$domaninsert" | mail -s "REPLACEdom:$lonCluster:$lonHostID:$date" installrecord\@mail.lon-capa.org`; |
`ln -s development_hosts.tab ../hosts.tab`; |
} |
$flag=1; |
elsif ($domainexistflag and $lineexistflag) { |
} |
print <<END; |
elsif ($choice==4) { |
Entry exists in ${lonCluster}_domain.tab. |
$lonCluster='existing'; |
END |
`rm -f ../hosts.tab`; |
`ln -s ${lonCluster}_domain.tab ../domain.tab`; |
`touch existing_hosts.tab`; |
# email appropriate message |
if (-e '/home/httpd/lonTabs/hosts.tab') { |
`echo "STABLEUPDATEdom:$lonCluster:$lonHostID:$date:$domaininsert" | mail -s "STABLEUPDATEdom:$lonCluster:$lonHostID:$date" installrecord\@mail.lon-capa.org`; |
`cp /home/httpd/lonTabs/hosts.tab ../existing_hosts.tab`; |
} |
|
elsif (!$domainexistflag and !$lineexistflag) { |
|
print <<END; |
|
New entry for $lonCluster. |
|
END |
|
`cat ../${lonCluster}_domain.tab > ../new_${lonCluster}_domain.tab`; |
|
open(OUT,'>>../new_'.$lonCluster.'_domain.tab') or |
|
die("cannot open loncom/new_${lonCluster}_domain.tab for output\n"); |
|
print(OUT $domaininsert); |
|
close(OUT); |
|
`ln -s new_${lonCluster}_domain.tab ../domain.tab`; |
|
# email appropriate message |
|
`echo "INSERTdom:$lonCluster:$lonHostID:$date:$domaininsert" | mail -s "INSERTdom:$lonCluster:$lonHostID:$date" installrecord\@mail.lon-capa.org`; |
} |
} |
`ln -s existing_hosts.tab ../hosts.tab`; |
|
$flag=1; |
|
} |
|
elsif ($choice==26) { |
|
$lonCluster='rawhide'; |
|
`rm -f ../hosts.tab`; |
|
`ln -s rawhide_hosts.tab ../hosts.tab`; |
|
$flag=1; |
|
} |
|
else { |
|
|
|
} |
} |
} |
} |
|
|
} |
|
</perlscript> |
</perlscript> |
</file> |
</file> |
</files> |
</files> |