#!/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 '' echo 'Wi-Fi presence parser debugger' echo '' echo '' echo '' if [ "${DEBUG_MODE}" ]; then button_value=0 button_name="Desactivate" actual_debug_status="activated" else button_value=1 button_name="Activate" actual_debug_status="desactivated" fi echo "
" echo "" echo "Debug is: ${actual_debug_status}. " echo '
' if [ "${DEBUG_MODE}" ]; then echo "
" echo "Sensor:
" echo "MAC:
" echo "" echo "
" echo '

' [ "${awk_script}" ] && tac "${DEBUG_LOG}" | awk "${awk_script}" echo '

' fi echo ''