Diff for /doc/loncapafiles/updatequery.piml between versions 1.2 and 1.31

version 1.2, 2002/05/03 02:08:51 version 1.31, 2004/06/01 15:55:00
Line 1 Line 1
 <!-- updatequery.piml -->  <!-- updatequery.piml -->
 <!-- Scott Harrison -->  
   
 <!-- $Id$ -->  <!-- $Id$ -->
   
Line 31  http://www.lon-capa.org/ Line 30  http://www.lon-capa.org/
 <targetroot>/</targetroot>  <targetroot>/</targetroot>
 <files>  <files>
 <file>  <file>
 <target dist='default'>/home/httpd/lonUsers2</target>  <target dist='default'>/</target>
 <perlscript mode='fg'>  <perlscript mode='fg'>
   $|=1;
   print(&lt;&lt;END);    print(&lt;&lt;END);
   
   
Line 47  http://www.lon-capa.org/ Line 47  http://www.lon-capa.org/
 *********************************************  *********************************************
   
 END  END
   sleep(3);
 </perlscript>  </perlscript>
 </file>  </file>
 <file>  <file>
 <target dist='default'>/home/httpd/lonUsers2</target>  <target dist='default'>loncom/hosts.tab</target>
 <perlscript mode='fg'>  <perlscript mode='fg'>
   unless (-l "<TARGET />") {
     print(&lt;&lt;END);
   
   ===============================================================================
   Which cluster option would you like to have installed?
   IMPORTANT: to take advantage of the cluster options 1) and 3),
   you must contact lon-capa\@lon-capa.org.
   
   1) PRODUCTION - you want to eventually connect this machine to the
                   LON-CAPA content sharing network. This setting is for
                   schools, colleges, and universities, that currently
                   are running - or in the future will run - courses
   2) STAND-ALONE - you want this machine to run in 'stand-alone' mode and
                    not be connected to other LON-CAPA machines for now
   3) DEVELOPMENT - you want to do software (not content!) development with
                    this workstation and eventually link it with the
                    workstations of other LON-CAPA software developers.
   4) PRESERVE the existing hosts.tab and domain.tab
                   (/home/httpd/lonTabs/hosts.tab and
                    /home/httpd/lonTabs/domain.tab)
   
   END
   # Option number 26 will install rawhide_hosts.tab, but
   # the typical user does not want to be part of an intensive
   # machine test cluster.
   
   # get input
   # if valid then process, otherwise loop
   $flag=0;
   while (!$flag) {
     print "ENTER 1, 2, 3, or 4:\n";
     my $choice=&lt;&gt;;
     chomp($choice);
     if ($choice==1) {
       $lonCluster='production'; $flag=1;
     }
     elsif ($choice==2) {
       $lonCluster='standalone'; $flag=1;
     }
     elsif ($choice==3) {
       $lonCluster='development'; $flag=1;
     }
     elsif ($choice==4) {
       $lonCluster='existing'; $flag=1;
       if (-e '/home/httpd/lonTabs/hosts.tab') {
         `cp /home/httpd/lonTabs/hosts.tab ../existing_hosts.tab`;
       }
       else {
         print &lt;&lt;END;
   There is no existing /home/httpd/lonTabs/hosts.tab
   END
         die('');
       }
       if (-e '/home/httpd/lonTabs/domain.tab') {
         `cp /home/httpd/lonTabs/domain.tab ../existing_domain.tab`;
       }
       else {
         print &lt;&lt;END;
   There is no existing /home/httpd/lonTabs/domain.tab
   END
         die('');
       }
     }
     elsif ($choice==26) {
       $lonCluster='rawhide'; $flag=1;
     }
   }
   }
   </perlscript>
   </file>
   <file>
   <target dist='default'>/home/httpd/lonTabs/hosts.tab</target>
   <perlscript mode='fg'>
   $|=1;
   my $domainDescription;
   my $domainTabExtras;
 unless (-e "<TARGET />") {  unless (-e "<TARGET />") {
   print(&lt;&lt;END);    print(&lt;&lt;END);
            WELCOME TO LON-CAPA!             WELCOME TO LON-CAPA!
   
 If you have questions, please visit http://install.lon-capa.org  If you have questions, please visit http://install.lon-capa.org
 or contact sharrison@install.lon-capa.org.  or contact sharrison\@mail.lon-capa.org.
   
 ===============================================================================  ===============================================================================
 The following 3 values are needed to configure LON-CAPA:  The following 4 values are needed to configure LON-CAPA:
 * Machine ID Name  * Machine Role
 * LON-CAPA Domain Name, and  * LON-CAPA Domain Name
   * LON-CAPA Machine ID Name, and
 * System Administration E-mail Address.  * System Administration E-mail Address.
 END  END
   
   open(OUT,'&gt;/tmp/loncapa_updatequery.out');
   close(OUT);
   
   # query for Machine Role
     print(&lt;&lt;END);
   **** Machine Role ****
   Library server (recommended if first-time installation of LON-CAPA):
      Servers that are repositories of authoritative educational resources.
      These servers also provide the construction space by which instructors
      assemble their classroom online material.
   Access server:
      Servers that load-balance high-traffic delivery of educational resources
      over the world-wide web.
   1) Will this be a library server? (recommended if this is your first install)
   2) Or, will this be an access server?
   END
   my $flag=0;
   my $r='';
   my $lonRole;
   while (!$flag) {
     print "ENTER A CHOICE OF 1 or 2:\n";
     my $choice=&lt;&gt;;
     chomp($choice);
     if ($choice==1) {
       open(OUT,'&gt;&gt;/tmp/loncapa_updatequery.out');
       print(OUT 'lonRole'."\t".'library'."\n");
       close(OUT);
       $lonRole='library';
       $r='l';
       $flag=1;
     }
     elsif ($choice==2) {
       open(OUT,'&gt;&gt;/tmp/loncapa_updatequery.out');
       print(OUT 'lonRole'."\t".'access'."\n");
       close(OUT);
       $lonRole='access';
       $r='a';
       $flag=2;
     }
     else {
   
     }
   }
   
   # need to recommend a machine ID name (ipdomain.l.somenumber)
   my $hostname=`hostname`; chomp($hostname);
   my $ipdomain='';
   if ($hostname=~/([^\.]*)\.([^\.]*)$/) {
     $ipdomain=$1;
   }
   
     print(&lt;&lt;END);
   
   **** Domain ****
   [this does NOT need to correspond to internet address domains,
    examples might be "msu" or "bionet" or "vermontcc"]
   END
   
   # get domain name
   # accept if valid, if not valid, tell user and repeat
   $flag=0;
   my $lonDefDomain;
   while (!$flag) {
   if ($ipdomain) {
   print(&lt;&lt;END);
   ENTER LONCAPA DOMAIN [$ipdomain]:
   END
   }
   else {
     print(&lt;&lt;END);
   ENTER LONCAPA DOMAIN:
   END
   }
     my $choice=&lt;&gt;;
     chomp($choice);
     my $bad_domain_flag=0;
     my @bad_domain_names=('raw','userfiles','priv','adm','uploaded');
     foreach my $bad (@bad_domain_names) {
       $bad_domain_flag=1 if $choice eq $bad;
     }
     if ($ipdomain and $choice=~/^\s*$/) {
       $choice=$ipdomain;
       open(OUT,'&gt;&gt;/tmp/loncapa_updatequery.out');
       print(OUT 'lonDefDomain'."\t".$choice."\n");
       close(OUT);
       $lonDefDomain=$choice;
       $flag=1;
     }
     elsif ($choice!~/\_/ and $choice=~/^\w+$/) {
       open(OUT,'&gt;&gt;/tmp/loncapa_updatequery.out');
       print(OUT 'lonDefDomain'."\t".$choice."\n");
       close(OUT);
       $lonDefDomain=$choice;
       $r='l';
       $flag=1;
     }
     elsif ($bad_domain_flag) {
       print "Invalid input ('$choice' conflicts with LON-CAPA namespace).\n";
       print "Please try something different than '$choice'\n";
     }
     else {
       print "Invalid input (only alphanumeric characters supported).\n";
     }
   }
   
   
   # get domain description
   # accept if valid, if not valid, tell user and repeat
   $flag=0;
   
   while (!$flag) {
     print(&lt;&lt;END);
   
   **** Domain Description ****
   String describing the domain, to be shown to users.
   [Example, msu is Michigan State University]
   ENTER DOMAIN DESCRIPTION:
   END
   
     my $choice=&lt;&gt;;
     chomp($choice);
     if ($choice!~/:/) {
       open(OUT,'&gt;&gt;/tmp/loncapa_updatequery.out');
       print(OUT 'domainDescription'."\t".$choice."\n");
       close(OUT);
       $domainDescription=$choice;
       $flag=1;
     }
     else {
       print "Invalid input (no ':' allowed).\n";
     }
   }
   
   my $lonHostID;
   if ($lonDefDomain) {
     $lonHostID=$lonDefDomain.$r.int(1+rand(9)); # should be probably also detect
                                                 # against the hosts.tab
   }
   
   print(&lt;&lt;END);    print(&lt;&lt;END);
   
 **** Machine ID Name ****  **** Machine ID Name ****
