version 1.33, 2004/06/29 15:18:41
|
version 1.84.2.5, 2024/07/06 16:01:11
|
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. |
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 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 { |
|
print <<END; |
|
There is no existing /home/httpd/lonTabs/$file |
END |
END |
die(''); |
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) { |
elsif ($choice==26) { |
Line 129 END
|
Line 126 END
|
$|=1; |
$|=1; |
my $domainDescription; |
my $domainDescription; |
my $domainTabExtras; |
my $domainTabExtras; |
|
my $primaryLibServer; |
|
my $protocol; |
|
my $intdom; |
|
my $desiredhostname; |
|
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 159 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 196 while (!$flag) {
|
Line 202 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 205 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. |
examples might be "msu" or "bionet" or "vermontcc"] |
Please make this name short AND descriptive of your organization. |
|
Domain names are close to impossible to change later!!! |
|
Good examples might be "msu" or "bionet" or "vermontcc". |
|
Bad examples are "physics" (too general) |
|
or "michiganstateuniversity" (too long) |
|
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 |
|
- we don't know of one) |
|
or "mydomain" (what is that?) |
|
Avoid multiple domains at the same institution, even if it means that you |
|
have to actually work together with your colleagues. You can still run |
|
multiple library servers within the same domain. |
|
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) |
|
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. |
|
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 227 END
|
Line 251 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 266 END
|
close(OUT); |
close(OUT); |
$lonDefDomain=$choice; |
$lonDefDomain=$choice; |
$flag=1; |
$flag=1; |
} |
} elsif (length($choice)>35) { |
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 (only alphanumeric characters, '-', and '.' supported).\n"; |
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"; |
|
} |
} |
} |
} |
|
|
|
|
# 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 293 if ($lonDefDomain) {
|
Line 321 if ($lonDefDomain) {
|
print(<<END); |
print(<<END); |
|
|
**** Machine ID Name **** |
**** Machine ID Name **** |
[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 344 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)>45) { |
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 { |
|
print "Invalid input (only alphanumeric characters, '-', and '.' supported).\n"; |
} |
} |
else { |
|
print "Invalid input (only alphanumeric characters supported).\n"; |
|
} |
|
} |
} |
|
|
|
# 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]; |
|
} |
|
} |
|
|
|
$flag=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., configurations that |
|
apply to all nodes 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)>35) { |
|
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, '-', and '.' supported).\n"; |
|
} |
|
} |
|
|
|
|
# get admin e-mail address |
# 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; |
Line 342 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 395 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' || '<DIST />' eq 'ubuntu22' || '<DIST />' eq 'ubuntu24' || '<DIST />' eq 'debian10' || '<DIST />' eq 'debian11' || '<DIST />' eq 'debian12') { |
|
$confdir = '/etc/apache2/'; |
|
} |
my $filename='loncapa.conf'; |
my $filename='loncapa.conf'; |
my %perlvar; |
my %perlvar; |
if (-e "$confdir$filename") { |
if (-e "$confdir$filename") { |
Line 429 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 439 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 448 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 debian10 debian11 debian12 ubuntu6 ubuntu8 ubuntu10 ubuntu12 ubuntu14 ubuntu16 ubuntu18 ubuntu20 ubuntu22 ubuntu24'>/etc/apache2/</target> |
<perlscript mode='fg'> |
<perlscript mode='fg'> |
sub securesetting { |
sub securesetting { |
my (%perlvar)=@_; |
my (%perlvar)=@_; |
Line 466 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 501 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 520 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'); |
last; |
} |
} |
push(@domain_files,'/home/httpd/lonTabs/domain.tab', |
} |
'/home/httpd/lonTabs/dns_domain.tab'); |
close(IN); |
push(@hosts_files,'/home/httpd/lonTabs/hosts.tab', |
} |
'/home/httpd/lonTabs/dns_hosts.tab'); |
|
|
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); |
last; |
chomp($domainTabExtras); |
} |
# the remaining field (primary lib server) is handled later |
} |
$domainTabExtras = join(':',(split(/:/,$domainTabExtras))[0..5]); |
close(IN); |
last; |
|
} |
|
} |
|
close(IN); |
|
last if ($domainDescription); |
|
} |
|
} |
|
|
|
if ((!$protocol) || (!$desiredhostname)) { |
|
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?)/) { |
|
if (!$desiredhostname) { |
|
$desiredhostname = $1; |
|
} |
|
if (!$protocol) { |
|
$protocol = $2; |
|
chomp($protocol); |
|
} |
|
last; |
|
} |
|
} |
|
} |
|
} |
|
|
|
if (!$protocol) { |
|
$protocol = 'http'; |
|
} |
|
|
|
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; |
|
} |
|
} |
|
} |
|
} |
|
|
|
while(!$primaryLibServer && (@hosts_files || @domain_files)) { |
|
my $file = shift(@domain_files); |
|
open(IN,'<'.$file); |
|
while(my $line = <IN>) { |
|
if ($line =~ /^\Q$perlvar{'lonDefDomain'}\E\:/) { |
|
$primaryLibServer=(split(/:/,$line))[8]; |
|
chomp($primaryLibServer); |
|
} |
|
} |
|
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 8 is entered |
# update loncapa.conf until 15 is entered |
|
|
$flag=0; |
my $flag=0; |
|
|
while (!$flag) { |
while (!$flag) { |
print(<<END); |
print(<<END); |
Line 558 This is now the current configuration of
|
Line 834 This is now the current configuration of
|
1) Domain Name: $perlvar{'lonDefDomain'} |
1) Domain Name: $perlvar{'lonDefDomain'} |
2) Domain Description: $domainDescription |
2) Domain Description: $domainDescription |
3) Machine Name: $perlvar{'lonHostID'} |
3) Machine Name: $perlvar{'lonHostID'} |
4) System Administrator's E-mail Address: $perlvar{'lonAdmEMail'} |
4) ID of primary library server for domain: $primaryLibServer |
5) Support E-mail Address: $perlvar{'lonSupportEMail'} |
5) Server Administrator's E-mail Address: $perlvar{'lonAdmEMail'} |
6) Role: $perlvar{'lonRole'} |
6) Support E-mail Address: $perlvar{'lonSupportEMail'} |
7) Cache Expiration Time: $perlvar{'lonExpire'} |
7) Web Server Protocol (http or https): $protocol |
8) Server Load: $perlvar{'lonLoadLim'} |
8) Internet Domain Name: $intdom |
9) User Load: $perlvar{'lonUserLoadLim'} |
9) Hostname: $desiredhostname |
10) Allow only secure connections: $securestatus |
10) Role: $perlvar{'lonRole'} |
11) Everything is correct up above |
11) Cache Expiration Time: $perlvar{'lonExpire'} |
END |
12) Server Load: $perlvar{'lonLoadLim'} |
my $hbug=-1; |
13) User Load: $perlvar{'lonUserLoadLim'} |
my $dbug=-1; |
14) Allow only secure connections: $securestatus |
{ |
15) Everything is correct up above |
my $v=$perlvar{'lonHostID'}; |
END |
$hbug=0; |
|
$hbug=1 if $v=~/\W/; |
my @error; |
$hbug=1 if $v=~/\_/; |
foreach my $v ($perlvar{'lonDefDomain'},$perlvar{'lonHostID'}) { |
} |
if (length($v)>35) { push(@error,"Name $v too long"); } |
{ |
if (length($v)<2) { push(@error,"Name $v too short"); } |
my $v=$1; |
if ($v=~/capa/i) { |
$dbug=0; |
if ($v!~/^oucapa\d+$/ && |
$dbug=1 if $v=~/\W/; |
($v!~/^capa\d+$/ && $perlvar{'lonDefDomain'} eq 'uwsp')) { |
$dbug=1 if $v=~/\_/; |
push(@error,"Name $v contains 'capa'"); |
} |
} |
|
} |
if ($hbug) { |
foreach my $bad ('res','raw','userfiles','priv','adm','uploaded', |
print "**** ERROR **** ". |
'editupload') { |
"Invalid lonHostID (should only be letters and/or digits)\n"; |
push(@error,"\nName $v reserved.") if $v eq $bad; |
} |
} |
if ($dbug) { |
if ($v=~/[^\w\-.]/) { push(@error,"Name $v contains special characters"); } |
print "**** ERROR **** ". |
} |
"Invalid lonDefDomain (should only be letters and/or digits)\n"; |
if ($domainDescription =~ /^\s*$/) { |
|
push(@error,"Domain Description is blank."); |
|
} elsif ($domainDescription!~/^[\(\)\-\w\s,]+$/) { |
|
push(@error,"Domain Description contains special characters."); |
|
} |
|
foreach my $v ($perlvar{'lonExpire'},$perlvar{'lonLoadLim'}) { |
|
unless ($v=~/^[\d+\.]+$/) { push(@error,"Number expected instead of $v"); } |
|
} |
|
unless (($perlvar{'lonRole'} eq 'library') || ($perlvar{'lonRole'} eq 'access')) { |
|
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 (@libservers > 0) { |
|
push(@error,"No primary library server ID designated. Choose from: ".join(',',sort(@libservers))); |
|
} else { |
|
push(@error,"No library servers in this domain (including current server)"); |
|
} |
|
} else { |
|
if (length($primaryLibServer)>35) { push(@error,"Primary Library Server ID: $primaryLibServer too long"); } |
|
if (length($primaryLibServer)<2) { push(@error,"Primary Library Server ID: $primaryLibServer too short"); } |
|
if ($primaryLibServer =~/capa/i) { |
|
if ($primaryLibServer!~/^oucapa\d+$/ && |
|
($primaryLibServer!~/^capa\d+$/ && $perlvar{'lonDefDomain'} eq 'uwsp')) { |
|
push(@error,"Primary library server ID $primaryLibServer contains 'capa'") |
|
} |
|
} |
|
foreach my $bad ('res','raw','userfiles','priv','adm','uploaded', |
|
'editupload') { |
|
push(@error,"Primary library server ID $primaryLibServer reserved.") if $primaryLibServer eq $bad; |
|
} |
|
if ($primaryLibServer=~/[^\w\-.]/) { push(@error,"Primary library server ID $primaryLibServer contains special characters"); } |
} |
} |
|
|
|
|
|
if (@error) { print "\n*** ERRORS: \n\t".join("\n\t",@error)."\n"; } |
print(<<END); |
print(<<END); |
ENTER A CHOICE OF 1-10 TO CHANGE, otherwise ENTER 11: |
ENTER A CHOICE OF 1-14 TO CHANGE, otherwise ENTER 15: |
END |
END |
my $choice=<>; |
my $choice=<>; |
chomp($choice); |
chomp($choice); |
Line 632 END
|
Line 951 END
|
} |
} |
elsif ($choice==4) { |
elsif ($choice==4) { |
print(<<END); |
print(<<END); |
4) System Administrator's E-mail Address: $perlvar{'lonAdmEMail'} |
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) Server 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==5) { |
elsif ($choice==6) { |
print(<<END); |
print(<<END); |
5) Support E-mail Address: $perlvar{'lonSupportEMail'} |
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; |
$perlvar{'lonSupportEMail'}=$choice2; |
} |
} |
elsif ($choice==6) { |
elsif ($choice==7) { |
|
print(<<END); |
|
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); |
print(<<END); |
6) Role: $perlvar{'lonRole'} |
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 658 END
|
Line 1022 END
|
chomp($choice2); |
chomp($choice2); |
$perlvar{'lonRole'}=$choice2; |
$perlvar{'lonRole'}=$choice2; |
} |
} |
elsif ($choice==7) { |
elsif ($choice==11) { |
print(<<END); |
print(<<END); |
7) 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==8) { |
elsif ($choice==12) { |
print(<<END); |
print(<<END); |
8) 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==9) { |
elsif ($choice==13) { |
print(<<END); |
print(<<END); |
9) 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 686 END
|
Line 1050 END
|
chomp($choice2); |
chomp($choice2); |
$perlvar{'lonUserLoadLim'}=$choice2; |
$perlvar{'lonUserLoadLim'}=$choice2; |
} |
} |
elsif ($choice==10) { |
elsif ($choice==14) { |
print(<<END); |
print(<<END); |
10) 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 700 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 715 END
|
Line 1079 END
|
} |
} |
($securestatus,$securenum)=&securesetting(%perlvar); |
($securestatus,$securenum)=&securesetting(%perlvar); |
} |
} |
elsif ($choice==11) { |
elsif (($choice==15) && (!@error)) { |
$flag=1; |
$flag=1; |
} |
} |
else { |
else { |
|
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 737 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`;chomp($hostname); |
if ($desiredhostname eq '') { |
my $hostaddress=`hostname -i $hostname`;chomp($hostaddress); |
my $hostname=`hostname -f`;chomp($hostname); |
$hostaddress=~s/\s//; |
$desiredhostname = $hostname; |
$date=`date -I`; chomp($date); |
} |
$lonHostID=$perlvar{'lonHostID'}; |
my $date=`date -I`; chomp($date); |
$lonHostID=~s/\W//g; |
my $lonHostID=$perlvar{'lonHostID'}; |
$lineexistflag=0; |
$lonHostID=~s/[^\w\-.]//g; |
$hostidexistflag=0; |
my $lineexistflag=0; |
$line2insert=<<END; |
my $hostidexistflag=0; |
$perlvar{'lonHostID'}:$perlvar{'lonDefDomain'}:$perlvar{'lonRole'}:$hostname:$hostaddress |
my $line2insert=<<END; |
|
$perlvar{'lonHostID'}:$perlvar{'lonDefDomain'}:$perlvar{'lonRole'}:$desiredhostname:$protocol:$intdom |
END |
END |
$domaininsert="$perlvar{'lonDefDomain'}:$domainDescription:$domainTabExtras\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 774 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 786 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 |
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:$protocol:$intdom:$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; |
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 808 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 827 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 839 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 |
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:$domaininsert" | 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) { |
|
`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`; |
} |
} |