#!/bin/bash
export LC_ALL='C'
export PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
APP_PATH='/tmp/beabloo'
CGIDATA_PATH="${APP_PATH}/wifiMetricsReceiver"
DEBUG_MODE_FILE="${CGIDATA_PATH}/debug_mode_on"
DEBUG_LOG="${CGIDATA_PATH}/debugWifiPresenceParser.log"
[ -e "${CGIDATA_PATH}" ] || mkdir -p "${CGIDATA_PATH}"
url_unquote () {
read str
python -c "import urllib; print urllib.unquote('${str}')"
}
echo "Content-type: text/html"
echo
###########################################
# Parseamos los argumentos pasados por URL
#
IFS='&'
for arg in ${QUERY_STRING}; do
var="$( echo ${arg} | cut -d'=' -f1 )"
val="$( echo ${arg} | cut -d'=' -f2 )"
case ${var} in
mac_stalking)
# Strict regexp in order to avoid command injection
mac_stalking="$( echo ${val} | url_unquote | tr 'a-z' 'A-Z' | tr '-' ':' | grep -Eo '^([0-9A-Z]{2}:){5}[0-9A-Z]{2}$' )"
;;
sensor_stalking)
# Strict regexp in order to avoid command injection
sensor_stalking="$( echo ${val} | url_unquote | grep -Eo '^(beabloo|sensor)-[0-9]{5}$')"
;;
debug_mode)
if [ "${val}" == '1' ]; then
touch "${DEBUG_MODE_FILE}"
elif [ "${val}" == '0' ]; then
[ -e "${DEBUG_MODE_FILE}" ] && rm -f "${DEBUG_MODE_FILE}"
[ -e "${DEBUG_LOG}" ] && rm -f "${DEBUG_LOG}"
fi
;;
esac
done
if [ -e "${DEBUG_MODE_FILE}" ];
then
DEBUG_MODE='true'
else
DEBUG_MODE=''
fi
awk_script=''
if [ "${mac_stalking}" ] && [ "${sensor_stalking}" ]; then
awk_script="{
if ( \$3 == \"${mac_stalking}\" &&
\$5 == \"${sensor_stalking}\" &&
\$2 > $( date -d'30 seconds ago' +%s ))
{
split(\$6, p, \";\")
printf(\"%s MAC: %s, SENSOR: %s, POWER: %s
\", \$1, \$3, \$5, \$4)
}
}"
elif [ "${mac_stalking}" ]; then
awk_script="{
if ( \$3 == \"${mac_stalking}\" &&
\$2 > $( date -d'30 seconds ago' +%s ))
{
split(\$6, p, \";\")
printf(\"%s MAC: %s, SENSOR: %s, POWER: %s
\", \$1, \$3, \$5, \$4)
}
}"
elif [ "${sensor_stalking}" ]; then
awk_script="{
if ( \$5 == \"${sensor_stalking}\" &&
\$2 > $( date -d'30 seconds ago' +%s ))
{
split(\$6, p, \";\")
printf(\"%s MAC: %s, SENSOR: %s, POWER: %s
\", \$1, \$3, \$5, \$4)
}
}"
else
awk_script="{
if ( \$2 > $( date -d'30 seconds ago' +%s ))
{
split(\$6, p, \";\")
printf(\"%s MAC: %s, SENSOR: %s, POWER: %s
\", \$1, \$3, \$5, \$4)
}
}"
fi
#echo "Content-type: text/html"
#echo
echo ''
echo '
' [ "${awk_script}" ] && tac "${DEBUG_LOG}" | awk "${awk_script}" echo '
' fi echo ''