Line 74  END Line 291  END
  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 "bionetl1";
  bad examples: "loncapabox" or "studentsinside"]   bad examples: "loncapabox" or "studentsinside"]
 ENTER MACHINE ID NAME:  
 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
   $flag=0;
   while (!$flag) {
   if ($ipdomain) {
   print(&lt;&lt;END);
   ENTER LONCAPA MACHINE ID [$lonHostID]:
   END
   }
   else {
   print(&lt;&lt;END);    print(&lt;&lt;END);
   ENTER LONCAPA MACHINE ID:
 **** Domain ****  
 [this does NOT need to correspond to internet address domains,  
  examples might be "msu" or "bionet" or "vermontcc"]  
 ENTER LONCAPA DOMAIN:  
 END  END
   }
     my $choice=&lt;&gt;;
     chomp($choice);
     if ($lonHostID and $choice=~/^\s*$/) {
       $choice=$lonHostID;
       open(OUT,'&gt;&gt;/tmp/loncapa_updatequery.out');
       print(OUT 'lonHostID'."\t".$choice."\n");
       close(OUT);
       $lonHostID=$choice;
       $flag=1;
     }
     elsif ($choice!~/\_/ and $choice=~/^\w+$/) {
       open(OUT,'&gt;&gt;/tmp/loncapa_updatequery.out');
       print(OUT 'lonHostID'."\t".$choice."\n");
       close(OUT);
       $lonHostID=$choice;
       $flag=1;
     }
     else {
       print "Invalid input (only alphanumeric characters supported).\n";
     }
   }
   
 # get domain name  # get 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;
   my $lonAdmEMail;
   while (!$flag) {
   print(&lt;&lt;END);    print(&lt;&lt;END);
   
 **** System Administrator's E-mail ****  **** System Administrator's E-mail ****
 E-mail address of the person who will manage this machine  E-mail address of the person who will manage this machine
 [should be in the form somebody@somewhere]  [should be in the form somebody\@somewhere]
 ENTER E-MAIL ADDRESS:  ENTER E-MAIL ADDRESS:
 END  END
   
 # get e-mail address    my $choice=&lt;&gt;;
 # accept if valid, if not valid, tell user and repeat    chomp($choice);
     if ($choice=~/\@/) {
       open(OUT,'&gt;&gt;/tmp/loncapa_updatequery.out');
       print(OUT 'lonAdmEMail'."\t".$choice."\n");
       close(OUT);
       $lonAdmEMail=$choice;
       $flag=1;
     }
     else {
       print "Invalid input (this needs to look like an e-mail address!).\n";
     }
   }
   
 # update loncapa.conf  # update loncapa.conf
   my $confdir='/etc/httpd/conf/';
   #my $confdir='';
   my $filename='loncapa.conf';
   my %perlvar;
       if (-e "$confdir$filename") {
    open(CONFIG,'&lt;'.$confdir.$filename) or die("Can't read $confdir$filename");
    while (my $configline=&lt;CONFIG&gt;) {
       if ($configline =~ /^[^\#]*PerlSetVar/) {
    my ($unused,$varname,$varvalue)=split(/\s+/,$configline);
    chomp($varvalue);
    $perlvar{$varname}=$varvalue if $varvalue!~/^\{\[\[\[\[/;
       }
    }
    close(CONFIG);
       }
       $perlvar{'lonHostID'}=$lonHostID;
       $perlvar{'lonDefDomain'}=$lonDefDomain;
       $perlvar{'lonAdmEMail'}=$lonAdmEMail;
       $perlvar{'lonRole'}=$lonRole;
       unless ($perlvar{'lonLoadLim'} and $perlvar{'lonLoadLim'}!~/\{\[\[\[\[/) {
          $perlvar{'lonLoadLim'}='2.00';
       }
       unless ($perlvar{'lonUserLoadLim'} and $perlvar{'lonUserLoadLim'}!~/\{\[\[\[\[/) {
          $perlvar{'lonUserLoadLim'}='0';
       }
       unless ($perlvar{'lonExpire'} and $perlvar{'lonExpire'}!~/\{\[\[\[\[/) {
          $perlvar{'lonExpire'}='86400';
       }
       unless ($perlvar{'lonReceipt'} and $perlvar{'lonReceipt'}!~/\{\[\[\[\[/) {
          my $lonReceipt='';
          srand(time ^ $$ ^ unpack "%L*", `ps axww | gzip`);
          my @alnum=(0..9,a..z);
          foreach my $i (1..20) {
    $lonReceipt.=$alnum[int(rand(36))];
          }
          $perlvar{'lonReceipt'}=$lonReceipt;
       }
       open(OUT,"&gt;$confdir$filename") or
         die("Cannot output to $confdir$filename\n");
       foreach my $key (keys %perlvar) {
         my $value=$perlvar{$key};
         print(OUT &lt;&lt;END);
   PerlSetVar     $key      $value
   END
       }
       close(OUT);
 }  }
 </perlscript>  </perlscript>
 </file>  </file>
 <file>  <file>
 <target dist='default'>/home/httpd/lonUsers2</target>  <target dist='default'>/</target>
 <perlscript mode='fg'>  <perlscript mode='fg'>
   sub securesetting {
       my (%perlvar)=@_;
       my $securestatus='unknown';
       my $securenum='';
       if      ( $perlvar{'loncAllowInsecure'}&&  $perlvar{'londAllowInsecure'}) {
    $securestatus='no';                  $securenum='4';
       } elsif ( $perlvar{'loncAllowInsecure'}&& !$perlvar{'londAllowInsecure'}) {
    $securestatus='lond';                $securenum='3';
       } elsif (!$perlvar{'loncAllowInsecure'}&&  $perlvar{'londAllowInsecure'}) {
    $securestatus='lonc';                $securenum='2';
       } elsif (!$perlvar{'loncAllowInsecure'}&& !$perlvar{'londAllowInsecure'}) {
    $securestatus='yes (lond and lonc)'; $securenum='1';
       }
       return ($securestatus,$securenum);
   }
 # read values from loncapa.conf  # read values from loncapa.conf
   my $confdir='/etc/httpd/conf/';
   my $filename='loncapa.conf';
   my %perlvar;
   my ($securestatus,$securenum);
       if (-e "$confdir$filename") {
    open(CONFIG,'&lt;'.$confdir.$filename) or 
             die("Can't read $confdir$filename");
    while (my $configline=&lt;CONFIG&gt;) {
       if ($configline =~ /^[^\#]*PerlSetVar/) {
    my ($unused,$varname,$varvalue)=split(/\s+/,$configline);
    chomp($varvalue);
    $perlvar{$varname}=$varvalue;
       }
    }
    close(CONFIG);
       }
       unless ($perlvar{'lonLoadLim'} and $perlvar{'lonLoadLim'}!~/\{\[\[\[\[/) {
          $perlvar{'lonLoadLim'}='2.00';
       }
       unless ($perlvar{'lonUserLoadLim'} and $perlvar{'lonUserLoadLim'}!~/\{\[\[\[\[/) {
          $perlvar{'lonUserLoadLim'}='0';
       }
       unless ($perlvar{'lonExpire'} and $perlvar{'lonExpire'}!~/\{\[\[\[\[/) {
          $perlvar{'lonExpire'}='86400';
       }
       unless ($perlvar{'londAllowInsecure'} and $perlvar{'londAllowInsecure'}!~/\{\[\[\[\[/) {
          $perlvar{'londAllowInsecure'}='1';
       }
       unless ($perlvar{'loncAllowInsecure'} and $perlvar{'loncAllowInsecure'}!~/\{\[\[\[\[/) {
          $perlvar{'loncAllowInsecure'}='1';
       }
       ($securestatus,$securenum)=&securesetting(%perlvar);
       unless ($perlvar{'lonReceipt'} and $perlvar{'lonReceipt'}!~/\{\[\[\[\[/) {
          my $lonReceipt='';
          srand(time ^ $$ ^ unpack "%L*", `ps axww | gzip`);
          my @alnum=(0..9,a..z);
          foreach my $i (1..20) {
    $lonReceipt.=$alnum[int(rand(36))];
          }
          $perlvar{'lonReceipt'}=$lonReceipt;
       }
   my %perlvarstatic;
       if (-e "${confdir}loncapa_apache.conf") {
    open(CONFIG,'&lt;'.$confdir.'loncapa_apache.conf') or 
             die("Can't read ${confdir}loncapa_apache.conf");
    while (my $configline=&lt;CONFIG&gt;) {
       if ($configline =~ /^[^\#]*PerlSetVar/) {
    my ($unused,$varname,$varvalue)=split(/\s+/,$configline);
    chomp($varvalue);
    $perlvarstatic{$varname}=$varvalue;
       }
    }
    close(CONFIG);
       }
       if (!$domainDescription && $lonCluster ne 'existing') {
          open(IN,'&lt;../'.$lonCluster.'_domain.tab');
          while(&lt;IN&gt;) {
             if (/^$perlvar{'lonDefDomain'}\:/) {
        (undef,$domainDescription,$domainTabExtras)=split(/:/,$_,3);
        chomp($domainDescription);
        chomp($domainTabExtras);
                last;
             }
          }
          close(IN);
       }
       if (!$domainDescription) {
          open(IN,'&lt;/home/httpd/lonTabs/domain.tab');
          while(&lt;IN&gt;) {
             if (/^$perlvar{'lonDefDomain'}\:/) {
        (undef,$domainDescription,$domainTabExtras)=split(/:/,$_,3);
        chomp($domainDescription);
        chomp($domainTabExtras);
                last;
             }
          }
          close(IN);
       }
      
   # implement editing logic below, interactively
   # update loncapa.conf until 8 is entered
   
   $flag=0;
   
   while (!$flag) {
   print(&lt;&lt;END);    print(&lt;&lt;END);
   
 ===============================================================================  ===============================================================================
 This is now the current configuration of your machine.  This is now the current configuration of your machine.
 1) Machine Name: $perlsetvar{'lonHostID'}   1) Domain Name: $perlvar{'lonDefDomain'}
 2) Domain Name: $perlsetvar{'lonDefDomain'}   2) Domain Description: $domainDescription
 3) System Administrator's E-mail Address: $perlsetvar{'lonAdmEmail'}   3) Machine Name: $perlvar{'lonHostID'}
 4) Role: $perlsetvar{'lonRole'}   4) System Administrator's E-mail Address: $perlvar{'lonAdmEMail'}
 5) Cache Expiration Time: $perlsetvar{'lonExpire'}   5) Role: $perlvar{'lonRole'}
 6) Server Load: $perlsetvar{'lonLoadLim'}   6) Cache Expiration Time: $perlvar{'lonExpire'}
 7) Everything is correct up above   7) Server Load: $perlvar{'lonLoadLim'}
 ENTER A CHOICE OF 1-6 TO CHANGE, otherwise ENTER 7:   8) User Load: $perlvar{'lonUserLoadLim'}
    9) Allow only secure connections: $securestatus 
   10) Everything is correct up above
 END  END
   my $hbug=-1;
   my $dbug=-1;
   {
     my $v=$perlvar{'lonHostID'};
     $hbug=0;
     $hbug=1 if $v=~/\W/;
     $hbug=1 if $v=~/\_/;
   }
   {
     my $v=$1;
     $dbug=0;
     $dbug=1 if $v=~/\W/;
     $dbug=1 if $v=~/\_/;
   }
   
 # implement editing logic below, interactively  if ($hbug) {
 # update loncapa.conf until 7 is entered    print "**** ERROR **** ".
    "Invalid lonHostID (should only be letters and/or digits)\n";
   }
   if ($dbug) {
     print "**** ERROR **** ".
    "Invalid lonDefDomain (should only be letters and/or digits)\n";
   }
   
     print(&lt;&lt;END);
   ENTER A CHOICE OF 1-9 TO CHANGE, otherwise ENTER 10:
   END
   my $choice=&lt;&gt;;
   chomp($choice);
     if ($choice==1) {
     print(&lt;&lt;END);
   1) Domain Name: $perlvar{'lonDefDomain'}
   ENTER NEW VALUE (this is an internal value used to identify a group of
                    LON-CAPA machines, it must be alphanumerical, we suggest
                    using a part of your actual DNS domain. For example, for
                    the machine loncapa.msu.edu, we set the Domain to msu):
   END
       my $choice2=&lt;&gt;;
       chomp($choice2);
       $perlvar{'lonDefDomain'}=$choice2;
     }
     elsif ($choice==2) {
     print(&lt;&lt;END);
   2) Domain Description: $domainDescription
   ENTER NEW VALUE (this should be a string that describes your domain, spaces
                    and punctuation are fine except for ':'):
   END
       my $choice2=&lt;&gt;;
       chomp($choice2);
       $domainDescription=$choice2;
     }
     elsif ($choice==3) {
     print(&lt;&lt;END);
   3) Machine Name: $perlvar{'lonHostID'}
   ENTER NEW VALUE (this will be the name of the machine in the LON-CAPA network
                    it cannot contain any of '_' '-' '.' or ':'. We suggest that
                    if you are in the domain 'example' and are the first library
                    server you enter 'examplel1') :
   END
       my $choice2=&lt;&gt;;
       chomp($choice2);
       $perlvar{'lonHostID'}=$choice2;
     }
     elsif ($choice==4) {
     print(&lt;&lt;END);
   4) System Administrator's E-mail Address: $perlvar{'lonAdmEMail'}
   ENTER NEW VALUE:
   END
       my $choice2=&lt;&gt;;
       chomp($choice2);
       $perlvar{'lonAdmEMail'}=$choice2;
     }
     elsif ($choice==5) {
     print(&lt;&lt;END);
   5) Role: $perlvar{'lonRole'}
   ENTER NEW VALUE (this should be either 'access' or 'library' 
                    if in doubt select 'library'):
   END
       my $choice2=&lt;&gt;;
       chomp($choice2);
       $perlvar{'lonRole'}=$choice2;
     }
     elsif ($choice==6) {
     print(&lt;&lt;END);
   6) Cache Expiration Time: $perlvar{'lonExpire'}
   ENTER NEW VALUE (in seconds, 86400 is a reasonable value):
   END
       my $choice2=&lt;&gt;;
       chomp($choice2);
       $perlvar{'lonExpire'}=$choice2;
     }
     elsif ($choice==7) {
     print(&lt;&lt;END);
   7) Server Load: $perlvar{'lonLoadLim'}
   ENTER NEW VALUE:
   END
       my $choice2=&lt;&gt;;
       chomp($choice2);
       $perlvar{'lonLoadLim'}=$choice2;
     }
     elsif ($choice==8) {
     print(&lt;&lt;END);
   8) User Load: $perlvar{'lonUserLoadLim'}
   Numer of users that can login before machine is 'overloaded'
   ENTER NEW VALUE (integer value, 0 means there is no limit):
   END
       my $choice2=&lt;&gt;;
       chomp($choice2);
       $perlvar{'lonUserLoadLim'}=$choice2;
     }
     elsif ($choice==9) {
     print(&lt;&lt;END);
   9) Allow only secure connections: $securestatus 
   The Lon-CAPA communication daemons lonc and lond can be configured to
   allow only secure connections by default.
   
   POSSIBLE CHOICES:
   1) allow only secure connections and don't connect to machines that
       can not be connected to securely
   2) allow only secure connections but allow this machine to connect to 
       machines that don't support secure connections
   3) allow insecure connections to this machine but only allow connections
       to machines that support secure connections
   4) allow insecure connections
   ENTER NEW VALUE (currenly $securenum):
   END
       my $choice2=&lt;&gt;;
       chomp($choice2);
       if      ($choice2 eq '1') {
    $perlvar{'loncAllowInsecure'}=0;$perlvar{'londAllowInsecure'}=0;
       } elsif ($choice2 eq '2') {
    $perlvar{'loncAllowInsecure'}=0;$perlvar{'londAllowInsecure'}=1;
       } elsif ($choice2 eq '3') {
    $perlvar{'loncAllowInsecure'}=1;$perlvar{'londAllowInsecure'}=0;
       } elsif ($choice2 eq '4') {
    $perlvar{'loncAllowInsecure'}=1;$perlvar{'londAllowInsecure'}=1;
       }
       ($securestatus,$securenum)=&securesetting(%perlvar);
     }
     elsif ($choice==10) {
       $flag=1;
     }
     else {
   
     }
   }
       open(OUT,"&gt;$confdir$filename") or
         die("Cannot output to $confdir$filename\n");
       foreach my $key (keys %perlvar) {
         my $value=$perlvar{$key};
         print(OUT &lt;&lt;END) unless $perlvarstatic{$key};
   PerlSetVar     $key      $value
   END
       }
       close(OUT);
 </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'>
 unless (-l "<TARGET />") {  unless (-l "<TARGET />") {
   print(&lt;&lt;END);    my $hostname=`hostname`;chomp($hostname);
     my $hostaddress=`hostname -i $hostname`;chomp($hostaddress);
 ===============================================================================    $hostaddress=~s/\s//;
 What hosts.tab would you like to have installed?    $date=`date -I`; chomp($date);
 (hosts.tab is a listing of all other internet machines    $lonHostID=$perlvar{'lonHostID'};
 that a server system considers to be valid server systems    $lonHostID=~s/\W//g;
 on the LON-CAPA network)    $lineexistflag=0;
     $hostidexistflag=0;
 1) PRODUCTION - you want to deliver courses today or sometime very soon    $line2insert=&lt;&lt;END;
                 on this machine  $perlvar{'lonHostID'}:$perlvar{'lonDefDomain'}:$perlvar{'lonRole'}:$hostname:$hostaddress
 2) DEVELOPMENT - you want to play with or explore LON-CAPA  
 3) Do not install hosts.tab right now  
   
 ENTER 1, 2, or 3:  
 END  END
 # Option number 26 will install rawhide_hosts.tab, but    $domaininsert="$perlvar{'lonDefDomain'}:$domainDescription:$domainTabExtras\n";
 # the typical user does not want to be part of an intensive    if ($lonCluster eq 'standalone') {
 # machine test cluster.      open(OUT,'&gt;../'.$lonCluster.'_hosts.tab') or
         die('file generation error');
 # get input        print(OUT $line2insert);
 # if valid then process, otherwise loop      close(OUT);
       open(OUT,'&gt;../'.$lonCluster.'_domain.tab') or
         die('file generation error');
         print(OUT $domaininsert);
       close(OUT);
     }
     if ($flag==1) {
       `rm -f ../hosts.tab`;
       open(IN,'&lt;../'.$lonCluster.'_hosts.tab');
       while(&lt;IN&gt;) {
         if (/^$line2insert$/) {
           $lineexistflag=1;
         }
         if (/^$lonHostID\:/) {
           $hostidexistflag=1;
         }
       }
       close(IN);
       if ($hostidexistflag and !$lineexistflag) {
         print &lt;&lt;END;
   WARNING: $lonHostID already exists inside
   loncapa/loncom/${lonCluster}_hosts.tab.  The entry inside
   ${lonCluster}_hosts.tab does not match your settings.
   The entry inside ${lonCluster}_hosts.tab is being replaced
   with your new values.
   END
         `grep -v "$lonHostID:" ../${lonCluster}_hosts.tab &gt; ../new_${lonCluster}_hosts.tab`;
          open(OUT,'&gt;&gt;../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
         system('ping -c 1 -W 5 www.lon-capa.org > /dev/null || ping -c 1 -W 5 www.msu.edu > /dev/null || ping -c 1 -W 5 www.mit.edu > /dev/null');
         `echo "REPLACE:$lonCluster:$lonHostID:$date:$line2insert" | mail -s "REPLACE:$lonCluster:$lonHostID:$date" installrecord\@mail.lon-capa.org` unless $?;
       }
       elsif ($hostidexistflag and $lineexistflag) {
         print &lt;&lt;END;
   Entry exists in ${lonCluster}_hosts.tab.
   END
         `ln -s ${lonCluster}_hosts.tab ../hosts.tab`;
         # email appropriate message
         `echo "STABLEUPDATE:$lonCluster:$lonHostID:$date:$line2insert" | mail -s "STABLEUPDATE:$lonCluster:$lonHostID:$date" installrecord\@mail.lon-capa.org`;
       }
       elsif (!$hostidexistflag and !$lineexistflag) {
         print &lt;&lt;END;
   New entry for $lonCluster.
   END
         `cat ../${lonCluster}_hosts.tab &gt; ../new_${lonCluster}_hosts.tab`;
          open(OUT,'&gt;&gt;../new_'.$lonCluster.'_hosts.tab') or
            die("cannot open loncom/new_${lonCluster}_hosts.tab for output\n");
            print(OUT $line2insert);
          close(OUT);
         `ln -s new_${lonCluster}_hosts.tab ../hosts.tab`;
         # email appropriate message
         `echo "INSERT:$lonCluster:$lonHostID:$date:$line2insert" | mail -s "INSERT:$lonCluster:$lonHostID:$date" installrecord\@mail.lon-capa.org`;
       }
     }
     $lineexistflag=0;
     if ($flag==1) {
       `rm -f ../domain.tab`;
       open(IN,'&lt;../'.$lonCluster.'_domain.tab');
       while(&lt;IN&gt;) {
         if (/^$domaininsert$/) {
           $lineexistflag=1;
         }
         if (/^$perlvar{'lonDefDomain'}\:/) {
           $domainexistflag=1;
         }
       }
       close(IN);
       if ($domainexistflag and !$lineexistflag) {
         print &lt;&lt;END;
   WARNING: $perlvar{'lonDefDomain'} already exists inside
   loncapa/loncom/${lonCluster}_domain.tab.  The entry inside
   ${lonCluster}_domain.tab does not match your settings.
   The entry inside ${lonCluster}_domain.tab is being replaced
   with your new values.
   END
         `grep -v "$perlvar{'lonDefDomain'}:" ../${lonCluster}_domain.tab &gt; ../new_${lonCluster}_domain.tab`;
          open(OUT,'&gt;&gt;../new_'.$lonCluster.'_domain.tab') or
            die("cannot open loncom/${lonCluster}_domain.tab for output\n");
            print(OUT $domaininsert);
          close(OUT);
         `ln -s new_${lonCluster}_domain.tab ../domain.tab`;
         # email appropriate message
         system('ping -c 1 -W 5 www.lon-capa.org > /dev/null || ping -c 1 -W 5 www.msu.edu > /dev/null || ping -c 1 -W 5 www.mit.edu > /dev/null');
         `echo "REPLACEdom:$lonCluster:$lonHostID:$date:$domaninsert" | mail -s "REPLACEdom:$lonCluster:$lonHostID:$date" installrecord\@mail.lon-capa.org` unless $?;
       }
       elsif ($domainexistflag and $lineexistflag) {
         print &lt;&lt;END;
   Entry exists in ${lonCluster}_domain.tab.
   END
         `ln -s ${lonCluster}_domain.tab ../domain.tab`;
         # email appropriate message
         `echo "STABLEUPDATEdom:$lonCluster:$lonHostID:$date:$domaininsert" | mail -s "STABLEUPDATEdom:$lonCluster:$lonHostID:$date" installrecord\@mail.lon-capa.org`;
       }
       elsif (!$domainexistflag and !$lineexistflag) {
         print &lt;&lt;END;
   New entry for $lonCluster.
   END
         `cat ../${lonCluster}_domain.tab &gt; ../new_${lonCluster}_domain.tab`;
          open(OUT,'&gt;&gt;../new_'.$lonCluster.'_domain.tab') or
            die("cannot open loncom/new_${lonCluster}_domain.tab for output\n");
            print(OUT $domaininsert);
          close(OUT);
         `ln -s new_${lonCluster}_domain.tab ../domain.tab`;
         # email appropriate message
         `echo "INSERTdom:$lonCluster:$lonHostID:$date:$domaininsert" | mail -s "INSERTdom:$lonCluster:$lonHostID:$date" installrecord\@mail.lon-capa.org`;
       }
     }
 }  }
 </perlscript>  </perlscript>
 </file>  </file>

Removed from v.1.2  
changed lines
  Added in v.1.31


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>