function migrate_categories_single($category) { $categoryTB = str_replace('/', "_", $category); $categoryTB = str_replace('-', "_", $categoryTB); $qA = new mysql_squid_builder(); $q = new mysql(); $qA->CreateCategoryTable($categoryTB); if (!$qA->TABLE_EXISTS("category_{$categoryTB}")) { events_tail("Unable to create category_{$categoryTB} table"); return false; } $sql = "SELECT * FROM dansguardian_community_categories WHERE category='{$category}'"; $results = $q->QUERY_SQL($sql, "artica_backup"); if (!$q->ok) { writelogs("Fatal Error: {$q->mysql_error}", __CLASS__ . '/' . __FUNCTION__, __FILE__, __LINE__); return; } $mysql_num_rows = mysql_num_rows($results); if ($GLOBALS["VERBOSE"]) { echo $sql . " => {$mysql_num_rows}\n"; } $prefix = "INSERT IGNORE INTO category_{$categoryTB}(`zmd5`,`zDate`,`category`,`pattern`,`enabled`,`uuid`) VALUES "; $c = 0; while ($ligne = @mysql_fetch_array($results, MYSQL_ASSOC)) { $c++; $f[] = "('{$ligne["zmd5"]}','{$ligne["zDate"]}','{$ligne["category"]}','{$ligne["pattern"]}','{$ligne["enabled"]}','{$ligne["uuid"]}')"; if (count($f) > 500) { events_tail("Injecting {$c} rows"); $qA->QUERY_SQL("{$prefix}" . @implode(",", $f)); $f = array(); if (!$q->ok) { writelogs("Fatal Error: {$q->mysql_error}", __CLASS__ . '/' . __FUNCTION__, __FILE__, __LINE__); return; } } } if (count($f) > 0) { $c = $c + count($f); events_tail("Injecting {$c} rows"); $qA->QUERY_SQL("{$prefix}" . @implode(",", $f)); if (!$q->ok) { writelogs("Fatal Error: {$q->mysql_error}", __CLASS__ . '/' . __FUNCTION__, __FILE__, __LINE__); return; } } events_tail("removing category {$category} in original table"); $sql = "DELETE FROM dansguardian_community_categories WHERE category='{$category}'"; $q->QUERY_SQL($sql, "artica_backup"); if (!$q->ok) { writelogs("Fatal Error: {$q->mysql_error}", __CLASS__ . '/' . __FUNCTION__, __FILE__, __LINE__); return; } return true; }
function add_category_save() { include_once dirname(__FILE__) . "/ressources/class.ldap.inc"; $ldap = new clladp(); $dans = new dansguardian_rules(); $_POST["personal_database"] = strtolower($ldap->StripSpecialsChars($_POST["personal_database"])); if ($_POST["personal_database"] == "security") { $_POST["personal_database"] = "security2"; } if (isset($dans->array_blacksites[$_POST["personal_database"]])) { $tpl = new templates(); echo $tpl->javascript_parse_text("{category_already_exists}"); return; } $_POST["category_text"] = addslashes($_POST["category_text"]); $q = new mysql_squid_builder(); $sql = "SELECT category FROM personal_categories WHERE category='{$_POST["personal_database"]}'"; $ligne = mysql_fetch_array($q->QUERY_SQL($sql)); if ($ligne["category"] != null) { $sql = "UPDATE personal_categories SET category_description='{$_POST["category_text"]}'"; } else { $sql = "INSERT IGNORE INTO personal_categories (category,category_description) VALUES ('{$_POST["personal_database"]}','{$_POST["category_text"]}');"; } $q->QUERY_SQL($sql); if (!$q->ok) { echo $q->mysql_error; return; } $q->CreateCategoryTable($_POST["personal_database"]); $sock = new sockets(); $sock->getFrameWork("squid.php?export-web-categories=yes"); }
function include_tpl_file($path, $category) { $sock = new sockets(); $uuid = base64_decode($sock->getFrameWork("cmd.php?system-unique-id=yes")); if ($uuid == null) { echo "UUID=NULL; Aborting"; return; } if ($category == null) { echo "CATEGORY=NULL; Aborting"; return; } if (!is_file($path)) { echo "{$path} no such file\n"; return; } $q = new mysql_squid_builder(); $q->CreateCategoryTable($category); $TableDest = "category_" . $q->category_transform_name($category); $array = array(); $f = @explode("\n", @file_get_contents($path)); $count_websites = count($f); $i = 0; $d = 0; $group = 0; $prefix = "INSERT IGNORE INTO {$TableDest} (zmd5,zDate,category,pattern,uuid) VALUES"; while (list($index, $website) = each($f)) { $i++; $d++; if ($d > 1000) { $group = $group + $d; events_tail("include_tpl_file({$category}):: importing {$group} sites..."); $d = 0; } if ($website == null) { return; } $www = trim(strtolower($website)); if (preg_match("#www\\.(.+?)\$#i", $www, $re)) { $www = $re[1]; } $md5 = md5($www . $category); if ($array[$md5]) { echo "{$www} already exists\n"; continue; } $enabled = 1; $sql_add[] = "('{$md5}',NOW(),'{$category}','{$www}','{$uuid}')"; $array[$md5] = true; if ($GLOBALS["SIMULATE"]) { echo "{$i}/{$count_websites}: {$sql_add}\n"; continue; } if (count($sql_add) > 500) { $sql = $prefix . @implode(",", $sql_add); $q->QUERY_SQL($sql); if (!$q->ok) { echo "{$i}/{$count_websites} Failed: {$www}\n"; } else { echo "{$i}/{$count_websites} Success: {$www}\n"; } $sql_add = array(); } } if (count($sql_add) > 0) { $sql = $prefix . @implode(",", $sql_add); $q->QUERY_SQL($sql); if (!$q->ok) { echo "{$i}/{$count_websites} Failed: {$www}\n"; } else { echo "{$i}/{$count_websites} Success: {$www}\n"; } $sql_add = array(); } echo " -------------------------------------------------\n"; echo count($array) . " websites done\n"; echo " -------------------------------------------------\n"; }
function inject($category, $table = null, $file = null) { include_once dirname(__FILE__) . "/ressources/class.dansguardian.inc"; $unix = new unix(); $q = new mysql_squid_builder(); if (is_file($category)) { $file = $category; $category_name = basename($file); echo "{$file} -> {$category_name}\n"; if (preg_match("#(.+?)\\.gz\$#", $category_name)) { echo "{$category_name} -> gunzip\n"; $new_category_name = str_replace(".gz", "", $category_name); $gunzip = $unix->find_program("gunzip"); $target_file = dirname($file) . "/{$new_category_name}"; $cmd = "/bin/gunzip -d -c \"{$file}\" >{$target_file} 2>&1"; echo "{$cmd}\n"; shell_exec($cmd); if (!is_file($target_file)) { echo "Uncompress failed\n"; return; } $file = $target_file; $table = $new_category_name; $category = $q->tablename_tocat($table); echo "{$new_category_name} -> {$table}\n"; } else { $table = $category_name; echo "{$new_category_name} -> {$table}\n"; $category = $q->tablename_tocat($table); } echo "Table: {$table}\nSource File:{$file}\nCategory: {$category}\n"; } if (!is_file($file)) { if (!is_file($table)) { echo "`{$table}` No such file\n"; } if (is_file($table)) { $file = $table; $table = null; } } if ($table == null) { $table = "category_" . $q->category_transform_name($category); echo "Table will be {$table}\n"; } if (!$q->TABLE_EXISTS($table)) { echo "{$table} does not exists, check if it is an official one\n"; $dans = new dansguardian_rules(); if (isset($dans->array_blacksites[$category])) { $q->CreateCategoryTable($category); } } if (!$q->TABLE_EXISTS($table)) { echo "`{$category}` -> no such table \"{$table}\"\n"; return; } $sql = "SELECT COUNT(*) AS TCOUNT FROM {$table}"; $q->QUERY_SQL($sql); if (!$q->ok) { echo $q->mysql_error . "\n"; if (preg_match("#is marked as crashed and last#", $q->mysql_error)) { echo "`{$table}` -> crashed, remove \"{$table}\"\n"; $q->QUERY_SQL("DROP TABLE {$table}"); $q->QUERY_SQL("flush tables"); $q = new mysql_squid_builder(); echo "`{$table}` -> Create category \"{$category}\"\n"; $q->CreateCategoryTable($category); $q->CreateCategoryTable($category); $q = new mysql_squid_builder(); } if (!$q->TABLE_EXISTS($table)) { echo "`{$category}` -> no such table \"{$table}\"\n"; return; } } if ($file == null) { $dir = "/var/lib/squidguard"; if ($GLOBALS["SHALLA"]) { $dir = "/root/shalla/BL"; } if (!is_file("{$dir}/{$category}/domains")) { echo "{$dir}/{$category}/domains no such file"; return; } $file = "{$dir}/{$category}/domains"; } if (!is_file($file)) { echo "{$file} no such file"; return; } $sock = new sockets(); $unix = new unix(); $uuid = $unix->GetUniqueID(); if ($uuid == null) { echo "No uuid\n"; return; } echo "open {$file}\n"; $handle = @fopen($file, "r"); if (!$handle) { echo "Failed to open file\n"; return; } $q = new mysql_squid_builder(); if ($GLOBALS["CATTO"] != null) { $category = $GLOBALS["CATTO"]; } $countstart = $q->COUNT_ROWS($table); $prefix = "INSERT IGNORE INTO {$table} (zmd5,zDate,category,pattern,uuid) VALUES "; echo "{$prefix}\n"; $catz = new mysql_catz(); $c = 0; $CBAD = 0; $CBADIP = 0; $CBADNULL = 0; while (!feof($handle)) { $c++; $www = trim(fgets($handle, 4096)); if ($www == null) { $CBADNULL++; continue; } $www = str_replace('"', "", $www); if (preg_match("#^[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+\$#", $www)) { $CBADIP++; continue; } $www = trim(strtolower($www)); if ($www == "thisisarandomentrythatdoesnotexist.com") { $CBAD++; continue; } if ($www == null) { $CBADNULL++; continue; } if (preg_match("#(.+?)\\s+(.+)#", $www, $re)) { $www = $re[1]; } if (preg_match("#^\\.(.*)\$#", $www, $re)) { $www = $re[1]; } if (strpos($www, "#") > 0) { echo "FALSE: {$www}\n"; continue; } if (strpos($www, "'") > 0) { echo "FALSE: {$www}\n"; continue; } if (strpos($www, "{") > 0) { echo "FALSE: {$www}\n"; continue; } if (strpos($www, "(") > 0) { echo "FALSE: {$www}\n"; continue; } if (strpos($www, ")") > 0) { echo "FALSE: {$www}\n"; continue; } if (strpos($www, "%") > 0) { echo "FALSE: {$www}\n"; continue; } $category2 = $catz->GET_CATEGORIES($www); if ($category2 != null) { if ($category2 == $category) { continue; } $md5 = md5($category . $www); if ($category == "p**n") { if ($category2 == "shopping") { echo date("H:i:s") . " Remove {$www} from shopping and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_shopping WHERE `pattern`='{$www}'"); $q->categorize($www, $category, true); continue; } if ($category2 == "hobby/arts") { echo date("H:i:s") . " Remove {$www} from hobby/arts and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_hobby_arts WHERE `pattern`='{$www}'"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } $q->QUERY_SQL("INSERT IGNORE INTO category_porn (zmd5,zDate,category,pattern,uuid,enabled) VALUES('{$md5}',NOW(),'p**n','{$www}','{$uuid}',1)"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } continue; } if ($category2 == "society") { echo date("H:i:s") . " Remove {$www} from society and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_society WHERE `pattern`='{$www}'"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } $q->QUERY_SQL("INSERT IGNORE INTO category_porn (zmd5,zDate,category,pattern,uuid,enabled) VALUES('{$md5}',NOW(),'p**n','{$www}','{$uuid}',1)"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } continue; } if ($category2 == "finance/realestate") { echo date("H:i:s") . " Remove {$www} from finance/realestate and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_finance_realestate WHERE `pattern`='{$www}'"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } $q->QUERY_SQL("INSERT IGNORE INTO category_porn (zmd5,zDate,category,pattern,uuid,enabled) VALUES('{$md5}',NOW(),'p**n','{$www}','{$uuid}',1)"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } continue; } if ($category2 == "science/computing") { echo date("H:i:s") . " Remove {$www} from science/computing and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_science_computing WHERE `pattern`='{$www}'"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } $q->QUERY_SQL("INSERT IGNORE INTO category_porn (zmd5,zDate,category,pattern,uuid,enabled) VALUES('{$md5}',NOW(),'p**n','{$www}','{$uuid}',1)"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } continue; } if ($category2 == "industry") { echo date("H:i:s") . " Remove {$www} from industry and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_industry WHERE `pattern`='{$www}'"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } $q->QUERY_SQL("INSERT IGNORE INTO category_porn (zmd5,zDate,category,pattern,uuid,enabled) VALUES('{$md5}',NOW(),'p**n','{$www}','{$uuid}',1)"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } continue; } if ($category2 == "proxy") { echo date("H:i:s") . " Remove {$www} from proxy and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_proxy WHERE `pattern`='{$www}'"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } $q->QUERY_SQL("INSERT IGNORE INTO category_porn (zmd5,zDate,category,pattern,uuid,enabled) VALUES('{$md5}',NOW(),'p**n','{$www}','{$uuid}',1)"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } continue; } if ($category2 == "searchengines") { echo date("H:i:s") . " Remove {$www} from searchengines and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_searchengines WHERE `pattern`='{$www}'"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } $q->QUERY_SQL("INSERT IGNORE INTO category_porn (zmd5,zDate,category,pattern,uuid,enabled) VALUES('{$md5}',NOW(),'p**n','{$www}','{$uuid}',1)"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } continue; } if ($category2 == "blog") { echo date("H:i:s") . " Remove {$www} from blog and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_blog WHERE `pattern`='{$www}'"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } $q->QUERY_SQL("INSERT IGNORE INTO category_porn (zmd5,zDate,category,pattern,uuid,enabled) VALUES('{$md5}',NOW(),'p**n','{$www}','{$uuid}',1)"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } continue; } if ($category2 == "forums") { echo date("H:i:s") . " Remove {$www} from blog and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_blog WHERE `pattern`='{$www}'"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } $q->QUERY_SQL("INSERT IGNORE INTO category_porn (zmd5,zDate,category,pattern,uuid,enabled) VALUES('{$md5}',NOW(),'p**n','{$www}','{$uuid}',1)"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } continue; } if ($category2 == "recreation/sports") { echo date("H:i:s") . " Remove {$www} from recreation/sports and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_recreation_sports WHERE `pattern`='{$www}'"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } $q->QUERY_SQL("INSERT IGNORE INTO category_porn (zmd5,zDate,category,pattern,uuid,enabled) VALUES('{$md5}',NOW(),'p**n','{$www}','{$uuid}',1)"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } continue; } if ($category2 == "hacking") { echo date("H:i:s") . " Remove {$www} from hacking and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_hacking WHERE `pattern`='{$www}'"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } $q->QUERY_SQL("INSERT IGNORE INTO category_porn (zmd5,zDate,category,pattern,uuid,enabled) VALUES('{$md5}',NOW(),'p**n','{$www}','{$uuid}',1)"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } continue; } if ($category2 == "malware") { echo date("H:i:s") . " Remove {$www} from malware and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_malware WHERE `pattern`='{$www}'"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } $q->QUERY_SQL("INSERT IGNORE INTO category_porn (zmd5,zDate,category,pattern,uuid,enabled) VALUES('{$md5}',NOW(),'p**n','{$www}','{$uuid}',1)"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } continue; } if ($category2 == "drugs") { echo date("H:i:s") . " Remove {$www} from drugs and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_drugs WHERE `pattern`='{$www}'"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } $q->QUERY_SQL("INSERT IGNORE INTO category_porn (zmd5,zDate,category,pattern,uuid,enabled) VALUES('{$md5}',NOW(),'p**n','{$www}','{$uuid}',1)"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } continue; } if ($category2 == "health") { echo date("H:i:s") . " Remove {$www} from health and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_health WHERE `pattern`='{$www}'"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } $q->QUERY_SQL("INSERT IGNORE INTO category_porn (zmd5,zDate,category,pattern,uuid,enabled) VALUES('{$md5}',NOW(),'p**n','{$www}','{$uuid}',1)"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } continue; } if ($category2 == "news") { echo date("H:i:s") . " Remove {$www} from news and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_news WHERE `pattern`='{$www}'"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } $q->QUERY_SQL("INSERT IGNORE INTO category_porn (zmd5,zDate,category,pattern,uuid,enabled) VALUES('{$md5}',NOW(),'p**n','{$www}','{$uuid}',1)"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } continue; } if ($category2 == "audio-video") { echo date("H:i:s") . " Remove {$www} from audio-video and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_audio_video WHERE `pattern`='{$www}'"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } $q->QUERY_SQL("INSERT IGNORE INTO category_porn (zmd5,zDate,category,pattern,uuid,enabled) VALUES('{$md5}',NOW(),'p**n','{$www}','{$uuid}',1)"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } continue; } if ($category2 == "recreation/schools") { echo date("H:i:s") . " Remove {$www} from recreation/schools and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_recreation_schools WHERE `pattern`='{$www}'"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } $q->QUERY_SQL("INSERT IGNORE INTO category_porn (zmd5,zDate,category,pattern,uuid,enabled) VALUES('{$md5}',NOW(),'p**n','{$www}','{$uuid}',1)"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } continue; } if ($category2 == "reaffected") { echo date("H:i:s") . " Remove {$www} from reaffected and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_reaffected WHERE `pattern`='{$www}'"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } $q->QUERY_SQL("INSERT IGNORE INTO category_porn (zmd5,zDate,category,pattern,uuid,enabled) VALUES('{$md5}',NOW(),'p**n','{$www}','{$uuid}',1)"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } continue; } if ($category2 == "warez") { echo date("H:i:s") . " Remove {$www} from warez and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_warez WHERE `pattern`='{$www}'"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } $q->QUERY_SQL("INSERT IGNORE INTO category_porn (zmd5,zDate,category,pattern,uuid,enabled) VALUES('{$md5}',NOW(),'p**n','{$www}','{$uuid}',1)"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } continue; } if ($category2 == "suspicious") { echo date("H:i:s") . " Remove {$www} from suspicious and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_suspicious WHERE `pattern`='{$www}'"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } $q->QUERY_SQL("INSERT IGNORE INTO category_porn (zmd5,zDate,category,pattern,uuid,enabled) VALUES('{$md5}',NOW(),'p**n','{$www}','{$uuid}',1)"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } continue; } } if ($category == "gamble") { if ($category2 == "shopping") { echo date("H:i:s") . " Remove {$www} from shopping and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_shopping WHERE `pattern`='{$www}'"); $q->categorize($www, $category, true); continue; } } if ($category == "proxy") { if ($category2 == "society") { echo date("H:i:s") . " Remove {$www} from society and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_society WHERE `pattern`='{$www}'"); $q->categorize($www, $category, true); continue; } if ($category2 == "p**n") { echo date("H:i:s") . " Remove {$www} from p**n and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_porn WHERE `pattern`='{$www}'"); $q->categorize($www, $category, true); continue; } if ($category2 == "shopping") { echo date("H:i:s") . " Remove {$www} from shopping and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_shopping WHERE `pattern`='{$www}'"); $q->categorize($www, $category, true); continue; } if ($category2 == "science/computing") { echo date("H:i:s") . " Remove {$www} from science/computing and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_science_computing WHERE `pattern`='{$www}'"); $q->categorize($www, $category, true); continue; } if ($category2 == "industry") { echo date("H:i:s") . " Remove {$www} from industry and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_industry WHERE `pattern`='{$www}'"); $q->categorize($www, $category, true); continue; } if ($category2 == "filehosting") { echo date("H:i:s") . " Remove {$www} from filehosting and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_filehosting WHERE `pattern`='{$www}'"); $q->categorize($www, $category, true); continue; } if ($category2 == "hacking") { echo date("H:i:s") . " Remove {$www} from hacking and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_hacking WHERE `pattern`='{$www}'"); $q->categorize($www, $category, true); continue; } if ($category2 == "governments") { echo date("H:i:s") . " Remove {$www} from governments and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_governments WHERE `pattern`='{$www}'"); $q->categorize($www, $category, true); continue; } } if ($category == "spyware") { if ($category2 == "society") { echo date("H:i:s") . " Remove {$www} from society and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_society WHERE `pattern`='{$www}'"); $q->QUERY_SQL("INSERT IGNORE INTO category_spyware (zmd5,zDate,category,pattern,uuid,enabled) VALUES('{$md5}',NOW(),'p**n','{$www}','{$uuid}',1)"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } continue; } if ($category2 == "industry") { echo date("H:i:s") . " Remove {$www} from industry and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_industry WHERE `pattern`='{$www}'"); $q->QUERY_SQL("INSERT IGNORE INTO category_spyware (zmd5,zDate,category,pattern,uuid,enabled) VALUES('{$md5}',NOW(),'p**n','{$www}','{$uuid}',1)"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } continue; } if ($category2 == "recreation/sports") { echo date("H:i:s") . " Remove {$www} from recreation/sports and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_recreation_sports WHERE `pattern`='{$www}'"); $q->QUERY_SQL("INSERT IGNORE INTO category_spyware (zmd5,zDate,category,pattern,uuid,enabled) VALUES('{$md5}',NOW(),'p**n','{$www}','{$uuid}',1)"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } continue; } if ($category2 == "recreation/schools") { echo date("H:i:s") . " Remove {$www} from recreation/schools and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_recreation_schools WHERE `pattern`='{$www}'"); $q->QUERY_SQL("INSERT IGNORE INTO category_spyware (zmd5,zDate,category,pattern,uuid,enabled) VALUES('{$md5}',NOW(),'p**n','{$www}','{$uuid}',1)"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } continue; } if ($category2 == "searchengines") { echo date("H:i:s") . " Remove {$www} from searchengines and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_searchengines WHERE `pattern`='{$www}'"); $q->QUERY_SQL("INSERT IGNORE INTO category_spyware (zmd5,zDate,category,pattern,uuid,enabled) VALUES('{$md5}',NOW(),'p**n','{$www}','{$uuid}',1)"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } continue; } if ($category2 == "shopping") { echo date("H:i:s") . " Remove {$www} from shopping and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_shopping WHERE `pattern`='{$www}'"); $q->QUERY_SQL("INSERT IGNORE INTO category_spyware (zmd5,zDate,category,pattern,uuid,enabled) VALUES('{$md5}',NOW(),'p**n','{$www}','{$uuid}',1)"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } continue; } if ($category2 == "audio-video") { echo date("H:i:s") . " Remove {$www} from audio-video and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_audio_video WHERE `pattern`='{$www}'"); $q->QUERY_SQL("INSERT IGNORE INTO category_spyware (zmd5,zDate,category,pattern,uuid,enabled) VALUES('{$md5}',NOW(),'p**n','{$www}','{$uuid}',1)"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } continue; } if ($category2 == "suspicious") { $q->QUERY_SQL("DELETE FROM category_suspicious WHERE `pattern`='{$www}'"); $q->QUERY_SQL("INSERT IGNORE INTO category_spyware (zmd5,zDate,category,pattern,uuid,enabled) VALUES('{$md5}',NOW(),'p**n','{$www}','{$uuid}',1)"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } continue; } if ($category2 == "health") { echo date("H:i:s") . " Remove {$www} from health and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_health WHERE `pattern`='{$www}'"); $q->QUERY_SQL("INSERT IGNORE INTO category_spyware (zmd5,zDate,category,pattern,uuid,enabled) VALUES('{$md5}',NOW(),'p**n','{$www}','{$uuid}',1)"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } continue; } if ($category2 == "jobsearch") { echo date("H:i:s") . " Remove {$www} from jobsearch and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_jobsearch WHERE `pattern`='{$www}'"); $q->QUERY_SQL("INSERT IGNORE INTO category_spyware (zmd5,zDate,category,pattern,uuid,enabled) VALUES('{$md5}',NOW(),'p**n','{$www}','{$uuid}',1)"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } continue; } if ($category2 == "hobby/arts") { $q->QUERY_SQL("DELETE FROM category_hobby_arts WHERE `pattern`='{$www}'"); $q->QUERY_SQL("INSERT IGNORE INTO category_spyware (zmd5,zDate,category,pattern,uuid,enabled) VALUES('{$md5}',NOW(),'p**n','{$www}','{$uuid}',1)"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } continue; } if ($category2 == "science/computing") { echo date("H:i:s") . " Remove {$www} from science_computing and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_science_computing WHERE `pattern`='{$www}'"); $q->QUERY_SQL("INSERT IGNORE INTO category_spyware (zmd5,zDate,category,pattern,uuid,enabled) VALUES('{$md5}',NOW(),'p**n','{$www}','{$uuid}',1)"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } continue; } if ($category2 == "recreation/travel") { echo date("H:i:s") . " Remove {$www} from recreation_travel and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_recreation_travel WHERE `pattern`='{$www}'"); $q->QUERY_SQL("INSERT IGNORE INTO category_spyware (zmd5,zDate,category,pattern,uuid,enabled) VALUES('{$md5}',NOW(),'p**n','{$www}','{$uuid}',1)"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } continue; } if ($category2 == "dynamic") { echo date("H:i:s") . " Remove {$www} from dynamic and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_dynamic WHERE `pattern`='{$www}'"); $q->QUERY_SQL("INSERT IGNORE INTO category_spyware (zmd5,zDate,category,pattern,uuid,enabled) VALUES('{$md5}',NOW(),'p**n','{$www}','{$uuid}',1)"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } continue; } if ($category2 == "finance/realestate") { echo date("H:i:s") . " Remove {$www} from finance_realestate and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_finance_realestate WHERE `pattern`='{$www}'"); $q->QUERY_SQL("INSERT IGNORE INTO category_spyware (zmd5,zDate,category,pattern,uuid,enabled) VALUES('{$md5}',NOW(),'p**n','{$www}','{$uuid}',1)"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } continue; } if ($category2 == "isp") { echo date("H:i:s") . " Remove {$www} from isp and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_isp WHERE `pattern`='{$www}'"); $q->QUERY_SQL("INSERT IGNORE INTO category_spyware (zmd5,zDate,category,pattern,uuid,enabled) VALUES('{$md5}',NOW(),'p**n','{$www}','{$uuid}',1)"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } continue; } if ($category2 == "housing/accessories") { echo date("H:i:s") . " Remove {$www} from housing/accessories and add it to {$category}\n"; $q->QUERY_SQL("DELETE FROM category_housing_accessories WHERE `pattern`='{$www}'"); $q->QUERY_SQL("INSERT IGNORE INTO category_spyware (zmd5,zDate,category,pattern,uuid,enabled) VALUES('{$md5}',NOW(),'p**n','{$www}','{$uuid}',1)"); if (!$q->ok) { echo "{$q->mysql_error}\n"; die; } continue; } if ($category2 == "malware") { continue; } if ($category2 == "phishing") { continue; } } echo date("H:i:s") . " {$www} {$category2} SKIP\n"; continue; } $md5 = md5($www . $category); $n[] = "('{$md5}',NOW(),'{$category}','{$www}','{$uuid}')"; if (count($n) > 6000) { $sql = $prefix . @implode(",", $n); $q->QUERY_SQL($sql, "artica_backup"); if (!$q->ok) { echo $q->mysql_error . "\n"; $n = array(); continue; } $countend = $q->COUNT_ROWS($table); $final = $countend - $countstart; echo "" . numberFormat($c, 0, "", " ") . " items, " . numberFormat($final, 0, "", " ") . " new entries added - {$CBADNULL} bad entries for null value,{$CBADIP} entries for IP addresses\n"; $n = array(); } } fclose($handle); if (count($f) > 0) { if ($c > 0) { $countend = $q->COUNT_ROWS($table); $final = $countend - $countstart; echo "{$c} items, {$final} new entries added - {$CBAD} bad entries\n"; $sql = $prefix . @implode(",", $n); $q->QUERY_SQL($sql, "artica_backup"); if (!$q->ok) { echo $q->mysql_error . "\n{$sql}"; continue; } $n = array(); } } $countend = $q->COUNT_ROWS($table); $final = $countend - $countstart; echo "" . numberFormat($final, 0, "", " ") . " new entries added\n"; @unlink($file); }
function add_category_save() { $_POST["personal_database"] = url_decode_special_tool($_POST["personal_database"]); $_POST["category_text"] = url_decode_special_tool($_POST["category_text"]); $org = $_POST["personal_database"]; include_once dirname(__FILE__) . "/ressources/class.html.tools.inc"; $html = new htmltools_inc(); $dans = new dansguardian_rules(); $_POST["personal_database"] = strtolower($html->StripSpecialsChars($_POST["personal_database"])); if ($_POST["personal_database"] == null) { echo "No category set or wrong category name \"{$org}\"\n"; return; } if ($_POST["personal_database"] == "security") { $_POST["personal_database"] = "security2"; } if ($_POST["CatzByGroupA"] != null) { $_POST["CatzByGroupL"] = $_POST["CatzByGroupA"]; } $_POST["CatzByGroupL"] = mysql_escape_string2($_POST["CatzByGroupL"]); $_POST["category_text"] = url_decode_special_tool($_POST["category_text"]); $_POST["category_text"] = mysql_escape_string2($_POST["category_text"]); $q = new mysql_squid_builder(); $sql = "SELECT category FROM personal_categories WHERE category='{$_POST["personal_database"]}'"; $ligne = mysql_fetch_array($q->QUERY_SQL($sql)); if ($ligne["category"] != null) { $sql = "UPDATE personal_categories\n\t\tSET category_description='{$_POST["category_text"]}',\n\t\t`PublicMode`='{$_POST["PublicMode"]}',\n\t\tmaster_category='{$_POST["CatzByGroupL"]}'\n\t\tWHERE category='{$_POST["personal_database"]}'\n\t\t"; } else { if (isset($dans->array_blacksites[$_POST["personal_database"]])) { $tpl = new templates(); echo $tpl->javascript_parse_text("{$_POST["personal_database"]}:{category_already_exists}"); return; } $sql = "INSERT IGNORE INTO personal_categories (category,category_description,master_category,PublicMode)\n\t\tVALUES ('{$_POST["personal_database"]}','{$_POST["category_text"]}','{$_POST["CatzByGroupL"]}','{$_POST["PublicMode"]}');"; } $q->QUERY_SQL($sql); if (!$q->ok) { echo $q->mysql_error; return; } $q->CreateCategoryTable($_POST["personal_database"]); $sql = "TRUNCATE TABLE webfilters_categories_caches"; $dans->CategoriesTableCache(); $dans->CleanCategoryCaches(); }
function categorize_delete() { $unix = new unix(); $URIBASE = $unix->MAIN_URI(); $tmpdir = $unix->TEMP_DIR(); if (!is_file("{$tmpdir}/categorize_delete.sql")) { $curl = new ccurl("{$URIBASE}/blacklist/categorize_delete.gz"); if (!$curl->GetFile("{$tmpdir}/categorize_delete.gz")) { // ufdbguard_admin_events("Fatal: unable to download categorize_delete.gz file $curl->error",__FUNCTION__,__FILE__,__LINE__,"ufbd-artica"); return; } if (!extractGZ("{$tmpdir}/categorize_delete.gz", "{$tmpdir}/categorize_delete.sql")) { // ufdbguard_admin_events("Fatal: unable to extract $tmpdir/categorize_delete.gz",__FUNCTION__,__FILE__,__LINE__,"ufbd-artica"); return; } } $q = new mysql_squid_builder(); $datas = explode("\n", @file_get_contents("{$tmpdir}/categorize_delete.sql")); while (list($index, $row) = each($datas)) { if (trim($row) == null) { continue; } $ligne = unserialize($row); $category = $ligne["category"]; $pattern = $ligne["sitename"]; $tablename = "category_" . $q->category_transform_name($category); if (!$q->TABLE_EXISTS($tablename)) { $q->CreateCategoryTable($category); } $q->QUERY_SQL("UPDATE {$tablename} SET enabled=0 WHERE `pattern`='{$pattern}'"); if (!$q->ok) { echo $q->mysql_error . "\n"; } } // ufdbguard_admin_events("Success updating deleted ". count($datas)." websites from categories",__FUNCTION__,__FILE__,__LINE__,"ufbd-artica"); @unlink("{$tmpdir}/categorize_delete.sql"); }
function Execute() { $unix = new unix(); $pidfile = "/etc/artica-postfix/pids/" . basename(__FILE__) . "." . __FUNCTION__ . ".pid"; $myFile = basename(__FILE__); $pid = @file_get_contents($pidfile); if ($unix->process_exists($pid, $myFile)) { WriteMyLogs("Already executed PID:{$pid}, die()", __FUNCTION__, __FILE__, __LINE__); die; } $cachetime = "/etc/artica-postfix/pids/" . basename(__FILE__) . "." . __FUNCTION__ . ".time"; $q = new mysql_squid_builder(); if ($q->COUNT_ROWS("framework_orders") == 0) { if ($GLOBALS["VERBOSE"]) { echo "Table framework_orders as no row\n"; } die; } $php5 = $unix->LOCATE_PHP5_BIN(); $nice = EXEC_NICE(); $q = new mysql_squid_builder(); $results = $q->QUERY_SQL("SELECT * FROM framework_orders"); if (!$q->ok) { if (strpos($q->mysql_error, "doesn't exist") > 0) { $q->CheckTables(); $results = $q->QUERY_SQL("SELECT * FROM framework_orders"); } } if (!$q->ok) { ufdbguard_admin_events("Fatal: {$q->mysql_error}", __FUNCTION__, __FILE__, __LINE__, "framework"); die; } $reconfigure_plugins = false; while ($ligne = mysql_fetch_array($results, MYSQL_ASSOC)) { if ($GLOBALS["VERBOSE"]) { echo "ORDER: {$ligne["ORDER"]} -> {$ligne["zmd5"]}\n"; } if (preg_match("#COMPILEDB:(.+)#", $ligne["ORDER"], $re)) { if (preg_match("#english-(.+)#", $re[1])) { $q->QUERY_SQL("DELETE FROM framework_orders WHERE zmd5='{$ligne["zmd5"]}'"); continue; } ufdbguard_admin_events("LAUNCH: category {$re[1]} compilation", __FUNCTION__, __FILE__, __LINE__, "framework"); $re[1] = trim($re[1]); $table = "category_" . $q->category_transform_name($re[1]); if ($GLOBALS["VERBOSE"]) { echo "order to compile database {$re[1]} (table {$table})\n"; } if (!$q->TABLE_EXISTS($table)) { ufdbguard_admin_events("Fatal: {$table} no suche table, create it", __FUNCTION__, __FILE__, __LINE__, "framework"); $q->CreateCategoryTable(null, $table); } $cmd = "{$nice} {$php5} /usr/share/artica-postfix/exec.squidguard.php --compile-category \"{$re[1]}\""; if ($GLOBALS["VERBOSE"]) { echo "{$cmd}\n"; } $q->QUERY_SQL("DELETE FROM framework_orders WHERE zmd5='{$ligne["zmd5"]}'"); if (!$q->ok) { ufdbguard_admin_events("Fatal: {$q->mysql_error}", __FUNCTION__, __FILE__, __LINE__, "framework"); die; } shell_exec($cmd); $reconfigure_plugins = true; } } if ($reconfigure_plugins) { ufdbguard_admin_events("LAUNCH: filters reconfiguration", __FUNCTION__, __FILE__, __LINE__, "framework"); shell_exec("{$nice} {$php5} /usr/share/artica-postfix/exec.squidguard.php --build"); } }
function inject($category, $table = null, $file = null) { include_once dirname(__FILE__) . "/ressources/class.dansguardian.inc"; $unix = new unix(); $q = new mysql_squid_builder(); if (is_file($category)) { $file = $category; $category_name = basename($file); echo "{$file} -> {$category_name}\n"; if (preg_match("#(.+?)\\.gz\$#", $category_name)) { echo "{$category_name} -> gunzip\n"; $new_category_name = str_replace(".gz", "", $category_name); $gunzip = $unix->find_program("gunzip"); $target_file = dirname($file) . "/{$new_category_name}"; $cmd = "/bin/gunzip -d -c \"{$file}\" >{$target_file} 2>&1"; echo "{$cmd}\n"; shell_exec($cmd); if (!is_file($target_file)) { echo "Uncompress failed\n"; return; } $file = $target_file; $table = $new_category_name; $category = $q->tablename_tocat($table); echo "{$new_category_name} -> {$table}\n"; } else { $table = $category_name; echo "{$new_category_name} -> {$table}\n"; $category = $q->tablename_tocat($table); } echo "Table: {$table}\nSource File:{$file}\nCategory: {$category}\n"; } if (!is_file($file)) { if (!is_file($table)) { echo "`{$table}` No such file\n"; } if (is_file($table)) { $file = $table; $table = null; } } if ($table == null) { $table = "category_" . $q->category_transform_name($category); echo "Table will be {$table}\n"; } if (!$q->TABLE_EXISTS($table)) { echo "{$table} does not exists, check if it is an official one\n"; $dans = new dansguardian_rules(); if (isset($dans->array_blacksites[$category])) { $q->CreateCategoryTable($category); } } if (!$q->TABLE_EXISTS($table)) { echo "`{$category}` -> no such table \"{$table}\"\n"; return; } $sql = "SELECT COUNT(*) AS TCOUNT FROM {$table}"; $q->QUERY_SQL($sql); if (!$q->ok) { echo $q->mysql_error . "\n"; if (preg_match("#is marked as crashed and last#", $q->mysql_error)) { echo "`{$table}` -> crashed, remove \"{$table}\"\n"; $q->QUERY_SQL("DROP TABLE {$table}"); $q->QUERY_SQL("flush tables"); $q = new mysql_squid_builder(); echo "`{$table}` -> Create category \"{$category}\"\n"; $q->CreateCategoryTable($category); $q->CreateCategoryTable($category); $q = new mysql_squid_builder(); } if (!$q->TABLE_EXISTS($table)) { echo "`{$category}` -> no such table \"{$table}\"\n"; return; } } if ($file == null) { $dir = "/var/lib/squidguard"; if ($GLOBALS["SHALLA"]) { $dir = "/root/shalla/BL"; } if (!is_file("{$dir}/{$category}/domains")) { echo "{$dir}/{$category}/domains no such file"; return; } $file = "{$dir}/{$category}/domains"; } if (!is_file($file)) { echo "{$file} no such file"; return; } $sock = new sockets(); $unix = new unix(); $uuid = $unix->GetUniqueID(); if ($uuid == null) { echo "No uuid\n"; return; } echo "open {$file}\n"; $handle = @fopen($file, "r"); if (!$handle) { echo "Failed to open file\n"; return; } $q = new mysql_squid_builder(); if ($GLOBALS["CATTO"] != null) { $category = $GLOBALS["CATTO"]; } $countstart = $q->COUNT_ROWS($table); $prefix = "INSERT IGNORE INTO {$table} (zmd5,zDate,category,pattern,uuid) VALUES "; echo "{$prefix}\n"; $c = 0; $CBAD = 0; $CBADIP = 0; $CBADNULL = 0; while (!feof($handle)) { $c++; $www = trim(fgets($handle, 4096)); if ($www == null) { $CBADNULL++; continue; } $www = str_replace('"', "", $www); if (preg_match("#^[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+\$#", $www)) { $CBADIP++; continue; } $www = trim(strtolower($www)); if ($www == "thisisarandomentrythatdoesnotexist.com") { $CBAD++; continue; } if ($www == null) { $CBADNULL++; continue; } if (preg_match("#(.+?)\\s+(.+)#", $www, $re)) { $www = $re[1]; } if (preg_match("#^\\.(.*)\$#", $www, $re)) { $www = $re[1]; } if (strpos($www, "#") > 0) { echo "FALSE: {$www}\n"; continue; } if (strpos($www, "'") > 0) { echo "FALSE: {$www}\n"; continue; } if (strpos($www, "{") > 0) { echo "FALSE: {$www}\n"; continue; } if (strpos($www, "(") > 0) { echo "FALSE: {$www}\n"; continue; } if (strpos($www, ")") > 0) { echo "FALSE: {$www}\n"; continue; } if (strpos($www, "%") > 0) { echo "FALSE: {$www}\n"; continue; } $md5 = md5($www . $category); $n[] = "('{$md5}',NOW(),'{$category}','{$www}','{$uuid}')"; if (count($n) > 6000) { $sql = $prefix . @implode(",", $n); $q->QUERY_SQL($sql, "artica_backup"); if (!$q->ok) { echo $q->mysql_error . "\n"; $n = array(); continue; } $countend = $q->COUNT_ROWS($table); $final = $countend - $countstart; echo "" . numberFormat($c, 0, "", " ") . " items, " . numberFormat($final, 0, "", " ") . " new entries added - {$CBADNULL} bad entries for null value,{$CBADIP} entries for IP addresses\n"; $n = array(); } } fclose($handle); if (count($f) > 0) { if ($c > 0) { $countend = $q->COUNT_ROWS($table); $final = $countend - $countstart; echo "{$c} items, {$final} new entries added - {$CBAD} bad entries\n"; $sql = $prefix . @implode(",", $n); $q->QUERY_SQL($sql, "artica_backup"); if (!$q->ok) { echo $q->mysql_error . "\n{$sql}"; continue; } $n = array(); } } $countend = $q->COUNT_ROWS($table); $final = $countend - $countstart; echo "" . numberFormat($final, 0, "", " ") . " new entries added\n"; @unlink($file); }
function MoveCategorizedWebsite($md5=null,$nextCategory=null,$table=null){ $q=new mysql_squid_builder(); $sock=new sockets(); if($md5==null){$md5=$_POST["MoveCategorizedWebsite"];} if($nextCategory==null){$nextCategory=trim($_POST["NextCategory"]);} if($table==null){$table=trim($_POST["TABLE"]);} if($nextCategory==null){echo "Next category = Null\n";return;} if($table==null){echo "Table = Null\n";return;} if($md5==null){echo "md5 = Null\n";return;} if(!isset($GLOBALS["uuid"])){$GLOBALS["uuid"]=base64_decode($sock->getFrameWork("cmd.php?system-unique-id=yes"));} $uuid=$GLOBALS["uuid"]; $sql="SELECT * FROM $table WHERE zmd5='$md5'"; $ligne=mysql_fetch_array($q->QUERY_SQL($sql)); if(!$q->ok){echo $q->mysql_error;return;} $www=$ligne["pattern"]; $sql="INSERT IGNORE INTO categorize_delete (sitename,category,zmd5) VALUES ('{$ligne["pattern"]}','{$ligne["category"]}','{$ligne["zmd5"]}')"; $q->QUERY_SQL($sql); if(!$q->ok){echo $q->mysql_error;return;} $q->QUERY_SQL("UPDATE $table SET enabled=0 WHERE zmd5='$md5'"); if(!$q->ok){echo $q->mysql_error;return;} $sock->getFrameWork("squid.php?export-deleted-categories=yes"); $newmd5=md5($nextCategory.$www); $q->QUERY_SQL("INSERT IGNORE INTO categorize_changes (zmd5,sitename,category) VALUES('$newmd5','$www','$nextCategory')"); if(!$q->ok){echo $q->mysql_error;return;} $q->CreateCategoryTable($nextCategory); $category_table=$q->category_transform_name($nextCategory); $q->QUERY_SQL("INSERT IGNORE INTO categorize (zmd5,zDate,category,pattern,uuid) VALUES('$newmd5',NOW(),'$nextCategory','$www','$uuid')"); if(!$q->ok){echo $q->mysql_error;return;} $q->QUERY_SQL("INSERT IGNORE INTO category_$category_table (zmd5,zDate,category,pattern,uuid,enabled) VALUES('$md5',NOW(),'$nextCategory','$www','$uuid',1)"); if(!$q->ok){echo $q->mysql_error;return;} $cats=addslashes($q->GET_CATEGORIES($www,true)); $q->QUERY_SQL("UPDATE visited_sites SET category='$cats' WHERE sitename='$www'"); if(!$q->ok){echo $q->mysql_error."\n";echo $sql."\n";} $sock=new sockets(); $sock->getFrameWork("cmd.php?export-community-categories=yes"); $sock->getFrameWork("squid.php?re-categorize=yes"); }
function save_category() { if ($_GET["website"] == null) { return; } $www = trim(strtolower(base64_decode($_GET["website"]))); if (preg_match("#^www\\.(.+?)\$#i", $www, $re)) { $www = $re[1]; } $category = $_GET["category"]; $md5 = md5($www . $category); $sock = new sockets(); $q = new mysql_squid_builder(); $uuid = base64_decode($sock->getFrameWork("cmd.php?system-unique-id=yes")); $enabled = $_GET["enabled"]; $q->CreateCategoryTable($category); $category_table = $q->category_transform_name($category); $sql = "SELECT zmd5 FROM category_{$category_table} WHERE pattern='{$www}'"; $ligne = @mysql_fetch_array($q->QUERY_SQL($sql)); $sql_add = "INSERT IGNORE INTO categorize (zmd5,zDate,category,pattern,uuid) VALUES('{$md5}',NOW(),'{$category}','{$www}','{$uuid}')"; $sql_add2 = "INSERT IGNORE INTO category_{$category_table} (zmd5,zDate,category,pattern,uuid) VALUES('{$md5}',NOW(),'{$category}','{$www}','{$uuid}')"; $sql_edit = "UPDATE category_{$category_table} SET enabled='{$enabled}' WHERE zmd5='{$ligne["zmd5"]}'"; writelogs("{$www}/{$category} = {$ligne["zmd5"]}", __FUNCTION__, __FILE__, __LINE__); if ($ligne["zmd5"] == null) { $q->QUERY_SQL($sql_add2); $q->QUERY_SQL($sql_add); } else { writelogs("{$sql_edit}", __FUNCTION__, __FILE__, __LINE__); $q->QUERY_SQL($sql_edit); } if (!$q->ok) { echo $q->mysql_error; return; } $q->QUERY_SQL("UPDATE visited_sites SET category='' WHERE sitename='{$www}'"); if (!$q->ok) { echo $q->mysql_error . "\n"; echo $sql . "\n"; } $cats = addslashes($q->GET_CATEGORIES($www, true)); $q->QUERY_SQL("UPDATE visited_sites SET category='{$cats}' WHERE sitename='{$www}'"); if (!$q->ok) { echo $q->mysql_error . "\n"; echo $sql . "\n"; } $newmd5 = md5("{$cats}{$www}"); $q->QUERY_SQL("INSERT IGNORE INTO categorize_changes (zmd5,sitename,category) VALUES('{$newmd5}','{$www}','{$cats}')"); if (!$q->ok) { echo $q->mysql_error . "\n"; echo $sql . "\n"; } if ($enabled == 1) { $q->QUERY_SQL("DELETE FROM categorize_delete WHERE zmd5='{$md5}'"); } else { $q->QUERY_SQL("INSERT IGNORE INTO categorize_delete(zmd5,sitename,category) VALUES('{$md5}','{$www}','{$category}')"); } if ($_GET["day"] != null) { $time = strtotime($_GET["day"] . " 00:00:00"); $tableSrc = date('Ymd') . "_hour"; if (!$q->TABLE_EXISTS($tableSrc)) { $q->CreateHourTable($tableSrc); } $q->QUERY_SQL("UPDATE {$tableSrc} SET category='{$cats}' WHERE sitename='{$www}'"); if (!$q->ok) { echo $q->mysql_error; } } $sock = new sockets(); $sock->getFrameWork("cmd.php?export-community-categories=yes"); $sock->getFrameWork("squid.php?re-categorize=yes"); }
function CategorizeAll_perform() { if ($_GET["pattern"] == null) { return; } $sock = new sockets(); $uuid = base64_decode($sock->getFrameWork("cmd.php?system-unique-id=yes")); if ($uuid == null) { echo "UUID=NULL; Aborting"; return; } $pattern = " AND sitename LIKE '%{$_GET["pattern"]}%' "; $pattern = str_replace("*", "%", $pattern); $sql = "SELECT sitename FROM `visited_sites` WHERE LENGTH( `category` )=0 {$pattern}"; $category = $_GET["CategorizeAll_category"]; if ($category == null) { return; } $q = new mysql_squid_builder(); $results = $q->QUERY_SQL($sql, "artica_events"); if (!$q->ok) { echo $q->mysql_error . "\n" . basename(__FILE__) . "\nLine" . __LINE__; return; } $category_table = "category_" . $q->category_transform_name($category); if (!$q->TABLE_EXISTS($category_table)) { $q->CreateCategoryTable($category); } while ($ligne = mysql_fetch_array($results, MYSQL_ASSOC)) { $website = $ligne["sitename"]; if ($website == null) { return; } $www = trim(strtolower($website)); if (preg_match("#^www\\.(.+?)\$#i", trim($www), $re)) { $www = $re[1]; } $md5 = md5($www . $category); $enabled = 1; if ($www == null) { echo "Alert: website is null...\n"; return; } $sql_add = "INSERT INTO {$category_table} (zmd5,zDate,category,pattern,uuid,enabled) VALUES('{$md5}',NOW(),'{$category}','{$www}','{$uuid}',1)"; $q->QUERY_SQL($sql_add); if (!$q->ok) { echo $q->mysql_error . "\n" . basename(__FILE__) . "\nLine" . __LINE__ . "\n"; echo $sql; return; } $sql = "INSERT IGNORE INTO categorize (zmd5,zDate,category,pattern,uuid) VALUES('{$md5}',NOW(),'{$category}','{$www}','{$uuid}')"; $q->QUERY_SQL($sql); if (!$q->ok) { echo $q->mysql_error . "\n" . basename(__FILE__) . "\nLine" . __LINE__ . "\n"; echo $sql; return; } if ($_GET["day"] != null) { $time = strtotime($_GET["day"] . " 00:00:00"); $tableSrc = date('Ymd') . "_hour"; $categories = $q->GET_CATEGORIES($www, true); $q->QUERY_SQL("UPDATE {$tableSrc} SET category='{$categories}' WHERE sitename='{$www}'"); } } $sql = "UPDATE `visited_sites` SET `category`='{$category}' WHERE LENGTH( `category` )=0 {$pattern}"; $q->QUERY_SQL($sql); if (!$q->ok) { echo $q->mysql_error . "\n" . basename(__FILE__) . "\nLine" . __LINE__ . "\n"; echo $sql; return; } $sock = new sockets(); $sock->getFrameWork("cmd.php?export-community-categories=yes"); }
function CategorizeAll_perform(){ if($_GET["pattern"]==null){return;} $sock=new sockets(); $uuid=base64_decode($sock->getFrameWork("cmd.php?system-unique-id=yes")); if($uuid==null){echo "UUID=NULL; Aborting";return;} $pattern=" AND sitename LIKE '%{$_GET["pattern"]}%' "; $pattern=str_replace("*","%",$pattern); $sql="SELECT sitename FROM `visited_sites` WHERE LENGTH( `category` )=0 $pattern"; $category=$_GET["CategorizeAll_category"]; if($category==null){return;} if($category=="teans"){$category="teens";} $q=new mysql_squid_builder(); $results=$q->QUERY_SQL($sql,"artica_events"); if(!$q->ok){ echo $q->mysql_error."\n".basename(__FILE__)."\nLine".__LINE__; return; } if($_GET["week"]<>null){$_GET["day"]=$_GET["week"];} $category_table="category_".$q->category_transform_name($category); if(!$q->TABLE_EXISTS($category_table)){$q->CreateCategoryTable($category);} while($ligne=mysql_fetch_array($results,MYSQL_ASSOC)){ $website=$ligne["sitename"]; if($website==null){return;} $www=trim(strtolower($website)); if(preg_match("#^www\.(.+?)$#i",trim($www),$re)){$www=$re[1];} $md5=md5($category.$www); $enabled=1; if($www==null){echo "Alert: website is null...\n";return;} $sql_add="INSERT INTO $category_table (zmd5,zDate,category,pattern,uuid,enabled) VALUES('$md5',NOW(),'$category','$www','$uuid',1)"; $ligne=mysql_fetch_array($q->QUERY_SQL("SELECT category,pattern FROM `$category_table` WHERE zmd5='$md5'")); if($ligne["category"]==null){$sql_add="UPDATE $category_table SET `category`='$category',pattern='$www' WHERE zmd5='$md5'";} if($ligne["pattern"]==null){$sql_add="UPDATE $category_table SET `category`='$category',pattern='$www' WHERE zmd5='$md5'";} $q->QUERY_SQL($sql_add); if(!$q->ok){echo $q->mysql_error."\n".basename(__FILE__)."\nLine".__LINE__."\n";echo $sql;return;} $sql="INSERT IGNORE INTO categorize (zmd5,zDate,category,pattern,uuid) VALUES('$md5',NOW(),'$category','$www','$uuid')"; $q->QUERY_SQL($sql); if(!$q->ok){echo $q->mysql_error."\n".basename(__FILE__)."\nLine".__LINE__."\n";echo $sql;return;} $sql="UPDATE `visited_sites` SET `category`='$category' WHERE LENGTH( `category` )=0 $pattern"; $q->QUERY_SQL($sql); if(!$q->ok){echo $q->mysql_error."\n".basename(__FILE__)."\nLine".__LINE__."\n";echo $sql;return;} if($_GET["day"]<>null){ if($pattern<>null){ $time=strtotime($_GET["day"]." 00:00:00"); $tableSrc=date('Ymd',$time)."_hour"; $categories=$q->GET_CATEGORIES($www,true); if($categories==null){$categories=$category;} $sql="UPDATE $tableSrc SET category='$categories' WHERE LENGTH( `category` )=0 $pattern"; $q->QUERY_SQL($sql); writelogs($sql,__FUNCTION__,__FILE__,__LINE__); if(!$q->ok){echo $q->mysql_error."\n".basename(__FILE__)."\nLine".__LINE__."\n";echo $sql;} $tableWeek=date("YW",$time)."_week"; $sql="UPDATE $tableWeek SET category='$categories' WHERE LENGTH( `category` )=0 $pattern"; $q->QUERY_SQL($sql); writelogs($sql,__FUNCTION__,__FILE__,__LINE__); if(!$q->ok){echo $q->mysql_error."\n".basename(__FILE__)."\nLine".__LINE__."\n";echo $sql;} $tableSrcDay=date('Ym',$time)."_day"; if($q->TABLE_EXISTS($tableSrcDay)){ $sql="UPDATE $tableSrcDay SET category='$categories' WHERE LENGTH( `category` )=0 $pattern"; writelogs($sql,__FUNCTION__,__FILE__,__LINE__); $q->QUERY_SQL($sql); if(!$q->ok){echo $q->mysql_error."\n".basename(__FILE__)."\nLine".__LINE__."\n";echo $sql;} } }else{ echo "Pattern is null!!\n"; } } } $sock=new sockets(); $sock->getFrameWork("cmd.php?export-community-categories=yes"); }
function Export($asPid = false) { return; $unix = new unix(); $restartProcess = false; $nohup = $unix->find_program("nohup"); $php5 = $unix->LOCATE_PHP5_BIN(); $cachetime = "/etc/artica-postfix/pids/" . basename(__FILE__) . "." . __FUNCTION__ . ".time"; if ($GLOBALS["VERBOSE"]) { echo "CacheTime: {$cachetime}\n"; } $restart_cmd = trim("{$nohup} {$php5} " . __FILE__ . " --export >/dev/null 2>&1 &"); $sock = new sockets(); shell_exec(trim("{$nohup} {$php5} " . __FILE__ . " --export-not-categorized >/dev/null 2>&1 &")); if ($asPid) { $pidfile = "/etc/artica-postfix/pids/" . basename(__FILE__) . "." . __FUNCTION__ . ".pid"; $unix = new unix(); $pid = @file_get_contents($pidfile); if ($unix->process_exists($pid, basename(__FILE__))) { WriteMyLogs("Already executed PID:{$pid}, die()", __FUNCTION__, __FILE__, __LINE__); die; } @file_put_contents($pidfile, getmypid()); } $uuid = $unix->GetUniqueID(); if ($uuid == null) { if ($GLOBALS["VERBOSE"]) { echo "No system ID !\n"; } return; } $q = new mysql_squid_builder(); $tables = $q->LIST_TABLES_CATEGORIES(); $c = 0; while (list($table, $www) = each($tables)) { $limit = null; $limitupate = null; if (!preg_match("#category_(.+?)\$#", $table)) { continue; } if (!$q->TABLE_EXISTS($table)) { continue; } $sql = "SELECT COUNT(zmd5) as tcount FROM {$table} WHERE sended=0 and enabled=1"; $q->CreateCategoryTable(null, $table); $ligne = mysql_fetch_array($q->QUERY_SQL($sql)); if (!$q->ok) { writelogs("{$table} {$q->mysql_error}", __FUNCTION__, __FILE__, __LINE__); return; } $prefix = "INSERT IGNORE INTO categorize (zmd5 ,pattern,zDate,uuid,category) VALUES"; if ($ligne["tcount"] > 0) { writelogs("{$table} {$ligne["tcount"]} items to export", __FUNCTION__, __FILE__, __LINE__); if ($ligne["tcount"] > 5000) { $limit = "LIMIT 0,5000"; $limitupate = "LIMIT 5000"; } $results = $q->QUERY_SQL("SELECT * FROM {$table} WHERE sended=0 AND enabled=1 {$limit}"); while ($ligne2 = mysql_fetch_array($results, MYSQL_ASSOC)) { $md5 = md5("{$ligne2["category"]}{$ligne2["pattern"]}"); $f[] = "('{$md5}','{$ligne2["pattern"]}','{$ligne2["zDate"]}','{$uuid}','{$ligne2["category"]}')"; $c++; if (count($f) > 1000) { $q->QUERY_SQL($prefix . @implode(",", $f)); if (!$q->ok) { echo $q->mysql_error . "\n"; return; } $f = array(); } } $q->QUERY_SQL("UPDATE {$table} SET sended=1 WHERE sended=0 {$limitupate}"); } } if (count($f) > 0) { $q->QUERY_SQL($prefix . @implode(",", $f)); $f = array(); } $ALLCOUNT = $q->COUNT_ROWS("categorize"); if ($GLOBALS["VERBOSE"]) { echo "Total row in categorize table: {$ALLCOUNT}\n"; } if ($ALLCOUNT > 2000) { $restartProcess = true; } $sql = "SELECT * FROM categorize ORDER BY zDate DESC LIMIT 0,2000"; if ($GLOBALS["VERBOSE"]) { echo "Execute query\n"; } $results = $q->QUERY_SQL($sql, "artica_backup"); if (!$q->ok) { echo $q->mysql_error . "\n{$sql}\n"; return; } while ($ligne = @mysql_fetch_array($results, MYSQL_ASSOC)) { if ($ligne["category"] == null) { continue; } if ($ligne["pattern"] == null) { continue; } if ($ligne["zmd5"] == null) { continue; } $logsExp[] = "{$ligne["pattern"]}:{$ligne["category"]}"; $array[$ligne["zmd5"]] = array("category" => $ligne["category"], "pattern" => $ligne["pattern"], "uuid" => $ligne["uuid"]); } if (!isset($array)) { WriteMyLogs("Nothing to export", __FUNCTION__, __FILE__, __LINE__); return; } if (!is_array($array)) { WriteMyLogs("Nothing to export", __FUNCTION__, __FILE__, __LINE__); return; } if (count($array) == 0) { WriteMyLogs("Nothing to export", __FUNCTION__, __FILE__, __LINE__); return; } $WHITELISTED["1636b7346f2e261c5b21abfcaef45a69"] = true; $WHITELISTED["8cdd119c-2dc1-452d-b9d0-451c6046464f"] = true; if (!isset($WHITELISTED[$uuid])) { if (count($array) > 500) { $q->QUERY_SQL("TRUNCATE TABLE categorize_delete"); WriteMyLogs("Too much categories to export " . count($array) . ">500, aborting", __FUNCTION__, __FILE__, __LINE__, "export"); } } WriteMyLogs("Exporting " . count($array) . " websites", __FUNCTION__, __FILE__, __LINE__); $f = base64_encode(serialize($array)); $unix = new unix(); $URIBASE = $unix->MAIN_URI(); if ($GLOBALS["VERBOSE"]) { echo "Sending " . strlen($f) . " bytes to repository server\n"; } $curl = new ccurl("{$URIBASE}/shalla-orders.php", false); $curl->parms["COMMUNITY_POST"] = $f; if (!$curl->get()) { writelogs("Failed exporting " . count($array) . " categorized websites to Artica cloud repository servers", __FUNCTION__, __FILE__, __LINE__); squid_admin_mysql("Failed exporting " . count($array) . " categorized websites to Artica cloud repository servers \"{$curl->error}\"", null, __FILE__, __LINE__, "export"); return null; } if (preg_match("#<ANSWER>OK</ANSWER>#is", $curl->data)) { squid_admin_mysql(2, "Exporting success " . count($array) . " websites", null, __FILE__, __LINE__); if (count($logsExp) < 10) { $textadd = @implode(",", $logsExp); } $curl = new ccurl("{$URIBASE}/webfilters-instant.php?checks=yes", false); $curl->NoHTTP_POST = true; if (!$curl->get()) { squid_admin_mysql(1, "Failed to order to build webfilter instant with HTTP ERROR: `{$curl->error}`", null, __FILE__, __LINE__, "export"); } if (preg_match("#<ANSWER>OK</ANSWER>#is", $curl->data)) { writelogs_squid("Success to order to build webfilter instant", __FUNCTION__, __FILE__, __LINE__, "export"); } else { writelogs_squid("Failed to order to build webfilter instant ANSWER NOT OK in server response.", __FUNCTION__, __FILE__, __LINE__, "export"); if ($GLOBALS["VERBOSE"]) { echo $curl->data; } } writelogs("Deleting websites...", __FUNCTION__, __FILE__, __LINE__); while (list($md5, $datas) = each($array)) { $sql = "DELETE FROM categorize WHERE zmd5='{$md5}'"; $q->QUERY_SQL($sql, "artica_backup"); } if ($restartProcess) { writelogs("{$restart_cmd}", __FUNCTION__, __FILE__, __LINE__); shell_exec($restart_cmd); } else { $q->QUERY_SQL("OPTIMIZE TABLE categorize", "artica_backup"); } } else { WriteMyLogs("Failed exporting " . count($array) . " categorized websites to Artica cloud repository servers \"{$curl->data}\"", __FUNCTION__, __FILE__, __LINE__, "export"); } }
function inject_sql($srcfilename, $filename, $categoriesTable) { if (trim($categoriesTable) == null) { ufdbguard_admin_events("Fatal : no category table passed to function with the filename:{$filename}, aborting process", __FUNCTION__, __FILE__, __LINE__, "update"); return; } $datas = explode("\n", @file_get_contents($filename)); echo "Processing {$filename} " . count($datas) . " rows\n"; if (!is_array($datas)) { $GLOBALS["MAILLOG"][] = __LINE__ . ") {$filename} no elements"; UpdateCategories($srcfilename, 30, "{corrupted}", 0); } $c = 0; $d = 0; $t1 = time(); $unix = new unix(); $count = count($datas); $q = new mysql_squid_builder(); $q->CreateCategoryTable($categoriesTable); $categoriesTable = $q->category_transform_name($categoriesTable); $prefix = "INSERT IGNORE INTO category_{$categoriesTable} (zmd5,zDate,category,pattern,uuid,sended) VALUES"; $suffixR = array(); while (list($index, $row) = each($datas)) { if (trim($row) == null) { continue; } $ligne = unserialize($row); if (strlen($ligne["category"]) == 1) { continue; } $suffixR[] = "('{$ligne["zmd5"]}','{$ligne["zDate"]}','{$ligne["category"]}','{$ligne["pattern"]}','{$ligne["uuid"]}',1)"; $c++; if (count($suffixR) > 50) { $pourc = round($c / $count * 100); if ($pourc > 30) { UpdateCategories($srcfilename, $pourc, "{importing}", 0); if (system_is_overloaded(basename(__FILE__))) { echo "Overloaded, waiting 30s\n"; $ldao = getSystemLoad(); $GLOBALS["MAILLOG"][] = __LINE__ . ") Overloaded ({$ldao}),waiting 30s..."; sleep(30); } if (system_is_overloaded(basename(__FILE__))) { UpdateCategories($srcfilename, $pourc, "{overloaded}", 0); echo "Overloaded, die...\n"; $ldao = getSystemLoad(); $GLOBALS["MAILLOG"][] = __LINE__ . ") Overloaded,{$ldao} die..."; ufdbguard_admin_events("{$categoriesTable}: processing black list {$srcfilename} database injection aborted System is overloaded ({$ldao}), the processing will be aborted and restart in next cycle\n\t\t\t\t\tTask stopped line {$c}/{$count} rows\n", __FUNCTION__, __FILE__, __LINE__, "update"); die; } } $suffix = @implode(",", $suffixR); $sql = "{$prefix} {$suffix}"; $suffixR = array(); $q = new mysql_squid_builder(); $q->QUERY_SQL($sql); if (!$q->ok) { ufdbguard_admin_events("{$categoriesTable}: Fatal error {$q->mysql_error}", __FUNCTION__, __FILE__, __LINE__, "update"); UpdateCategories($srcfilename, 30, "{sql_error}", 0); return; } usleep(500000); } } if (count($suffixR) > 0) { $suffix = @implode(",", $suffixR); $sql = "{$prefix} {$suffix}"; $q = new mysql_squid_builder(); $q->QUERY_SQL($sql); } ufdbguard_admin_events("{$categoriesTable}: Success importing {$c} elements in " . $unix->distanceOfTimeInWords($t1, time()), __FUNCTION__, __FILE__, __LINE__, "update"); $GLOBALS["MAILLOG"][] = __LINE__ . ") Success importing {$c} elements in " . $unix->distanceOfTimeInWords($t1, time()); UpdateCategories($srcfilename, 100, "{success}", 1); }
function defragment_category_table($tablename) { if (preg_match("#(.+?)bak\$#", $tablename, $re)) { $oldtable = $tablename; $tablename = $re[1]; } else { $oldtable = "{$tablename}bak"; } $q = new mysql_squid_builder(); if (!$q->TABLE_EXISTS($oldtable)) { $sql = "RENAME TABLE `squidlogs`.`{$tablename}` TO `squidlogs`.`{$oldtable}`;"; $q->QUERY_SQL($sql); } if (!$q->ok) { writelogs_squid("Fatal: {$q->mysql_error}} on `{$tablename}`", __FUNCTION__, __FILE__, __LINE__, "defrag"); return; } $tablename = strtolower($tablename); $q->CreateCategoryTable(null, $tablename); $f = array(); $countTotal = $q->COUNT_ROWS($oldtable); $sql = "INSERT IGNORE INTO {$tablename} (`zmd5`,`zDate`,`category`,`pattern`,`enabled`,`uuid`,`sended`) \n\tSELECT zmd5,zDate,category,pattern,enabled,uuid,sended FROM {$oldtable}"; $q->QUERY_SQL($sql); if (!$q->ok) { echo $q->mysql_error . "\n"; return false; } $q->QUERY_SQL("DROP TABLE {$oldtable}"); return true; }
function category_save() { include_once dirname(__FILE__) . "/ressources/class.ldap.inc"; $ldap = new clladp(); $dans = new dansguardian_rules(); $_POST["category-to-add"] = url_decode_special_tool($_POST["category-to-add"]); $_POST["category_text"] = url_decode_special_tool($_POST["category_text"]); if ($_POST["category-to-add"] == "security") { $_POST["category-to-add"] = "security2"; } if ($_POST["CatzByGroupA"] != null) { $_POST["group"] = $_POST["CatzByGroupA"]; } $_POST["CatzByGroupL"] = mysql_escape_string2($_POST["CatzByGroupL"]); $_POST["category_text"] = mysql_escape_string2($_POST["category_text"]); $q = new mysql_squid_builder(); $sql = "SELECT category FROM personal_categories WHERE category='" . mysql_escape_string2($_POST["category-to-add"]) . "'"; $ligne = mysql_fetch_array($q->QUERY_SQL($sql)); if ($ligne["category"] != null) { $sql = "UPDATE personal_categories\n\t\t\tSET category_description='{$_POST["category_text"]}',\n\t\t\tmaster_category='{$_POST["group"]}'\n\t\t\tWHERE category='{$_POST["category-to-add"]}'"; } else { $_POST["category-to-add"] = strtolower($ldap->StripSpecialsChars($_POST["category-to-add"])); if (isset($dans->array_blacksites[$_POST["category-to-add"]])) { $tpl = new templates(); echo $tpl->javascript_parse_text("{$_POST["category-to-add"]}:: {category_already_exists}"); return; } $sql = "INSERT IGNORE INTO personal_categories (category,category_description,master_category)\n\t\tVALUES ('{$_POST["category-to-add"]}','{$_POST["category_text"]}','{$_POST["group"]}');"; } $q->QUERY_SQL($sql); if (!$q->ok) { echo $q->mysql_error; return; } $q->CreateCategoryTable($_POST["category-to-add"]); $sql = "TRUNCATE TABLE webfilters_categories_caches"; $dans->CategoriesTableCache(); $dans->CleanCategoryCaches(); $sock = new sockets(); $sock->getFrameWork("squid.php?clean-catz-cache=yes"); $sock->getFrameWork("squid.php?export-web-categories=yes"); }