Blame install_logwatch.sh

Packit 57988d
#!/bin/sh
Packit 57988d
#
Packit 57988d
#The MIT License
Packit 57988d
#
Packit 57988d
#Copyright (c) 2005-2006 Mike Tremaine <mgt /at/ stellarcore.net> 
Packit 57988d
#
Packit 57988d
#Permission is hereby granted, free of charge, to any person obtaining 
Packit 57988d
#a copy of this software and associated documentation files (the "Software"),
Packit 57988d
#to deal in the Software without restriction, including without limitation
Packit 57988d
#the rights to use, copy, modify, merge, publish, distribute, sublicense,
Packit 57988d
#and/or sell copies of the Software, and to permit persons to whom the
Packit 57988d
#Software is furnished to do so, subject to the following conditions:
Packit 57988d
#
Packit 57988d
#The above copyright notice and this permission notice shall be included
Packit 57988d
#in all copies or substantial portions of the Software.
Packit 57988d
#
Packit 57988d
#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
Packit 57988d
#EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
Packit 57988d
#MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
Packit 57988d
#IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
Packit 57988d
#DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
Packit 57988d
#OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
Packit 57988d
#THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Packit 57988d
# __________________________________________________________________
Packit 57988d
#
Packit 57988d
# File: install_logwatch.sh 
Packit 57988d
# Author: Mike Tremaine [mgt /at/ stellarcore.net]
Packit 57988d
# Maintainer: Mike Tremaine [mgt /at/ stellarcore.net]
Packit 57988d
# $Id$
Packit 57988d
#
Packit 57988d
# $Log: install_logwatch.sh,v $
Packit 57988d
# Revision 1.20  2008/05/12 22:53:28  mike
Packit 57988d
# removed -T flag no sure why it was there -mgt
Packit 57988d
#
Packit 57988d
# Revision 1.19  2008/05/08 23:15:55  mike
Packit 57988d
# Added install to logwatch.cron if no cron.daily dir. -mgt
Packit 57988d
#
Packit 57988d
# Revision 1.18  2008/05/08 22:47:41  mike
Packit 57988d
# Added BIGGER note for the new cron requirement -mgt
Packit 57988d
#
Packit 57988d
# Revision 1.17  2007/11/28 16:06:56  mike
Packit 57988d
# Prefix option code from Craig Ruff -mgt
Packit 57988d
#
Packit 57988d
# Revision 1.16  2007/11/28 15:50:43  mike
Packit 57988d
# Typod Craig Ruff sorry -mgt
Packit 57988d
#
Packit 57988d
# Revision 1.15  2007/11/28 15:49:47  mike
Packit 57988d
# Patch from Craig Ruff for MANDIR under Solaris -mgt
Packit 57988d
#
Packit 57988d
# Revision 1.14  2007/11/28 15:43:14  mike
Packit 57988d
# Patch from Craig Ruff for CONFIGDIR munge -mgt
Packit 57988d
#
Packit 57988d
# __________________________________________________________________
Packit 57988d
#
Packit 57988d
#Note: This script is provided for the non-RPM installs.
Packit 57988d
#It is preferred that logwatch be packaged by a distribution
Packit 57988d
#specifically for your installation. But since that is not always
Packit 57988d
#possible we have included this script.
Packit 57988d
Packit 57988d
#Add PATHS for various OS options
Packit 57988d
#Set PATH for solaris /usr/ucb/install
Packit 57988d
PATH=/usr/ucb:$PATH
Packit 57988d
#Set PATH for OpenBSD makewhatis /usr/libexec/makewhatis
Packit 57988d
PATH=$PATH:/usr/libexec
Packit 57988d
#Set PATH for IRIX makewhatis /usr/lib/makewhatis
Packit 57988d
PATH=$PATH:/usr/lib
Packit 57988d
export PATH
Packit 57988d
Packit 57988d
#Set OS and GLOBIGNORE
Packit 57988d
OS=`uname -s`
Packit 57988d
GLOBIGNORE=*CVS
Packit 57988d
Packit 57988d
#All these can be set via user input
Packit 57988d
#Defaults
Packit 57988d
BASEDIR="/usr/share/logwatch"
Packit 57988d
CONFIGDIR="/etc/logwatch"
Packit 57988d
TEMPDIR="/var/cache/logwatch"
Packit 57988d
PERLEXE="/usr/bin/perl"
Packit 57988d
MANDIR="/usr/share/man"
Packit 57988d
Packit 57988d
#Command line options section
Packit 57988d
#Currently only prefix is supported but now that the door is open other options should follow. -mgt
Packit 57988d
ac_prev=
Packit 57988d
for ac_option
Packit 57988d
do
Packit 57988d
   # If the previous option needs an argument, assign it.
