version 1.78, 2014/05/03 15:31:17
|
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 53 END
|
Line 55 END
|
<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 126 my $domainTabExtras;
|
Line 129 my $domainTabExtras;
|
my $primaryLibServer; |
my $primaryLibServer; |
my $protocol; |
my $protocol; |
my $intdom; |
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 7 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 |
* Server Administration E-mail Address. |
* Server Administration E-mail Address |
* LON-CAPA Domain's Primary Library Server Machine ID |
* LON-CAPA Domain's Primary Library Server Machine ID |
* Web Server Protocol |
* Web Server Protocol |
* Internet Domain Name of Your Institution |
* 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 160 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 206 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 220 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 278 END
|
Line 285 END
|
} |
} |
} |
} |
|
|
|
|
# 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 380 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 522 while (!$flag) {
|
Line 528 while (!$flag) {
|
|
|
The internet domain name used for servers at your institution |
The internet domain name used for servers at your institution |
should be provided. This will be similar to: ustate.edu or |
should be provided. This will be similar to: ustate.edu or |
topcollege.ac.uk or my.hostingcompany.com, i.e., the part of |
topcollege.ac.uk or myhostingcompany.com, i.e., the part of |
a server hostname which indicates to which organization the |
a server hostname which indicates to which organization the |
server belongs. |
server belongs. |
|
|
Line 543 END
|
Line 549 END
|
} |
} |
} |
} |
|
|
|
# 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/'; |
if ('<DIST />' eq 'sles10' || '<DIST />' eq 'sles11' || '<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 'debian5' || '<DIST />' eq 'debian6' || '<DIST />' eq 'ubuntu6' || '<DIST />' eq 'ubuntu8' || '<DIST />' eq 'ubuntu10' || '<DIST />' eq 'ubuntu12' || '<DIST />' eq 'ubuntu14') { |
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/'; |
$confdir = '/etc/apache2/'; |
} |
} |
my $filename='loncapa.conf'; |
my $filename='loncapa.conf'; |
Line 579 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 603 END
|
Line 657 END
|
</file> |
</file> |
<file> |
<file> |
<target dist='default'>/etc/httpd/conf/</target> |
<target dist='default'>/etc/httpd/conf/</target> |
<target dist='sles10 sles11 suse10.1 suse10.2 suse10.3 suse11.1 suse11.2 suse11.3 suse11.4 suse12.1 suse12.2 suse12.3 suse13.1 debian5 debian6 ubuntu6 ubuntu8 ubuntu10 ubuntu12 ubuntu14'>/etc/apache2/</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 656 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 706 my %perlvarstatic;
|
Line 760 my %perlvarstatic;
|
} |
} |
} |
} |
|
|
if (!$protocol) { |
if ((!$protocol) || (!$desiredhostname)) { |
foreach my $file (@hosts_files) { |
foreach my $file (@hosts_files) { |
open(IN,'<'.$file); |
open(IN,'<'.$file); |
while(my $line = <IN>) { |
while(my $line = <IN>) { |
if ($line =~ /^\Q$perlvar{'lonHostID'}\E:\Q$perlvar{'lonDefDomain'}\E\:(?:access|library)\:[^:]+\:(https?)/) { |
if ($line =~ /^\Q$perlvar{'lonHostID'}\E:\Q$perlvar{'lonDefDomain'}\E\:(?:access|library)\:([^:]+)\:(https?)/) { |
$protocol = $1; |
if (!$desiredhostname) { |
chomp($protocol); |
$desiredhostname = $1; |
|
} |
|
if (!$protocol) { |
|
$protocol = $2; |
|
chomp($protocol); |
|
} |
last; |
last; |
} |
} |
} |
} |
Line 736 my %perlvarstatic;
|
Line 795 my %perlvarstatic;
|
} |
} |
} |
} |
|
|
while(!$primaryLibServ && (@hosts_file || @domain_files)) { |
while(!$primaryLibServer && (@hosts_files || @domain_files)) { |
my $file = shift(@domain_files); |
my $file = shift(@domain_files); |
open(IN,'<'.$file); |
open(IN,'<'.$file); |
while(my $line = <IN>) { |
while(my $line = <IN>) { |
Line 763 my %perlvarstatic;
|
Line 822 my %perlvarstatic;
|
} |
} |
|
|
# implement editing logic below, interactively |
# implement editing logic below, interactively |
# update loncapa.conf until 14 is entered |
# update loncapa.conf until 15 is entered |
|
|
$flag=0; |
my $flag=0; |
|
|
while (!$flag) { |
while (!$flag) { |
print(<<END); |
print(<<END); |
Line 780 This is now the current configuration of
|
Line 839 This is now the current configuration of
|
6) Support E-mail Address: $perlvar{'lonSupportEMail'} |
6) Support E-mail Address: $perlvar{'lonSupportEMail'} |
7) Web Server Protocol (http or https): $protocol |
7) Web Server Protocol (http or https): $protocol |
8) Internet Domain Name: $intdom |
8) Internet Domain Name: $intdom |
9) Role: $perlvar{'lonRole'} |
9) Hostname: $desiredhostname |
10) Cache Expiration Time: $perlvar{'lonExpire'} |
10) Role: $perlvar{'lonRole'} |
11) Server Load: $perlvar{'lonLoadLim'} |
11) Cache Expiration Time: $perlvar{'lonExpire'} |
12) User Load: $perlvar{'lonUserLoadLim'} |
12) Server Load: $perlvar{'lonLoadLim'} |
13) Allow only secure connections: $securestatus |
13) User Load: $perlvar{'lonUserLoadLim'} |
14) Everything is correct up above |
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)>35) { $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')) { |
Line 851 if (!defined($primaryLibServer)) {
|
Line 911 if (!defined($primaryLibServer)) {
|
|
|
if (@error) { print "\n*** ERRORS: \n\t".join("\n\t",@error)."\n"; } |
if (@error) { print "\n*** ERRORS: \n\t".join("\n\t",@error)."\n"; } |
print(<<END); |
print(<<END); |
ENTER A CHOICE OF 1-13 TO CHANGE, otherwise ENTER 14: |
ENTER A CHOICE OF 1-14 TO CHANGE, otherwise ENTER 15: |
END |
END |
my $choice=<>; |
my $choice=<>; |
chomp($choice); |
chomp($choice); |
Line 943 END
|
Line 1003 END
|
} |
} |
elsif ($choice==9) { |
elsif ($choice==9) { |
print(<<END); |
print(<<END); |
9) Role: $perlvar{'lonRole'} |
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 951 END
|
Line 1022 END
|
chomp($choice2); |
chomp($choice2); |
$perlvar{'lonRole'}=$choice2; |
$perlvar{'lonRole'}=$choice2; |
} |
} |
elsif ($choice==10) { |
elsif ($choice==11) { |
print(<<END); |
print(<<END); |
10) 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==11) { |
elsif ($choice==12) { |
print(<<END); |
print(<<END); |
11) 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==12) { |
elsif ($choice==13) { |
print(<<END); |
print(<<END); |
12) 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 979 END
|
Line 1050 END
|
chomp($choice2); |
chomp($choice2); |
$perlvar{'lonUserLoadLim'}=$choice2; |
$perlvar{'lonUserLoadLim'}=$choice2; |
} |
} |
elsif ($choice==13) { |
elsif ($choice==14) { |
print(<<END); |
print(<<END); |
13) 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 993 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 1008 END
|
Line 1079 END
|
} |
} |
($securestatus,$securenum)=&securesetting(%perlvar); |
($securestatus,$securenum)=&securesetting(%perlvar); |
} |
} |
elsif (($choice==14) && (!$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) { |
Line 1034 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; |
|
} |
|
my $date=`date -I`; chomp($date); |
|
my $lonHostID=$perlvar{'lonHostID'}; |
$lonHostID=~s/[^\w\-.]//g; |
$lonHostID=~s/[^\w\-.]//g; |
$lineexistflag=0; |
my $lineexistflag=0; |
$hostidexistflag=0; |
my $hostidexistflag=0; |
$line2insert=<<END; |
my $line2insert=<<END; |
$perlvar{'lonHostID'}:$perlvar{'lonDefDomain'}:$perlvar{'lonRole'}:$hostname:$protocol:$intdom |
$perlvar{'lonHostID'}:$perlvar{'lonDefDomain'}:$perlvar{'lonRole'}:$desiredhostname:$protocol:$intdom |
END |
END |
if (!$domainTabExtras) { |
if (!$domainTabExtras) { |
$domainTabExtras=':::::'; |
$domainTabExtras=':::::'; |
} |
} |
$domaininsert="$perlvar{'lonDefDomain'}:$domainDescription:$domainTabExtras:$primaryLibServer\n"; |
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 ("^$hostname:$protocol\n"); |
print OUT ("^$desiredhostname:$protocol\n"); |
close(OUT); |
close(OUT); |
open(OUT,'>../'.$lonCluster.'_dns_hosts.tab') or |
open(OUT,'>../'.$lonCluster.'_dns_hosts.tab') or |
die('file generation error'); |
die('file generation error'); |
Line 1125 END
|
Line 1200 END
|
} |
} |
} |
} |
$lineexistflag=0; |
$lineexistflag=0; |
|
my $domainexistflag=0; |
if ($flag==1) { |
if ($flag==1) { |
`rm -f ../domain.tab`; |
`rm -f ../domain.tab`; |
`rm -f ../dns_domain.tab`; |
`rm -f ../dns_domain.tab`; |
Line 1154 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`; |
`grep -v "$perlvar{'lonDefDomain'}:" ../${lonCluster}_domain.tab > ../new_${lonCluster}_domain.tab`; |