Diff for /doc/loncapafiles/updatequery.piml between versions 1.30 and 1.38

version 1.30, 2004/05/21 20:40:53 version 1.38, 2005/05/21 15:35:07
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');
   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 251  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 310  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 330  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 364  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 381  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 434  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 408  END Line 469  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 433  my %perlvar; Line 510  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 490  while (!$flag) { Line 574  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) 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) Everything is correct up above   9) User Load: $perlvar{'lonUserLoadLim'}
 END  10) Allow only secure connections: $securestatus 
 my $hbug=-1;  11) Everything is correct up above
 my $dbug=-1;  END
 {  
   my $v=$perlvar{'lonHostID'};  my $error='';
   $hbug=0;  foreach my $v ($perlvar{'lonDefDomain'},$perlvar{'lonHostID'}) {
   $hbug=1 if $v=~/\W/;     if (length($v)>16) { $error.="\nName $v too long"; }
   $hbug=1 if $v=~/\_/;     if (length($v)<2) { $error.="\nName $v too short"; }
 }     if ($v=~/capa/i) { $error.="\nName $v contains 'capa'"; }
 {     foreach my $bad ('res','raw','userfiles','priv','adm','uploaded') {
   my $v=$1;        $error.="\nName $v reserved." if $v eq $bad;
   $dbug=0;     }
   $dbug=1 if $v=~/\W/;     if ($v=~/\W/) { $error.="\nName $v contains special characters"; }
   $dbug=1 if $v=~/\_/;  }
 }  if ($domainDescription!~/^[\w\s]+$/) {
      $error.="\nDomain Description contains special characters";
 if ($hbug) {  } 
   print "**** ERROR **** ".  foreach my $v ($perlvar{'lonExpire'},$perlvar{'lonLoadLim'}) {
  "Invalid lonHostID (should only be letters and/or digits)\n";     unless ($v=~/^[\d+\.]+$/) { $error.="\nNumber expected instead of $v"; }
 }  
 if ($dbug) {  
   print "**** ERROR **** ".  
  "Invalid lonDefDomain (should only be letters and/or digits)\n";  
 }  }
   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-8 TO CHANGE, otherwise ENTER 9:  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 574  END Line 657  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 582  END Line 674  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 610  END Line 702  END
     chomp($choice2);      chomp($choice2);
     $perlvar{'lonUserLoadLim'}=$choice2;      $perlvar{'lonUserLoadLim'}=$choice2;
   }    }
   elsif ($choice==9) {    elsif ($choice==10) {
     print(&lt;&lt;END);
   10) 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==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 632  END Line 753  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 681  END Line 800  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 734  END Line 852  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.30  
changed lines
  Added in v.1.38


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