Packit 57988d
   if test -n "$ac_prev"; then
Packit 57988d
      eval "$ac_prev=\$ac_option"
Packit 57988d
      ac_prev=
Packit 57988d
      continue
Packit 57988d
   fi
Packit 57988d
Packit 57988d
   ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
Packit 57988d
Packit 57988d
   case $ac_option in
Packit 57988d
      -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
Packit 57988d
         ac_prev=prefix ;;
Packit 57988d
      -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
Packit 57988d
         prefix=$ac_optarg ;;
Packit 57988d
      *)
Packit 57988d
         echo "Unknown option '$ac_option'"
Packit 57988d
         ;;
Packit 57988d
   esac
Packit 57988d
done
Packit 57988d
Packit 57988d
if [ "x$prefix" != "x" ]; then
Packit 57988d
   BASEDIR=$prefix
Packit 57988d
   munge_base=1
Packit 57988d
   CONFIGDIR=$BASEDIR/etc
Packit 57988d
   munge_conf=1
Packit 57988d
   TEMPDIR=$BASEDIR/tmp
Packit 57988d
   munge_temp=1
Packit 57988d
   MANDIR=$BASEDIR/man
Packit 57988d
fi
Packit 57988d
Packit 57988d
Packit 57988d
#Talk to user
Packit 57988d
printf "#################################\n"
Packit 57988d
printf "Preparing to install Logwatch\n"
Packit 57988d
printf "Enter the path to the Logwatch BaseDir [$BASEDIR] : "
Packit 57988d
read base
Packit 57988d
Packit 57988d
if [ "$base" = "" ]; then
Packit 57988d
   printf "### Using $BASEDIR\n"
Packit 57988d
else
Packit 57988d
   BASEDIR="$base"
Packit 57988d
   #Set munge flag
Packit 57988d
   munge_base=1
Packit 57988d
   printf "### Using $BASEDIR [will modify logwatch.pl]\n"
Packit 57988d
fi
Packit 57988d
Packit 57988d
printf "Enter the path for the Logwatch ConfigDir [$CONFIGDIR] : "
Packit 57988d
read config
Packit 57988d
Packit 57988d
if [ "$config" = "" ]; then
Packit 57988d
   printf "### Using $CONFIGDIR\n"
Packit 57988d
else
Packit 57988d
   CONFIGDIR="$config" 
Packit 57988d
   munge_conf=1
Packit 57988d
   printf "### Using $CONFIGDIR [will modify logwatch.pl]\n"
Packit 57988d
fi
Packit 57988d
Packit 57988d
printf "Enter the dir name to be used for temp files [$TEMPDIR] : "
Packit 57988d
read temp
Packit 57988d
Packit 57988d
if [ "$temp" = "" ]; then
Packit 57988d
   printf "### Using $TEMPDIR\n"
Packit 57988d
else
Packit 57988d
   TEMPDIR="$temp"
Packit 57988d
   munge_temp=1
Packit 57988d
   printf "### Using $TEMPDIR [will write to $CONFIGDIR/conf/logwatch.conf]\n"
