File:  [LON-CAPA] / doc / loncapafiles / sanitycheck.piml
Revision 1.20: download - view: text, annotated - select for diffs
Thu Sep 28 22:52:43 2006 UTC (17 years, 6 months ago) by raeburn
Branches: MAIN
CVS tags: HEAD
Some SuSE 10.1 additions.

<!DOCTYPE piml PUBLIC "-//TUX/DTD piml 1.0 Final//EN" 
	"http://lpml.sourceforge.net/DTD/piml.dtd">
<!-- sanitycheck.piml -->

<!-- $Id: sanitycheck.piml,v 1.20 2006/09/28 22:52:43 raeburn Exp $ -->

<!--

This file is part of the LearningOnline Network with CAPA (LON-CAPA).

LON-CAPA is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

LON-CAPA is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with LON-CAPA; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

/home/httpd/html/adm/gpl.txt

http://www.lon-capa.org/

-->

<piml>
<targetroot>/</targetroot>
<files>
<file>
<target dist='default'>/etc/hosts</target>
<perlscript mode='fg'>
unless
    (-e '<TARGET />') # Does file exist?
  {
    print("**** ERROR **** Missing <TARGET />\n");
  }
else
  {
    my $numentries = `grep -v '^#' <TARGET /> | grep -c '[[:alpha:]]'`;
    if ($numentries == 1)
      {
        print("**** ERROR **** Malformatted <TARGET />\n");
        print("<TARGET /> typically should have at least two entries, ".
	      "e.g.:\n");
	print("127.0.0.1               localhost.localdomain localhost\n");
	print("35.8.63.26              s16.lite.msu.edu s16\n");
        print("The <TARGET /> file on your machine looks like it was \n".
	      "messed up due to a common bug with RedHat installations.\n".
	      "(This weird bug is RedHat's fault, not LON-CAPA's.)\n");
        print("Please read the man pages about \"hosts\" and fix your\n".
	      "<TARGET /> file.\n");
      }
  }
</perlscript>
</file>
<file>
<target dist='default'>/var/lib/mysql/mysql.sock</target>
<perlscript mode='fg'>
unless
    (-e '<TARGET />') # Does file exist?
  {
    print("**** ERROR **** Missing <TARGET />\n");
  }
<!-- Commented out by Matthew since MySQL insists on doing things its own way
else # It exists, so look at the file metadata more closely.
  {
    my @s = stat('<TARGET />');
    my $uid = $s[4];
    my $mode = $s[2];
    my $web_uid = getpwnam('www');
    my $smode = sprintf("%04o",$mode & 07777);

    if ($uid ne $web_uid) # If file owned by someone else other than www.
      {
	print('**** WARNING **** <TARGET /> should be owned by'.
	      ' www.'."\n".'Try these commands to make things right:'."\n".
	      'chown www:www <TARGET />'."\n".
	      'chmod a-rwx,u+rwx <TARGET />'."\n");
      }
    else # Check permissions on the file to make sure it is private to www.
      {
	$smode =~ /^.(.)..$/;
	my $wflag = $1;
	if ($wflag != 7) # Can www use this socket?  (Hope so!)
	  {
	    print('**** WARNING **** '.
	      '<TARGET /> should be user "rwx" (by'.
	      ' www).'."\n".'Try these commands to make things right:'."\n".
	      'chown www:www <TARGET />'."\n".
	      'chmod a-rwx,u+rwx <TARGET />'."\n");
	  }
	$smode=~/^..(..)$/;
	$wflag=$1;
	if ($wflag ne "00") # Can others use this socket?  (Hope not!)
	  {
	    print('**** WARNING **** '.
	      '<TARGET /> should not be group or everybody accessible'.
	      '.'."\n".'Try these commands to make things right:'."\n".
	      'chown www:www <TARGET />'."\n".
	      'chmod a-rwx,u+rwx <TARGET />'."\n");
	  }
      }
  }
 -->
</perlscript>
</file>
<file>
<target dist='default'>/etc/httpd/conf/loncapa.conf</target>
<target dist='suse9.3 suse9.2 sles9'>/etc/httpd/loncapa.conf</target>
<target dist='sles10 suse10.1'>/etc/apache2/loncapa.conf</target>
<perlscript mode='fg'>
open IN, "&lt;<TARGET />";
my $hbug=-1;
my $dbug=-1;
while (&lt;IN&gt;) {
 if (/PerlSetVar\s+lonHostID\s+(\S+)/) {
  my $v=$1;
  $hbug=0;
  $hbug=1 if $v=~/\W/;
  $hbug=1 if $v=~/\_/;
 }
 if (/PerlSetVar\s+lonDefDomain\s+(\S+)/) {
  my $v=$1;
  $dbug=0;
  $dbug=1 if $v=~/\W/;
  $dbug=1 if $v=~/\_/;
  # Avoid namespace conflicts under the web server's DocumentRoot.
  my @badnames=('raw','userfiles','priv','adm','uploaded');
  foreach my $bad (@badnames) {
   $dbug=1 if $v eq $bad;
  }
 }
}
if ($hbug) {
  print "**** ERROR **** <TARGET /> has invalid lonHostID\n";
}
if ($dbug) {
  print "**** ERROR **** <TARGET /> has invalid lonDefDomain\n";
}
</perlscript>
</file>
<file>
<target dist='default'>/home/httpd/lonTabs/hosts.tab</target>
open IN, "&lt;<TARGET />";
my $rbug=0;
my $dbug=0;
my $sbug=0;
my $fbug=0;
while (&lt;IN&gt;) {
 next if (/^(\#|\s*$)/);
 if (/\S/) {
  $rbug=1 if /\r/;
  my @a=split(/\:/,$_);
  $dbug=1 if $a[0]=~/\W/;
  $dbug=1 if $a[0]=~/\_/;
  $dbug=1 if $a[1]=~/\_/;
  $dbug=1 if $a[1]=~/\W/;
  $fbug=1 if (@a<4 || @a>5);
  my $expr='\s.+$';
  $sbug=1 if ($a[0] =~ /$expr/ ||
	      $a[1] =~ /$expr/ ||
	      $a[2] =~ /$expr/ ||
	      $a[3] =~ /$expr/ )
;
 }
}
close IN;
if ($rbug) {
  print "**** ERROR **** <TARGET /> is DOS-formatted\n";
}
if ($dbug) {
  print "**** ERROR **** <TARGET /> has invalid host id or domain id\n";
}
if ($fbug) {
  print "**** ERROR **** <TARGET /> is lacking 4 or 5 columns for every row\n";
}
if ($sbug) {
  print "**** ERROR **** <TARGET /> has illegal whitespace character\n";
}
</file>
<file>
<target dist='default'>/home/httpd/lonTabs/spare.tab</target>
open IN, "&lt;<TARGET />";
my $rbug=0;
my $dbug=0;
my $sbug=0;
while (my $line = &lt;IN&gt;) {
 if ($line =~ /\S/) {
  $rbug=1 if $line=~/\r/;
  if ($line =~ /\W.*\n/) {
	$dbug=$line if ($line !~/\w:(?:primary|default)$/);
  }
  $dbug=$line if $line=~/\_/;
  $sbug=1 if $line=~/\s.+$/;
 }
}
close IN;
if ($rbug) {
  print "**** ERROR **** <TARGET /> is DOS-formatted\n";
}
if ($dbug) {
  print "**** ERROR **** <TARGET /> has invalid host id ($dbug)\n";
}
if ($sbug) {
  print "**** ERROR **** <TARGET /> has illegal whitespace character\n";
}
</file>
</files>
</piml>

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