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

version 1.4, 2002/05/12 22:31:41 version 1.31, 2004/06/01 15:55:00
Line 1 Line 1
 <!-- updatequery.piml -->  <!-- updatequery.piml -->
 <!-- Scott Harrison -->  
   
 <!-- $Id$ -->  <!-- $Id$ -->
   
Line 52  sleep(3); Line 51  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'>
   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'>  <perlscript mode='fg'>
 $|=1;  $|=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 4 values are needed to configure LON-CAPA:  The following 4 values are needed to configure LON-CAPA:
 * Machine Role  * Machine Role
 * Machine ID Name  * LON-CAPA Domain Name
 * LON-CAPA Domain Name, and  * LON-CAPA Machine ID Name, and
 * System Administration E-mail Address.  * System Administration E-mail Address.
 END  END
   
Line 120  my $ipdomain=''; Line 194  my $ipdomain='';
 if ($hostname=~/([^\.]*)\.([^\.]*)$/) {  if ($hostname=~/([^\.]*)\.([^\.]*)$/) {
   $ipdomain=$1;    $ipdomain=$1;
 }  }
 my $lonHostID;  
 if ($ipdomain) {  
   $lonHostID=$ipdomain.$r.int(1+rand(9)); # should be probably detect against  
                                           # the hosts.tab  
 }  
   
   print(&lt;&lt;END);    print(&lt;&lt;END);
   
 **** Machine ID Name ****  **** Domain ****
 [this does NOT need to correspond to internet address names;  [this does NOT need to correspond to internet address domains,
  this name MUST be unique to the whole LON-CAPA network;   examples might be "msu" or "bionet" or "vermontcc"]
  we recommend that you use a name based off of your institution;  
  good examples: "msul1" or "bionetl1";  
  bad examples: "loncapabox" or "studentsinside"]  
 END  END
 # get machine name  
   # get domain name
 # accept if valid, if not valid, tell user and repeat  # accept if valid, if not valid, tell user and repeat
 $flag=0;  $flag=0;
   my $lonDefDomain;
 while (!$flag) {  while (!$flag) {
 if ($ipdomain) {  if ($ipdomain) {
 print(&lt;&lt;END);  print(&lt;&lt;END);
 ENTER LONCAPA MACHINE ID [$lonHostID]:  ENTER LONCAPA DOMAIN [$ipdomain]:
 END  END
 }  }
 else {  else {
   print(&lt;&lt;END);    print(&lt;&lt;END);
 ENTER LONCAPA MACHINE ID:  ENTER LONCAPA DOMAIN:
 END  END
 }  }
   my $choice=&lt;&gt;;    my $choice=&lt;&gt;;
   chomp($choice);    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*$/) {    if ($ipdomain and $choice=~/^\s*$/) {
     $choice=$ipdomain;      $choice=$ipdomain;
     open(OUT,'&gt;&gt;/tmp/loncapa_updatequery.out');      open(OUT,'&gt;&gt;/tmp/loncapa_updatequery.out');
     print(OUT 'lonHostID'."\t".$choice."\n");      print(OUT 'lonDefDomain'."\t".$choice."\n");
     close(OUT);      close(OUT);
       $lonDefDomain=$choice;
     $flag=1;      $flag=1;
   }    }
   elsif ($choice!~/\_/ and $choice=~/^\w+$/) {    elsif ($choice!~/\_/ and $choice=~/^\w+$/) {
     open(OUT,'&gt;&gt;/tmp/loncapa_updatequery.out');      open(OUT,'&gt;&gt;/tmp/loncapa_updatequery.out');
     print(OUT 'lonHostID'."\t".$choice."\n");      print(OUT 'lonDefDomain'."\t".$choice."\n");
     close(OUT);      close(OUT);
       $lonDefDomain=$choice;
     $r='l';      $r='l';
     $flag=1;      $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 {    else {
     print "Invalid input (only alphanumeric characters supported).\n";      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);    print(&lt;&lt;END);
   
 **** Domain ****  **** Domain Description ****
 [this does NOT need to correspond to internet address domains,  String describing the domain, to be shown to users.
  examples might be "msu" or "bionet" or "vermontcc"]  [Example, msu is Michigan State University]
   ENTER DOMAIN DESCRIPTION:
 END  END
   
 # get domain name    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);
   
   **** Machine ID Name ****
   [this does NOT need to correspond to internet address names;
    this name MUST be unique to the whole LON-CAPA network;
    we recommend that you use a name based off of your institution;
    good examples: "msul1" or "bionetl1";
    bad examples: "loncapabox" or "studentsinside"]
   END
   # 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;  $flag=0;
 while (!$flag) {  while (!$flag) {
 if ($ipdomain) {  if ($ipdomain) {
 print(&lt;&lt;END);  print(&lt;&lt;END);
 ENTER LONCAPA DOMAIN [$ipdomain]:  ENTER LONCAPA MACHINE ID [$lonHostID]:
 END  END
 }  }
 else {  else {
   print(&lt;&lt;END);    print(&lt;&lt;END);
 ENTER LONCAPA DOMAIN:  ENTER LONCAPA MACHINE ID:
 END  END
 }  }
   my $choice=&lt;&gt;;    my $choice=&lt;&gt;;
   chomp($choice);    chomp($choice);
   if ($ipdomain and $choice=~/^\s*$/) {    if ($lonHostID and $choice=~/^\s*$/) {
     $choice=$ipdomain;      $choice=$lonHostID;
     open(OUT,'&gt;&gt;/tmp/loncapa_updatequery.out');      open(OUT,'&gt;&gt;/tmp/loncapa_updatequery.out');
     print(OUT 'lonDefDomain'."\t".$choice."\n");      print(OUT 'lonHostID'."\t".$choice."\n");
     close(OUT);      close(OUT);
       $lonHostID=$choice;
     $flag=1;      $flag=1;
   }    }
   elsif ($choice!~/\_/ and $choice=~/^\w+$/) {    elsif ($choice!~/\_/ and $choice=~/^\w+$/) {
     open(OUT,'&gt;&gt;/tmp/loncapa_updatequery.out');      open(OUT,'&gt;&gt;/tmp/loncapa_updatequery.out');
     print(OUT 'lonDefDomain'."\t".$choice."\n");      print(OUT 'lonHostID'."\t".$choice."\n");
     close(OUT);      close(OUT);
     $r='l';      $lonHostID=$choice;
     $flag=1;      $flag=1;
   }    }
   else {    else {
Line 215  END Line 331  END
 # get e-mail address  # 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;  $flag=0;
 my $lonAdmEmail;  my $lonAdmEMail;
 while (!$flag) {  while (!$flag) {
   print(&lt;&lt;END);    print(&lt;&lt;END);
   
Line 229  END Line 345  END
   chomp($choice);    chomp($choice);
   if ($choice=~/\@/) {    if ($choice=~/\@/) {
     open(OUT,'&gt;&gt;/tmp/loncapa_updatequery.out');      open(OUT,'&gt;&gt;/tmp/loncapa_updatequery.out');
     print(OUT 'lonAdmEmail'."\t".$choice."\n");      print(OUT 'lonAdmEMail'."\t".$choice."\n");
     close(OUT);      close(OUT);
     my $lonAdmEmail=$choice;      $lonAdmEMail=$choice;
     $flag=1;      $flag=1;
   }    }
   else {    else {
Line 239  END Line 355  END
   }    }
 }  }
   
   
 # 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'}
 END   9) Allow only secure connections: $securestatus 
   10) Everything is correct up above
   END
   my $hbug=-1;
   my $dbug=-1;
   {
     my $v=$perlvar{'lonHostID'};
     $hbug=0;
     $hbug=1 if $v=~/\W/;
     $hbug=1 if $v=~/\_/;
   }
   {
     my $v=$1;
     $dbug=0;
     $dbug=1 if $v=~/\W/;
     $dbug=1 if $v=~/\_/;
   }
   
   if ($hbug) {
     print "**** ERROR **** ".
    "Invalid lonHostID (should only be letters and/or digits)\n";
   }
   if ($dbug) {
     print "**** ERROR **** ".
    "Invalid lonDefDomain (should only be letters and/or digits)\n";
   }
   
 # implement editing logic below, interactively    print(&lt;&lt;END);
 # update loncapa.conf until 7 is entered  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  END
 3) Do not install hosts.tab right now    $domaininsert="$perlvar{'lonDefDomain'}:$domainDescription:$domainTabExtras\n";
     if ($lonCluster eq 'standalone') {
 ENTER 1, 2, or 3:      open(OUT,'&gt;../'.$lonCluster.'_hosts.tab') or
 END        die('file generation error');
 # Option number 26 will install rawhide_hosts.tab, but        print(OUT $line2insert);
 # the typical user does not want to be part of an intensive      close(OUT);
 # machine test cluster.      open(OUT,'&gt;../'.$lonCluster.'_domain.tab') or
         die('file generation error');
 # get input        print(OUT $domaininsert);
 # if valid then process, otherwise loop      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.4  
changed lines
  Added in v.1.31


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