} $Message = base64_encode(serialize($array)); fwrite(STDOUT, "ERR message=\"{$Message}\"\n"); } continue; } if ($GLOBALS["MACTUIDONLY"]) { if ($GLOBALS["DEBUG_LEVEL"] > 1) { WLOG("ASK: {$array["MAC"]} = ?"); } $uid = GetMacToUid($array["MAC"]); if ($uid != null) { fwrite(STDOUT, "OK user={$uid}\n"); continue; } $uid = trim(GetMacToUid($array["IPADDR"])); if ($uid == $array["IPADDR"]) { $uid = null; } if ($uid != null) { fwrite(STDOUT, "OK user={$uid}\n"); continue; } fwrite(STDOUT, "OK\n"); continue; } if (CheckQuota($array)) { fwrite(STDOUT, "OK\n"); } else { WLOG("ERR \"Out of quota\""); fwrite(STDOUT, "ERR message=\"Out Of Quota\"\n");
function parseURL($url) { $uri = null; if ($GLOBALS["DEBUG_LEVEL"] > 1) { WLOG("parseURL():: Analyze [{$url}]"); } $md5 = md5($url); $t = explode(" ", $url); while (list($index, $value) = each($t)) { if ($GLOBALS["DEBUG_LEVEL"] > 1) { WLOG("parseURL():: {$md5}: t[{$index}]={$value}"); } $value = trim($value); if (preg_match("#^\\%[0-9]+#", trim($value))) { $t[$index] = null; } if ($value == "-") { $t[$index] = null; } } $GLOBALS["CACHE_URI"][$md5]["LOGIN"] = $t[0]; $GLOBALS["CACHE_URI"][$md5]["IPADDR"] = $t[1]; $GLOBALS["CACHE_URI"][$md5]["MAC"] = $t[2]; $GLOBALS["CACHE_URI"][$md5]["FORWARDED"] = $t[3]; $GLOBALS["CACHE_URI"][$md5]["RHOST"] = $t[4]; if ($GLOBALS["CACHE_URI"][$md5]["MAC"] == "00:00:00:00:00:00") { $GLOBALS["CACHE_URI"][$md5]["MAC"] = null; } if (preg_match("#^www\\.(.+)\$#", $GLOBALS["CACHE_URI"][$md5]["RHOST"], $re)) { $GLOBALS["CACHE_URI"][$md5]["RHOST"] = $re[1]; } if (preg_match("#(.+?):[0-9]+#", $GLOBALS["CACHE_URI"][$md5]["RHOST"], $re)) { $GLOBALS["CACHE_URI"][$md5]["RHOST"] = $re[1]; } if (trim($GLOBALS["CACHE_URI"][$md5]["FORWARDED"]) != null) { $GLOBALS["CACHE_URI"][$md5]["IPADDR"] = $GLOBALS["CACHE_URI"][$md5]["FORWARDED"]; } if ($GLOBALS["CACHE_URI"][$md5]["LOGIN"] == null) { if ($GLOBALS["CACHE_URI"][$md5]["MAC"] != null) { $GLOBALS["CACHE_URI"][$md5]["LOGIN"] = GetMacToUid($GLOBALS["CACHE_URI"][$md5]["MAC"]); } } if ($GLOBALS["CACHE_URI"][$md5]["LOGIN"] == null) { if ($GLOBALS["CACHE_URI"][$md5]["IPADDR"] != null) { $GLOBALS["CACHE_URI"][$md5]["LOGIN"] = GetMacToUid($GLOBALS["CACHE_URI"][$md5]["IPADDR"]); } } // %25 192.168.1.209 %25 - www.google-analytics.com // 10.0.0.32 00:1e:8c:a5:39:19 - crash- // 10.0.0.76 00:25:22:73:31:d5 - // 10.0.0.60 00:1d:92:70:96:70 - fbexternal-a.akamaihd.net:443 return $GLOBALS["CACHE_URI"][$md5]; }
} $clt_conn_tag = null; if ($GLOBALS["DEBUG_LEVEL"] > 0) { WLOG($url); } if (preg_match("#([0-9a-z:]+)#", $url, $re)) { $MAC = trim(strtolower($re[1])); } if ($GLOBALS["DEBUG_LEVEL"] > 0) { WLOG("ASK: {$MAC} = ?"); } if ($MAC == "00:00:00:00:00:00") { fwrite(STDOUT, "OK\n"); continue; } $uidArray = GetMacToUid($MAC); $uid = $uidArray["UID"]; $ruleid = $uidArray["RULE"]; if ($GLOBALS["DEBUG_LEVEL"] > 0) { WLOG("ASK: {$MAC} = {$uid}"); } if ($uid == null) { fwrite(STDOUT, "OK\n"); continue; } if ($uid != null) { $clt_conn_tag = " tag=HotspotRule{$ruleid} log=HotSpot,none"; fwrite(STDOUT, "OK user={$uid}{$clt_conn_tag}\n"); continue; } fwrite(STDOUT, "OK\n");
$max_execution_time = ini_get('max_execution_time'); WLOG("Starting... Log level:{$GLOBALS["DEBUG_LEVEL"]};"); while (!feof(STDIN)) { $url = trim(fgets(STDIN)); if ($url == null) { continue; } $clt_conn_tag = null; if ($GLOBALS["DEBUG_LEVEL"] > 1) { WLOG($url); } $array = parseURL($url); if ($GLOBALS["DEBUG_LEVEL"] > 1) { WLOG("ASK: {$array["MAC"]} = ?"); } $uid = GetMacToUid($array["MAC"], $array["IPADDR"]); $Group = GetGroup($array["MAC"], $array["IPADDR"]); if ($uid != null) { if ($Group != null) { $clt_conn_tag = " clt_conn_tag={$Group} log={$Group},none"; } fwrite(STDOUT, "OK user={$uid}{$clt_conn_tag}\n"); continue; } fwrite(STDOUT, "OK\n"); } $distanceInSeconds = round(abs(time() - $GLOBALS["STARTIME"])); $distanceInMinutes = round($distanceInSeconds / 60); WLOG("v1.0:" . basename(__FILE__) . " die after ({$distanceInSeconds}s/about {$distanceInMinutes}mn)"); if (isset($GLOBALS["F"])) { @fclose($GLOBALS["F"]);