$arguments) { add_submenu_page($parent, $arguments['page_title'], $arguments['menu_title'], $capability, wtsec_getRoute($page), $arguments['function']); } add_submenu_page(null, WTSEC_LIBRARY_Localization::lmsg('sign_in'), WTSEC_LIBRARY_Localization::lmsg('sign_in'), 'manage_options', wtsec_getRoute('login'), 'wtsec_login'); add_submenu_page($parent, WTSEC_LIBRARY_Localization::lmsg('logout'), WTSEC_LIBRARY_Localization::lmsg('logout'), 'manage_options', wtsec_getRoute('logout'), 'wtsec_logout'); } else { $capability = 'manage_options'; foreach (wtsec_pages() as $page => $arguments) { add_submenu_page(null, $arguments['page_title'], $arguments['menu_title'], $capability, wtsec_getRoute($page), function () { wp_safe_redirect(wtsec_getUrl('login')); }); } add_submenu_page($parent, WTSEC_LIBRARY_Localization::lmsg('sign_in'), WTSEC_LIBRARY_Localization::lmsg('sign_in'), 'manage_options', wtsec_getRoute('login'), 'wtsec_login'); add_submenu_page(null, WTSEC_LIBRARY_Localization::lmsg('logout'), WTSEC_LIBRARY_Localization::lmsg('logout'), 'manage_options', wtsec_getRoute('logout'), 'wtsec_logout'); } } function dd($vl) { echo '
';
    print_r($vl);
    echo '
'; die(); } function myGrading($score) { if ($score < 0 || $score > 100) return ['grade' => '','color' => '']; $scores = [100 => 'A+', 90 => 'A', 80 => 'A-', 70 => 'B+', 60 => 'B', 50 => 'B-', 35 => 'C+', 20 => 'C', 0 => 'C-' ]; foreach ($scores as $key => $value){ if($score >= $key){ $grade = $value; break; } } $color = ($score >= 80) ? 'green' : ($score >= 50) ? 'orange' : 'red'; return ['grade' => $grade,'color' => $color]; } function convertTimeToReadable($date) { $lang = get_locale(); //enable russian language if ($lang === "ru_RU") { $lang .= ".UTF-8"; setlocale(LC_ALL, $lang); } if(strpos($date, ".") !== false){ $date = substr($date, 0, strpos($date, ".")); } return strftime("%B %e, %Y / %R", strtotime($date." UTC")); } function convertToCurrentTime($date) { $lang = get_locale(); //enable russian language if ($lang === "ru_RU") { $lang .= ".UTF-8"; setlocale(LC_ALL, $lang); } if(strpos($date, ".") !== false){ $date = substr($date, 0, strpos($date, ".")); } $date .= " UTC"; $current_time = strtotime($date); return ['date' => date("Y-m-d", $current_time),'time' => date("H:i:s",$current_time)]; } function wtsec_index_page() { $host = WTSEC_LIBRARY_WT::getOwnSite(); $services = []; if (!empty($host)) { $services = [ "settings" => [ "token" => WTSEC_LIBRARY_App::getToken(), "site_id" => $host['id'], ], "score" => [ "total_score" => 0, "tested_on" => "", "server_ip" => "", "location" => "", "description" => wtsec_locale("score.description"), "information" => "", "grade" => "", ], ]; $score = json_decode(WTSEC_LIBRARY_WT::getScore(), true); if (!empty($score)) { $total_score = round($score['totalScore']); $my_grading = myGrading($total_score); $services["score"] = [ "total_score" => $total_score."%", "tested_on" => convertTimeToReadable($score['date']), "server_ip" => $score['ip'], "location" => $score['country'], "description" => wtsec_locale("score.description"), "information" => wtsec_locale("score.higher_than_percent", ['percent' => $score['ishigherthan']]), "grade" => $my_grading['grade'], "color" => $my_grading['color'], ]; } $checks = WTSEC_LIBRARY_WT::getAllChecks($host['id']); foreach ($checks as $service => $site) { if (empty($site) || !is_array($site)) { continue; } switch ($service) { case "availability": $services["wa"] = [ // "pause" => wtsec_getStatusStartPauseIcon($site['config']['isActive'], $site['config']['id'], $host['id']), "pause" => "", "status" => WTSEC_LIBRARY_WT::getStatusIcon($site['status']), "response_time" => ceil($site['responseTime'] / 1000000) . ' ' . WTSEC_LIBRARY_Localization::lmsg('ms'), "availability" => $site['percent'] . '%', "availability_percent" => $site['percent'], "last_test" => convertTimeToReadable($site['lastTest']['time']), "downtime" => ceil($site['downTime'] / 1000000) . ' ' . WTSEC_LIBRARY_Localization::lmsg('ms'), "description" => WTSEC_LIBRARY_Localization::lmsg('descriptions.availability') ]; break; case "ssl": if ((int)$site['expiryDate'] === 0) { $days_left = 0; } else { $earlier = new DateTime(); $later = new DateTime($site['expiryDate']); $days_left = $later->diff($earlier)->format("%a"); } $services["ssl"] = [ "pause" => "", "information" => wtsec_getInformation($service, $site['status']), "status" => WTSEC_LIBRARY_WT::getStatusIcon($site['status']), "days_left" => $days_left, "issue_date" => convertTimeToReadable($site['issueDate']), "expiry_date" => convertTimeToReadable($site['expiryDate']), "description" => WTSEC_LIBRARY_Localization::lmsg('descriptions.ssl'), "solve_it" => in_array($site['status'],['clean','pending']) ? '' : wtsec_locale('solve_it'), ]; break; case "domain": if ((int)$site['expiredDate'] === 0) { $days_left = 0; } else { $earlier = new DateTime(); $later = new DateTime($site['expiredDate']); $days_left = $later->diff($earlier)->format("%a"); } $services["dec"] = [ "pause" => "", "registrar" => $site['registrar'], "owner" => $site['owner'], "information" => wtsec_getInformation($service, $site['status']), "email" => $site['email'], "status" => WTSEC_LIBRARY_WT::getStatusIcon($site['status']), "days_left" => $days_left, "created" => convertTimeToReadable($site['createdDate']), "expiry_date" => convertTimeToReadable($site['expiredDate']), "description" => WTSEC_LIBRARY_Localization::lmsg('descriptions.domain') ]; break; case "reputation": $count = 0; if ($site['status'] != "clean") { foreach ($site['virusList'] as &$list) { if (!empty($list['virus']['type'])) { $count++; } } } $services["av"] = [ "pause" => "", "status" => WTSEC_LIBRARY_WT::getStatusIcon($site['status']), "time_of_the_last_test" => convertTimeToReadable($site['lastTest']['time']), "blacklists_entries" => $count, "description" => WTSEC_LIBRARY_Localization::lmsg('descriptions.reputation'), "reputation" => $site['status'] === "infected" ? wtsec_locale('bad_reputation') : wtsec_locale('good_reputation'), ]; break; case "maliciousScript": $services["cms"] = [ "pause" => "", "status" => WTSEC_LIBRARY_WT::getStatusIcon($site['status']), "time_of_the_last_test" => $site['lastTest']['time'], "description" => WTSEC_LIBRARY_Localization::lmsg('descriptions.malicious') ]; break; case "deface": $services["dc"] = [ "pause" => "", "status" => WTSEC_LIBRARY_WT::getStatusIcon($site['status']), "time_of_the_last_test" => convertTimeToReadable($site['lastTest']['time']), "number" => $site['count'], "description" => WTSEC_LIBRARY_Localization::lmsg('descriptions.deface') ]; break; case "ports": $services["ps"] = [ "pause" => "", "status" => WTSEC_LIBRARY_WT::getStatusIcon($site['status']), "ip" => $site['ip'], "last_test" => convertTimeToReadable($site['lastTest']['time']), "number" => count($site['tcp']), "tcp" => !empty($site['tcp']) ? implode(",", $site['tcp']) : '', "udp" => "", "description" => WTSEC_LIBRARY_Localization::lmsg('descriptions.port') ]; break; case "firewall": $service = "WAF"; $_service = strtolower($service); $domain = $host['hostname']; $uid = $host['id']; $chart = generateChart($site['chart'], 30); // $status = wtsec_checkStatus($uid, $service); $data = WTSEC_LIBRARY_WT::getFirewall($host['id']); $data = $data['data']['auth']['viewer']['sites']['one']['firewall']; $countryAttacks = getCountryAttacks($data['map'], $chart['count_attacks']); $edges = $data['logs']['edges']; $services["waf"] = [ "pause" => "", "site_address" => $domain, "status" => WTSEC_LIBRARY_WT::getStatusIcon($site['status']), "_status" => $site['status'], "installed_status" => in_array($site['status'], ["not_installed", "error", "down", "not_supported", "not_registered"]) ? false : true, "time_of_the_last_check" => convertTimeToReadable($site['lastTest']['time']), "attacks" => $chart['count_attacks'], "blocking" => $chart['count_blocks'], "non-blocking" => $chart['count_attacks'] - $chart['count_blocks'], "description" => WTSEC_LIBRARY_Localization::lmsg('descriptions.firewall'), "actions" => wtsec_generateButtons($uid, $_service, $service, $site['status'], WTSEC_SITE_URL), "chart" => json_encode($chart['chart'], true), "edges" => $edges, "countryAttacks" => $countryAttacks, ]; break; case "antivirus": $service = "AV"; $_service = strtolower($service); $domain = $host['hostname']; $uid = $host['id']; // $status = wtsec_checkStatus($uid, $service); $services["vc"] = [ "pause" => "", "site_address" => $domain, "status" => WTSEC_LIBRARY_WT::getStatusIcon($site['status']), "installed_status" => in_array($site['status'], ["not_installed", "error", "down", "not_supported", "not_registered"]) ? false : true, "_status" => $site['status'], "signatures" => (int)$site['stats']['infected'], "changes" => (int)$site['stats']['changed'], "scanned" => (int)$site['stats']['scaned'], "deleted" => (int)$site['stats']['deleted'], "list" => $site['stats']["infected"], "actions" => wtsec_generateButtons($uid, $_service, $service, $site['status'], WTSEC_SITE_URL), "description" => WTSEC_LIBRARY_Localization::lmsg('descriptions.antivirus') ]; break; } } //check AM, if not installed , run install $process = "installing"; $check_am_file = wtsec_checkInstalledFile("AM"); $am_installed = $check_am_file["status"]; $am_installed_status = wtsec_app()->get('am_installed'); if (!$am_installed || !$am_installed_status) { $am_is_installed = wtsec_cmd("am_install", "AM", "am", $host['id'], [], WTSEC_SITE_URL); if (!$am_is_installed) { $process = "failed"; wtsec_app()->set('am_installed', false); } else { wtsec_app()->set('am_installed', true); } } elseif ($services["vc"]["_status"] === "not_installed" || $services["waf"]["_status"] === "not_installed") { $process = "installing"; } else { $process = "installed"; } $services["am"] = [ "status" => WTSEC_LIBRARY_WT::getStatusIcon($am_installed ? "working" : "not_installed"), "actions" => wtsec_generateButtons($host['id'], "am", "AM", ["active" => $check_am_file], WTSEC_SITE_URL), "process_status" => $process, "installed" => $am_installed, ]; } wtsec_layout("dashboard", $services); } function getCountryAttacks($map, $countAttacks){ if($map){ $attackKey = array_search(max(array_column($map, 'attacks')), array_column($map, 'attacks')); $map[$attackKey]['percent'] = ($countAttacks) ? round($map[$attackKey]['attacks'] / $countAttacks * 100) : 0; $map[$attackKey]['country'] = wtsec_getCountryName($map[$attackKey]['country']); return $map[$attackKey]; } return ['percent' => 0, 'country' => false]; } function getAttacksMap($map){ $attacks = []; $countries = []; foreach ($map as $value){ $attacks[] = $value['attacks']; $countries[] = wtsec_getCountryName($value['country']); } return ['attacks' => $attacks, 'countries' => $countries]; } function generateChart($charts, $days = 7) { if(is_array($days)) { $beginDate = new DateTime( $days['begin'] ); $endDate = new DateTime( $days['end'] ); $dateDiff = strtotime($days['end'] - strtotime($days['begin'])); $days = floor($dateDiff / (60 * 60 * 24)); } if($days <= 1){ $begin = new DateTime( date('Y-m-d 00:00:00') ); $end = new DateTime( date('Y-m-d 23:59:59') ); $step = 'hour'; } elseif($days <= 31){ $begin = new DateTime( date('Y-m-d', strtotime('-'.($days - 1).' day')) ); $end = new DateTime( date('Y-m-d') ); $step = 'day'; } else { $begin = new DateTime( date('Y-m-01', strtotime('- 11 month')) ); $end = new DateTime( date('Y-m-01', time()) ); $step = 'month'; } $count_attacks = 0; $count_blocks = 0; $c = []; for($i = $begin; $i <= $end; $i->modify('+1 '.$step)){ $c[$i->format('U')] = [ 'date' => ($days <= 1) ? $i->format("Y-m-d H:00:00") : $i->format("Y-m-d"), 'count' => 0, 'attacks' => 0, 'blocked' => 0, ]; } foreach ($charts as $chart) { $d = strtotime($chart['time']); $c[$d]['count'] = $chart['blocked']; $c[$d]['attacks'] = $chart['attacks']; $c[$d]['blocked'] = $chart['blocked']; $count_attacks += $chart['attacks']; $count_blocks += $chart['blocked']; } //unset keys, because the js parser sorting by key in integer $result = []; foreach ($c as $d) { $result[] = $d; } return ['chart' => $result, 'count_attacks' => $count_attacks, 'count_blocks' => $count_blocks]; } function wtsec_getInformation($service, $status) { $information = [ "ssl" => [ WTSEC_LIBRARY_Localization::lmsg("statuses.ok"), WTSEC_LIBRARY_Localization::lmsg("statuses.invalid"), WTSEC_LIBRARY_Localization::lmsg("statuses.expired"), WTSEC_LIBRARY_Localization::lmsg("statuses.expires"), "unknown_status" => WTSEC_LIBRARY_Localization::lmsg("statuses.missing"), ], "domain" => [ WTSEC_LIBRARY_Localization::lmsg("statuses.ok"), WTSEC_LIBRARY_Localization::lmsg("statuses.expires"), "unknown_status" => WTSEC_LIBRARY_Localization::lmsg("statuses.error"), ] ]; return isset($information[$service][$status]) ? $information[$service][$status] : $information[$service]["unknown_status"]; } function wtsec_getStatusStartPauseIcon($status, $config_id, $host_id) { $icon = ''; switch ($status) { case "1": $icon = '
'; break; case "0": $icon = '
'; break; } return $icon; } function wtsec_options_page() { $host = WTSEC_LIBRARY_WT::getOwnSite(); $result = WTSEC_LIBRARY_WT::getOptions($host['id']); $options = []; if (isset($result['data']['userHost']['services'])) { foreach ($result['data']['userHost']['services'] as $service) { $configs = $service['configs'][0]; $options[$service['name']] = ['config_id' => $configs['id'], 'is_active' => $configs['isActive']]; } } $options['host_id'] = $host['id']; wtsec_layout("options", $options); } function wtsec_services_page() { wtsec_layout("services"); } function wtsec_antivirus_page() { $host = WTSEC_LIBRARY_WT::getOwnSite(); $services = []; if (!empty($host)) { $site = WTSEC_LIBRARY_WT::getAntivirus($host['id']); if (isset($site['data']['auth']['viewer']['sites']['one']['antivirus']['log'])) { $site = $site['data']['auth']['viewer']['sites']['one']['antivirus']; $_SESSION['antivirus_endCursor'] = $site['log']['pageInfo']['endCursor']; $_SESSION['antivirus_hasNextPage'] = $site['log']['pageInfo']['hasNextPage']; $service = "AV"; $_service = strtolower($service); $domain = $host['hostname']; $uid = $host['id']; $status = wtsec_checkStatus($uid, $service); $services["vc"] = [ "pause" => "", "site_address" => $domain, "status" => WTSEC_LIBRARY_WT::getStatusIcon($site['status']), "signatures" => (int)$site['stats']['infected'], "changes" => (int)$site['stats']['changed'], "scanned" => (int)$site['stats']['scaned'], "deleted" => (int)$site['stats']['deleted'], "list" => $site["log"]['edges'], "actions" => $buttons = wtsec_generateButtons($uid, $_service, $service, $status, WTSEC_SITE_URL), "description" => WTSEC_LIBRARY_Localization::lmsg('descriptions.antivirus') ]; } } wtsec_layout("antivirus", $services); } function wtsec_firewall_page() { $host = WTSEC_LIBRARY_WT::getOwnSite(); $services = []; if (!empty($host)) { $site = WTSEC_LIBRARY_WT::getFirewall($host['id'],10,null,30); $chart = WTSEC_LIBRARY_WT::getFirewallChart($host['id'], 30); if (isset($site['data']['auth']['viewer']['sites']['one']['firewall']['logs'])) { $logs = $site['data']['auth']['viewer']['sites']['one']['firewall']['logs']; $firewall = $site['data']['auth']['viewer']['sites']['one']['firewall']; $edges = $logs['edges']; $chart = $chart['data']['auth']['viewer']['sites']['one']['firewall']['chart']; $chart = generateChart($chart, 30); $domain = $host['hostname']; $_SESSION['firewall_endCursor'] = $logs['pageInfo']['endCursor']; $_SESSION['firewall_hasNextPage'] = $logs['pageInfo']['hasNextPage']; $countryAttacks = getCountryAttacks($firewall['map'], $chart['count_attacks']); $attacksMap = getAttacksMap($firewall['map']); $services["waf"] = [ "pause" => "", "site_address" => $domain, "status" => WTSEC_LIBRARY_WT::getStatusIcon($firewall['status']), "_status" => $firewall['status'], "installed_status" => in_array($firewall['status'], ["not_installed", "error", "down", "not_supported", "not_registered"]) ? false : true, "time_of_the_last_check" => convertTimeToReadable($firewall['lastTest']['time']), "attacks" => $chart['count_attacks'], "blocking" => $chart['count_blocks'], "non-blocking" => $chart['count_attacks'] - $chart['count_blocks'], "description" => WTSEC_LIBRARY_Localization::lmsg('descriptions.firewall'), "chart" => json_encode($chart['chart'], true), "edges" => $edges, "countryAttacks" => $countryAttacks, "attacksMap" => $attacksMap, ]; } } wtsec_layout("firewall", $services); } /** * ajax load firewall */ function wtsec_ajax_firewall() { $host = WTSEC_LIBRARY_WT::getOwnSite(); $services = []; $post = ($_POST) ? wtsec_clean($_POST):[]; $days = ($post['period']) ? wtsec_period_as_time($post['period']) : 7; if (!empty($host)) { if(!$_SESSION['firewall_endCursor'] || $post['filter'] == 'period_filter') $_SESSION['firewall_endCursor'] = null; $site = WTSEC_LIBRARY_WT::getFirewall($host['id'],10, $_SESSION['firewall_endCursor'], $days); if (isset($site['data']['auth']['viewer']['sites']['one']['firewall']['logs'])) { $logs = $site['data']['auth']['viewer']['sites']['one']['firewall']['logs']; $services["waf"]['edges'] = $logs['edges']; $_SESSION['firewall_endCursor'] = $logs['pageInfo']['endCursor']; $_SESSION['firewall_hasNextPage'] = $logs['pageInfo']['hasNextPage']; } } wtsec_layout_part("_firewall_lazy", $services); wp_die(); } /** * ajax load antivirus */ function wtsec_ajax_antivirus() { $host = WTSEC_LIBRARY_WT::getOwnSite(); $services = []; $post = ($_POST) ? wtsec_clean($_POST):[]; $days = ($post['period']) ? wtsec_period_as_time($post['period']) : 7; if (!empty($host)) { if(!$_SESSION['antivirus_endCursor'] || $post['filter'] == 'period_filter') $_SESSION['antivirus_endCursor'] = null; if($post['event'] || $_SESSION['antivirus_event']){ if($post['event']){ $_SESSION['antivirus_event'] = $post['event']; } $site = WTSEC_LIBRARY_WT::getAntivirus($host['id'],10, $_SESSION['antivirus_endCursor'],$days, $_SESSION['antivirus_event']); } else { $site = WTSEC_LIBRARY_WT::getAntivirus($host['id'],10, $_SESSION['antivirus_endCursor'],$days); } if (isset($site['data']['auth']['viewer']['sites']['one']['antivirus']['log'])) { $logs = $site['data']['auth']['viewer']['sites']['one']['antivirus']['log']; $services["vc"]['list'] = $logs['edges']; $_SESSION['antivirus_endCursor'] = $logs['pageInfo']['endCursor']; $_SESSION['antivirus_hasNextPage'] = $logs['pageInfo']['hasNextPage']; } } wtsec_layout_part("_antivirus_lazy", $services); wp_die(); } /** * ajax load chart */ function wtsec_chart_filter() { $days = (int)$_POST['days']; $days = $days ?: 7; $host = WTSEC_LIBRARY_WT::getOwnSite(); $chart = WTSEC_LIBRARY_WT::getFirewallChart($host['id'], $days); $chart = $chart['data']['auth']['viewer']['sites']['one']['firewall']['chart']; $chart = generateChart($chart, $days); $res['chart'] = json_encode($chart['chart'], true); $res['days'] = $days; wtsec_layout_part("_chart_ajax", $res); wp_die(); } /** * ajax load attack map */ function wtsec_map_filter() { $days = (int)$_POST['days']; $days = $days ?: 7; $host = WTSEC_LIBRARY_WT::getOwnSite(); $site = WTSEC_LIBRARY_WT::getFirewall($host['id'],10,null,$days); $firewall = $site['data']['auth']['viewer']['sites']['one']['firewall']; $attacksMap = getAttacksMap($firewall['map']); $res["waf"]['attacksMap'] = $attacksMap; $res['days'] = $days; wtsec_layout_part("_map_view", $res); wp_die(); } function wtsec_color_scheme() { $checked = (bool)$_POST['checked']; if($checked){ WTSEC_LIBRARY_App::_set('color_scheme', 'dark'); echo 'dark'; } else { WTSEC_LIBRARY_App::_set('color_scheme', 'light'); echo 'light'; } wp_die(); } function wtsec_login_form() { if (wtsec_request()->method === "POST") { $result = WTSEC_LIBRARY_WT::auth(wtsec_request()->key); if (isset($result['data']['guest']['apiKeys']['auth']['token']['value'])) { WTSEC_LIBRARY_Session::setNotification("success", WTSEC_LIBRARY_Localization::lmsg('successfully_activated')); $token = $result['data']['guest']['apiKeys']['auth']['token']['value']; WTSEC_LIBRARY_App::login($token); wtsec_app()->set("api_key", wtsec_request()->key); wp_safe_redirect(wtsec_getUrl('dashboard')); exit; } else { WTSEC_LIBRARY_Session::setNotification("error", WTSEC_LIBRARY_Localization::lmsg("form.incorrect")); } } wp_safe_redirect(wtsec_getUrl('login')); } function wtsec_cmd_ajax() { $service = strtoupper(wtsec_request()->service); $_service = strtolower(wtsec_request()->service); $uid = wtsec_request()->uid; $cmd = wtsec_request()->cmd; $status = wtsec_checkStatus($uid, $service); if (stripos($cmd, "install") === false) { wtsec_cmd($cmd, $service, $_service, $uid, $status, WTSEC_SITE_URL); wp_safe_redirect(wp_get_referer()); } else { $redirect = wtsec_getUrl("dashboard"); $form_url = wp_nonce_url(admin_url('admin-post.php?cmd=' . $cmd . '&action=ajax_cmd&service=' . $service . '&uid=' . $uid), "ajax_cmd"); if (wtsec_filesystem_init($form_url, '', false, false)) { wtsec_cmd($cmd, $service, $_service, $uid, $status, WTSEC_SITE_URL); wp_safe_redirect($redirect); } } } function wtsec_login() { require_once WTSEC_PLUGIN_PATH . "includes/login.php"; } function wtsec_logout() { WTSEC_LIBRARY_App::logout(); } function wtsec_layout_part($template, $arguments = []) { wp_register_script( 'ajaxHandle', get_template_directory() . 'PATH TO YOUR JS FILE', array(), false, true ); wp_enqueue_script( 'ajaxHandle' ); wp_localize_script( 'ajaxHandle', 'ajax_object', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) ); require WTSEC_PLUGIN_PATH . "includes/components/" . $template . ".php"; } function wtsec_layout($template, $arguments = [], $faq = "faq") { $body = WTSEC_PLUGIN_PATH . "includes/" . $template . ".php"; $faq = WTSEC_PLUGIN_PATH . "includes/" . $faq . ".php"; require_once WTSEC_PLUGIN_PATH . "includes/layout.php"; } function wtsec_ajax_changeStatus() { if (wtsec_request()->method === "POST") { $host_id = wtsec_request()->host_id; $config_id = wtsec_request()->config_id; $result = WTSEC_LIBRARY_WT::changeStatus($config_id, $host_id); echo json_encode($result); } wp_die(); } function wtsec_changeStatus() { if (wtsec_request()->method === "POST") { $host_id = wtsec_request()->host_id; $config_id = wtsec_request()->config_id; WTSEC_LIBRARY_WT::changeStatus($config_id, $host_id); } wp_safe_redirect(wp_get_referer()); } function wtsec_page($page) { return wtsec_pages()[$page]; } function wtsec_clean($data) { if (is_array($data)) { foreach ($data as $key => $value) { unset($data[$key]); $data[wtsec_clean($key)] = wtsec_clean($value); } } else { $data = htmlspecialchars(strip_tags($data), ENT_COMPAT, 'UTF-8'); } return $data; } function wtsec_period_as_time($period){ $end = $period[1] ?: $period[0]; $array['begin'] = strtotime(date('d-m-Y 00:00:00',strtotime($period[0]))); $array['end'] = strtotime(date('d-m-Y 23:59:59',strtotime($end))); return $array; } function wtsec_getUrl($page) { return admin_url('admin.php?page=' . WTSEC_PAGE_PREFIX . $page); } function wtsec_getRoute($page) { return WTSEC_PAGE_PREFIX . $page; } function wtsec_pages() { return [ // "options" => [ // "page_title" => WTSEC_LIBRARY_Localization::lmsg('options'), // "menu_title" => WTSEC_LIBRARY_Localization::lmsg('options'), // "function" => "wtsec_options_page", // ], "services" => [ "page_title" => WTSEC_LIBRARY_Localization::lmsg('services'), "menu_title" => WTSEC_LIBRARY_Localization::lmsg('services'), "function" => "wtsec_services_page", ], "vc" => [ "page_title" => WTSEC_LIBRARY_Localization::lmsg('remote_antivirus'), "menu_title" => WTSEC_LIBRARY_Localization::lmsg('remote_antivirus'), "function" => "wtsec_antivirus_page", "vc_action" => "vc-action", "vc_function" => "wtsec_vc_function" ], "waf" => [ "page_title" => WTSEC_LIBRARY_Localization::lmsg('firewall'), "menu_title" => WTSEC_LIBRARY_Localization::lmsg('firewall'), "function" => "wtsec_firewall_page", "vc_action" => "firewall-action", "vc_function" => "wtsec_firewall_function" ], ]; } function wtsec_getCountryName($key){ $countries = [ 'AD' => 'Andorra', 'AE' => 'United Arab Emirates', 'AF' => 'Afghanistan', 'AG' => 'Antigua and Barbuda', 'AI' => 'Anguilla', 'AL' => 'Albania', 'AM' => 'Armenia', 'AN' => 'Netherlands Antilles', 'AO' => 'Angola', 'AP' => 'Asia/Pacific Region', 'AQ' => 'Antarctica', 'AR' => 'Argentina', 'AS' => 'American Samoa', 'AT' => 'Austria', 'AU' => 'Australia', 'AW' => 'Aruba', 'AZ' => 'Azerbaijan', 'BA' => 'Bosnia and Herz.', 'BB' => 'Barbados', 'BD' => 'Bangladesh', 'BE' => 'Belgium', 'BF' => 'Burkina Faso', 'BG' => 'Bulgaria', 'BH' => 'Brunei', 'BI' => 'Burundi', 'BJ' => 'Benin', 'BM' => 'Bermuda', 'BN' => 'Brunei Darussalam', 'BO' => 'Bolivia', 'BR' => 'Brazil', 'BS' => 'Bahamas', 'BT' => 'Bhutan', 'BV' => 'Bouvet Island', 'BW' => 'Botswana', 'BY' => 'Belarus', 'BZ' => 'Belize', 'CA' => 'Canada', 'CC' => 'Cocos (Keeling) Islands', 'CD' => 'Dem. Rep. Congo', 'CF' => 'Central African Rep.', 'CG' => 'Congo', 'CH' => 'Switzerland', 'CI' => 'Côte d\'Ivoire', 'CK' => 'Cook Islands', 'CL' => 'Chile', 'CM' => 'Cameroon', 'CN' => 'China', 'CO' => 'Colombia', 'CR' => 'Costa Rica', 'CS' => 'Serbia', 'CU' => 'Cuba', 'CV' => 'Cape Verde', 'CX' => 'Christmas Island', 'CY' => 'Cyprus', 'CZ' => 'Czech Rep.', 'DE' => 'Germany', 'DJ' => 'Djibouti', 'DK' => 'Denmark', 'DM' => 'Dominica', 'DO' => 'Dominican Rep.', 'DZ' => 'Algeria', 'EC' => 'Ecuador', 'EE' => 'Estonia', 'EG' => 'Egypt', 'EH' => 'W. Sahara', 'ER' => 'Eritrea', 'ES' => 'Spain', 'ET' => 'Ethiopia', 'EU' => 'Europe', 'FI' => 'Finland', 'FJ' => 'Fiji', 'FK' => 'Falkland Is.', 'FM' => 'Micronesia, Federated States of', 'FO' => 'Faroe Islands', 'FR' => 'France', 'FX' => 'France, Metropolitan', 'GA' => 'Gabon', 'GB' => 'United Kingdom', 'GD' => 'Grenada', 'GE' => 'Georgia', 'GF' => 'French Guiana', 'GH' => 'Ghana', 'GI' => 'Gibraltar', 'GL' => 'Greenland', 'GM' => 'Gambia', 'GN' => 'Guinea', 'GP' => 'Guadeloupe', 'GQ' => 'Eq. Guinea', 'GR' => 'Greece', 'GS' => 'South Georgia and the South Sandwich Islands', 'GT' => 'Guatemala', 'GU' => 'Guam', 'GW' => 'Guinea-Bissau', 'GY' => 'Guyana', 'HK' => 'Hong Kong', 'HM' => 'Heard Island and McDonald Islands', 'HN' => 'Honduras', 'HR' => 'Croatia', 'HT' => 'Haiti', 'HU' => 'Hungary', 'ID' => 'Indonesia', 'IE' => 'Ireland', 'IL' => 'Israel', 'IN' => 'India', 'IO' => 'British Indian Ocean Territory', 'IQ' => 'Iraq', 'IR' => 'Iran', 'IS' => 'Iceland', 'IT' => 'Italy', 'JM' => 'Jamaica', 'JO' => 'Jordan', 'JP' => 'Japan', 'KE' => 'Kenya', 'KG' => 'Kyrgyzstan', 'KH' => 'Cambodia', 'KI' => 'Kiribati', 'KM' => 'Comoros', 'KN' => 'Saint Kitts and Nevis', 'KP' => 'Dem. Rep. Korea', 'KR' => 'Korea', 'KW' => 'Kuwait', 'KY' => 'Cayman Islands', 'KZ' => 'Kazakhstan', 'LA' => 'Lao PDR', 'LB' => 'Lebanon', 'LC' => 'Saint Lucia', 'LI' => 'Liechtenstein', 'LK' => 'Sri Lanka', 'LR' => 'Liberia', 'LS' => 'Lesotho', 'LT' => 'Lithuania', 'LU' => 'Luxembourg', 'LV' => 'Latvia', 'LY' => 'Libya', 'MA' => 'Morocco', 'MC' => 'Monaco', 'MD' => 'Moldova', 'MG' => 'Madagascar', 'MH' => 'Marshall Islands', 'MK' => 'Macedonia', 'ML' => 'Mali', 'MM' => 'Myanmar', 'MN' => 'Mongolia', 'MO' => 'Macau', 'MP' => 'Northern Mariana Islands', 'MQ' => 'Martinique', 'MR' => 'Mauritania', 'MS' => 'Montserrat', 'MT' => 'Malta', 'MU' => 'Mauritius', 'MV' => 'Maldives', 'MW' => 'Malawi', 'MX' => 'Mexico', 'MY' => 'Malaysia', 'MZ' => 'Mozambique', 'NA' => 'Namibia', 'NC' => 'New Caledonia', 'NE' => 'Niger', 'NF' => 'Norfolk Island', 'NG' => 'Nigeria', 'NI' => 'Nicaragua', 'NL' => 'Netherlands', 'NO' => 'Norway', 'NP' => 'Nepal', 'NR' => 'Nauru', 'NU' => 'Niue', 'NZ' => 'New Zealand', 'OM' => 'Oman', 'PA' => 'Panama', 'PE' => 'Peru', 'PF' => 'French Polynesia', 'PG' => 'Papua New Guinea', 'PH' => 'Philippines', 'PK' => 'Pakistan', 'PL' => 'Poland', 'PM' => 'Saint Pierre and Miquelon', 'PN' => 'Pitcairn Islands', 'PR' => 'Puerto Rico', 'PS' => 'Palestine', 'PT' => 'Portugal', 'PW' => 'Palau', 'PY' => 'Paraguay', 'QA' => 'Qatar', 'RE' => 'Reunion', 'RO' => 'Romania', 'RU' => 'Russia', 'RW' => 'Rwanda', 'SA' => 'Saudi Arabia', 'SB' => 'Solomon Is.', 'SC' => 'Seychelles', 'SD' => 'Sudan', 'SE' => 'Sweden', 'SG' => 'Singapore', 'SH' => 'Saint Helena', 'SI' => 'Slovenia', 'SJ' => 'Svalbard and Jan Mayen', 'SK' => 'Slovakia', 'SL' => 'Sierra Leone', 'SM' => 'San Marino', 'SN' => 'Senegal', 'SO' => 'Somalia', 'SR' => 'Suriname', 'ST' => 'Sao Tome and Principe', 'SV' => 'El Salvador', 'SY' => 'Syria', 'SZ' => 'Swaziland', 'TC' => 'Turks and Caicos Islands', 'TD' => 'Chad', 'TF' => 'French Southern Territories', 'TG' => 'Togo', 'TH' => 'Thailand', 'TJ' => 'Tajikistan', 'TK' => 'Tokelau', 'TM' => 'Turkmenistan', 'TN' => 'Tunisia', 'TO' => 'Tonga', 'TP' => 'East Timor', 'TR' => 'Turkey', 'TT' => 'Trinidad and Tobago', 'TV' => 'Tuvalu', 'TW' => 'Taiwan', 'TZ' => 'Tanzania', 'UA' => 'Ukraine', 'UG' => 'Uganda', 'UM' => 'United States Minor Outlying Islands', 'US' => 'United States', 'UY' => 'Uruguay', 'UZ' => 'Uzbekistan', 'VA' => 'Holy See (Vatican City State)', 'VC' => 'Saint Vincent and the Grenadines', 'VE' => 'Venezuela', 'VG' => 'Virgin Islands, British', 'VI' => 'Virgin Islands, U.S.', 'VN' => 'Vietnam', 'VU' => 'Vanuatu', 'WF' => 'Wallis and Futuna', 'WS' => 'Samoa', 'YE' => 'Yemen', 'YT' => 'Mayotte', 'ZA' => 'South Africa', 'ZM' => 'Zambia', 'ZR' => 'Zaire', 'ZW' => 'Zimbabwe', ]; return $countries[$key]; }