Anti-Malware Security and Brute-Force Firewall - Version 4.15.26

Version Description

  • Moved the quarantine files into the database and deleted the old directory in uploads.
  • Fixed some minor formatting issues in the HTML output on the settings page.
  • Added a warning message if base64_decode has been disabled.
Download this release

Release Info

Developer scheeeli
Plugin Icon 128x128 Anti-Malware Security and Brute-Force Firewall
Version 4.15.26
Comparing to
See all releases

Code changes from version 4.15.25 to 4.15.26

Files changed (4) hide show
  1. images/index.php +10 -50
  2. index.php +46 -17
  3. languages/gotmls.pot +1 -1
  4. readme.txt +4 -4
images/index.php CHANGED
@@ -10,11 +10,14 @@ function GOTMLS_define($DEF, $val) {
10
  define($DEF, $val);
11
  }}
12
 
13
- GOTMLS_define("GOTMLS_Version", "4.15.25");
 
 
 
 
 
 
14
  GOTMLS_define("GOTMLS_require_version", "3.3");
15
- GOTMLS_define("GOTMLS_plugin_dir", "gotmls");
16
- GOTMLS_define("GOTMLS_local_images_path", dirname(__FILE__)."/");
17
- GOTMLS_define("GOTMLS_plugin_path", dirname(GOTMLS_local_images_path).'/');
18
 
