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;
}
Beispiel #2
0
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");
}
Beispiel #3
0
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";
}
Beispiel #4
0
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");
    }
}
Beispiel #8
0
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");	

}
Beispiel #10
0
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");
}
Beispiel #11
0
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");
}
Beispiel #12
0
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");
    }
}
Beispiel #14
0
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);
}
Beispiel #15
0
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");
}