version 1.33, 2004/06/29 15:18:41
|
version 1.42, 2005/10/26 19:38:15
|
Line 70 you must contact lon-capa\@lon-capa.org.
|
Line 70 you must contact lon-capa\@lon-capa.org.
|
3) DEVELOPMENT - you want to do software (not content!) development with |
3) DEVELOPMENT - you want to do software (not content!) development with |
this workstation and eventually link it with the |
this workstation and eventually link it with the |
workstations of other LON-CAPA software developers. |
workstations of other LON-CAPA software developers. |
4) PRESERVE the existing hosts.tab and domain.tab |
4) RUNNING YOUR OWN CLUSTER - this machine is not in the standard LON-CAPA |
(/home/httpd/lonTabs/hosts.tab and |
clusters and won't be in the future and you want the existing |
/home/httpd/lonTabs/domain.tab) |
hosts.tab and domain.tab files to be left alone. |
|
(This choice is unlikely what you want to select.) |
END |
END |
# Option number 26 will install rawhide_hosts.tab, but |
# Option number 26 will install rawhide_hosts.tab, but |
# the typical user does not want to be part of an intensive |
# the typical user does not want to be part of an intensive |
Line 196 while (!$flag) {
|
Line 196 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 206 if ($hostname=~/([^\.]*)\.([^\.]*)$/) {
|
Line 206 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 227 END
|
Line 237 END
|
my $choice=<>; |
my $choice=<>; |
chomp($choice); |
chomp($choice); |
my $bad_domain_flag=0; |
my $bad_domain_flag=0; |
my @bad_domain_names=('raw','userfiles','priv','adm','uploaded'); |
my @bad_domain_names=('res','raw','userfiles','priv','adm','uploaded', |
|
'editupload'); |
foreach my $bad (@bad_domain_names) { |
foreach my $bad (@bad_domain_names) { |
$bad_domain_flag=1 if $choice eq $bad; |
$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 238 END
|
Line 252 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 { |
elsif ($bad_domain_flag) { |
|
print "Invalid input ('$choice' conflicts with LON-CAPA namespace).\n"; |
|
print "Please try something different than '$choice'\n"; |
|
} |
|
else { |
|
print "Invalid input (only alphanumeric characters supported).\n"; |
print "Invalid input (only alphanumeric characters supported).\n"; |
} |
} |
} |
} |
Line 296 if ($lonDefDomain) {
|
Line 311 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 315 END
|
Line 331 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"; |
} |
} |
} |
} |
Line 567 This is now the current configuration of
|
Line 587 This is now the current configuration of
|
10) Allow only secure connections: $securestatus |
10) Allow only secure connections: $securestatus |
11) Everything is correct up above |
11) Everything is correct up above |
END |
END |
my $hbug=-1; |
|
my $dbug=-1; |
|
{ |
|
my $v=$perlvar{'lonHostID'}; |
|
$hbug=0; |
|
$hbug=1 if $v=~/\W/; |
|
$hbug=1 if $v=~/\_/; |
|
} |
|
{ |
|
my $v=$1; |
|
$dbug=0; |
|
$dbug=1 if $v=~/\W/; |
|
$dbug=1 if $v=~/\_/; |
|
} |
|
|
|
if ($hbug) { |
|
print "**** ERROR **** ". |
|
"Invalid lonHostID (should only be letters and/or digits)\n"; |
|
} |
|
if ($dbug) { |
|
print "**** ERROR **** ". |
|
"Invalid lonDefDomain (should only be letters and/or digits)\n"; |
|
} |
|
|
|
|
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 ($error) { print "\n*** ERRORS: $error\n"; } |
print(<<END); |
print(<<END); |
ENTER A CHOICE OF 1-10 TO CHANGE, otherwise ENTER 11: |
ENTER A CHOICE OF 1-10 TO CHANGE, otherwise ENTER 11: |
END |
END |
Line 715 END
|
Line 738 END
|
} |
} |
($securestatus,$securenum)=&securesetting(%perlvar); |
($securestatus,$securenum)=&securesetting(%perlvar); |
} |
} |
elsif ($choice==11) { |
elsif (($choice==11) && (!$error)) { |
$flag=1; |
$flag=1; |
} |
} |
else { |
else { |
|
print "Invalid input.\n"; |
} |
} |
} |
} |
open(OUT,">$confdir$filename") or |
open(OUT,">$confdir$filename") or |
Line 737 END
|
Line 760 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 />") { |
my $hostname=`hostname`;chomp($hostname); |
my $hostname=`hostname -f`;chomp($hostname); |
my $hostaddress=`hostname -i $hostname`;chomp($hostaddress); |
|
$hostaddress=~s/\s//; |
|
$date=`date -I`; chomp($date); |
$date=`date -I`; chomp($date); |
$lonHostID=$perlvar{'lonHostID'}; |
$lonHostID=$perlvar{'lonHostID'}; |
$lonHostID=~s/\W//g; |
$lonHostID=~s/\W//g; |
$lineexistflag=0; |
$lineexistflag=0; |
$hostidexistflag=0; |
$hostidexistflag=0; |
$line2insert=<<END; |
$line2insert=<<END; |
$perlvar{'lonHostID'}:$perlvar{'lonDefDomain'}:$perlvar{'lonRole'}:$hostname:$hostaddress |
$perlvar{'lonHostID'}:$perlvar{'lonDefDomain'}:$perlvar{'lonRole'}:$hostname |
END |
END |
$domaininsert="$perlvar{'lonDefDomain'}:$domainDescription:$domainTabExtras\n"; |
$domaininsert="$perlvar{'lonDefDomain'}:$domainDescription:$domainTabExtras\n"; |
if ($lonCluster eq 'standalone') { |
if ($lonCluster eq 'standalone') { |
Line 786 END
|
Line 807 END
|
close(OUT); |
close(OUT); |
`ln -s new_${lonCluster}_hosts.tab ../hosts.tab`; |
`ln -s new_${lonCluster}_hosts.tab ../hosts.tab`; |
# email appropriate message |
# email appropriate message |
system('ping -c 1 -W 5 www.lon-capa.org > /dev/null || ping -c 1 -W 5 www.msu.edu > /dev/null || ping -c 1 -W 5 www.mit.edu > /dev/null'); |
`echo "REPLACE:$lonCluster:$lonHostID:$date:$line2insert" | mail -s "REPLACE:$lonCluster:$lonHostID:$date" installrecord\@mail.lon-capa.org`; |
`echo "REPLACE:$lonCluster:$lonHostID:$date:$line2insert" | mail -s "REPLACE:$lonCluster:$lonHostID:$date" installrecord\@mail.lon-capa.org` unless $?; |
|
} |
} |
elsif ($hostidexistflag and $lineexistflag) { |
elsif ($hostidexistflag and $lineexistflag) { |
print <<END; |
print <<END; |
Line 839 END
|
Line 859 END
|
close(OUT); |
close(OUT); |
`ln -s new_${lonCluster}_domain.tab ../domain.tab`; |
`ln -s new_${lonCluster}_domain.tab ../domain.tab`; |
# email appropriate message |
# email appropriate message |
system('ping -c 1 -W 5 www.lon-capa.org > /dev/null || ping -c 1 -W 5 www.msu.edu > /dev/null || ping -c 1 -W 5 www.mit.edu > /dev/null'); |
`echo "REPLACEdom:$lonCluster:$lonHostID:$date:$domaninsert" | mail -s "REPLACEdom:$lonCluster:$lonHostID:$date" installrecord\@mail.lon-capa.org`; |
`echo "REPLACEdom:$lonCluster:$lonHostID:$date:$domaninsert" | mail -s "REPLACEdom:$lonCluster:$lonHostID:$date" installrecord\@mail.lon-capa.org` unless $?; |
|
} |
} |
elsif ($domainexistflag and $lineexistflag) { |
elsif ($domainexistflag and $lineexistflag) { |
print <<END; |
print <<END; |