示例#1
0
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}");
    }
}
示例#2
0
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;

}