Background

in the same vain as how ndt uses fakewww, the implementation of the reverse traceroute server uses a daemon called shttpd. This page shows how to make the reverse traceroute server use apache instead.

Virtual Server

We construct the virtual server config:

/etc/apache2/sites-enabled/002-revtr
NameVirtualHost *:3765
<VirtualHost *:3765>
        ServerAdmin webmaster@localhost

        DocumentRoot /usr/local/rev-tr
        <Directory /usr/local/rev-tr>
                AllowOverride None
                Options +ExecCGI
                AddHandler cgi-script .pl
        </Directory>

        AddHandler cgi-script .pl
        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined
        ServerSignature On

</VirtualHost>

Don't forget the port

/etc/apache2/ports.conf
Listen 3765

Disable shttpd

To do this, edit the init.d file.

Configuration Files

knoppix.sh

# use apache for the rev traceroute server
if [ -f /UNIONFS/media/$MNT/NPTools/002\-revtr ]; then
    # setup the init.d script
    restore_NPT_file $MNT rev\-tr /etc/init.d
    # setup the apache conf
    restore_NPT_file $MNT 002\-revtr /etc/apache2/sites-enabled
fi

rev-tr init.d script

#!/bin/bash 
#
# chkconfig: 2345 55 25
# description: Starts the NDT Web server
# written by Peter Bertoncini <pjb@anl.gov>
#
# Customized NTP startup script for Internet Network Performance Tools
# Live CD.  The process for this tool, and all the others, it to let 
# Knoppix take care of some customization during the boot phase.  Knoppix
# will automatically look for, and execute, a knoppix.sh script on an
# attached drive.  This means that we will store the customized file
# on a USB thumb drive.  At boot time the boot process will find and
# execute a knoppix.sh script that will copy the config files into
# the proper place.  If they don't exist, then prompt the user to
# customize things.
#
# At shutdown, copy the files back to the mounted USB drive.
# Rich Carlson - 4/20/06

path=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
# set to 0 to not run the http server; assume something like apache will run it
REVTR=0

# bring in NPT functions for later use
ENV="env -i PATH=/lib/init:/bin:/sbin:/usr/bin"
. /lib/init/nptoolkit-functions.sh

if [ ! $REVTR ] ; then
  [ -f $REVTR ] || exit 0
fi

# Specify some default options.
REVTR_OPTIONS="-p3765 -d /usr/local/rev-tr -c .pl -C/usr/bin/perl"

case "$1" in
   start)
        echo -n "Starting Reverse Traceroute Services: "
        if [ -f /usr/local/rev-tr/traceroute.pl ]; then
                echo " - using customized reverse traceroute web server."
        else
                /bin/cp /usr/local/etc/rev-tr.knoppix /usr/local/rev-tr/traceroute.pl
                echo " - using generic rev-tr web server page"
                /bin/touch /tmp/customize.rev-tr
        fi
        mkdir -p /var/run/rev-tr/run
        chmod 755 /var/run/rev-tr/run
        chown root:wheel /var/run/rev-tr/run >/dev/null 2>&1 || true

        if [ ! -x $REVTR ]; then
                echo "Reverse Traceroute web server binary missing - Not starting"
                exit 1
        fi
        if [ ! $REVTR ]; then
        start-stop-daemon --start -m --pidfile=/var/run/rev-tr/run/rev-tr.pid \
                --exec $REVTR -- $REVTR_OPTIONS >/dev/null 2>&1 & 
        fi
        echo "Reverse-Traceroute: "
    ;;
 
     stop)
         echo -n "Stopping Rev-TR services: "
         if [ ! $REVTR ]; then
                 start-stop-daemon --stop --name rev-tr
         fi
         echo -n "rev-tr"
         mount_NPT_drives
         select_NPT_drive
         if [ "$DRVS" == "" ] ; then
                 echo "Error: No drive avaialble to hold traceroute/ping server customization files."
         else
                 for DRV in $DRVS ; do 
                         save_NPT_file $DRV /usr/local/rev-tr/traceroute.pl traceroute.pl
                         echo "Saving Traceroute/Ping server customizatin files on '$DRV' drive."
                 done
         fi
 
         echo "."
     ;;
 
     restart)
         echo -n "Restarting Reverse Traceroute services: "
         if [ ! $REVTR ]; then
         start-stop-daemon --stop --name rev-tr
         sleep 2
         start-stop-daemon --start -m --pidfile=/var/run/rev-tr/run/rev-tr.pid \
                 --exec $REVTR -- $REVTR_OPTIONS >/dev/null 2>&1 & 
         fi
         echo -n "Reverse-traceroute"
     ;;
 
     *)
         echo $"Usage: $0 {start|stop|restart}"
         exit 1
     ;;
 esac
 
 exit 0

Problems

The version of traceroute.pl supplied on the disk does not have executable flags set. I added chmod to the knoppix.sh for the file, however, it doesn't appear to work during boot (running the same command on login is fine however).

  • No labels