19
  if (!function_exists("__")) {
20
  function __($text, $domain) {
@@ -88,7 +91,6 @@ GOTMLS_define("GOTMLS_require_version_LANGUAGE", sprintf(__("This Plugin require
88
  GOTMLS_define("GOTMLS_Scan_Settings_LANGUAGE", __("Scan Settings",'gotmls'));
89
  GOTMLS_define("GOTMLS_Loading_LANGUAGE", __("Loading, Please Wait ...",'gotmls'));
90
  GOTMLS_define("GOTMLS_Automatically_Fix_LANGUAGE", __("Automatically Fix SELECTED Files Now",'gotmls'));
91
- GOTMLS_define("GOTMLS_update_images_path", "/wp-content/plugins/update/images/");
92
 
93
  if (isset($_SERVER['HTTP_HOST']))
94
  $SERVER_HTTP = 'HOST://'.$_SERVER['HTTP_HOST'];
@@ -117,12 +119,14 @@ if (function_exists("get_option")) {
117
  GOTMLS_define("GOTMLS_installation_key", md5(GOTMLS_siteurl));
118
  if (function_exists("plugins_url"))
119
  GOTMLS_define("GOTMLS_images_path", plugins_url('/', __FILE__));
 
 
120
  elseif (isset($_SERVER["DOCUMENT_ROOT"]) && ($_SERVER["DOCUMENT_ROOT"]) && strlen($_SERVER["DOCUMENT_ROOT"]) < __FILE__ && substr(__FILE__, 0, strlen($_SERVER["DOCUMENT_ROOT"])) == $_SERVER["DOCUMENT_ROOT"])
121
  GOTMLS_define("GOTMLS_images_path", substr(dirname(__FILE__), strlen($_SERVER["DOCUMENT_ROOT"])));
122
  elseif (isset($_SERVER["SCRIPT_FILENAME"]) && isset($_SERVER["DOCUMENT_ROOT"]) && ($_SERVER["DOCUMENT_ROOT"]) && strlen($_SERVER["DOCUMENT_ROOT"]) < strlen($_SERVER["SCRIPT_FILENAME"]) && substr($_SERVER["SCRIPT_FILENAME"], 0, strlen($_SERVER["DOCUMENT_ROOT"])) == $_SERVER["DOCUMENT_ROOT"])
123
  GOTMLS_define("GOTMLS_images_path", substr(dirname($_SERVER["SCRIPT_FILENAME"]), strlen($_SERVER["DOCUMENT_ROOT"])));
124
  else
125
- GOTMLS_define("GOTMLS_images_path", str_replace("/update/", GOTMLS_plugin_dir, GOTMLS_update_images_path));
126
 
127
  $GOTMLS_chmod_file = (0644);
128
  $GOTMLS_chmod_dir = (0755);
@@ -573,50 +577,6 @@ function GOTMLS_get_current_user_id() {
573
  return 1;
574
  }
575
 
576
- function GOTMLS_quarantine($path = "") {
577
- global $wpdb;//, $GOTMLS_new_contents, $GOTMLS_file_contents, $GOTMLS_threats_found;
578
- if (!isset($GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"])) {
579
- if (($upload = wp_upload_dir()) && isset($upload['basedir']))
580
- $GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"] = str_replace("/", GOTMLS_slash(), GOTMLS_trailingslashit($upload['basedir'])).'quarantine';
581
- else
582
- $GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"] = false;
583
- }
584
- if ($GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"] && is_dir($GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"])) {
585
- $entries = GOTMLS_getfiles($GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"]);
586
- if (is_array($entries) && count($entries)) {
587
- foreach ($entries as $entry) {
588
- if (is_file($file = GOTMLS_trailingslashit($GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"]).$entry)) {
589
- if (GOTMLS_get_ext($entry) == "gotmls" && ($GOTMLS_file_contents = file_get_contents($file))) {
590
- $insert = array("post_author"=>GOTMLS_get_current_user_id(), "ping_status"=>"imported", "post_status"=>"private", "post_type"=>"GOTMLS_quarantine", "post_content"=>GOTMLS_encode($GOTMLS_file_contents), "post_mime_type"=>md5($GOTMLS_file_contents));//! comment_status post_password post_name to_ping post_parent guid menu_order";
591
- if (!($insert["comment_count"] = @filesize($file)))
592
- $insert["comment_count"] = strlen($GOTMLS_file_contents);
593
- $file_date = explode(".", $entry);
594
- $insert["post_date"] = date("Y-m-d H:i:s", filemtime($file));
595
- $insert["post_date_gmt"] = $insert["post_date"];
596
- $insert["post_modified"] = $insert["post_date"];
597
- $match = '/^(20)?([0-5][0-9])[\-: \/]*(0*[1-9]|1[0-2])[\-: \/]*(0*[1-9]|[12][0-9]|3[01])[\-: \/]*([0-5][0-9])[\-: \/]*([0-5][0-9])$/';
598
- if (count($file_date) > 2 && strlen($file_date[0]) == 5 && preg_match($match, GOTMLS_sexagesimal($file_date[0])))
599
- $insert["post_modified"] = GOTMLS_sexagesimal($file_date[0]).":00";
600
- elseif (count($file_date) > 3 && strlen($file_date[1]) == 5 && preg_match($match, GOTMLS_sexagesimal($file_date[1])))
601
- $insert["post_modified"] = GOTMLS_sexagesimal($file_date[1]).":00";
602
- $insert["post_modified_gmt"] = $insert["post_modified"];
603
- $insert["post_title"] = GOTMLS_decode($file_date[count($file_date)-2]);
604
- if (is_file($insert["post_title"]) && ($GOTMLS_new_contents = file_get_contents($insert["post_title"])))
605
- $insert["post_content_filtered"] = GOTMLS_encode($GOTMLS_new_contents);
606
- //! pinged post_excerpt
607
- if ($wpdb->insert($wpdb->posts, $insert))
608
- unlink(trailingslashit($GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"]).$entry);
609
- } elseif (basename($GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"]) == "quarantine")
610
- unlink(trailingslashit($GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"]).$entry);
611
- }
612
- }
613
- } elseif (basename($GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"]) == "quarantine")
614
- rmdir($GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"]);
615
- }
616
- if ($path)
617
- return GOTMLS_trailingslashit($GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"]).(is_file($file)?GOTMLS_sexagesimal(date("y-m-d-H-i", filectime($file))).'.'.GOTMLS_sexagesimal(date("y-m-d-H-i", filemtime($file))):GOTMLS_sexagesimal(date("y-m-d-H-i", time()))).'.'.GOTMLS_encode($file?$file:__FILE__).'.GOTMLS';
618
- }
619
-
620
  function GOTMLS_update_status($status, $percent = -1) {
621
  if (!(isset($GLOBALS["GOTMLS"]["log"]["scan"]["start"]) && is_numeric($GLOBALS["GOTMLS"]["log"]["scan"]["start"])))
622
  $GLOBALS["GOTMLS"]["log"]["scan"]["start"] = time();
10
  define($DEF, $val);
11
  }}
12
 
13
+ $file = basename(__FILE__);
14
+ GOTMLS_define("GOTMLS_local_images_path", substr(__FILE__, 0, strlen(__FILE__) - strlen($file)));
15
+ GOTMLS_define("GOTMLS_plugin_path", substr(dirname(__FILE__), 0, strlen(dirname(__FILE__)) - strlen(basename(dirname(__FILE__)))));
16
+ if (is_file(GOTMLS_plugin_path.$file) && ($contents = @file_get_contents(GOTMLS_plugin_path.$file)) && preg_match('/\nversion:\s*([0-9\.]+)/i', $contents, $match))
17
+ GOTMLS_define("GOTMLS_Version", $match[1]);
18
+ else
19
+ GOTMLS_define("GOTMLS_Version", "Unknown");
20
  GOTMLS_define("GOTMLS_require_version", "3.3");
 
 
 
21
 
22
  if (!function_exists("__")) {
23
  function __($text, $domain) {
91
  GOTMLS_define("GOTMLS_Scan_Settings_LANGUAGE", __("Scan Settings",'gotmls'));
92
  GOTMLS_define("GOTMLS_Loading_LANGUAGE", __("Loading, Please Wait ...",'gotmls'));
93
  GOTMLS_define("GOTMLS_Automatically_Fix_LANGUAGE", __("Automatically Fix SELECTED Files Now",'gotmls'));
 
94
 
95
  if (isset($_SERVER['HTTP_HOST']))
96
  $SERVER_HTTP = 'HOST://'.$_SERVER['HTTP_HOST'];
119
  GOTMLS_define("GOTMLS_installation_key", md5(GOTMLS_siteurl));
120
  if (function_exists("plugins_url"))
121
  GOTMLS_define("GOTMLS_images_path", plugins_url('/', __FILE__));
122
+ elseif (function_exists("plugin_dir_url"))
123
+ GOTMLS_define("GOTMLS_images_path", plugin_dir_url(__FILE__));
124
  elseif (isset($_SERVER["DOCUMENT_ROOT"]) && ($_SERVER["DOCUMENT_ROOT"]) && strlen($_SERVER["DOCUMENT_ROOT"]) < __FILE__ && substr(__FILE__, 0, strlen($_SERVER["DOCUMENT_ROOT"])) == $_SERVER["DOCUMENT_ROOT"])
125
  GOTMLS_define("GOTMLS_images_path", substr(dirname(__FILE__), strlen($_SERVER["DOCUMENT_ROOT"])));
126
  elseif (isset($_SERVER["SCRIPT_FILENAME"]) && isset($_SERVER["DOCUMENT_ROOT"]) && ($_SERVER["DOCUMENT_ROOT"]) && strlen($_SERVER["DOCUMENT_ROOT"]) < strlen($_SERVER["SCRIPT_FILENAME"]) && substr($_SERVER["SCRIPT_FILENAME"], 0, strlen($_SERVER["DOCUMENT_ROOT"])) == $_SERVER["DOCUMENT_ROOT"])
127
  GOTMLS_define("GOTMLS_images_path", substr(dirname($_SERVER["SCRIPT_FILENAME"]), strlen($_SERVER["DOCUMENT_ROOT"])));
128
  else
129
+ GOTMLS_define("GOTMLS_images_path", "/wp-content/plugins/update/images/");
130
 
131
  $GOTMLS_chmod_file = (0644);
132
  $GOTMLS_chmod_dir = (0755);
577
  return 1;
578
  }
579
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
580
  function GOTMLS_update_status($status, $percent = -1) {
581
  if (!(isset($GLOBALS["GOTMLS"]["log"]["scan"]["start"]) && is_numeric($GLOBALS["GOTMLS"]["log"]["scan"]["start"])))
582
  $GLOBALS["GOTMLS"]["log"]["scan"]["start"] = time();
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.15.25
12
  */
13
  if (isset($_SERVER["DOCUMENT_ROOT"]) && ($SCRIPT_FILE = str_replace($_SERVER["DOCUMENT_ROOT"], "", isset($_SERVER["SCRIPT_FILENAME"])?$_SERVER["SCRIPT_FILENAME"]:isset($_SERVER["SCRIPT_NAME"])?$_SERVER["SCRIPT_NAME"]:"")) && strlen($SCRIPT_FILE) > strlen("/".basename(__FILE__)) && substr(__FILE__, -1 * strlen($SCRIPT_FILE)) == substr($SCRIPT_FILE, -1 * strlen(__FILE__)))
14
  include(dirname(__FILE__)."/safe-load/index.php");
@@ -119,7 +119,7 @@ function GOTMLS_display_header($optional_box = "") {
119
  echo '<div id="check_site" style="z-index: 1234567;"><img src="'.GOTMLS_images_path.'checked.gif" height=16 width=16 alt="&#x2714;"> '.__("Tested your site. It appears we didn't break anything",'gotmls').' ;-)</div><script type="text/javascript">window.parent.document.getElementById("check_site_warning").style.backgroundColor=\'#0C0\';</script><li>Please <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">Vote "Works"</a> or <a target="_blank" href="https://wordpress.org/support/view/plugin-reviews/gotmls#postform">write a "Five-Star" Reviews</a> on WordPress.org if you like this plugin.</li><style>#footer, #GOTMLS-metabox-container, #GOTMLS-right-sidebar, #admin-page-container, #wpadminbar, #adminmenuback, #adminmenuwrap, #adminmenu, .error, .updated, .update-nag {display: none !important;} #wpbody-content {padding-bottom: 0;} #wpbody, html.wp-toolbar {padding-top: 0 !important;} #wpcontent, #footer {margin-left: 5px !important;}';
120
  else
121
  echo '<style>#GOTMLS-right-sidebar {float: right; margin-right: 0px;}';
122
- $Update_Definitions = GOTMLS_plugin_home.'definitions.js'.$GLOBALS["GOTMLS"]["tmp"]["Definition"]["Updates"].'&js='.GOTMLS_Version.'&p='.strtoupper(GOTMLS_plugin_dir).'&wp='.$wp_version.'&ts='.date("YmdHis").'&key='.GOTMLS_installation_key.'&d='.ur1encode(GOTMLS_siteurl);
123
  $Update_Link = '<div style="text-align: center;"><a href="';
124
  $new_version = "";
125
  $file = basename(GOTMLS_plugin_path).'/index.php';
@@ -478,9 +478,9 @@ setDiv("div_file");
478
  <div>
479
  <ul class="GOTMLS-sidebar-links">
480
  <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">
481
- <li><a target="_blank" href="https://wordpress.org/plugins/'.GOTMLS_plugin_dir.'/faq/">Plugin FAQs</a></li>
482
- <li><a target="_blank" href="https://wordpress.org/support/plugin/'.GOTMLS_plugin_dir.'">Forum Posts</a></li>
483
- <li><a target="_blank" href="https://wordpress.org/support/view/plugin-reviews/'.GOTMLS_plugin_dir.'">Plugin Reviews</a></li>
484
  </ul></li>
485
  <li><img src="//gravatar.com/avatar/5feb789dd3a292d563fea3b885f786d6?s=16" border="0" alt="Plugin site:"><b><a target="_blank" href="'.GOTMLS_plugin_home.'">GOTMLS.NET</a></b></li>
486
  <li><img src="//gravatar.com/avatar/8151cac22b3fc543d099241fd573d176?s=16" border="0" alt="Developer site:"><b><a target="_blank" href="'.GOTMLS_blog_home.'/category/my-plugins/anti-malware/">Eli\'s Blog</a></b></li>
@@ -619,6 +619,45 @@ function GOTMLS_get_whitelists() {
619
 
620
  function GOTMLS_get_quarantine($only = false) {
621
  global $wpdb, $current_user, $post;//, $GOTMLS_new_contents, $GOTMLS_file_contents, $GOTMLS_threats_found;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
622
  $Q_Page = '
623
  <form method="POST" target="GOTMLS_iFrame" name="GOTMLS_Form_clean"><input type="hidden" id="GOTMLS_fixing" name="GOTMLS_fixing" value="1">';
624
  $args = array('posts_per_page' => -1, 'orderby' => 'date', 'post_type' => 'GOTMLS_quarantine', "post_status" => "private");
@@ -633,7 +672,6 @@ function GOTMLS_get_quarantine($only = false) {
633
  $root_path = implode(GOTMLS_slash(), array_slice(GOTMLS_explode_dir(__file__), 0, (2 + intval($GLOBALS["GOTMLS"]["tmp"]["settings_array"]["scan_level"])) * -1));
634
  while ($my_query->have_posts()) {
635
  $my_query->the_post();
636
- $clean_file = GOTMLS_encode($post->post_title);
637
  $Q_Page .= '
638
  <li id="GOTMLS_quarantine_'.$post->ID.'" class="GOTMLS_quarantine_item"><span class="GOTMLS_date">'.$post->post_date_gmt.'</span><span class="GOTMLS_date">'.$post->post_modified_gmt.'</span><input type="checkbox" name="GOTMLS_fix[]" value="'.$post->ID.'" id="check_'.$post->ID.'" onchange="document.getElementById(\'quarantine_buttons\').style.display = \'block\';" /><img src="'.GOTMLS_images_path.'blocked.gif" height=16 width=16 alt="Q">'.GOTMLS_error_link(__("View Quarantined File",'gotmls'), $post->ID).str_replace($root_path, "...", $post->post_title)."</a></li>\n";
639
  }
@@ -921,11 +959,7 @@ var startTime = 0;
921
  if (is_dir($dir)) {
922
  $GOTMLS_dirs_at_depth[0] = 1;
923
  $GOTMLS_dir_at_depth[0] = 0;
924
- /* if (!(isset($GLOBALS["GOTMLS"]["tmp"]["settings_array"]['skip_quarantine']) && $GLOBALS["GOTMLS"]["tmp"]["settings_array"]['skip_quarantine'])) {
925
- $GOTMLS_dirs_at_depth[0]++;
926
- GOTMLS_readdir($GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"]);
927
- }
928
- */ if (isset($_POST['scan_only']) && is_array($_POST['scan_only'])) {
929
  $GOTMLS_dirs_at_depth[0] += (count($_POST['scan_only']) - 1);
930
  foreach ($_POST['scan_only'] as $only_dir)
931
  if (is_dir(GOTMLS_trailingslashit($dir).$only_dir))
@@ -1325,11 +1359,6 @@ function GOTMLS_init() {
1325
  if (!file_exists($file))
1326
  die(GOTMLS_html_tags(array("html" => array("body" => sprintf(__("The file %s does not exist, it must have already been deleted.",'gotmls'), $file)."<script type=\"text/javascript\">\nwindow.parent.showhide('GOTMLS_iFrame', true);\n</script>"))));
1327
  else {
1328
- $clean_file = $file;
1329
- if (is_numeric($file) && $file == GOTMLS_quarantine($file)) {
1330
- $clean_file = 'Quarantined: '.GOTMLS_decode(array_pop(explode(".", '.'.substr($file, strlen(dirname($file))+1, -7))));
1331
- $_GET["eli"] = "quarantine";
1332
- }
1333
  GOTMLS_scanfile($file);
1334
  $fa = "";
1335
  $function = 'GOTMLS_decode';
@@ -1375,7 +1404,7 @@ function GOTMLS_init() {
1375
  }
1376
  }
1377
  window.parent.showhide("GOTMLS_iFrame", true);
1378
- </script><table style="top: 0px; left: 0px; width: 100%; height: 100%; position: absolute;"><tr><td style="width: 100%"><form style="margin: 0;" method="post"'.(is_file($clean_file)?' onsubmit="return confirm(\''.__("Are you sure this file is not infected and you want to ignore it in future scans?",'gotmls').'\');"><input type="hidden" name="GOTMLS_whitelist" value="'.GOTMLS_encode($clean_file).'"><input type="hidden" name="GOTMLS_chksum" value="'.md5($GOTMLS_file_contents).'O'.GOTMLS_installation_key.'"><input type="submit" value="Whitelist this file" style="float: right;">':'>').'</form><div id="fileperms" class="shadowed-box rounded-corners" style="display: none; position: absolute; left: 8px; top: 29px; background-color: #ccc; border: medium solid #C00; box-shadow: -3px 3px 3px #666; border-radius: 10px; padding: 10px;"><b>File Details</b><br />encoding: '.mb_detect_encoding($GOTMLS_file_contents).'<br />size: '.strlen($GOTMLS_file_contents).' ('.filesize($file).'bytes)<br />permissions: '.GOTMLS_fileperms($file).'<br />modified:'.date(" Y-m-d H:i:s ", filemtime($file)).'<br />changed:'.date(" Y-m-d H:i:s ", filectime($file)).'</div><div style="overflow: auto;"><span onmouseover="document.getElementById(\'fileperms\').style.display=\'block\';" onmouseout="document.getElementById(\'fileperms\').style.display=\'none\';">'.__("Potential threats in file:",'gotmls').'</span> ('.$fa.' )</div></td></tr><tr><td style="height: 100%"><textarea id="ta_file" style="width: 100%; height: 100%">'.htmlentities(str_replace("\r", "", $GOTMLS_file_contents)).'</textarea></td></tr></table>');
1379
  }
1380
  }
1381
  }
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.15.26
12
  */
13
  if (isset($_SERVER["DOCUMENT_ROOT"]) && ($SCRIPT_FILE = str_replace($_SERVER["DOCUMENT_ROOT"], "", isset($_SERVER["SCRIPT_FILENAME"])?$_SERVER["SCRIPT_FILENAME"]:isset($_SERVER["SCRIPT_NAME"])?$_SERVER["SCRIPT_NAME"]:"")) && strlen($SCRIPT_FILE) > strlen("/".basename(__FILE__)) && substr(__FILE__, -1 * strlen($SCRIPT_FILE)) == substr($SCRIPT_FILE, -1 * strlen(__FILE__)))
14
  include(dirname(__FILE__)."/safe-load/index.php");
119
  echo '<div id="check_site" style="z-index: 1234567;"><img src="'.GOTMLS_images_path.'checked.gif" height=16 width=16 alt="&#x2714;"> '.__("Tested your site. It appears we didn't break anything",'gotmls').' ;-)</div><script type="text/javascript">window.parent.document.getElementById("check_site_warning").style.backgroundColor=\'#0C0\';</script><li>Please <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">Vote "Works"</a> or <a target="_blank" href="https://wordpress.org/support/view/plugin-reviews/gotmls#postform">write a "Five-Star" Reviews</a> on WordPress.org if you like this plugin.</li><style>#footer, #GOTMLS-metabox-container, #GOTMLS-right-sidebar, #admin-page-container, #wpadminbar, #adminmenuback, #adminmenuwrap, #adminmenu, .error, .updated, .update-nag {display: none !important;} #wpbody-content {padding-bottom: 0;} #wpbody, html.wp-toolbar {padding-top: 0 !important;} #wpcontent, #footer {margin-left: 5px !important;}';
120
  else
121
  echo '<style>#GOTMLS-right-sidebar {float: right; margin-right: 0px;}';
122
+ $Update_Definitions = GOTMLS_plugin_home.'definitions.js'.$GLOBALS["GOTMLS"]["tmp"]["Definition"]["Updates"].'&js='.GOTMLS_Version.'&p=GOTMLS&wp='.$wp_version.'&ts='.date("YmdHis").'&key='.GOTMLS_installation_key.'&d='.ur1encode(GOTMLS_siteurl);
123
  $Update_Link = '<div style="text-align: center;"><a href="';
124
  $new_version = "";
125
  $file = basename(GOTMLS_plugin_path).'/index.php';
478
  <div>
479
  <ul class="GOTMLS-sidebar-links">
480
  <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">
481
+ <li><a target="_blank" href="https://wordpress.org/plugins/gotmls/faq/">Plugin FAQs</a></li>
482
+ <li><a target="_blank" href="https://wordpress.org/support/plugin/gotmls">Forum Posts</a></li>
483
+ <li><a target="_blank" href="https://wordpress.org/support/view/plugin-reviews/gotmls">Plugin Reviews</a></li>
484
  </ul></li>
485
  <li><img src="//gravatar.com/avatar/5feb789dd3a292d563fea3b885f786d6?s=16" border="0" alt="Plugin site:"><b><a target="_blank" href="'.GOTMLS_plugin_home.'">GOTMLS.NET</a></b></li>
486
  <li><img src="//gravatar.com/avatar/8151cac22b3fc543d099241fd573d176?s=16" border="0" alt="Developer site:"><b><a target="_blank" href="'.GOTMLS_blog_home.'/category/my-plugins/anti-malware/">Eli\'s Blog</a></b></li>
619
 
620
  function GOTMLS_get_quarantine($only = false) {
621
  global $wpdb, $current_user, $post;//, $GOTMLS_new_contents, $GOTMLS_file_contents, $GOTMLS_threats_found;
622
+ if (!isset($GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"])) {
623
+ if (($upload = wp_upload_dir()) && isset($upload['basedir']))
624
+ $GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"] = str_replace("/", GOTMLS_slash(), GOTMLS_trailingslashit($upload['basedir'])).'quarantine';
625
+ else
626
+ $GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"] = false;
627
+ }
628
+ if ($GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"] && is_dir($GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"])) {
629
+ $entries = GOTMLS_getfiles($GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"]);
630
+ if (is_array($entries) && count($entries)) {
631
+ foreach ($entries as $entry) {
632
+ if (is_file($file = GOTMLS_trailingslashit($GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"]).$entry)) {
633
+ if (GOTMLS_get_ext($entry) == "gotmls" && ($GOTMLS_file_contents = @file_get_contents($file))) {
634
+ $insert = array("post_author"=>GOTMLS_get_current_user_id(), "ping_status"=>"imported", "post_status"=>"private", "post_type"=>"GOTMLS_quarantine", "post_content"=>GOTMLS_encode($GOTMLS_file_contents), "post_mime_type"=>md5($GOTMLS_file_contents));//! comment_status post_password post_name to_ping post_parent guid menu_order";
635
+ if (!($insert["comment_count"] = @filesize($file)))
636
+ $insert["comment_count"] = strlen($GOTMLS_file_contents);
637
+ $file_date = explode(".", $entry);
638
+ $insert["post_date"] = date("Y-m-d H:i:s", filemtime($file));
639
+ $insert["post_date_gmt"] = $insert["post_date"];
640
+ $insert["post_modified"] = $insert["post_date"];
641
+ $match = '/^(20)?([0-5][0-9])[\-: \/]*(0*[1-9]|1[0-2])[\-: \/]*(0*[1-9]|[12][0-9]|3[01])[\-: \/]*([0-5][0-9])[\-: \/]*([0-5][0-9])$/';
642
+ if (count($file_date) > 2 && strlen($file_date[0]) == 5 && preg_match($match, GOTMLS_sexagesimal($file_date[0])))
643
+ $insert["post_modified"] = GOTMLS_sexagesimal($file_date[0]).":00";
644
+ elseif (count($file_date) > 3 && strlen($file_date[1]) == 5 && preg_match($match, GOTMLS_sexagesimal($file_date[1])))
645
+ $insert["post_modified"] = GOTMLS_sexagesimal($file_date[1]).":00";
646
+ $insert["post_modified_gmt"] = $insert["post_modified"];
647
+ $insert["post_title"] = GOTMLS_decode($file_date[count($file_date)-2]);
648
+ if (is_file($insert["post_title"]) && ($GOTMLS_new_contents = file_get_contents($insert["post_title"])))
649
+ $insert["post_content_filtered"] = GOTMLS_encode($GOTMLS_new_contents);
650
+ //! pinged post_excerpt
651
+ if ($wpdb->insert($wpdb->posts, $insert))
652
+ unlink(trailingslashit($GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"]).$entry);
653
+ } elseif (basename($GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"]) == "quarantine")
654
+ unlink(trailingslashit($GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"]).$entry);
655
+ }
656
+ }
657
+ }
658
+ if (basename($GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"]) == "quarantine")
659
+ rmdir($GLOBALS["GOTMLS"]["tmp"]["quarantine_dir"]);
660
+ }
661
  $Q_Page = '
662
  <form method="POST" target="GOTMLS_iFrame" name="GOTMLS_Form_clean"><input type="hidden" id="GOTMLS_fixing" name="GOTMLS_fixing" value="1">';
663
  $args = array('posts_per_page' => -1, 'orderby' => 'date', 'post_type' => 'GOTMLS_quarantine', "post_status" => "private");
672
  $root_path = implode(GOTMLS_slash(), array_slice(GOTMLS_explode_dir(__file__), 0, (2 + intval($GLOBALS["GOTMLS"]["tmp"]["settings_array"]["scan_level"])) * -1));
673
  while ($my_query->have_posts()) {
674
  $my_query->the_post();
 
675
  $Q_Page .= '
676
  <li id="GOTMLS_quarantine_'.$post->ID.'" class="GOTMLS_quarantine_item"><span class="GOTMLS_date">'.$post->post_date_gmt.'</span><span class="GOTMLS_date">'.$post->post_modified_gmt.'</span><input type="checkbox" name="GOTMLS_fix[]" value="'.$post->ID.'" id="check_'.$post->ID.'" onchange="document.getElementById(\'quarantine_buttons\').style.display = \'block\';" /><img src="'.GOTMLS_images_path.'blocked.gif" height=16 width=16 alt="Q">'.GOTMLS_error_link(__("View Quarantined File",'gotmls'), $post->ID).str_replace($root_path, "...", $post->post_title)."</a></li>\n";
677
  }
959
  if (is_dir($dir)) {
960
  $GOTMLS_dirs_at_depth[0] = 1;
961
  $GOTMLS_dir_at_depth[0] = 0;
962
+ if (isset($_POST['scan_only']) && is_array($_POST['scan_only'])) {
 
 
 
 
963
  $GOTMLS_dirs_at_depth[0] += (count($_POST['scan_only']) - 1);
964
  foreach ($_POST['scan_only'] as $only_dir)
965
  if (is_dir(GOTMLS_trailingslashit($dir).$only_dir))
1359
  if (!file_exists($file))
1360
  die(GOTMLS_html_tags(array("html" => array("body" => sprintf(__("The file %s does not exist, it must have already been deleted.",'gotmls'), $file)."<script type=\"text/javascript\">\nwindow.parent.showhide('GOTMLS_iFrame', true);\n</script>"))));
1361
  else {
 
 
 
 
 
1362
  GOTMLS_scanfile($file);
1363
  $fa = "";
1364
  $function = 'GOTMLS_decode';
1404
  }
1405
  }
1406
  window.parent.showhide("GOTMLS_iFrame", true);
1407
+ </script><table style="top: 0px; left: 0px; width: 100%; height: 100%; position: absolute;"><tr><td style="width: 100%"><form style="margin: 0;" method="post" onsubmit="return confirm(\''.__("Are you sure this file is not infected and you want to ignore it in future scans?",'gotmls').'\');"><input type="hidden" name="GOTMLS_whitelist" value="'.GOTMLS_encode($file).'"><input type="hidden" name="GOTMLS_chksum" value="'.md5($GOTMLS_file_contents).'O'.GOTMLS_installation_key.'"><input type="submit" value="Whitelist this file" style="float: right;"></form><div id="fileperms" class="shadowed-box rounded-corners" style="display: none; position: absolute; left: 8px; top: 29px; background-color: #ccc; border: medium solid #C00; box-shadow: -3px 3px 3px #666; border-radius: 10px; padding: 10px;"><b>File Details</b><br />encoding: '.mb_detect_encoding($GOTMLS_file_contents).'<br />size: '.strlen($GOTMLS_file_contents).' ('.filesize($file).'bytes)<br />permissions: '.GOTMLS_fileperms($file).'<br />modified:'.date(" Y-m-d H:i:s ", filemtime($file)).'<br />changed:'.date(" Y-m-d H:i:s ", filectime($file)).'</div><div style="overflow: auto;"><span onmouseover="document.getElementById(\'fileperms\').style.display=\'block\';" onmouseout="document.getElementById(\'fileperms\').style.display=\'none\';">'.__("Potential threats in file:",'gotmls').'</span> ('.$fa.' )</div></td></tr><tr><td style="height: 100%"><textarea id="ta_file" style="width: 100%; height: 100%">'.htmlentities(str_replace("\r", "", $GOTMLS_file_contents)).'</textarea></td></tr></table>');
1408
  }
1409
  }
1410
  }
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: 2015-06-06 08:41-1000\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"
8
  msgstr ""
9
  "Project-Id-Version: GOTMLS\n"
10
  "Report-Msgid-Bugs-To: eli@gotmls.net\n"
11
+ "POT-Creation-Date: 2015-06-06 17:29-1000\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"
readme.txt CHANGED
@@ -5,8 +5,8 @@ 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, scanner, automatic, repair, remove, malware, virus, threat, hacked, malicious, infection, timthumb, exploit, block, brute-force, wp-login, patch, antimalware, revslider, Revolution Slider
8
- Version: 4.15.25
9
- Stable tag: 4.15.25
10
  Requires at least: 3.3
11
  Tested up to: 4.2.2
12
 
@@ -94,7 +94,7 @@ sucuri.net caches their scan results and will not refresh the scan until you cli
94
 
95
  == Changelog ==
96
 
97
- = 4.15.25 =
98
  * Moved the quarantine files into the database and deleted the old directory in uploads.
99
  * Fixed some minor formatting issues in the HTML output on the settings page.
100
  * Added a warning message if base64_decode has been disabled.
@@ -335,7 +335,7 @@ sucuri.net caches their scan results and will not refresh the scan until you cli
335
 
336
  == Upgrade Notice ==
337
 
338
- = 4.15.25 =
339
  Moved the quarantine files into the database and deleted the old directory in uploads, fixed some minor HTML formatting issues, and added a warning if base64_decode is disabled.
340
 
341
  = 4.15.24 =
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, scanner, automatic, repair, remove, malware, virus, threat, hacked, malicious, infection, timthumb, exploit, block, brute-force, wp-login, patch, antimalware, revslider, Revolution Slider
8
+ Version: 4.15.26
9
+ Stable tag: 4.15.26
10
  Requires at least: 3.3
11
  Tested up to: 4.2.2
12
 
94
 
95
  == Changelog ==
96
 
97
+ = 4.15.26 =
98
  * Moved the quarantine files into the database and deleted the old directory in uploads.
99
  * Fixed some minor formatting issues in the HTML output on the settings page.
100
  * Added a warning message if base64_decode has been disabled.
335
 
336
  == Upgrade Notice ==
337
 
338
+ = 4.15.26 =
339
  Moved the quarantine files into the database and deleted the old directory in uploads, fixed some minor HTML formatting issues, and added a warning if base64_decode is disabled.
340
 
341
  = 4.15.24 =