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

version 1.31, 2004/06/01 15:55:00 version 1.42, 2005/10/26 19:38:15
Line 70  you must contact lon-capa\@lon-capa.org. Line 70  you must contact lon-capa\@lon-capa.org.
 3) DEVELOPMENT - you want to do software (not content!) development with  3) DEVELOPMENT - you want to do software (not content!) development with
                  this workstation and eventually link it with the                   this workstation and eventually link it with the
                  workstations of other LON-CAPA software developers.                   workstations of other LON-CAPA software developers.
 4) PRESERVE the existing hosts.tab and domain.tab  4) RUNNING YOUR OWN CLUSTER - this machine is not in the standard LON-CAPA
                 (/home/httpd/lonTabs/hosts.tab and                   clusters and won't be in the future and you want the existing
                  /home/httpd/lonTabs/domain.tab)                   hosts.tab and domain.tab files to be left alone.
                    (This choice is unlikely what you want to select.)
 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 134  unless (-e "<TARGET />") { Line 134  unless (-e "<TARGET />") {
            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\@mail.lon-capa.org.  or contact helpdesk\@lon-capa.org.
   
 ===============================================================================  ===============================================================================
 The following 4 values are needed to configure LON-CAPA:  The following 4 values are needed to configure LON-CAPA:
Line 142  The following 4 values are needed to con Line 142  The following 4 values are needed to con
 * LON-CAPA Domain Name  * LON-CAPA Domain Name
 * LON-CAPA Machine ID Name, and  * LON-CAPA Machine ID Name, and
 * System Administration E-mail Address.  * System Administration E-mail Address.
   ===============================================================================
   
   In addition, a Support E-mail Address can also be included. If
   an address is included then one of the options in the LON-CAPA 
   help menu will be a link to a form that a user will complete to
   request LON-CAPA help.  
   
 END  END
   
 open(OUT,'&gt;/tmp/loncapa_updatequery.out');  open(OUT,'&gt;/tmp/loncapa_updatequery.out');
Line 189  while (!$flag) { Line 196  while (!$flag) {
 }  }
   
 # need to recommend a machine ID name (ipdomain.l.somenumber)  # need to recommend a machine ID name (ipdomain.l.somenumber)
 my $hostname=`hostname`; chomp($hostname);  my $hostname=`hostname -f`; chomp($hostname);
 my $ipdomain='';  my $ipdomain='';
 if ($hostname=~/([^\.]*)\.([^\.]*)$/) {  if ($hostname=~/([^\.]*)\.([^\.]*)$/) {
   $ipdomain=$1;    $ipdomain=$1;
Line 199  if ($hostname=~/([^\.]*)\.([^\.]*)$/) { Line 206  if ($hostname=~/([^\.]*)\.([^\.]*)$/) {
   
 **** Domain ****  **** Domain ****
 [this does NOT need to correspond to internet address domains,  [this does NOT need to correspond to internet address domains,
  examples might be "msu" or "bionet" or "vermontcc"]   good examples might be "msu" or "bionet" or "vermontcc",
    bad examples are "physics" (too general)
      or "michiganstateuniversity" (too long)
      or "msuedu" (internet domain, just make it "msu")
      or "msuphysics" (only if there is a good reason to limit)
      or "mydomain" (what is that?)
    Please make this name short AND descriptive of your organization.
    Note that the domain is very hard to change later.
    Double-check with the LON-CAPA group at MSU if this domain is 
    going to be part of the main production cluster, since it needs
    to be unique.]
 END  END
   
 # get domain name  # get domain name
Line 220  END Line 237  END
   my $choice=&lt;&gt;;    my $choice=&lt;&gt;;
   chomp($choice);    chomp($choice);
   my $bad_domain_flag=0;    my $bad_domain_flag=0;
   my @bad_domain_names=('raw','userfiles','priv','adm','uploaded');    my @bad_domain_names=('res','raw','userfiles','priv','adm','uploaded',
    'editupload');
   foreach my $bad (@bad_domain_names) {    foreach my $bad (@bad_domain_names) {
     $bad_domain_flag=1 if $choice eq $bad;      $bad_domain_flag=1 if $choice eq $bad;
   }    }
     if ($choice=~/capa/i) {
        $bad_domain_flag=1;
     }
   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');
Line 231  END Line 252  END
     close(OUT);      close(OUT);
     $lonDefDomain=$choice;      $lonDefDomain=$choice;
     $flag=1;      $flag=1;
   }    } elsif (length($choice)>12) {
   elsif ($choice!~/\_/ and $choice=~/^\w+$/) {      print "Name too long\n";
     } elsif (length($choice)<2) {
       print "Name too short\n";
     } elsif ($bad_domain_flag) {
       print "Invalid input ('$choice' conflicts with LON-CAPA namespace).\n";
       print "Please try something different than '$choice'\n";
     } 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 'lonDefDomain'."\t".$choice."\n");
     close(OUT);      close(OUT);
     $lonDefDomain=$choice;      $lonDefDomain=$choice;
     $r='l';      $r='l';
     $flag=1;      $flag=1;
   }    } else {
   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";      print "Invalid input (only alphanumeric characters supported).\n";
   }    }
 }  }
