function ItCharted($ARRAY) { $MAC = null; $IP = $ARRAY["IP"]; if (preg_match("#([0-9\\.]+)\\/(.*)#", $IP, $re)) { $hostname = $re[2]; $IP = $re[1]; } $userid = $ARRAY["userid"]; $PROTO = $ARRAY["PROTO"]; $URI = $ARRAY["URI"]; $SquidGuardIPWeb = $GLOBALS["SquidGuardIPWeb"]; $CONNECT = false; $KEY = null; if (isset($ARRAY["MAC"])) { $MAC = $ARRAY["MAC"]; } if (!class_exists("mysql_squid_builder")) { include_once dirname(__FILE__) . "/ressources/class.mysql.squid.builder.php"; } if (!isset($GLOBALS["SQUID_SQL"])) { $GLOBALS["SQUID_SQL"] = new mysql_squid_builder(); } if ($GLOBALS["DEBUG_ITCHART"]) { events("user:{$userid} {$IP}/{$MAC}"); } $arrayNext["src"] = $URI; $arrayNext["LOGIN"] = $userid; $arrayNext["IPADDR"] = $IP; $arrayNext["MAC"] = $MAC; if ($userid != null) { $FIELD = "uid"; $KEY = $userid; } if ($KEY == null) { if ($MAC != null) { $FIELD = "MAC"; $KEY = $MAC; } } if ($KEY == null) { if ($IP != null) { $FIELD = "ipaddr"; $KEY = $IP; } } if ($PROTO == "CONNECT") { $CONNECT = true; } $SquidGuardIPWeb = str_replace("ufdbguardd.php", "itchart.php", $SquidGuardIPWeb); if (!isset($GLOBALS["ITCHARTS_ENABLED"])) { $GLOBALS["ITCHARTS_ENABLED"] = unserialize(@file_get_contents("/etc/squid3/itCharts.enabled.db")); if (count($GLOBALS["ITCHARTS_ENABLED"]) == 0) { if ($GLOBALS["DEBUG_ITCHART"]) { events("/etc/squid3/itCharts.enabled.db = 0 entries"); } return false; } } if ($GLOBALS["DEBUG_ITCHART"]) { events(count($GLOBALS["ITCHARTS_ENABLED"]) . " It Charts to query ({$KEY})"); } $ITCHARTS = $GLOBALS["ITCHARTS_ENABLED"]; while (list($ID, $title) = each($ITCHARTS)) { if ($GLOBALS["DEBUG_ITCHART"]) { events("{$ID} - {$title} against {$KEY}"); } if (isset($GLOBALS["IT_CHART_SUCCESS"][$ID][$KEY])) { if ($GLOBALS["DEBUG_ITCHART"]) { events("{$ID} - {$KEY} MEMORY = TRUE"); } continue; } $sql = "SELECT ID FROM itchartlog WHERE `{$FIELD}`='{$KEY}' AND chartid='{$ID}'"; if ($GLOBALS["DEBUG_ITCHART"]) { events("{$sql}"); } $ligne = mysql_fetch_array($GLOBALS["SQUID_SQL"]->QUERY_SQL($sql)); if (!$GLOBALS["SQUID_SQL"]) { events("{$GLOBALS["SQUID_SQL"]->mysql_error}"); return false; } $RESULT_ID = intval($ligne["ID"]); if ($GLOBALS["DEBUG_ITCHART"]) { events("{$ID} - {$KEY} = {$RESULT_ID}"); } if ($RESULT_ID > 0) { $GLOBALS["IT_CHART_SUCCESS"][$ID][$KEY] = true; if ($GLOBALS["DEBUG_ITCHART"]) { events("{$ID} - {$KEY} -> continue"); } continue; } if ($GLOBALS["DEBUG_ITCHART"]) { events("{$ID} - {$KEY} NONE -> REDIRECT"); } $arrayNext["ChartID"] = $ID; ufdbgevents($title, "itChart"); $arrayNextEnc = base64_encode(serialize($arrayNext)); $output = "status=302 url=\"{$SquidGuardIPWeb}?request={$arrayNextEnc}&xtime=" . time() . "\""; Output_results($output, __FUNCTION__, __LINE__, $CONNECT); return true; } if ($GLOBALS["DEBUG_ITCHART"]) { events("DONE {$KEY}"); } }
function WhitelistedBase($url){ $db_path="/var/log/squid/ufdbgclient.white.db"; $H=parse_url($url); $domain=$H["host"]; if(isset($GLOBALS["WhitelistedBase"][$domain])){ if($GLOBALS["WhitelistedBase"][$domain]){ if($GLOBALS["VERBOSE"]){events("WhitelistedBase MEM WHITELISTED"); } Output_results(null); return true; }else{ if($GLOBALS["VERBOSE"]){events("WhitelistedBase MEM NOT WHITELISTED"); } return false; } } if(!is_file($db_path)){ if($GLOBALS["VERBOSE"]){events("$db_path -> no such file");} return false; } $db_con = dba_open($db_path, "r","db4"); if(!$db_con){return false;} $mainkey=dba_firstkey($db_con); while($mainkey !=false){ $val=0; if(trim($mainkey)==null){ $mainkey=dba_nextkey($db_con); continue; } if($GLOBALS["VERBOSE"]){events("WhitelistedBase: Checking $mainkey -> $domain"); } if(preg_match("#$mainkey#", $domain)){ if($GLOBALS["VERBOSE"]){events("WhitelistedBase $mainkey MATCH $domain"); } $GLOBALS["WhitelistedBase"][$domain]=true; Output_results(null); dba_close($db_con); return true; } $mainkey=dba_nextkey($db_con); } $GLOBALS["WhitelistedBase"][$domain]=false; dba_close($db_con); return false; }