File:  [LON-CAPA] / doc / loncapafiles / sanitycheck.piml
Revision 1.41: download - view: text, annotated - select for diffs
Sat May 3 15:31:17 2014 UTC (9 years, 11 months ago) by raeburn
Branches: MAIN
CVS tags: version_2_11_0_RC3, version_2_11_0, HEAD
- Support Ubuntu 14.04 LTS

    1: <!DOCTYPE piml PUBLIC "-//TUX/DTD piml 1.0 Final//EN" 
    2: 	"http://lpml.sourceforge.net/DTD/piml.dtd">
    3: <!-- sanitycheck.piml -->
    4: 
    5: <!-- $Id: sanitycheck.piml,v 1.41 2014/05/03 15:31:17 raeburn Exp $ -->
    6: 
    7: <!--
    8: 
    9: This file is part of the LearningOnline Network with CAPA (LON-CAPA).
   10: 
   11: LON-CAPA is free software; you can redistribute it and/or modify
   12: it under the terms of the GNU General Public License as published by
   13: the Free Software Foundation; either version 2 of the License, or
   14: (at your option) any later version.
   15: 
   16: LON-CAPA is distributed in the hope that it will be useful,
   17: but WITHOUT ANY WARRANTY; without even the implied warranty of
   18: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   19: GNU General Public License for more details.
   20: 
   21: You should have received a copy of the GNU General Public License
   22: along with LON-CAPA; if not, write to the Free Software
   23: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
   24: 
   25: /home/httpd/html/adm/gpl.txt
   26: 
   27: http://www.lon-capa.org/
   28: 
   29: -->
   30: 
   31: <piml>
   32: <targetroot>/</targetroot>
   33: <files>
   34: <file>
   35: <target dist='default'>/etc/hosts</target>
   36: <perlscript mode='fg'>
   37: unless
   38:     (-e '<TARGET />') # Does file exist?
   39:   {
   40:     print("**** ERROR **** Missing <TARGET />\n");
   41:   }
   42: else
   43:   {
   44:     my $numentries = `grep -v '^#' <TARGET /> | grep -c '[[:alpha:]]'`;
   45:     if ($numentries == 1)
   46:       {
   47:         print("**** ERROR **** Malformatted <TARGET />\n");
   48:         print("<TARGET /> typically should have at least two entries, ".
   49: 	      "e.g.:\n");
   50: 	print("127.0.0.1               localhost.localdomain localhost\n");
   51: 	print("35.8.63.26              s16.lite.msu.edu s16\n");
   52:         print("The <TARGET /> file on your machine looks like it was \n".
   53: 	      "messed up due to a common bug with RedHat installations.\n".
   54: 	      "(This weird bug is RedHat's fault, not LON-CAPA's.)\n");
   55:         print("Please read the man pages about \"hosts\" and fix your\n".
   56: 	      "<TARGET /> file.\n");
   57:       }
   58:   }
   59: </perlscript>
   60: </file>
   61: <file>
   62: <target dist='default'>/var/lib/mysql/mysql.sock</target>
   63: <target dist='suse11.2 suse11.3 suse11.4 suse12.1 suse12.2 suse12.3 suse13.1'>/var/run/mysql/mysql.sock</target>
   64: <target dist='debian5 debian6 ubuntu6 ubuntu8 ubuntu10 ubuntu12 ubuntu14'>/var/run/mysqld/mysqld.sock</target>
   65: <perlscript mode='fg'>
   66: unless
   67:     (-e '<TARGET />') # Does file exist?
   68:   {
   69:     print("**** ERROR **** Missing <TARGET />\n");
   70:   }
   71: <!-- Commented out by Matthew since MySQL insists on doing things its own way
   72: else # It exists, so look at the file metadata more closely.
   73:   {
   74:     my @s = stat('<TARGET />');
   75:     my $uid = $s[4];
   76:     my $mode = $s[2];
   77:     my $web_uid = getpwnam('www');
   78:     my $smode = sprintf("%04o",$mode & 07777);
   79: 
   80:     if ($uid ne $web_uid) # If file owned by someone else other than www.
   81:       {
   82: 	print('**** WARNING **** <TARGET /> should be owned by'.
   83: 	      ' www.'."\n".'Try these commands to make things right:'."\n".
   84: 	      'chown www:www <TARGET />'."\n".
   85: 	      'chmod a-rwx,u+rwx <TARGET />'."\n");
   86:       }
   87:     else # Check permissions on the file to make sure it is private to www.
   88:       {
   89: 	$smode =~ /^.(.)..$/;
   90: 	my $wflag = $1;
   91: 	if ($wflag != 7) # Can www use this socket?  (Hope so!)
   92: 	  {
   93: 	    print('**** WARNING **** '.
   94: 	      '<TARGET /> should be user "rwx" (by'.
   95: 	      ' www).'."\n".'Try these commands to make things right:'."\n".
   96: 	      'chown www:www <TARGET />'."\n".
   97: 	      'chmod a-rwx,u+rwx <TARGET />'."\n");
   98: 	  }
   99: 	$smode=~/^..(..)$/;
  100: 	$wflag=$1;
  101: 	if ($wflag ne "00") # Can others use this socket?  (Hope not!)
  102: 	  {
  103: 	    print('**** WARNING **** '.
  104: 	      '<TARGET /> should not be group or everybody accessible'.
  105: 	      '.'."\n".'Try these commands to make things right:'."\n".
  106: 	      'chown www:www <TARGET />'."\n".
  107: 	      'chmod a-rwx,u+rwx <TARGET />'."\n");
  108: 	  }
  109:       }
  110:   }
  111:  -->
  112: </perlscript>
  113: </file>
  114: <file>
  115: <target dist='default'>/etc/httpd/conf/loncapa.conf</target>
  116: <target dist='sles10 sles11 suse10.1 suse10.2 suse10.3 suse11.1 suse11.2 suse11.3 suse11.4 suse12.1 suse12.2 suse12.3 suse13.1 debian5 debian6 ubuntu6 ubuntu8 ubuntu10 ubuntu12 ubuntu14'>/etc/apache2/loncapa.conf</target>
  117: <perlscript mode='fg'>
  118: open IN, "&lt;<TARGET />";
  119: my $hbug=-1;
  120: my $dbug=-1;
  121: while (&lt;IN&gt;) {
  122:  if (/PerlSetVar\s+lonHostID\s+(\S+)/) {
  123:   my $v=$1;
  124:   $hbug=0;
  125:   $hbug=1 if $v=~/[^\w.\-]/;
  126:   $hbug=1 if $v=~/_/;
  127:  }
  128:  if (/PerlSetVar\s+lonDefDomain\s+(\S+)/) {
  129:   my $v=$1;
  130:   $dbug=0;
  131:   $dbug=1 if $v=~/[^\w.\-]/;
  132:   $dbug=1 if $v=~/_/;
  133:   # Avoid namespace conflicts under the web server's DocumentRoot.
  134:   my @badnames=('raw','userfiles','priv','adm','uploaded');
  135:   foreach my $bad (@badnames) {
  136:    $dbug=1 if $v eq $bad;
  137:   }
  138:  }
  139: }
  140: if ($hbug) {
  141:   print "**** ERROR **** <TARGET /> has invalid lonHostID\n";
  142: }
  143: if ($dbug) {
  144:   print "**** ERROR **** <TARGET /> has invalid lonDefDomain\n";
  145: }
  146: </perlscript>
  147: </file>
  148: <file>
  149: <target dist='default'>/home/httpd/lonTabs/hosts.tab</target>
  150: open IN, "&lt;<TARGET />";
  151: my $rbug=0;
  152: my $dbug=0;
  153: my $sbug=0;
  154: my $fbug=0;
  155: my %line;
  156: my $line=0;
  157: while (my $l = &lt;IN&gt;) {
  158:  $line++;
  159:  next if ($l=~/^(\#|\s*$)/);
  160:  if ($l=~/^\^/) {
  161:   if ($l !~ /^\^[\w.\-]/) {
  162:     $dns_bug = 1;
  163:     push(@{$line{'dns'}},$line);
  164:   }
  165:  } elsif ($l=~/\S/) {
  166:   if ($l=~/\r/) {              $rbug=1; push(@{$line{'r'}},$line); }
  167:   my @a=split(/:/,$l);
  168:   if ($a[0]=~/[^\w\-.]/ ||
  169:       $a[1]=~/[^\w\-.]/ ||
  170:       $a[0]=~/\_/       ||
  171:       $a[1]=~/\_/      ) { $dbug=1; push(@{$line{'d'}},$line); }
  172:   if (@a<6 || @a>6) {      $fbug=1; push(@{$line{'f'}},$line); }
  173:   my $expr='\s.+$';
  174:   if ($a[0] =~ /$expr/ ||
  175:       $a[1] =~ /$expr/ ||
  176:       $a[2] =~ /$expr/ ||
  177:       $a[3] =~ /$expr/ ) { $sbug=1; push(@{$line{'s'}},$line); }
  178: ;
  179:  }
  180: }
  181: close IN;
  182: if ($rbug) {
  183:   print "**** ERROR **** <TARGET /> is DOS-formatted (lines ".join(', ',@{$line{'r'}}).")\n";
  184: }
  185: if ($dbug) {
  186:   print "**** ERROR **** <TARGET /> has invalid host id or domain id (lines ".join(', ',@{$line{'d'}}).")\n";
  187: }
  188: if ($fbug) {
  189:   print "**** ERROR **** <TARGET /> is lacking 6 columns for every row (lines ".join(', ',@{$line{'f'}}).")\n";
  190: }
  191: if ($sbug) {
  192:   print "**** ERROR **** <TARGET /> has illegal whitespace character (lines ".join(', ',@{$line{'s'}}).")\n";
  193: }
  194: if ($dns_bug) {
  195:   print "**** ERROR **** <TARGET /> host.tab server entry has characters (lines ".join(', ',@{$line{'dns'}}).")\n";
  196: }
  197: </file>
  198: <file>
  199: <target dist='default'>/home/httpd/lonTabs/spare.tab</target>
  200: open IN, "&lt;<TARGET />";
  201: my $rbug=0;
  202: my $dbug=0;
  203: my $sbug=0;
  204: while (my $line = &lt;IN&gt;) {
  205:  if ($line =~ /\S/) {
  206:   $rbug=1 if $line=~/\r/;
  207:   if ($line =~ /\W.*\n/) {
  208: 	$dbug=$line if ($line !~/\w:(?:primary|default)$/);
  209:   }
  210:   $dbug=$line if $line=~/\_/;
  211:   $sbug=1 if $line=~/\s.+$/;
  212:  }
  213: }
  214: close IN;
  215: if ($rbug) {
  216:   print "**** ERROR **** <TARGET /> is DOS-formatted\n";
  217: }
  218: if ($dbug) {
  219:   print "**** ERROR **** <TARGET /> has invalid host id ($dbug)\n";
  220: }
  221: if ($sbug) {
  222:   print "**** ERROR **** <TARGET /> has illegal whitespace character\n";
  223: }
  224: </file>
  225: </files>
  226: </piml>

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