Example #1
0
function buildconf()
{
    $sock = new sockets();
    $unix = new unix();
    $SargOutputDir = $sock->GET_INFO("SargOutputDir");
    if ($SargOutputDir == null) {
        $SargOutputDir = "/var/www/html/squid-reports";
    }
    if ($unix->IsProtectedDirectory($SargOutputDir, true)) {
        $sock->SET_INFO("SargOutputDir", "/var/www/html/squid-reports");
        $SargOutputDir = "/var/www/html/squid-reports";
    }
    if (!is_file("/etc/artica-postfix/old_SargOutputDir")) {
        @file_put_contents("/etc/artica-postfix/old_SargOutputDir", $SargOutputDir);
    }
    if ($SargOutputDir == "/usr/share/artica-postfix/squid") {
        $SargOutputDir = "/var/www/html/squid-reports";
        $sock->SET_INFO("SargOutputDir", "/var/www/html/squid-reports");
    }
    if ($SargOutputDir != "/usr/share/artica-postfix/squid") {
        @mkdir("{$SargOutputDir}", 0755, true);
        if (is_dir("/usr/share/artica-postfix/squid")) {
            $cp = $unix->find_program("cp");
            $rm = $unix->find_program("rm");
            shell_exec("{$cp} -rf /usr/share/artica-postfix/squid/* \"{$SargOutputDir}/\"");
            shell_exec("{$rm} -rf \"/usr/share/artica-postfix/squid\"");
            @rmdir("/usr/share/artica-postfix/squid");
        }
    }
    $old_SargOutputDir = @file_get_contents("/etc/artica-postfix/old_SargOutputDir");
    if ($old_SargOutputDir != $SargOutputDir) {
        @mkdir("{$SargOutputDir}", 0755, true);
        if (is_dir($old_SargOutputDir)) {
            $cp = $unix->find_program("cp");
            $rm = $unix->find_program("rm");
            shell_exec("{$cp} -rf \"{$old_SargOutputDir}/*\" \"{$SargOutputDir}/\"");
            if (!$unix->IsProtectedDirectory($old_SargOutputDir, true)) {
                shell_exec("{$rm} -rf \"{$old_SargOutputDir}\"");
                @rmdir($old_SargOutputDir);
            }
            if (!is_dir($old_SargOutputDir)) {
                @file_put_contents("/etc/artica-postfix/old_SargOutputDir", $SargOutputDir);
            }
        } else {
            @file_put_contents("/etc/artica-postfix/old_SargOutputDir", $SargOutputDir);
        }
    }
    events("Output dir: {$SargOutputDir}");
    $SargConfig = unserialize(base64_decode($sock->GET_INFO("SargConfig")));
    $SargConfig = SargDefault($SargConfig);
    if ($SargConfig["lastlog"] == 0) {
        $SargConfig["lastlog"] = 90;
    }
    $SargConfig["lastlog"] * 24;
    $conf[] = "language {$SargConfig["language"]}";
    $conf[] = "graphs {$SargConfig["graphs"]}";
    $conf[] = "title \"{$SargConfig["title"]}\"";
    $conf[] = "topsites_num {$SargConfig["topsites_num"]}";
    $conf[] = "topuser_num {$SargConfig["topuser_num"]}";
    $conf[] = "report_type {$SargConfig["report_type"]}";
    $conf[] = "topsites_sort_order CONNECT {$SargConfig["topsites_sort_order"]}";
    $conf[] = "index_sort_order {$SargConfig["index_sort_order"]}";
    $conf[] = "resolve_ip {$SargConfig["resolve_ip"]}";
    $conf[] = "user_ip {$SargConfig["user_ip"]}";
    $conf[] = "exclude_hosts /etc/squid3/sarg.hosts";
    $conf[] = "date_format {$SargConfig["date_format"]}";
    $conf[] = "records_without_userid {$SargConfig["records_without_userid"]}";
    $conf[] = "long_url {$SargConfig["long_url"]}";
    $conf[] = "lastlog {$SargConfig["lastlog"]}";
    $conf[] = "index yes";
    $conf[] = "index_tree file";
    $conf[] = "overwrite_report yes";
    $conf[] = "mail_utility mail";
    $conf[] = "hostalias /etc/squid3/sarg-aliases";
    $conf[] = "exclude_codes /etc/squid3/sarg-exclude_codes";
    $conf[] = "temporary_dir /tmp";
    $conf[] = "date_time_by bytes";
    $conf[] = "show_sarg_info no";
    $conf[] = "show_sarg_logo no";
    $conf[] = "external_css_file /sarg.css";
    $conf[] = "ulimit none";
    $conf[] = "squid24 off";
    $conf[] = "output_dir {$SargOutputDir}";
    $conf[] = "logo_image /logo.gif";
    $conf[] = "image_size 160 58";
    $conf[] = "access_log /var/log/squid/access.log";
    $conf[] = "realtime_access_log_lines 5000";
    $conf[] = "graph_days_bytes_bar_color orange";
    $conf[] = "";
    add_defaults();
    $q = new mysql_squid_builder();
    $sql = "SELECT *  FROM sarg_aliases ORDER BY `pattern`";
    $results = $q->QUERY_SQL($sql);
    $a = array();
    while ($ligne = mysql_fetch_assoc($results)) {
        $zline = "{$ligne["pattern"]}";
        if ($ligne["group"] != null) {
            $zline = $zline . " {$ligne["group"]}";
        }
        if (trim($ligne["replace"] == null)) {
            $ligne["replace"] = str_replace("*.", "", $ligne["pattern"]);
            $zline = $zline . ": {$ligne["replace"]}";
        }
        $a[] = $zline;
    }
    file_put_contents("/etc/squid3/sarg-aliases", @implode("\n", $a));
    file_put_contents("/etc/squid3/sarg.conf", @implode("\n", $conf));
    file_put_contents("/etc/squid3/sarg-configured-1.8.012202.conf", @implode("\n", $conf));
    echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]}, sarg.conf done\n";
    events("/etc/squid3/sarg.conf done");
    $ips = array();
    $ips[] = "127.0.0.1";
    $excluescodes[] = "NONE/400";
    $excluescodes[] = "NONE/411";
    $excluescodes[] = "TCP_DENIED/407";
    $excluescodes[] = "TCP_DENIED/403";
    $excluescodes[] = "TCP_DENIED/400";
    $excluescodes[] = "TCP_DENIED/401";
    $excluescodes[] = "TCP_DENIED/411";
    $excluescodes[] = "TCP_MEM_HIT/200";
    $excluescodes[] = "TCP_MEM_HIT/302";
    $excluescodes[] = "TCP_REFRESH_HIT/200";
    $excluescodes[] = "TCP_REFRESH_HIT/304";
    $excluescodes[] = "TCP_NEGATIVE_HIT/404";
    $excluescodes[] = "TCP_IMS_HIT/304";
    $excluescodes[] = "TCP_IMS_HIT/200";
    $excluescodes[] = "TCP_HIT/200";
    $excluescodes[] = "TCP_HIT/302";
    @file_put_contents("/etc/squid3/sarg-exclude_codes", @implode("\n", $excluescodes));
    @file_put_contents("/etc/squid3/sarg.hosts", @implode("\n", $ips));
    echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]}, sarg.hosts done\n";
    // $sock=new sockets();$SargOutputDir=$sock->GET_INFO("SargOutputDir");if($SargOutputDir==null){$SargOutputDir="/usr/share/artica-postfix/squid";}
    $unix = new unix();
    $lighttpd_user = $unix->APACHE_SRC_ACCOUNT();
    $squidbin = $unix->LOCATE_SQUID_BIN();
    echo "Starting......: " . date("H:i:s") . " Apache user: {$lighttpd_user}\n";
    @chown("{$SargOutputDir}/sarg.css", $lighttpd_user);
    echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]}, sarg.css done\n";
    $nice = EXEC_NICE();
    $unix = new unix();
    $sarg_bin = $unix->find_program("sarg");
    $squidbin = $unix->find_program("squid");
    $nohup = $unix->find_program("nohup");
    $php5 = $unix->LOCATE_PHP5_BIN();
    if (!is_file($squidbin)) {
        $squidbin = $unix->find_program("squid3");
    }
    if (!is_file($sarg_bin)) {
        sarg_admin_events("Fatal, unable to locate sarg binary, aborting...", __FUNCTION__, __FILE__, __LINE__, "sarg");
        return;
    }
    unset($f);
    $f[] = "#!/bin/sh";
    $f[] = "export LC_ALL=C";
    $f[] = "{$nice} {$php5} " . __FILE__ . " --exec-daily >/dev/null 2>&1";
    $f[] = "";
    @file_put_contents("/etc/cron.daily/0sarg.sh", @implode("\n", $f));
    @chmod("/etc/cron.daily/0sarg.sh", 0755);
    events("cron.daily done");
    echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]}, cron cron.daily done\n";
    unset($f);
    $f[] = "#!/bin/sh";
    $f[] = "export LC_ALL=C";
    $f[] = "{$nice} {$php5} " . __FILE__ . " --exec-hourly >/dev/null 2>&1";
    $f[] = "";
    @file_put_contents("/etc/cron.hourly/0sarg.sh", @implode("\n", $f));
    echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]}, cron cron.hourly done\n";
    @chmod("/etc/cron.hourly/0sarg.sh", 0755);
    events("cron.hourly done");
    unset($f);
    $f[] = "#!/bin/sh";
    $f[] = "export LC_ALL=C";
    $f[] = "{$nice} {$php5} " . __FILE__ . " --exec-monthly >/dev/null 2>&1";
    $f[] = "";
    @file_put_contents("/etc/cron.monthly/0sarg.sh", @implode("\n", $f));
    echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]}, cron cron.monthly done\n";
    @chmod("/etc/cron.monthly/sarg.sh", 0755);
    events("cron.monthly done");
    unset($f);
    $f[] = "#!/bin/sh";
    $f[] = "export LC_ALL=C";
    $f[] = "{$nice} {$php5} " . __FILE__ . " --exec-weekly >/dev/null 2>&1";
    $f[] = "";
    @file_put_contents("/etc/cron.weekly/0sarg.sh", @implode("\n", $f));
    echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]}, cron cron.weekly done\n";
    @chmod("/etc/cron.weekly/0sarg.sh", 0755);
    events("cron.weekly done");
    unset($f);
    echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]}, " . __FUNCTION__ . " done\n";
}
Example #2
0
function list_items()
{
    $tpl = new templates();
    $MyPage = CurrentPageName();
    $q = new mysql_squid_builder();
    $t = $_GET["t"];
    $search = '%';
    $table = "sarg_aliases";
    if ($q->COUNT_ROWS("sarg_aliases") == 0) {
        add_defaults();
    }
    $page = 1;
    $FORCE_FILTER = null;
    $total = 0;
    if (isset($_POST["sortname"])) {
        if ($_POST["sortname"] != null) {
            $ORDER = "ORDER BY {$_POST["sortname"]} {$_POST["sortorder"]}";
        }
    }
    if (isset($_POST['page'])) {
        $page = $_POST['page'];
    }
    $searchstring = string_to_flexquery();
    if ($searchstring != null) {
        $sql = "SELECT COUNT(*) as TCOUNT FROM {$table} WHERE 1 {$FORCE_FILTER} {$searchstring}";
        $ligne = mysql_fetch_array($q->QUERY_SQL($sql));
        $total = $ligne["TCOUNT"];
    } else {
        $total = $q->COUNT_ROWS("sarg_aliases");
    }
    if (isset($_POST['rp'])) {
        $rp = $_POST['rp'];
    }
    if (!is_numeric($rp)) {
        $rp = 50;
    }
    $pageStart = ($page - 1) * $rp;
    if (is_numeric($rp)) {
        $limitSql = "LIMIT {$pageStart}, {$rp}";
    }
    $sql = "SELECT *  FROM {$table} WHERE 1 {$searchstring} {$FORCE_FILTER} {$ORDER} {$limitSql}";
    $results = $q->QUERY_SQL($sql);
    $no_rule = $tpl->_ENGINE_parse_body("{no data}");
    $data = array();
    $data['page'] = $page;
    $data['total'] = $total;
    $data['rows'] = array();
    if (!$q->ok) {
        if (strpos($q->mysql_error, "doesn't exist") > 0) {
            $q->CheckTables();
            $results = $q->QUERY_SQL($sql);
        }
    }
    if (!$q->ok) {
        json_error_show($q->mysql_error . "<br>{$sql}");
    }
    if (mysql_num_rows($results) == 0) {
        json_error_show("no data");
    }
    $fontsize = "16";
    while ($ligne = mysql_fetch_assoc($results)) {
        $color = "black";
        $delete = imgsimple("delete-32.png", null, "Loadjs('{$MyPage}?delete-alias-js=yes&ID={$ligne["ID"]}&t={$t}&tt={$_GET["tt"]}')");
        $editjs = "<a href=\"javascript:blur();\"\n\t\tOnClick=\"javascript:Loadjs('{$MyPage}?alias-js=yes&ID={$ligne["ID"]}&t={$_GET["t"]}',true);\"\n\t\tstyle='font-size:{$fontsize}px;font-weight:bold;color:{$color};text-decoration:underline'>";
        $pattern = $ligne["pattern"];
        $group = $ligne["group"];
        $replace = $ligne["replace"];
        $data['rows'][] = array('id' => $ligne['ID'], 'cell' => array("<span style='font-size:{$fontsize}px;font-weight:bold;color:{$color}'>{$editjs}{$pattern}</a><br><i style='font-size:12px'>&nbsp;{$grouptype}</i></span>", "<span style='font-size:{$fontsize}px;font-weight:normal;color:{$color}'>{$group}</span>", "<span style='font-size:{$fontsize}px;font-weight:normal;color:{$color}'>{$replace}</span>", "<span style='font-size:{$fontsize}px;font-weight:normal;color:{$color}'>{$delete}</span>"));
    }
    echo json_encode($data);
}