#!/bin/bash
#
# send_apache_info
#
# Schickt Apache-Server-Info ans ULS
#
# Voraussetzung: Modul mod_info muss geladen sein
#
################################################
#
PORT=80
#
unset CONFIG ULSSECTION
#
while getopts s:c:p:? op
 do
  case "$op" in
   c) CONFIG="$OPTARG";;
   p) PORT=$OPTARG;;
   s) ULSSECTION="$OPTARG";;
   ?) echo "usage: `basename $0` [-c <config> | [-p <port>] [-s <ulssection>]] [-?] [<data> <time>]"
      exit 0;;
   *) echo "usage: `basename $0` [-p <port>] [-?] [<date> <time>]"
      exit 1;;
  esac
done
shift $(( $OPTIND -1))
#
if [[ -f /etc/uls/uls.conf ]]
 then
  . /etc/uls/uls.conf
fi
if [[ -z "$ULSHOSTNAME" ]]
 then
  ULSHOSTNAME=`hostname -s`
fi
#
if [[ $# -ge 2 ]]
 then
  DT="$1 $2"
else
  DT=`date '+%F %T%:z'`
fi
#
INFOFILE=/tmp/uls_send_apache_info.$$
#
function get_server_info()
{ 
  httpget -q -f $INFOFILE -tc 10 -t 10 -e $1 "server-info"
  if [[ -s $INFOFILE ]]
   then
    send_stdin_file -h $ULSHOSTNAME "$2" Mod-Info Info $DT Server-Info.html <$INFOFILE
    sed -n 's/<[^>]*>//g;s/.*Server Version: \(.*\)/\1/p' $INFOFILE | awk -v DT="$DT" -v SERVER="$ULSHOSTNAME" -v SECTION="$2" '
{ for( i = 1; i <= NF; i++ )
  { if( $i ~ "^[a-zA-Z]" && split($i, a, "/") > 1 )
      print "V;" DT ";" SERVER ";" SECTION ";Mod-Info;" a[1] ";" a[2] ";_"
  }
}' | send_test_tab
fi
}

if [[ -n "$CONFIG" ]]
 then
  export ULSHOSTNAME DT
  egrep '[[:blank:]]*[^#]*:[0-9]+' "$CONFIG" | while read con sect
   do
    get_server_info $con "${sect:-Apache}"
  done
else
  get_server_info 127.0.0.1:$PORT ${ULSSECTION:-Apache}
fi
#
rm $INFOFILE