Line 289  if ($lonDefDomain) { Line 311  if ($lonDefDomain) {
 [this does NOT need to correspond to internet address names;  [this does NOT need to correspond to internet address names;
  this name MUST be unique to the whole LON-CAPA network;   this name MUST be unique to the whole LON-CAPA network;
  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 "bioneta2";
  bad examples: "loncapabox" or "studentsinside"]   bad examples: "loncapabox" or "studentsinside".
    Note that machine names are very hard to change later.]
 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
Line 308  END Line 331  END
 }  }
   my $choice=&lt;&gt;;    my $choice=&lt;&gt;;
   chomp($choice);    chomp($choice);
   if ($lonHostID and $choice=~/^\s*$/) {    if ($choice=~/capa/i) {
       print "Invalid input (names containing 'capa' are reserved).\n";
     } elsif ($lonHostID and $choice=~/^\s*$/) {
     $choice=$lonHostID;      $choice=$lonHostID;
     open(OUT,'&gt;&gt;/tmp/loncapa_updatequery.out');      open(OUT,'&gt;&gt;/tmp/loncapa_updatequery.out');
     print(OUT 'lonHostID'."\t".$choice."\n");      print(OUT 'lonHostID'."\t".$choice."\n");
     close(OUT);      close(OUT);
     $lonHostID=$choice;      $lonHostID=$choice;
     $flag=1;      $flag=1;
   }    } elsif (length($choice)>15) {
   elsif ($choice!~/\_/ and $choice=~/^\w+$/) {      print "Name too long\n";
     } elsif (length($choice)<4) {
       print "Name too short\n";
     } 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 'lonHostID'."\t".$choice."\n");
     close(OUT);      close(OUT);
     $lonHostID=$choice;      $lonHostID=$choice;
     $flag=1;      $flag=1;
   }    } else {
   else {  
     print "Invalid input (only alphanumeric characters supported).\n";      print "Invalid input (only alphanumeric characters supported).\n";
   }    }
 }  }
   
 # get e-mail address  # get admin 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;
