#!/bin/bash -login

# $Id: dlogger.sh,v 1.1.1.1 2003/10/04 16:01:42 karsten Exp $

###########################################################################
## einstellungen
QUELLLOG=/var/log/messages
ZIELLOG=/var/log/fw.log
SUCHSTRING=DENIED
###########################################################################
## funktion info
info()
{
cat <<EOF

 ##########################################################################
 #                                                                        #
 #  »»»»FUNKTION««««                                                      #
 #                                                                        #
 #  Dieses  Script   extrahiert  im  Hintergrund  bestimmte  Zeilen  aus  #
 #  beliebigen Logdateien. Es wird allgemein als Hintergrundprozess  von  #
 #  Root gestartet.                                                       #
 #                                                                        #
 #                                                                        #
 #  »»»»STANDARDNOTES««««                                                 #
 #                                                                        #
 #  Autor         : Karsten Kruse tecneeq@gmx.net                         #
 #  URL           : http://www.tecneeq.de/                                #
 #  Lizenz        : GPL2                                                  #
 #  Version       : v0.0.2                                                #
 #  Erstrelease   : 08.Feb.2001                                           #
 #  Lastmodified  : 12.Feb.2001                                           #
 #  Benoetigt     : bash, tail, pidof, kill, grep, kaffee                 #
 #  Tabbreite     : 8                                                     #
 #  Zeilenumbruch : Unix                                                  #
 #  Copyright     : (C) 2001 by Karsten Kruse tecneeq@gmx.net             #
 #                                                                        #
 #  This program 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.                                   #
 #                                                                        #
 #  This program 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  this  program ;  if  not,  write  to  the Free Software  #
 #  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.             #
 #                                                                        #
 #  »»»»CHANGES««««                                                       #
 #                                                                        #
 #  08.02.2001 v0.0.1                                                     #
 #  -erstrelease                                                          #
 #  12.02.2001 v0.0.2                                                     #
 #  -bugfix                                                               #
 #                                                                        #
 #  »»»»TODO««««                                                          #
 #                                                                        #
 #  wenn du eine idee hast lass es mich wissen, ich bau sie ein :)        #
 #                                                                        #
 #  »»»»BUGS««««                                                          #
 #                                                                        #
 #  wenn du fehler findest schick mir bitte eine mail.                    #
 #                                                                        #
 #  »»»»EINSTELLUNGEN««««                                                 #
 #                                                                        #
 #  SOURCELOG="/var/log/messages"                                         #
 #  welches logfile soll durchsucht werden?                               #
 #  ZIELLOG="/var/log/su.log"                                             #
 #  wohin sollen die gefundenen zeilen geschrieben werden?                #
 #  SUCHSTRING="su"                                                       #
 #  wonach soll im sourcelog gesucht werden?                              #
 #                                                                        #
 ##########################################################################

EOF
}
###########################################################################
## funktion usage
usage()
{
echo "
 FUNKTION
    Dieses Programm extrahiert im Hintergrund bestimmte Zeilen aus
    beliebigen Logdateien. Es wird allgemein als Dämon gestartet.
    Siehe auch $0 --info
 SYNTAX
    $0 [option]
 OPTIONEN
    -i  --info     Infotext ausgeben
    -h  --help     Diese Hilfe ausgeben
        --start    Starte den Dämon
        --stop    Breche den Dämon ab
        --restart  Starte den Dämon neu
 BEISPIEL
    $0 --info
    $0 --help
"
}
check_uid()
{
if [ ! `id -u` = "0" ]; then
echo -e "\nDu solltest Root für diese Aufgaben sein! Breche ab...\n"
	exit 1
fi
}
restart()
{
if [ -e /var/run/dlogger.pid ] ; then
kill -15 `echo $((\`cat /var/run/dlogger.pid\`-1))` ;
echo "deamon gefunden, starte neu" ;
fi
tail -f -n 0 "$QUELLLOG" | /usr/bin/grep "$SUCHSTRING" >> "$ZIELLOG" &
echo $! > /var/run/dlogger.pid
}

start()
{
if [ -e /var/run/dlogger.pid ] ; then
echo "alten deamon gefunden, breche ab" ;
exit 1 ;
fi
tail -f -n 0 "$QUELLLOG" | /usr/bin/grep "$SUCHSTRING" >> "$ZIELLOG" &
echo $! > /var/run/dlogger.pid
}

stop()
{
if [ -e /var/run/dlogger.pid ] ; then
	kill -15 `echo $((\`cat /var/run/dlogger.pid\`-1))` ;
	echo "deamon gefunden und gestoppt" ;
	rm /var/run/dlogger.pid ;
else
	echo "keinen deamon gefunden, breche ab" ;
	exit 1 ;
fi
}
case $1 in
	--gtmlmode)	info   ; exit 0 ;;
	-h|--help)	usage  ; exit 0 ;;
	-i|--info)	info | $PAGER ; exit 0 ;;
	--start)	check_uid ; start   ; exit ;;
	--stop)		check_uid ; stop    ; exit ;;
	--restart)	check_uid ; restart ; exit ;;
	*)		usage  ; exit 1 ;;
esac