Packit 57988d
fi
Packit 57988d
Packit 57988d
printf "Enter the location of perl [$PERLEXE] : "
Packit 57988d
read perlexe
Packit 57988d
Packit 57988d
if [ "$perlexe" = "" ]; then
Packit 57988d
   printf "### Using $PERLEXE\n"
Packit 57988d
else
Packit 57988d
   PERLEXE="$perlexe"
Packit 57988d
   munge_perl=1
Packit 57988d
   printf "### Using $PERLEXE [will modify logwatch.pl]\n"
Packit 57988d
fi
Packit 57988d
Packit 57988d
printf "Enter the dir name to used for the manpage [$MANDIR] : "
Packit 57988d
read mandir
Packit 57988d
Packit 57988d
if [ "$mandir" = "" ]; then
Packit 57988d
   printf "### Using $MANDIR\n"
Packit 57988d
else
Packit 57988d
   MANDIR="$mandir"
Packit 57988d
   printf "### Using $MANDIR [Will try to run makewhatis]\n"
Packit 57988d
fi
Packit 57988d
Packit 57988d
echo "### Installing"
Packit 57988d
Packit 57988d
#OS Tests for known issues
Packit 57988d
if [ $OS = "Darwin" ]; then
Packit 57988d
   munge_gzcat=1
