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

version 1.27, 2003/05/19 18:35:50 version 1.48, 2006/08/31 19:43:56
Line 57  unless (-l "<TARGET />") { Line 57  unless (-l "<TARGET />") {
   print(&lt;&lt;END);    print(&lt;&lt;END);
   
 ===============================================================================  ===============================================================================
 What hosts.tab and domain.tab would you like to have installed?  Which cluster option would you like to have installed?
 (hosts.tab is a listing of all other internet machines  IMPORTANT: to take advantage of the cluster options 1) and 3),
 that a server system considers to be valid server systems  you must contact lon-capa\@lon-capa.org.
 on the LON-CAPA network  
 domain.tab is a description of the internal LON-CAPA domains)  1) PRODUCTION - you want to eventually connect this machine to the
                   LON-CAPA content sharing network. This setting is for
 1) PRODUCTION - you want to deliver courses today or sometime very soon                  schools, colleges, and universities, that currently
                 on this machine                  are running - or in the future will run - courses
 2) STAND-ALONE - you want this machine to run in 'stand-alone' mode and  2) STAND-ALONE - you want this machine to run in 'stand-alone' mode and
                  not be connected to other LON-CAPA machines for now                   not be connected to other LON-CAPA machines for now
 3) DEVELOPMENT - you want to play with or explore LON-CAPA  3) DEVELOPMENT - you want to do software (not content!) development with
 4) PRESERVE the existing hosts.tab and domain.tab                   this workstation and eventually link it with the
                 (/home/httpd/lonTabs/hosts.tab and                   workstations of other LON-CAPA software developers.
                  /home/httpd/lonTabs/domain.tab)  4) RUNNING YOUR OWN CLUSTER - this machine is not in the standard LON-CAPA
                    clusters and won't be in the future and you want the existing
                    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 126  END Line 128  END
 <perlscript mode='fg'>  <perlscript mode='fg'>
 $|=1;  $|=1;
 my $domainDescription;  my $domainDescription;
   my $domainTabExtras;
   my $primaryLibServer;
   my @libservers = ();
 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\@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:
 * Machine Role  * Machine Role
 * 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.  * Server 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 186  while (!$flag) { Line 198  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 195  if ($hostname=~/([^\.]*)\.([^\.]*)$/) { Line 207  if ($hostname=~/([^\.]*)\.([^\.]*)$/) {
   print(&lt;&lt;END);    print(&lt;&lt;END);
   
 **** 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"]   Please make this name short AND descriptive of your organization.
    Domain names are close to impossible to change later!!!
    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 to department
                       - we don't know of one)
      or "mydomain" (what is that?)
    Avoid multiple domains at the same institution, even if it means that you 
    have to actually work together with your colleagues. You can still run
    multiple library servers within the same domain.
    If this domain is eventually going to be part of the main production
    cluster, you MUST contact the LON-CAPA group at MSU (loncapa@loncapa.org)
    to have a domain name assigned, and then use it exactly as given. This is
    also true for test installs that might eventually turn into production setups.
    Stop now if you didn't do so.]
 END  END
   
 # get domain name  # get domain name
Line 217  END Line 245  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 228  END Line 260  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 283  if ($lonDefDomain) { Line 316  if ($lonDefDomain) {
   print(&lt;&lt;END);    print(&lt;&lt;END);
   
 **** Machine ID Name ****  **** Machine ID Name ****
 [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 305  END Line 339  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 primary library server in domain
   if ($lonRole eq 'library') {
       if (!grep/^\Q$lonHostID\E$/,@libservers) {
           push(@libservers,$lonHostID);
       } 
       if (@libservers == 1) {
           $primaryLibServer = $libservers[0];
       }
   }
   while (!$flag) {
     print(&lt;&lt;END);
   **** Domain's Primary Library Server ID ****
   This should be the LON-CAPA machine ID of a library server in your 
   domain.  If you only have a single library server in your domain, then
   the Primary Library server ID will be the machine ID of that server. 
   This server will be where domain data which are not associated with any
   specific home library server will be stored (e.g., e-mail broadcast by
   administrators to users in the domain).
   END
       if (defined($primaryLibServer)) {
           print(&lt;&lt;END);
   ENTER DOMAIN'S PRIMARY LIBRARY SERVER ID [$primaryLibServer]:
   END
       } elsif (@libservers > 0) {
           print(&lt;&lt;END);
   ENTER DOMAIN'S PRIMARY LIBRARY SERVER ID [$libservers[0]]
   END
       } else {
           print (&lt;&lt;END);
   No library servers could be identified for this domain.  If you have already installed LON-CAPA on a different server (designated as a library server) in this domain, please enter the LONCAPA MACHINE ID of that server.  If not, you will need to install a LON-CAPA library server.  Enter the MACHINE ID of the server you plan to designate as a library server.
   END
       }
   
       my $choice=&lt;&gt;;
       chomp($choice);
       if ($primaryLibServer and $choice=~/^\s*$/) {
           $choice=$primaryLibServer;
           open(OUT,'&gt;&gt;/tmp/loncapa_updatequery.out');
           print(OUT 'primaryLibServer'."\t".$choice."\n");
           close(OUT);
           $flag=1;
       } elsif (length($choice)>15) {
           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');
           print(OUT 'primaryLibServer'."\t".$choice."\n");
           close(OUT);
           $primaryLibServer=$choice;
           $flag=1;
       } else {
           print "Invalid input (only alphanumeric characters supported).\n";
       }
   }
   
   
   # 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;
 while (!$flag) {  while (!$flag) {
   print(&lt;&lt;END);    print(&lt;&lt;END);
   
 **** System Administrator's E-mail ****  **** Server 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 352  END Line 447  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 371  my %perlvar; Line 500  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 405  END Line 535  END
 <file>  <file>
 <target dist='default'>/</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 $confdir='/etc/httpd/conf/';
 my $filename='loncapa.conf';  my $filename='loncapa.conf';
 my %perlvar;  my %perlvar;
   my ($securestatus,$securenum);
     if (-e "$confdir$filename") {      if (-e "$confdir$filename") {
  open(CONFIG,'&lt;'.$confdir.$filename) or    open(CONFIG,'&lt;'.$confdir.$filename) or 
           die("Can't read $confdir$filename");            die("Can't read $confdir$filename");
Line 430  my %perlvar; Line 576  my %perlvar;
     unless ($perlvar{'lonExpire'} and $perlvar{'lonExpire'}!~/\{\[\[\[\[/) {      unless ($perlvar{'lonExpire'} and $perlvar{'lonExpire'}!~/\{\[\[\[\[/) {
        $perlvar{'lonExpire'}='86400';         $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'}!~/\{\[\[\[\[/) {      unless ($perlvar{'lonReceipt'} and $perlvar{'lonReceipt'}!~/\{\[\[\[\[/) {
        my $lonReceipt='';         my $lonReceipt='';
        srand(time ^ $$ ^ unpack "%L*", `ps axww | gzip`);         srand(time ^ $$ ^ unpack "%L*", `ps axww | gzip`);
Line 456  my %perlvarstatic; Line 609  my %perlvarstatic;
        open(IN,'&lt;../'.$lonCluster.'_domain.tab');         open(IN,'&lt;../'.$lonCluster.'_domain.tab');
        while(&lt;IN&gt;) {         while(&lt;IN&gt;) {
           if (/^$perlvar{'lonDefDomain'}\:/) {            if (/^$perlvar{'lonDefDomain'}\:/) {
      (undef,$domainDescription)=split(/:/,$_);       (undef,$domainDescription,$domainTabExtras)=split(/:/,$_,3);
      chomp($domainDescription);       chomp($domainDescription);
        chomp($domainTabExtras);
        # the remianing field (primary lib server) is handled later
        $domainTabExtras = join(':',(split(/:/,$domainTabExtras))[0..5]);
              last;               last;
           }            }
        }         }
Line 467  my %perlvarstatic; Line 623  my %perlvarstatic;
        open(IN,'&lt;/home/httpd/lonTabs/domain.tab');         open(IN,'&lt;/home/httpd/lonTabs/domain.tab');
        while(&lt;IN&gt;) {         while(&lt;IN&gt;) {
           if (/^$perlvar{'lonDefDomain'}\:/) {            if (/^$perlvar{'lonDefDomain'}\:/) {
      (undef,$domainDescription)=split(/:/,$_);       (undef,$domainDescription,$domainTabExtras)=split(/:/,$_,3);
      chomp($domainDescription);       chomp($domainDescription);
        chomp($domainTabExtras);
        # the remianing field (primary lib server) is handled later
        $domainTabExtras = join(':',(split(/:/,$domainTabExtras))[0..5]);
              last;               last;
           }            }
        }         }
        close(IN);         close(IN);
     }      }
       if (!$primaryLibServer and $lonCluster ne 'existing') {
           open(IN,'&lt;../'.$lonCluster.'_domain.tab');
           while(&lt;IN&gt;) {
               if (/^$perlvar{'lonDefDomain'}\:/) {
                   (undef,undef,undef,undef,undef,undef,undef,undef,
                                                 $primaryLibServer)=split(/:/,$_);
                   chomp($primaryLibServer);
               }
           }
           close(IN);
           if (!$primaryLibServer) {
               open(IN,'&lt;../'.$lonCluster.'_hosts.tab');
               while(&lt;IN&gt;) {
                   if (/^([^\:]+)\:\Q$perlvar{'lonDefDomain'}\E\:library\:/) {
                       push(@libservers,$1);
                   }
               }
               close(IN);
               if (@libservers == 1) {
                   $primaryLibServer = $libservers[0];
               }
           }
       }
       if (!$primaryLibServer) {
           open(IN,'&lt;/home/httpd/lonTabs/domain.tab');
           while(&lt;IN&gt;) {
               if (/^$perlvar{'lonDefDomain'}\:/) {
                   (undef,undef,undef,undef,undef,undef,undef,undef,
                                                 $primaryLibServer)=split(/:/,$_);
                   chomp($primaryLibServer);
               }
               close(IN);
           }
           if (!$primaryLibServer) {
               open(IN,'&lt;/home/httpd/lonTabs/hosts.tab');
               while(&lt;IN&gt;) {
                   if (/^([^\:]+)\:\Q$perlvar{'lonDefDomain'}\E\:library\:/) {
                       push(@libservers,$1);
                   }
               }
               close(IN);
               if (@libservers == 1) {
                   $primaryLibServer = $libservers[0];
               }
           }
       }
         
 # implement editing logic below, interactively  # implement editing logic below, interactively
 # update loncapa.conf until 8 is entered  # update loncapa.conf until 12 is entered
   
 $flag=0;  $flag=0;
   
Line 485  while (!$flag) { Line 690  while (!$flag) {
   
 ===============================================================================  ===============================================================================
 This is now the current configuration of your machine.  This is now the current configuration of your machine.
 1) Domain Name: $perlvar{'lonDefDomain'}   1) Domain Name: $perlvar{'lonDefDomain'}
 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) ID of primary library server for domain: $primaryLibServer
 5) Role: $perlvar{'lonRole'}   5) Server Administrator's E-mail Address: $perlvar{'lonAdmEMail'}
 6) Cache Expiration Time: $perlvar{'lonExpire'}   6) Support E-mail Address: $perlvar{'lonSupportEMail'}
 7) Server Load: $perlvar{'lonLoadLim'}   7) Role: $perlvar{'lonRole'}
 8) User Load: $perlvar{'lonUserLoadLim'}   8) Cache Expiration Time: $perlvar{'lonExpire'}
 9) Everything is correct up above   9) Server Load: $perlvar{'lonLoadLim'}
 END  10) User Load: $perlvar{'lonUserLoadLim'}
 my $hbug=-1;  11) Allow only secure connections: $securestatus 
 my $dbug=-1;  12) Everything is correct up above
 {  END
   my $v=$perlvar{'lonHostID'};  
   $hbug=0;  my $error='';
   $hbug=1 if $v=~/\W/;  foreach my $v ($perlvar{'lonDefDomain'},$perlvar{'lonHostID'}) {
   $hbug=1 if $v=~/\_/;     if (length($v)>16) { $error.="\nName $v too long"; }
 }     if (length($v)<2) { $error.="\nName $v too short"; }
 {     if ($v=~/capa/i) {
   my $v=$1;   if ($v!~/^oucapa\d+$/ && 
   $dbug=0;      ($v!~/^capa\d+$/ && $perlvar{'lonDefDomain'} eq 'uwsp')) {
   $dbug=1 if $v=~/\W/;   $error.="\nName $v contains 'capa'"; 
   $dbug=1 if $v=~/\_/;   }
 }     }
      foreach my $bad ('res','raw','userfiles','priv','adm','uploaded',
 if ($hbug) {   'editupload') {
   print "**** ERROR **** ".        $error.="\nName $v reserved." if $v eq $bad;
  "Invalid lonHostID (should only be letters and/or digits)\n";     }
 }     if ($v=~/\W/) { $error.="\nName $v contains special characters"; }
 if ($dbug) {  }
   print "**** ERROR **** ".  if ($domainDescription!~/^[\(\)\-\w\s,]+$/) {
  "Invalid lonDefDomain (should only be letters and/or digits)\n";     $error.="\nDomain Description contains special characters";
   } 
   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 (!defined($primaryLibServer)) {
      if (@libservers > 0) {
          $error .= "No primary library server ID designated. Choose from: ".join(',',sort(@libservers));
      } else {
          $error .= "No library servers in this domain (including current server)";
      }
   } else {
      if (length($primaryLibServer)>16) { $error.="\nPrimary Library Server ID:  $primaryLibServer too long"; }
      if (length($primaryLibServer)<2) { $error.="\nPrimary Library Server ID:  $primaryLibServer too short"; }
      if ($primaryLibServer =~/capa/i) {
           if ($primaryLibServer!~/^oucapa\d+$/ &&
               ($primaryLibServer!~/^capa\d+$/ && $perlvar{'lonDefDomain'} eq 'uwsp')) {
                    $error.="\nPrimary library server ID $primaryLibServer contains 'capa'";
           }
      }
      foreach my $bad ('res','raw','userfiles','priv','adm','uploaded',
           'editupload') {
         $error.="\nPrimary library server ID $primaryLibServer reserved." if $primaryLibServer eq $bad;
      }
      if ($primaryLibServer=~/\W/) { $error.="\nPrimary library server ID $primaryLibServer contains special characters"; }
 }  }
   
   
   if ($error) { print "\n*** ERRORS: $error\n"; }
   print(&lt;&lt;END);    print(&lt;&lt;END);
 ENTER A CHOICE OF 1-8 TO CHANGE, otherwise ENTER 9:  ENTER A CHOICE OF 1-11 TO CHANGE, otherwise ENTER 12:
 END  END
 my $choice=&lt;&gt;;  my $choice=&lt;&gt;;
 chomp($choice);  chomp($choice);
Line 560  END Line 795  END
   }    }
   elsif ($choice==4) {    elsif ($choice==4) {
   print(&lt;&lt;END);    print(&lt;&lt;END);
 4) System Administrator's E-mail Address: $perlvar{'lonAdmEMail'}  4) ID of primary library server for domain: $primaryLibServer
   ENTER NEW VALUE (this will be the LON-CAPA Machine ID of a library server in
                    your domain; it cannot contain any of '_' '-' '.' or ':'. 
                    This server will be where domain data which are not 
                    associated with any specific home library server
                    will be stored (e.g., e-mail broadcast by Domain Coordinators
                    to users in the domain).
   END
       my $choice2=&lt;&gt;;
       chomp($choice2);
       $primaryLibServer=$choice2;
     }
     elsif ($choice==5) {
     print(&lt;&lt;END);
   5) Server 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{'lonAdmEMail'}=$choice2;      $perlvar{'lonAdmEMail'}=$choice2;
   }    }
   elsif ($choice==5) {    elsif ($choice==6) {
   print(&lt;&lt;END);    print(&lt;&lt;END);
 5) Role: $perlvar{'lonRole'}  6) Support E-mail Address: $perlvar{'lonSupportEMail'}
   ENTER NEW VALUE:
   END
       my $choice2=&lt;&gt;;
       chomp($choice2);
       $perlvar{'lonSupportEMail'}=$choice2;
     }
     elsif ($choice==7) {
     print(&lt;&lt;END);
   7) 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 577  END Line 835  END
     chomp($choice2);      chomp($choice2);
     $perlvar{'lonRole'}=$choice2;      $perlvar{'lonRole'}=$choice2;
   }    }
   elsif ($choice==6) {    elsif ($choice==8) {
   print(&lt;&lt;END);    print(&lt;&lt;END);
 6) Cache Expiration Time: $perlvar{'lonExpire'}  8) 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==9) {
   print(&lt;&lt;END);    print(&lt;&lt;END);
 7) Server Load: $perlvar{'lonLoadLim'}  9) 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==10) {
   print(&lt;&lt;END);    print(&lt;&lt;END);
 8) User Load: $perlvar{'lonUserLoadLim'}  10) 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 605  END Line 863  END
     chomp($choice2);      chomp($choice2);
     $perlvar{'lonUserLoadLim'}=$choice2;      $perlvar{'lonUserLoadLim'}=$choice2;
   }    }
   elsif ($choice==9) {    elsif ($choice==11) {
     print(&lt;&lt;END);
   11) 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==12) && (!$error)) {
     $flag=1;      $flag=1;
   }    }
   else {    else {
       print "Invalid input.\n";
   }    }
 }  }
     open(OUT,"&gt;$confdir$filename") or      open(OUT,"&gt;$confdir$filename") or
Line 627  END Line 914  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\n";    $domaininsert="$perlvar{'lonDefDomain'}:$domainDescription:$domainTabExtras:$primaryLibServer\n";
   if ($lonCluster eq 'standalone') {    if ($lonCluster eq 'standalone') {
     open(OUT,'&gt;../'.$lonCluster.'_hosts.tab') or      open(OUT,'&gt;../'.$lonCluster.'_hosts.tab') or
       die('file generation error');        die('file generation error');
Line 676  END Line 961  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 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`;
       `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 729  END Line 1013  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 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`;
       `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.27  
changed lines
  Added in v.1.48


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