Line 338  while (!$flag) { Line 365  while (!$flag) {
 **** 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 ADMIN E-MAIL ADDRESS:
 END  END
   
   my $choice=&lt;&gt;;    my $choice=&lt;&gt;;
Line 355  END Line 382  END
   }    }
 }  }
   
   
   # get support e-mail address
   # accept if valid, if not valid, tell user and repeat
   $flag=0;
   my $lonSupportEMail;
   while (!$flag) {
     print(&lt;&lt;END);
   
   **** Support E-mail ****
   E-mail address of the person who will receive 
   help requests from LON-CAPA users who access 
   the system via this server. If the address is left blank,
   then a help support form will not be displayed 
   as part of the help menu.
   [should be in the form somebody\@somewhere]
   ENTER SUPPORT E-MAIL ADDRESS:
   END
   
     my $choice=&lt;&gt;;
     chomp($choice);
     $choice =~ s/\s//g;
     if ( ($choice=~/\@/) || $choice eq '') {
       open(OUT,'&gt;&gt;/tmp/loncapa_updatequery.out');
       print(OUT 'lonSupportEMail'."\t".$choice."\n");
       close(OUT);
       $lonSupportEMail=$choice;
       $flag=1;
     }
     else {
       print "Invalid input (this either needs to be blank, or look like an e-mail address!).\n";
     }
   }
   
   
 # update loncapa.conf  # update loncapa.conf
 my $confdir='/etc/httpd/conf/';  my $confdir='/etc/httpd/conf/';
 #my $confdir='';  #my $confdir='';
Line 374  my %perlvar; Line 435  my %perlvar;
     $perlvar{'lonHostID'}=$lonHostID;      $perlvar{'lonHostID'}=$lonHostID;
     $perlvar{'lonDefDomain'}=$lonDefDomain;      $perlvar{'lonDefDomain'}=$lonDefDomain;
     $perlvar{'lonAdmEMail'}=$lonAdmEMail;      $perlvar{'lonAdmEMail'}=$lonAdmEMail;
       $perlvar{'lonSupportEMail'}=$lonSupportEMail;
     $perlvar{'lonRole'}=$lonRole;      $perlvar{'lonRole'}=$lonRole;
     unless ($perlvar{'lonLoadLim'} and $perlvar{'lonLoadLim'}!~/\{\[\[\[\[/) {      unless ($perlvar{'lonLoadLim'} and $perlvar{'lonLoadLim'}!~/\{\[\[\[\[/) {
        $perlvar{'lonLoadLim'}='2.00';         $perlvar{'lonLoadLim'}='2.00';
Line 517  This is now the current configuration of Line 579  This is now the current configuration of
  2) Domain Description: $domainDescription   2) Domain Description: $domainDescription
  3) Machine Name: $perlvar{'lonHostID'}   3) Machine Name: $perlvar{'lonHostID'}
  4) System Administrator's E-mail Address: $perlvar{'lonAdmEMail'}   4) System Administrator's E-mail Address: $perlvar{'lonAdmEMail'}
  5) Role: $perlvar{'lonRole'}   5) Support E-mail Address: $perlvar{'lonSupportEMail'}
  6) Cache Expiration Time: $perlvar{'lonExpire'}   6) Role: $perlvar{'lonRole'}
  7) Server Load: $perlvar{'lonLoadLim'}   7) Cache Expiration Time: $perlvar{'lonExpire'}
  8) User Load: $perlvar{'lonUserLoadLim'}   8) Server Load: $perlvar{'lonLoadLim'}
  9) Allow only secure connections: $securestatus    9) User Load: $perlvar{'lonUserLoadLim'}
 10) Everything is correct up above  10) Allow only secure connections: $securestatus 
 END  11) Everything is correct up above
 my $hbug=-1;  END
 my $dbug=-1;  
 {  my $error='';
   my $v=$perlvar{'lonHostID'};  foreach my $v ($perlvar{'lonDefDomain'},$perlvar{'lonHostID'}) {
   $hbug=0;     if (length($v)>16) { $error.="\nName $v too long"; }
   $hbug=1 if $v=~/\W/;     if (length($v)<2) { $error.="\nName $v too short"; }
   $hbug=1 if $v=~/\_/;     if ($v=~/capa/i) {
 }   if ($v!~/^oucapa\d+$/ && 
 {      ($v!~/^capa\d+$/ && $perlvar{'lonDefDomain'} eq 'uwsp')) {
   my $v=$1;   $error.="\nName $v contains 'capa'"; 
   $dbug=0;   }
   $dbug=1 if $v=~/\W/;     }
   $dbug=1 if $v=~/\_/;     foreach my $bad ('res','raw','userfiles','priv','adm','uploaded',
 }   'editupload') {
         $error.="\nName $v reserved." if $v eq $bad;
 if ($hbug) {     }
   print "**** ERROR **** ".     if ($v=~/\W/) { $error.="\nName $v contains special characters"; }
  "Invalid lonHostID (should only be letters and/or digits)\n";  }
 }  if ($domainDescription!~/^[\(\)\-\w\s,]+$/) {
 if ($dbug) {     $error.="\nDomain Description contains special characters";
   print "**** ERROR **** ".  } 
  "Invalid lonDefDomain (should only be letters and/or digits)\n";  foreach my $v ($perlvar{'lonExpire'},$perlvar{'lonLoadLim'}) {
      unless ($v=~/^[\d+\.]+$/) { $error.="\nNumber expected instead of $v"; }
 }  }
   unless (($perlvar{'lonRole'} eq 'library') || ($perlvar{'lonRole'} eq 'access')) {
      $error.="\nInvalid Role";
   }
   if ($error) { print "\n*** ERRORS: $error\n"; }
   print(&lt;&lt;END);    print(&lt;&lt;END);
 ENTER A CHOICE OF 1-9 TO CHANGE, otherwise ENTER 10:  ENTER A CHOICE OF 1-10 TO CHANGE, otherwise ENTER 11:
 END  END
 my $choice=&lt;&gt;;  my $choice=&lt;&gt;;
 chomp($choice);  chomp($choice);
