Version Description
- Enabled the Brute-Force protection option directly from the Settings page.
- Fixed window position to auto-adjust on small screens.
Download this release
Release Info
Developer | scheeeli |
Plugin | Anti-Malware Security and Brute-Force Firewall |
Version | 4.14.50 |
Comparing to | |
See all releases |
Code changes from version 4.14.47 to 4.14.50
- images/index.php +69 -50
- index.php +417 -243
- languages/gotmls.pot +76 -36
- readme.txt +12 -5
- safe-load/index.php +1 -1
images/index.php
CHANGED
@@ -16,7 +16,7 @@ if (isset($_SERVER["SCRIPT_FILENAME"]) && __FILE__ == $_SERVER["SCRIPT_FILENAME"
|
|
16 |
@error_reporting(0);
|
17 |
|
18 |
define("GOTMLS_plugin_dir", "gotmls");
|
19 |
-
define("GOTMLS_Version", "4.14.
|
20 |
define("GOTMLS_require_version", "3.0");
|
21 |
define("GOTMLS_Failed_to_list_LANGUAGE", __("Failed to list files in directory!",'gotmls'));
|
22 |
define("GOTMLS_Run_Complete_Scan_LANGUAGE", __("Run Complete Scan",'gotmls'));
|
@@ -32,6 +32,9 @@ define("GOTMLS_Plugin_Updates_LANGUAGE", __("Plugin Updates for WP",'gotmls'));
|
|
32 |
define("GOTMLS_Searching_updates_LANGUAGE", __("Searching for updates ...",'gotmls'));
|
33 |
define("GOTMLS_Definition_Updates_LANGUAGE", __("Definition Updates",'gotmls'));
|
34 |
define("GOTMLS_Please_donate_LANGUAGE", __("Please make a donation for the use of this wonderful feature!",'gotmls'));
|
|
|
|
|
|
|
35 |
define("GOTMLS_update_images_path", "/wp-content/plugins/update/images/");
|
36 |
define("GOTMLS_siteurl", get_option("siteurl"));
|
37 |
if (isset($_SERVER["DOCUMENT_ROOT"]) && strpos($_SERVER["DOCUMENT_ROOT"], GOTMLS_local_images_path) === 0)
|
@@ -39,16 +42,16 @@ if (isset($_SERVER["DOCUMENT_ROOT"]) && strpos($_SERVER["DOCUMENT_ROOT"], GOTMLS
|
|
39 |
else
|
40 |
define("GOTMLS_images_path", GOTMLS_siteurl.str_replace("update", basename(dirname(GOTMLS_local_images_path)), GOTMLS_update_images_path));
|
41 |
define("GOTMLS_installation_key", md5(GOTMLS_siteurl));
|
42 |
-
|
43 |
-
|
44 |
-
|
|
|
45 |
$GOTMLS_loop_execution_time = 60;
|
46 |
$GOTMLS_chmod_file = (0644);
|
47 |
$GOTMLS_chmod_dir = (0755);
|
48 |
$GOTMLS_file_contents = "";
|
49 |
$GOTMLS_new_contents = "";
|
50 |
$GOTMLS_onLoad = "";
|
51 |
-
$GOTMLS_default_ext = "ieonly.";
|
52 |
$GOTMLS_encode = '/[\?\-a-z\: \.\=\/A-Z\&\_]/';
|
53 |
$GOTMLS_threat_files = array("htaccess"=>".htaccess","timthumb"=>"thumb.php");
|
54 |
$GOTMLS_core_files = array("wp_login"=>"/wp-login.php");
|
@@ -79,7 +82,9 @@ $GOTMLS_total_percent = 0;
|
|
79 |
$GOTMLS_HeadersError = "";
|
80 |
function GOTMLS_admin_notices() {
|
81 |
global $GOTMLS_HeadersError;
|
82 |
-
|
|
|
|
|
83 |
echo $GOTMLS_HeadersError;
|
84 |
}
|
85 |
|
@@ -107,11 +112,11 @@ function GOTMLS_array_replace_recursive($array1 = array()) {
|
|
107 |
|
108 |
function GOTMLS_update_scan_log($scan_log) {
|
109 |
if (is_array($scan_log)) {
|
110 |
-
$GLOBALS["GOTMLS"] = GOTMLS_array_replace_recursive($GLOBALS["GOTMLS"], $scan_log);
|
111 |
-
if (isset($GLOBALS["GOTMLS"]["scan"]["percent"]) && is_numeric($GLOBALS["GOTMLS"]["scan"]["percent"]) && ($GLOBALS["GOTMLS"]["scan"]["percent"] >= 100))
|
112 |
-
$GLOBALS["GOTMLS"]["scan"]["finish"] = time();
|
113 |
-
if (isset($GLOBALS["GOTMLS"]["scan"]))
|
114 |
-
update_option('GOTMLS_scan_log/'.(isset($_SERVER["REMOTE_ADDR"])?$_SERVER["REMOTE_ADDR"]:"0.0.0.0").'/'.$GLOBALS["
|
115 |
}
|
116 |
}
|
117 |
|
@@ -223,7 +228,7 @@ if (isset($_SESSION["GOTMLS_debug"])){ $file_time = round(microtime(true) - $_SE
|
|
223 |
}
|
224 |
|
225 |
function GOTMLS_scanfile($file) {
|
226 |
-
global $GOTMLS_core_files, $wp_version, $
|
227 |
$GOTMLS_threats_found = array();
|
228 |
$found = false;
|
229 |
$threat_link = "";
|
@@ -250,7 +255,7 @@ function GOTMLS_scanfile($file) {
|
|
250 |
}
|
251 |
}
|
252 |
$GOTMLS_new_contents = $GOTMLS_file_contents;
|
253 |
-
if (isset($GLOBALS["GOTMLS"]["settings"]["check_custom"]) && strlen($GLOBALS["GOTMLS"]["settings"]["check_custom"]) && isset($_GET['eli']) && substr($GLOBALS["GOTMLS"]["settings"]["check_custom"], 0, 1) == '/' && ($found = GOTMLS_check_threat($GLOBALS["GOTMLS"]["settings"]["check_custom"])))
|
254 |
$className = "known";
|
255 |
else {
|
256 |
if (isset($_SESSION["GOTMLS_debug"])){ $_SESSION["GOTMLS_debug"]["file"] = $file;
|
@@ -258,7 +263,7 @@ if (isset($_SESSION["GOTMLS_debug"])){ $_SESSION["GOTMLS_debug"]["file"] = $fi
|
|
258 |
foreach ($GOTMLS_threat_levels as $threat_level) {
|
259 |
if (isset($_SESSION["GOTMLS_debug"])){ $_SESSION["GOTMLS_debug"]["threat_level"] = $threat_level;
|
260 |
$_SESSION["GOTMLS_debug"]["last"]["threat_level"] = microtime(true);}
|
261 |
-
if (in_array($threat_level, $GLOBALS["GOTMLS"]["settings"]["check"]) && !$found && isset($GOTMLS_definitions_array[$threat_level]) && (!array_key_exists($threat_level,$GOTMLS_core_files) || (substr($file."e", (-1 * strlen($GOTMLS_core_files[$threat_level]."e"))) == $GOTMLS_core_files[$threat_level]."e")) && (!array_key_exists($threat_level,$GOTMLS_threat_files) || ((GOTMLS_get_ext($file) == "gotmls" && isset($_GET["eli"]) && $_GET["eli"] == "quarantine")?(substr(GOTMLS_decode(array_pop(explode(".", '.'.substr($file, strlen(dirname($file))+1, -7))))."e", (-1 * strlen($GOTMLS_threat_files[$threat_level]."e"))) == $GOTMLS_threat_files[$threat_level]."e"):(substr($file."e", (-1 * strlen($GOTMLS_threat_files[$threat_level]."e"))) == $GOTMLS_threat_files[$threat_level]."e"))) && ($found = GOTMLS_check_threat($GOTMLS_definitions_array[$threat_level],$file)))
|
262 |
$className = $threat_level;
|
263 |
}
|
264 |
if (isset($_SESSION["GOTMLS_debug"])){ $file_time = round(microtime(true) - $_SESSION["GOTMLS_debug"]["last"]["total"], 5);
|
@@ -284,7 +289,7 @@ if (isset($_SESSION["GOTMLS_debug"])){ $file_time = round(microtime(true) - $_
|
|
284 |
$threat_link = '<a target="GOTMLS_iFrame" href="'.GOTMLS_script_URI.'&GOTMLS_scan='.$clean_file.'" id="list_'.$clean_file.'" onclick="loadIframe(\''.str_replace("\"", """, '<div style="float: left;">Examine File ... </div><div style="overflow: hidden; position: relative; height: 20px;"><div style="position: absolute; right: 0px; text-align: right; width: 9000px;">'.GOTMLS_strip4java($file)).'</div></div>\');" class="GOTMLS_plugin">';
|
285 |
if (isset($_POST["GOTMLS_fix"]) && is_array($_POST["GOTMLS_fix"]) && in_array($clean_file, $_POST["GOTMLS_fix"])) {
|
286 |
$file_date = explode(".", array_pop(GOTMLS_explode_dir($file)));
|
287 |
-
if (GOTMLS_get_ext($file) == "gotmls" && GOTMLS_trailingslashit($
|
288 |
if ($_POST["GOTMLS_fixing"] > 1 && @unlink($file))
|
289 |
$GOTMLS_file_contents = "";
|
290 |
elseif (count($file_date) > 1 && $GOTMLS_new_contents = @file_get_contents($file))
|
@@ -336,7 +341,7 @@ if (isset($_SESSION["GOTMLS_debug"])){ $file_time = round(microtime(true) - $_
|
|
336 |
return GOTMLS_return_threat($className, $imageFile, $file, str_replace("GOTMLS_plugin", "GOTMLS_plugin $className", $threat_link));
|
337 |
} elseif (isset($_POST["GOTMLS_fix"]) && is_array($_POST["GOTMLS_fix"]) && in_array($clean_file, $_POST["GOTMLS_fix"])) {
|
338 |
$file_date = explode(".", array_pop(GOTMLS_explode_dir($file)));
|
339 |
-
if (GOTMLS_get_ext($file) == "gotmls" && GOTMLS_trailingslashit($
|
340 |
if ($_POST["GOTMLS_fixing"] > 1 && @unlink($file)) {
|
341 |
$GOTMLS_file_contents = "";
|
342 |
$msg = __("Deleted!",'gotmls');
|
@@ -407,13 +412,27 @@ function GOTMLS_decode($encoded_string) {
|
|
407 |
return "Cannot decode: $encoded_string";
|
408 |
}
|
409 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
410 |
function GOTMLS_return_threat($className, $imageFile, $fileName, $link = "") {
|
411 |
global $GOTMLS_image_alt;
|
412 |
-
$fileNameJS = GOTMLS_strip4java(str_replace(dirname($GLOBALS["GOTMLS"]["scan"]["dir"]), "...", $fileName));
|
413 |
$fileName64 = GOTMLS_encode($fileName);
|
414 |
$li_js = "/*-->*"."/";
|
415 |
if ($className != "scanned")
|
416 |
-
$li_js .= "\n$className++;\ndivx=document.getElementById('found_$className');\nif (divx) {\n\tvar newli = document.createElement('li');\n\tnewli.innerHTML='<img src=\"".GOTMLS_images_path.$imageFile.".gif\" height=16 width=16 alt=\"".$GOTMLS_image_alt[$imageFile]."\" style=\"float: left;\" id=\"$imageFile"."_$fileName64\">".GOTMLS_strip4java($link).$fileNameJS.($link?"</a>';\n\tdivx.display='block
|
417 |
if ($className == "errors")
|
418 |
$li_js .= "\ndivx=document.getElementById('wait_$fileName64');\nif (divx) {\n\tdivx.src='".GOTMLS_images_path."blocked.gif';\n\tdirerrors++;\n}";
|
419 |
elseif (is_file($fileName))
|
@@ -443,30 +462,29 @@ function GOTMLS_explode_dir($dir, $pre = '') {
|
|
443 |
}
|
444 |
|
445 |
function GOTMLS_quarantine($file) {
|
446 |
-
|
447 |
-
if (!isset($GOTMLS_quarantine_dir)) {
|
448 |
$upload = wp_upload_dir();
|
449 |
$err403 = '<html><head><title>403 Forbidden</title></head><body><h1>Forbidden</h1><p>You don\'t have permission to access this directory.</p></body></html>';
|
450 |
-
$
|
451 |
-
if (!is_dir($
|
452 |
-
$
|
453 |
if (is_file(GOTMLS_trailingslashit($upload['basedir']).'.htaccess') && file_get_contents(GOTMLS_trailingslashit($upload['basedir']).'.htaccess') == 'Options -Indexes')
|
454 |
if (!@unlink(GOTMLS_trailingslashit($upload['basedir']).'.htaccess'))
|
455 |
@GOTMLS_file_put_contents(GOTMLS_trailingslashit($upload['basedir']).'.htaccess', '');
|
456 |
-
if (!is_file(GOTMLS_trailingslashit($
|
457 |
-
@GOTMLS_file_put_contents(GOTMLS_trailingslashit($
|
458 |
if (!is_file(GOTMLS_trailingslashit($upload['basedir']).'index.php'))
|
459 |
@GOTMLS_file_put_contents(GOTMLS_trailingslashit($upload['basedir']).'index.php', $err403);
|
460 |
-
if (!is_file(GOTMLS_trailingslashit($
|
461 |
-
@GOTMLS_file_put_contents(GOTMLS_trailingslashit($
|
462 |
}
|
463 |
-
return GOTMLS_trailingslashit($
|
464 |
}
|
465 |
|
466 |
function GOTMLS_update_status($status, $percent = -1) {
|
467 |
-
if (!(isset($GLOBALS["GOTMLS"]["scan"]["start"]) && is_numeric($GLOBALS["GOTMLS"]["scan"]["start"])))
|
468 |
-
$GLOBALS["GOTMLS"]["scan"]["start"] = time();
|
469 |
-
$microtime = ceil(time()-$GLOBALS["GOTMLS"]["scan"]["start"]);
|
470 |
GOTMLS_update_scan_log(array("scan" => array("microtime" => $microtime, "percent" => $percent)));
|
471 |
return "/*-->*"."/\nupdate_status('".GOTMLS_strip4java($status)."', $microtime, $percent);\n/*<!--*"."/";
|
472 |
}
|
@@ -487,12 +505,12 @@ function GOTMLS_flush($tag = "") {
|
|
487 |
}
|
488 |
|
489 |
function GOTMLS_readdir($dir, $current_depth = 1) {
|
490 |
-
global $
|
491 |
-
if ($dir != $
|
492 |
@set_time_limit($GOTMLS_loop_execution_time);
|
493 |
$entries = GOTMLS_getfiles($dir);
|
494 |
if (is_array($entries)) {
|
495 |
-
echo GOTMLS_return_threat("dirs", "wait", $dir).GOTMLS_update_status(sprintf(__("Preparing %s",'gotmls'), str_replace(dirname($GLOBALS["GOTMLS"]["scan"]["dir"]), "...", $dir)), $GOTMLS_total_percent);
|
496 |
$files = array();
|
497 |
$directories = array();
|
498 |
foreach ($entries as $entry) {
|
@@ -511,7 +529,7 @@ function GOTMLS_readdir($dir, $current_depth = 1) {
|
|
511 |
$GOTMLS_dirs_at_depth[$current_depth] = count($directories);
|
512 |
$GOTMLS_dir_at_depth[$current_depth] = 0;
|
513 |
} else
|
514 |
-
$GOTMLS_scanfiles[GOTMLS_encode($dir)] = GOTMLS_strip4java(str_replace(dirname($GLOBALS["GOTMLS"]["scan"]["dir"]), "...", $dir));
|
515 |
foreach ($directories as $directory) {
|
516 |
$path = GOTMLS_trailingslashit($dir).$directory;
|
517 |
if (isset($_REQUEST["scan_depth"]) && is_numeric($_REQUEST["scan_depth"]) && ($_REQUEST["scan_depth"] != $current_depth) && !in_array($directory, $GOTMLS_skip_dirs)) {
|
@@ -524,7 +542,7 @@ function GOTMLS_readdir($dir, $current_depth = 1) {
|
|
524 |
}
|
525 |
if ($_REQUEST["scan_type"] == "Quick Scan") {
|
526 |
$echo = "";
|
527 |
-
echo GOTMLS_update_status(sprintf(__("Scanning %s",'gotmls'), str_replace(dirname($GLOBALS["GOTMLS"]["scan"]["dir"]), "...", $dir)), $GOTMLS_total_percent);
|
528 |
GOTMLS_flush("script");
|
529 |
foreach ($files as $file)
|
530 |
echo GOTMLS_check_file(GOTMLS_trailingslashit($dir).$file);
|
@@ -541,7 +559,7 @@ function GOTMLS_readdir($dir, $current_depth = 1) {
|
|
541 |
echo "$GOTMLS_total_percent\n";
|
542 |
}
|
543 |
$GOTMLS_total_percent = floor($GOTMLS_total_percent * 100);
|
544 |
-
echo GOTMLS_update_status(sprintf(__("Scanned %s",'gotmls'), str_replace(dirname($GLOBALS["GOTMLS"]["scan"]["dir"]), "...", $dir)), $GOTMLS_total_percent);
|
545 |
}
|
546 |
GOTMLS_flush("script");
|
547 |
}
|
@@ -572,7 +590,7 @@ if (!function_exists('ur1encode')) { function ur1encode($url) {
|
|
572 |
}}
|
573 |
|
574 |
function GOTMLS_strip4java($item) {
|
575 |
-
return preg_replace("/\\\\/", "\\\\\\\\", preg_replace("/
|
576 |
}
|
577 |
|
578 |
function GOTMLS_error_link($errorTXT, $file = "", $class = "errors") {
|
@@ -601,7 +619,7 @@ function GOTMLS_check_file($file) {
|
|
601 |
try {
|
602 |
echo @GOTMLS_scanfile($file);
|
603 |
} catch (Exception $e) {
|
604 |
-
die("//Exception:"
|
605 |
}
|
606 |
}
|
607 |
echo "/*-->*"."/\ndocument.getElementById('status_text').innerHTML='Checked ".GOTMLS_strip4java($file)."';\n/*<!--*"."/";
|
@@ -609,7 +627,7 @@ function GOTMLS_check_file($file) {
|
|
609 |
|
610 |
function GOTMLS_scandir($dir) {
|
611 |
global $GOTMLS_skip_ext;
|
612 |
-
echo "/*<!--*"."/".GOTMLS_update_status(sprintf(__("Scanning %s",'gotmls'), str_replace(dirname($GLOBALS["GOTMLS"]["scan"]["dir"]), "...", $dir)));
|
613 |
GOTMLS_flush();
|
614 |
$li_js = "/*-->*"."/\nscanNextDir(-1);\n/*<!--*"."/";
|
615 |
if (isset($_GET["GOTMLS_skip_dir"]) && $dir == GOTMLS_decode($_GET["GOTMLS_skip_dir"])) {
|
@@ -659,7 +677,7 @@ function GOTMLS_scandir($dir) {
|
|
659 |
} else
|
660 |
echo GOTMLS_return_threat("errors", "blocked", $dir, GOTMLS_error_link(GOTMLS_Failed_to_list_LANGUAGE.' scandir:'.($files===false?' (FALSE)':$files)));
|
661 |
}
|
662 |
-
echo GOTMLS_update_status(sprintf(__("Scanned %s",'gotmls'), str_replace(dirname($GLOBALS["GOTMLS"]["scan"]["dir"]), "...", $dir)));
|
663 |
GOTMLS_update_scan_log(array("scan" => array("finish" => time())));
|
664 |
return $li_js;
|
665 |
}
|
@@ -671,9 +689,9 @@ function GOTMLS_reset_settings($item, $key) {
|
|
671 |
unset($GOTMLS_settings_array[$key]);
|
672 |
}
|
673 |
|
674 |
-
$
|
675 |
-
$
|
676 |
-
$GOTMLS_encode .= substr($
|
677 |
if(!isset($_SERVER["SERVER_NAME"]) || !$_SERVER["SERVER_NAME"]) {
|
678 |
if(!isset($_ENV["SERVER_NAME"]))
|
679 |
getenv("SERVER_NAME");
|
@@ -684,11 +702,12 @@ if(!isset($_SERVER["SERVER_PORT"]) || !$_SERVER["SERVER_PORT"]) {
|
|
684 |
getenv("SERVER_PORT");
|
685 |
$_SERVER["SERVER_PORT"] = $_ENV["SERVER_PORT"];
|
686 |
}
|
687 |
-
$GOTMLS_protocol = "http";
|
688 |
if ((isset($_SERVER["HTTPS"]) && ($_SERVER["HTTPS"] == "on" || $_SERVER["HTTPS"] == 1)) || 'ssl'.$_SERVER["SERVER_PORT"] == 'ssl443')
|
689 |
-
$
|
690 |
-
|
691 |
-
$
|
|
|
|
|
692 |
$definition_version = "A0000";
|
693 |
$GOTMLS_definitions_array = maybe_unserialize(GOTMLS_decode('YToyOntzOjk6InBvdGVudGlhbCI7YToxMTp7czo0OiJldmFsIjthOjI6e2k6MDtzOjU6IkNDSUdHIjtpOjE7czoyNzoiL1teYS16XC8nIl1ldmFsXCguK1wpWztdKi9pIjt9czo5OiJhdXRoX3Bhc3MiO2E6Mjp7aTowO3M6NToiQ0NJR0ciO2k6MTtzOjI0OiIvXCRhdXRoX3Bhc3NbID1cdF0rLis7L2kiO31zOjIxOiJkb2N1bWVudC53cml0ZSBpZnJhbWUiO2E6Mjp7aTowO3M6NToiQ0NJR0ciO2k6MTtzOjUyOiIvZG9jdW1lbnRcLndyaXRlXChbJyJdPGlmcmFtZSAuKzxcL2lmcmFtZT5bJyJdXCk7Ki9pIjt9czoxNToicHJlZ19yZXBsYWNlIC9lIjthOjI6e2k6MDtzOjU6IkNDSUdHIjtpOjE7czo1MDoiL3ByZWdfcmVwbGFjZVsgXHRdKlwoLitbXC9cI1x8XVtpXSplW2ldKlsnIl0uK1wpL2kiO31zOjIwOiJleGVjIHN5c3RlbSBwYXNzdGhydSI7YToyOntpOjA7czo1OiJDQ0lHRyI7aToxO3M6NTg6Ii9cPFw_KC4rPylleGVjXCgoLis_KXN5c3RlbVwoKC4rPylwYXNzdGhydVwoLitmd3JpdGVcKC4rL3MiO31zOjI5OiJFeHRlcm5hbCBSZWRpcmVjdCBSZXdyaXRlUnVsZSI7YToyOntpOjA7czo1OiJDQ1ZFNCI7aToxO3M6MzA6Ii9SZXdyaXRlUnVsZSBbXiBdKyBodHRwXDpcL1wvLyI7fXM6MzU6Im5vIGVycm9yX3JlcG9ydGluZyBsb25nIGxpbmVzIGFsb25lIjthOjI6e2k6MDtzOjU6IkQzNUJhIjtpOjE7czo3OToiLzxcPyhwaHApKltcclxuXHQgXEBdKmVycm9yX3JlcG9ydGluZ1woMFwpOy4rP1thLXowLTlcL1wtXD0nIlwuXF17MjAwMH0uKj9cPz4vaSI7fXM6MjI6InByb3RlY3RlZCBieSBjb3B5cmlnaHQiO2E6Mjp7aTowO3M6NToiRDhNQ3ciO2k6MTtzOjEzNjoiL1wvXCogVGhpcyBmaWxlIGlzIHByb3RlY3RlZCBieSBjb3B5cmlnaHQgbGF3IGFuZCBwcm92aWRlZCB1bmRlciBsaWNlbnNlLiBSZXZlcnNlIGVuZ2luZWVyaW5nIG9mIHRoaXMgZmlsZSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkLiBcKlwvLyI7fXM6MTk6ImEgc3BhbiBjb2xvciBGMUVGRTQiO2E6Mjp7aTowO3M6NToiRDhSQVAiO2k6MTtzOjExODoiL1w8YSBbXlw-XStcPlw8c3BhbiBzdHlsZT0iY29sb3JcOlwjRjFFRkU0OyJcPiguKz8pXDxcL3NwYW5cPlw8XC9hXD5cPHNwYW4gc3R5bGU9ImNvbG9yXDpcI0YxRUZFNDsiXD4oLis_KVw8XC9zcGFuXD4vaSI7fXM6MTc6IlZhcmlhYmxlIEZ1bmN0aW9uIjthOjI6e2k6MDtzOjU6IkU4NTZMIjtpOjE7czo2NzoiLyg8IVxkKVwkW1wkXHtdKlthLXpcLVxfMC05XStbXH0gXHRdKihcW1teXF1dK1xdWyBcdF0qKSpcKC4qP1wpXDsvaSI7fXM6MTE6IlRhZ2dlZCBDb2RlIjthOjI6e2k6MDtzOjU6IkU0TE1HIjtpOjE7czoyNDoiL1wjKFx3KylcIy4rP1wjXC9cMVwjL2lzIjt9fXM6OToid2hpdGVsaXN0IjthOjI6e3M6MzoicGhwIjthOjE3OntpOjA7czo1OiJFN0VNdiI7czozODoiNTg3M2NkMWNlYTYxMDgyMDJkMjEzNDdmMDFmMDRkY2ZPODE3MjgiO3M6NToiRDc1OXAiO3M6Mzk6IjAxMzYzNzI4Yzg0M2ZmOTNlOTZiNjk4M2NlMzhlYmE2TzE5NTYxOCI7czo1OiJENUE4MyI7czozODoiZDVmM2M5Y2FmZjE0ZDU3Yzg2MDhkNzhkYjAwOTRiZTBPNzM2NDMiO3M6NToiRDc1RDkiO3M6Mzg6IjU3YWY0OTgxOGJiYjk0OWRjMGFjNjM4NjczODY1NWJiTzI1ODUyIjtzOjU6IkQ3SkQ5IjtzOjM4OiJkNDk0MDQyNjBkNzlhNGNjMzc1NWMwMGY1NWRlMjA4OU8yNTY2MiI7czo1OiJEOFY4QSI7czozNzoiODY2MWZlMmJmYTU5OTVmNTQ2YTMzMDQ3ZTkwMzg1NmNPMTEzNiI7czo1OiJESUNGQyI7czozODoiODEyNWQ0MmM0YmU1NDNmODc0ZWE1ZjZhMWI1YmRlNTVPMjU4OTQiO3M6NToiRElDRkQiO3M6Mzk6ImVkZGI1ZmRhNzRkNDFkYmRhYzAxODE2NzUzNmQ4ZDUzTzIzMTMzOCI7czo1OiJESUNGRSI7czozODoiYzE1YTRkNWMzODM0NDRiOTVkMjg1NTlmODM0ODExMWRPMjI1ODgiO3M6NToiRTFSMnYiO3M6Mzg6ImUyMDgzOWM1NTlhNjZjN2NmNjI4NjUzYmEyNDg0ZWFlTzI2Mzk1IjtzOjU6IkUxUjJ4IjtzOjM4OiJmMzM4MmVjMTVjMDMwYmQzMmUyOTNmYWYzNDk3ZTI1M08xMTIyNiI7czo1OiJFMjMwQyI7czozNzoiMjhhOTJmNDY0OThkMzJiOWE3NGM1ODQ3Zjc1YzkxMmVPNzM5OSI7czo1OiJFMjMwQyI7czozNzoiZjAwYWFmMDFmZjAyZDU3NTZjMjY3YmNmOTIwZTRjMjhPMTU0MCI7czo1OiJFMkFNZiI7czozODoiNTdjNjQ3ZDkzZmJkNDc4NjhiODdiOTIxYmVlNjNhZjhPMjYzNzYiO3M6NToiRTVFRG8iO3M6Mzk6IjhlMmFmNDg4NmRjODFhNWQ5Mjg5ODY1YmJiODEzZWQxTzE5NTYxNyI7czo1OiJFNUlOUCI7czozNzoiZjgwZDllZjRiN2JmZDllZjU0MmQ5MDg3YTFkYjJhZTlPMjAxMCI7czo1OiJFN0VNdiI7fXM6MjoianMiO2E6Mjk6e2k6MDtzOjU6IkU5RzhqIjtzOjM3OiI1NTRiYzc2YzcwMzUxMTg3ZjRjZTA1ZGRjMDEyYWFlZE80Nzc2IjtzOjU6IkQ2NjdYIjtzOjM3OiI5YTljMTI1ODE0Yjk3MTU5ODJkMjQ2YTFlZTc4MDg0Zk81MzQ1IjtzOjU6IkQ2NjdYIjtzOjM4OiJlMzZhMDg2MTIzNzU2NDEyMjkzMjMxYWVhZDE3ZjI0Zk8zNzYyOSI7czo1OiJENzVBSCI7czozNzoiYTM4YWM1MjY2OTI0OTM4YTRmZjU1MTQzNjljNmI0MGRPNDY3NCI7czo1OiJENzVBSiI7czozNzoiMTA0M2ExZDdkODRlZTU2Zjg4MzFhNjBjZGZjNWRjMjhPNzA3NyI7czo1OiJENzVEUyI7czozODoiNmVjMTUwYjc5ODdjYWFlZjk4YjU5Yzg3YjlmNDcxYmVPMTE4NDIiO3M6NToiRTFSMm4iO3M6Mzg6IjYxNDdjY2VlN2FlZjlkYzBjNmViMTBkOGQ3YjMxMWY5TzcwODgzIjtzOjU6IkUxUjJ3IjtzOjM3OiJiYTMyOTM5NzBlMTNiMDNhMmVhOTJmNWI2YjViZjU0NE8zMzc3IjtzOjU6IkUyMk5xIjtzOjM3OiI2M2IwYWVkOWIwMmY4NzlhNmUwMjk1ZmJlYTdkYjg1NE80NzAyIjtzOjU6IkUyMzBEIjtzOjM3OiJlZjQxODhjYjBiNjBhNzIwMTdmNGM4YTFlODQwYWIxZU8yOTUwIjtzOjU6IkUyNDlMIjtzOjM3OiJmYjhiZjY3ODVlNTVlOWUzOWJlYTU1MjYzNWM0MmE2NE8zMjcwIjtzOjU6IkUyNjBDIjtzOjM5OiJhY2IzMzMyOWI5ZWY4YWFiZDhiZDczMTQyNjgwM2U0ZU8yMzI0ODIiO3M6NToiRTI2MEUiO3M6Mzg6IjZjZWI2NDc1OTI1ODhiY2Y0NjNiZWZkOTQwOGUyN2FkTzEyMDI1IjtzOjU6IkUyNjBIIjtzOjM3OiI1YTMxODI3N2ZlZGY0OTFhMDMwMWUxNzdhOWVmMTBiM080OTA4IjtzOjU6IkUyNjBKIjtzOjM4OiJkYmMzODA4NDczZGVmMDBmY2U0NWZlNTY0ZGM3MmRjYk8xNDcyMCI7czo1OiJFMjYwSyI7czozNzoiYjk4OWE1YmQ4NGY2ZWJjYmMxMzkzZWMwMDNlNmU5OTFPNDk2OSI7czo1OiJFMjdFRyI7czozODoiMDMwYjgzODkzNzZhNDJmZjNkYTE4NmJmNjU4MDYyMTdPMTY1MzEiO3M6NToiRTI5RDIiO3M6Mzc6ImRlZjI1N2RiYjBhYjgwNWM0OTk2ZmQ4YWJiMWE2YjQ5TzY3MTciO3M6NToiRTJINW4iO3M6Mzg6Ijc0ZDkwMzA0OTY4M2U1YmJlYTljY2I3NTQ0YTQyYmNhTzE3NDEzIjtzOjU6IkU1RURxIjtzOjM4OiI2MDNiZDE0Mjk5ZjYxYTczMjliMmQzNTNiMmI1NmMyZk8zNzY4OSI7czo1OiJFNUVEcCI7czozNzoiMDQyNmIzOTc1NGFhNmJjNzY2ZDg5ZWE0YzQxYmJkMDZPMzQ1NyI7czo1OiJFNUVEeCI7czozODoiZWFkYzU4MzI1MTNkNTY3MDg4NGE5NzVjNmRlMTBmMDFPMTk2MTUiO3M6NToiRTdVTUEiO3M6Mzg6IjM4ZGJjYzkyNTUyOTM2ODgxMmY1YzJmYmNiMzg5NjE2TzE0OTY1IjtzOjU6IkU3VU1CIjtzOjM3OiJhMWMxODIyN2U2ZTkzNzk4YzQ5M2FlZDk2ZWU2Y2M4NE8zMjY3IjtzOjU6IkU3VU1CIjtzOjM3OiIwNzgzODhhNjQzMWFhNWIwODM4YTg3MzJkMTg3ZmUyOU84OTEzIjtzOjU6IkU4QUFwIjtzOjM3OiJmM2IxYjI4NDI0MzZmN2EzMTFiMzllNGVmNGI0N2Y1OU80MzUyIjtzOjU6IkU4QkJVIjtzOjM3OiJkNzA5NDA2MTlhOTlkNTU1MTE2MTY3ZDRmYjM5Y2ExNU80Mzk3IjtzOjU6IkU5Q0x4IjtzOjM4OiJjYmRiZmM5MTg0ZDI4YWM1NWY4M2MwYjBkZjQwZmQ0M083OTQxNCI7czo1OiJFOUc4aiI7fX191'));
|
694 |
|
@@ -722,9 +741,9 @@ function GOTMLS_scan_log() {
|
|
722 |
$time = floor($time/$units[$ukeys[$key]]);
|
723 |
if (1 == $time)
|
724 |
$unit = substr($unit, 0, -1);
|
725 |
-
$LastScan .= " and ran for $time $unit"
|
726 |
} else
|
727 |
-
$LastScan .= " and has not finish"
|
728 |
} else
|
729 |
$LastScan = "never started ";
|
730 |
return "Last ".(isset($GOTMLS_scan_log["scan"]["type"])?$GOTMLS_scan_log["scan"]["type"]:"Scan")." $LastScan.";
|
16 |
@error_reporting(0);
|
17 |
|
18 |
define("GOTMLS_plugin_dir", "gotmls");
|
19 |
+
define("GOTMLS_Version", "4.14.50");
|
20 |
define("GOTMLS_require_version", "3.0");
|
21 |
define("GOTMLS_Failed_to_list_LANGUAGE", __("Failed to list files in directory!",'gotmls'));
|
22 |
define("GOTMLS_Run_Complete_Scan_LANGUAGE", __("Run Complete Scan",'gotmls'));
|
32 |
define("GOTMLS_Searching_updates_LANGUAGE", __("Searching for updates ...",'gotmls'));
|
33 |
define("GOTMLS_Definition_Updates_LANGUAGE", __("Definition Updates",'gotmls'));
|
34 |
define("GOTMLS_Please_donate_LANGUAGE", __("Please make a donation for the use of this wonderful feature!",'gotmls'));
|
35 |
+
define("GOTMLS_Automatically_Fix_LANGUAGE", __("Automatically Fix SELECTED Files Now",'gotmls'));
|
36 |
+
define("GOTMLS_Scan_Details_LANGUAGE", __("Scan Details:",'gotmls'));
|
37 |
+
define("GOTMLS_Last_Scan_Status_LANGUAGE", __("Scan Status",'gotmls'));
|
38 |
define("GOTMLS_update_images_path", "/wp-content/plugins/update/images/");
|
39 |
define("GOTMLS_siteurl", get_option("siteurl"));
|
40 |
if (isset($_SERVER["DOCUMENT_ROOT"]) && strpos($_SERVER["DOCUMENT_ROOT"], GOTMLS_local_images_path) === 0)
|
42 |
else
|
43 |
define("GOTMLS_images_path", GOTMLS_siteurl.str_replace("update", basename(dirname(GOTMLS_local_images_path)), GOTMLS_update_images_path));
|
44 |
define("GOTMLS_installation_key", md5(GOTMLS_siteurl));
|
45 |
+
|
46 |
+
$GLOBALS["GOTMLS"] = array("tmp"=>array("mt"=>((isset($_GET["mt"])&&is_numeric($_GET["mt"]))?$_GET["mt"]:microtime(true)), "default_ext"=>"ieonly."));
|
47 |
+
define("GOTMLS_script_URI", preg_replace('/\&(last_)?mt=[0-9\.]+/','', str_replace('&', '&', htmlspecialchars($_SERVER["REQUEST_URI"], ENT_QUOTES))).'&mt='.$GLOBALS["GOTMLS"]["tmp"]["mt"]);
|
48 |
+
$GLOBALS["GOTMLS"]["log"] = get_option('GOTMLS_scan_log/'.(isset($_SERVER["REMOTE_ADDR"])?$_SERVER["REMOTE_ADDR"]:"0.0.0.0").'/'.$GLOBALS["GOTMLS"]["tmp"]["mt"], array());
|
49 |
$GOTMLS_loop_execution_time = 60;
|
50 |
$GOTMLS_chmod_file = (0644);
|
51 |
$GOTMLS_chmod_dir = (0755);
|
52 |
$GOTMLS_file_contents = "";
|
53 |
$GOTMLS_new_contents = "";
|
54 |
$GOTMLS_onLoad = "";
|
|
|
55 |
$GOTMLS_encode = '/[\?\-a-z\: \.\=\/A-Z\&\_]/';
|
56 |
$GOTMLS_threat_files = array("htaccess"=>".htaccess","timthumb"=>"thumb.php");
|
57 |
$GOTMLS_core_files = array("wp_login"=>"/wp-login.php");
|
82 |
$GOTMLS_HeadersError = "";
|
83 |
function GOTMLS_admin_notices() {
|
84 |
global $GOTMLS_HeadersError;
|
85 |
+
if (!is_admin())
|
86 |
+
return;
|
87 |
+
elseif ($GOTMLS_HeadersError)
|
88 |
echo $GOTMLS_HeadersError;
|
89 |
}
|
90 |
|
112 |
|
113 |
function GOTMLS_update_scan_log($scan_log) {
|
114 |
if (is_array($scan_log)) {
|
115 |
+
$GLOBALS["GOTMLS"]["log"] = GOTMLS_array_replace_recursive($GLOBALS["GOTMLS"]["log"], $scan_log);
|
116 |
+
if (isset($GLOBALS["GOTMLS"]["log"]["scan"]["percent"]) && is_numeric($GLOBALS["GOTMLS"]["log"]["scan"]["percent"]) && ($GLOBALS["GOTMLS"]["log"]["scan"]["percent"] >= 100))
|
117 |
+
$GLOBALS["GOTMLS"]["log"]["scan"]["finish"] = time();
|
118 |
+
if (isset($GLOBALS["GOTMLS"]["log"]["scan"]))
|
119 |
+
update_option('GOTMLS_scan_log/'.(isset($_SERVER["REMOTE_ADDR"])?$_SERVER["REMOTE_ADDR"]:"0.0.0.0").'/'.$GLOBALS["GOTMLS"]["tmp"]["mt"], $GLOBALS["GOTMLS"]["log"]);
|
120 |
}
|
121 |
}
|
122 |
|
228 |
}
|
229 |
|
230 |
function GOTMLS_scanfile($file) {
|
231 |
+
global $GOTMLS_core_files, $wp_version, $GOTMLS_threat_levels, $GOTMLS_threat_files, $GOTMLS_definitions_array, $GOTMLS_threats_found, $GOTMLS_chmod_file, $GOTMLS_chmod_dir, $GOTMLS_settings_array, $GOTMLS_file_contents, $GOTMLS_new_contents;
|
232 |
$GOTMLS_threats_found = array();
|
233 |
$found = false;
|
234 |
$threat_link = "";
|
255 |
}
|
256 |
}
|
257 |
$GOTMLS_new_contents = $GOTMLS_file_contents;
|
258 |
+
if (isset($GLOBALS["GOTMLS"]["log"]["settings"]["check_custom"]) && strlen($GLOBALS["GOTMLS"]["log"]["settings"]["check_custom"]) && isset($_GET['eli']) && substr($GLOBALS["GOTMLS"]["log"]["settings"]["check_custom"], 0, 1) == '/' && ($found = GOTMLS_check_threat($GLOBALS["GOTMLS"]["log"]["settings"]["check_custom"])))
|
259 |
$className = "known";
|
260 |
else {
|
261 |
if (isset($_SESSION["GOTMLS_debug"])){ $_SESSION["GOTMLS_debug"]["file"] = $file;
|
263 |
foreach ($GOTMLS_threat_levels as $threat_level) {
|
264 |
if (isset($_SESSION["GOTMLS_debug"])){ $_SESSION["GOTMLS_debug"]["threat_level"] = $threat_level;
|
265 |
$_SESSION["GOTMLS_debug"]["last"]["threat_level"] = microtime(true);}
|
266 |
+
if (in_array($threat_level, $GLOBALS["GOTMLS"]["log"]["settings"]["check"]) && !$found && isset($GOTMLS_definitions_array[$threat_level]) && (!array_key_exists($threat_level,$GOTMLS_core_files) || (substr($file."e", (-1 * strlen($GOTMLS_core_files[$threat_level]."e"))) == $GOTMLS_core_files[$threat_level]."e")) && (!array_key_exists($threat_level,$GOTMLS_threat_files) || ((GOTMLS_get_ext($file) == "gotmls" && isset($_GET["eli"]) && $_GET["eli"] == "quarantine")?(substr(GOTMLS_decode(array_pop(explode(".", '.'.substr($file, strlen(dirname($file))+1, -7))))."e", (-1 * strlen($GOTMLS_threat_files[$threat_level]."e"))) == $GOTMLS_threat_files[$threat_level]."e"):(substr($file."e", (-1 * strlen($GOTMLS_threat_files[$threat_level]."e"))) == $GOTMLS_threat_files[$threat_level]."e"))) && ($found = GOTMLS_check_threat($GOTMLS_definitions_array[$threat_level],$file)))
|
267 |
$className = $threat_level;
|
268 |
}
|
269 |
if (isset($_SESSION["GOTMLS_debug"])){ $file_time = round(microtime(true) - $_SESSION["GOTMLS_debug"]["last"]["total"], 5);
|
289 |
$threat_link = '<a target="GOTMLS_iFrame" href="'.GOTMLS_script_URI.'&GOTMLS_scan='.$clean_file.'" id="list_'.$clean_file.'" onclick="loadIframe(\''.str_replace("\"", """, '<div style="float: left;">Examine File ... </div><div style="overflow: hidden; position: relative; height: 20px;"><div style="position: absolute; right: 0px; text-align: right; width: 9000px;">'.GOTMLS_strip4java($file)).'</div></div>\');" class="GOTMLS_plugin">';
|
290 |
if (isset($_POST["GOTMLS_fix"]) && is_array($_POST["GOTMLS_fix"]) && in_array($clean_file, $_POST["GOTMLS_fix"])) {
|
291 |
$file_date = explode(".", array_pop(GOTMLS_explode_dir($file)));
|
292 |
+
if (GOTMLS_get_ext($file) == "gotmls" && GOTMLS_trailingslashit($GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"]) == substr($file, 0, strlen(GOTMLS_trailingslashit($GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"])))) {
|
293 |
if ($_POST["GOTMLS_fixing"] > 1 && @unlink($file))
|
294 |
$GOTMLS_file_contents = "";
|
295 |
elseif (count($file_date) > 1 && $GOTMLS_new_contents = @file_get_contents($file))
|
341 |
return GOTMLS_return_threat($className, $imageFile, $file, str_replace("GOTMLS_plugin", "GOTMLS_plugin $className", $threat_link));
|
342 |
} elseif (isset($_POST["GOTMLS_fix"]) && is_array($_POST["GOTMLS_fix"]) && in_array($clean_file, $_POST["GOTMLS_fix"])) {
|
343 |
$file_date = explode(".", array_pop(GOTMLS_explode_dir($file)));
|
344 |
+
if (GOTMLS_get_ext($file) == "gotmls" && GOTMLS_trailingslashit($GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"]) == substr($file, 0, strlen(GOTMLS_trailingslashit($GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"])))) {
|
345 |
if ($_POST["GOTMLS_fixing"] > 1 && @unlink($file)) {
|
346 |
$GOTMLS_file_contents = "";
|
347 |
$msg = __("Deleted!",'gotmls');
|
412 |
return "Cannot decode: $encoded_string";
|
413 |
}
|
414 |
|
415 |
+
function GOTMLS_decodeBase64($encoded_string) {
|
416 |
+
if (function_exists("base64_decode"))
|
417 |
+
$unencoded_string = base64_decode($encoded_string);
|
418 |
+
elseif (function_exists("mb_convert_encoding"))
|
419 |
+
$unencoded_string = mb_convert_encoding($encoded_string, "UTF-8", "BASE64");
|
420 |
+
else
|
421 |
+
return "Cannot decode: '$encoded_string'";
|
422 |
+
return "'".str_replace("'", "\\'", str_replace("\\", "\\\\", $unencoded_string))."'";
|
423 |
+
}
|
424 |
+
|
425 |
+
function GOTMLS_decodeHex($encoded_string) {
|
426 |
+
return chr(hexdec($encoded_string));
|
427 |
+
}
|
428 |
+
|
429 |
function GOTMLS_return_threat($className, $imageFile, $fileName, $link = "") {
|
430 |
global $GOTMLS_image_alt;
|
431 |
+
$fileNameJS = GOTMLS_strip4java(str_replace(dirname($GLOBALS["GOTMLS"]["log"]["scan"]["dir"]), "...", $fileName));
|
432 |
$fileName64 = GOTMLS_encode($fileName);
|
433 |
$li_js = "/*-->*"."/";
|
434 |
if ($className != "scanned")
|
435 |
+
$li_js .= "\n$className++;\ndivx=document.getElementById('found_$className');\nif (divx) {\n\tvar newli = document.createElement('li');\n\tnewli.innerHTML='<img src=\"".GOTMLS_strip4java(GOTMLS_images_path.$imageFile).".gif\" height=16 width=16 alt=\"".$GOTMLS_image_alt[$imageFile]."\" style=\"float: left;\" id=\"$imageFile"."_$fileName64\">".GOTMLS_strip4java($link).$fileNameJS.($link?"</a>';\n\tdivx.display='block":"")."';\n\tdivx.appendChild(newli);\n}";
|
436 |
if ($className == "errors")
|
437 |
$li_js .= "\ndivx=document.getElementById('wait_$fileName64');\nif (divx) {\n\tdivx.src='".GOTMLS_images_path."blocked.gif';\n\tdirerrors++;\n}";
|
438 |
elseif (is_file($fileName))
|
462 |
}
|
463 |
|
464 |
function GOTMLS_quarantine($file) {
|
465 |
+
if (!isset($GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"])) {
|
|
|
466 |
$upload = wp_upload_dir();
|
467 |
$err403 = '<html><head><title>403 Forbidden</title></head><body><h1>Forbidden</h1><p>You don\'t have permission to access this directory.</p></body></html>';
|
468 |
+
$GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"] = GOTMLS_trailingslashit($upload['basedir']).'quarantine';
|
469 |
+
if (!is_dir($GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"]) && !@mkdir($GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"]))
|
470 |
+
$GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"] = $upload['basedir'];
|
471 |
if (is_file(GOTMLS_trailingslashit($upload['basedir']).'.htaccess') && file_get_contents(GOTMLS_trailingslashit($upload['basedir']).'.htaccess') == 'Options -Indexes')
|
472 |
if (!@unlink(GOTMLS_trailingslashit($upload['basedir']).'.htaccess'))
|
473 |
@GOTMLS_file_put_contents(GOTMLS_trailingslashit($upload['basedir']).'.htaccess', '');
|
474 |
+
if (!is_file(GOTMLS_trailingslashit($GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"]).'.htaccess'))
|
475 |
+
@GOTMLS_file_put_contents(GOTMLS_trailingslashit($GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"]).'.htaccess', 'Options -Indexes');
|
476 |
if (!is_file(GOTMLS_trailingslashit($upload['basedir']).'index.php'))
|
477 |
@GOTMLS_file_put_contents(GOTMLS_trailingslashit($upload['basedir']).'index.php', $err403);
|
478 |
+
if (!is_file(GOTMLS_trailingslashit($GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"]).'index.php'))
|
479 |
+
@GOTMLS_file_put_contents(GOTMLS_trailingslashit($GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"]).'index.php', $err403);
|
480 |
}
|
481 |
+
return GOTMLS_trailingslashit($GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"]).GOTMLS_sexagesimal().'.'.GOTMLS_encode($file).'.GOTMLS';
|
482 |
}
|
483 |
|
484 |
function GOTMLS_update_status($status, $percent = -1) {
|
485 |
+
if (!(isset($GLOBALS["GOTMLS"]["log"]["scan"]["start"]) && is_numeric($GLOBALS["GOTMLS"]["log"]["scan"]["start"])))
|
486 |
+
$GLOBALS["GOTMLS"]["log"]["scan"]["start"] = time();
|
487 |
+
$microtime = ceil(time()-$GLOBALS["GOTMLS"]["log"]["scan"]["start"]);
|
488 |
GOTMLS_update_scan_log(array("scan" => array("microtime" => $microtime, "percent" => $percent)));
|
489 |
return "/*-->*"."/\nupdate_status('".GOTMLS_strip4java($status)."', $microtime, $percent);\n/*<!--*"."/";
|
490 |
}
|
505 |
}
|
506 |
|
507 |
function GOTMLS_readdir($dir, $current_depth = 1) {
|
508 |
+
global $GOTMLS_loop_execution_time, $GOTMLS_scanfiles, $GOTMLS_skip_dirs, $GOTMLS_skip_ext, $GOTMLS_dirs_at_depth, $GOTMLS_dir_at_depth, $GOTMLS_total_percent;
|
509 |
+
if ($dir != $GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"] || $current_depth == 1) {
|
510 |
@set_time_limit($GOTMLS_loop_execution_time);
|
511 |
$entries = GOTMLS_getfiles($dir);
|
512 |
if (is_array($entries)) {
|
513 |
+
echo GOTMLS_return_threat("dirs", "wait", $dir).GOTMLS_update_status(sprintf(__("Preparing %s",'gotmls'), str_replace(dirname($GLOBALS["GOTMLS"]["log"]["scan"]["dir"]), "...", $dir)), $GOTMLS_total_percent);
|
514 |
$files = array();
|
515 |
$directories = array();
|
516 |
foreach ($entries as $entry) {
|
529 |
$GOTMLS_dirs_at_depth[$current_depth] = count($directories);
|
530 |
$GOTMLS_dir_at_depth[$current_depth] = 0;
|
531 |
} else
|
532 |
+
$GOTMLS_scanfiles[GOTMLS_encode($dir)] = GOTMLS_strip4java(str_replace(dirname($GLOBALS["GOTMLS"]["log"]["scan"]["dir"]), "...", $dir));
|
533 |
foreach ($directories as $directory) {
|
534 |
$path = GOTMLS_trailingslashit($dir).$directory;
|
535 |
if (isset($_REQUEST["scan_depth"]) && is_numeric($_REQUEST["scan_depth"]) && ($_REQUEST["scan_depth"] != $current_depth) && !in_array($directory, $GOTMLS_skip_dirs)) {
|
542 |
}
|
543 |
if ($_REQUEST["scan_type"] == "Quick Scan") {
|
544 |
$echo = "";
|
545 |
+
echo GOTMLS_update_status(sprintf(__("Scanning %s",'gotmls'), str_replace(dirname($GLOBALS["GOTMLS"]["log"]["scan"]["dir"]), "...", $dir)), $GOTMLS_total_percent);
|
546 |
GOTMLS_flush("script");
|
547 |
foreach ($files as $file)
|
548 |
echo GOTMLS_check_file(GOTMLS_trailingslashit($dir).$file);
|
559 |
echo "$GOTMLS_total_percent\n";
|
560 |
}
|
561 |
$GOTMLS_total_percent = floor($GOTMLS_total_percent * 100);
|
562 |
+
echo GOTMLS_update_status(sprintf(__("Scanned %s",'gotmls'), str_replace(dirname($GLOBALS["GOTMLS"]["log"]["scan"]["dir"]), "...", $dir)), $GOTMLS_total_percent);
|
563 |
}
|
564 |
GOTMLS_flush("script");
|
565 |
}
|
590 |
}}
|
591 |
|
592 |
function GOTMLS_strip4java($item) {
|
593 |
+
return preg_replace("/\\\\/", "\\\\\\\\", preg_replace("/'/", "'+\"'\"+'", preg_replace('/\\+n/', "", $item)));//(?<!\\\\)
|
594 |
}
|
595 |
|
596 |
function GOTMLS_error_link($errorTXT, $file = "", $class = "errors") {
|
619 |
try {
|
620 |
echo @GOTMLS_scanfile($file);
|
621 |
} catch (Exception $e) {
|
622 |
+
die("//Exception:".GOTMLS_strip4java($e));
|
623 |
}
|
624 |
}
|
625 |
echo "/*-->*"."/\ndocument.getElementById('status_text').innerHTML='Checked ".GOTMLS_strip4java($file)."';\n/*<!--*"."/";
|
627 |
|
628 |
function GOTMLS_scandir($dir) {
|
629 |
global $GOTMLS_skip_ext;
|
630 |
+
echo "/*<!--*"."/".GOTMLS_update_status(sprintf(__("Scanning %s",'gotmls'), str_replace(dirname($GLOBALS["GOTMLS"]["log"]["scan"]["dir"]), "...", $dir)));
|
631 |
GOTMLS_flush();
|
632 |
$li_js = "/*-->*"."/\nscanNextDir(-1);\n/*<!--*"."/";
|
633 |
if (isset($_GET["GOTMLS_skip_dir"]) && $dir == GOTMLS_decode($_GET["GOTMLS_skip_dir"])) {
|
677 |
} else
|
678 |
echo GOTMLS_return_threat("errors", "blocked", $dir, GOTMLS_error_link(GOTMLS_Failed_to_list_LANGUAGE.' scandir:'.($files===false?' (FALSE)':$files)));
|
679 |
}
|
680 |
+
echo GOTMLS_update_status(sprintf(__("Scanned %s",'gotmls'), str_replace(dirname($GLOBALS["GOTMLS"]["log"]["scan"]["dir"]), "...", $dir)));
|
681 |
GOTMLS_update_scan_log(array("scan" => array("finish" => time())));
|
682 |
return $li_js;
|
683 |
}
|
689 |
unset($GOTMLS_settings_array[$key]);
|
690 |
}
|
691 |
|
692 |
+
$GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"] = dirname(GOTMLS_quarantine(__FILE__));
|
693 |
+
$GLOBALS["GOTMLS"]["tmp"]["default_ext"] .= "com";
|
694 |
+
$GOTMLS_encode .= substr($GLOBALS["GOTMLS"]["tmp"]["default_ext"], 0, 2);
|
695 |
if(!isset($_SERVER["SERVER_NAME"]) || !$_SERVER["SERVER_NAME"]) {
|
696 |
if(!isset($_ENV["SERVER_NAME"]))
|
697 |
getenv("SERVER_NAME");
|
702 |
getenv("SERVER_PORT");
|
703 |
$_SERVER["SERVER_PORT"] = $_ENV["SERVER_PORT"];
|
704 |
}
|
|
|
705 |
if ((isset($_SERVER["HTTPS"]) && ($_SERVER["HTTPS"] == "on" || $_SERVER["HTTPS"] == 1)) || 'ssl'.$_SERVER["SERVER_PORT"] == 'ssl443')
|
706 |
+
$GLOBALS["GOTMLS"]["tmp"]["protocol"] .= "https:";
|
707 |
+
else
|
708 |
+
$GLOBALS["GOTMLS"]["tmp"]["protocol"] = "http:";
|
709 |
+
$GOTMLS_plugin_home = $GLOBALS["GOTMLS"]["tmp"]["protocol"].'//wordpress.'.$GLOBALS["GOTMLS"]["tmp"]["default_ext"];
|
710 |
+
$GOTMLS_update_home = $GLOBALS["GOTMLS"]["tmp"]["protocol"]."//gotmls.net/";
|
711 |
$definition_version = "A0000";
|
712 |
$GOTMLS_definitions_array = maybe_unserialize(GOTMLS_decode('YToyOntzOjk6InBvdGVudGlhbCI7YToxMTp7czo0OiJldmFsIjthOjI6e2k6MDtzOjU6IkNDSUdHIjtpOjE7czoyNzoiL1teYS16XC8nIl1ldmFsXCguK1wpWztdKi9pIjt9czo5OiJhdXRoX3Bhc3MiO2E6Mjp7aTowO3M6NToiQ0NJR0ciO2k6MTtzOjI0OiIvXCRhdXRoX3Bhc3NbID1cdF0rLis7L2kiO31zOjIxOiJkb2N1bWVudC53cml0ZSBpZnJhbWUiO2E6Mjp7aTowO3M6NToiQ0NJR0ciO2k6MTtzOjUyOiIvZG9jdW1lbnRcLndyaXRlXChbJyJdPGlmcmFtZSAuKzxcL2lmcmFtZT5bJyJdXCk7Ki9pIjt9czoxNToicHJlZ19yZXBsYWNlIC9lIjthOjI6e2k6MDtzOjU6IkNDSUdHIjtpOjE7czo1MDoiL3ByZWdfcmVwbGFjZVsgXHRdKlwoLitbXC9cI1x8XVtpXSplW2ldKlsnIl0uK1wpL2kiO31zOjIwOiJleGVjIHN5c3RlbSBwYXNzdGhydSI7YToyOntpOjA7czo1OiJDQ0lHRyI7aToxO3M6NTg6Ii9cPFw_KC4rPylleGVjXCgoLis_KXN5c3RlbVwoKC4rPylwYXNzdGhydVwoLitmd3JpdGVcKC4rL3MiO31zOjI5OiJFeHRlcm5hbCBSZWRpcmVjdCBSZXdyaXRlUnVsZSI7YToyOntpOjA7czo1OiJDQ1ZFNCI7aToxO3M6MzA6Ii9SZXdyaXRlUnVsZSBbXiBdKyBodHRwXDpcL1wvLyI7fXM6MzU6Im5vIGVycm9yX3JlcG9ydGluZyBsb25nIGxpbmVzIGFsb25lIjthOjI6e2k6MDtzOjU6IkQzNUJhIjtpOjE7czo3OToiLzxcPyhwaHApKltcclxuXHQgXEBdKmVycm9yX3JlcG9ydGluZ1woMFwpOy4rP1thLXowLTlcL1wtXD0nIlwuXF17MjAwMH0uKj9cPz4vaSI7fXM6MjI6InByb3RlY3RlZCBieSBjb3B5cmlnaHQiO2E6Mjp7aTowO3M6NToiRDhNQ3ciO2k6MTtzOjEzNjoiL1wvXCogVGhpcyBmaWxlIGlzIHByb3RlY3RlZCBieSBjb3B5cmlnaHQgbGF3IGFuZCBwcm92aWRlZCB1bmRlciBsaWNlbnNlLiBSZXZlcnNlIGVuZ2luZWVyaW5nIG9mIHRoaXMgZmlsZSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkLiBcKlwvLyI7fXM6MTk6ImEgc3BhbiBjb2xvciBGMUVGRTQiO2E6Mjp7aTowO3M6NToiRDhSQVAiO2k6MTtzOjExODoiL1w8YSBbXlw-XStcPlw8c3BhbiBzdHlsZT0iY29sb3JcOlwjRjFFRkU0OyJcPiguKz8pXDxcL3NwYW5cPlw8XC9hXD5cPHNwYW4gc3R5bGU9ImNvbG9yXDpcI0YxRUZFNDsiXD4oLis_KVw8XC9zcGFuXD4vaSI7fXM6MTc6IlZhcmlhYmxlIEZ1bmN0aW9uIjthOjI6e2k6MDtzOjU6IkU4NTZMIjtpOjE7czo2NzoiLyg8IVxkKVwkW1wkXHtdKlthLXpcLVxfMC05XStbXH0gXHRdKihcW1teXF1dK1xdWyBcdF0qKSpcKC4qP1wpXDsvaSI7fXM6MTE6IlRhZ2dlZCBDb2RlIjthOjI6e2k6MDtzOjU6IkU0TE1HIjtpOjE7czoyNDoiL1wjKFx3KylcIy4rP1wjXC9cMVwjL2lzIjt9fXM6OToid2hpdGVsaXN0IjthOjI6e3M6MzoicGhwIjthOjE3OntpOjA7czo1OiJFN0VNdiI7czozODoiNTg3M2NkMWNlYTYxMDgyMDJkMjEzNDdmMDFmMDRkY2ZPODE3MjgiO3M6NToiRDc1OXAiO3M6Mzk6IjAxMzYzNzI4Yzg0M2ZmOTNlOTZiNjk4M2NlMzhlYmE2TzE5NTYxOCI7czo1OiJENUE4MyI7czozODoiZDVmM2M5Y2FmZjE0ZDU3Yzg2MDhkNzhkYjAwOTRiZTBPNzM2NDMiO3M6NToiRDc1RDkiO3M6Mzg6IjU3YWY0OTgxOGJiYjk0OWRjMGFjNjM4NjczODY1NWJiTzI1ODUyIjtzOjU6IkQ3SkQ5IjtzOjM4OiJkNDk0MDQyNjBkNzlhNGNjMzc1NWMwMGY1NWRlMjA4OU8yNTY2MiI7czo1OiJEOFY4QSI7czozNzoiODY2MWZlMmJmYTU5OTVmNTQ2YTMzMDQ3ZTkwMzg1NmNPMTEzNiI7czo1OiJESUNGQyI7czozODoiODEyNWQ0MmM0YmU1NDNmODc0ZWE1ZjZhMWI1YmRlNTVPMjU4OTQiO3M6NToiRElDRkQiO3M6Mzk6ImVkZGI1ZmRhNzRkNDFkYmRhYzAxODE2NzUzNmQ4ZDUzTzIzMTMzOCI7czo1OiJESUNGRSI7czozODoiYzE1YTRkNWMzODM0NDRiOTVkMjg1NTlmODM0ODExMWRPMjI1ODgiO3M6NToiRTFSMnYiO3M6Mzg6ImUyMDgzOWM1NTlhNjZjN2NmNjI4NjUzYmEyNDg0ZWFlTzI2Mzk1IjtzOjU6IkUxUjJ4IjtzOjM4OiJmMzM4MmVjMTVjMDMwYmQzMmUyOTNmYWYzNDk3ZTI1M08xMTIyNiI7czo1OiJFMjMwQyI7czozNzoiMjhhOTJmNDY0OThkMzJiOWE3NGM1ODQ3Zjc1YzkxMmVPNzM5OSI7czo1OiJFMjMwQyI7czozNzoiZjAwYWFmMDFmZjAyZDU3NTZjMjY3YmNmOTIwZTRjMjhPMTU0MCI7czo1OiJFMkFNZiI7czozODoiNTdjNjQ3ZDkzZmJkNDc4NjhiODdiOTIxYmVlNjNhZjhPMjYzNzYiO3M6NToiRTVFRG8iO3M6Mzk6IjhlMmFmNDg4NmRjODFhNWQ5Mjg5ODY1YmJiODEzZWQxTzE5NTYxNyI7czo1OiJFNUlOUCI7czozNzoiZjgwZDllZjRiN2JmZDllZjU0MmQ5MDg3YTFkYjJhZTlPMjAxMCI7czo1OiJFN0VNdiI7fXM6MjoianMiO2E6Mjk6e2k6MDtzOjU6IkU5RzhqIjtzOjM3OiI1NTRiYzc2YzcwMzUxMTg3ZjRjZTA1ZGRjMDEyYWFlZE80Nzc2IjtzOjU6IkQ2NjdYIjtzOjM3OiI5YTljMTI1ODE0Yjk3MTU5ODJkMjQ2YTFlZTc4MDg0Zk81MzQ1IjtzOjU6IkQ2NjdYIjtzOjM4OiJlMzZhMDg2MTIzNzU2NDEyMjkzMjMxYWVhZDE3ZjI0Zk8zNzYyOSI7czo1OiJENzVBSCI7czozNzoiYTM4YWM1MjY2OTI0OTM4YTRmZjU1MTQzNjljNmI0MGRPNDY3NCI7czo1OiJENzVBSiI7czozNzoiMTA0M2ExZDdkODRlZTU2Zjg4MzFhNjBjZGZjNWRjMjhPNzA3NyI7czo1OiJENzVEUyI7czozODoiNmVjMTUwYjc5ODdjYWFlZjk4YjU5Yzg3YjlmNDcxYmVPMTE4NDIiO3M6NToiRTFSMm4iO3M6Mzg6IjYxNDdjY2VlN2FlZjlkYzBjNmViMTBkOGQ3YjMxMWY5TzcwODgzIjtzOjU6IkUxUjJ3IjtzOjM3OiJiYTMyOTM5NzBlMTNiMDNhMmVhOTJmNWI2YjViZjU0NE8zMzc3IjtzOjU6IkUyMk5xIjtzOjM3OiI2M2IwYWVkOWIwMmY4NzlhNmUwMjk1ZmJlYTdkYjg1NE80NzAyIjtzOjU6IkUyMzBEIjtzOjM3OiJlZjQxODhjYjBiNjBhNzIwMTdmNGM4YTFlODQwYWIxZU8yOTUwIjtzOjU6IkUyNDlMIjtzOjM3OiJmYjhiZjY3ODVlNTVlOWUzOWJlYTU1MjYzNWM0MmE2NE8zMjcwIjtzOjU6IkUyNjBDIjtzOjM5OiJhY2IzMzMyOWI5ZWY4YWFiZDhiZDczMTQyNjgwM2U0ZU8yMzI0ODIiO3M6NToiRTI2MEUiO3M6Mzg6IjZjZWI2NDc1OTI1ODhiY2Y0NjNiZWZkOTQwOGUyN2FkTzEyMDI1IjtzOjU6IkUyNjBIIjtzOjM3OiI1YTMxODI3N2ZlZGY0OTFhMDMwMWUxNzdhOWVmMTBiM080OTA4IjtzOjU6IkUyNjBKIjtzOjM4OiJkYmMzODA4NDczZGVmMDBmY2U0NWZlNTY0ZGM3MmRjYk8xNDcyMCI7czo1OiJFMjYwSyI7czozNzoiYjk4OWE1YmQ4NGY2ZWJjYmMxMzkzZWMwMDNlNmU5OTFPNDk2OSI7czo1OiJFMjdFRyI7czozODoiMDMwYjgzODkzNzZhNDJmZjNkYTE4NmJmNjU4MDYyMTdPMTY1MzEiO3M6NToiRTI5RDIiO3M6Mzc6ImRlZjI1N2RiYjBhYjgwNWM0OTk2ZmQ4YWJiMWE2YjQ5TzY3MTciO3M6NToiRTJINW4iO3M6Mzg6Ijc0ZDkwMzA0OTY4M2U1YmJlYTljY2I3NTQ0YTQyYmNhTzE3NDEzIjtzOjU6IkU1RURxIjtzOjM4OiI2MDNiZDE0Mjk5ZjYxYTczMjliMmQzNTNiMmI1NmMyZk8zNzY4OSI7czo1OiJFNUVEcCI7czozNzoiMDQyNmIzOTc1NGFhNmJjNzY2ZDg5ZWE0YzQxYmJkMDZPMzQ1NyI7czo1OiJFNUVEeCI7czozODoiZWFkYzU4MzI1MTNkNTY3MDg4NGE5NzVjNmRlMTBmMDFPMTk2MTUiO3M6NToiRTdVTUEiO3M6Mzg6IjM4ZGJjYzkyNTUyOTM2ODgxMmY1YzJmYmNiMzg5NjE2TzE0OTY1IjtzOjU6IkU3VU1CIjtzOjM3OiJhMWMxODIyN2U2ZTkzNzk4YzQ5M2FlZDk2ZWU2Y2M4NE8zMjY3IjtzOjU6IkU3VU1CIjtzOjM3OiIwNzgzODhhNjQzMWFhNWIwODM4YTg3MzJkMTg3ZmUyOU84OTEzIjtzOjU6IkU4QUFwIjtzOjM3OiJmM2IxYjI4NDI0MzZmN2EzMTFiMzllNGVmNGI0N2Y1OU80MzUyIjtzOjU6IkU4QkJVIjtzOjM3OiJkNzA5NDA2MTlhOTlkNTU1MTE2MTY3ZDRmYjM5Y2ExNU80Mzk3IjtzOjU6IkU5Q0x4IjtzOjM4OiJjYmRiZmM5MTg0ZDI4YWM1NWY4M2MwYjBkZjQwZmQ0M083OTQxNCI7czo1OiJFOUc4aiI7fX191'));
|
713 |
|
741 |
$time = floor($time/$units[$ukeys[$key]]);
|
742 |
if (1 == $time)
|
743 |
$unit = substr($unit, 0, -1);
|
744 |
+
$LastScan .= " and ran for $time $unit";
|
745 |
} else
|
746 |
+
$LastScan .= " and has not finish";
|
747 |
} else
|
748 |
$LastScan = "never started ";
|
749 |
return "Last ".(isset($GOTMLS_scan_log["scan"]["type"])?$GOTMLS_scan_log["scan"]["type"]:"Scan")." $LastScan.";
|
index.php
CHANGED
@@ -8,7 +8,7 @@ Author URI: http://wordpress.ieonly.com/category/my-plugins/anti-malware/
|
|
8 |
Contributors: scheeeli, gotmls
|
9 |
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QZHD8QHZ2E7PE
|
10 |
Description: This Anti-Virus/Anti-Malware plugin searches for Malware and other Virus like threats and vulnerabilities on your server and helps you remove them. It's always growing and changing to adapt to new threats so let me know if it's not working for you.
|
11 |
-
Version: 4.14.
|
12 |
*/
|
13 |
/* ___
|
14 |
* / /\ GOTMLS Main Plugin File
|
@@ -31,7 +31,7 @@ Version: 4.14.47
|
|
31 |
* \ \::/ with this program; if not, write to the Free Software Foundation,
|
32 |
* \__\/ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
|
33 |
|
34 |
-
if (isset($_SERVER["SCRIPT_FILENAME"]) && __FILE__ == $_SERVER["SCRIPT_FILENAME"]) die('You are not allowed to call this page directly.<p>You could try starting <a href="
|
35 |
|
36 |
define("GOTMLS_plugin_path", dirname(__FILE__).'/');
|
37 |
load_plugin_textdomain('gotmls', false, basename(GOTMLS_plugin_path).'/languages');
|
@@ -46,39 +46,70 @@ register_activation_hook(__FILE__, "GOTMLS_install");
|
|
46 |
|
47 |
function GOTMLS_menu() {
|
48 |
global $GOTMLS_settings_array;
|
49 |
-
if (
|
|
|
|
|
|
|
|
|
|
|
50 |
$GOTMLS_settings_array["menu_group"] = $_POST["GOTMLS_menu_group"];
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
update_option('GOTMLS_settings_array', $GOTMLS_settings_array);
|
52 |
}
|
53 |
$GOTMLS_Full_plugin_logo_URL = GOTMLS_images_path.'GOTMLS-16x16.gif';
|
54 |
$base_page = "GOTMLS-settings";
|
55 |
$base_function = "GOTMLS_settings";
|
56 |
-
$user_can = "activate_plugins";
|
57 |
$pluginTitle = "Anti-Malware";
|
58 |
$pageTitle = "$pluginTitle ".GOTMLS_Scan_Settings_LANGUAGE;
|
59 |
-
if ($GOTMLS_settings_array["menu_group"]
|
60 |
-
|
61 |
-
else
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
72 |
}
|
73 |
|
74 |
-
function GOTMLS_display_header($
|
75 |
-
global $GOTMLS_onLoad, $GOTMLS_loop_execution_time, $GOTMLS_update_home, $GOTMLS_plugin_home, $GOTMLS_definitions_versions, $wp_version, $current_user, $
|
76 |
get_currentuserinfo();
|
77 |
$GOTMLS_url_parts = explode('/', GOTMLS_siteurl);
|
78 |
if (isset($_GET["check_site"]) && $_GET["check_site"] == 1)
|
79 |
-
echo '<br /><br /><div class="updated" id="check_site" style="z-index: 1234567; position: absolute; top: 1px; left: 1px; margin: 15px;"><img src="'.GOTMLS_images_path.'checked.gif" height=16 width=16 alt="✔"> '.GOTMLS_Tested_your_site_LANGUAGE.' ;-)</div><script type="text/javascript">window.parent.document.getElementById("check_site_warning").style.backgroundColor=\'#0C0\';</script><iframe style="width: 230px; height: 110px; position: absolute; right: 4px; bottom: 4px; border: none;" scrolling="no" src="
|
80 |
else
|
81 |
-
echo '<style>#right-sidebar {float: right; margin-right:
|
82 |
$ver_info = GOTMLS_Version.'&p='.strtoupper(GOTMLS_plugin_dir).'&wp='.$wp_version.'&ts='.date("YmdHis").'&key='.GOTMLS_installation_key.'&d='.ur1encode(GOTMLS_siteurl);
|
83 |
$Update_Link = '<div style="text-align: center;"><a href="';
|
84 |
$new_version = "";
|
@@ -96,9 +127,9 @@ function GOTMLS_display_header($pTitle, $optional_box = "") {
|
|
96 |
.rounded-corners {margin: 10px; border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; border: 1px solid #000;}
|
97 |
.shadowed-box {box-shadow: -3px 3px 3px #666; -moz-box-shadow: -3px 3px 3px #666; -webkit-box-shadow: -3px 3px 3px #666;}
|
98 |
.sidebar-box {background-color: #CCC;}
|
99 |
-
.sidebar-links {
|
100 |
-
.sidebar-links li img {margin: 3px; height: 16px; vertical-align: middle;}
|
101 |
-
.sidebar-links li {margin-bottom: 0 !important}
|
102 |
.popup-box {background-color: #FFC; display: none; position: absolute; left: 0px; z-index: 10;}
|
103 |
.shadowed-text {text-shadow: #00F -1px 1px 1px;}
|
104 |
.sub-option {float: left; margin: 3px 5px;}
|
@@ -111,10 +142,10 @@ function GOTMLS_display_header($pTitle, $optional_box = "") {
|
|
111 |
.GOTMLS h2 {margin: 0 0 10px;}
|
112 |
.postbox {margin-right: 10px;}
|
113 |
#pastDonations li {list-style: none;}
|
114 |
-
#main-section {margin-right: 310px;}
|
115 |
#main-page-title {
|
116 |
-
background: url("'.$
|
117 |
-
|
|
|
118 |
margin: 10px 0 0;
|
119 |
padding: 0 0 0 84px;}
|
120 |
</style>
|
@@ -133,10 +164,57 @@ function showhide(id) {
|
|
133 |
}
|
134 |
}
|
135 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
136 |
function loadIframe(title) {
|
137 |
showhide("GOTMLS_iFrame", true);
|
138 |
showhide("GOTMLS_iFrame");
|
139 |
document.getElementById("windowTitle").innerHTML = title;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
140 |
showhide("div_file", true);
|
141 |
}
|
142 |
function cancelserver(divid) {
|
@@ -228,17 +306,35 @@ function releaseCorner() {
|
|
228 |
}
|
229 |
setDiv("div_file");
|
230 |
</script>
|
231 |
-
<h1 id="main-page-title">'.$
|
232 |
-
<div id="right-sidebar" class="metabox-holder">
|
233 |
-
<div id="
|
234 |
-
|
235 |
-
|
236 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
237 |
<script type="text/javascript">
|
238 |
stopCheckingUpdates = checkupdateserver("'.$GOTMLS_plugin_home.GOTMLS_update_images_path.'?js='.$ver_info.'", "findUpdates", "'.str_replace("://", "://www.", $GOTMLS_plugin_home).GOTMLS_update_images_path.'?js='.$ver_info.'");
|
239 |
-
</script>
|
240 |
-
<div id="definitionupdates" class="stuffbox shadowed-box"><h3 class="hndle"><span>'.GOTMLS_Definition_Updates_LANGUAGE.' ('.$definition_version.')</span></h3>
|
241 |
-
<script type="text/javascript">
|
242 |
function check_for_updates(chk) {
|
243 |
if (auto_img = document.getElementById("autoUpdateDownload")) {
|
244 |
auto_img.style.display="";
|
@@ -286,32 +382,6 @@ setDiv("div_file");
|
|
286 |
if (foundUpdates)
|
287 |
foundUpdates.style.display = "";
|
288 |
}
|
289 |
-
</script>
|
290 |
-
<form id="updateform" method="post" name="updateform" action="'.GOTMLS_script_URI.'">
|
291 |
-
<img style="display: none; float: right; margin-right: 14px;" src="'.GOTMLS_images_path.'checked.gif" height=16 width=16 alt="definitions file updated" id="autoUpdateDownload" onclick="downloadUpdates(\'UpdateDownload\');">
|
292 |
-
<div id="Definition_Updates" class="inside"><center>'.__("Searching for updates ...",'gotmls').'<br /><img src="'.GOTMLS_images_path.'wait.gif" height=16 width=16 alt="Wait..." /><br /><input type="button" value="Cancel" onclick="cancelserver(\'Definition_Updates\');" /></center></div>
|
293 |
-
<div id="autoUpdateForm" style="display: none;" class="inside">
|
294 |
-
<input type="submit" name="auto_update" value="'.__("Download new definitions!",'gotmls').'">
|
295 |
-
</div>
|
296 |
-
</form>
|
297 |
-
<div id="registerKeyForm" style="display: none;" class="inside">
|
298 |
-
'.__("If you have not already registered your Key then register now and get instant access to definition updates.<p>*All fields are required and I will NOT share your registration information with anyone.</p>",'gotmls').'
|
299 |
-
<form id="registerform" onsubmit="return sinupFormValidate(this);" action="'.$GOTMLS_update_home.'wp-login.php?action=register" method="post" name="registerform" target="GOTMLS_iFrame"><input type="hidden" name="redirect_to" id="register_redirect_to" value="/donate/"><input type="hidden" name="user_login" id="register_user_login" value="">
|
300 |
-
<div>'.__("Your Full Name:",'gotmls').'</div>
|
301 |
-
<div style="float: left; width: 50%;"><input style="width: 100%;" id="first_name" type="text" name="first_name" value="'.$current_user->user_firstname.'" /></div>
|
302 |
-
<div style="float: left; width: 50%;"><input style="width: 100%;" id="last_name" type="text" name="last_name" value="'.$current_user->user_lastname.'" /></div>
|
303 |
-
<div style="clear: left; width: 100%;">
|
304 |
-
<div>'.__("A password will be e-mailed to this address:",'gotmls').'</div>
|
305 |
-
<input style="width: 100%;" id="user_email" type="text" name="user_email" value="'.$current_user->user_email.'" /></div>
|
306 |
-
<div>
|
307 |
-
<div>'.__("Your WordPress Site URL:",'gotmls').'</div>
|
308 |
-
<input style="width: 100%;" id="user_url" type="text" name="user_url" value="'.GOTMLS_siteurl.'" readonly /></div>
|
309 |
-
<div>
|
310 |
-
<div>'.__("Plugin Installation Key:",'gotmls').'</div>
|
311 |
-
<input style="width: 100%;" id="installation_key" type="text" name="installation_key" value="'.GOTMLS_installation_key.'" readonly /><input id="old_key" type="hidden" name="old_key" value="'.md5($GOTMLS_url_parts[2]).'" /></div>
|
312 |
-
<input style="width: 100%;" id="wp-submit" type="submit" name="wp-submit" value="Register Now!" /></form></div>
|
313 |
-
</div>
|
314 |
-
<script type="text/javascript">
|
315 |
var divNAtext = false;
|
316 |
function loadGOTMLS() {
|
317 |
clearTimeout(divNAtext);
|
@@ -331,8 +401,7 @@ setDiv("div_file");
|
|
331 |
else
|
332 |
divNAtext=true;
|
333 |
</script>
|
334 |
-
|
335 |
-
<div class="inside">
|
336 |
<div id="pastDonations"></div>
|
337 |
<form name="ppdform" id="ppdform" action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank">
|
338 |
<input type="hidden" name="cmd" value="_donations">
|
@@ -357,33 +426,108 @@ setDiv("div_file");
|
|
357 |
<input type="hidden" name="cancel_return" value="'.$GOTMLS_update_home.GOTMLS_installation_key.'/donate/?donation-source=cancel">
|
358 |
<input type="image" id="pp_button" src="'.GOTMLS_images_path.'btn_donateCC_WIDE.gif" border="0" name="submitc" alt="'.__("Make a Donation with PayPal",'gotmls').'">
|
359 |
<div>
|
360 |
-
<ul class="sidebar-links">
|
361 |
-
<li style="float: right;"><b>on <a target="_blank" href="
|
362 |
-
<li><a target="_blank" href="
|
363 |
-
<li><a target="_blank" href="
|
364 |
-
<li><a target="_blank" href="
|
365 |
</ul></li>
|
366 |
<li><img src="'.$GOTMLS_update_home.'/favicon.ico" border="0" alt="Plugin site:"><b><a target="_blank" href="'.$GOTMLS_update_home.'">GOTMLS.NET</a></b></li>
|
367 |
<li><img src="'.$GOTMLS_plugin_home.'/favicon.ico" border="0" alt="Developer site:"><b><a target="_blank" href="'.$GOTMLS_plugin_home.'/category/my-plugins/anti-malware/">Eli\'s Blog</a></b></li>
|
368 |
-
<li><img src="
|
369 |
-
<li><iframe allowtransparency="true" frameborder="0" scrolling="no" src="
|
370 |
</ul>
|
371 |
</div>
|
372 |
</form>
|
373 |
-
<a target="_blank" href="http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site='.urlencode(GOTMLS_siteurl).'">Google Safe Browsing Diagnostic</a>
|
374 |
-
|
375 |
-
</div>
|
376 |
'.$optional_box.'
|
377 |
-
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
378 |
<div id="admin-page-container">
|
379 |
-
<div id="main-section">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
380 |
}
|
381 |
|
382 |
function GOTMLS_settings() {
|
383 |
-
global $
|
384 |
-
$GOTMLS_menu_groups = array(__("Main Menu Item placed below <b>Comments</b> and above <b>Appearance</b>",'gotmls'),__("Main Menu Item placed below <b>Settings</b>",'gotmls'),__("Sub-Menu inside the <b>Tools</b> Menu Item",'gotmls'));
|
385 |
-
if (is_multisite() && current_user_can("manage_network"))
|
386 |
-
$GOTMLS_menu_groups[] = __("ONLY SHOW for <b>Network Admins</b>",'gotmls');
|
387 |
$GOTMLS_scan_groups = array();
|
388 |
$dirs = GOTMLS_explode_dir(__file__);
|
389 |
$scan_level = intval($GOTMLS_settings_array["scan_level"]);
|
@@ -430,50 +574,73 @@ function GOTMLS_settings() {
|
|
430 |
$GOTMLS_settings_array['check_potential'] = $_POST['check_potential'];
|
431 |
GOTMLS_update_scan_log(array("settings" => $GOTMLS_settings_array));
|
432 |
$scan_opts = '';
|
433 |
-
$scan_optjs = "<script type=\"text/javascript\">\nfunction showOnly(what) {\n";
|
434 |
foreach ($GOTMLS_scan_groups as $mg => $GOTMLS_scan_group) {
|
435 |
$scan_optjs .= "document.getElementById('only$mg').style.display = 'none';\n";
|
436 |
-
$scan_opts .= '
|
|
|
|
|
437 |
$dir = implode(GOTMLS_slash(), array_slice($dirs, 0, -1 * (2 + $mg)));
|
438 |
$files = GOTMLS_getfiles($dir);
|
439 |
if (is_array($files))
|
440 |
foreach ($files as $file)
|
441 |
if (is_dir(GOTMLS_trailingslashit($dir).$file))
|
442 |
-
$scan_opts .= '
|
443 |
-
|
|
|
|
|
|
|
444 |
}
|
445 |
$scan_optjs .= "document.getElementById('only'+what).style.display = 'block';\n}\n</script>";
|
446 |
-
$scan_opts = '
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
447 |
foreach ($GOTMLS_threat_levels as $threat_level_name=>$threat_level) {
|
448 |
-
$scan_opts .= '
|
|
|
449 |
if (isset($GOTMLS_definitions_array[$threat_level]))
|
450 |
-
$scan_opts .= '
|
|
|
451 |
else
|
452 |
-
$scan_opts .= '
|
|
|
453 |
$scan_opts .= (isset($_GET['eli']) && isset($_SESSION['GOTMLS_'.$_GET['eli']][$threat_level])?print_r($_SESSION['GOTMLS_'.$_GET['eli']][$threat_level],1):"")."<b>$threat_level_name</b></a>";
|
454 |
if (!isset($GOTMLS_definitions_array[$threat_level]))
|
455 |
-
$scan_opts .= '<br
|
|
|
456 |
elseif (isset($_GET['eli'])) {
|
457 |
-
$scan_opts .= '
|
|
|
458 |
foreach ($GOTMLS_definitions_array[$threat_level] as $threat_name => $threat_regex)
|
459 |
-
$scan_opts .= '<br
|
460 |
-
|
|
|
|
|
461 |
}
|
462 |
-
$scan_opts .= '
|
|
|
463 |
}
|
464 |
-
if (isset($_GET['eli'])) { if (isset($_SESSION['GOTMLS_'.$_GET['eli']]['total'])) {$scan_opts .=print_r($_SESSION['GOTMLS_'.$_GET['eli']]['total'],1); unset($_SESSION['GOTMLS_'.$_GET['eli']]);} $scan_opts .= '
|
465 |
-
|
466 |
-
$
|
467 |
-
|
468 |
-
<
|
469 |
-
|
470 |
-
|
|
|
|
|
|
|
471 |
@ob_start();
|
472 |
$OB_default_handlers = array("default output handler", "zlib output compression");
|
473 |
foreach (ob_list_handlers() as $OB_last_handler)
|
474 |
if (!in_array($OB_last_handler, $OB_default_handlers))
|
475 |
echo '<div class="error">'.sprintf(__("Another Plugin or Theme is using '%s' to handle output buffers. <br />This prevents actively outputing the buffer on-the-fly and will severely degrade the performance of this (and many other) Plugins. <br />Consider disabling caching and compression plugins (at least during the scanning process).",'gotmls'), $OB_last_handler).'</div>';
|
476 |
-
GOTMLS_display_header(
|
477 |
$scan_groups = array_merge(array(__("Scanned Files",'gotmls')=>"scanned",__("Selected Folders",'gotmls')=>"dirs",__("Scanned Folders",'gotmls')=>"dir",__("Skipped Folders",'gotmls')=>"skipdirs",__("Skipped Files",'gotmls')=>"skipped",__("Read/Write Errors",'gotmls')=>"errors",__("Quarantined Files",'gotmls')=>"bad"), $GOTMLS_threat_levels);
|
478 |
echo '<script type="text/javascript">
|
479 |
var percent = 0;
|
@@ -555,15 +722,15 @@ function update_status(title, time) {
|
|
555 |
foreach ($scan_groups as $scan_name => $scan_group) {
|
556 |
$vars .= ", $scan_group=0";
|
557 |
if ($MAX++ == 6) {
|
558 |
-
echo "/*-->*"."/\n\tif ($scan_group > 0)\n\t\tscan_state = ' potential'; \n\telse\n\t\tscan_state = '';\n\tdivHTML += '</ul><ul style=\"text-align: left;\"><li class=\"GOTMLS_li\"><a href=\"admin.php?page=GOTMLS-
|
559 |
$found = "Found ";
|
560 |
$fix_button_js = "\n\t\tdis='block';";
|
561 |
} else {
|
562 |
-
if ($found && !in_array($scan_group, $GLOBALS["GOTMLS"]["settings"]["check"]))
|
563 |
$potential_threat = ' potential" title="'.__("You are not currently scanning for this type of threat!",'gotmls');
|
564 |
else
|
565 |
$potential_threat = "";
|
566 |
-
echo "/*-->*"."/\n\tif ($scan_group > 0) {\n\t\tscan_state = ' href=\"#found_$scan_group\" onclick=\"$li_js showhide(\\'found_$scan_group\\', true);\" class=\"GOTMLS_plugin $scan_group\"';$fix_button_js".($MAX>6?"\n\tshowhide('found_$scan_group', true);":"")."\n\t} else\n\t\tscan_state = ' class=\"GOTMLS_plugin$potential_threat\"';\n\tdivHTML += '<li class=\"GOTMLS_li\"><a'+scan_state+'>$found'+$scan_group+'
|
567 |
}
|
568 |
$li_js = "";
|
569 |
if ($MAX > 11)
|
@@ -578,163 +745,156 @@ function showOnly(what) {
|
|
578 |
document.getElementById("only_what").innerHTML = document.getElementById("only"+what).innerHTML;
|
579 |
}
|
580 |
var startTime = 0;
|
581 |
-
</script>
|
582 |
-
|
583 |
-
<div title="Click to toggle" onclick="showhide(\'GOTMLS-Settings-Form\');" class="handlediv"><br></div>
|
584 |
-
<h3 title="Click to toggle" onclick="showhide(\'GOTMLS-Settings-Form\');" style="cursor: pointer;" class="hndle"><span>'.GOTMLS_Scan_Settings_LANGUAGE.'</span></h3>
|
585 |
-
<div id="GOTMLS-Settings-Form" class="inside"';
|
586 |
-
if ((isset($_REQUEST["scan_type"]) && ($_REQUEST["scan_type"] == "Quarantine")) || (isset($_REQUEST["scan_what"]) && is_numeric($_REQUEST["scan_what"]))) {
|
587 |
if (!isset($_REQUEST["scan_type"]))
|
588 |
$_REQUEST["scan_type"] = "Complete Scan";
|
589 |
update_option('GOTMLS_settings_array', $GOTMLS_settings_array);
|
590 |
-
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
-
if (is_array($value)) {
|
598 |
-
foreach ($value as $val)
|
599 |
-
echo '<input type="hidden" name="'.$name.'[]" value="'.htmlspecialchars($val).'">';
|
600 |
-
} else
|
601 |
-
echo '<input type="hidden" name="'.$name.'" value="'.htmlspecialchars($value).'">';
|
602 |
-
}
|
603 |
}
|
604 |
-
echo '<div id="status_text"><img src="'.GOTMLS_images_path.'wait.gif" height=16 width=16 alt="..."> '.GOTMLS_Loading_LANGUAGE.'</div><div id="status_bar"></div><p id="pause_button" style="display: none; position: absolute; left: 0; text-align: center; margin-left: -30px; padding-left: 50%;"><input type="button" value="Pause" class="button-primary" onclick="pauseresume(this);" id="resume_button" /></p><div id="status_counts"></div><p id="fix_button" style="display: none; text-align: center;"><input id="repair_button" type="submit" value="'.__("Automatically Fix SELECTED Files Now",'gotmls').'" class="button-primary" onclick="loadIframe(\'Examine Results\');" /></p></div></div>
|
605 |
-
<div class="postbox shadowed-box"><div title="Click to toggle" onclick="showhide(\'GOTMLS-Scan-Details\');" class="handlediv"><br></div><h3 title="Click to toggle" onclick="showhide(\'GOTMLS-Scan-Details\');" style="cursor: pointer;" class="hndle"><div style="float: right;"> ('.$GLOBALS["GOTMLS"]["scan"]["dir"].') </div><span>'.__("Scan Details:",'gotmls').'</span></h3>';
|
606 |
}
|
607 |
-
echo '
|
608 |
-
|
609 |
-
|
610 |
-
|
611 |
-
|
612 |
-
|
613 |
-
|
614 |
-
|
615 |
-
|
616 |
-
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
if ($_REQUEST["scan_type"] == "
|
623 |
-
$
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
|
637 |
-
$file_date = explode(".", $entry);
|
638 |
-
if (count($file_date) > 2 && strlen($file_date[0]) == 5)
|
639 |
-
$date = GOTMLS_sexagesimal($file_date[0]);
|
640 |
-
elseif (@rename($file, GOTMLS_trailingslashit($GOTMLS_quarantine_dir).GOTMLS_sexagesimal($date).".$entry"))
|
641 |
-
$file = GOTMLS_trailingslashit($GOTMLS_quarantine_dir).GOTMLS_sexagesimal($date).".$entry";
|
642 |
-
echo '<input type="checkbox" name="GOTMLS_fix[]" value="'.GOTMLS_encode($file).'" id="check_'.GOTMLS_encode($file).'" onchange="document.getElementById(\'fix_button\').style.display = \'block\';" />'.GOTMLS_error_link("View Quarantined File", $file).str_replace($root_path, "", GOTMLS_decode($file_date[count($file_date)-2]));
|
643 |
-
} else
|
644 |
-
echo '<li><img src="'.GOTMLS_images_path.'/blocked.gif" height=16 width=16 alt="?" style="float: left;">'.GOTMLS_error_link("Foreign File in Quarantine", $file).$file;
|
645 |
-
$date = explode("-", $date);
|
646 |
-
echo "</a> <span style='float: right; margin-right: 8px;'>(20$date[0]-$date[1]-$date[2] at $date[3]:$date[4])</span></li>";
|
647 |
-
}
|
648 |
-
} else
|
649 |
-
echo __("No Items in Quarantine",'gotmls').'</h3>';
|
650 |
-
echo "</ul>";
|
651 |
-
} elseif ($_REQUEST["scan_what"] > -1) {
|
652 |
-
if (!($dir = implode(GOTMLS_slash(), array_slice($dirs, 0, -1 * (2 + $_REQUEST["scan_what"]))))) $dir = "/";
|
653 |
-
foreach ($scan_groups as $scan_name => $scan_group)
|
654 |
-
echo "\n<ul name=\"found_$scan_group\" id=\"found_$scan_group\" class=\"GOTMLS_plugin $scan_group\" style=\"background-color: #ccc; display: none; padding: 0;\"><a class=\"rounded-corners\" name=\"link_$scan_group\" style=\"float: right; padding: 0 4px; margin: 5px 5px 0 30px; line-height: 16px; text-decoration: none; color: #C00; background-color: #FCC; border: solid #F00 1px;\" href=\"#found_top\" onclick=\"showhide('found_$scan_group');\">X</a><h3>$scan_name</h3>\n".($scan_group=='potential'?'<p> * '.__("NOTE: These are probably not malicious scripts (but it's a good place to start looking <u>IF</u> your site is infected and no Known Threats were found).",'gotmls').'</p>':($scan_group=='wp_login'?'<p> * '.__("NOTE: Your WordPress Login page has the old version of my brute-force protection installed. Upgrade this patch to improve the protection on the WordPress Login page and preserve the integrity of your WordPress core files. For more information on brute force attack prevention and the WordPress wp-login-php file ",'gotmls').' <a target="_blank" href="http://gotmls.net/tag/wp-login-php/">'.__("read my blog",'gotmls').'</a>.</p>':'<br />')).'</ul>';
|
655 |
-
GOTMLS_update_scan_log(array("scan" => array("start" => time(), "type" => $_REQUEST["scan_type"])));
|
656 |
-
while (in_array($OB_last_handler, $OB_default_handlers) && @ob_end_flush())
|
657 |
-
foreach (ob_list_handlers() as $OB_handler)
|
658 |
-
$OB_last_handler = $OB_handler;
|
659 |
-
@ob_start();
|
660 |
-
if ($_REQUEST["scan_type"] == "Quick Scan")
|
661 |
-
$li_js = "\nfunction testComplete() {\n\tif (percent != 100)\n\t\talert('".__("The Quick Scan was unable to finish because of a shortage of memory or a problem accessing a file. Please try using the Complete Scan, it is slower but it will handle these errors better and continue scanning the rest of the files.",'gotmls')."');\n}\nwindow.onload=testComplete;\n</script>\n<script type=\"text/javascript\">";
|
662 |
-
echo "\n<script type=\"text/javascript\">$li_js\n/*<!--*"."/";
|
663 |
-
if (is_dir($dir)) {
|
664 |
-
$GOTMLS_dirs_at_depth[0] = 1;
|
665 |
-
$GOTMLS_dir_at_depth[0] = 0;
|
666 |
-
if (!(isset($_GET["eli"]) && $_GET["eli"] == "NOQ")) {
|
667 |
-
$GOTMLS_dirs_at_depth[0]++;
|
668 |
-
GOTMLS_readdir($GOTMLS_quarantine_dir);
|
669 |
-
}
|
670 |
-
if (isset($_POST['scan_only']) && is_array($_POST['scan_only'])) {
|
671 |
-
$GOTMLS_dirs_at_depth[0] += (count($_POST['scan_only']) - 1);
|
672 |
-
foreach ($_POST['scan_only'] as $only_dir)
|
673 |
-
if (is_dir(GOTMLS_trailingslashit($dir).$only_dir))
|
674 |
-
GOTMLS_readdir(GOTMLS_trailingslashit($dir).$only_dir);
|
675 |
-
} else
|
676 |
-
GOTMLS_readdir($dir);
|
677 |
} else
|
678 |
-
|
679 |
-
|
680 |
-
|
681 |
-
|
682 |
-
|
683 |
-
|
|
|
|
|
684 |
var scanfilesI = 0;
|
685 |
var stopScanning;
|
686 |
var gotStuckOn = "";
|
687 |
function scanNextDir(gotStuck) {
|
688 |
-
|
689 |
-
|
690 |
-
|
691 |
-
|
692 |
-
|
693 |
-
|
694 |
-
} else {
|
695 |
-
scanfilesArNames.push("Re-"+scanfilesArNames[gotStuck]);
|
696 |
-
scanfilesArKeys.push(scanfilesArKeys[gotStuck]+"&GOTMLS_only_file=");
|
697 |
-
}
|
698 |
} else {
|
699 |
-
scanfilesArNames.push("
|
700 |
-
scanfilesArKeys.push(scanfilesArKeys[gotStuck]+"&
|
701 |
}
|
702 |
-
}
|
703 |
-
|
704 |
-
|
705 |
-
startTime++;
|
706 |
-
}
|
707 |
-
else if (scanfilesI < scanfilesArKeys.length) {
|
708 |
-
document.getElementById("status_text").innerHTML = scanfilesArNames[scanfilesI];
|
709 |
-
var newscript = document.createElement("script");
|
710 |
-
newscript.setAttribute("src", scriptSRC+scanfilesArKeys[scanfilesI]);
|
711 |
-
divx = document.getElementById("found_scanned");
|
712 |
-
if (divx)
|
713 |
-
divx.appendChild(newscript);
|
714 |
-
stopScanning=setTimeout("scanNextDir("+(scanfilesI++)+")",'.$GOTMLS_loop_execution_time.'000);
|
715 |
}
|
716 |
}
|
717 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
718 |
stopScanning=setTimeout("scanNextDir(-1)",3000);
|
719 |
function pauseresume(butt) {
|
720 |
-
|
721 |
-
|
722 |
-
|
723 |
-
|
724 |
}
|
725 |
showhide("pause_button", true);'."\n/*<!--*"."/";
|
726 |
-
}
|
727 |
-
if (@ob_get_level()) {
|
728 |
-
GOTMLS_flush('script');
|
729 |
-
@ob_end_flush();
|
730 |
-
}
|
731 |
-
echo "/*-->*"."/\n</script>";
|
732 |
}
|
733 |
-
|
|
|
|
|
|
|
|
|
734 |
} else {
|
735 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
736 |
}
|
737 |
-
echo "\n</div></div></div>";
|
738 |
}
|
739 |
|
740 |
function GOTMLS_set_plugin_action_links($links_array, $plugin_file) {
|
@@ -861,8 +1021,18 @@ function GOTMLS_init() {
|
|
861 |
$_GET["eli"] = "quarantine";
|
862 |
}
|
863 |
GOTMLS_scanfile($file);
|
864 |
-
|
865 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
866 |
$f = 1;
|
867 |
foreach ($GOTMLS_threats_found as $threats_found=>$threats_name) {
|
868 |
$fpos = 0;
|
@@ -877,6 +1047,9 @@ function GOTMLS_init() {
|
|
877 |
}
|
878 |
} else
|
879 |
$fa = " No Threats Found";
|
|
|
|
|
|
|
880 |
die("\n".'<script type="text/javascript">
|
881 |
function select_text_range(ta_id, start, end) {
|
882 |
ta_element = document.getElementById(ta_id);
|
@@ -906,7 +1079,7 @@ window.parent.showhide("GOTMLS_iFrame", true);
|
|
906 |
$li_js = "<script type=\"text/javascript\">\n/*<!--*"."/";
|
907 |
}
|
908 |
}
|
909 |
-
die('<div id="check_site_warning" style="background-color: #F00;">'.sprintf(__("Because some threats were automatically fixed we need to check to make sure the removal did not break your site. If this stays Red and the frame below does not load please <a %s>revert the changes</a> made during the automated fix process.",'gotmls'), 'target="test_frame" href="admin.php?page=GOTMLS-
|
910 |
} elseif (isset($_POST["GOTMLS_fixing"]))
|
911 |
die("<script type=\"text/javascript\">\nwindow.parent.showhide('GOTMLS_iFrame', true);\nalert('".__("Nothing Selected to be Changed!",'gotmls')."');\n</script>".__("Done!",'gotmls'));
|
912 |
if (isset($_POST["scan_level"]) && is_numeric($_POST["scan_level"]))
|
@@ -929,6 +1102,7 @@ window.parent.showhide("GOTMLS_iFrame", true);
|
|
929 |
update_option('GOTMLS_settings_array', $GOTMLS_settings_array);
|
930 |
if (isset($_GET["GOTMLS_msg"]))
|
931 |
die('<body style="margin: 0; padding: 0;">'.$_GET["GOTMLS_msg"].'</body>');
|
|
|
932 |
}
|
933 |
if (function_exists("is_admin") && is_admin() && ((isset($_POST['GOTMLS_whitelist']) && isset($_POST['GOTMLS_chksum'])) || (isset($_GET["GOTMLS_scan"]) && is_dir(GOTMLS_decode($_GET["GOTMLS_scan"]))))) {
|
934 |
@set_time_limit($GOTMLS_loop_execution_time-5);
|
8 |
Contributors: scheeeli, gotmls
|
9 |
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QZHD8QHZ2E7PE
|
10 |
Description: This Anti-Virus/Anti-Malware plugin searches for Malware and other Virus like threats and vulnerabilities on your server and helps you remove them. It's always growing and changing to adapt to new threats so let me know if it's not working for you.
|
11 |
+
Version: 4.14.50
|
12 |
*/
|
13 |
/* ___
|
14 |
* / /\ GOTMLS Main Plugin File
|
31 |
* \ \::/ with this program; if not, write to the Free Software Foundation,
|
32 |
* \__\/ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
|
33 |
|
34 |
+
if (isset($_SERVER["SCRIPT_FILENAME"]) && __FILE__ == $_SERVER["SCRIPT_FILENAME"]) die('You are not allowed to call this page directly.<p>You could try starting <a href="/">here</a>.');
|
35 |
|
36 |
define("GOTMLS_plugin_path", dirname(__FILE__).'/');
|
37 |
load_plugin_textdomain('gotmls', false, basename(GOTMLS_plugin_path).'/languages');
|
46 |
|
47 |
function GOTMLS_menu() {
|
48 |
global $GOTMLS_settings_array;
|
49 |
+
if ($GOTMLS_settings_array["menu_group"] > 2 && is_multisite()) {
|
50 |
+
$_POST["GOTMLS_menu_group"] = 1;
|
51 |
+
$GOTMLS_settings_array["user_can"] = "manage_network";
|
52 |
+
} elseif (!isset($GOTMLS_settings_array["user_can"]))
|
53 |
+
$GOTMLS_settings_array["user_can"] = "activate_plugins";
|
54 |
+
if (isset($_POST["GOTMLS_menu_group"]) && is_numeric($_POST["GOTMLS_menu_group"])) {
|
55 |
$GOTMLS_settings_array["menu_group"] = $_POST["GOTMLS_menu_group"];
|
56 |
+
$capabilities = array();
|
57 |
+
if (current_user_can($GOTMLS_settings_array["user_can"]))
|
58 |
+
foreach (get_editable_roles() as $role)
|
59 |
+
$capabilities = array_merge($capabilities, $role["capabilities"]);
|
60 |
+
if (isset($_POST["GOTMLS_user_can"]) && in_array($_POST["GOTMLS_user_can"], $capabilities))
|
61 |
+
$GOTMLS_settings_array["user_can"] = $_POST["GOTMLS_user_can"];
|
62 |
update_option('GOTMLS_settings_array', $GOTMLS_settings_array);
|
63 |
}
|
64 |
$GOTMLS_Full_plugin_logo_URL = GOTMLS_images_path.'GOTMLS-16x16.gif';
|
65 |
$base_page = "GOTMLS-settings";
|
66 |
$base_function = "GOTMLS_settings";
|
|
|
67 |
$pluginTitle = "Anti-Malware";
|
68 |
$pageTitle = "$pluginTitle ".GOTMLS_Scan_Settings_LANGUAGE;
|
69 |
+
if (!function_exists("add_object_page") || $GOTMLS_settings_array["menu_group"])
|
70 |
+
$my_admin_page = add_menu_page($pageTitle, $pluginTitle, $GOTMLS_settings_array["user_can"], $base_page, $base_function, $GOTMLS_Full_plugin_logo_URL);
|
71 |
+
else
|
72 |
+
$my_admin_page = add_object_page($pageTitle, $pluginTitle, $GOTMLS_settings_array["user_can"], $base_page, $base_function, $GOTMLS_Full_plugin_logo_URL);
|
73 |
+
add_action('load-'.$my_admin_page, 'GOTMLS_admin_add_help_tab');
|
74 |
+
add_submenu_page($base_page, "$pluginTitle ".GOTMLS_Scan_Settings_LANGUAGE, GOTMLS_Scan_Settings_LANGUAGE, $GOTMLS_settings_array["user_can"], $base_page, $base_function);
|
75 |
+
add_submenu_page($base_page, "$pluginTitle ".GOTMLS_Run_Quick_Scan_LANGUAGE, GOTMLS_Run_Quick_Scan_LANGUAGE, $GOTMLS_settings_array["user_can"], "$base_page&scan_type=Quick+Scan", $base_function);
|
76 |
+
add_submenu_page($base_page, "$pluginTitle ".GOTMLS_View_Quarantine_LANGUAGE, GOTMLS_View_Quarantine_LANGUAGE, $GOTMLS_settings_array["user_can"], "GOTMLS-View-Quarantine", "GOTMLS_View_Quarantine");
|
77 |
+
}
|
78 |
+
|
79 |
+
function GOTMLS_admin_add_help_tab() {
|
80 |
+
global $GOTMLS_settings_array;
|
81 |
+
$GOTMLS_menu_groups = array(__("Main Menu Item placed below <b>Comments</b> and above <b>Appearance</b>",'gotmls'),__("Main Menu Item placed below <b>Settings</b>",'gotmls'));
|
82 |
+
if (is_multisite() && current_user_can("manage_network"))
|
83 |
+
$GOTMLS_menu_groups[] = __("ONLY SHOW for <b>Network Admins</b>",'gotmls');
|
84 |
+
$menu_opts = '<h5>'.__("Menu Item Placement Options",'gotmls').'</h5>';
|
85 |
+
foreach ($GOTMLS_menu_groups as $mg => $GOTMLS_menu_group)
|
86 |
+
$menu_opts .= '<div style="padding: 4px;" id="menu_group_div_'.$mg.'"><input type="radio" name="GOTMLS_menu_group" value="'.$mg.'"'.($GOTMLS_settings_array["menu_group"]==$mg?' checked':'').' onchange="document.GOTMLS_menu_Form.submit();" />'.$GOTMLS_menu_group.'</div>';
|
87 |
+
$screen = get_current_screen();
|
88 |
+
$screen->add_help_tab(array(
|
89 |
+
'id' => "GOTMLS_Getting_Started",
|
90 |
+
'title' => __("Getting Started", 'gotmls'),
|
91 |
+
'content' => '<p>'.__("Make sure the Definition Updates are current and Run a Complete Scan.").'</p><p>'.sprintf(__("If Known Threats are found and displayed in red then there will be a button to '%s'. If only Potentional Threats are found then there is no automatic fix because those are probably not malicious."), GOTMLS_Automatically_Fix_LANGUAGE).'</p>'
|
92 |
+
));
|
93 |
+
$screen->add_help_tab(array(
|
94 |
+
'id' => "GOTMLS_The_Quarantine",
|
95 |
+
'title' => __("The Quarantine", 'gotmls'),
|
96 |
+
'content' => '<p>'.__("A backup of the original infected files are placed in the Quarantine in case you need to restore them or just want to look at them later. You can delete these files if you don't want to save more.").'</p>'
|
97 |
+
));
|
98 |
+
$screen->add_help_tab(array(
|
99 |
+
'id' => 'GOTMLS_Menu_Placement',
|
100 |
+
'title' => __("Menu Placement", 'gotmls'),
|
101 |
+
'content' => '<form method="POST" name="GOTMLS_menu_Form">'.$menu_opts.'</form>'
|
102 |
+
));
|
103 |
}
|
104 |
|
105 |
+
function GOTMLS_display_header($optional_box = "") {
|
106 |
+
global $GOTMLS_onLoad, $GOTMLS_loop_execution_time, $GOTMLS_update_home, $GOTMLS_plugin_home, $GOTMLS_definitions_versions, $wp_version, $current_user, $GOTMLS_settings_array;
|
107 |
get_currentuserinfo();
|
108 |
$GOTMLS_url_parts = explode('/', GOTMLS_siteurl);
|
109 |
if (isset($_GET["check_site"]) && $_GET["check_site"] == 1)
|
110 |
+
echo '<br /><br /><div class="updated" id="check_site" style="z-index: 1234567; position: absolute; top: 1px; left: 1px; margin: 15px;"><img src="'.GOTMLS_images_path.'checked.gif" height=16 width=16 alt="✔"> '.GOTMLS_Tested_your_site_LANGUAGE.' ;-)</div><script type="text/javascript">window.parent.document.getElementById("check_site_warning").style.backgroundColor=\'#0C0\';</script><iframe style="width: 230px; height: 110px; position: absolute; right: 4px; bottom: 4px; border: none;" scrolling="no" src="https://wordpress.org/plugins/gotmls/stats/?compatibility%5Bversion%5D='.$wp_version.'&compatibility%5Btopic_version%5D='.GOTMLS_Version.'&compatibility%5Bcompatible%5D=1#compatibility-works"></iframe><a target="_blank" href="https://wordpress.org/plugins/gotmls/stats/?compatibility%5Bversion%5D='.$wp_version.'&compatibility%5Btopic_version%5D='.GOTMLS_Version.'&compatibility%5Bcompatible%5D=1#compatibility-works"><span style="width: 234px; height: 82px; position: absolute; right: 4px; bottom: 36px;"></span><span style="width: 345px; height: 32px; position: absolute; right: 84px; bottom: 4px;">Vote "Works" on WordPress.org -></span></a><style>#footer, #GOTMLS-metabox-container, #GOTMLS-right-sidebar, #admin-page-container, #wpadminbar, #adminmenuback, #adminmenuwrap, #adminmenu {display: none !important;} #wpbody-content {padding-bottom: 0;} #wpcontent, #footer {margin-left: 5px !important;}';
|
111 |
else
|
112 |
+
echo '<style>#GOTMLS-right-sidebar {float: right; margin-right: 0px;}';
|
113 |
$ver_info = GOTMLS_Version.'&p='.strtoupper(GOTMLS_plugin_dir).'&wp='.$wp_version.'&ts='.date("YmdHis").'&key='.GOTMLS_installation_key.'&d='.ur1encode(GOTMLS_siteurl);
|
114 |
$Update_Link = '<div style="text-align: center;"><a href="';
|
115 |
$new_version = "";
|
127 |
.rounded-corners {margin: 10px; border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; border: 1px solid #000;}
|
128 |
.shadowed-box {box-shadow: -3px 3px 3px #666; -moz-box-shadow: -3px 3px 3px #666; -webkit-box-shadow: -3px 3px 3px #666;}
|
129 |
.sidebar-box {background-color: #CCC;}
|
130 |
+
.GOTMLS-sidebar-links {list-style: none;}
|
131 |
+
.GOTMLS-sidebar-links li img {margin: 3px; height: 16px; vertical-align: middle;}
|
132 |
+
.GOTMLS-sidebar-links li {margin-bottom: 0 !important}
|
133 |
.popup-box {background-color: #FFC; display: none; position: absolute; left: 0px; z-index: 10;}
|
134 |
.shadowed-text {text-shadow: #00F -1px 1px 1px;}
|
135 |
.sub-option {float: left; margin: 3px 5px;}
|
142 |
.GOTMLS h2 {margin: 0 0 10px;}
|
143 |
.postbox {margin-right: 10px;}
|
144 |
#pastDonations li {list-style: none;}
|
|
|
145 |
#main-page-title {
|
146 |
+
background: url("'.$GLOBALS["GOTMLS"]["tmp"]["protocol"].'//gravatar.com/avatar/5feb789dd3a292d563fea3b885f786d6?s=64") no-repeat scroll 0 0 transparent;
|
147 |
+
height: 64px;
|
148 |
+
line-height: 58px;
|
149 |
margin: 10px 0 0;
|
150 |
padding: 0 0 0 84px;}
|
151 |
</style>
|
164 |
}
|
165 |
}
|
166 |
}
|
167 |
+
function checkAllFiles(check) {
|
168 |
+
var checkboxes = new Array();
|
169 |
+
checkboxes = document["GOTMLS_Form_clean"].getElementsByTagName("input");
|
170 |
+
for (var i=0; i<checkboxes.length; i++)
|
171 |
+
if (checkboxes[i].type == "checkbox")
|
172 |
+
checkboxes[i].checked = check;
|
173 |
+
}
|
174 |
+
function setvalAllFiles(val) {
|
175 |
+
var checkboxes = document.getElementById("GOTMLS_fixing");
|
176 |
+
if (checkboxes)
|
177 |
+
checkboxes.value = val;
|
178 |
+
}
|
179 |
function loadIframe(title) {
|
180 |
showhide("GOTMLS_iFrame", true);
|
181 |
showhide("GOTMLS_iFrame");
|
182 |
document.getElementById("windowTitle").innerHTML = title;
|
183 |
+
windowW = 0;
|
184 |
+
windowH = 0;
|
185 |
+
if (typeof window.innerWidth != "undefined") {
|
186 |
+
// the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight
|
187 |
+
windowW = window.innerWidth;
|
188 |
+
windowH = window.innerHeight;
|
189 |
+
} else if (typeof document.documentElement != "undefined" && typeof document.documentElement.clientWidth != "undefined" && document.documentElement.clientWidth != 0) {
|
190 |
+
// IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document)
|
191 |
+
windowW = document.documentElement.clientWidth;
|
192 |
+
windowH = document.documentElement.clientHeight;
|
193 |
+
} else {
|
194 |
+
// older versions of IE
|
195 |
+
windowW = document.getElementsByTagName("body")[0].clientWidth;
|
196 |
+
windowH = document.getElementsByTagName("body")[0].clientHeight;
|
197 |
+
}
|
198 |
+
if (windowW > 200)
|
199 |
+
windowW -= 20;
|
200 |
+
else
|
201 |
+
windowW = 200;
|
202 |
+
if (windowH > 200)
|
203 |
+
windowH -= 20;
|
204 |
+
else
|
205 |
+
windowH = 200;
|
206 |
+
if (px2num("'.$GOTMLS_settings_array["msg_position"][3].'") > windowW) {
|
207 |
+
curDiv.style.width = windowW + "px";
|
208 |
+
curDiv.style.left = "0px";
|
209 |
+
} else if ((px2num("'.$GOTMLS_settings_array["msg_position"][0].'") + px2num("'.$GOTMLS_settings_array["msg_position"][3].'")) > windowW) {
|
210 |
+
curDiv.style.left = (windowW - px2num("'.$GOTMLS_settings_array["msg_position"][3].'")) + "px";
|
211 |
+
}
|
212 |
+
if (px2num("'.$GOTMLS_settings_array["msg_position"][2].'") > windowH) {
|
213 |
+
curDiv.style.height = windowH + "px";
|
214 |
+
curDiv.style.top = "0px";
|
215 |
+
} else if ((px2num("'.$GOTMLS_settings_array["msg_position"][1].'") + px2num("'.$GOTMLS_settings_array["msg_position"][2].'")) > windowH) {
|
216 |
+
curDiv.style.top = (windowH - px2num("'.$GOTMLS_settings_array["msg_position"][2].'")) + "px";
|
217 |
+
}
|
218 |
showhide("div_file", true);
|
219 |
}
|
220 |
function cancelserver(divid) {
|
306 |
}
|
307 |
setDiv("div_file");
|
308 |
</script>
|
309 |
+
<h1 id="main-page-title">Anti-Malware by <img style="vertical-align: middle;" alt="ELI" src="'.$GLOBALS["GOTMLS"]["tmp"]["protocol"].'//gravatar.com/avatar/69ad8428e97469d0dcd64f1f60c07bd8?s=64" /> at GOTMLS.NET</h1>
|
310 |
+
<div id="GOTMLS-right-sidebar" style="width: 300px;" class="metabox-holder">
|
311 |
+
'.GOTMLS_box(GOTMLS_Plugin_Updates_LANGUAGE.' '.$wp_version, '<div id="findUpdates"><center>'.GOTMLS_Searching_updates_LANGUAGE.'<br /><img src="'.GOTMLS_images_path.'wait.gif" height=16 width=16 alt="Wait..." /><br /><input type="button" value="Cancel" onclick="cancelserver(\'findUpdates\');" /></center></div>'.$Update_Link, "stuffbox").'
|
312 |
+
'.GOTMLS_box(GOTMLS_Definition_Updates_LANGUAGE.' ('.$definition_version.')', '
|
313 |
+
<form id="updateform" method="post" name="updateform" action="'.GOTMLS_script_URI.'">
|
314 |
+
<img style="display: none; float: right; margin-right: 14px;" src="'.GOTMLS_images_path.'checked.gif" height=16 width=16 alt="definitions file updated" id="autoUpdateDownload" onclick="downloadUpdates(\'UpdateDownload\');">
|
315 |
+
<div id="Definition_Updates"><center>'.__("Searching for updates ...",'gotmls').'<br /><img src="'.GOTMLS_images_path.'wait.gif" height=16 width=16 alt="Wait..." /><br /><input type="button" value="Cancel" onclick="cancelserver(\'Definition_Updates\');" /></center></div>
|
316 |
+
<div id="autoUpdateForm" style="display: none;">
|
317 |
+
<input type="submit" name="auto_update" value="'.__("Download new definitions!",'gotmls').'">
|
318 |
+
</div>
|
319 |
+
</form>
|
320 |
+
<div id="registerKeyForm" style="display: none;">
|
321 |
+
'.__("If you have not already registered your Key then register now and get instant access to definition updates.<p>*All fields are required and I will NOT share your registration information with anyone.</p>",'gotmls').'
|
322 |
+
<form id="registerform" onsubmit="return sinupFormValidate(this);" action="'.$GOTMLS_update_home.'wp-login.php?action=register" method="post" name="registerform" target="GOTMLS_iFrame"><input type="hidden" name="redirect_to" id="register_redirect_to" value="/donate/"><input type="hidden" name="user_login" id="register_user_login" value="">
|
323 |
+
<div>'.__("Your Full Name:",'gotmls').'</div>
|
324 |
+
<div style="float: left; width: 50%;"><input style="width: 100%;" id="first_name" type="text" name="first_name" value="'.$current_user->user_firstname.'" /></div>
|
325 |
+
<div style="float: left; width: 50%;"><input style="width: 100%;" id="last_name" type="text" name="last_name" value="'.$current_user->user_lastname.'" /></div>
|
326 |
+
<div style="clear: left; width: 100%;">
|
327 |
+
<div>'.__("A password will be e-mailed to this address:",'gotmls').'</div>
|
328 |
+
<input style="width: 100%;" id="user_email" type="text" name="user_email" value="'.$current_user->user_email.'" /></div>
|
329 |
+
<div>
|
330 |
+
<div>'.__("Your WordPress Site URL:",'gotmls').'</div>
|
331 |
+
<input style="width: 100%;" id="user_url" type="text" name="user_url" value="'.GOTMLS_siteurl.'" readonly /></div>
|
332 |
+
<div>
|
333 |
+
<div>'.__("Plugin Installation Key:",'gotmls').'</div>
|
334 |
+
<input style="width: 100%;" id="installation_key" type="text" name="installation_key" value="'.GOTMLS_installation_key.'" readonly /><input id="old_key" type="hidden" name="old_key" value="'.md5($GOTMLS_url_parts[2]).'" /></div>
|
335 |
+
<input style="width: 100%;" id="wp-submit" type="submit" name="wp-submit" value="Register Now!" /></form></div>', "stuffbox").'
|
336 |
<script type="text/javascript">
|
337 |
stopCheckingUpdates = checkupdateserver("'.$GOTMLS_plugin_home.GOTMLS_update_images_path.'?js='.$ver_info.'", "findUpdates", "'.str_replace("://", "://www.", $GOTMLS_plugin_home).GOTMLS_update_images_path.'?js='.$ver_info.'");
|
|
|
|
|
|
|
338 |
function check_for_updates(chk) {
|
339 |
if (auto_img = document.getElementById("autoUpdateDownload")) {
|
340 |
auto_img.style.display="";
|
382 |
if (foundUpdates)
|
383 |
foundUpdates.style.display = "";
|
384 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
385 |
var divNAtext = false;
|
386 |
function loadGOTMLS() {
|
387 |
clearTimeout(divNAtext);
|
401 |
else
|
402 |
divNAtext=true;
|
403 |
</script>
|
404 |
+
'.GOTMLS_box(__("Links & External Resources",'gotmls'), '
|
|
|
405 |
<div id="pastDonations"></div>
|
406 |
<form name="ppdform" id="ppdform" action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank">
|
407 |
<input type="hidden" name="cmd" value="_donations">
|
426 |
<input type="hidden" name="cancel_return" value="'.$GOTMLS_update_home.GOTMLS_installation_key.'/donate/?donation-source=cancel">
|
427 |
<input type="image" id="pp_button" src="'.GOTMLS_images_path.'btn_donateCC_WIDE.gif" border="0" name="submitc" alt="'.__("Make a Donation with PayPal",'gotmls').'">
|
428 |
<div>
|
429 |
+
<ul class="GOTMLS-sidebar-links">
|
430 |
+
<li style="float: right;"><b>on <a target="_blank" href="https://profiles.wordpress.org/scheeeli#content-plugins">WordPress.org</a></b><ul class="GOTMLS-sidebar-links">
|
431 |
+
<li><a target="_blank" href="https://wordpress.org/plugins/'.GOTMLS_plugin_dir.'/faq/">Plugin FAQs</a></li>
|
432 |
+
<li><a target="_blank" href="https://wordpress.org/support/plugin/'.GOTMLS_plugin_dir.'">Forum Posts</a></li>
|
433 |
+
<li><a target="_blank" href="https://wordpress.org/support/view/plugin-reviews/'.GOTMLS_plugin_dir.'">Plugin Reviews</a></li>
|
434 |
</ul></li>
|
435 |
<li><img src="'.$GOTMLS_update_home.'/favicon.ico" border="0" alt="Plugin site:"><b><a target="_blank" href="'.$GOTMLS_update_home.'">GOTMLS.NET</a></b></li>
|
436 |
<li><img src="'.$GOTMLS_plugin_home.'/favicon.ico" border="0" alt="Developer site:"><b><a target="_blank" href="'.$GOTMLS_plugin_home.'/category/my-plugins/anti-malware/">Eli\'s Blog</a></b></li>
|
437 |
+
<li><img src="https://ssl.gstatic.com/ui/v1/icons/mail/favicon.ico" border="0" alt="mail:"><b><a target="_blank" href="mailto:eli@gotmls.net">Email Eli</a></b></li>
|
438 |
+
<li><iframe allowtransparency="true" frameborder="0" scrolling="no" src="https://platform.twitter.com/widgets/follow_button.html?screen_name=GOTMLS&show_count=false" style="width:125px; height:20px;"></iframe></li>
|
439 |
</ul>
|
440 |
</div>
|
441 |
</form>
|
442 |
+
<a target="_blank" href="http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site='.urlencode(GOTMLS_siteurl).'">Google Safe Browsing Diagnostic</a>', "stuffbox").'
|
443 |
+
'.GOTMLS_box(GOTMLS_Last_Scan_Status_LANGUAGE, GOTMLS_scan_log(), "stuffbox").'
|
|
|
444 |
'.$optional_box.'
|
445 |
+
</div>';
|
446 |
+
if (isset($GLOBALS["GOTMLS"]["tmp"]["stuffbox"]) && is_array($GLOBALS["GOTMLS"]["tmp"]["stuffbox"])) {
|
447 |
+
echo '
|
448 |
+
<script type="text/javascript">
|
449 |
+
function stuffbox_showhide(id) {
|
450 |
+
divx = document.getElementById(id);
|
451 |
+
if (divx) {
|
452 |
+
if (divx.style.display == "none" || arguments[1]) {';
|
453 |
+
$else = '
|
454 |
+
if (divx = document.getElementById("GOTMLS-right-sidebar"))
|
455 |
+
divx.style.width = "30px";
|
456 |
+
if (divx = document.getElementById("GOTMLS-main-section"))
|
457 |
+
divx.style.marginRight = "30px";';
|
458 |
+
foreach ($GLOBALS["GOTMLS"]["tmp"]["stuffbox"] as $md5 => $bTitle) {
|
459 |
+
echo "\nif (divx = document.getElementById('inside_$md5'))\n\tdivx.style.display = 'block';\nif (divx = document.getElementById('title_$md5'))\n\tdivx.innerHTML = '".GOTMLS_strip4java($bTitle)."';";
|
460 |
+
$else .= "\nif (divx = document.getElementById('inside_$md5'))\n\tdivx.style.display = 'none';\nif (divx = document.getElementById('title_$md5'))\n\tdivx.innerHTML = '".substr($bTitle, 0, 1)."';";
|
461 |
+
}
|
462 |
+
echo '
|
463 |
+
if (divx = document.getElementById("GOTMLS-right-sidebar"))
|
464 |
+
divx.style.width = "300px";
|
465 |
+
if (divx = document.getElementById("GOTMLS-main-section"))
|
466 |
+
divx.style.marginRight = "300px";
|
467 |
+
return true;
|
468 |
+
} else {'.$else.'
|
469 |
+
return false;
|
470 |
+
}
|
471 |
+
}
|
472 |
+
}
|
473 |
+
</script>';
|
474 |
+
}
|
475 |
+
echo '
|
476 |
<div id="admin-page-container">
|
477 |
+
<div id="GOTMLS-main-section" style="margin-right: 300px;">
|
478 |
+
<div class="metabox-holder GOTMLS" style="width: 100%;" id="GOTMLS-metabox-container">';
|
479 |
+
}
|
480 |
+
|
481 |
+
function GOTMLS_box($bTitle, $bContents, $bType = "postbox") {
|
482 |
+
$md5 = md5($bTitle);
|
483 |
+
if (isset($GLOBALS["GOTMLS"]["tmp"]["$bType"]) && is_array($GLOBALS["GOTMLS"]["tmp"]["$bType"]))
|
484 |
+
$GLOBALS["GOTMLS"]["tmp"]["$bType"]["$md5"] = "$bTitle";
|
485 |
+
else
|
486 |
+
$GLOBALS["GOTMLS"]["tmp"]["$bType"] = array("$md5"=>"$bTitle");
|
487 |
+
return '
|
488 |
+
<div id="box_'.$md5.'" class="'.$bType.'"><h3 title="Click to toggle" onclick="if (typeof '.$bType.'_showhide == \'function\'){'.$bType.'_showhide(\'inside_'.$md5.'\');}else{showhide(\'inside_'.$md5.'\');}" style="cursor: pointer;" class="hndle"><span id="title_'.$md5.'">'.$bTitle.'</span></h3>
|
489 |
+
<div id="inside_'.$md5.'" class="inside">
|
490 |
+
'.$bContents.'
|
491 |
+
</div>
|
492 |
+
</div>';
|
493 |
+
}
|
494 |
+
|
495 |
+
function GOTMLS_View_Quarantine() {
|
496 |
+
$entries = GOTMLS_getfiles($GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"]);
|
497 |
+
GOTMLS_display_header();
|
498 |
+
$Q_Page = '
|
499 |
+
<form method="POST" target="GOTMLS_iFrame" name="GOTMLS_Form_clean"><input type="hidden" id="GOTMLS_fixing" name="GOTMLS_fixing" value="1">
|
500 |
+
<ul name="found_Quarantine" id="found_Quarantine" class="GOTMLS_plugin known" style="background-color: #ccc; padding: 0;"><h3>';
|
501 |
+
if (is_array($entries) && ($key = array_search(".htaccess", $entries)))
|
502 |
+
unset($entries[$key]);
|
503 |
+
if (is_array($entries) && ($key = array_search("index.php", $entries)))
|
504 |
+
unset($entries[$key]);
|
505 |
+
if (is_array($entries) && count($entries)) {
|
506 |
+
$Q_Page .= (count($entries)?'<input type="checkbox" onchange="checkAllFiles(this.checked); document.getElementById(\'fix_button\').style.display = \'block\';"> Check all ':'').count($entries).' Item'.(count($entries)==1?'':'s').' in Quarantine<span style="float: right;">Date Quarantined</span></h3><p id="fix_button" style="display: none; float: right;"><input id="repair_button" type="submit" value="'.__("Restore SELECTED files from Quarantine",'gotmls').'" class="button-primary" onclick="if (confirm(\''.__("Are you sure you want to overwrite the previously cleaned files with the selected files in the Quarantine?",'gotmls').'\')) { setvalAllFiles(1); loadIframe(\'File Restoration Results\'); } else return false;" /><br /><input id="delete_button" type="submit" class="button-primary" value="'.__("Delete SELECTED files from Quarantine",'gotmls').'" style="background-color: #C33; color: #FFF; background-image: linear-gradient(to bottom, #C22, #933); border-color: #933 #933 #900; box-shadow: 0 1px 0 rgba(230, 120, 120, 0.5) inset; text-decoration: none; text-shadow: 0 1px 0 rgba(0, 0, 0, 0.1); margin-top: 10px;" onclick="if (confirm(\''.__("Are you sure you want to permanently delete the selected files in the Quarantine?",'gotmls').'\')) { setvalAllFiles(2); loadIframe(\'File Deletion Results\'); } else return false;" /></p>'.__("<p><b>The following items have been found to contain malicious code, they have been cleaned, and the original infected file contents have been saved here in the Quarantine. The code is safe here and you do not need to do anything further with these files.</b></p> FYI - these files are found in:",'gotmls').' '.$GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"];
|
507 |
+
sort($entries);
|
508 |
+
foreach ($entries as $entry) {
|
509 |
+
$file = GOTMLS_trailingslashit($GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"]).$entry;
|
510 |
+
$date = date("y-m-d-H-i",filemtime($file));
|
511 |
+
$Q_Page .= '<li><img src="'.GOTMLS_images_path.'/blocked.gif" height=16 width=16 alt="Q" style="float: left;">';
|
512 |
+
if (is_file($file) && GOTMLS_get_ext($entry) == "gotmls") {
|
513 |
+
$file_date = explode(".", $entry);
|
514 |
+
if (count($file_date) > 2 && strlen($file_date[0]) == 5)
|
515 |
+
$date = GOTMLS_sexagesimal($file_date[0]);
|
516 |
+
elseif (@rename($file, GOTMLS_trailingslashit($GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"]).GOTMLS_sexagesimal($date).".$entry"))
|
517 |
+
$file = GOTMLS_trailingslashit($GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"]).GOTMLS_sexagesimal($date).".$entry";
|
518 |
+
$Q_Page .= '<input type="checkbox" name="GOTMLS_fix[]" value="'.GOTMLS_encode($file).'" id="check_'.GOTMLS_encode($file).'" onchange="document.getElementById(\'fix_button\').style.display = \'block\';" />'.GOTMLS_error_link("View Quarantined File", $file).str_replace($root_path, "", GOTMLS_decode($file_date[count($file_date)-2]));
|
519 |
+
} else
|
520 |
+
$Q_Page .= '<li><img src="'.GOTMLS_images_path.'/blocked.gif" height=16 width=16 alt="?" style="float: left;">'.GOTMLS_error_link("Foreign File in Quarantine", $file).$file;
|
521 |
+
$date = explode("-", $date);
|
522 |
+
$Q_Page .= "</a> <span style='float: right; margin-right: 8px;'>(20$date[0]-$date[1]-$date[2] at $date[3]:$date[4])</span></li>";
|
523 |
+
}
|
524 |
+
} else
|
525 |
+
$Q_Page .= __("No Items in Quarantine",'gotmls').'</h3>';
|
526 |
+
echo GOTMLS_box("Quarantine", "$Q_Page</ul>\n</form>\n")."\n</div></div></div>";
|
527 |
}
|
528 |
|
529 |
function GOTMLS_settings() {
|
530 |
+
global $current_user, $wp_version, $GOTMLS_definitions_array, $GOTMLS_threat_levels, $GOTMLS_scanfiles, $GOTMLS_loop_execution_time, $GOTMLS_skip_ext, $GOTMLS_skip_dirs, $GOTMLS_settings_array, $GOTMLS_dirs_at_depth, $GOTMLS_dir_at_depth;
|
|
|
|
|
|
|
531 |
$GOTMLS_scan_groups = array();
|
532 |
$dirs = GOTMLS_explode_dir(__file__);
|
533 |
$scan_level = intval($GOTMLS_settings_array["scan_level"]);
|
574 |
$GOTMLS_settings_array['check_potential'] = $_POST['check_potential'];
|
575 |
GOTMLS_update_scan_log(array("settings" => $GOTMLS_settings_array));
|
576 |
$scan_opts = '';
|
577 |
+
$scan_optjs = "\n<script type=\"text/javascript\">\nfunction showOnly(what) {\n";
|
578 |
foreach ($GOTMLS_scan_groups as $mg => $GOTMLS_scan_group) {
|
579 |
$scan_optjs .= "document.getElementById('only$mg').style.display = 'none';\n";
|
580 |
+
$scan_opts .= '
|
581 |
+
<div style="position: relative; float: right; padding: 2px 0px 4px 30px;" id="scan_group_div_'.$mg.'"><input type="radio" name="scan_what" id="not-only'.$mg.'" value="'.$mg.'"'.($GOTMLS_settings_array["scan_what"]==$mg?' checked':'').' /><a style="text-decoration: none;" href="#scan_what" onclick="showOnly(\''.$mg.'\');document.getElementById(\'not-only'.$mg.'\').checked=true;">'.$GOTMLS_scan_group.'</a><br />
|
582 |
+
<div class="rounded-corners" style="position: absolute; display: none; background-color: #CCF; padding: 10px; z-index: 10;" id="only'.$mg.'"><div style="position: relative; padding: 0 40px 0 0;"><a class="rounded-corners" style="position: absolute; right: 0; margin: 0; padding: 0 4px; text-decoration: none; color: #C00; background-color: #FCC; border: solid #F00 1px;" href="#scan_what" onclick="showhide(\'only'.$mg.'\');">X</a><b>'.str_replace(" ", " ", __("Only Scan These Folders:",'gotmls')).'</b></div>';
|
583 |
$dir = implode(GOTMLS_slash(), array_slice($dirs, 0, -1 * (2 + $mg)));
|
584 |
$files = GOTMLS_getfiles($dir);
|
585 |
if (is_array($files))
|
586 |
foreach ($files as $file)
|
587 |
if (is_dir(GOTMLS_trailingslashit($dir).$file))
|
588 |
+
$scan_opts .= '
|
589 |
+
<br /><input type="checkbox" name="scan_only[]" value="'.$file.'" />'.$file;
|
590 |
+
$scan_opts .= '
|
591 |
+
</div>
|
592 |
+
</div>';
|
593 |
}
|
594 |
$scan_optjs .= "document.getElementById('only'+what).style.display = 'block';\n}\n</script>";
|
595 |
+
$scan_opts = '
|
596 |
+
<form method="POST" name="GOTMLS_Form" action="'.str_replace('&mt=', '&last_mt=', str_replace('&scan_type=', '&last_type=', GOTMLS_script_URI)).'"><input type="hidden" name="scan_type" id="scan_type" value="Complete Scan" />
|
597 |
+
<div style="float: left;"><b>'.__("What to scan:",'gotmls').'</b></div>
|
598 |
+
<div style="float: left;">'.$scan_opts.$scan_optjs.'</div>
|
599 |
+
<div style="float: left;" id="scanwhatfolder"></div><br style="clear: left;" />
|
600 |
+
<p><b>'.__("Scan Depth:",'gotmls').'</b> ('.__("how far do you want to drill down from your starting directory?",'gotmls').')</p>
|
601 |
+
<div style="padding: 0 30px;"><input type="text" value="'.$GOTMLS_settings_array["scan_depth"].'" name="scan_depth"> ('.__("-1 is infinite depth",'gotmls').')</div><p><b>'.__("What to look for:",'gotmls').'</b></p>
|
602 |
+
<div style="padding: 0 30px;">';
|
603 |
foreach ($GOTMLS_threat_levels as $threat_level_name=>$threat_level) {
|
604 |
+
$scan_opts .= '
|
605 |
+
<div style="padding: 0; position: relative;" id="check_'.$threat_level.'_div">';
|
606 |
if (isset($GOTMLS_definitions_array[$threat_level]))
|
607 |
+
$scan_opts .= '
|
608 |
+
<input type="checkbox" name="check[]" id="check_'.$threat_level.'_Yes" value="'.$threat_level.'"'.(in_array($threat_level,$GLOBALS["GOTMLS"]["log"]["settings"]["check"])?' checked':'').' /> <a style="text-decoration: none;" href="#check_'.$threat_level.'_div_0" onclick="document.getElementById(\'check_'.$threat_level.'_Yes\').checked=true;showhide(\'dont_check_'.$threat_level.'\');">';
|
609 |
else
|
610 |
+
$scan_opts .= '
|
611 |
+
<a title="'.__("Download Definition Updates to Use this feature",'gotmls').'"><img src="'.GOTMLS_images_path.'blocked.gif" height=16 width=16 alt="X">';
|
612 |
$scan_opts .= (isset($_GET['eli']) && isset($_SESSION['GOTMLS_'.$_GET['eli']][$threat_level])?print_r($_SESSION['GOTMLS_'.$_GET['eli']][$threat_level],1):"")."<b>$threat_level_name</b></a>";
|
613 |
if (!isset($GOTMLS_definitions_array[$threat_level]))
|
614 |
+
$scan_opts .= '<br />
|
615 |
+
<div style="padding: 14px;" id="check_'.$threat_level.'_div_NA">'.__("Registration of your Installation Key is required for this feature",'gotmls').'</div>';
|
616 |
elseif (isset($_GET['eli'])) {
|
617 |
+
$scan_opts .= '
|
618 |
+
<div style="padding: 0 20px; position: relative; top: -18px; display: none;" id="dont_check_'.$threat_level.'"><a class="rounded-corners" style="position: absolute; left: 0; margin: 0; padding: 0 4px; text-decoration: none; color: #C00; background-color: #FCC; border: solid #F00 1px;" href="#check_'.$threat_level.'_div_0" onclick="showhide(\'dont_check_'.$threat_level.'\');">X</a>';
|
619 |
foreach ($GOTMLS_definitions_array[$threat_level] as $threat_name => $threat_regex)
|
620 |
+
$scan_opts .= '<br />
|
621 |
+
<input type="checkbox" name="dont_check[]" value="'.htmlspecialchars($threat_name).'"'.(in_array($threat_name, $GOTMLS_settings_array["dont_check"])?' checked /><script>showhide("dont_check_'.$threat_level.'", true);</script>':' />').(isset($_GET['eli']) && isset($_SESSION['GOTMLS_'.$_GET['eli']][$threat_name])?print_r($_SESSION['GOTMLS_'.$_GET['eli']][$threat_name],1):"").$threat_name;
|
622 |
+
$scan_opts .= '
|
623 |
+
</div>';
|
624 |
}
|
625 |
+
$scan_opts .= '
|
626 |
+
</div>';
|
627 |
}
|
628 |
+
if (isset($_GET['eli'])) { if (isset($_SESSION['GOTMLS_'.$_GET['eli']]['total'])) {$scan_opts .=print_r($_SESSION['GOTMLS_'.$_GET['eli']]['total'],1); unset($_SESSION['GOTMLS_'.$_GET['eli']]);} $scan_opts .= '
|
629 |
+
<div style="padding: 10px;"><b>'.__("Custom RegExp:",'gotmls').'</b> ('.__("For very advanced users only. Do not use this without talking to Eli first. If used incorrectly you could easily break your site.",'gotmls').')<br /><input type="text" name="check_custom" style="width: 100%;" value="'.htmlspecialchars($GOTMLS_settings_array["check_custom"]).'" /></div>';}//still testing this option
|
630 |
+
$scan_opts .= '
|
631 |
+
</div>
|
632 |
+
<p>'.__("<b>Skip files with the following extentions:</b> (a comma separated list of file extentions to be excluded from the scan)",'gotmls').'</p>
|
633 |
+
<div style="padding: 0 30px;"><input type="text" name="exclude_ext" value="'.implode(",", $GOTMLS_settings_array["exclude_ext"]).'" style="width: 100%;" /></div>
|
634 |
+
<p>'.__("<b>Skip directories with the following names:</b> (a comma separated list of folders to be excluded from the scan)",'gotmls').'</p>
|
635 |
+
<div style="padding: 0 30px;"><input type="text" name="exclude_dir" value="'.implode(",", $GOTMLS_settings_array["exclude_dir"]).'" style="width: 100%;" /></div>
|
636 |
+
<p style="text-align: right;"><input type="submit" id="complete_scan" value="'.GOTMLS_Run_Complete_Scan_LANGUAGE.'" class="button-primary" /></p>
|
637 |
+
</form>';
|
638 |
@ob_start();
|
639 |
$OB_default_handlers = array("default output handler", "zlib output compression");
|
640 |
foreach (ob_list_handlers() as $OB_last_handler)
|
641 |
if (!in_array($OB_last_handler, $OB_default_handlers))
|
642 |
echo '<div class="error">'.sprintf(__("Another Plugin or Theme is using '%s' to handle output buffers. <br />This prevents actively outputing the buffer on-the-fly and will severely degrade the performance of this (and many other) Plugins. <br />Consider disabling caching and compression plugins (at least during the scanning process).",'gotmls'), $OB_last_handler).'</div>';
|
643 |
+
GOTMLS_display_header();
|
644 |
$scan_groups = array_merge(array(__("Scanned Files",'gotmls')=>"scanned",__("Selected Folders",'gotmls')=>"dirs",__("Scanned Folders",'gotmls')=>"dir",__("Skipped Folders",'gotmls')=>"skipdirs",__("Skipped Files",'gotmls')=>"skipped",__("Read/Write Errors",'gotmls')=>"errors",__("Quarantined Files",'gotmls')=>"bad"), $GOTMLS_threat_levels);
|
645 |
echo '<script type="text/javascript">
|
646 |
var percent = 0;
|
722 |
foreach ($scan_groups as $scan_name => $scan_group) {
|
723 |
$vars .= ", $scan_group=0";
|
724 |
if ($MAX++ == 6) {
|
725 |
+
echo "/*-->*"."/\n\tif ($scan_group > 0)\n\t\tscan_state = ' potential'; \n\telse\n\t\tscan_state = '';\n\tdivHTML += '</ul><ul style=\"text-align: left;\"><li class=\"GOTMLS_li\"><a href=\"admin.php?page=GOTMLS-View-Quarantine\" title=\"".GOTMLS_View_Quarantine_LANGUAGE."\" class=\"GOTMLS_plugin'+scan_state+'\">'+$scan_group+' '+($scan_group==1?('$scan_name').slice(0,-1):'$scan_name')+'</a></li>';\n/*<!--*"."/";
|
726 |
$found = "Found ";
|
727 |
$fix_button_js = "\n\t\tdis='block';";
|
728 |
} else {
|
729 |
+
if ($found && !in_array($scan_group, $GLOBALS["GOTMLS"]["log"]["settings"]["check"]))
|
730 |
$potential_threat = ' potential" title="'.__("You are not currently scanning for this type of threat!",'gotmls');
|
731 |
else
|
732 |
$potential_threat = "";
|
733 |
+
echo "/*-->*"."/\n\tif ($scan_group > 0) {\n\t\tscan_state = ' href=\"#found_$scan_group\" onclick=\"$li_js showhide(\\'found_$scan_group\\', true);\" class=\"GOTMLS_plugin $scan_group\"';$fix_button_js".($MAX>6?"\n\tshowhide('found_$scan_group', true);":"")."\n\t} else\n\t\tscan_state = ' class=\"GOTMLS_plugin$potential_threat\"';\n\tdivHTML += '<li class=\"GOTMLS_li\"><a'+scan_state+'>$found'+$scan_group+' '+($scan_group==1?('$scan_name').slice(0,-1):'$scan_name')+'</a></li>';\n/*<!--*"."/";
|
734 |
}
|
735 |
$li_js = "";
|
736 |
if ($MAX > 11)
|
745 |
document.getElementById("only_what").innerHTML = document.getElementById("only"+what).innerHTML;
|
746 |
}
|
747 |
var startTime = 0;
|
748 |
+
</script>'.GOTMLS_box(GOTMLS_Scan_Settings_LANGUAGE, $scan_opts);
|
749 |
+
if (isset($_REQUEST["scan_what"]) && is_numeric($_REQUEST["scan_what"]) && ($_REQUEST["scan_what"] > -1)) {
|
|
|
|
|
|
|
|
|
750 |
if (!isset($_REQUEST["scan_type"]))
|
751 |
$_REQUEST["scan_type"] = "Complete Scan";
|
752 |
update_option('GOTMLS_settings_array', $GOTMLS_settings_array);
|
753 |
+
foreach ($_POST as $name => $value) {
|
754 |
+
if (substr($name, 0, 10) != 'GOTMLS_fix') {
|
755 |
+
if (is_array($value)) {
|
756 |
+
foreach ($value as $val)
|
757 |
+
echo '<input type="hidden" name="'.$name.'[]" value="'.htmlspecialchars($val).'">';
|
758 |
+
} else
|
759 |
+
echo '<input type="hidden" name="'.$name.'" value="'.htmlspecialchars($value).'">';
|
|
|
|
|
|
|
|
|
|
|
|
|
760 |
}
|
|
|
|
|
761 |
}
|
762 |
+
echo '
|
763 |
+
<form method="POST" target="GOTMLS_iFrame" name="GOTMLS_Form_clean"><input type="hidden" id="GOTMLS_fixing" name="GOTMLS_fixing" value="1">
|
764 |
+
<script type="text/javascript">
|
765 |
+
showhide("inside_'.md5(GOTMLS_Scan_Settings_LANGUAGE).'");
|
766 |
+
</script>'.GOTMLS_box($_REQUEST["scan_type"].' Status', '<div id="status_text"><img src="'.GOTMLS_images_path.'wait.gif" height=16 width=16 alt="..."> '.GOTMLS_Loading_LANGUAGE.'</div><div id="status_bar"></div><p id="pause_button" style="display: none; position: absolute; left: 0; text-align: center; margin-left: -30px; padding-left: 50%;"><input type="button" value="Pause" class="button-primary" onclick="pauseresume(this);" id="resume_button" /></p><div id="status_counts"></div><p id="fix_button" style="display: none; text-align: center;"><input id="repair_button" type="submit" value="'.GOTMLS_Automatically_Fix_LANGUAGE.'" class="button-primary" onclick="loadIframe(\'Examine Results\');" /></p>');
|
767 |
+
$scan_groups_UL = "";
|
768 |
+
foreach ($scan_groups as $scan_name => $scan_group)
|
769 |
+
$scan_groups_UL .= "\n<ul name=\"found_$scan_group\" id=\"found_$scan_group\" class=\"GOTMLS_plugin $scan_group\" style=\"background-color: #ccc; display: none; padding: 0;\"><a class=\"rounded-corners\" name=\"link_$scan_group\" style=\"float: right; padding: 0 4px; margin: 5px 5px 0 30px; line-height: 16px; text-decoration: none; color: #C00; background-color: #FCC; border: solid #F00 1px;\" href=\"#found_top\" onclick=\"showhide('found_$scan_group');\">X</a><h3>$scan_name</h3>\n".($scan_group=='potential'?'<p> * '.__("NOTE: These are probably not malicious scripts (but it's a good place to start looking <u>IF</u> your site is infected and no Known Threats were found).",'gotmls').'</p>':($scan_group=='wp_login'?'<p> * '.__("NOTE: Your WordPress Login page has the old version of my brute-force protection installed. Upgrade this patch to improve the protection on the WordPress Login page and preserve the integrity of your WordPress core files. For more information on brute force attack prevention and the WordPress wp-login-php file ",'gotmls').' <a target="_blank" href="http://gotmls.net/tag/wp-login-php/">'.__("read my blog",'gotmls').'</a>.</p>':'<br />')).'</ul>';
|
770 |
+
if (!($dir = implode(GOTMLS_slash(), array_slice($dirs, 0, -1 * (2 + $_REQUEST["scan_what"]))))) $dir = "/";
|
771 |
+
GOTMLS_update_scan_log(array("scan" => array("dir" => $dir, "start" => time(), "type" => $_REQUEST["scan_type"])));
|
772 |
+
echo GOTMLS_box('<div style="float: right;"> ('.$GLOBALS["GOTMLS"]["log"]["scan"]["dir"].') </div>'.GOTMLS_Scan_Details_LANGUAGE, $scan_groups_UL);
|
773 |
+
while (in_array($OB_last_handler, $OB_default_handlers) && @ob_end_flush())
|
774 |
+
foreach (ob_list_handlers() as $OB_handler)
|
775 |
+
$OB_last_handler = $OB_handler;
|
776 |
+
@ob_start();
|
777 |
+
if ($_REQUEST["scan_type"] == "Quick Scan")
|
778 |
+
$li_js = "\nfunction testComplete() {\n\tif (percent != 100)\n\t\talert('".__("The Quick Scan was unable to finish because of a shortage of memory or a problem accessing a file. Please try using the Complete Scan, it is slower but it will handle these errors better and continue scanning the rest of the files.",'gotmls')."');\n}\nwindow.onload=testComplete;\n</script>\n<script type=\"text/javascript\">";
|
779 |
+
echo "\n<script type=\"text/javascript\">$li_js\n/*<!--*"."/";
|
780 |
+
if (is_dir($dir)) {
|
781 |
+
$GOTMLS_dirs_at_depth[0] = 1;
|
782 |
+
$GOTMLS_dir_at_depth[0] = 0;
|
783 |
+
if (!(isset($_GET["eli"]) && $_GET["eli"] == "NOQ")) {
|
784 |
+
$GOTMLS_dirs_at_depth[0]++;
|
785 |
+
GOTMLS_readdir($GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"]);
|
786 |
+
}
|
787 |
+
if (isset($_POST['scan_only']) && is_array($_POST['scan_only'])) {
|
788 |
+
$GOTMLS_dirs_at_depth[0] += (count($_POST['scan_only']) - 1);
|
789 |
+
foreach ($_POST['scan_only'] as $only_dir)
|
790 |
+
if (is_dir(GOTMLS_trailingslashit($dir).$only_dir))
|
791 |
+
GOTMLS_readdir(GOTMLS_trailingslashit($dir).$only_dir);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
792 |
} else
|
793 |
+
GOTMLS_readdir($dir);
|
794 |
+
} else
|
795 |
+
echo GOTMLS_return_threat("errors", "blocked", $dir, GOTMLS_error_link("Not a valid directory!"));
|
796 |
+
if ($_REQUEST["scan_type"] == "Quick Scan")
|
797 |
+
echo GOTMLS_update_status(__("Completed!",'gotmls'), 100);
|
798 |
+
else {
|
799 |
+
echo GOTMLS_update_status(__("Starting Scan ...",'gotmls'))."/*-->*"."/";
|
800 |
+
echo "\nvar scriptSRC = '".GOTMLS_script_URI."&no_error_reporting&GOTMLS_scan=';\nvar scanfilesArKeys = new Array('".implode("','", array_keys($GOTMLS_scanfiles))."');\nvar scanfilesArNames = new Array('Scanning ".implode("','Scanning ", $GOTMLS_scanfiles)."');".'
|
801 |
var scanfilesI = 0;
|
802 |
var stopScanning;
|
803 |
var gotStuckOn = "";
|
804 |
function scanNextDir(gotStuck) {
|
805 |
+
clearTimeout(stopScanning);
|
806 |
+
if (gotStuck > -1) {
|
807 |
+
if (scanfilesArNames[gotStuck].substr(0, 3) != "Re-") {
|
808 |
+
if (scanfilesArNames[gotStuck].substr(0, 9) == "Checking ") {
|
809 |
+
scanfilesArNames.push(scanfilesArNames[gotStuck]);
|
810 |
+
scanfilesArKeys.push(scanfilesArKeys[gotStuck]+"&GOTMLS_skip_file[]="+encodeURIComponent(scanfilesArNames[gotStuck].substr(9)));
|
|
|
|
|
|
|
|
|
811 |
} else {
|
812 |
+
scanfilesArNames.push("Re-"+scanfilesArNames[gotStuck]);
|
813 |
+
scanfilesArKeys.push(scanfilesArKeys[gotStuck]+"&GOTMLS_only_file=");
|
814 |
}
|
815 |
+
} else {
|
816 |
+
scanfilesArNames.push("Got Stuck "+scanfilesArNames[gotStuck]);
|
817 |
+
scanfilesArKeys.push(scanfilesArKeys[gotStuck]+"&GOTMLS_skip_dir="+scanfilesArKeys[gotStuck]);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
818 |
}
|
819 |
}
|
820 |
+
if (document.getElementById("resume_button").value != "Pause") {
|
821 |
+
stopScanning=setTimeout("scanNextDir(-1)", 1000);
|
822 |
+
startTime++;
|
823 |
+
}
|
824 |
+
else if (scanfilesI < scanfilesArKeys.length) {
|
825 |
+
document.getElementById("status_text").innerHTML = scanfilesArNames[scanfilesI];
|
826 |
+
var newscript = document.createElement("script");
|
827 |
+
newscript.setAttribute("src", scriptSRC+scanfilesArKeys[scanfilesI]);
|
828 |
+
divx = document.getElementById("found_scanned");
|
829 |
+
if (divx)
|
830 |
+
divx.appendChild(newscript);
|
831 |
+
stopScanning=setTimeout("scanNextDir("+(scanfilesI++)+")",'.$GOTMLS_loop_execution_time.'000);
|
832 |
+
}
|
833 |
+
}
|
834 |
+
startTime = ('.ceil(time()-$GLOBALS["GOTMLS"]["log"]["scan"]["start"]).'+3);
|
835 |
stopScanning=setTimeout("scanNextDir(-1)",3000);
|
836 |
function pauseresume(butt) {
|
837 |
+
if (butt.value == "Resume")
|
838 |
+
butt.value = "Pause";
|
839 |
+
else
|
840 |
+
butt.value = "Resume";
|
841 |
}
|
842 |
showhide("pause_button", true);'."\n/*<!--*"."/";
|
|
|
|
|
|
|
|
|
|
|
|
|
843 |
}
|
844 |
+
if (@ob_get_level()) {
|
845 |
+
GOTMLS_flush('script');
|
846 |
+
@ob_end_flush();
|
847 |
+
}
|
848 |
+
echo "/*-->*"."/\n</script>";
|
849 |
} else {
|
850 |
+
$head = "<?php if (file_exists(dirname(__FILE__).'/wp-content/plugins/gotmls/safe-load/wp-login.php')) require(dirname(__FILE__).'/wp-content/plugins/gotmls/safe-load/wp-login.php'); // Load Security Patch by GOTMLS.NET before the WordPress bootstrap. ?>";
|
851 |
+
$patch_attr = array(
|
852 |
+
array(
|
853 |
+
"icon" => "blocked",
|
854 |
+
"language" => __("NOTE: Your WordPress Login page is susceptible to a brute-force attack (just like any other login page). These types of attacks are becoming more prevalent these days and can sometimes cause your server to become slow or unresponsive, even if the attacks do not succeed in gaining access to your site. Applying this patch will block access to the WordPress Login page whenever this type of attack is detected."),
|
855 |
+
"status" => 'Not Installed',
|
856 |
+
"action" => 'Install Patch'
|
857 |
+
),
|
858 |
+
array(
|
859 |
+
"language" => __("NOTE: Your WordPress site has the current version of my brute-force Login protection installed."),
|
860 |
+
"action" => 'Uninstall Patch',
|
861 |
+
"status" => 'Enabled',
|
862 |
+
"icon" => "checked"
|
863 |
+
),
|
864 |
+
array(
|
865 |
+
"language" => __("NOTE: Your WordPress Login page has the old version of my brute-force protection installed. Upgrade this patch to improve the protection on the WordPress Login page and preserve the integrity of your WordPress core files."),
|
866 |
+
"action" => 'Upgrade Patch',
|
867 |
+
"status" => 'Out of Date',
|
868 |
+
"icon" => "threat"
|
869 |
+
)
|
870 |
+
);
|
871 |
+
$patch_status = 0;
|
872 |
+
$patch_action = "";
|
873 |
+
if (file_exists(dirname(__FILE__).'/../../../wp-config.php') && ($config = @file_get_contents(dirname(__FILE__).'/../../../wp-config.php')) && strlen($config) && ($head == substr($config, 0, strlen($head)))) {
|
874 |
+
if (isset($_POST["GOTMLS_patching"]) && @file_put_contents(dirname(__FILE__).'/../../../wp-config.php', str_replace($head, "", $config)))
|
875 |
+
$patch_action .= '<div class="error">'.__("Removed Brute-Force Protection",'gotmls').'</div>';
|
876 |
+
else
|
877 |
+
$patch_status = 1;
|
878 |
+
} elseif (isset($_POST["GOTMLS_patching"]) && strlen($config) && ($head != substr($config, 0, strlen($head))) && @file_put_contents(dirname(__FILE__).'/../../../wp-config.php', $head.$config)) {
|
879 |
+
$patch_action .= '<div class="updated">'.__("Installed Brute-Force Protection",'gotmls').'</div>';
|
880 |
+
$patch_status = 1;
|
881 |
+
}
|
882 |
+
if (file_exists(dirname(__FILE__).'/../../../wp-login.php') && ($GOTMLS_file_contents = @file_get_contents(dirname(__FILE__).'/../../../wp-login.php')) && strlen($GOTMLS_file_contents) && (preg_match('/if \(file_exists\(.+?(\/plugins\/gotmls\/safe-load\.php\')[\)\s]+require\(.+?\1\);/i', $GOTMLS_file_contents))) {
|
883 |
+
if (isset($_POST["GOTMLS_patching"]) && ($source = wp_remote_get("http://core.svn.wordpress.org/tags/".$wp_version.'/wp-login.php')) && is_array($source) && isset($source["body"]) && (strlen($source["body"]) > 500) && @file_put_contents(dirname(__FILE__).'/../../../wp-login.php', $source["body"]))
|
884 |
+
$patch_action .= '<div class="updated">'.__("Removed Old Brute-Force Login Patch",'gotmls').'</div>';
|
885 |
+
else
|
886 |
+
$patch_status = 2;
|
887 |
+
}
|
888 |
+
$sec_opts = $patch_action.'
|
889 |
+
<form method="POST" name="GOTMLS_Form_patch"><p><img src="'.GOTMLS_images_path.$patch_attr[$patch_status]["icon"].'.gif"><b>Brute-force Protection '.$patch_attr[$patch_status]["status"].'</b></p><p style="float: right;"><input type="submit" value="'.$patch_attr[$patch_status]["action"].'"><input type="hidden" name="GOTMLS_patching" value="1"></p><div style="padding: 0 30px;"> * '.$patch_attr[$patch_status]["language"].__(" For more information on Brute-Force attack prevention and the WordPress wp-login-php file ",'gotmls').' <a target="_blank" href="http://gotmls.net/tag/wp-login-php/">'.__("read my blog",'gotmls').'</a>.</div>';
|
890 |
+
$admin_notice = "";
|
891 |
+
if ($current_user->user_login == "admin") {
|
892 |
+
$admin_notice .= '</form>
|
893 |
+
<form method="POST" name="GOTMLS_Form_admin"><p><img src="'.GOTMLS_images_path.'threat.gif"><b>Admin Notice</b></p><div style="padding: 0 30px;">Your username is "admin", this is the most commonly guessed username by hackers and brute-force scripts. It is highly recommended that you change your username immediately.</div>';
|
894 |
+
}
|
895 |
+
echo GOTMLS_box("Aditional Security Options", $sec_opts.$admin_notice);
|
896 |
}
|
897 |
+
echo "\n</form>\n</div></div></div>";
|
898 |
}
|
899 |
|
900 |
function GOTMLS_set_plugin_action_links($links_array, $plugin_file) {
|
1021 |
$_GET["eli"] = "quarantine";
|
1022 |
}
|
1023 |
GOTMLS_scanfile($file);
|
1024 |
+
$fa = "";
|
1025 |
+
$function = 'GOTMLS_decode';
|
1026 |
+
$decode_list = array("Base64" => '/base64_decode\([\'"]([0-9\+\/\=a-z]+)[\'"]\)/', "Hex" => '/(\\\\x[0-9a-f]{2})/');
|
1027 |
+
if (isset($_GET[$function]) && is_array($_GET[$function])) {
|
1028 |
+
foreach ($_GET[$function] as $decode) {
|
1029 |
+
if (isset($decode_list[$decode])) {
|
1030 |
+
$GOTMLS_file_contents = preg_replace($decode_list[$decode].substr($GLOBALS["GOTMLS"]["tmp"]["default_ext"], 0, 2), $function.$decode.'("\1")', $GOTMLS_file_contents);
|
1031 |
+
$fa .= " $decode decoded";
|
1032 |
+
} else
|
1033 |
+
$fa .= " NO-$decode";
|
1034 |
+
}
|
1035 |
+
} elseif (isset($GOTMLS_threats_found) && is_array($GOTMLS_threats_found) && count($GOTMLS_threats_found)) {
|
1036 |
$f = 1;
|
1037 |
foreach ($GOTMLS_threats_found as $threats_found=>$threats_name) {
|
1038 |
$fpos = 0;
|
1047 |
}
|
1048 |
} else
|
1049 |
$fa = " No Threats Found";
|
1050 |
+
foreach ($decode_list as $decode => $regex)
|
1051 |
+
if (preg_match($regex.substr($GLOBALS["GOTMLS"]["tmp"]["default_ext"], 0, 1), $GOTMLS_file_contents))
|
1052 |
+
$fa .= ' <a href="'.GOTMLS_script_URI.'&'.$function.'[]='.$decode.'">decode['.$decode.']</a>';
|
1053 |
die("\n".'<script type="text/javascript">
|
1054 |
function select_text_range(ta_id, start, end) {
|
1055 |
ta_element = document.getElementById(ta_id);
|
1079 |
$li_js = "<script type=\"text/javascript\">\n/*<!--*"."/";
|
1080 |
}
|
1081 |
}
|
1082 |
+
die('<div id="check_site_warning" style="background-color: #F00;">'.sprintf(__("Because some threats were automatically fixed we need to check to make sure the removal did not break your site. If this stays Red and the frame below does not load please <a %s>revert the changes</a> made during the automated fix process.",'gotmls'), 'target="test_frame" href="admin.php?page=GOTMLS-View-Quarantine"').' <span style="color: #F00;">'.__("Never mind, it worked!",'gotmls').'</span></div><br /><iframe id="test_frame" name="test_frame" src="'.GOTMLS_script_URI.'&check_site=1" style="width: 100%; height: 200px"></iframe>'.$li_js."/*-->*"."/\nalert_repaired(0);\n</script>\n");
|
1083 |
} elseif (isset($_POST["GOTMLS_fixing"]))
|
1084 |
die("<script type=\"text/javascript\">\nwindow.parent.showhide('GOTMLS_iFrame', true);\nalert('".__("Nothing Selected to be Changed!",'gotmls')."');\n</script>".__("Done!",'gotmls'));
|
1085 |
if (isset($_POST["scan_level"]) && is_numeric($_POST["scan_level"]))
|
1102 |
update_option('GOTMLS_settings_array', $GOTMLS_settings_array);
|
1103 |
if (isset($_GET["GOTMLS_msg"]))
|
1104 |
die('<body style="margin: 0; padding: 0;">'.$_GET["GOTMLS_msg"].'</body>');
|
1105 |
+
add_contextual_help('GOTMLS-settings', __("<p>This is a help text for 'GOTMLS-settings' page.</p>", 'gotmls'));
|
1106 |
}
|
1107 |
if (function_exists("is_admin") && is_admin() && ((isset($_POST['GOTMLS_whitelist']) && isset($_POST['GOTMLS_chksum'])) || (isset($_GET["GOTMLS_scan"]) && is_dir(GOTMLS_decode($_GET["GOTMLS_scan"]))))) {
|
1108 |
@set_time_limit($GOTMLS_loop_execution_time-5);
|
languages/gotmls.pot
CHANGED
@@ -8,7 +8,7 @@ msgid ""
|
|
8 |
msgstr ""
|
9 |
"Project-Id-Version: GOTMLS\n"
|
10 |
"Report-Msgid-Bugs-To: eli@gotmls.net\n"
|
11 |
-
"POT-Creation-Date: 2014-
|
12 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
13 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
14 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
@@ -17,26 +17,39 @@ msgstr ""
|
|
17 |
"Content-Type: text/plain; charset=UTF-8\n"
|
18 |
"Content-Transfer-Encoding: 8bit\n"
|
19 |
|
20 |
-
|
21 |
-
msgid "Upgrade to %s now!"
|
22 |
msgstr ""
|
23 |
|
24 |
-
msgid "
|
25 |
msgstr ""
|
26 |
|
27 |
-
msgid "
|
28 |
msgstr ""
|
29 |
|
30 |
-
msgid "
|
31 |
msgstr ""
|
32 |
|
33 |
-
msgid "
|
34 |
msgstr ""
|
35 |
|
36 |
-
msgid "
|
37 |
msgstr ""
|
38 |
|
39 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
msgstr ""
|
41 |
|
42 |
msgid "Searching for updates ..."
|
@@ -60,22 +73,46 @@ msgstr ""
|
|
60 |
msgid "Plugin Installation Key:"
|
61 |
msgstr ""
|
62 |
|
63 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
64 |
msgstr ""
|
65 |
|
66 |
msgid "Make a Donation with PayPal"
|
67 |
msgstr ""
|
68 |
|
69 |
-
msgid "
|
70 |
msgstr ""
|
71 |
|
72 |
-
msgid "
|
73 |
msgstr ""
|
74 |
|
75 |
-
msgid "
|
76 |
msgstr ""
|
77 |
|
78 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
79 |
msgstr ""
|
80 |
|
81 |
msgid "Only Scan These Folders:"
|
@@ -114,9 +151,6 @@ msgstr ""
|
|
114 |
msgid "<b>Skip directories with the following names:</b> (a comma separated list of folders to be excluded from the scan)"
|
115 |
msgstr ""
|
116 |
|
117 |
-
msgid "Menu Item Placement Options"
|
118 |
-
msgstr ""
|
119 |
-
|
120 |
#, php-format
|
121 |
msgid "Another Plugin or Theme is using '%s' to handle output buffers. <br />This prevents actively outputing the buffer on-the-fly and will severely degrade the performance of this (and many other) Plugins. <br />Consider disabling caching and compression plugins (at least during the scanning process)."
|
122 |
msgstr ""
|
@@ -154,49 +188,43 @@ msgstr ""
|
|
154 |
msgid "You are not currently scanning for this type of threat!"
|
155 |
msgstr ""
|
156 |
|
157 |
-
msgid "
|
158 |
-
msgstr ""
|
159 |
-
|
160 |
-
msgid "Scan Details:"
|
161 |
-
msgstr ""
|
162 |
-
|
163 |
-
msgid "Restore SELECTED files from Quarantine"
|
164 |
msgstr ""
|
165 |
|
166 |
-
msgid "
|
167 |
msgstr ""
|
168 |
|
169 |
-
msgid "
|
170 |
msgstr ""
|
171 |
|
172 |
-
msgid "
|
173 |
msgstr ""
|
174 |
|
175 |
-
msgid "
|
176 |
msgstr ""
|
177 |
|
178 |
-
msgid "
|
179 |
msgstr ""
|
180 |
|
181 |
-
msgid "NOTE: These are
|
182 |
msgstr ""
|
183 |
|
184 |
-
msgid "NOTE: Your WordPress
|
185 |
msgstr ""
|
186 |
|
187 |
-
msgid "
|
188 |
msgstr ""
|
189 |
|
190 |
-
msgid "
|
191 |
msgstr ""
|
192 |
|
193 |
-
msgid "
|
194 |
msgstr ""
|
195 |
|
196 |
-
msgid "
|
197 |
msgstr ""
|
198 |
|
199 |
-
msgid "
|
200 |
msgstr ""
|
201 |
|
202 |
#, php-format
|
@@ -229,6 +257,9 @@ msgstr ""
|
|
229 |
msgid "Done!"
|
230 |
msgstr ""
|
231 |
|
|
|
|
|
|
|
232 |
msgid "Failed to list files in directory!"
|
233 |
msgstr ""
|
234 |
|
@@ -269,6 +300,15 @@ msgstr ""
|
|
269 |
msgid "Please make a donation for the use of this wonderful feature!"
|
270 |
msgstr ""
|
271 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
272 |
msgid "htaccess Threats"
|
273 |
msgstr ""
|
274 |
|
8 |
msgstr ""
|
9 |
"Project-Id-Version: GOTMLS\n"
|
10 |
"Report-Msgid-Bugs-To: eli@gotmls.net\n"
|
11 |
+
"POT-Creation-Date: 2014-12-13 20:31+0900\n"
|
12 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
13 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
14 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
17 |
"Content-Type: text/plain; charset=UTF-8\n"
|
18 |
"Content-Transfer-Encoding: 8bit\n"
|
19 |
|
20 |
+
msgid "Main Menu Item placed below <b>Comments</b> and above <b>Appearance</b>"
|
|
|
21 |
msgstr ""
|
22 |
|
23 |
+
msgid "Main Menu Item placed below <b>Settings</b>"
|
24 |
msgstr ""
|
25 |
|
26 |
+
msgid "ONLY SHOW for <b>Network Admins</b>"
|
27 |
msgstr ""
|
28 |
|
29 |
+
msgid "Menu Item Placement Options"
|
30 |
msgstr ""
|
31 |
|
32 |
+
msgid "Getting Started"
|
33 |
msgstr ""
|
34 |
|
35 |
+
msgid "Make sure the Definition Updates are current and Run a Complete Scan."
|
36 |
msgstr ""
|
37 |
|
38 |
+
#, php-format
|
39 |
+
msgid "If Known Threats are found and displayed in red then there will be a button to '%s'. If only Potentional Threats are found then there is no automatic fix because those are probably not malicious."
|
40 |
+
msgstr ""
|
41 |
+
|
42 |
+
msgid "The Quarantine"
|
43 |
+
msgstr ""
|
44 |
+
|
45 |
+
msgid "A backup of the original infected files are placed in the Quarantine in case you need to restore them or just want to look at them later. You can delete these files if you don't want to save more."
|
46 |
+
msgstr ""
|
47 |
+
|
48 |
+
msgid "Menu Placement"
|
49 |
+
msgstr ""
|
50 |
+
|
51 |
+
#, php-format
|
52 |
+
msgid "Upgrade to %s now!"
|
53 |
msgstr ""
|
54 |
|
55 |
msgid "Searching for updates ..."
|
73 |
msgid "Plugin Installation Key:"
|
74 |
msgstr ""
|
75 |
|
76 |
+
msgid "First Name is a required field!"
|
77 |
+
msgstr ""
|
78 |
+
|
79 |
+
msgid "Last Name is a required field!"
|
80 |
+
msgstr ""
|
81 |
+
|
82 |
+
msgid "Email Address is a required field!"
|
83 |
+
msgstr ""
|
84 |
+
|
85 |
+
msgid "Your WordPress Site URL is a required field!"
|
86 |
+
msgstr ""
|
87 |
+
|
88 |
+
msgid "Plugin Installation Key is a required field!"
|
89 |
+
msgstr ""
|
90 |
+
|
91 |
+
msgid "Submitting Registration ..."
|
92 |
+
msgstr ""
|
93 |
+
|
94 |
+
msgid "Links & External Resources"
|
95 |
msgstr ""
|
96 |
|
97 |
msgid "Make a Donation with PayPal"
|
98 |
msgstr ""
|
99 |
|
100 |
+
msgid "Restore SELECTED files from Quarantine"
|
101 |
msgstr ""
|
102 |
|
103 |
+
msgid "Are you sure you want to overwrite the previously cleaned files with the selected files in the Quarantine?"
|
104 |
msgstr ""
|
105 |
|
106 |
+
msgid "Delete SELECTED files from Quarantine"
|
107 |
msgstr ""
|
108 |
|
109 |
+
msgid "Are you sure you want to permanently delete the selected files in the Quarantine?"
|
110 |
+
msgstr ""
|
111 |
+
|
112 |
+
msgid "<p><b>The following items have been found to contain malicious code, they have been cleaned, and the original infected file contents have been saved here in the Quarantine. The code is safe here and you do not need to do anything further with these files.</b></p> FYI - these files are found in:"
|
113 |
+
msgstr ""
|
114 |
+
|
115 |
+
msgid "No Items in Quarantine"
|
116 |
msgstr ""
|
117 |
|
118 |
msgid "Only Scan These Folders:"
|
151 |
msgid "<b>Skip directories with the following names:</b> (a comma separated list of folders to be excluded from the scan)"
|
152 |
msgstr ""
|
153 |
|
|
|
|
|
|
|
154 |
#, php-format
|
155 |
msgid "Another Plugin or Theme is using '%s' to handle output buffers. <br />This prevents actively outputing the buffer on-the-fly and will severely degrade the performance of this (and many other) Plugins. <br />Consider disabling caching and compression plugins (at least during the scanning process)."
|
156 |
msgstr ""
|
188 |
msgid "You are not currently scanning for this type of threat!"
|
189 |
msgstr ""
|
190 |
|
191 |
+
msgid "NOTE: These are probably not malicious scripts (but it's a good place to start looking <u>IF</u> your site is infected and no Known Threats were found)."
|
|
|
|
|
|
|
|
|
|
|
|
|
192 |
msgstr ""
|
193 |
|
194 |
+
msgid "NOTE: Your WordPress Login page has the old version of my brute-force protection installed. Upgrade this patch to improve the protection on the WordPress Login page and preserve the integrity of your WordPress core files. For more information on brute force attack prevention and the WordPress wp-login-php file "
|
195 |
msgstr ""
|
196 |
|
197 |
+
msgid "read my blog"
|
198 |
msgstr ""
|
199 |
|
200 |
+
msgid "The Quick Scan was unable to finish because of a shortage of memory or a problem accessing a file. Please try using the Complete Scan, it is slower but it will handle these errors better and continue scanning the rest of the files."
|
201 |
msgstr ""
|
202 |
|
203 |
+
msgid "Completed!"
|
204 |
msgstr ""
|
205 |
|
206 |
+
msgid "Starting Scan ..."
|
207 |
msgstr ""
|
208 |
|
209 |
+
msgid "NOTE: Your WordPress Login page is susceptible to a brute-force attack (just like any other login page). These types of attacks are becoming more prevalent these days and can sometimes cause your server to become slow or unresponsive, even if the attacks do not succeed in gaining access to your site. Applying this patch will block access to the WordPress Login page whenever this type of attack is detected."
|
210 |
msgstr ""
|
211 |
|
212 |
+
msgid "NOTE: Your WordPress site has the current version of my brute-force Login protection installed."
|
213 |
msgstr ""
|
214 |
|
215 |
+
msgid "NOTE: Your WordPress Login page has the old version of my brute-force protection installed. Upgrade this patch to improve the protection on the WordPress Login page and preserve the integrity of your WordPress core files."
|
216 |
msgstr ""
|
217 |
|
218 |
+
msgid "Removed Brute-Force Protection"
|
219 |
msgstr ""
|
220 |
|
221 |
+
msgid "Installed Brute-Force Protection"
|
222 |
msgstr ""
|
223 |
|
224 |
+
msgid "Removed Old Brute-Force Login Patch"
|
225 |
msgstr ""
|
226 |
|
227 |
+
msgid " For more information on Brute-Force attack prevention and the WordPress wp-login-php file "
|
228 |
msgstr ""
|
229 |
|
230 |
#, php-format
|
257 |
msgid "Done!"
|
258 |
msgstr ""
|
259 |
|
260 |
+
msgid "<p>This is a help text for 'GOTMLS-settings' page.</p>"
|
261 |
+
msgstr ""
|
262 |
+
|
263 |
msgid "Failed to list files in directory!"
|
264 |
msgstr ""
|
265 |
|
300 |
msgid "Please make a donation for the use of this wonderful feature!"
|
301 |
msgstr ""
|
302 |
|
303 |
+
msgid "Automatically Fix SELECTED Files Now"
|
304 |
+
msgstr ""
|
305 |
+
|
306 |
+
msgid "Scan Details:"
|
307 |
+
msgstr ""
|
308 |
+
|
309 |
+
msgid "Scan Status"
|
310 |
+
msgstr ""
|
311 |
+
|
312 |
msgid "htaccess Threats"
|
313 |
msgstr ""
|
314 |
|
readme.txt
CHANGED
@@ -5,9 +5,9 @@ Author URI: http://wordpress.ieonly.com/category/my-plugins/anti-malware/
|
|
5 |
Contributors: scheeeli, gotmls
|
6 |
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QZHD8QHZ2E7PE
|
7 |
Tags: anti-malware, security, plugin, scan, automatic, repair, remove, malware, virus, threat, hacked, malicious, scripts, infection, timthumb, exploit, block, brute-force, wp-login, patch, antimalware
|
8 |
-
Version: 4.14.
|
9 |
-
Stable tag: 4.14.
|
10 |
-
Requires at least: 3.
|
11 |
Tested up to: 4.0.1
|
12 |
|
13 |
This Anti-Malware plugin searches for Malware and other Virus like threats and security vulnerabilities on your server and it helps you remove them.
|
@@ -24,7 +24,7 @@ This Anti-Malware plugin searches for Malware and other Virus like threats and s
|
|
24 |
* Customize Scan Setting.
|
25 |
* Run a Complete Scan from the Settings Page.
|
26 |
|
27 |
-
Updated
|
28 |
|
29 |
Register this plugin at [GOTMLS.NET](http://gotmls.net/) and get access to new definitions of "Known Threats" and added features like Automatic Removal, plus patches for specific security vulnerabilities like old versions of timthumb. Updated definition files can be downloaded automatically within the admin once your Key is registered. Otherwise, this plugin just scans for "Potential Threats" and leaves it up to you to identify and remove the malicious ones.
|
30 |
|
@@ -32,7 +32,7 @@ NOTICE: This plugin make use of a "phone home" feature to check for updates. Thi
|
|
32 |
|
33 |
**Special thanks to:**
|
34 |
|
35 |
-
*
|
36 |
* Jelena Kovacevic and Andrew Kurtis of webhostinghub.com for providing the Spanish translation.
|
37 |
|
38 |
== Installation ==
|
@@ -85,6 +85,10 @@ sucuri.net caches their scan results and will not refresh the scan until you cli
|
|
85 |
|
86 |
== Changelog ==
|
87 |
|
|
|
|
|
|
|
|
|
88 |
= 4.14.47 =
|
89 |
* Major upgrade to the protection for wp-login.php Brute-Force attempts.
|
90 |
* Fixes a bug in setting the permissions for read-only files so that they could still be cleaned.
|
@@ -262,6 +266,9 @@ sucuri.net caches their scan results and will not refresh the scan until you cli
|
|
262 |
|
263 |
== Upgrade Notice ==
|
264 |
|
|
|
|
|
|
|
265 |
= 4.14.47 =
|
266 |
Major upgrade to the protection for Brute-Force attempts, and a bug fix for resetting the permissions of read-only files.
|
267 |
|
5 |
Contributors: scheeeli, gotmls
|
6 |
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QZHD8QHZ2E7PE
|
7 |
Tags: anti-malware, security, plugin, scan, automatic, repair, remove, malware, virus, threat, hacked, malicious, scripts, infection, timthumb, exploit, block, brute-force, wp-login, patch, antimalware
|
8 |
+
Version: 4.14.50
|
9 |
+
Stable tag: 4.14.50
|
10 |
+
Requires at least: 3.3
|
11 |
Tested up to: 4.0.1
|
12 |
|
13 |
This Anti-Malware plugin searches for Malware and other Virus like threats and security vulnerabilities on your server and it helps you remove them.
|
24 |
* Customize Scan Setting.
|
25 |
* Run a Complete Scan from the Settings Page.
|
26 |
|
27 |
+
Updated December 12th
|
28 |
|
29 |
Register this plugin at [GOTMLS.NET](http://gotmls.net/) and get access to new definitions of "Known Threats" and added features like Automatic Removal, plus patches for specific security vulnerabilities like old versions of timthumb. Updated definition files can be downloaded automatically within the admin once your Key is registered. Otherwise, this plugin just scans for "Potential Threats" and leaves it up to you to identify and remove the malicious ones.
|
30 |
|
32 |
|
33 |
**Special thanks to:**
|
34 |
|
35 |
+
* Clarus Dignus for design suggestions and graphic design work.
|
36 |
* Jelena Kovacevic and Andrew Kurtis of webhostinghub.com for providing the Spanish translation.
|
37 |
|
38 |
== Installation ==
|
85 |
|
86 |
== Changelog ==
|
87 |
|
88 |
+
= 4.14.50 =
|
89 |
+
* Enabled the Brute-Force protection option directly from the Settings page.
|
90 |
+
* Fixed window position to auto-adjust on small screens.
|
91 |
+
|
92 |
= 4.14.47 =
|
93 |
* Major upgrade to the protection for wp-login.php Brute-Force attempts.
|
94 |
* Fixes a bug in setting the permissions for read-only files so that they could still be cleaned.
|
266 |
|
267 |
== Upgrade Notice ==
|
268 |
|
269 |
+
= 4.14.50 =
|
270 |
+
Enabled the Brute-Force protection from the Settings page and fixed window position on small screens.
|
271 |
+
|
272 |
= 4.14.47 =
|
273 |
Major upgrade to the protection for Brute-Force attempts, and a bug fix for resetting the permissions of read-only files.
|
274 |
|
safe-load/index.php
CHANGED
@@ -10,5 +10,5 @@ foreach (array("REMOTE_ADDR", "HTTP_HOST", "REQUEST_URI", "HTTP_REFERER", "HTTP_
|
|
10 |
$_SESSION["GOTMLS_detected_attacks"] .= (isset($_SERVER[$var])?"&SERVER_$var=".urlencode($_SERVER[$var]):"");
|
11 |
foreach (array("log") as $var)
|
12 |
$_SESSION["GOTMLS_detected_attacks"] .= (isset($_POST[$var])?"&POST_$var=".urlencode($_POST[$var]):"");
|
13 |
-
header("location: http://safe-load.gotmls.net/report.php?ver=4.14.
|
14 |
die();
|
10 |
$_SESSION["GOTMLS_detected_attacks"] .= (isset($_SERVER[$var])?"&SERVER_$var=".urlencode($_SERVER[$var]):"");
|
11 |
foreach (array("log") as $var)
|
12 |
$_SESSION["GOTMLS_detected_attacks"] .= (isset($_POST[$var])?"&POST_$var=".urlencode($_POST[$var]):"");
|
13 |
+
header("location: http://safe-load.gotmls.net/report.php?ver=4.14.50".$_SESSION["GOTMLS_detected_attacks"]);
|
14 |
die();
|