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

version 1.2, 2002/05/03 02:08:51 version 1.14, 2002/06/06 15:44:27
Line 31  http://www.lon-capa.org/ Line 31  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 48  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'>/home/httpd/lonTabs/hosts.tab</target>
 <perlscript mode='fg'>  <perlscript mode='fg'>
   $|=1;
 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);
     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;
     }
     else {
       print "Invalid input (only alphanumeric characters supported).\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 180  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{'lonSqlAccess'}) {
          $perlvar{'lonSqlAccess'}='localhostkey';
       }
       unless ($perlvar{'lonLoadLim'}) {
          $perlvar{'lonLoadLim'}='2.00';
       }
       unless ($perlvar{'lonExpire'}) {
          $perlvar{'lonExpire'}='86400';
       }
       unless ($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'>
 # read values from loncapa.conf  # read values from 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;
       }
    }
    close(CONFIG);
       }
   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);
       }
   # implement editing logic below, interactively
   # update loncapa.conf until 7 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) Machine Name: $perlvar{'lonHostID'}
 3) System Administrator's E-mail Address: $perlsetvar{'lonAdmEmail'}  3) System Administrator's E-mail Address: $perlvar{'lonAdmEMail'}
 4) Role: $perlsetvar{'lonRole'}  4) Role: $perlvar{'lonRole'}
 5) Cache Expiration Time: $perlsetvar{'lonExpire'}  5) Cache Expiration Time: $perlvar{'lonExpire'}
 6) Server Load: $perlsetvar{'lonLoadLim'}  6) Server Load: $perlvar{'lonLoadLim'}
 7) Everything is correct up above  7) Everything is correct up above
   END
     print(&lt;&lt;END);
 ENTER A CHOICE OF 1-6 TO CHANGE, otherwise ENTER 7:  ENTER A CHOICE OF 1-6 TO CHANGE, otherwise ENTER 7:
 END  END
   my $choice=&lt;&gt;;
   chomp($choice);
     if ($choice==1) {
     print(&lt;&lt;END);
   2) Domain Name: $perlvar{'lonDefDomain'}
   ENTER NEW VALUE:
   END
       my $choice2=&lt;&gt;;
       chomp($choice2);
       $perlvar{'lonDefDomain'}=$choice2;
     }
     elsif ($choice==2) {
     print(&lt;&lt;END);
   1) Machine Name: $perlvar{'lonHostID'}
   ENTER NEW VALUE:
   END
       my $choice2=&lt;&gt;;
       chomp($choice2);
       $perlvar{'lonHostID'}=$choice2;
     }
     elsif ($choice==3) {
     print(&lt;&lt;END);
   3) System Administrator's E-mail Address: $perlvar{'lonAdmEMail'}
   ENTER NEW VALUE:
   END
       my $choice2=&lt;&gt;;
       chomp($choice2);
       $perlvar{'lonAdmEMail'}=$choice2;
     }
     elsif ($choice==4) {
     print(&lt;&lt;END);
   4) Role: $perlvar{'lonRole'}
   ENTER NEW VALUE:
   END
       my $choice2=&lt;&gt;;
       chomp($choice2);
       $perlvar{'lonRole'}=$choice2;
     }
     elsif ($choice==5) {
     print(&lt;&lt;END);
   5) Cache Expiration Time: $perlvar{'lonExpire'}
   ENTER NEW VALUE:
   END
       my $choice2=&lt;&gt;;
       chomp($choice2);
       $perlvar{'lonExpire'}=$choice2;
     }
     elsif ($choice==6) {
     print(&lt;&lt;END);
   6) Server Load: $perlvar{'lonLoadLim'}
   ENTER NEW VALUE:
   END
       my $choice2=&lt;&gt;;
       chomp($choice2);
       $perlvar{'lonLoadLim'}=$choice2;
     }
     elsif ($choice==7) {
       $flag=1;
     }
     else {
   
 # implement editing logic below, interactively    }
 # update loncapa.conf until 7 is entered  }
       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>
Line 141  on the LON-CAPA network) Line 435  on the LON-CAPA network)
   
 1) PRODUCTION - you want to deliver courses today or sometime very soon  1) PRODUCTION - you want to deliver courses today or sometime very soon
                 on this machine                  on this machine
 2) DEVELOPMENT - you want to play with or explore LON-CAPA  2) STAND-ALONE - you want this machine to run in 'stand-alone' mode and
 3) Do not install hosts.tab right now                   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)
   
 ENTER 1, 2, or 3:  
 END  END
 # Option number 26 will install rawhide_hosts.tab, but  # Option number 26 will install rawhide_hosts.tab, but
 # the typical user does not want to be part of an intensive  # the typical user does not want to be part of an intensive
Line 152  END Line 447  END
   
 # get input  # get input
 # if valid then process, otherwise loop  # 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);
       $line2insert=&lt;&lt;END;
   $perlvar{'lonHostID'}:$perlvar{'lonDefDomain'}:$perlvar{'lonRole'}:$hostname:$hostaddress
   END
       $date=`date -I`; chomp($date);
       $lonHostID=$perlvar{'lonHostID'};
       $lonHostID=~s/\W//g;
       $lineexistflag=0;
       $hostidexistflag=0;
     if ($choice==1) {
       $lonCluster='production';
       `rm -f ../hosts.tab`;
       open(IN,'&lt;../production_hosts.tab');
       while(&lt;IN&gt;) {
         if (/^$line2insert$/) {
           $lineexistflag=1;
         }
         if (/^$perlvar{'lonHostID'}\:/) {
           $hostidexistflag=1;
         }
       }
       close(IN);
       if ($hostidexistflag and !$lineexistflag) {
         print &lt;&lt;END;
   WARNING: $lonHostID already exists inside
   loncapa/loncom/production_hosts.tab.  The entry inside
   production_hosts.tab does not match your settings.
   The entry inside production_hosts.tab is being replaced
   with your new values.
   END
         `grep -v "$lonHostID:" ../production_hosts.tab &gt; ../new_production_hosts.tab`;
          open(OUT,'&gt;&gt;../new_production_hosts.tab') or
            die("cannot open loncom/standalone_hosts.tab for output\n");
            print(OUT $line2insert);
          close(OUT);
         `ln -s new_production_hosts.tab ../hosts.tab`;
         # email appropriate message
         `echo "REPLACE:$lonHostID:date:$line2insert" | mail -s "REPLACE:$lonHostID:$date" installrecord\@mail.lon-capa.org`;
       }
       elsif ($hostidexistflag and $lineexistflag) {
         `ln -s production_hosts.tab ../hosts.tab`;
       }
       elsif (!$$hostidexistflag and !$lineexistflag) {
         `cat ../production_hosts.tab &gt; ../new_production_hosts.tab`;
         `ln -s new_production_hosts.tab &gt; ../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
   END
       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) {
       $lonCluster='existing';
       `rm -f ../hosts.tab`;
       `touch existing_hosts.tab`;
       if (-e '/home/httpd/lonTabs/hosts.tab') {
         `cp /home/httpd/lonTabs/hosts.tab ../existing_hosts.tab`;
       }
       `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 {
   
     }
   }
   
 }  }
 </perlscript>  </perlscript>

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


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