version 1.46, 2006/01/28 10:35:02
|
version 1.84.2.3, 2020/01/07 01:29:06
|
Line 33 http://www.lon-capa.org/
|
Line 33 http://www.lon-capa.org/
|
<target dist='default'>/</target> |
<target dist='default'>/</target> |
<perlscript mode='fg'> |
<perlscript mode='fg'> |
$|=1; |
$|=1; |
|
use strict; |
|
|
print(<<END); |
print(<<END); |
|
|
|
|
Line 47 $|=1;
|
Line 49 $|=1;
|
********************************************* |
********************************************* |
|
|
END |
END |
sleep(3); |
#sleep(3); |
</perlscript> |
</perlscript> |
</file> |
</file> |
<file> |
<file> |
<target dist='default'>loncom/hosts.tab</target> |
<target dist='default'>loncom/hosts.tab</target> |
<perlscript mode='fg'> |
<perlscript mode='fg'> |
|
my $lonCluster; |
unless (-l "<TARGET />") { |
unless (-l "<TARGET />") { |
print(<<END); |
print(<<END); |
|
|
=============================================================================== |
=============================================================================== |
Which cluster option would you like to have installed? |
Which cluster option would you like to have installed? |
IMPORTANT: to take advantage of the cluster options 1) and 3), |
IMPORTANT: to take advantage of the cluster options 1) and 3), |
you must contact lon-capa\@lon-capa.org. |
you must contact loncapa\@loncapa.org. |
|
|
1) PRODUCTION - you want to eventually connect this machine to the |
1) PRODUCTION - you want to eventually connect this machine to the |
LON-CAPA content sharing network. This setting is for |
LON-CAPA content sharing network. This setting is for |
schools, colleges, and universities, that currently |
schools, colleges, and universities, that currently |
are running - or in the future will run - courses |
are running - or in the future will run - courses. |
2) STAND-ALONE - you want this machine to run in 'stand-alone' mode and |
2) STAND-ALONE - you want this machine to run in 'stand-alone' mode and |
not be connected to other LON-CAPA machines for now |
not be connected to other LON-CAPA machines for now. |
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. |
Line 81 END
|
Line 84 END
|
|
|
# get input |
# get input |
# if valid then process, otherwise loop |
# if valid then process, otherwise loop |
$flag=0; |
my $flag=0; |
while (!$flag) { |
while (!$flag) { |
print "ENTER 1, 2, 3, or 4:\n"; |
print "ENTER 1, 2, 3, or 4:\n"; |
my $choice=<>; |
my $choice=<>; |
Line 97 while (!$flag) {
|
Line 100 while (!$flag) {
|
} |
} |
elsif ($choice==4) { |
elsif ($choice==4) { |
$lonCluster='existing'; $flag=1; |
$lonCluster='existing'; $flag=1; |
if (-e '/home/httpd/lonTabs/hosts.tab') { |
foreach my $file ('hosts.tab','dns_hosts.tab', |
`cp /home/httpd/lonTabs/hosts.tab ../existing_hosts.tab`; |
'domain.tab','dns_domain.tab') { |
} |
if (-e '/home/httpd/lonTabs/'.$file) { |
else { |
`cp /home/httpd/lonTabs/$file ../existing_$file`; |
print <<END; |
} |
There is no existing /home/httpd/lonTabs/hosts.tab |
else { |
END |
print <<END; |
die(''); |
There is no existing /home/httpd/lonTabs/$file |
} |
|
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 |
END |
die(''); |
die(''); |
|
} |
} |
} |
} |
} |
elsif ($choice==26) { |
elsif ($choice==26) { |
Line 130 $|=1;
|
Line 127 $|=1;
|
my $domainDescription; |
my $domainDescription; |
my $domainTabExtras; |
my $domainTabExtras; |
my $primaryLibServer; |
my $primaryLibServer; |
|
my $protocol; |
|
my $intdom; |
|
my $desiredhostname; |
my @libservers = (); |
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.loncapa.org |
or contact helpdesk\@lon-capa.org. |
or contact helpdesk\@loncapa.org. |
|
|
=============================================================================== |
=============================================================================== |
The following 4 values are needed to configure LON-CAPA: |
The following 8 values are needed to configure LON-CAPA: |
* Machine Role |
* Machine Role |
* LON-CAPA Domain Name |
* LON-CAPA Domain Name |
* LON-CAPA Machine ID Name, and |
* LON-CAPA Machine ID Name |
* System Administration E-mail Address. |
* Server Administration E-mail Address |
|
* LON-CAPA Domain's Primary Library Server Machine ID |
|
* Web Server Protocol |
|
* Internet Domain Name of Your Institution |
|
* Hostname |
=============================================================================== |
=============================================================================== |
|
|
In addition, a Support E-mail Address can also be included. If |
In addition, a Support E-mail Address can also be included. If |
Line 161 close(OUT);
|
Line 165 close(OUT);
|
**** Machine Role **** |
**** Machine Role **** |
Library server (recommended if first-time installation of LON-CAPA): |
Library server (recommended if first-time installation of LON-CAPA): |
Servers that are repositories of authoritative educational resources. |
Servers that are repositories of authoritative educational resources. |
These servers also provide the construction space by which instructors |
These servers also provide the authoring spaces in which content |
assemble their classroom online material. |
creators (e.g., faculty instructors) create their learning content. |
Access server: |
Access server: |
Servers that load-balance high-traffic delivery of educational resources |
Servers that load-balance high-traffic delivery of educational resources |
over the world-wide web. |
over the world-wide web. |
Line 207 if ($hostname=~/([^\.]*)\.([^\.]*)$/) {
|
Line 211 if ($hostname=~/([^\.]*)\.([^\.]*)$/) {
|
print(<<END); |
print(<<END); |
|
|
**** Domain **** |
**** Domain **** |
[This does NOT need to correspond to internet address domains. |
[This does NOT need to correspond to an internet address domain. |
Please make this name short AND descriptive of your organization. |
Please make this name short AND descriptive of your organization. |
Domain names are close to impossible to change later!!! |
Domain names are close to impossible to change later!!! |
Good examples might be "msu" or "bionet" or "vermontcc". |
Good examples might be "msu" or "bionet" or "vermontcc". |
Bad examples are "physics" (too general) |
Bad examples are "physics" (too general) |
or "michiganstateuniversity" (too long) |
or "michiganstateuniversity" (too long) |
or "msuedu" (internet domain, just make it "msu") |
or "msuedu" (just make it "msu", or else make it msu.edu) |
or "msuphysics" (only if there is a good reason to limit to department |
or "msuphysics" (only if there is a good reason to limit to department |
- we don't know of one) |
- we don't know of one) |
or "mydomain" (what is that?) |
or "mydomain" (what is that?) |
Line 221 if ($hostname=~/([^\.]*)\.([^\.]*)$/) {
|
Line 225 if ($hostname=~/([^\.]*)\.([^\.]*)$/) {
|
have to actually work together with your colleagues. You can still run |
have to actually work together with your colleagues. You can still run |
multiple library servers within the same domain. |
multiple library servers within the same domain. |
If this domain is eventually going to be part of the main production |
If this domain is eventually going to be part of the main production |
cluster, you MUST contact the LON-CAPA group at MSU (loncapa@loncapa.org) |
cluster, you MUST contact the LON-CAPA group at MSU (loncapa\@loncapa.org) |
to have a domain name assigned, and then use it exactly as given. This is |
to have a domain name assigned, and then use it exactly as given. This is |
also true for test installs that might eventually turn into production setups. |
also true for test installs that might eventually turn into production setups. |
Stop now if you didn't do so.] |
The short domain name needs to be unique, if your aim is to join a cluster |
|
containing existing domains. Stop now if you have not yet contacted the |
|
MSU LON-CAPA group.] |
END |
END |
|
|
# get domain name |
# get domain name |
Line 260 END
|
Line 266 END
|
close(OUT); |
close(OUT); |
$lonDefDomain=$choice; |
$lonDefDomain=$choice; |
$flag=1; |
$flag=1; |
} elsif (length($choice)>12) { |
} elsif (length($choice)>35) { |
print "Name too long\n"; |
print "Name too long\n"; |
} elsif (length($choice)<2) { |
} elsif (length($choice)<2) { |
print "Name too short\n"; |
print "Name too short\n"; |
} elsif ($bad_domain_flag) { |
} elsif ($bad_domain_flag) { |
print "Invalid input ('$choice' conflicts with LON-CAPA namespace).\n"; |
print "Invalid input ('$choice' conflicts with LON-CAPA namespace).\n"; |
print "Please try something different than '$choice'\n"; |
print "Please try something different than '$choice'\n"; |
} elsif ($choice!~/\_/ and $choice=~/^\w+$/) { |
} 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); |
Line 275 END
|
Line 281 END
|
$r='l'; |
$r='l'; |
$flag=1; |
$flag=1; |
} else { |
} else { |
print "Invalid input (only alphanumeric characters supported).\n"; |
print "Invalid input (only alphanumeric characters, '-', and '.' supported).\n"; |
} |
} |
} |
} |
|
|
|
|
# get domain description |
# get domain description |
# accept if valid, if not valid, tell user and repeat |
# accept if valid, if not valid, tell user and repeat |
$flag=0; |
$flag=0; |
Line 348 END
|
Line 353 END
|
close(OUT); |
close(OUT); |
$lonHostID=$choice; |
$lonHostID=$choice; |
$flag=1; |
$flag=1; |
} elsif (length($choice)>15) { |
} elsif (length($choice)>45) { |
print "Name too long\n"; |
print "Name too long\n"; |
} elsif (length($choice)<4) { |
} elsif (length($choice)<4) { |
print "Name too short\n"; |
print "Name too short\n"; |
} elsif ($choice!~/\_/ and $choice=~/^\w+$/) { |
} 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, '-', and '.' supported).\n"; |
} |
} |
} |
} |
|
|
Line 372 if ($lonRole eq 'library') {
|
Line 377 if ($lonRole eq 'library') {
|
$primaryLibServer = $libservers[0]; |
$primaryLibServer = $libservers[0]; |
} |
} |
} |
} |
|
|
|
$flag=0; |
while (!$flag) { |
while (!$flag) { |
print(<<END); |
print(<<END); |
**** Domain's Primary Library Server ID **** |
**** Domain's Primary Library Server ID **** |
Line 379 This should be the LON-CAPA machine ID o
|
Line 386 This should be the LON-CAPA machine ID o
|
domain. If you only have a single library server in your domain, then |
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. |
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 |
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 |
specific home library server will be stored (e.g., configurations that |
administrators to users in the domain). |
apply to all nodes in the domain). |
END |
END |
if (defined($primaryLibServer)) { |
if (defined($primaryLibServer)) { |
print(<<END); |
print(<<END); |
Line 404 END
|
Line 411 END
|
print(OUT 'primaryLibServer'."\t".$choice."\n"); |
print(OUT 'primaryLibServer'."\t".$choice."\n"); |
close(OUT); |
close(OUT); |
$flag=1; |
$flag=1; |
} elsif (length($choice)>15) { |
} elsif (length($choice)>35) { |
print "Name too long\n"; |
print "Name too long\n"; |
} elsif (length($choice)<4) { |
} elsif (length($choice)<4) { |
print "Name too short\n"; |
print "Name too short\n"; |
} elsif ($choice!~/\_/ and $choice=~/^\w+$/) { |
} elsif ($choice!~/\_/ and $choice=~/^[\w\-.]+$/) { |
open(OUT,'>>/tmp/loncapa_updatequery.out'); |
open(OUT,'>>/tmp/loncapa_updatequery.out'); |
print(OUT 'primaryLibServer'."\t".$choice."\n"); |
print(OUT 'primaryLibServer'."\t".$choice."\n"); |
close(OUT); |
close(OUT); |
$primaryLibServer=$choice; |
$primaryLibServer=$choice; |
$flag=1; |
$flag=1; |
} else { |
} else { |
print "Invalid input (only alphanumeric characters supported).\n"; |
print "Invalid input (only alphanumeric characters, '-', and '.' supported).\n"; |
} |
} |
} |
} |
|
|
Line 427 my $lonAdmEMail;
|
Line 434 my $lonAdmEMail;
|
while (!$flag) { |
while (!$flag) { |
print(<<END); |
print(<<END); |
|
|
**** System Administrator's E-mail **** |
**** Server Administrators 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 ADMIN E-MAIL ADDRESS: |
ENTER ADMIN E-MAIL ADDRESS: |
Line 480 END
|
Line 487 END
|
} |
} |
} |
} |
|
|
|
# get protocol |
|
# accept if valid, if not valid, tell user and repeat |
|
$flag=0; |
|
while (!$flag) { |
|
print(<<END); |
|
|
|
**** Web Server Protocol **** |
|
If you plan to run the Apache server with SSL enabled, |
|
the protocol should be: https; otherwise it should be http. |
|
ENTER WEB SERVER PROTOCOL [http]: |
|
END |
|
|
|
my $choice=<>; |
|
chomp($choice); |
|
if ($choice =~ /^https?$/) { |
|
open(OUT,'>>/tmp/loncapa_updatequery.out'); |
|
print(OUT 'protocol'."\t".$choice."\n"); |
|
close(OUT); |
|
$protocol=$choice; |
|
$flag=1; |
|
} elsif ($choice eq '') { |
|
open(OUT,'>>/tmp/loncapa_updatequery.out'); |
|
print(OUT 'protocol'."\t".'http'."\n"); |
|
close(OUT); |
|
$protocol = 'http'; |
|
$flag = 1; |
|
} else { |
|
print "Invalid input (only http or https allowed).\n"; |
|
} |
|
} |
|
|
|
# get internet domain |
|
# accept if valid, if not valid, tell user and repeat |
|
$flag=0; |
|
while (!$flag) { |
|
print(<<END); |
|
|
|
**** Internet Domain Name of Your Institution **** |
|
|
|
The internet domain name used for servers at your institution |
|
should be provided. This will be similar to: ustate.edu or |
|
topcollege.ac.uk or myhostingcompany.com, i.e., the part of |
|
a server hostname which indicates to which organization the |
|
server belongs. |
|
|
|
ENTER INTERNET DOMAIN NAME: |
|
END |
|
|
|
my $choice=<>; |
|
chomp($choice); |
|
if ($choice =~/[^.]+\.[^.]+/) { |
|
open(OUT,'>>/tmp/loncapa_updatequery.out'); |
|
print(OUT 'internet domain'."\t".$choice."\n"); |
|
close(OUT); |
|
$intdom=$choice; |
|
$flag=1; |
|
} |
|
else { |
|
print "Invalid input (must be at least two levels separated by . - e.g., ustate.edu).\n"; |
|
} |
|
} |
|
|
|
# get hostname |
|
# accept if valid, if not valid, tell user and repeat |
|
$flag=0; |
|
my $posshostname; |
|
if (($hostname =~ /^[A-Za-z0-9\-]+$/) && ($intdom ne '')) { |
|
$posshostname = $hostname.'.'.$intdom; |
|
} |
|
if (($hostname =~ /^[A-Za-z0-9\-]+\.[A-Za-z0-9\-]+/) && |
|
($hostname =~ /^[A-Za-z0-9.\-]+$/)) { |
|
$posshostname = $hostname; |
|
} |
|
while (!$flag) { |
|
print(<<END); |
|
|
|
****** Hostname of the server/VM ***** |
|
|
|
The hostname of the server/VM is required. This will be similar to: |
|
somename.ustate.edu or somename.department.ustate.edu, and would be |
|
the web address which users would point their web browsers at to |
|
access the server. |
|
|
|
END |
|
|
|
if ($posshostname) { |
|
print "ENTER HOSTNAME OF SERVER [$posshostname]:\n"; |
|
} else { |
|
print "ENTER HOSTNAME OF SERVER:\n"; |
|
} |
|
|
|
my $choice=<>; |
|
chomp($choice); |
|
if (($choice =~ /^[A-Za-z0-9\-]+\.[A-Za-z0-9\-]+/) && |
|
($choice =~ /^[A-Za-z0-9.\-]+$/)) { |
|
open(OUT,'>>/tmp/loncapa_updatequery.out'); |
|
print(OUT 'hostname'."\t".$choice."\n"); |
|
close(OUT); |
|
$desiredhostname=$choice; |
|
$flag=1; |
|
} elsif (($choice eq '') && ($posshostname ne '')) { |
|
open(OUT,'>>/tmp/loncapa_updatequery.out'); |
|
print(OUT 'hostname'."\t$posshostname\n"); |
|
close(OUT); |
|
$desiredhostname = $posshostname; |
|
$flag = 1; |
|
} else { |
|
print "Invalid input (only letters, numbers, - and . allowed, with at least one .).\n"; |
|
} |
|
} |
|
|
# update loncapa.conf |
# update loncapa.conf |
my $confdir='/etc/httpd/conf/'; |
my $confdir = '/etc/httpd/conf/'; |
#my $confdir=''; |
if ('<DIST />' eq 'sles10' || '<DIST />' eq 'sles11' || '<DIST />' eq 'sles12' || '<DIST />' eq 'sles15' || '<DIST />' eq 'suse10.1' || '<DIST />' eq 'suse10.2' || '<DIST />' eq 'suse10.3' || '<DIST />' eq 'suse11.1' || '<DIST />' eq 'suse11.2' || '<DIST />' eq 'suse11.3' || '<DIST />' eq 'suse11.4' || '<DIST />' eq 'suse12.1' || '<DIST />' eq 'suse12.2' || '<DIST />' eq 'suse12.3' || '<DIST />' eq 'suse13.1' || '<DIST />' eq 'suse13.2' || '<DIST />' eq 'debian5' || '<DIST />' eq 'debian6' || '<DIST />' eq 'ubuntu6' || '<DIST />' eq 'ubuntu8' || '<DIST />' eq 'ubuntu10' || '<DIST />' eq 'ubuntu12' || '<DIST />' eq 'ubuntu14' || '<DIST />' eq 'ubuntu16' || '<DIST />' eq 'ubuntu18' || '<DIST />' eq 'ubuntu20') { |
|
$confdir = '/etc/apache2/'; |
|
} |
my $filename='loncapa.conf'; |
my $filename='loncapa.conf'; |
my %perlvar; |
my %perlvar; |
if (-e "$confdir$filename") { |
if (-e "$confdir$filename") { |
Line 514 my %perlvar;
|
Line 633 my %perlvar;
|
unless ($perlvar{'lonReceipt'} and $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"); |
foreach my $i (1..20) { |
foreach my $i (1..20) { |
$lonReceipt.=$alnum[int(rand(36))]; |
$lonReceipt.=$alnum[int(rand(36))]; |
} |
} |
Line 524 my %perlvar;
|
Line 643 my %perlvar;
|
die("Cannot output to $confdir$filename\n"); |
die("Cannot output to $confdir$filename\n"); |
foreach my $key (keys %perlvar) { |
foreach my $key (keys %perlvar) { |
my $value=$perlvar{$key}; |
my $value=$perlvar{$key}; |
|
my $line = "PerlSetVar $key $value"; |
|
if ($value eq '') { |
|
$line = '#'.$line; |
|
} |
print(OUT <<END); |
print(OUT <<END); |
PerlSetVar $key $value |
$line |
END |
END |
} |
} |
close(OUT); |
close(OUT); |
Line 533 END
|
Line 656 END
|
</perlscript> |
</perlscript> |
</file> |
</file> |
<file> |
<file> |
<target dist='default'>/</target> |
<target dist='default'>/etc/httpd/conf/</target> |
|
<target dist='sles10 sles11 sles12 sles15 suse10.1 suse10.2 suse10.3 suse11.1 suse11.2 suse11.3 suse11.4 suse12.1 suse12.2 suse12.3 suse13.1 suse13.2 debian5 debian6 ubuntu6 ubuntu8 ubuntu10 ubuntu12 ubuntu14 ubuntu16 ubuntu18 ubuntu20'>/etc/apache2/</target> |
<perlscript mode='fg'> |
<perlscript mode='fg'> |
sub securesetting { |
sub securesetting { |
my (%perlvar)=@_; |
my (%perlvar)=@_; |
Line 551 sub securesetting {
|
Line 675 sub securesetting {
|
return ($securestatus,$securenum); |
return ($securestatus,$securenum); |
} |
} |
# read values from loncapa.conf |
# read values from loncapa.conf |
my $confdir='/etc/httpd/conf/'; |
my $confdir = "<TARGET />"; |
my $filename='loncapa.conf'; |
my $filename='loncapa.conf'; |
my %perlvar; |
my %perlvar; |
my ($securestatus,$securenum); |
my ($securestatus,$securenum); |
Line 586 my ($securestatus,$securenum);
|
Line 710 my ($securestatus,$securenum);
|
unless ($perlvar{'lonReceipt'} and $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"); |
foreach my $i (1..20) { |
foreach my $i (1..20) { |
$lonReceipt.=$alnum[int(rand(36))]; |
$lonReceipt.=$alnum[int(rand(36))]; |
} |
} |
Line 605 my %perlvarstatic;
|
Line 729 my %perlvarstatic;
|
} |
} |
close(CONFIG); |
close(CONFIG); |
} |
} |
if (!$domainDescription && $lonCluster ne 'existing') { |
|
open(IN,'<../'.$lonCluster.'_domain.tab'); |
my (@hosts_files, @domain_files); |
while(<IN>) { |
if ( $lonCluster ne 'existing') { |
if (/^$perlvar{'lonDefDomain'}\:/) { |
push(@domain_files,'../'.$lonCluster.'_domain.tab', |
(undef,$domainDescription,$domainTabExtras)=split(/:/,$_,3); |
'../'.$lonCluster.'_dns_domain.tab'); |
chomp($domainDescription); |
push(@hosts_files,'../'.$lonCluster.'_hosts.tab', |
chomp($domainTabExtras); |
'../'.$lonCluster.'_dns_hosts.tab'); |
# the remianing field (primary lib server) is handled later |
} |
$domainTabExtras = join(':',(split(/:/,$domainTabExtras))[0..5]); |
push(@domain_files,'/home/httpd/lonTabs/domain.tab', |
last; |
'/home/httpd/lonTabs/dns_domain.tab'); |
} |
push(@hosts_files,'/home/httpd/lonTabs/hosts.tab', |
} |
'/home/httpd/lonTabs/dns_hosts.tab'); |
close(IN); |
|
} |
|
if (!$domainDescription) { |
if (!$domainDescription) { |
open(IN,'</home/httpd/lonTabs/domain.tab'); |
foreach my $file (@domain_files) { |
while(<IN>) { |
open(IN,'<'.$file); |
if (/^$perlvar{'lonDefDomain'}\:/) { |
while(my $line = <IN>) { |
(undef,$domainDescription,$domainTabExtras)=split(/:/,$_,3); |
if ($line =~ /^\Q$perlvar{'lonDefDomain'}\E\:/) { |
chomp($domainDescription); |
(undef,$domainDescription,$domainTabExtras)=split(/:/,$line,3); |
chomp($domainTabExtras); |
chomp($domainDescription); |
# the remianing field (primary lib server) is handled later |
chomp($domainTabExtras); |
$domainTabExtras = join(':',(split(/:/,$domainTabExtras))[0-5]); |
# the remaining field (primary lib server) is handled later |
last; |
$domainTabExtras = join(':',(split(/:/,$domainTabExtras))[0..5]); |
} |
last; |
} |
} |
close(IN); |
} |
|
close(IN); |
|
last if ($domainDescription); |
|
} |
} |
} |
if (!$primaryLibServer and $lonCluster ne 'existing') { |
|
open(IN,'<../'.$lonCluster.'_domain.tab'); |
if ((!$protocol) || (!$desiredhostname)) { |
while(<IN>) { |
foreach my $file (@hosts_files) { |
if (/^$perlvar{'lonDefDomain'}\:/) { |
open(IN,'<'.$file); |
(undef,undef,undef,undef,undef,undef,undef,undef, |
while(my $line = <IN>) { |
$primaryLibServer)=split(/:/,$_); |
if ($line =~ /^\Q$perlvar{'lonHostID'}\E:\Q$perlvar{'lonDefDomain'}\E\:(?:access|library)\:([^:]+)\:(https?)/) { |
chomp($primaryLibServer); |
if (!$desiredhostname) { |
|
$desiredhostname = $1; |
|
} |
|
if (!$protocol) { |
|
$protocol = $2; |
|
chomp($protocol); |
|
} |
|
last; |
|
} |
} |
} |
} |
} |
close(IN); |
} |
if (!$primaryLibServer) { |
|
open(IN,'<../'.$lonCluster.'_hosts.tab'); |
if (!$protocol) { |
while(<IN>) { |
$protocol = 'http'; |
if (/^([^\:]+)\:\Q$perlvar{'lonDefDomain'}\E\:library\:/) { |
} |
push(@libservers,$1); |
|
|
if (!$intdom) { |
|
foreach my $file (@hosts_files) { |
|
open(IN,'<'.$file); |
|
while(my $line = <IN>) { |
|
if ($line =~ /^\Q$perlvar{'lonHostID'}\E:\Q$perlvar{'lonDefDomain'}\E\:(?:access|library)\:[^:]+\:https?\:([^:]+)/) { |
|
$intdom = $1; |
|
chomp($intdom); |
|
last; |
} |
} |
} |
} |
close(IN); |
|
if (@libservers == 1) { |
|
$primaryLibServer = $libservers[0]; |
|
} |
|
} |
} |
} |
} |
if (!$primaryLibServer) { |
|
open(IN,'</home/httpd/lonTabs/domain.tab'); |
while(!$primaryLibServer && (@hosts_files || @domain_files)) { |
while(<IN>) { |
my $file = shift(@domain_files); |
if (/^$perlvar{'lonDefDomain'}\:/) { |
open(IN,'<'.$file); |
(undef,undef,undef,undef,undef,undef,undef,undef, |
while(my $line = <IN>) { |
$primaryLibServer)=split(/:/,$_); |
if ($line =~ /^\Q$perlvar{'lonDefDomain'}\E\:/) { |
|
$primaryLibServer=(split(/:/,$line))[8]; |
chomp($primaryLibServer); |
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]; |
|
} |
|
} |
} |
|
close(IN); |
|
last if ($primaryLibServer); |
|
$file = shift(@hosts_files); |
|
open(IN,'<'.$file); |
|
while(my $line = <IN>) { |
|
if ($line =~ /^([^\:]+)\:\Q$perlvar{'lonDefDomain'}\E\:library\:/) { |
|
push(@libservers,$1); |
|
} |
|
} |
|
# make list unique |
|
@libservers = keys(%{{ map { $_ => 1 } (@libservers) }}); |
|
close(IN); |
|
if (@libservers == 1) { |
|
$primaryLibServer = $libservers[0]; |
|
} |
} |
} |
|
|
# implement editing logic below, interactively |
# implement editing logic below, interactively |
# update loncapa.conf until 12 is entered |
# update loncapa.conf until 15 is entered |
|
|
$flag=0; |
my $flag=0; |
|
|
while (!$flag) { |
while (!$flag) { |
print(<<END); |
print(<<END); |
Line 694 This is now the current configuration of
|
Line 835 This is now the current configuration of
|
2) Domain Description: $domainDescription |
2) Domain Description: $domainDescription |
3) Machine Name: $perlvar{'lonHostID'} |
3) Machine Name: $perlvar{'lonHostID'} |
4) ID of primary library server for domain: $primaryLibServer |
4) ID of primary library server for domain: $primaryLibServer |
5) System Administrator's E-mail Address: $perlvar{'lonAdmEMail'} |
5) Server Administrator's E-mail Address: $perlvar{'lonAdmEMail'} |
6) Support E-mail Address: $perlvar{'lonSupportEMail'} |
6) Support E-mail Address: $perlvar{'lonSupportEMail'} |
7) Role: $perlvar{'lonRole'} |
7) Web Server Protocol (http or https): $protocol |
8) Cache Expiration Time: $perlvar{'lonExpire'} |
8) Internet Domain Name: $intdom |
9) Server Load: $perlvar{'lonLoadLim'} |
9) Hostname: $desiredhostname |
10) User Load: $perlvar{'lonUserLoadLim'} |
10) Role: $perlvar{'lonRole'} |
11) Allow only secure connections: $securestatus |
11) Cache Expiration Time: $perlvar{'lonExpire'} |
12) Everything is correct up above |
12) Server Load: $perlvar{'lonLoadLim'} |
|
13) User Load: $perlvar{'lonUserLoadLim'} |
|
14) Allow only secure connections: $securestatus |
|
15) Everything is correct up above |
END |
END |
|
|
my $error=''; |
my @error; |
foreach my $v ($perlvar{'lonDefDomain'},$perlvar{'lonHostID'}) { |
foreach my $v ($perlvar{'lonDefDomain'},$perlvar{'lonHostID'}) { |
if (length($v)>16) { $error.="\nName $v too long"; } |
if (length($v)>35) { push(@error,"Name $v too long"); } |
if (length($v)<2) { $error.="\nName $v too short"; } |
if (length($v)<2) { push(@error,"Name $v too short"); } |
if ($v=~/capa/i) { |
if ($v=~/capa/i) { |
if ($v!~/^oucapa\d+$/ && |
if ($v!~/^oucapa\d+$/ && |
($v!~/^capa\d+$/ && $perlvar{'lonDefDomain'} eq 'uwsp')) { |
($v!~/^capa\d+$/ && $perlvar{'lonDefDomain'} eq 'uwsp')) { |
$error.="\nName $v contains 'capa'"; |
push(@error,"Name $v contains 'capa'"); |
} |
} |
} |
} |
foreach my $bad ('res','raw','userfiles','priv','adm','uploaded', |
foreach my $bad ('res','raw','userfiles','priv','adm','uploaded', |
'editupload') { |
'editupload') { |
$error.="\nName $v reserved." if $v eq $bad; |
push(@error,"\nName $v reserved.") if $v eq $bad; |
} |
} |
if ($v=~/\W/) { $error.="\nName $v contains special characters"; } |
if ($v=~/[^\w\-.]/) { push(@error,"Name $v contains special characters"); } |
} |
} |
if ($domainDescription!~/^[\(\)\-\w\s,]+$/) { |
if ($domainDescription =~ /^\s*$/) { |
$error.="\nDomain Description contains special characters"; |
push(@error,"Domain Description is blank."); |
|
} elsif ($domainDescription!~/^[\(\)\-\w\s,]+$/) { |
|
push(@error,"Domain Description contains special characters."); |
} |
} |
foreach my $v ($perlvar{'lonExpire'},$perlvar{'lonLoadLim'}) { |
foreach my $v ($perlvar{'lonExpire'},$perlvar{'lonLoadLim'}) { |
unless ($v=~/^[\d+\.]+$/) { $error.="\nNumber expected instead of $v"; } |
unless ($v=~/^[\d+\.]+$/) { push(@error,"Number expected instead of $v"); } |
} |
} |
unless (($perlvar{'lonRole'} eq 'library') || ($perlvar{'lonRole'} eq 'access')) { |
unless (($perlvar{'lonRole'} eq 'library') || ($perlvar{'lonRole'} eq 'access')) { |
$error.="\nInvalid Role"; |
push(@error,"Invalid Role"); |
|
} |
|
|
|
unless (($protocol eq 'http') || ($protocol eq 'https')) { |
|
push(@error,"Invalid Protocol (must be http or https"); |
|
} |
|
|
|
if (!defined($intdom)) { |
|
push(@error,"No internet domain name designated. Enter something like ustate.edu"); |
|
} elsif ($intdom !~ /[^.]+\.\w{2,6}$/) { |
|
push(@error,"Invalid Internet domain name (must be at least two levels separated by . - e.g., ustate.edu"); |
} |
} |
|
|
if (!defined($primaryLibServer)) { |
if (!defined($primaryLibServer)) { |
if (@libservers > 0) { |
if (@libservers > 0) { |
$error .= "No primary library server ID designated. Choose from: ".join(',',sort(@libservers)); |
push(@error,"No primary library server ID designated. Choose from: ".join(',',sort(@libservers))); |
} else { |
} else { |
$error .= "No library servers in this domain (including current server)"; |
push(@error,"No library servers in this domain (including current server)"); |
} |
} |
} else { |
} else { |
if (length($primaryLibServer)>16) { $error.="\nPrimary Library Server ID: $primaryLibServer too long"; } |
if (length($primaryLibServer)>35) { push(@error,"Primary Library Server ID: $primaryLibServer too long"); } |
if (length($primaryLibServer)<2) { $error.="\nPrimary Library Server ID: $primaryLibServer too short"; } |
if (length($primaryLibServer)<2) { push(@error,"Primary Library Server ID: $primaryLibServer too short"); } |
if ($primaryLibServer =~/capa/i) { |
if ($primaryLibServer =~/capa/i) { |
if ($primaryLibServer!~/^oucapa\d+$/ && |
if ($primaryLibServer!~/^oucapa\d+$/ && |
($primaryLibServer!~/^capa\d+$/ && $perlvar{'lonDefDomain'} eq 'uwsp')) { |
($primaryLibServer!~/^capa\d+$/ && $perlvar{'lonDefDomain'} eq 'uwsp')) { |
$error.="\nPrimary library server ID $primaryLibServer contains 'capa'"; |
push(@error,"Primary library server ID $primaryLibServer contains 'capa'") |
} |
} |
} |
} |
foreach my $bad ('res','raw','userfiles','priv','adm','uploaded', |
foreach my $bad ('res','raw','userfiles','priv','adm','uploaded', |
'editupload') { |
'editupload') { |
$error.="\nPrimary library server ID $primaryLibServer reserved." if $primaryLibServer eq $bad; |
push(@error,"Primary library server ID $primaryLibServer reserved.") if $primaryLibServer eq $bad; |
} |
} |
if ($primaryLibServer=~/\W/) { $error.="\nPrimary library server ID $primaryLibServer contains special characters"; } |
if ($primaryLibServer=~/[^\w\-.]/) { push(@error,"Primary library server ID $primaryLibServer contains special characters"); } |
} |
} |
|
|
|
|
if ($error) { print "\n*** ERRORS: $error\n"; } |
if (@error) { print "\n*** ERRORS: \n\t".join("\n\t",@error)."\n"; } |
print(<<END); |
print(<<END); |
ENTER A CHOICE OF 1-11 TO CHANGE, otherwise ENTER 12: |
ENTER A CHOICE OF 1-14 TO CHANGE, otherwise ENTER 15: |
END |
END |
my $choice=<>; |
my $choice=<>; |
chomp($choice); |
chomp($choice); |
Line 809 END
|
Line 965 END
|
} |
} |
elsif ($choice==5) { |
elsif ($choice==5) { |
print(<<END); |
print(<<END); |
5) System Administrator's E-mail Address: $perlvar{'lonAdmEMail'} |
5) Server Administrator's E-mail Address: $perlvar{'lonAdmEMail'} |
ENTER NEW VALUE: |
ENTER NEW VALUE: |
END |
END |
my $choice2=<>; |
my $choice2=<>; |
Line 827 END
|
Line 983 END
|
} |
} |
elsif ($choice==7) { |
elsif ($choice==7) { |
print(<<END); |
print(<<END); |
7) Role: $perlvar{'lonRole'} |
7) Server Protocol (http or https): |
|
ENTER NEW VALUE: (this should be either 'http' or 'https' |
|
if in doubt set to 'http'): |
|
END |
|
my $choice2=<>; |
|
chomp($choice2); |
|
$protocol=$choice2; |
|
} |
|
elsif ($choice==8) { |
|
print(<<END); |
|
8) Internet Domain Name of Institution |
|
ENTER NEW VALUE: |
|
|
|
END |
|
my $choice2=<>; |
|
chomp($choice2); |
|
$intdom=$choice2; |
|
} |
|
elsif ($choice==9) { |
|
print(<<END); |
|
9) Hostname of Server/VM |
|
ENTER NEW VALUE: |
|
|
|
END |
|
my $choice2=<>; |
|
chomp($choice2); |
|
$desiredhostname=$choice2; |
|
} |
|
|
|
elsif ($choice==10) { |
|
print(<<END); |
|
10) Role: $perlvar{'lonRole'} |
ENTER NEW VALUE (this should be either 'access' or 'library' |
ENTER NEW VALUE (this should be either 'access' or 'library' |
if in doubt select 'library'): |
if in doubt select 'library'): |
END |
END |
Line 835 END
|
Line 1022 END
|
chomp($choice2); |
chomp($choice2); |
$perlvar{'lonRole'}=$choice2; |
$perlvar{'lonRole'}=$choice2; |
} |
} |
elsif ($choice==8) { |
elsif ($choice==11) { |
print(<<END); |
print(<<END); |
8) Cache Expiration Time: $perlvar{'lonExpire'} |
11) Cache Expiration Time: $perlvar{'lonExpire'} |
ENTER NEW VALUE (in seconds, 86400 is a reasonable 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==9) { |
elsif ($choice==12) { |
print(<<END); |
print(<<END); |
9) Server Load: $perlvar{'lonLoadLim'} |
12) 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==10) { |
elsif ($choice==13) { |
print(<<END); |
print(<<END); |
10) User Load: $perlvar{'lonUserLoadLim'} |
13) User Load: $perlvar{'lonUserLoadLim'} |
Numer of users that can login before machine is 'overloaded' |
Numer of users that can login before machine is 'overloaded' |
ENTER NEW VALUE (integer value, 0 means there is no limit): |
ENTER NEW VALUE (integer value, 0 means there is no limit): |
END |
END |
Line 863 END
|
Line 1050 END
|
chomp($choice2); |
chomp($choice2); |
$perlvar{'lonUserLoadLim'}=$choice2; |
$perlvar{'lonUserLoadLim'}=$choice2; |
} |
} |
elsif ($choice==11) { |
elsif ($choice==14) { |
print(<<END); |
print(<<END); |
11) Allow only secure connections: $securestatus |
14) Allow only secure connections: $securestatus |
The Lon-CAPA communication daemons lonc and lond can be configured to |
The Lon-CAPA communication daemons lonc and lond can be configured to |
allow only secure connections by default. |
allow only secure connections by default. |
|
|
Line 877 POSSIBLE CHOICES:
|
Line 1064 POSSIBLE CHOICES:
|
3) allow insecure connections to this machine but only allow connections |
3) allow insecure connections to this machine but only allow connections |
to machines that support secure connections |
to machines that support secure connections |
4) allow insecure connections |
4) allow insecure connections |
ENTER NEW VALUE (currenly $securenum): |
ENTER NEW VALUE (currently $securenum): |
END |
END |
my $choice2=<>; |
my $choice2=<>; |
chomp($choice2); |
chomp($choice2); |
Line 892 END
|
Line 1079 END
|
} |
} |
($securestatus,$securenum)=&securesetting(%perlvar); |
($securestatus,$securenum)=&securesetting(%perlvar); |
} |
} |
elsif (($choice==12) && (!$error)) { |
elsif (($choice==15) && (!@error)) { |
$flag=1; |
$flag=1; |
} |
} |
else { |
else { |
print "Invalid input.\n"; |
print "Invalid input.\n"; |
} |
} |
} |
} |
|
|
open(OUT,">$confdir$filename") or |
open(OUT,">$confdir$filename") or |
die("Cannot output to $confdir$filename\n"); |
die("Cannot output to $confdir$filename\n"); |
foreach my $key (keys %perlvar) { |
foreach my $key (keys %perlvar) { |
my $value=$perlvar{$key}; |
my $value=$perlvar{$key}; |
|
my $line = "PerlSetVar $key $value"; |
|
if ($value eq '') { |
|
$line = '#'.$line; |
|
} |
print(OUT <<END) unless $perlvarstatic{$key}; |
print(OUT <<END) unless $perlvarstatic{$key}; |
PerlSetVar $key $value |
$line |
END |
END |
} |
} |
close(OUT); |
close(OUT); |
Line 914 END
|
Line 1106 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 -f`;chomp($hostname); |
if ($desiredhostname eq '') { |
$date=`date -I`; chomp($date); |
my $hostname=`hostname -f`;chomp($hostname); |
$lonHostID=$perlvar{'lonHostID'}; |
$desiredhostname = $hostname; |
$lonHostID=~s/\W//g; |
} |
$lineexistflag=0; |
my $date=`date -I`; chomp($date); |
$hostidexistflag=0; |
my $lonHostID=$perlvar{'lonHostID'}; |
$line2insert=<<END; |
$lonHostID=~s/[^\w\-.]//g; |
$perlvar{'lonHostID'}:$perlvar{'lonDefDomain'}:$perlvar{'lonRole'}:$hostname |
my $lineexistflag=0; |
|
my $hostidexistflag=0; |
|
my $line2insert=<<END; |
|
$perlvar{'lonHostID'}:$perlvar{'lonDefDomain'}:$perlvar{'lonRole'}:$desiredhostname:$protocol:$intdom |
END |
END |
$domaininsert="$perlvar{'lonDefDomain'}:$domainDescription:$domainTabExtras:$primaryLibServer\n"; |
if (!$domainTabExtras) { |
|
$domainTabExtras=':::::'; |
|
} |
|
my $domaininsert="$perlvar{'lonDefDomain'}:$domainDescription:$domainTabExtras:$primaryLibServer\n"; |
if ($lonCluster eq 'standalone') { |
if ($lonCluster eq 'standalone') { |
open(OUT,'>../'.$lonCluster.'_hosts.tab') or |
open(OUT,'>../'.$lonCluster.'_hosts.tab') or |
die('file generation error'); |
die('file generation error'); |
print(OUT $line2insert); |
print(OUT $line2insert); |
|
print OUT ("^$desiredhostname:$protocol\n"); |
|
close(OUT); |
|
open(OUT,'>../'.$lonCluster.'_dns_hosts.tab') or |
|
die('file generation error'); |
|
print(OUT $line2insert); |
close(OUT); |
close(OUT); |
open(OUT,'>../'.$lonCluster.'_domain.tab') or |
open(OUT,'>../'.$lonCluster.'_domain.tab') or |
die('file generation error'); |
die('file generation error'); |
print(OUT $domaininsert); |
print(OUT $domaininsert); |
close(OUT); |
close(OUT); |
|
open(OUT,'>../'.$lonCluster.'_dns_domain.tab') or |
|
die('file generation error'); |
|
print(OUT $domaininsert); |
|
close(OUT); |
} |
} |
if ($flag==1) { |
if ($flag==1) { |
`rm -f ../hosts.tab`; |
`rm -f ../hosts.tab`; |
open(IN,'<../'.$lonCluster.'_hosts.tab'); |
`rm -f ../dns_hosts.tab`; |
while(<IN>) { |
`ln -s ${lonCluster}_dns_hosts.tab ../dns_hosts.tab`; |
if (/^$line2insert$/) { |
open(IN,'<../'.$lonCluster.'_dns_hosts.tab'); |
|
while(my $line = <IN>) { |
|
if ($line =~ /^\Q$line2insert\E$/) { |
$lineexistflag=1; |
$lineexistflag=1; |
} |
} |
if (/^$lonHostID\:/) { |
if ($line =~ /^\Q$lonHostID\E\:/) { |
$hostidexistflag=1; |
$hostidexistflag=1; |
} |
} |
} |
} |
Line 949 END
|
Line 1158 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/${lonCluster}_hosts.tab. The entry inside |
loncapa/loncom/${lonCluster}_dns_hosts.tab. The entry inside |
${lonCluster}_hosts.tab does not match your settings. |
${lonCluster}_dns_hosts.tab does not match your settings. |
The entry inside ${lonCluster}_hosts.tab is being replaced |
An entry inside ${lonCluster}_hosts.tab will be made |
with your new values. |
with your new values. |
END |
END |
`grep -v "$lonHostID:" ../${lonCluster}_hosts.tab > ../new_${lonCluster}_hosts.tab`; |
`grep -v "$lonHostID:" ../${lonCluster}_hosts.tab > ../new_${lonCluster}_hosts.tab`; |
Line 961 END
|
Line 1170 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 |
`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:$protocol:$intdom:$date" installrecord\@mail.lon-capa.org`; |
} |
} |
elsif ($hostidexistflag and $lineexistflag) { |
elsif ($hostidexistflag and $lineexistflag) { |
print <<END; |
print <<END; |
Entry exists in ${lonCluster}_hosts.tab. |
Entry exists in ${lonCluster}_dns_hosts.tab. Making duplicate entry in ${lonCluster}_hosts.tab |
END |
END |
`ln -s ${lonCluster}_hosts.tab ../hosts.tab`; |
`grep -v "$lonHostID:" ../${lonCluster}_hosts.tab > ../new_${lonCluster}_hosts.tab`; |
|
open(OUT,'>>../new_'.$lonCluster.'_hosts.tab') or |
|
die("cannot open loncom/${lonCluster}_hosts.tab for output\n"); |
|
print(OUT $line2insert); |
|
close(OUT); |
|
`ln -s new_${lonCluster}_hosts.tab ../hosts.tab`; |
# email appropriate message |
# email appropriate message |
`echo "STABLEUPDATE:$lonCluster:$lonHostID:$date:$line2insert" | mail -s "STABLEUPDATE:$lonCluster:$lonHostID:$date" installrecord\@mail.lon-capa.org`; |
`echo "STABLEUPDATE:$lonCluster:$lonHostID:$date:$line2insert" | mail -s "STABLEUPDATE:$lonCluster:$lonHostID:$protocol:$intdom:$date" installrecord\@mail.lon-capa.org`; |
} |
} |
elsif (!$hostidexistflag and !$lineexistflag) { |
elsif (!$hostidexistflag and !$lineexistflag) { |
print <<END; |
print <<END; |
Line 982 END
|
Line 1196 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 |
`echo "INSERT:$lonCluster:$lonHostID:$date:$line2insert" | mail -s "INSERT:$lonCluster:$lonHostID:$date" installrecord\@mail.lon-capa.org`; |
`echo "INSERT:$lonCluster:$lonHostID:$date:$line2insert" | mail -s "INSERT:$lonCluster:$lonHostID:$protocol:$intdom:$date" installrecord\@mail.lon-capa.org`; |
} |
} |
} |
} |
$lineexistflag=0; |
$lineexistflag=0; |
|
my $domainexistflag=0; |
if ($flag==1) { |
if ($flag==1) { |
`rm -f ../domain.tab`; |
`rm -f ../domain.tab`; |
open(IN,'<../'.$lonCluster.'_domain.tab'); |
`rm -f ../dns_domain.tab`; |
while(<IN>) { |
`ln -s ${lonCluster}_dns_domain.tab ../dns_domain.tab`; |
if (/^$domaininsert$/) { |
open(IN,'<../'.$lonCluster.'_dns_domain.tab'); |
|
while(my $line = <IN>) { |
|
if ($line =~/^\Q$domaininsert\E$/) { |
$lineexistflag=1; |
$lineexistflag=1; |
} |
} |
if (/^$perlvar{'lonDefDomain'}\:/) { |
if ($line =~/^\Q$perlvar{'lonDefDomain'}\E\:/) { |
$domainexistflag=1; |
$domainexistflag=1; |
} |
} |
} |
} |
Line 1001 END
|
Line 1218 END
|
if ($domainexistflag and !$lineexistflag) { |
if ($domainexistflag and !$lineexistflag) { |
print <<END; |
print <<END; |
WARNING: $perlvar{'lonDefDomain'} already exists inside |
WARNING: $perlvar{'lonDefDomain'} already exists inside |
loncapa/loncom/${lonCluster}_domain.tab. The entry inside |
loncapa/loncom/${lonCluster}_dns_domain.tab. The entry inside |
${lonCluster}_domain.tab does not match your settings. |
${lonCluster}_dns_domain.tab does not match your settings. |
The entry inside ${lonCluster}_domain.tab is being replaced |
An entry will be made in inside ${lonCluster}_domain.tab |
with your new values. |
with your new values. |
END |
END |
`grep -v "$perlvar{'lonDefDomain'}:" ../${lonCluster}_domain.tab > ../new_${lonCluster}_domain.tab`; |
`grep -v "$perlvar{'lonDefDomain'}:" ../${lonCluster}_domain.tab > ../new_${lonCluster}_domain.tab`; |
Line 1013 END
|
Line 1230 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 |
`echo "REPLACEdom:$lonCluster:$lonHostID:$date:$domaninsert" | mail -s "REPLACEdom:$lonCluster:$lonHostID:$date" installrecord\@mail.lon-capa.org`; |
`echo "REPLACEdom:$lonCluster:$lonHostID:$date:$domaininsert" | mail -s "REPLACEdom:$lonCluster:$lonHostID:$date" installrecord\@mail.lon-capa.org`; |
} |
} |
elsif ($domainexistflag and $lineexistflag) { |
elsif ($domainexistflag and $lineexistflag) { |
|
`grep -v "$perlvar{'lonDefDomain'}:" ../${lonCluster}_domain.tab > ../new_${lonCluster}_domain.tab`; |
|
open(OUT,'>>../new_'.$lonCluster.'_domain.tab') or |
|
die("cannot open loncom/${lonCluster}_domain.tab for output\n"); |
|
print(OUT $domaininsert); |
|
close(OUT); |
print <<END; |
print <<END; |
Entry exists in ${lonCluster}_domain.tab. |
Entry exists in ${lonCluster}_dns_domain.tab. Making duplicate entry in ${lonCluster}_domain.tab |
END |
END |
`ln -s ${lonCluster}_domain.tab ../domain.tab`; |
`ln -s new_${lonCluster}_domain.tab ../domain.tab`; |
# email appropriate message |
# email appropriate message |
`echo "STABLEUPDATEdom:$lonCluster:$lonHostID:$date:$domaininsert" | mail -s "STABLEUPDATEdom:$lonCluster:$lonHostID:$date" installrecord\@mail.lon-capa.org`; |
`echo "STABLEUPDATEdom:$lonCluster:$lonHostID:$date:$domaininsert" | mail -s "STABLEUPDATEdom:$lonCluster:$lonHostID:$date" installrecord\@mail.lon-capa.org`; |
} |
} |