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; }
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; } }
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()); }
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++; } }
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"); } } } } }