Diff for /doc/loncapafiles/updatequery.piml between versions 1.6 and 1.27

version 1.6, 2002/05/13 02:24:44 version 1.27, 2003/05/19 18:35:50
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);
   
   ===============================================================================
   What hosts.tab and domain.tab would you like to have installed?
   (hosts.tab is a listing of all other internet machines
   that a server system considers to be valid server systems
   on the LON-CAPA network
   domain.tab is a description of the internal LON-CAPA domains)
   
   1) PRODUCTION - you want to deliver courses today or sometime very soon
                   on this machine
   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 play with or explore LON-CAPA
   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;
 unless (-e "<TARGET />") {  unless (-e "<TARGET />") {
   print(&lt;&lt;END);    print(&lt;&lt;END);
            WELCOME TO LON-CAPA!             WELCOME TO LON-CAPA!
Line 65  or contact sharrison\@mail.lon-capa.org. Line 136  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 191  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);
   if ($lonHostID and $choice=~/^\s*$/) {    my $bad_domain_flag=0;
     $choice=$lonHostID;    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');      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';
     $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;
 my $lonDefDomain;  
 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);
     $lonDefDomain=$choice;      $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);
     $lonDefDomain=$choice;      $lonHostID=$choice;
     $r='l';  
     $flag=1;      $flag=1;
   }    }
   else {    else {
Line 217  END Line 328  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 231  END Line 342  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);
     $lonAdmEmail=$choice;      $lonAdmEMail=$choice;
     $flag=1;      $flag=1;
   }    }
   else {    else {
Line 242  END Line 353  END
 }  }
   
 # update loncapa.conf  # update loncapa.conf
 #my $confdir='/etc/httpd/conf/';  my $confdir='/etc/httpd/conf/';
 my $confdir='';  #my $confdir='';
 my $filename='loncapa.conf';  my $filename='loncapa.conf';
 my %perlvar;  my %perlvar;
     if (-e "$confdir$filename") {      if (-e "$confdir$filename") {
Line 252  my %perlvar; Line 363  my %perlvar;
     if ($configline =~ /^[^\#]*PerlSetVar/) {      if ($configline =~ /^[^\#]*PerlSetVar/) {
  my ($unused,$varname,$varvalue)=split(/\s+/,$configline);   my ($unused,$varname,$varvalue)=split(/\s+/,$configline);
  chomp($varvalue);   chomp($varvalue);
  $perlvar{$varname}=$varvalue;   $perlvar{$varname}=$varvalue if $varvalue!~/^\{\[\[\[\[/;
     }      }
  }   }
  close(CONFIG);   close(CONFIG);
     }      }
     $perlvar{'lonHostID'}=$lonHostID;      $perlvar{'lonHostID'}=$lonHostID;
     $perlvar{'lonDefDomain'}=$lonDefDomain;      $perlvar{'lonDefDomain'}=$lonDefDomain;
     $perlvar{'lonAdmEmail'}=$lonAdmEmail;      $perlvar{'lonAdmEMail'}=$lonAdmEMail;
     $perlvar{'lonRole'}=$lonRole;      $perlvar{'lonRole'}=$lonRole;
     unless ($perlvar{'lonSqlAccess'}) {      unless ($perlvar{'lonLoadLim'} and $perlvar{'lonLoadLim'}!~/\{\[\[\[\[/) {
        $perlvar{'lonSqlAccess'}='localhostkey';  
     }  
     unless ($perlvar{'lonLoadLim'}) {  
        $perlvar{'lonLoadLim'}='2.00';         $perlvar{'lonLoadLim'}='2.00';
     }      }
     unless ($perlvar{'lonExpire'}) {      unless ($perlvar{'lonUserLoadLim'} and $perlvar{'lonUserLoadLim'}!~/\{\[\[\[\[/) {
          $perlvar{'lonUserLoadLim'}='0';
       }
       unless ($perlvar{'lonExpire'} and $perlvar{'lonExpire'}!~/\{\[\[\[\[/) {
        $perlvar{'lonExpire'}='86400';         $perlvar{'lonExpire'}='86400';
     }      }
     unless ($perlvar{'lonReceipt'}) {      unless ($perlvar{'lonReceipt'} and $perlvar{'lonReceipt'}!~/\{\[\[\[\[/) {
        my $lonReceipt='';         my $lonReceipt='';
        srand($$.time);         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 295  END Line 406  END
 <target dist='default'>/</target>  <target dist='default'>/</target>
 <perlscript mode='fg'>  <perlscript mode='fg'>
 # read values from loncapa.conf  # read values from loncapa.conf
 #my $confdir='/etc/httpd/conf/';  my $confdir='/etc/httpd/conf/';
 my $confdir='';  
 my $filename='loncapa.conf';  my $filename='loncapa.conf';
 my %perlvar;  my %perlvar;
     if (-e "$confdir$filename") {      if (-e "$confdir$filename") {
Line 311  my %perlvar; Line 421  my %perlvar;
  }   }
  close(CONFIG);   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{'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)=split(/:/,$_);
        chomp($domainDescription);
                last;
             }
          }
          close(IN);
       }
       if (!$domainDescription) {
          open(IN,'&lt;/home/httpd/lonTabs/domain.tab');
          while(&lt;IN&gt;) {
             if (/^$perlvar{'lonDefDomain'}\:/) {
        (undef,$domainDescription)=split(/:/,$_);
        chomp($domainDescription);
                last;
             }
          }
          close(IN);
       }
      
 # implement editing logic below, interactively  # implement editing logic below, interactively
 # update loncapa.conf until 7 is entered  # update loncapa.conf until 8 is entered
   
 $flag=0;  $flag=0;
   
 while (!$flag) {  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: $perlvar{'lonHostID'}  1) Domain Name: $perlvar{'lonDefDomain'}
 2) Domain Name: $perlvar{'lonDefDomain'}  2) Domain Description: $domainDescription
 3) System Administrator's E-mail Address: $perlvar{'lonAdmEmail'}  3) Machine Name: $perlvar{'lonHostID'}
 4) Role: $perlvar{'lonRole'}  4) System Administrator's E-mail Address: $perlvar{'lonAdmEMail'}
 5) Cache Expiration Time: $perlvar{'lonExpire'}  5) Role: $perlvar{'lonRole'}
 6) Server Load: $perlvar{'lonLoadLim'}  6) Cache Expiration Time: $perlvar{'lonExpire'}
 7) Everything is correct up above  7) Server Load: $perlvar{'lonLoadLim'}
 END  8) User Load: $perlvar{'lonUserLoadLim'}
   9) 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";
   }
   
   print(&lt;&lt;END);    print(&lt;&lt;END);
 ENTER A CHOICE OF 1-6 TO CHANGE, otherwise ENTER 7:  ENTER A CHOICE OF 1-8 TO CHANGE, otherwise ENTER 9:
 END  END
 my $choice=&lt;&gt;;  my $choice=&lt;&gt;;
 chomp($choice);  chomp($choice);
   if ($choice==1) {    if ($choice==1) {
   print(&lt;&lt;END);    print(&lt;&lt;END);
 1) Machine Name: $perlvar{'lonHostID'}  1) Domain Name: $perlvar{'lonDefDomain'}
 ENTER NEW VALUE:  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  END
     my $choice2=&lt;&gt;;      my $choice2=&lt;&gt;;
     chomp($choice2);      chomp($choice2);
     $perlvar{'lonHostID'}=$choice2;      $perlvar{'lonDefDomain'}=$choice2;
   }    }
   elsif ($choice==2) {    elsif ($choice==2) {
   print(&lt;&lt;END);    print(&lt;&lt;END);
 2) Domain Name: $perlvar{'lonDefDomain'}  2) Domain Description: $domainDescription
 ENTER NEW VALUE:  ENTER NEW VALUE (this should be a string that describes your domain, spaces
                    and punctuation are fine except for ':'):
 END  END
     my $choice2=&lt;&gt;;      my $choice2=&lt;&gt;;
     chomp($choice2);      chomp($choice2);
     $perlvar{'lonDefDomain'}=$choice2;      $domainDescription=$choice2;
   }    }
   elsif ($choice==3) {    elsif ($choice==3) {
   print(&lt;&lt;END);    print(&lt;&lt;END);
 3) System Administrator's E-mail Address: $perlvar{'lonAdmEmail'}  3) Machine Name: $perlvar{'lonHostID'}
 ENTER NEW VALUE:  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  END
     my $choice2=&lt;&gt;;      my $choice2=&lt;&gt;;
     chomp($choice2);      chomp($choice2);
     $perlvar{'lonAdmEmail'}=$choice2;      $perlvar{'lonHostID'}=$choice2;
   }    }
   elsif ($choice==4) {    elsif ($choice==4) {
   print(&lt;&lt;END);    print(&lt;&lt;END);
 4) Role: $perlvar{'lonRole'}  4) System Administrator's E-mail Address: $perlvar{'lonAdmEMail'}
 ENTER NEW VALUE:  ENTER NEW VALUE:
 END  END
     my $choice2=&lt;&gt;;      my $choice2=&lt;&gt;;
     chomp($choice2);      chomp($choice2);
     $perlvar{'lonRole'}=$choice2;      $perlvar{'lonAdmEMail'}=$choice2;
   }    }
   elsif ($choice==5) {    elsif ($choice==5) {
   print(&lt;&lt;END);    print(&lt;&lt;END);
 5) Cache Expiration Time: $perlvar{'lonExpire'}  5) Role: $perlvar{'lonRole'}
 ENTER NEW VALUE:  ENTER NEW VALUE (this should be either 'access' or 'library' 
                    if in doubt select 'library'):
 END  END
     my $choice2=&lt;&gt;;      my $choice2=&lt;&gt;;
     chomp($choice2);      chomp($choice2);
     $perlvar{'lonExpire'}=$choice2;      $perlvar{'lonRole'}=$choice2;
   }    }
   elsif ($choice==6) {    elsif ($choice==6) {
   print(&lt;&lt;END);    print(&lt;&lt;END);
 6) Server Load: $perlvar{'lonLoadLim'}  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:  ENTER NEW VALUE:
 END  END
     my $choice2=&lt;&gt;;      my $choice2=&lt;&gt;;
     chomp($choice2);      chomp($choice2);
     $perlvar{'lonLoadLim'}=$choice2;      $perlvar{'lonLoadLim'}=$choice2;
   }    }
   elsif ($choice==7) {    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) {
     $flag=1;      $flag=1;
   }    }
   else {    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  
 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 play with or explore LON-CAPA  
 4) PRESERVE the existing hosts.tab (/home/httpd/lonTabs/hosts.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  
 my $hostname=`hostname`;chomp($hostname);  
 my $hostaddress=`hostname -i $hostname`;chomp($hostaddress);  
 $flag=0;  
 while (!$flag) {  
   print "ENTER 1, 2, 3, or 4:\n";  
   my $choice=&lt;&gt;;  
   chomp($choice);  
   if ($choice==1) {  
     $lonCluster='production';  
     `rm -f ../hosts.tab`;  
     `ln -s production_hosts.tab ../hosts.tab`;  
     $flag=1;  
   }  
   elsif ($choice==2) {  
     $lonCluster='standalone';  
     open(OUT,'&gt;../standalone_hosts.tab') or  
       die("cannot open loncom/standalone_hosts.tab for output\n");  
     print(OUT &lt;&lt;END);  
 $perlvar{'lonHostID'}:$perlvar{'lonDefDomain'}:$perlvar{'lonRole'}:$hostname:$hostaddress  $perlvar{'lonHostID'}:$perlvar{'lonDefDomain'}:$perlvar{'lonRole'}:$hostname:$hostaddress
 END  END
     $domaininsert="$perlvar{'lonDefDomain'}:$domainDescription\n";
     if ($lonCluster eq 'standalone') {
       open(OUT,'&gt;../'.$lonCluster.'_hosts.tab') or
         die('file generation error');
         print(OUT $line2insert);
       close(OUT);
       open(OUT,'&gt;../'.$lonCluster.'_domain.tab') or
         die('file generation error');
         print(OUT $domaininsert);
     close(OUT);      close(OUT);
     `rm -f ../hosts.tab`;  
     `ln -s standalone_hosts.tab ../hosts.tab`;  
     $flag=1;  
   }  
   elsif ($choice==3) {  
     $lonCluster='development';  
     `rm -f loncom/hosts.tab`;  
     `ln -s development_hosts.tab ../hosts.tab`;  
     $flag=1;  
   }    }
   elsif ($choice==4) {    if ($flag==1) {
     $lonCluster='existing';  
     `rm -f ../hosts.tab`;      `rm -f ../hosts.tab`;
     `touch existing_hosts.tab`;      open(IN,'&lt;../'.$lonCluster.'_hosts.tab');
     if (-e '/home/httpd/lonTabs/hosts.tab') {      while(&lt;IN&gt;) {
       `cp /home/httpd/lonTabs/hosts.tab ../existing_hosts.tab`;        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 www.lon-capa.org > /dev/null || ping -c 1 www.msu.edu > /dev/null || ping -c 1 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`;
     }      }
     `ln -s existing_hosts.tab ../hosts.tab`;  
     $flag=1;  
   }  
   elsif ($choice==26) {  
     $lonCluster='rawhide';  
     `rm -f ../hosts.tab`;  
     `ln -s rawhide_hosts.tab ../hosts.tab`;  
     $flag=1;  
   }    }
   else {    $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 www.lon-capa.org > /dev/null || ping -c 1 www.msu.edu > /dev/null || ping -c 1 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>
 </files>  </files>

Removed from v.1.6  
changed lines
  Added in v.1.27


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