Packit 57988d
fi
Packit 57988d
Packit 57988d
#Install is borked under IRIX
Packit 57988d
#BASE
Packit 57988d
install -m 0755 -d $BASEDIR
Packit 57988d
install -m 0755 -d $BASEDIR/dist.conf
Packit 57988d
install -m 0755 -d $BASEDIR/dist.conf/logfiles
Packit 57988d
install -m 0755 -d $BASEDIR/dist.conf/services
Packit 57988d
install -m 0755 -d $BASEDIR/default.conf
Packit 57988d
install -m 0755 -d $BASEDIR/default.conf/logfiles
Packit 57988d
install -m 0755 -d $BASEDIR/default.conf/services
Packit 57988d
install -m 0755 -d $BASEDIR/default.conf/html
Packit 57988d
install -m 0755 -d $BASEDIR/scripts
Packit 57988d
install -m 0755 -d $BASEDIR/scripts/logfiles
Packit 57988d
install -m 0755 -d $BASEDIR/scripts/services
Packit 57988d
install -m 0755 -d $BASEDIR/scripts/shared
Packit 57988d
install -m 0755 -d $BASEDIR/lib
Packit 57988d
install -m 0644 README $BASEDIR/README
Packit 57988d
install -m 0644 HOWTO-Customize-LogWatch $BASEDIR/HOWTO-Customize-LogWatch
Packit 57988d
install -m 0644 conf/*.conf $BASEDIR/default.conf
Packit 57988d
install -m 0644 conf/logfiles/* $BASEDIR/default.conf/logfiles
Packit 57988d
install -m 0644 conf/services/* $BASEDIR/default.conf/services
Packit 57988d
install -m 0644 conf/html/* $BASEDIR/default.conf/html
Packit 57988d
install -m 0755 scripts/logwatch.pl $BASEDIR/scripts/logwatch.pl
Packit 57988d
for i in scripts/logfiles/* ; do
Packit 57988d
   if [ `ls $i | grep -v CVS | wc -l` -ne 0 ] ; then
Packit 57988d
      install -m 0755 -d $BASEDIR/$i
Packit 57988d
      install -m 0644 $i/* $BASEDIR/$i
Packit 57988d
   fi
Packit 57988d
done
Packit 57988d
install -m 0644 scripts/shared/* $BASEDIR/scripts/shared
Packit 57988d
install -m 0644 scripts/services/* $BASEDIR/scripts/services
Packit 57988d
install -m 0644 lib/* $BASEDIR/lib
Packit 57988d
Packit 57988d
if [ $munge_base ]; then
Packit 57988d
   perl -pi -e "s%/usr/share/logwatch%$BASEDIR%" $BASEDIR/scripts/logwatch.pl
Packit 57988d
fi
Packit 57988d
Packit 57988d
#CONFIG
Packit 57988d
install -m 0755 -d $CONFIGDIR
Packit 57988d
install -m 0755 -d $CONFIGDIR/scripts
Packit 57988d
install -m 0755 -d $CONFIGDIR/scripts/services
Packit 57988d
install -m 0755 -d $CONFIGDIR/conf
Packit 57988d
install -m 0755 -d $CONFIGDIR/conf/logfiles
Packit 57988d
install -m 0755 -d $CONFIGDIR/conf/services
Packit 57988d
install -m 0755 -d $CONFIGDIR/conf/html
Packit 57988d
Packit 57988d
if [ $munge_conf ]; then
Packit 57988d
   perl -pi -e "s%/etc/logwatch%$CONFIGDIR%" $BASEDIR/scripts/logwatch.pl
Packit 57988d
fi
Packit 57988d
Packit 57988d
touch $CONFIGDIR/conf/logwatch.conf
Packit 57988d
touch $CONFIGDIR/conf/ignore.conf
Packit 57988d
touch $CONFIGDIR/conf/override.conf
Packit 57988d
Packit 57988d
#TEMP
Packit 57988d
#Using sanity check incase someone uses /tmp.
Packit 57988d
#The install would destory the perms on /tmp
Packit 57988d
if [ ! -d $TEMPDIR ]; then
Packit 57988d
   #Should this be 0700 -d $TEMPDIR ??
Packit 57988d
   install -m 0755 -d $TEMPDIR
Packit 57988d
fi
Packit 57988d
Packit 57988d
#This can create duplicates need to grep first -mgt
Packit 57988d
if [ $munge_temp ]; then
Packit 57988d
   echo "TmpDir = $TEMPDIR" >> $CONFIGDIR/conf/logwatch.conf
Packit 57988d
fi
Packit 57988d
Packit 57988d
#PERL
Packit 57988d
if [ $munge_perl ]; then
Packit 57988d
   perl -pi -e "s%/usr/bin/perl%$PERLEXE%" $BASEDIR/scripts/logwatch.pl
Packit 57988d
fi
Packit 57988d
Packit 57988d
#Gzcat
Packit 57988d
if [ $munge_gzcat ]; then
Packit 57988d
   echo "Pathtozcat = gzcat" >> $CONFIGDIR/conf/logwatch.conf
Packit 57988d
fi
Packit 57988d
Packit 57988d
#Search for makewhatis
Packit 57988d
for f in `echo $PATH | tr : ' '`; do
Packit 57988d
   if [ -x "$f/makewhatis" ]; then
Packit 57988d
      HAVE_MAKEWHATIS=1;
Packit 57988d
   fi;
Packit 57988d
done
Packit 57988d
Packit 57988d
#Man page
Packit 57988d
if [ -d $MANDIR/man5 ] && [ -d $MANDIR/man8 ] && [ -d $MANDIR/man1 ] && [ $HAVE_MAKEWHATIS ]; then
Packit 57988d
   install -m 0644 logwatch.8 $MANDIR/man8
Packit 57988d
   install -m 0644 logwatch.conf.5 $MANDIR/man5
Packit 57988d
   install -m 0644 override.conf.5 $MANDIR/man5
Packit 57988d
   install -m 0644 ignore.conf.5 $MANDIR/man5
Packit 57988d
   install -m 0644 postfix-logwatch.1 $MANDIR/man1
Packit 57988d
   install -m 0644 amavis-logwatch.1 $MANDIR/man1
Packit 57988d
   #OpenBSD no -s
Packit 57988d
   if [ $OS = "OpenBSD" ]; then
Packit 57988d
      makewhatis -u $MANDIR/man5 $MANDIR/man8 $MANDIR/man1
Packit 57988d
   else
Packit 57988d
      #FreeBSD and NetBSD no -s no -u
Packit 57988d
      if [ $OS = "FreeBSD" ] || [ $OS = "NetBSD" ]; then
Packit 57988d
         makewhatis $MANDIR/man5 $MANDIR/man8 $MANDIR/man1
Packit 57988d
      else
Packit 57988d
         #MacOS X aka Darwin no -u [even thought the manpage says]
Packit 57988d
         if [ $OS = "Darwin" ]; then
Packit 57988d
            makewhatis -o "1 5 8" $MANDIR
Packit 57988d
         else
Packit 57988d
         #Linux
Packit 57988d
            makewhatis -u -s "1 5 8" $MANDIR
Packit 57988d
         fi
Packit 57988d
      fi
Packit 57988d
   fi
Packit 57988d
else
Packit 57988d
   if [ $OS = "SunOS" ]; then
Packit 57988d
      #Go for the safe install rather then editing man.cf
Packit 57988d
      mkdir -p $MANDIR/man1m > /dev/null 2>&1
Packit 57988d
      install -m 0644 logwatch.8 $MANDIR/man1m
Packit 57988d
      install -m 0644 logwatch.conf.5 $MANDIR/man1m
Packit 57988d
      install -m 0644 override.conf.5 $MANDIR/man1m
Packit 57988d
      install -m 0644 ignore.conf.5 $MANDIR/man1m
Packit 57988d
      install -m 0644 postfix-logwatch.1 $MANDIR/man1
Packit 57988d
      install -m 0644 amavis-logwatch.1 $MANDIR/man1
Packit 57988d
      catman -w -M $MANDIR/man1m
Packit 57988d
   else
Packit 57988d
      install -m 0755 -d $MANDIR/man1
Packit 57988d
      install -m 0644 postfix-logwatch.1 $MANDIR/man1
Packit 57988d
      install -m 0644 amavis-logwatch.1 $MANDIR/man1
Packit 57988d
Packit 57988d
      install -m 0755 -d $MANDIR/man5
Packit 57988d
      install -m 0644 logwatch.conf.5 $MANDIR/man5
Packit 57988d
      install -m 0644 override.conf.5 $MANDIR/man5
Packit 57988d
      install -m 0644 ignore.conf.5 $MANDIR/man5
Packit 57988d
Packit 57988d
      install -m 0755 -d $MANDIR/man8
Packit 57988d
      install -m 0644 logwatch.8 $MANDIR/man8
Packit 57988d
Packit 57988d
      printf "Installed manpages in $MANDIR/man1, $MANDIR/man5 and $MANDIR/man8.\n"
Packit 57988d
      printf "Check your man.cf or man.conf to enable MANSECTS 1, 5 and 8\n"
Packit 57988d
   fi
Packit 57988d
fi
Packit 57988d
Packit 57988d
#Symlink
Packit 57988d
ln -f -s $BASEDIR/scripts/logwatch.pl /usr/sbin/logwatch
Packit 57988d
printf "Created symlink for /usr/sbin/logwatch \n"
Packit 57988d
Packit 57988d
#Cron
Packit 57988d
if [ -d /etc/cron.daily ]; then
Packit 57988d
   rm -f /etc/cron.daily/0logwatch
Packit 57988d
   install -m 0755 logwatch.cron /etc/cron.daily/0logwatch
Packit 57988d
   printf "Created /etc/cron.daily/0logwatch \n" 
Packit 57988d
else
Packit 57988d
   install -m 0744 logwatch.cron $CONFIGDIR/logwatch.cron
Packit 57988d
   printf "################ README ####################.\n"
Packit 57988d
   printf "You need to setup your cron job for logwatch.\n"
Packit 57988d
   printf "A sample script is included see $CONFIGDIR/logwatch.cron. \n"
Packit 57988d
   printf "2 0 * * * $CONFIGDIR/logwatch.cron >/dev/null 2>&1 \n"
Packit 57988d
fi
Packit 57988d
Packit 57988d
exit
Packit 57988d
# vi: shiftwidth=3 tabstop=3 et