Line 598  END Line 664  END
   }    }
   elsif ($choice==5) {    elsif ($choice==5) {
   print(&lt;&lt;END);    print(&lt;&lt;END);
 5) Role: $perlvar{'lonRole'}  5) Support E-mail Address: $perlvar{'lonSupportEMail'}
   ENTER NEW VALUE:
   END
       my $choice2=&lt;&gt;;
       chomp($choice2);
       $perlvar{'lonSupportEMail'}=$choice2;
     }
     elsif ($choice==6) {
     print(&lt;&lt;END);
   6) Role: $perlvar{'lonRole'}
 ENTER NEW VALUE (this should be either 'access' or 'library'   ENTER NEW VALUE (this should be either 'access' or 'library' 
                  if in doubt select 'library'):                   if in doubt select 'library'):
 END  END
Line 606  END Line 681  END
     chomp($choice2);      chomp($choice2);
     $perlvar{'lonRole'}=$choice2;      $perlvar{'lonRole'}=$choice2;
   }    }
   elsif ($choice==6) {    elsif ($choice==7) {
   print(&lt;&lt;END);    print(&lt;&lt;END);
 6) Cache Expiration Time: $perlvar{'lonExpire'}  7) Cache Expiration Time: $perlvar{'lonExpire'}
 ENTER NEW VALUE (in seconds, 86400 is a reasonable value):  ENTER NEW VALUE (in seconds, 86400 is a reasonable value):
 END  END
     my $choice2=&lt;&gt;;      my $choice2=&lt;&gt;;
     chomp($choice2);      chomp($choice2);
     $perlvar{'lonExpire'}=$choice2;      $perlvar{'lonExpire'}=$choice2;
   }    }
   elsif ($choice==7) {    elsif ($choice==8) {
   print(&lt;&lt;END);    print(&lt;&lt;END);
 7) Server Load: $perlvar{'lonLoadLim'}  8) 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==8) {    elsif ($choice==9) {
   print(&lt;&lt;END);    print(&lt;&lt;END);
 8) User Load: $perlvar{'lonUserLoadLim'}  9) User Load: $perlvar{'lonUserLoadLim'}
 Numer of users that can login before machine is 'overloaded'  Numer of users that can login before machine is 'overloaded'
 ENTER NEW VALUE (integer value, 0 means there is no limit):  ENTER NEW VALUE (integer value, 0 means there is no limit):
 END  END
