Пример #1
0
function smtp_tls_policy_maps_table()
{
    $t = time();
    $page = CurrentPageName();
    $tpl = new templates();
    $users = new usersMenus();
    $sock = new sockets();
    $q = new mysql();
    if (!$q->TABLE_EXISTS("smtp_tls_policy_maps", "artica_backup")) {
        $q = new mysql_builder();
        if (!$q->CheckTablePostfixTls()) {
            echo FATAL_ERROR_SHOW_128($q->mysql_error_html());
            return;
        }
    }
    $t = time();
    $hostname = $_GET["hostname"];
    $hostname_enc = urlencode($hostname);
    $title = $tpl->javascript_parse_text("{tls_table_explain}");
    $about = $tpl->javascript_parse_text("{about2}");
    $about_text = $tpl->javascript_parse_text("{tls_table_explain}");
    $add_tls_smtp_server = $tpl->javascript_parse_text("{add_tls_smtp_server}");
    $servername = $tpl->javascript_parse_text("{servername2}");
    $option = $tpl->javascript_parse_text("{option}");
    $delete = $tpl->javascript_parse_text("{delete}");
    $add = "{name: '{$add_tls_smtp_server}', bclass: 'add', onpress : add_tls_smtp_server{$t}},";
    $aboutButton = "{name: '{$about}', bclass: 'Help', onpress : About{$t}},";
    $buttons = "\n\t\tbuttons : [\n\t\t{$add}\n\t\t{$aboutButton}\n\t\t],";
    $explain = $tpl->javascript_parse_text("{postfix_transport_table_explain}");
    $html = "\n<table class='POSTFIX_TLS_TABLE' style='display: none' id='POSTFIX_TLS_TABLE' style='width:100%'></table>\n<script>\n\$(document).ready(function(){\n\t\t\$('#POSTFIX_TLS_TABLE').flexigrid({\n\t\turl: '{$page}?list=yes&hostname={$hostname_enc}&t={$t}',\n\t\tdataType: 'json',\n\t\tcolModel : [\n\t\t{display: '{$servername}', name : 'servername', width : 546, sortable : true, align: 'left'},\n\t\t{display: '{$option}', name : 'tls_option', width :309, sortable : true, align: 'left'},\n\t\t{display: '{$delete}', name : 'delete', width : 77, sortable : false, align: 'center'},\n\t\t],\n\t\t{$buttons}\n\t\tsearchitems : [\n\t\t{display: '{$servername}', name : 'servername'},\n\t\t],\n\t\tsortname: 'servername',\n\t\tsortorder: 'asc',\n\t\tusepager: true,\n\t\ttitle: '<span style=font-size:18px>{$title}</span>',\n\t\tuseRp: true,\n\t\trp: 50,\n\t\tshowTableToggleBtn: false,\n\t\twidth: '99%',\n\t\theight: 450,\n\t\tsingleSelect: true,\n\t\trpOptions: [10, 20, 30, 50,100,200]\n\t\n\t});\n});\n\t\nfunction About{$t}(){\n\talert('{$about_text}');\n}\n\t\nfunction add_tls_smtp_server{$t}(){\n\tLoadjs('{$page}?tls-js=yes&ID=0&t={$t}&hostname={$hostname_enc}');\n}\n\t\n</script>\n\t";
    echo $html;
}
Пример #2
0
function l7apps_items()
{
    $tpl = new templates();
    $MyPage = CurrentPageName();
    $q = new mysql_builder();
    $q->CheckTables_qos();
    $database = "artica_backup";
    $q = new mysql();
    $t = $_GET["t"];
    $search = '%';
    $table = "l7filters_items";
    $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) {
        $search = $_POST["query"];
        $sql = "SELECT COUNT(*) as TCOUNT FROM `{$table}` WHERE 1 {$FORCE_FILTER} {$searchstring}";
        $ligne = mysql_fetch_array($q->QUERY_SQL($sql, "{$database}"));
        $total = $ligne["TCOUNT"];
    } else {
        $sql = "SELECT COUNT(*) as TCOUNT FROM `{$table}` WHERE 1 {$FORCE_FILTER}";
        $ligne = mysql_fetch_array($q->QUERY_SQL($sql, $database));
        $total = $ligne["TCOUNT"];
    }
    if (isset($_POST['rp'])) {
        $rp = $_POST['rp'];
    }
    $pageStart = ($page - 1) * $rp;
    if (!is_numeric($rp)) {
        $rp = 50;
    }
    $limitSql = "LIMIT {$pageStart}, {$rp}";
    $sql = "SELECT *  FROM `{$table}` WHERE 1 {$searchstring} {$FORCE_FILTER} {$ORDER} {$limitSql}";
    $results = $q->QUERY_SQL($sql, $database);
    $data = array();
    $data['page'] = $page;
    $data['total'] = $total + 1;
    $data['rows'] = array();
    if (!$q->ok) {
        json_error_show($q->mysql_error, 1);
    }
    if (mysql_num_rows($results) == 0) {
        json_error_show("????");
        return;
    }
    if ($searchstring == null) {
        $data['total'] = $data['total'] + $array[0];
        $data['rows'] = $array[1]["rows"];
    }
    $fontsize = 14;
    $LEVEL[0] = "ok24.png";
    $LEVEL[1] = "24-blue.png";
    $LEVEL[2] = "warning24.png";
    $LEVEL[3] = "24-red.png";
    $LEVEL[4] = "ok24-grey.png";
    $ENABLEDI[0] = "ok32-grey.png";
    $ENABLEDI[1] = "ok32.png";
    while ($ligne = mysql_fetch_assoc($results)) {
        $color = "black";
        $lsprime = "javascript:Loadjs('{$MyPage}?enable-js=yes&ID={$ligne["ID"]}')";
        $enabled = $ligne["enabled"];
        $icon = "ok24.png";
        if ($enabled == 0) {
            $icon = "ok24-grey.png";
            $color = "#8a8a8a";
        }
        $nic = new system_nic($ligne["eth"]);
        if ($nic->QOS == 0) {
            $icon = "ok24-grey.png";
            $color = "#8a8a8a";
        }
        $QOSMAX = intval($ligne["QOSMAX"]);
        if ($QOSMAX < 10) {
            $QOSMAX = 100;
        }
        $style = "style='font-size:{$fontsize}px;color:{$color};'";
        $js = "<a href=\"javascript:blur();\" OnClick=\"{$lsprime};\"\n\t\t\tstyle='font-size:{$fontsize}px;color:{$color};text-decoration:underline'>";
        $ligne["name"] = utf8_encode($ligne["name"]);
        $icon = $LEVEL[$ligne["level"]];
        $icon_enabled = $ENABLEDI[$ligne["enabled"]];
        $ligne["keyitem"] = strtoupper($ligne["keyitem"]);
        $data['rows'][] = array('id' => $ligne['ID'], 'cell' => array("<span {$style}>{$ligne["ID"]}</a></span>", "<span {$style}><img src='img/{$icon}'></a></span>", "<span {$style}><span style='font-size:16px'>{$ligne["keyitem"]}</span></a></span>", "<span {$style}>{$ligne["explain"]}</a></span>", "<span {$style}>{$js}<img src='img/{$icon_enabled}'></a></span>"));
    }
    echo json_encode($data);
}
function rule_save()
{
    $q = new mysql_builder();
    $_POST["rulename"] = mysql_escape_string2(url_decode_special_tool($_POST["rulename"]));
    if (!$q->FIELD_EXISTS("artica_caches", "MaxSizeBytes", "artica_backup")) {
        $sql = "ALTER TABLE `artica_caches` ADD `MaxSizeBytes` BIGINT UNSIGNED NOT NULL DEFAULT '3145728000'";
        $q->QUERY_SQL($sql, "artica_backup");
    }
    if (!$q->FIELD_EXISTS("artica_caches", "FileTypes", "artica_backup")) {
        $sql = "ALTER TABLE `artica_caches` ADD `FileTypes` TEXT";
        $q->QUERY_SQL($sql, "artica_backup");
    }
    if (!$q->FIELD_EXISTS("artica_caches", "OtherDomains", "artica_backup")) {
        $sql = "ALTER TABLE `artica_caches` ADD `OtherDomains` TEXT";
        $q->QUERY_SQL($sql, "artica_backup");
    }
    $_POST["sitename"] = mysql_escape_string2(url_decode_special_tool($_POST["sitename"]));
    $q->QUERY_SQL("UPDATE artica_caches\n\t\t\tSET MaxSizeBytes='{$_POST["MaxSizeBytes"]}',\n\t\t\t`rulename`='{$_POST["rulename"]}',\n\t\t\t`sitename`='{$_POST["sitename"]}',\n\t\t\t`enabled`='{$_POST["enabled"]}'\n\t\t\tWHERE ID={$_POST["ID"]}\n\t\t\n\t\t\t\n\t\t\t");
    if (!$q->ok) {
        echo $q->mysql_error;
    }
}
Пример #4
0
function databases_list_fill()
{
    $unix = new unix();
    if (system_is_overloaded(basename(__FILE__))) {
        writelogs("Overloaded system, aborting task", __FUNCTION__, __FILE__, __LINE__);
        return;
    }
    if (!$GLOBALS["FORCE"]) {
        $pidfile = "/etc/artica-postfix/pids/" . basename(__FILE__) . "." . __FUNCTION__ . ".pid";
        $pidfileTime = "/etc/artica-postfix/pids/" . basename(__FILE__) . "." . __FUNCTION__ . ".time";
        $pid = $unix->get_pid_from_file($pidfile);
        if ($unix->process_exists($pid, basename(__FILE__))) {
            writelogs("Already process {$pid} exists", __FUNCTION__, __FILE__, __LINE__);
            return;
        }
        $time = $unix->file_time_min($pidfileTime);
        if ($time < 20) {
            if ($GLOBALS["VERBOSE"]) {
                echo "Minimal time = 20Mn (current is {$time}Mn)\n";
            }
            return;
        }
        @unlink($pidfileTime);
        @file_put_contents($pidfileTime, time());
        @file_put_contents($pidfile, getmypid());
    }
    if ($GLOBALS["VERBOSE"]) {
        echo "databases_list_fill() executed\n";
    }
    $prefix = "INSERT IGNORE INTO mysqldbs (databasename,TableCount,dbsize) VALUES ";
    $q = new mysql();
    if (!$q->TABLE_EXISTS('mysqldbs', 'artica_backup')) {
        if ($GLOBALS["VERBOSE"]) {
            echo "check_storage_table()\n";
        }
        $q->check_storage_table(true);
    }
    eventsDB("DATABASE_LIST_SIMPLE()", __LINE__);
    $databases = $q->DATABASE_LIST_SIMPLE();
    eventsDB("DATABASE_LIST_SIMPLE() fone", __LINE__);
    eventsDB("Found " . count($databases) . " databases -> dROP mysqldbtables", __LINE__);
    $q->QUERY_SQL("DROP TABLE mysqldbtables", "artica_backup");
    eventsDB("BuildTables()...", __LINE__);
    if (!class_exists("mysql_builder")) {
        include_once dirname(__FILE__) . "/ressources/class.mysql.builder.inc";
    }
    $t = new mysql_builder();
    $t->check_mysql_dbtables();
    while (list($database, $ligne) = each($databases)) {
        eventsDB("-> databases_list_tables({$database})...", __LINE__);
        $rr = databases_list_tables($database);
        $TableCount = $rr[0];
        $Size = $rr[1];
        eventsDB("Found database `{$database}` {$TableCount} tables ({$Size})", __LINE__);
        $f[] = "('{$database}','{$TableCount}','{$Size}')";
    }
    if (count($f) > 0) {
        eventsDB("Inbjecting " . count($f) . " elements...", __LINE__);
        $q->QUERY_SQL("TRUNCATE TABLE mysqldbs", "artica_backup");
        $q->QUERY_SQL($prefix . @implode(",", $f), "artica_backup");
    }
    eventsDB("multi_databases_parse()", __LINE__);
    multi_databases_parse();
    eventsDB("multi_databases_parse() done...", __LINE__);
    @file_put_contents($pidfileTime, time());
}
Пример #5
0
function qos_containers_save()
{
    ini_set('html_errors', 0);
    ini_set('display_errors', 1);
    ini_set('error_reporting', E_ALL);
    ini_set('error_prepend_string', '');
    ini_set('error_append_string', '');
    $ID = $_POST["ID"];
    unset($_POST["ID"]);
    $_POST["name"] = replace_accents($_POST["name"]);
    $table = "qos_containers";
    while (list($key, $value) = each($_POST)) {
        $fields[] = "`{$key}`";
        $values[] = "'" . mysql_escape_string2($value) . "'";
        $edit[] = "`{$key}`='" . mysql_escape_string2($value) . "'";
    }
    $eth = $_POST["eth"];
    if ($ID > 0) {
        $sql = "UPDATE {$table} SET " . @implode(",", $edit) . " WHERE ID='{$ID}'";
    } else {
        $sql = "INSERT IGNORE INTO {$table} (" . @implode(",", $fields) . ") VALUES (" . @implode(",", $values) . ")";
    }
    $q = new mysql_builder();
    $q->CheckTables_qos();
    $q = new mysql();
    $q->QUERY_SQL($sql, "artica_backup");
    if (!$q->ok) {
        echo $q->mysql_error;
        return;
    }
    $results = $q->QUERY_SQL("SELECT ID FROM qos_containers ORDER by prio AND eth='{$eth}'", "artica_backup");
    if (!$q->ok) {
        echo "Line:" . __LINE__ . ":" . $q->mysql_error;
    }
    $c = 1;
    while ($ligne = mysql_fetch_assoc($results)) {
        $ID = $ligne["ID"];
        $sql = "UPDATE qos_containers SET prio={$c} WHERE ID='{$ID}'";
        $q->QUERY_SQL($sql, "artica_backup");
        if (!$q->ok) {
            echo "Line:" . __LINE__ . ":{$sql}\n" . $q->mysql_error;
        }
        $c++;
    }
}
Пример #6
0
function system_admin_events_inject($f, $nooptimize = false)
{
    if (count($f) == 0) {
        return;
    }
    $tq = new mysql_builder();
    $sock = new sockets();
    $q = new mysql();
    while (list($tablename, $rows) = each($f)) {
        if (!$tq->CheckTableTaskEvents($tablename)) {
            WriteMyLogs("system_admin_events:: {$tablename}: `CheckTableTaskEvents failed`", __FUNCTION__, __FILE__, __LINE__);
            continue;
        }
        $chkTables[$tablename] = true;
        $prefix = "INSERT IGNORE INTO `{$tablename}` (`zDate`,`function`,`filename`,`line`,`description`,`category`) VALUES ";
        $sql = $prefix . @implode(",", $rows);
        $q->QUERY_SQL($sql, "artica_events");
        if (!$q->ok) {
            WriteMyLogs("system_admin_events_inject:: {$tablename}: `{$q->mysql_error}`", __FUNCTION__, __FILE__, __LINE__);
            writelogs("{$q->mysql_error}", __FUNCTION__, __FILE__, __LINE__);
            if (preg_match("#Can't find file#", "{$q->mysql_error}")) {
                $q->QUERY_SQL("DROP TABLE {$tablename}", "artica_events");
                $tq->CheckTableTaskEvents($tablename);
                $q->QUERY_SQL($sql, "artica_events");
            }
        } else {
            if ($GLOBALS["VERBOSE"]) {
                echo "{$tablename} (" . count($rows) . " rows)\n";
            }
        }
    }
    $settings = unserialize(base64_decode($sock->GET_INFO("FcronSchedulesParams")));
    if (!is_numeric($settings["max_events"])) {
        $settings["max_events"] = "10000";
    }
    if (count($chkTables) == 0) {
        return;
    }
    while (list($tablename, $rows) = each($chkTables)) {
        $NumRows = $q->COUNT_ROWS("{$tablename}", "artica_events");
        if ($NumRows > $settings["max_events"]) {
            $toDelete = $NumRows - $settings["max_events"];
            $q->QUERY_SQL("DELETE FROM `{$tablename}` ORDER BY zDate LIMIT {$toDelete}", "artica_events");
            if (!$q->ok) {
                if (preg_match("#Got error 134 from storage engine#i", $q->mysql_error)) {
                    $q->QUERY_SQL("REPAIR TABLE `{$tablename}` QUICK", "artica_events");
                    $q->QUERY_SQL("DELETE FROM `{$tablename}` ORDER BY zDate LIMIT {$toDelete}", "artica_events");
                }
                if (!$q->ok) {
                    writelogs("{$q->mysql_error}", __FUNCTION__, __FILE__, __LINE__);
                }
            } else {
                if (!$nooptimize) {
                    $q->QUERY_SQL("OPTIMIZE TABLE `{$tablename}`", "artica_events");
                }
            }
        }
    }
}