# $Id: dansguardian.spec 1741 2004-07-24 04:30:14Z dag $ # Authority: dag # Upstream: Daniel Barron %define real_name DansGuardian Summary: Content filtering web proxy Name: dansguardian Version: 2.8.0.3 Release: 1.suse9.0 License: GPL Group: System Environment/Daemons URL: http://www.dansguardian.org/ Packager: Don Vosburg Vendor: Dag Apt Repository, http://dag.wieers.com/apt/ Source: http://dansguardian.org/downloads/2/Stable/dansguardian-%{version}.source.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root %description DansGuardian is a web filtering engine that checks the content within the page itself in addition to the more traditional URL filtering. DansGuardian is a content filtering proxy. It filters using multiple methods, including URL and domain filtering, content phrase filtering, PICS filtering, MIME filtering, file extension filtering, POST filtering. %prep %setup ### FIXME: Add a default dansguardian.httpd for Apache. (Please fix upstream) %{__cat} <dansguardian.httpd ### You may need to include conf.d/dansguardian.conf to make it work. ScriptAlias /dansguardian/ %{_localstatedir}/www/dansguardian/ DirectoryIndex dansguardian.pl Options ExecCGI order deny,allow deny from all allow from 127.0.0.1 EOF %{__cat} <<'EOF' >dansguardian.init #!/bin/sh # # Startup script for dansguardian # Modified extensively for SUSE Linux by Don Vosburg # # chkconfig: 35 92 8 # description: A web content filtering plugin for web \ # proxies, developed to filter using lists of \ # banned phrases, MIME types, filename \ # extensions and PICS labelling. # processname: dansguardian # pidfile: /var/run/dansguardian.pid # config: /etc/dansguardian/dansguardian.conf ### BEGIN INIT INFO # Provides: dansguardian # Required-Start: $local_fs $remote_fs $network $named $time # X-UnitedLinux-Should-Start: squid # Required-Stop: $local_fs $remote_fs $network # X-UnitedLinux-Should-Stop: # Default-Start: 3 5 # Default-Stop: 0 1 2 6 # Short-Description: DansGuardian web content filter # Description: Start the DansGuardian web content filter # providing HTTP and other filtering services in conjunction with squid ### END INIT INFO CONFFILELOCATION=/etc/dansguardian/ BINARYLOCATION=/usr/sbin/ PIDDIR=/var/run/ SQUID_BIN=/usr/sbin/squid SQUID_PID=/var/run/squid.pid . /etc/rc.status RC_OPTIONS='-v' rc_reset # File includes changes by Thomas Jarosch function wait_for_pid() { local PID=$1 local RET=0 if [ $PID -eq 0 ] ; then return $RET fi # give 60 secs then KILL local COUNTDOWN=60 while [ -d /proc/${PID} ] && [ $COUNTDOWN -gt 0 ] ; do sleep 1 COUNTDOWN=$[$COUNTDOWN-1] done if [ -d /proc/${PID} ]; then COMMAND=`ps h -o command ${PID}` logger "dansguardian: timeout waiting for PID ${PID}: ${COMMAND}; sending SIGKILL" kill -KILL $PID >/dev/null 2>&1 RET=1 fi return $RET } # See how we were called. case "$1" in start) if [ -e $SQUID_PID ] ; then if [ -f ${BINARYLOCATION}dansguardian ] && [ -f ${CONFFILELOCATION}dansguardian.conf ]; then echo -n "Starting dansguardian: " if ${BINARYLOCATION}dansguardian 2> /dev/null; then rc_status $RC_OPTIONS [ -d /var/lock/subsys ] && touch /var/lock/subsys/dansguardian else rc_failed rc_status -v rc_exit fi fi else echo -n "- Warning: squid not running! DansGuardian requires squid!" rc_failed 7 fi ;; stop) echo -n "Shutting down dansguardian: " WAITPID=0 if [ -f ${PIDDIR}dansguardian.pid ] ; then WAITPID=`cat ${PIDDIR}dansguardian.pid` fi if ${BINARYLOCATION}dansguardian -q 2> /dev/null; then if wait_for_pid $WAITPID ; then rc_status $RC_OPTIONS else rc_failed rc_status -v rc_exit fi /bin/rm -f ${PIDDIR}dansguardian.pid /bin/rm -f /tmp/.dguardianipc [ -d /var/lock/subsys ] && /bin/rm -f /var/lock/subsys/dansguardian else rc_failed rc_status -v rc_exit fi ;; restart) $0 stop $0 start ;; #status) # if [ -f ${BINARYLOCATION}dansguardian ]; then # ${BINARYLOCATION}dansguardian -s # fi # ;; status) echo -n "Checking for dansguardian " checkproc ${BINARYLOCATION}dansguardian rc_status -v ;; *) echo "Usage: $0 {start|stop|restart|status}" >&2 ;; esac exit 0 EOF %{__cat} <<'EOF2' >squid_DG.init #! /bin/sh # Copyright (c) 1996, 1997, 1998 S.u.S.E. GmbH # Copyright (c) 1998, 1999, 2000, 2001 SuSE GmbH # Copyright (c) 2002 SuSE Linux AG # # Author: Frank Bodammer, Peter Poeml, Klaus Singvogel # Modified extensively to add dansguardian info by Don Vosburg # # init.d/squid_DG # ### BEGIN INIT INFO # Provides: squid_DG # Required-Start: $local_fs $remote_fs $network $named $time # X-UnitedLinux-Should-Start: apache # Required-Stop: $local_fs $remote_fs $network # X-UnitedLinux-Should-Stop: # Default-Start: 3 5 # Default-Stop: 0 1 2 6 # Short-Description: Squid web cache, DansGuardian content filtering # Description: Start the Squid web cache, providing # HTTP, FTP and other proxy services # along with dansguardian content filter ### END INIT INFO SQUID_BIN=/usr/sbin/squid SQUID_PID=/var/run/squid.pid SQUID_CONF=/etc/squid/squid.conf CONFFILELOCATION=/etc/dansguardian/ BINARYLOCATION=/usr/sbin/ PIDDIR=/var/run/ if [ ! -x $SQUID_BIN ] ; then echo -n "WWW-proxy squid not installed ! " exit 5 fi . /etc/rc.status RC_OPTIONS='-v' rc_reset ulimit -n 4096 # determine which one is the cache_swap directory CACHE_SWAP=`perl -n -e \ '/^cache_dir\s+\S+\s+(.*)\s+\d+\s+\d+\s+\d+/ && print "\$1 "' \ /etc/squid/squid.conf` [ -z "$CACHE_SWAP" ] && CACHE_SWAP=/var/cache/squid # File includes changes by Thomas Jarosch function wait_for_pid() { local PID=$1 local RET=0 if [ $PID -eq 0 ] ; then return $RET fi # give 60 secs then KILL local COUNTDOWN=60 while [ -d /proc/${PID} ] && [ $COUNTDOWN -gt 0 ] ; do sleep 1 COUNTDOWN=$[$COUNTDOWN-1] done if [ -d /proc/${PID} ]; then COMMAND=`ps h -o command ${PID}` logger "dansguardian: timeout waiting for PID ${PID}: ${COMMAND}; sending SIGKILL" kill -KILL $PID >/dev/null 2>&1 RET=1 fi return $RET } case "$1" in start) echo -n "Starting WWW-proxy squid " checkproc $SQUID_BIN if [ $? -eq 0 ] ; then echo -n "- Warning: squid already running ! " rc_failed rc_status -v else [ -e $SQUID_PID ] && echo -n "- Warning: $SQUID_PID exists ! " for adir in $CACHE_SWAP ; do if [ ! -d $adir/00 ]; then # create missing cache directories umask 027 # prevent users reading any cache data echo -n " ($adir)" $SQUID_BIN -z -F > /dev/null 2>&1 fi if [ ! -d $adir/00 ]; then echo " - Could not create cache_dir ! " rc_failed rc_status -v rc_exit fi done sleep 2 rc_status $RC_OPTIONS fi startproc -l /var/log/squid/rcsquid.log $SQUID_BIN -sYD echo -n "Starting dansguardian " if [ -f ${BINARYLOCATION}dansguardian ] && [ -f ${CONFFILELOCATION}dansguardian.conf ]; then if ${BINARYLOCATION}dansguardian 2> /dev/null; then rc_status $RC_OPTIONS [ -d /var/lock/subsys ] && touch /var/lock/subsys/dansguardian else echo -n "- Warning: dansguardian already running ! " rc_failed rc_status -v rc_exit fi fi ;; stop) echo -n "Shutting down dansguardian " WAITPID=0 if [ -f ${PIDDIR}dansguardian.pid ] ; then WAITPID=`cat ${PIDDIR}dansguardian.pid` fi if ${BINARYLOCATION}dansguardian -q 2> /dev/null; then if wait_for_pid $WAITPID ; then rc_status $RC_OPTIONS else rc_failed rc_status -v rc_exit fi /bin/rm -f ${PIDDIR}dansguardian.pid /bin/rm -f /tmp/.dguardianipc [ -d /var/lock/subsys ] && /bin/rm -f /var/lock/subsys/dansguardian else echo -n "- Warning: dansguardian not running ! " rc_failed 7 rc_status -v fi echo -n "Shutting down WWW-proxy squid " if checkproc $SQUID_BIN ; then $SQUID_BIN -k shutdown sleep 2 if [ -e $SQUID_PID ] ; then echo -n "- wait a minute " i=60 while [ -e $SQUID_PID ] && [ $i -gt 0 ] ; do sleep 2 i=$[$i-1] echo -n "." [ $i -eq 41 ] && echo done fi if checkproc $SQUID_BIN ; then killproc -TERM $SQUID_BIN echo -n " Warning: squid killed !" fi else echo -n "- Warning: squid not running ! " rc_failed 7 fi rc_status -v ;; try-restart) $0 status >/dev/null && $0 restart rc_status ;; restart) $0 stop $0 start rc_status ;; force-reload) $0 stop $0 start $0 reload rc_status ;; reload) echo -n "Shutting down dansguardian: " WAITPID=0 if [ -f ${PIDDIR}dansguardian.pid ] ; then WAITPID=`cat ${PIDDIR}dansguardian.pid` fi if ${BINARYLOCATION}dansguardian -q 2> /dev/null; then if wait_for_pid $WAITPID ; then rc_status $RC_OPTIONS else rc_failed rc_status -v fi /bin/rm -f ${PIDDIR}dansguardian.pid /bin/rm -f /tmp/.dguardianipc [ -d /var/lock/subsys ] && /bin/rm -f /var/lock/subsys/dansguardian else rc_failed rc_status -v fi echo -n "Reloading WWW-proxy squid " if checkproc $SQUID_BIN ; then $SQUID_BIN -k rotate sleep 2 $SQUID_BIN -k reconfigure rc_status -v else echo -n "- Warning: squid not running ! " rc_failed 7 rc_status -v rc_exit fi if [ -f ${BINARYLOCATION}dansguardian ] && [ -f ${CONFFILELOCATION}dansguardian.conf ]; then echo -n "Starting dansguardian: " if ${BINARYLOCATION}dansguardian 2> /dev/null; then rc_status $RC_OPTIONS [ -d /var/lock/subsys ] && touch /var/lock/subsys/dansguardian else rc_failed rc_status -v rc_exit fi fi ;; status) echo -n "Checking for dansguardian " checkproc ${BINARYLOCATION}dansguardian rc_status -v echo -n "Checking for WWW-proxy squid " checkproc $SQUID_BIN rc_status -v ;; probe) test $SQUID_CONF -nt $SQUID_PID && echo reload ;; *) echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload|probe}" exit 1 ;; esac rc_exit EOF2 %build ### FIXME: Makefiles don't follow proper autotools directory standard. (Please fix upstream) ./configure \ --bindir="%{_sbindir}/" \ --cgidir="%{_localstatedir}/www/dansguardian/" \ --installprefix="%{buildroot}" \ --logdir="/var/log/dansguardian/" \ --logrotatedir="%{_sysconfdir}/logrotate.d/" \ --mandir="%{_mandir}/" \ --sysconfdir="%{_sysconfdir}/dansguardian/" \ --sysvdir="%{_initrddir}/" \ --runas_usr="nobody" \ --runas_grp="nobody" %{__perl} -pi.orig -e ' s|^(CHKCONFIG) =.*$|$1 = :|; s|^\tchown|#\tchown|; s|/usr/lib|%{_libdir}|g; ' Makefile %{__make} %{?_smp_mflags} %install %{__rm} -rf %{buildroot} ### FIXME: Directory not created prior installation. (Please fix upstream) %{__install} -d -m0755 %{buildroot}%{_sysconfdir}/logrotate.d/ %makeinstall %{__install} -D -m0644 dansguardian.httpd %{buildroot}%{_sysconfdir}/httpd/conf.d/dansguardian.conf %{__install} -D -m0755 dansguardian.init %{buildroot}%{_initrddir}/dansguardian %{__install} -D -m0755 squid_DG.init %{buildroot}%{_initrddir}/squid_DG %post mv /etc/rc.d/init.d/dansguardian /etc/init.d/ mv /etc/rc.d/init.d/squid_DG /etc/init.d/ %preun if [ $1 -eq 0 ]; then /etc/init.d/dansguardian stop &>/dev/null || : fi %postun %clean %{__rm} -rf %{buildroot} %files %defattr(-, root, root, 0755) %doc INSTALL LICENSE README %doc %{_mandir}/man?/* %dir %{_sysconfdir}/dansguardian/ %config(noreplace) %{_sysconfdir}/dansguardian/dansguardian.conf %config(noreplace) %{_sysconfdir}/dansguardian/dansguardianf1.conf #%config(noreplace) %{_sysconfdir}/dansguardian/template.html %config %{_sysconfdir}/dansguardian/*list %config %{_sysconfdir}/dansguardian/phraselists/ #%config %{_sysconfdir}/dansguardian/messages %config %{_sysconfdir}/dansguardian/languages/ %config %{_sysconfdir}/dansguardian/logrotation/ %config %{_sysconfdir}/dansguardian/pics/ %config %{_sysconfdir}/dansguardian/transparent1x1.gif %config(noreplace) %{_sysconfdir}/httpd/conf.d/* %config %{_initrddir}/* %config %{_sysconfdir}/logrotate.d/* %{_sbindir}/* %{_localstatedir}/www/dansguardian/ %defattr(0700, nobody, nobody, 0755) %{_localstatedir}/log/dansguardian/ %changelog * Sat Oct 23 2004 Don Vosburg - 2.8.0.3-1 - Updated to release 2.8.0.3 * Fri Jul 30 2004 Dag Wieers - 2.8.0.2-1 - Updated to release 2.8.0.2. * Wed Jul 21 2004 Dag Wieers - 2.8.0-1 - Updated to release 2.8.0-0. * Thu Apr 15 2004 Dag Wieers - 2.6.1.13-1 - Updated to release 2.6.1-13. * Fri Mar 26 2004 Dag Wieers - 2.6.1.12-1 - Initial package. (using DAR)