Line 634  END Line 709  END
     chomp($choice2);      chomp($choice2);
     $perlvar{'lonUserLoadLim'}=$choice2;      $perlvar{'lonUserLoadLim'}=$choice2;
   }    }
   elsif ($choice==9) {    elsif ($choice==10) {
   print(&lt;&lt;END);    print(&lt;&lt;END);
 9) Allow only secure connections: $securestatus   10) Allow only secure connections: $securestatus 
 The Lon-CAPA communication daemons lonc and lond can be configured to  The Lon-CAPA communication daemons lonc and lond can be configured to
 allow only secure connections by default.  allow only secure connections by default.
   
Line 663  END Line 738  END
     }      }
     ($securestatus,$securenum)=&securesetting(%perlvar);      ($securestatus,$securenum)=&securesetting(%perlvar);
   }    }
   elsif ($choice==10) {    elsif (($choice==11) && (!$error)) {
     $flag=1;      $flag=1;
   }    }
   else {    else {
       print "Invalid input.\n";
   }    }
 }  }
     open(OUT,"&gt;$confdir$filename") or      open(OUT,"&gt;$confdir$filename") or
Line 685  END Line 760  END
 <target dist='default'>loncom/hosts.tab</target>  <target dist='default'>loncom/hosts.tab</target>
 <perlscript mode='fg'>  <perlscript mode='fg'>
 unless (-l "<TARGET />") {  unless (-l "<TARGET />") {
   my $hostname=`hostname`;chomp($hostname);    my $hostname=`hostname -f`;chomp($hostname);
   my $hostaddress=`hostname -i $hostname`;chomp($hostaddress);  
   $hostaddress=~s/\s//;  
   $date=`date -I`; chomp($date);    $date=`date -I`; chomp($date);
   $lonHostID=$perlvar{'lonHostID'};    $lonHostID=$perlvar{'lonHostID'};
   $lonHostID=~s/\W//g;    $lonHostID=~s/\W//g;
   $lineexistflag=0;    $lineexistflag=0;
   $hostidexistflag=0;    $hostidexistflag=0;
   $line2insert=&lt;&lt;END;    $line2insert=&lt;&lt;END;
 $perlvar{'lonHostID'}:$perlvar{'lonDefDomain'}:$perlvar{'lonRole'}:$hostname:$hostaddress  $perlvar{'lonHostID'}:$perlvar{'lonDefDomain'}:$perlvar{'lonRole'}:$hostname
 END  END
   $domaininsert="$perlvar{'lonDefDomain'}:$domainDescription:$domainTabExtras\n";    $domaininsert="$perlvar{'lonDefDomain'}:$domainDescription:$domainTabExtras\n";
   if ($lonCluster eq 'standalone') {    if ($lonCluster eq 'standalone') {
Line 734  END Line 807  END
        close(OUT);         close(OUT);
       `ln -s new_${lonCluster}_hosts.tab ../hosts.tab`;        `ln -s new_${lonCluster}_hosts.tab ../hosts.tab`;
       # email appropriate message        # 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`;
       `echo "REPLACE:$lonCluster:$lonHostID:$date:$line2insert" | mail -s "REPLACE:$lonCluster:$lonHostID:$date" installrecord\@mail.lon-capa.org` unless $?;  
     }      }
     elsif ($hostidexistflag and $lineexistflag) {      elsif ($hostidexistflag and $lineexistflag) {
       print &lt;&lt;END;        print &lt;&lt;END;
Line 787  END Line 859  END
        close(OUT);         close(OUT);
       `ln -s new_${lonCluster}_domain.tab ../domain.tab`;        `ln -s new_${lonCluster}_domain.tab ../domain.tab`;
       # email appropriate message        # email appropriate message
       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`;
       `echo "REPLACEdom:$lonCluster:$lonHostID:$date:$domaninsert" | mail -s "REPLACEdom:$lonCluster:$lonHostID:$date" installrecord\@mail.lon-capa.org` unless $?;  
     }      }
     elsif ($domainexistflag and $lineexistflag) {      elsif ($domainexistflag and $lineexistflag) {
       print &lt;&lt;END;        print &lt;&lt;END;

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


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