Plugin Directory

Changeset 3430895


Ignore:
Timestamp:
01/02/2026 07:45:22 AM (7 weeks ago)
Author:
malcure
Message:

new release

Location:
wp-malware-removal/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • wp-malware-removal/trunk/readme.txt

    r3429433 r3430895  
    1 === Malcure Malware Scanner — Precision Virus Removal and Firewall ===
     1=== Malcure Malware Scanner — Precision Virus Scan and Firewall ===
    22Contributors: malcure,cybermalcure
    3 Tags: malware scanner, antivirus, firewall, vulnerability scanner, hack repair
     3Tags: malware scanner, antivirus, firewall, vulnerability scanner, security
    44Requires at least: 3.7.4
    55Tested up to: 6.9
    66Requires PHP: 5.6
    7 Stable tag: 19.3
     7Stable tag: 19.4
    88License: MIT
    99License URI: https://opensource.org/licenses/MIT
    1010
    11 Precision-engineered malware detection & WAF. Zero false positives. Trusted by experts to clean hacked sites instantly.
     11High Accuracy malware scanner & WAF. Clean hacked sites easily.
    1212
    1313== Description ==
     
    1919Trusted by 10,000+ site owners and security professionals, Malcure doesn't just "scan" — it investigates. From hidden backdoors in your database to obfuscated code in your images, we find what others miss.
    2020
    21 ### Powered by Malcure API: Real-Time Threat Intelligence
     21= Powered by Malcure API: Real-Time Threat Intelligence =
    2222Hackers don't sleep, and neither do we. Malcure connects to our real-time API to fetch the latest threat definitions.
    23 *   **Zero-Day Alerts:** Our API analyzes new threats in real-time, ensuring the site is scanned against the latest vulnerabilities.
    24 *   **Smart Checksums:** We verify your core files against the official WordPress repository using our API, ensuring absolute integrity.
    25 *   **Lightweight:** By offloading heavy analysis to our API, we keep your server fast and responsive.
    26 
    27 ### Why Malcure?
    28 
    29 *   **Precision, Not Noise:** Our advanced heuristic engine is tuned to distinguish between legitimate code and malicious payloads. No more heart attacks over false alarms.
    30 *   **Surgical Cleanup:** Don't nuke your site. Malcure identifies the exact infection so you can surgically remove the malicious code while keeping your website fully functional.
    31 *   **Performance First:** Built to be lightweight. We scan rigorously without bringing your server to its knees.
    32 
    33 ### Core Features (Free Forever)
    34 
    35 *   **Deep Malware Scan:** Scans core files, themes, plugins, images, and your entire database for viruses, trojans, backdoors, and malicious redirects.
    36     *   **Files:** Scans core files, themes, plugins, images, and uploads for backdoors, shells (C99, R57), and obfuscated code.
    37     *   **Database:** Scans database tables for malicious injections and spam links.
    38     *   **SEO Spam Detection:** Specifically checks page titles and database records for "Japanese Keyword Hack" and other SEO spam symptoms.
    39     *   **Vulnerability Scanner:** Checks your installed plugins and themes against our real-time database of known security vulnerabilities.
    40     *   **Intelligent Checksum Verification:** Automatically verifies your files against the official WordPress repository. If a core file has been tampered with, we know instantly.
    41     *   **Uncompromising Detection:** Detects C99, R57, RootShell, Crystal Shell, Matamu, and thousands of other known and unknown variants.
    42 *   **Firewall (WAF) & Hardening:**
    43     *   **Block Path Traversal:** Stops attackers from accessing sensitive system files.
    44     *   **Block PHP Uploads:** Prevents malicious scripts from being uploaded to your site.
    45     *   **Stop User Enumeration:** Blocks bots from fishing for your username.
    46     *   **REST API Protection:** Prevents user data leakage via the WP REST API.
    47 *   **Incident Response Toolkit:**
    48     *   **Nuke User Sessions:** Instantly force-logout every user on the site to kick out intruders.
    49     *   **Salt Shuffler:** One-click rotation of WordPress security keys (salts) to invalidate all browser cookies.
    50     *   **Comprehensive Event Logging:** Track every security event. Know exactly *when* and *how* a breach might have occurred with our 100-day event log.
    51 *   **Google Search Console Integration:** Connect directly to Google to fetch security warnings and blacklist status in real-time.
    52 *   **Real-Time API Updates:** Connects to the Malcure Cloud to detect the latest threats and vulnerabilities.
    53 
    54 ### Upgrade to Advanced Edition
    55 
    56 For mission-critical websites that demand the ultimate protection and recovery tools.
    57 
    58 *   **1-Click Fixes:** Inspect, Delete or Repair infected files instantly with a single clicks.
    59 *   **Real-Time Definition Updates:** Stay protected against the very latest threats discovered by our security labs.
    60 *   **WP-CLI Integration:** Automate scans and cleanups via command line — a developer's dream.
    61 *   **Custom Whitelisting:** Full control to whitelist specific files or folders.
    62 *   **High-Priority Support:** Direct access to our security analysts.
     23
     24This plugin relies on the Malcure API to provide real-time threat intelligence and checksum verification.
     25-   **Data Transmission:** To perform scans, the plugin sends file checksums and your site's domain to Malcure servers. No sensitive user data or file contents are transmitted unless you explicitly use the "Inspect File" feature.
     26-   **Terms & Privacy:** Use of the API is subject to our [Terms of Use](https://www.malcure.com/?p=1720&utm_source=readme&utm_medium=web&utm_campaign=wpmr) and [Privacy Policy](https://malcure.com/?p=3&utm_source=readme&utm_medium=web&utm_campaign=wpmr).
     27
     28-   **Zero-Day Alerts:** Our API analyzes new threats in real-time, ensuring the site is scanned against the latest vulnerabilities.
     29-   **Smart Checksums:** We verify your core files against the official WordPress repository using our API, ensuring absolute integrity.
     30-   **Lightweight:** By offloading heavy analysis to our API, we keep your server fast and responsive.
     31
     32= Why Malcure? =
     33
     34-   **Precision, Not Noise:** Our advanced heuristic engine is tuned to distinguish between legitimate code and malicious payloads. No more heart attacks over false alarms.
     35-   **Surgical Cleanup:** Don't nuke your site. Malcure identifies the exact infection so you can surgically remove the malicious code while keeping your website fully functional.
     36-   **Performance First:** Built to be lightweight. We scan rigorously without bringing your server to its knees.
     37
     38= Who This Plugin Is For =
     39
     40-   **Site owners** who want clear, actionable results (what was flagged and where).
     41-   **Agencies & developers** who need fast triage across multiple sites.
     42-   **WooCommerce / membership / lead-gen sites** where downtime and SEO damage are expensive.
     43-   **Anyone** who wants a scanner that cuts through the noise to focus on *signal*—real threats with practical remediation paths.
     44
     45= How It Works (Scan → Review → Clean) =
     46
     471.  **Scan**
     48    -   Go to **Malcure Scanner** in your WordPress admin.
     49    -   Run a scan to check your files and database for malware, backdoors, suspicious code, and integrity issues.
     50
     512.  **Review**
     52    -   Malcure reports findings with clear locations (file paths / database records) so you can verify what changed and why it was flagged.
     53    -   Use the results to decide what should be repaired, deleted, or kept (for example, legitimate custom code).
     54
     553.  **Clean & Recover**
     56    -   The free edition helps you identify issues and understand what needs fixing.
     57    -   The Advanced Edition adds cleanup tools (Inspect / Repair / Delete for infected files) and workflow features like custom whitelisting.
     58
     59= Free vs Advanced (Feature Comparison) =
     60
     61Below is a practical feature comparison to help you choose the right edition.
     62
     63Feature | Free | Advanced
     64------- | ---- | --------
     65Deep malware scan (files + database) | Yes | Yes
     66Checksum verification (WordPress core integrity) | Yes | Yes
     67Vulnerability scanner | Yes | Yes
     68Firewall (WAF) & hardening | Yes | Yes
     69Incident response toolkit (sessions, salts, etc.) | Yes | Yes
     70Event logging | Yes | Yes
     71Google Search Console integration | Yes | Yes
     721‑click cleanup actions (Inspect / Repair / Delete infected files) | No | Yes
     73Custom whitelisting (files/folders) | No | Yes
     74WP‑CLI integration | No | Yes
     75High‑priority support | No | Yes
     76Real‑time definition updates | No | Yes
     77
     78[youtube https://www.youtube.com/watch?v=EbSbxiTOc8k]
     79
     80= Core Features (Free Forever) =
     81
     82-   **Deep Malware Scan:** Scans core files, themes, plugins, images, and your entire database for viruses, trojans, backdoors, and [malicious redirects](https://malcure.com/?p=60&utm_source=readme&utm_medium=web&utm_campaign=wpmr).
     83    -   **Files:** Scans core files, themes, plugins, images, and uploads for backdoors, shells (C99, R57), and obfuscated code.
     84    -   **Database:** Scans database tables for malicious injections and spam links.
     85    -   **SEO Spam Detection:** Specifically checks page titles and database records for "Japanese Keyword Hack", "Pharma Hack" and other SEO spam symptoms.
     86    -   **Vulnerability Scanner:** Checks your installed plugins and themes against our real-time database of known security vulnerabilities.
     87    -   **Intelligent Checksum Verification:** Automatically verifies your files against the official WordPress repository. If a core file has been tampered with, we know instantly.
     88    -   **Uncompromising Detection:** Detects C99, R57, RootShell, Crystal Shell, Matamu, and thousands of other known and unknown variants.
     89-   **Firewall (WAF) & Hardening:**
     90    -   **Block Path Traversal:** Stops attackers from accessing sensitive system files.
     91    -   **Block PHP Uploads:** Prevents malicious scripts from being uploaded to your site.
     92    -   **Stop User Enumeration:** Blocks bots from fishing for your username.
     93    -   **REST API Protection:** Prevents user data leakage via the WP REST API.
     94    -   **[Security Hardening](https://malcure.com/?p=1622&utm_source=readme&utm_medium=web&utm_campaign=wpmr):** Learn more about securing your WordPress site.
     95-   **Incident Response Toolkit:**
     96    -   **Nuke User Sessions:** Instantly force-logout every user on the site to kick out intruders.
     97    -   **Salt Shuffler:** One-click rotation of [WordPress security keys (salts)](https://malcure.com/?p=5230&utm_source=readme&utm_medium=web&utm_campaign=wpmr) to invalidate all browser cookies.
     98    -   **Comprehensive Event Logging:** Track every security event. Know exactly *when* and *how* a breach might have occurred with our 100-day event log.
     99-   **Google Search Console Integration:** Connect directly to Google to fetch security warnings and blacklist status in real-time.
     100-   **Real-Time API Updates:** Connects to the Malcure Cloud to detect the latest threats and vulnerabilities.
     101
     102= Upgrade to Advanced Edition =
     103
     104For mission-critical websites that demand comprehensive protection and recovery tools.
     105
     106-   **1-Click Fixes:** Inspect, Delete or Repair infected files instantly with a single clicks.
     107-   **Real-Time Definition Updates:** Stay protected against the very latest threats discovered by our security labs.
     108-   **WP-CLI Integration:** Automate scans and cleanups via command line — a developer's dream. See our [WP-CLI Cheatsheet](https://malcure.com/?p=9102&utm_source=readme&utm_medium=web&utm_campaign=wpmr).
     109-   **Custom Whitelisting:** Full control to whitelist specific files or folders.
     110-   **High-Priority Support:** Direct access to our security analysts.
    63111
    64112[**Get Malcure Advanced Edition**](https://malcure.com/?p=116&utm_source=readme&utm_medium=web&utm_campaign=wpmr)
    65113
    66 ### What Our Users Say
    67 
    68 > "Found my issues – Brilliant Support. This plugin worked like a charm and identified a problem that other plugins had missed." — @promofinity
    69 
    70 > "Does what it says on the tin. Malcure was able to detect the Alfa webshell backdoor in my WordPress site with great precision while many others could not." — @ftanger
    71 
    72 > "Works like a charm. My website started getting infected and even after cleaning it didn’t seem to work… I did a scan with this plugin... and by 3rd scan… I was clean." — @albusaidys
    73 
    74 ### Expert Malware Removal Service
     114= What Our Users Say =
     115
     116> "Best by far, better than Wordfence and other giants... I spent hours trying to find a plugin like this... Simple and effective." — [@dalingzaf](https://wordpress.org/support/topic/best-by-far-better-than-wordfence-and-other-giants/)
     117
     118> "The ONLY plugin that scans files in real time. I am a web developer and have tried many malware removal plugins, including popular ones like Wordfence and Sucuri. However, none of them detected some unusual files that were actually malware causing regular attacks." — [@devzeeshanx](https://wordpress.org/support/topic/the-only-plugin-that-scans-files-in-real-time-2/)
     119
     120> "Accurately shows which Database table row is infected and it helps resolve the hacking attempt instantly. Saves a lot of time for the developers." — [@s3630](https://wordpress.org/support/topic/best-malware-removal-plugin-in-just-few-minutes/)
     121
     122> "It’s not just a “teaser”. This plugin really found the malware, and removed it. Really for free." — [@halucska](https://wordpress.org/support/topic/its-not-just-a-teaser/)
     123
     124= Additional Resources for Malware Removal =
     125
     126Follow these expert guides to remove malware, recover lost traffic, and restore your online reputation:
     127
     128-   [A step by step guide to remove the malware](https://malcure.com/?p=1540&utm_source=readmefaq&utm_medium=web&utm_campaign=wpmr)
     129-   [Japanese Keyword Hack: How to Remove SEO Spam](https://malcure.com/?p=13946&utm_source=readmefaq&utm_medium=web&utm_campaign=wpmr)
     130-   [What is the WordPress Pharma Hack & How to fix it](https://malcure.com/?p=5728&utm_source=readmefaq&utm_medium=web&utm_campaign=wpmr)
     131-   [How to Fix Google Ads Disapproved for Malicious Software](https://malcure.com/?p=14143&utm_source=readmefaq&utm_medium=web&utm_campaign=wpmr)
     132-   [How to Prevent WordPress SQL Injection Attacks](https://malcure.com/?p=14477&utm_source=readmefaq&utm_medium=web&utm_campaign=wpmr)
     133-   [Live Malware Infection Removal & Analysis](https://malcure.com/?p=5265&utm_source=readmefaq&utm_medium=web&utm_campaign=wpmr)
     134-   [How to Fix “This Site May Harm Your Computer” Warning](https://malcure.com/?p=7207&utm_source=readmefaq&utm_medium=web&utm_campaign=wpmr)
     135-   [Comprehensive Guide to Removing JavaScript Redirect Malware](https://malcure.com/?p=60&utm_source=readmefaq&utm_medium=web&utm_campaign=wpmr)
     136-   [How to Fix a Blank WP-Admin Page](https://malcure.com/?p=5699&utm_source=readmefaq&utm_medium=web&utm_campaign=wpmr)
     137-   [Malcure WP CLI Integration & Cheatsheet](https://malcure.com/?p=9102&utm_source=readmefaq&utm_medium=web&utm_campaign=wpmr)
     138-   [How to Prevent Brute Force Attacks](https://malcure.com/?p=14375&utm_source=readmefaq&utm_medium=web&utm_campaign=wpmr)
     139-   [How to Change WordPress Salt Keys](https://malcure.com/?p=5230&utm_source=readmefaq&utm_medium=web&utm_campaign=wpmr)
     140
     141= Expert Malware Removal Service =
    75142
    76143In over your head? Our security analysts are on standby. We offer a complete **Malware Removal Service** that includes:
    77 *   **100% Removal Guarantee:** We guarantee to remove all malware from your website.
    78 *   **Same Day Service:** Fast turnaround time to get your business back online.
    79 *   **DeepScan™ Technology:** Scans backups, archives, images, and hidden files where malware hides.
    80 *   **Manual Inspection:** Our experts manually inspect critical files (htaccess, wp-config, index.php) and your database.
    81 *   **Blacklist Removal:** We handle the removal of your site from blacklists like Google, Norton, McAfee, etc.
    82 *   **Security Hardening:** We identify the root cause and patch vulnerabilities to prevent future infections.
    83 *   **15-Day Cover:** Security analysts available 24/7/365 to ensure your site stays clean.
     144-   **100% Removal Guarantee:** We guarantee to remove all malware from your website.
     145-   **Same Day Service:** Fast turnaround time to get your business back online.
     146-   **DeepScan™ Technology:** Scans backups, archives, images, and hidden files where malware hides.
     147-   **Manual Inspection:** Our experts manually inspect critical files (htaccess, wp-config, index.php) and your database.
     148-   **Blacklist Removal:** We handle the removal of your site from blacklists like Google, Norton, McAfee, etc.
     149-   **Security Hardening:** We identify the root cause and patch vulnerabilities to prevent future infections.
     150-   **15-Day Cover:** Security analysts available 24/7/365 to ensure your site stays clean.
    84151
    85152[**Book Expert Malware Removal**](https://malcure.com/?p=107&utm_source=readme&utm_medium=web&utm_campaign=wpmr)
     
    97164Option 1: If you are tech-savvy, you can use this plugin, analyse the results and remove malware yourself.
    98165
    99 Option 2: You can file a service request with us. Don’t delay—malware spreads fast! Our service includes malware cleanup and blacklist removal by our security analysts. [Please click here to file a support request](https://malcure.com/?p=107&utm_source=readmefaq&utm_medium=web&utm_campaign=wpmr).
     166Option 2: You can file a service request with us. Don't delay—malware spreads fast! Our service includes malware cleanup and blacklist removal by our security analysts. [Please click here to file a support request](https://malcure.com/?p=107&utm_source=readmefaq&utm_medium=web&utm_campaign=wpmr).
    100167
    101168= How to remove malware from website? =
     
    119186= What support options are available for Malcure Malware Scanner users? =
    120187
    121 Providing excellent support is extremely important to us. You can file a ticket at Malcure website and our dedicated web-security specialist will ensure that the matter is resolved to your satisfaction.
    122 
    123 = Some files are detected by Malcure Malware Scanner as "suspicious". What gives? =
    124 
    125 Malcure's SmartScan checks each file for malware. However some files aren't pure malware but may contain code that is suspicious and could do nasty things. You should carefully review and analyse them to see if they indeed do anything nasty.
    126 
    127 = I can't get Malcure Malware Scanner to work. It hangs / doesn't complete the scan / breaks for some reason. =
    128 
    129 If you think that the plugin is broken, [please report it here](https://malcure.com/?p=5677&utm_source=readmefaq&utm_medium=web&utm_campaign=wpmr).
    130 
    131 Malcure Malware Scanner (or for that matter other plugins) may break on malware affected / broken websites. [Malcure Advanced Edition](https://malcure.com/?p=116&utm_source=readmefaq&utm_medium=web&utm_campaign=wpmr) integrates with WP CLI and allows you to complete the scan from WP CLI.
    132 
    133 = My site is infected however Malcure Malware Scanner doesn't detect the infection. =
    134 
    135 Malware keeps evolving. If you come across malware that Malcure Malware Scanner is not able to identify, you may [please report it here](https://malcure.com/?p=157&utm_source=readmefaq&utm_medium=web&utm_campaign=wpmr).
     188Providing excellent support is extremely important to us. You can report the issue at [Malcure forums](https://malcure.com/?p=5677&utm_source=readmefaq&utm_medium=web&utm_campaign=wpmr) and our dedicated web-security specialist will ensure that the matter is resolved to your satisfaction.
    136189
    137190= What makes Malcure Malware Scanner different from other security plugins? =
     
    144197
    145198Malcure Malware Scanner only runs when you want it to. At all other times it sleeps silently. The firewall triggers extremely quickly and is optimized for performance.
    146 
    147 = The scan gets stuck midway. What should I do? =
    148 
    149 In case of such an event, please file a support request with us and we'll be more than happy to troubleshoot the issue.
    150 
    151 Please visit [this page](https://malcure.com/?p=5677&utm_source=readmefaq&utm_medium=web&utm_campaign=wpmr).
    152 
    153 = I cleaned my site but it got infected again. What should I do? =
    154 
    155 Malware cleanup is a waste of time and effort unless you find the root cause behind the malware infection. How was someone able to infect your website? Have you plugged in that security hole?
    156 
    157 Please read [Why Do Websites Get Hacked](https://malcure.com/blog/security/why-do-wordpress-websites-get-hacked/).
    158 
    159 = Google Safe Browsing site status (or some other scanner) still shows my site as infected. What should I do? =
    160 
    161 First make sure you purge your site cache. Second, Google (and other scanners) cache the results for some time. You'll need to force or refresh the scan. You can also file a request with us to [get your site off any blacklists](https://www.malcure.com/?p=107&utm_source=readmefaq&utm_medium=web&utm_campaign=wpmr).
    162199
    163200= Where can I find the Malcure Terms of Use and Privacy Policy? =
     
    174211No. Malcure is designed to be lightweight and runs only when you trigger a scan or schedule one.
    175212
     213= What data is sent to the Malcure API? =
     214To perform scans, the plugin sends file checksums and your site's domain to Malcure servers. No sensitive user data or file contents are transmitted unless you explicitly use the "Inspect File" feature.
     215
     216= What's the difference between Free and Advanced? =
     217Both editions scan files and the database, verify WordPress core integrity, and include firewall/hardening features.
     218
     219The Advanced Edition adds cleanup workflows (Inspect / Repair / Delete for infected files), WP-CLI integration, custom whitelisting, and high-priority support.
     220
     221= How should I interpret results like "infected" vs "suspicious"? =
     222"Infected" generally means the scanner has high confidence the code matches malicious patterns.
     223
     224"Suspicious" can indicate risky/obfuscated behavior or something that warrants review (for example, heavily minified code or unusual PHP patterns). If you're unsure, use Inspect (Advanced) or [contact support](https://malcure.com/?p=157&utm_source=readmefaq&utm_medium=web&utm_campaign=wpmr).
     225
     226== Troubleshooting ==
     227
     228= Some files are detected by Malcure Malware Scanner as "suspicious". What gives? =
     229
     230Malcure's SmartScan checks each file for malware. However some files aren't pure malware but may contain code that is suspicious and could do nasty things. You should carefully review and analyse them to see if they indeed do anything nasty.
     231
     232= I can't get Malcure Malware Scanner to work. It hangs / doesn't complete the scan / breaks for some reason. =
     233
     234If you think that the plugin is broken, [please report it here](https://malcure.com/?p=5677&utm_source=readmefaq&utm_medium=web&utm_campaign=wpmr).
     235
     236Malcure Malware Scanner (or for that matter other plugins) may break on malware affected / broken websites. [Malcure Advanced Edition](https://malcure.com/?p=116&utm_source=readmefaq&utm_medium=web&utm_campaign=wpmr) integrates with WP CLI and allows you to complete the scan from WP CLI.
     237
     238= My site is infected however Malcure Malware Scanner doesn't detect the infection. =
     239
     240Malware keeps evolving. If you come across malware that Malcure Malware Scanner is not able to identify, you may [please report it here](https://malcure.com/?p=157&utm_source=readmefaq&utm_medium=web&utm_campaign=wpmr).
     241
     242= The scan gets stuck midway. What should I do? =
     243
     244In case of such an event, please file a support request with us and we'll be more than happy to troubleshoot the issue.
     245
     246Please visit [this page](https://malcure.com/?p=5677&utm_source=readmefaq&utm_medium=web&utm_campaign=wpmr).
     247
     248= I cleaned my site but it got infected again. What should I do? =
     249
     250Malware cleanup is a waste of time and effort unless you find the root cause behind the malware infection. How was someone able to infect your website? Have you plugged in that security hole?
     251
     252Please read [Why Do Websites Get Hacked](https://malcure.com/blog/security/why-do-wordpress-websites-get-hacked/?utm_source=readmefaq&utm_medium=web&utm_campaign=wpmr).
     253
     254= Google Safe Browsing site status (or some other scanner) still shows my site as infected. What should I do? =
     255
     256First make sure you purge your site cache. Second, Google (and other scanners) cache the results for some time. You'll need to force or refresh the scan. You can also file a request with us to [get your site off any blacklists](https://www.malcure.com/?p=107&utm_source=readmefaq&utm_medium=web&utm_campaign=wpmr).
     257
    176258= I found a suspicious file, what now? =
    177259If Malcure flags it, it's likely malicious. You can inspect the file content using our built-in inspector. If you're unsure, consider our [Expert Malware Removal Service](https://malcure.com/?p=107&utm_source=readme&utm_medium=web&utm_campaign=wpmr).
     
    179261== Screenshots ==
    180262
    181 1. Plugin in Action.
    182 2. Scan Results.
    183 3. Event Log.
    184 4. Advanced Scan Filters.
    185 5. File Inspector.
    186 6. Scan Log.
    187 7. Hardening Settings.
    188 8. Full View.
    189 9. Malcure in WP CLI.
    190 10. Malcure Scan Results in WP CLI.
     2631. Start a malware scan from the Malcure Scanner dashboard.
     2642. Scan results highlighting affected files and database records.
     2653. Event Log showing security-relevant site activity (updates and actions).
     2664. Scan filters to help narrow results by type and severity.
     2675. File Inspector to review suspicious or infected files (Advanced Edition).
     2686. Scan Log / activity history to track what ran and when.
     2697. Hardening settings and firewall rules.
     2708. Full view of scan findings for deeper investigation.
     2719. Running scans via WP-CLI (Advanced Edition).
     27210. Reviewing scan results via WP-CLI (Advanced Edition).
    191273
    192274== Changelog ==
     275
     276= 19.4 =
     277* Major Bugfix: Fatal error during auto-upgrade.
     278* Updated readme.
    193279
    194280= 19.3 =
     
    211297* Bugfix: Enhanced detection of suspicious empty files in core directories.
    212298
    213 = 17.9 =
    214 * UI: Updated to follow repository guidelines.
    215 
    216 = 17.8 =
    217 * UX: Updated to work with new checksum endpoint.
    218 
    219 = 17.7 =
    220 * Bugfix: Fixed a bug where errors during definition update wouldn't be reported.
    221 * Bugfix: Fixed a bug where plugin would run out of memory during definition update.
    222 * Others: Refactored code.
    223 
    224 = 17.6 =
    225 * UI: Improved installation experience.
    226 * UI: Improved licensing validation.
    227 * Bugfix: Improved timeout during certain conditions.
    228 
    229 = 17.5 =
    230 * UX: Added animation for operations in progress.
    231 Bugfix: Fixed timeout for certain operations.
    232 
    233 = 17.4 =
    234 * Feature: Major UI revamp.
    235 * Feature: Copy results button generated a well-formatted scan report.
    236 * Bugfix: Page hack scan would generate incorrect URL format.
    237 * Bugfix: Scan results would show all clear even when certain scans are skipped.
    238 
    239 = 17.3 =
    240 * Bugfix: Potential false negatives for certain default files.
    241 * Bugfix: Fixed formating in WP CLI commands.
    242 * Bugfix: Core files could be whitelisted in the UI without effect.
    243 
    244 = 17.2 =
    245 * Bugfix: File cleanup not working in advanced edition.
    246 
    247 = 17.1.2 =
    248 * Bugfix: Fixed error if checksums could not be fetched.
    249 
    250 = 17.1.1 =
    251 * Bugfix: Fixed error during activating from WP CLI.
    252 
    253 = 17.1 =
    254 * Security: Strongly recommend all users update to version 17.1 immediately.
    255 * Security: Fixes CSRF and broken access control vulnerabilities.
    256 
    257 = 16.9 =
    258 * Security: Critical security update. Fixes CSRF and broken access control vulnerabilities in AJAX endpoints. All users should update immediately. Credit: Darius Sveikauskas, author oversight.
    259 
    260 = 16.8 =
    261 * Bugfix: Admin Notice not clearing after cleanup.
    262 
    263 = 16.7 =
    264 * Bugfix: More accurate memory handling.
    265 * Bugfix: Better handling of database exclusions.
    266 
    267 = 16.6 =
    268 * Bugfix: Page hack test would throw an error under certain conditions.
    269 * Bugfix: Database scan output had an anomaly.
    270 * Others: Removed donation links.
    271 
    272 = 16.5 =
    273 * Minor: UI Update.
    274 * Bugfix: Added license link for easy access.
    275 
    276 = 16.4 =
    277 * Bugfix: Fixed database query to scan options.
    278 
    279 = 16.3 =
    280 * Bugfix: Fixed UI not reflecting infection when infection detected in database.
    281 * Bugfix: Fixed infection detected in database being missed in certain conditions.
    282 
    283 = 16.2 =
    284 * Bugfix: In certain conditions, suspicious files inside WP core directories would not show up on rescan.
    285 * Bugfux: Not all sessions of the current user were terminated.
    286 
    287 = 16.1 =
    288 * Feature: Add logging for theme deletion and plugin deletion.
    289 * Compatibility: Works with Multisite Newtwork.
    290 * Minor: Updated capturing URL of failed logins.
    291 * Minor: Better logging for checksum fetching failures.
    292 * Minor: Other UI updates.
    293 
    294 = 16.0 =
    295 * Bugfix: Scanner Page could break on large sites.
    296 * Minor: Other code refactoring and optimizations.
    297 
    298 = 15.9 =
    299 * Feature: Activation via WP CLI asks for license key so that it doesn't show in the shell history.
    300 * Feature: Capture IP for events automatically.
    301 * Bugfix: Metabox not showing sometimes.
    302 * Minor: Show plugin version when in WP CLI.
    303 * Minor: UI improvements.
    304 
    305 = 15.8 =
    306 * Feature: Faster Database Scans.
    307 * Bugfix: Fixed shuffle_salts function.
    308 * Bugfix: Fixed destroy_sessions function.
    309 * Minor: Limited event log to 10,000 entries.
    310 * Minor: More details for upgrade event in event log.
    311 * Minor: Added serial number to the event log.
    312 * Minor: Updated screenshots.
    313 
    314 = 15.7 =
    315 * Bugfix: Fixed issues with hidden meta-boxes.
    316 * Bugfix: Fixed styling / sorting of Event Log.
    317 
    318 = 15.6 =
    319 * Feature: Comprehensive Event Log.
    320 * Bugfix: Fixed issues with missing meta-boxes.
    321 
    322 = 15.5 =
    323 * Bugfix: Fixed issues with missing PHP function.
    324 * Bugfix: Session buttons were not working.
    325 * UX: Updated UX to sit better with branding.
    326 * UX: Better UX with license management.
    327 
    328 = 15.4 =
    329 * Bugfix: Some paths were not queued for scan.
    330 
    331 = 15.3 =
    332 * Feature: Windows / Server / IIS compatible.
    333 * Bugfix: Malware not reported when using WP CLI.
    334 * Others: Various other refactorings.
    335 
    336 = 15.2 =
    337 * Bugfix: Redirect Hack Test is more robust.
    338 * Bugfix: Scanning single file using WP CLI wasn't working.
    339 * Better documentation for WP CLI usage.
    340 
    341 = 15.1 =
    342 * Bugfix: Database scan breks on strict hosts.
    343 
    344 = 15.0 =
    345 * Major: Scan database using batch processing.
    346 * Ability to scan slow and large databases.
    347 * Bugfix: Attempt to validate malware patterns.
    348 * Bugfix: Checking site redirects throws warning under certain conditions.
    349 
    350 = 14.3 =
    351 * Changed default UI to dark skin.
    352 * Added file blacklist.
    353 
    354 = 14.2 =
    355 * Updated logging.
    356 * Made redirect scan optional.
    357 * Other minor UI updates.
    358 
    359 = 14.1 =
    360 * Updated to exclude database records of a few security plugins.
    361 
    362 = 14.0 =
    363 * Bugfix: Incorrect activations displayed in Malcure Advanced Edition.
    364 
    365 = 13.9 =
    366 * Feature: Consistent UI.
    367 
    368 = 13.8 =
    369 * Feature: Allow clearing logs (Advanced Edition).
    370 * Bugfix: Reset via WP CLI would fail.
    371 * Several UI Updates.
    372 * Several UX Updates.
    373 * Updated WP CLI Help / Documentation.
    374 
    375 = 13.7 =
    376 * Bugfix: File Inspector doesn't reset when inspecting a new file.
    377 * Bugfix: Unreadable files are not reported.
    378 * Bugfix: Infection count is not copied in Advanced Edition.
    379 
    380 = 13.6 =
    381 * Minor Bugfix: Some hosts deny access to certain files.
    382 * Minor Bugfix: Sometimes WP CLI scan times out.
    383 * Minor Bugfix: Consolidated file validation calls.
    384 * Major Update: Retired HTTP based scan via WP CLI.
    385 
    386 = 13.5.1 =
    387 * Minor Bugfix: Audio notifications not working by default.
    388 
    389 = 13.5 =
    390 * Feature: Audio notifications on scan completion.
    391 * Bugfix: Better locale detection.
    392 
    393 = 13.4 =
    394 * Minor UI Update.
    395 * Tweak to reduce load on API Server.
    396 
    397 = 13.3 =
    398 * Bugfix: Fully compatible with PHP 8.2.
    399 * Bugfix: Fixed timeout issues. Our server is slow and we are working to expand our infrastructure and costs.
    400 * Feature: Verbose details when copying results (Advanced Edition).
    401 
    402 = 13.2 =
    403 * Bugfix: Some ajax actions throw PHP warnings.
    404 
    405 = 13.1 =
    406 * Bugfix: Aggregate Scan-speed and start-time broken on second iteration.
    407 
    408 = 13.0 =
    409 * UX: Mouse-wheel event to update the scan speed slider.
    410 * UX: Updated the default scan speed to 11.
    411 * UX: Realistic time remaining on second iteration.
    412 
    413 = 12.9 =
    414 * Bugfix: File incorrectly being reported as a file inside core direrctories.
    415 
    416 = 12.8 =
    417 * Bugfix: Notification doesn't show correct message in some cases.
    418 
    419 = 12.7 =
    420 * Major UX improvements.
    421 * Feature: Better notification system.
    422 * Feature: Salt Shuffler.
    423 
    424 = 12.6 =
    425 * Feature: Added ability to save scan-log to a file when used with WP-CLI.
    426 
    427 = 12.5 =
    428 * Bugfix: Fixed formatting of copied results.
    429 * Bugfix: Fixed js error when trying to repair a file.
    430 
    431 = 12.4 =
    432 * Bugfix: Error thrown when repairing a file.
    433 * Bugfix: UI not reflecting the updated version of signatures.
    434 * Bugfix: Better file filtering when website is installed in a custom directory.
    435 * Bugfix: Better verbosity in WP CLI.
    436 * Feature: Major revamp in CLI functions.
    437 * Feature: Major revamp in CLI function documentation.
    438 
    439 = 12.3 =
    440 * Bugfix: Better support for symlinks on some web-hosts.
    441 * Bugfix: Minor performance optimisations.
    442 
    443 = 12.2 =
    444 * Bugfix: Better support for symlinks.
    445 * Bugfix: Results do not reset on rescan.
    446 
    447 = 12.1 =
    448 * Bugfix: Emergency Release. Missing function hrtime in PHP 5.6 breaks the plugin.
    449 
    450 = 12.0 =
    451 * Bugfix: Definition updates not available when automating with WP CLI.
    452 * Feature: Ability to force reset in unattended mode with WP CLI
    453 * Bugfix: Inconsistency with get_home_path and ABSPATH.
    454 * Feature: Report timings during scan.
    455 * Feature: Report when website is installed in a custom directory.
    456 * Feature: Many UX improvements.
    457 * Feature: Many code optimisations / refactoring, ability to traverse into softlinks.
    458 
    459 = 11.9 =
    460 * Bugfix: Scan failure reported as suspicious.
    461 * Bugfix: Core file not reported if suspicious.
    462 * Bugfix: Mismatching of version.php.
    463 * Feature: Reset plugin settings via CLI.
    464 * Feature: Other CLI improvements.
    465 
    466 = 11.8 =
    467 * Feature: Massive speed optimizations.
    468 * Feature: Switched to more secure hash.
    469 
    470 = 11.7 =
    471 * Bugfix: Invalid suspicious incident count.
    472 
    473 = 11.6 =
    474 * New Feature: Infection Count.
    475 
    476 = 11.5 =
    477 * Bugfix: User not alerted by out of date definitions under certain conditions.
    478 
    479 = 11.4 =
    480 * Bugfix: User not alerted by out of date definitions.
    481 
    482 = 11.3 =
    483 * Better UX with CLI.
    484 * Output detailed setup information during scan via CLI.
    485 * Output customer info on license page.
    486 
    487 = 11.2 =
    488 * Bugfix: Definition Update Available notice doesn't get removed after updating definitions.
    489 * Bugfix: Incorrect reflection of meta_id as post_id in database scan results.
    490 
    491 = 11.1 =
    492 * Enhancement: Report max_execution_time, memory_limit and memory_usage on WP CLI.
    493 * UX: User-sessions-list takes up huge amount of vertical space on multi-user sites. Shifted it down.
    494 
    495 = 11.0 =
    496 * Bugfix: Visibly display message if site is experience an HTTP error.
    497 
    498 = 10.9 =
    499 * Bugfix: CLI scan dies after the default apache timeout on mod_php.
    500 * Bugfix: Prioritised core files.
    501 
    502 = 10.8 =
    503 * Bugfix: CLI scan dies after the default apache timeout on mod_php.
    504 * Bugfix: Fixed an error if PHP DOM extension php-xml is missing.
    505 
    506 = 10.7 =
    507 * Feature: Skin changer to configure UI for long working hours.
    508 
    509 = 10.6 =
    510 * Bugfix: Scan fails to initialize on large databases or huge number of files.
    511 * Bugfix: CLI fails to clear infection status.
    512 * Feature: Several other UI updates.
    513 * Others: Code refactoring.
    514 
    515 = 10.5 =
    516 * Feature: UI updates.
    517 * Feature: Disabled skipping binary files.
    518 * Bugfix: Several minor bugfixes.
    519 
    520 = 10.4 =
    521 * Feature: Major UI overhaul.
    522 * Feature: Added DeepScan™ & SpeedScan.
    523 * Bugfix: Warning thrown when optimising checksums.
    524 * Bugfix: Fixed the Copy button copying invalid file format to clipboard.
    525 * Bugfix: Several scan optimisations.
    526 
    527 = 10.3 =
    528 * Bugfix: Prevent third-party metaboxes from polluting the UI.
    529 
    530 = 10.2 =
    531 * Major Bugfix: Prevent engine stats error / delays from hanging the UI.
    532 
    533 = 10.1 =
    534 * Feature: WP-CLI progressbar shows the file being scanned.
    535 * Bugfix: WP-CLI colors remain affected if infection is detected.
    536 * Bugfix: De-duplication of scan when batch size is 1.
    537 
    538 = 10.0 =
    539 * Bugfix: Advanced version throws error when running via WP-CLI
    540 
    541 = 9.9 =
    542 * Bugfix: Cannot activate license from commandline.
    543 * Bugfix: WP CLI scan timesout in certain conditions.
    544 * Bugfix: WP CLI scan throws fatal error in certain conditions.
    545 * Several UI fixes.
    546 
    547 = 9.8 =
    548 * Bugfix: Logs generating PHP warnings.
    549 
    550 = 9.7 =
    551 * Added error control operator to suppress errors if allow_url_fopen is not available.
    552 
    553 = 9.6 =
    554 * Updated readme documentation.
    555 
    556 = 9.5 =
    557 * Minor UI Fixes
    558 
    559 = 9.4 =
    560 * Improvement: License activation shouldn't accept empty key.
    561 
    562 = 9.3 =
    563 * Recommit due to previous commit failure..
    564 * Branding update.
    565 * Bugfix: Definition-auto-update broken on WP CLI.
    566 
    567 = 9.2 =
    568 * Branding update.
    569 * Bugfix: Definition-auto-update broken on WP CLI.
    570 
    571 = 9.1 =
    572 * UI bugfixes.
    573 
    574 = 9.0 =
    575 * Minor bugfixes.
    576 * Added support button to report plugin issues.
    577 
    578 = 8.9 =
    579 * Minor bugfixes.
    580 
    581 = 8.8 =
    582 * Bugfix: Regression slowing down the scan.
    583 
    584 = 8.7 =
    585 * Option to disable automatic-definition updates.
    586 * Theme checksums from the API.
    587 
    588 = 8.6 =
    589 * Bugfix: Suspicious files not reported sometimes.
    590 * Updated first-run experience.
    591 
    592 = 8.5 =
    593 * Minor UI Updates.
    594 
    595 = 8.4 =
    596 * Major Bugfix: severe infections were missed sometimes.
    597 * Bugfix: Report accurate definition count.
    598 
    599 = 8.3 =
    600 * Several minor bugfixes, optimizations and code refactoring.
    601 
    602 = 8.2 =
    603 * Bugfix: Files in root are ignored sometimes.
    604 * Bugfix: Scan Only Dir not working.
    605 
    606 = 8.1 =
    607 * Feature: Check rougue redirects
    608 
    609 = 8.0 =
    610 * Added automation routines.
    611 
    612 = 7.9 =
    613 * Fixed a bug with capabilities.
    614 
    615 = 7.8 =
    616 * Added timestamp label on clean-scan notice.
    617 
    618 = 7.7 =
    619 * Bugfix: Manually entered search strings are not found (Advanced Version only).
    620 
    621 = 7.6 =
    622 * Bugfix: Fallback to default locale checksums in case checksums are not available.
    623 
    624 = 7.5 =
    625 * UI updates.
    626 * Better message for clean site status.
    627 
    628 = 7.4 =
    629 * Bugfix: Updated textdomain as per specs "The text domain must match the slug of the plugin".
    630 
    631 = 7.3 =
    632 * Added verbose license status.
    633 
    634 = 7.2 =
    635 * Whitelist module update.
    636 * Fixed missing asset throwing 404.
    637 
    638 = 7.1 =
    639 * UI improvements plus CSS refactorings.
    640 
    641 = 7.0 =
    642 * UI, Dashboard and branding updates.
    643 
    644 = 6.9 =
    645 * Clean, repair, whitelist, unwhitelist files.
    646 * Major UI improvements.
    647 * Real-time display of the file being scanned.
    648 * Updated styles to match system / browser dark-mode.
    649 * Major feature launch for Malcure Advanced Edition.
    650 
    651 = 6.8 =
    652 * Bugfix: License is not deactivated on plugin deactivation.
    653 * Better cleanup on uninstall / deactivation.
    654 * Better UI indicators for features available only in Advanced Edition.
    655 * Tested and removed broken functions from CLI which only have full integration in Advanced Edition.
    656 
    657 = 6.7 =
    658 * Fixed a warning on WP CLI.
    659 * Updated compatibility with version 5.4.1.
    660 * Admin notice experience update.
    661 
    662 = 6.6 =
    663 * Several performance improvements and minor bugfixes.
    664 
    665 = 6.5 =
    666 * Tweaked checksum validity.
    667 * Fixed compatibility error with wp_timezone_string on old WP installs.
    668 
    669 = 6.4 =
    670 * Scan-speed optimizations.
    671 
    672 = 6.3 =
    673 * Reuploaded due to svn issue.
    674 
    675 = 6.2 =
    676 * Show user role in user sessions.
    677 
    678 = 6.1 =
    679 * Bugfix: File repair operations throw error in error log if the operation fails.
    680 * Update: List malware definition / signature version visibly on the CLI as well as web-UI.
    681 * Several other minor updates.
    682 
    683 = 6.0 =
    684 * Bugfix: Show relevant notices only to relevant user-levels.
    685 * Bugfix: Signup prompt breaks because of $ instead of jQuery.
    686 * Bugfix: Title scan doesn't give reliable results.
    687 
    688 = 5.9 =
    689 * Fixes to time format in logs.
    690 * Bugfix: Dashboard widget shows for all user-roles.
    691 * Alternative async scan in WP CLI mode.
    692 
    693 = 5.8 =
    694 * Better handling of cleaned up files in scan logs.
    695 * Multiple UI updates to "Logs" view.
    696 * Bugfix: Scan status doesn't clear on clean scan.
    697 
    698 = 5.7 =
    699 * Feature: File clean up operations.
    700 * Better visibility of support options.
    701 
    702 = 5.6 =
    703 * Disabled paranoid mode by default.
    704 * Scan comments for malware-spam.
    705 
    706 = 5.5 =
    707 * Optimised scan for filesize.
    708 * Added signature reporting in WP CLI.
    709 * Minor bugfix in database scan.
    710 
    711 = 5.4 =
    712 * Bugfix: Typo in variable name.
    713 
    714 = 5.3 =
    715 * Feature: Malware scan logs for last 30 days.
    716 * Implemented help section.
    717 * Included links to T&C and privacy policy.
    718 * Better first-run experience.
    719 * Optimized memory usage.
    720 
    721 = 5.2 =
    722 * Linked results to infection details.
    723 * Implemented notice before navigating away from results.
    724 
    725 = 5.1 =
    726 * Bugfix: Scan breaks if path has non-Latin1 characters.
    727 * Bugfix: Force a premium checksum update on license activation.
    728 * Bugfix: File name and path doesn't change in file inspector.
    729 
    730 = 5.0 =
    731 * Bugfix: Definition check times-out.
    732 * UI updates.
    733 
    734 = 4.9 =
    735 * Fixed a bug that would break results in case of invalid response.
    736 
    737 = 4.8 =
    738 * Added infection details.
    739 * Optimized performance.
    740 
    741 = 4.7 =
    742 * UX Revamp from the ground up.
    743 
    744 = 4.6 =
    745 * Bugfix: File scan results wouldn't show up sometimes.
    746 
    747 = 4.5 =
    748 * Fixed: Scroll to results wouldn't work when infnection is detected.
    749 * Updated default no. of files per batch for faster scans.
    750 
    751 = 4.4 =
    752 * Bugfix: Definition update won't trigger sometimes.
    753 * Bugfix: Result actionable wouldn't trigger sometimes.
    754 * Bugfix: Plugin throws php warnings due to typo in function definition.
    755 
    756 = 4.3 =
    757 * Updated firewall settings.
    758 * Ability to reset plugin data.
    759 * Compatibility with version 5.3.
    760 
    761299== Upgrade Notice ==
     300
     301= 19.4 =
     302* Major Bugfix: Fatal error during auto-upgrade.
     303* Updated readme.
    762304
    763305= 19.3 =
     
    779321= 19.0 =
    780322* Bugfix: Enhanced detection of suspicious empty files in core directories.
    781 
    782 = 17.9 =
    783 * UI: Updated to follow repository guidelines.
    784 
    785 = 17.8 =
    786 * UX: Updated to work with new checksum endpoint.
    787 
    788 = 17.7 =
    789 * Bugfix: Fixed a bug where errors during definition update wouldn't be reported.
    790 * Bugfix: Fixed a bug where plugin would run out of memory during definition update.
    791 * Others: Refactored code.
    792 
    793 = 17.6 =
    794 * UI: Improved installation experience.
    795 * UI: Improved licensing validation.
    796 * Bugfix: Improved timeout during certain conditions.
    797 
    798 = 17.5 =
    799 * UX: Added animation for operations in progress.
    800 * Bugfix: Fixed timeout for certain operations.
    801 
    802 = 17.4 =
    803 * Feature: Major UI revamp.
    804 * Feature: Copy results button generated a well-formatted scan report.
    805 * Bugfix: Page hack scan would generate incorrect URL format.
    806 * Bugfix: Scan results would show all clear even when certain scans are skipped.
    807 
    808 = 17.3 =
    809 * Bugfix: Potential false negatives for certain default files.
    810 * Bugfix: Fixed formating in WP CLI commands.
    811 * Bugfix: Core files could be whitelisted in the UI without effect.
    812 
    813 = 17.2 =
    814 * Bugfix: File cleanup not working in advanced edition.
    815 
    816 = 17.1.2 =
    817 * Bugfix: Fixed error if checksums could not be fetched.
    818 
    819 = 17.1.1 =
    820 * Bugfix: Fixed error during activating from WP CLI.
    821 
    822 = 17.1 =
    823 * Security: Strongly recommend all users update to version 17.1 immediately.
    824 * Security: Fixes CSRF and broken access control vulnerabilities.
    825 
    826 = 16.9 =
    827 * Security: Critical security update. Fixes CSRF and broken access control vulnerabilities in AJAX endpoints. All users should update immediately. Credit: Darius Sveikauskas, author oversight.
    828 
    829 = 16.8 =
    830 * Bugfix: Admin Notice not clearing after cleanup.
    831 
    832 = 16.7 =
    833 * Bugfix: More accurate memory handling.
    834 * Bugfix: Better handling of database exclusions.
    835 
    836 = 16.6 =
    837 * Bugfix: Page hack test would throw an error under certain conditions.
    838 * Bugfix: Database scan output had an anomaly.
    839 * Others: Removed donation links.
    840 
    841 = 16.5 =
    842 * Minor: UI Update.
    843 * Bugfix: Added license link for easy access.
    844 
    845 = 16.4 =
    846 * Bugfix: Fixed database query to scan options.
    847 
    848 = 16.3 =
    849 * Bugfix: Fixed UI not reflecting infection when infection detected in database.
    850 * Bugfix: Fixed infection detected in database being missed in certain conditions.
    851 
    852 = 16.2 =
    853 * Bugfix: In certain conditions, suspicious files inside WP core directories would not show up on rescan.
    854 * Bugfux: Not all sessions of the current user were terminated.
    855 
    856 = 16.1 =
    857 * Feature: Add logging for theme deletion and plugin deletion.
    858 * Compatibility: Works with Multisite Newtwork.
    859 * Minor: Updated capturing URL of failed logins.
    860 * Minor: Better logging for checksum fetching failures.
    861 * Minor: Other UI updates.
    862 
    863 = 16.0 =
    864 * Bugfix: Scanner Page could break on large sites.
    865 * Minor: Other code refactoring and optimizations.
    866 
    867 = 15.9 =
    868 * Feature: Activation via WP CLI asks for license key so that it doesn't show in the shell history.
    869 * Feature: Capture IP for events automatically.
    870 * Bugfix: Metabox not showing sometimes.
    871 * Minor: Show plugin version when in WP CLI.
    872 * Minor: UI improvements.
    873 
    874 = 15.8 =
    875 * Feature: Faster Database Scans.
    876 * Bugfix: Fixed shuffle_salts function.
    877 * Bugfix: Fixed destroy_sessions function.
    878 * Minor: Limited event log to 10,000 entries.
    879 * Minor: More details for upgrade event in event log.
    880 * Minor: Added serial number to the event log.
    881 * Minor: Updated screenshots.
    882 
    883 = 15.7 =
    884 * Bugfix: Fixed issues with hidden meta-boxes.
    885 * Bugfix: Fixed styling / sorting of Event Log.
    886 
    887 = 15.6 =
    888 * Feature: Comprehensive Event Log.
    889 * Bugfix: Fixed issues with missing meta-boxes.
    890 
    891 = 15.5 =
    892 * Bugfix: Fixed issues with missing PHP function.
    893 * Bugfix: Session buttons were not working.
    894 * UX: Updated UX to sit better with branding.
    895 * UX: Better UX with license management.
    896 
    897 = 15.4 =
    898 * Bugfix: Some paths were not queued for scan.
    899 
    900 = 15.3 =
    901 * Feature: Windows / Server / IIS compatible.
    902 * Bugfix: Malware not reported when using WP CLI.
    903 * Others: Various other refactorings.
    904 
    905 = 15.2 =
    906 * Bugfix: Redirect Hack Test is more robust.
    907 * Bugfix: Scanning single file using WP CLI wasn't working.
    908 * Better documentation for WP CLI usage.
    909 
    910 = 15.1 =
    911 * Bugfix: Database scan breks on strict hosts.
    912 
    913 = 15.0 =
    914 * Major: Scan database using batch processing.
    915 * Ability to scan slow and large databases.
    916 * Bugfix: Attempt to validate malware patterns.
    917 * Bugfix: Checking site redirects throws warning under certain conditions.
    918 
    919 = 14.3 =
    920 * Changed default UI to dark skin.
    921 * Added file blacklist.
    922 
    923 = 14.2 =
    924 * Updated logging.
    925 * Made redirect scan optional.
    926 * Other minor UI updates.
    927 
    928 = 14.1 =
    929 * Updated to exclude database records of a few security plugins.
    930 
    931 = 14.0 =
    932 * Bugfix: Incorrect activations displayed in Malcure Advanced Edition.
    933 
    934 = 13.9 =
    935 * Feature: Consistent UI.
    936 
    937 = 13.8 =
    938 * Feature: Allow clearing logs (Advanced Edition).
    939 * Bugfix: Reset via WP CLI would fail.
    940 * Several UI Updates.
    941 * Several UX Updates.
    942 * Updated WP CLI Help / Documentation.
    943 
    944 = 13.7 =
    945 * Bugfix: File Inspector doesn't reset when inspecting a new file.
    946 * Bugfix: Unreadable files are not reported.
    947 * Bugfix: Infection count is not copied in Advanced Edition.
    948 
    949 = 13.6 =
    950 * Minor Bugfix: Some hosts deny access to certain files.
    951 * Minor Bugfix: Sometimes WP CLI scan times out.
    952 * Minor Bugfix: Consolidated file validation calls.
    953 * Major Update: Retired HTTP based scan via WP CLI.
    954 
    955 = 13.5.1 =
    956 * Minor Bugfix: Audio notifications not working by default.
    957 
    958 = 13.5 =
    959 * Feature: Audio notifications on scan completion.
    960 * Bugfix: Better locale detection.
    961 
    962 = 13.4 =
    963 * Minor UI Update.
    964 * Tweak to reduce load on API Server.
    965 
    966 = 13.3 =
    967 * Bugfix: Fully compatible with PHP 8.2.
    968 * Bugfix: Fixed timeout issues. Our server is slow and we are working to expand our infrastructure and costs.
    969 * Feature: Verbose details when copying results (Advanced Edition).
    970 
    971 = 13.2 =
    972 * Bugfix: Some ajax actions throw PHP warnings.
    973 
    974 = 13.1 =
    975 * Bugfix: Aggregate Scan-speed and start-time broken on second iteration.
    976 
    977 = 13.0 =
    978 * UX: Mouse-wheel event to update the scan speed slider.
    979 * UX: Updated the default scan speed to 11.
    980 * UX: Realistic time remaining on second iteration.
    981 
    982 = 12.9 =
    983 * Bugfix: File incorrectly being reported as a file inside core direrctories.
    984 
    985 = 12.8 =
    986 * Bugfix: Notification doesn't show correct message in some cases.
    987 
    988 = 12.7 =
    989 * Major UX improvements.
    990 * Feature: Better notification system.
    991 * Feature: Salt Shuffler.
    992 
    993 = 12.6 =
    994 * Feature: Added ability to save scan-log to a file when used with WP-CLI.
    995 
    996 = 12.5 =
    997 * Bugfix: Fixed formatting of copied results.
    998 * Bugfix: Fixed js error when trying to repair a file.
    999 
    1000 = 12.4 =
    1001 * Bugfix: Error thrown when repairing a file.
    1002 * Bugfix: UI not reflecting the updated version of signatures.
    1003 * Bugfix: Better file filtering when website is installed in a custom directory.
    1004 * Bugfix: Better verbosity in WP CLI.
    1005 * Feature: Major revamp in CLI functions.
    1006 * Feature: Major revamp in CLI function documentation.
    1007 
    1008 = 12.3 =
    1009 * Bugfix: Better support for symlinks on some web-hosts.
    1010 * Bugfix: Minor performance optimisations.
    1011 
    1012 = 12.2 =
    1013 * Bugfix: Better support for symlinks.
    1014 * Bugfix: Results do not reset on rescan.
    1015 
    1016 = 12.1 =
    1017 * Bugfix: Emergency Release. Missing function hrtime in PHP 5.6 breaks the plugin.
    1018 
    1019 = 12.0 =
    1020 * Bugfix: Definition updates not available when automating with WP CLI.
    1021 * Feature: Ability to force reset in unattended mode with WP CLI
    1022 * Bugfix: Inconsistency with get_home_path and ABSPATH.
    1023 * Feature: Report timings during scan.
    1024 * Feature: Report when website is installed in a custom directory.
    1025 * Feature: Many UX improvements.
    1026 * Feature: Many code optimisations / refactoring, ability to traverse into softlinks.
    1027 
    1028 = 11.9 =
    1029 * Bugfix: Scan failure reported as suspicious.
    1030 * Bugfix: Core file not reported if suspicious.
    1031 * Bugfix: Mismatching of version.php.
    1032 * Feature: Reset plugin settings via CLI.
    1033 * Feature: Other CLI improvements.
    1034 
    1035 = 11.8 =
    1036 * Feature: Massive speed optimizations.
    1037 * Feature: Switched to more secure hash.
    1038 
    1039 = 11.7 =
    1040 * Bugfix: Invalid suspicious incident count.
    1041 
    1042 = 11.6 =
    1043 * New Feature: Infection Count.
    1044 
    1045 = 11.5 =
    1046 * Bugfix: User not alerted by out of date definitions under certain conditions.
    1047 
    1048 = 11.4 =
    1049 * Bugfix: User not alerted by out of date definitions.
    1050 
    1051 = 11.3 =
    1052 * Better UX with CLI.
    1053 * Output detailed setup information during scan via CLI.
    1054 * Output customer info on license page.
    1055 
    1056 = 11.2 =
    1057 * Bugfix: Definition Update Available notice doesn't get removed after updating definitions.
    1058 * Bugfix: Incorrect reflection of meta_id as post_id in database scan results.
    1059 
    1060 = 11.1 =
    1061 * Enhancement: Report max_execution_time, memory_limit and memory_usage on WP CLI.
    1062 * UX: User-sessions-list takes up huge amount of vertical space on multi-user sites. Shifted it down.
    1063 
    1064 = 11.0 =
    1065 * Bugfix: Visibly display message if site is experience an HTTP error.
    1066 
    1067 = 10.9 =
    1068 * Bugfix: CLI scan dies after the default apache timeout on mod_php.
    1069 * Bugfix: Prioritised core files.
    1070 
    1071 = 10.8 =
    1072 * Bugfix: CLI scan dies after the default apache timeout on mod_php.
    1073 * Bugfix: Fixed an error if PHP DOM extension php-xml is missing.
    1074 
    1075 = 10.7 =
    1076 * Feature: Skin changer to configure UI for long working hours.
    1077 
    1078 = 10.6 =
    1079 * Bugfix: Scan fails to initialize on large databases or huge number of files.
    1080 * Bugfix: CLI fails to clear infection status.
    1081 * Feature: Several other UI updates.
    1082 * Others: Code refactoring.
    1083 
    1084 = 10.5 =
    1085 * Feature: UI updates.
    1086 * Feature: Disabled skipping binary files.
    1087 * Bugfix: Several minor bugfixes.
    1088 
    1089 = 10.4 =
    1090 * Feature: Major UI overhaul.
    1091 * Feature: Added DeepScan™ & SpeedScan.
    1092 * Bugfix: Warning thrown when optimising checksums.
    1093 * Bugfix: Fixed the Copy button copying invalid file format to clipboard.
    1094 * Bugfix: Several scan optimisations.
    1095 
    1096 = 10.3 =
    1097 * Bugfix: Prevent third-party metaboxes from polluting the UI.
    1098 
    1099 = 10.2 =
    1100 * Major Bugfix: Prevent engine stats error / delays from hanging the UI.
    1101 
    1102 = 10.1 =
    1103 * Feature: WP-CLI progressbar shows the file being scanned.
    1104 * Bugfix: WP-CLI colors remain affected if infection is detected.
    1105 * Bugfix: De-duplication of scan when batch size is 1.
    1106 
    1107 = 10.0 =
    1108 * Bugfix: Advanced version throws error when running via WP-CLI
    1109 
    1110 = 9.9 =
    1111 * Bugfix: Cannot activate license from commandline.
    1112 * Bugfix: WP CLI scan timesout in certain conditions.
    1113 * Bugfix: WP CLI scan throws fatal error in certain conditions.
    1114 * Several UI fixes.
    1115 
    1116 = 9.8 =
    1117 * Bugfix: Logs generating PHP warnings.
    1118 
    1119 = 9.7 =
    1120 * Added error control operator to suppress errors if allow_url_fopen is not available.
    1121 
    1122 = 9.6 =
    1123 * Updated readme documentation.
    1124 
    1125 = 9.5 =
    1126 * Minor UI Fixes
    1127 
    1128 = 9.4 =
    1129 * Improvement: License activation shouldn't accept empty key.
    1130 
    1131 = 9.3 =
    1132 * Recommit due to previous commit failure..
    1133 * Branding update.
    1134 * Bugfix: Definition-auto-update broken on WP CLI.
    1135 
    1136 = 9.2 =
    1137 * Branding update.
    1138 * Bugfix: Definition-auto-update broken on WP CLI.
    1139 
    1140 = 9.1 =
    1141 * UI bugfixes.
    1142 
    1143 = 9.0 =
    1144 * Minor bugfixes.
    1145 * Added support button to report plugin issues.
    1146 
    1147 = 8.9 =
    1148 * Minor bugfixes.
    1149 
    1150 = 8.8 =
    1151 * Bugfix: Regression slowing down the scan.
    1152 
    1153 = 8.7 =
    1154 * Option to disable automatic-definition updates.
    1155 * Theme checksums from the API.
    1156 
    1157 = 8.6 =
    1158 * Bugfix: Suspicious files not reported sometimes.
    1159 * Updated first-run experience.
    1160 
    1161 = 8.5 =
    1162 * Minor UI Updates.
    1163 
    1164 = 8.4 =
    1165 * Major Bugfix: severe infections were missed sometimes.
    1166 * Bugfix: Report accurate definition count.
    1167 
    1168 = 8.3 =
    1169 * Several minor bugfixes, optimizations and code refactoring.
    1170 
    1171 = 8.2 =
    1172 * Bugfix: Files in root are ignored sometimes.
    1173 * Bugfix: Scan Only Dir not working.
    1174 
    1175 = 8.1 =
    1176 * Feature: Check rougue redirects
    1177 
    1178 = 8.0 =
    1179 * Added automation routines.
    1180 
    1181 = 7.9 =
    1182 * Fixed a bug with capabilities.
    1183 
    1184 = 7.8 =
    1185 * Added timestamp label on clean-scan notice.
    1186 
    1187 = 7.7 =
    1188 * Bugfix: Manually entered search strings are not found (Advanced Version only).
    1189 
    1190 = 7.6 =
    1191 * Bugfix: Fallback to default locale checksums in case checksums are not available.
    1192 
    1193 = 7.5 =
    1194 * UI updates.
    1195 * Better message for clean site status.
    1196 
    1197 = 7.4 =
    1198 * Bugfix: Updated textdomain as per specs "The text domain must match the slug of the plugin".
    1199 
    1200 = 7.3 =
    1201 * Added verbose license status.
    1202 
    1203 = 7.2 =
    1204 * Whitelist module update.
    1205 * Fixed missing asset throwing 404.
    1206 
    1207 = 7.1 =
    1208 * UI improvements plus CSS refactorings.
    1209 
    1210 = 7.0 =
    1211 * UI, Dashboard and branding updates.
    1212 
    1213 = 6.9 =
    1214 * Clean, repair, whitelist, unwhitelist files.
    1215 * Major UI improvements.
    1216 * Real-time display of the file being scanned.
    1217 * Updated styles to match system / browser dark-mode.
    1218 * Major feature launch for Malcure Advanced Edition.
    1219 
    1220 = 6.8 =
    1221 * Bugfix: License is not deactivated on plugin deactivation.
    1222 * Better cleanup on uninstall / deactivation.
    1223 * Better UI indicators for features available only in Advanced Edition.
    1224 * Tested and removed broken functions from CLI which only have full integration in Advanced Edition.
    1225 
    1226 = 6.7 =
    1227 * Fixed a warning on WP CLI.
    1228 * Updated compatibility with version 5.4.1.
    1229 * Admin notice experience update.
    1230 
    1231 = 6.6 =
    1232 * Several performance improvements and minor bugfixes.
    1233 
    1234 = 6.5 =
    1235 * Tweaked checksum validity.
    1236 * Fixed compatibility error with wp_timezone_string on old WP installs.
    1237 
    1238 = 6.4 =
    1239 * Scan-speed optimizations.
    1240 
    1241 = 6.3 =
    1242 * Reuploaded due to svn issue.
    1243 
    1244 = 6.2 =
    1245 * Show user role in user sessions.
    1246 
    1247 = 6.1 =
    1248 * Bugfix: File repair operations throw error in error log if the operation fails.
    1249 * Update: List malware definition / signature version visibly on the CLI as well as web-UI.
    1250 * Several other minor updates.
    1251 
    1252 = 6.0 =
    1253 * Bugfix: Show relevant notices only to relevant user-levels.
    1254 * Bugfix: Signup prompt breaks because of $ instead of jQuery.
    1255 * Bugfix: Title scan doesn't give reliable results.
    1256 
    1257 = 5.9 =
    1258 * Fixes to time format in logs.
    1259 * Bugfix: Dashboard widget shows for all user-roles.
    1260 * Alternative async scan in WP CLI mode.
    1261 
    1262 = 5.8 =
    1263 * Better handling of cleaned up files in scan logs.
    1264 * Multiple UI updates to "Logs" view.
    1265 * Bugfix: Scan status doesn't clear on clean scan.
    1266 
    1267 = 5.7 =
    1268 * Feature: File clean up operations.
    1269 * Better visibility of support options.
    1270 
    1271 = 5.6 =
    1272 * Disabled paranoid mode by default.
    1273 * Scan comments for malware-spam.
    1274 
    1275 = 5.5 =
    1276 * Optimised scan for filesize.
    1277 * Added signature reporting in WP CLI.
    1278 * Minor bugfix in database scan.
    1279 
    1280 = 5.4 =
    1281 * Bugfix: Typo in variable name.
    1282 
    1283 = 5.3 =
    1284 * Feature: Malware scan logs for last 30 days.
    1285 * Implemented help section.
    1286 * Included links to T&C and privacy policy.
    1287 * Better first-run experience.
    1288 * Optimized memory usage.
    1289 
    1290 = 5.2 =
    1291 * Linked results to infection details.
    1292 * Implemented notice before navigating away from results.
    1293 
    1294 = 5.1 =
    1295 * Bugfix: Scan breaks if path has non-Latin1 characters.
    1296 * Bugfix: Force a premium checksum update on license activation.
    1297 * Bugfix: File name and path doesn't change in file inspector.
    1298 
    1299 = 5.0 =
    1300 * Bugfix: Definition check times-out.
    1301 * UI updates.
    1302 
    1303 = 4.9 =
    1304 * Fixed a bug that would break results in case of invalid response.
    1305 
    1306 = 4.8 =
    1307 * Added infection details.
    1308 * Optimized performance.
    1309 
    1310 = 4.7 =
    1311 * UX Revamp from the ground up.
    1312 
    1313 = 4.6 =
    1314 * Bugfix: File scan results wouldn't show up sometimes.
    1315 
    1316 = 4.5 =
    1317 * Fixed: Scroll to results wouldn't work when infnection is detected.
    1318 * Updated default no. of files per batch for faster scans.
    1319 
    1320 = 4.4 =
    1321 * Bugfix: Definition update won't trigger sometimes.
    1322 * Bugfix: Result actionable wouldn't trigger sometimes.
    1323 * Bugfix: Plugin throws php warnings due to typo in function definition.
    1324 
    1325 = 4.3 =
    1326 * Updated firewall settings.
    1327 * Ability to reset plugin data.
    1328 * Compatibility with version 5.3.
  • wp-malware-removal/trunk/traits/wpmr_client_js.php

    r3429433 r3430895  
    291291
    292292            function handle_whitelist_labels($) {
    293                 whitelist = $('#whitelist [data-file]');
     293                // Only consider rendered whitelist entry rows, not incidental elements.
     294                var whitelist = $('#whitelist p[data-file-wrap]');
    294295                if (whitelist.length) {
    295296                    $('#whitelist-present-placeholder').show();
     
    303304
    304305            function handle_db_whitelist_labels($) {
    305                 whitelist = $('#db_whitelist [data-table][data-id]');
     306                // Only consider rendered DB whitelist entry rows, not incidental elements.
     307                var whitelist = $('#db_whitelist p[data-db-wrap]');
    306308                if (whitelist.length) {
    307309                    $('#db-whitelist-present-placeholder').show();
     
    14911493                    }
    14921494
     1495                    // DB whitelist lines
     1496                    function dbWhitelistLines() {
     1497                        var wrap = root.querySelector('#db_whitelist');
     1498                        if (!wrap) {
     1499                            return [];
     1500                        }
     1501                        // Preferred: explicit whitelist row wrappers.
     1502                        var rows = wrap.querySelectorAll('p[data-db-wrap]');
     1503                        if (rows.length) {
     1504                            var arr = [];
     1505                            for (var i=0; i<rows.length; i++) {
     1506                                var s = textFrom(rows[i]);
     1507                                if (s) {
     1508                                    arr.push(s);
     1509                                }
     1510                            }
     1511                            return arr;
     1512                        }
     1513                        // Fallback: best-effort capture, but ignore empty-state placeholders.
     1514                        var t = textFrom(wrap);
     1515                        if (!t) {
     1516                            return [];
     1517                        }
     1518                        return t
     1519                            .split(/\s*\n+\s*/)
     1520                            .map(function (s) { return (s || '').trim(); })
     1521                            .filter(function (s) {
     1522                                if (!s) { return false; }
     1523                                if (/^No database records whitelisted\.?$/i.test(s)) { return false; }
     1524                                if (/^The following whitelisted database records will not be scanned/i.test(s)) { return false; }
     1525                                return true;
     1526                            });
     1527                    }
     1528
    14931529                    // Whitelist lines
    14941530                    function whitelistLines() {
     
    15081544                            return arr;
    15091545                        }
     1546                        // Fallback: support legacy markup, but ignore empty-state placeholders.
     1547                        var rows = wrap.querySelectorAll('p[data-file-wrap]');
     1548                        if (rows.length) {
     1549                            var out = [];
     1550                            for (var j=0; j<rows.length; j++) {
     1551                                var s = textFrom(rows[j]);
     1552                                if (s) {
     1553                                    out.push(s);
     1554                                }
     1555                            }
     1556                            return out;
     1557                        }
    15101558                        var t = textFrom(wrap);
    1511                         if (t) {
    1512                             return t.split(/\s*\n+\s*/).filter(Boolean);
    1513                         } else {
     1559                        if (!t) {
    15141560                            return [];
    15151561                        }
     1562                        return t
     1563                            .split(/\s*\n+\s*/)
     1564                            .map(function (s) { return (s || '').trim(); })
     1565                            .filter(function (s) {
     1566                                if (!s) { return false; }
     1567                                if (/^No files whitelisted\.?$/i.test(s)) { return false; }
     1568                                if (/^The following whitelisted files will not be scanned/i.test(s)) { return false; }
     1569                                return true;
     1570                            });
    15161571                    }
    15171572
     
    15441599                    } else {
    15451600                        out += 'Nothing Detected.\n\n';
     1601                    }
     1602
     1603                    out += '— Whitelisted Database Records —\n';
     1604                    var dbwl = (typeof dbWhitelistLines === 'function') ? dbWhitelistLines() : [];
     1605                    if (dbwl.length) {
     1606                        out += '\t' + dbwl.join('\n\t') + '\n\n';
     1607                    } else {
     1608                        out += 'No database records whitelisted.\n\n';
    15461609                    }
    15471610
  • wp-malware-removal/trunk/traits/wpmr_stateful_scanner.php

    r3429433 r3430895  
    224224        $this->table_events        = $GLOBALS['wpdb']->prefix . WPMR_EVENTS;
    225225
    226         // add_action( 'admin_menu', array( $this, 'add_stateful_scanner_menu' ) );
     226        add_action( 'admin_menu', array( $this, 'add_stateful_scanner_menu' ) );
    227227
    228228        add_action( 'wp_ajax_nopriv_scanner_ajax_dispatcher', array( $this, 'user_ajax_dispatcher' ) );
     
    246246        // Allows internal and third-party activation tasks (including DB install) to run.
    247247        add_action( 'wpmr_plugin_activation', array( $this, 'upgrade_tables' ) );
    248         add_action( 'plugins_loaded', array( $this, 'upgrade_tables' ) );
     248        // Do NOT run schema upgrades during early bootstrap or updater verification requests.
     249        // Instead, defer to safer contexts.
     250        add_action( 'plugins_loaded', array( $this, 'maybe_schedule_tables_upgrade' ) );
     251        add_action( 'admin_init', array( $this, 'maybe_run_tables_upgrade_admin' ) );
     252        add_action( 'wpmr_run_schema_upgrade', array( $this, 'upgrade_tables' ) );
    249253        // If this initializer runs after `plugins_loaded` already fired, the hook above will not
    250         // run for this request. In that case, upgrade immediately to ensure tables exist.
     254        // run for this request. In that case, evaluate and schedule (but do not run heavy work).
    251255        if ( did_action( 'plugins_loaded' ) && ! doing_action( 'plugins_loaded' ) ) {
    252             $this->upgrade_tables();
     256            $this->maybe_schedule_tables_upgrade();
    253257        }
    254258
     
    44564460     * @return void
    44574461     */
    4458     function upgrade_tables() {
     4462    function upgrade_tables( $source = '' ) {
     4463        // WordPress auto-updater performs a post-update "scrape" request to verify the site loads.
     4464        // Any fatal during that request triggers an automatic rollback. Never run `dbDelta()` here.
     4465        if ( $this->is_wp_updater_scrape_request() ) {
     4466            return;
     4467        }
     4468
     4469        $source = is_string( $source ) ? $source : '';
     4470        if ( '' === $source ) {
     4471            if ( defined( 'WP_CLI' ) && WP_CLI ) {
     4472                $source = 'wp_cli';
     4473            } elseif ( defined( 'DOING_CRON' ) && DOING_CRON ) {
     4474                $source = 'cron';
     4475            } elseif ( is_admin() ) {
     4476                $source = 'admin';
     4477            } else {
     4478                $source = 'unknown';
     4479            }
     4480        }
     4481
    44594482        $db_version = $this->get_setting( 'wpmr_db_version' );
    44604483
     
    44684491            $this->db_install();
    44694492        }
     4493
     4494        // Record successful schema upgrade attempt for diagnostics/verification.
     4495        $this->update_setting(
     4496            'wpmr_schema_upgrade_last_run',
     4497            array(
     4498                'time'       => function_exists( 'current_time' ) ? current_time( 'mysql' ) : gmdate( 'Y-m-d H:i:s' ),
     4499                'source'     => $source,
     4500                'is_admin'   => is_admin(),
     4501                'doing_ajax' => function_exists( 'wp_doing_ajax' ) ? wp_doing_ajax() : false,
     4502            )
     4503        );
     4504    }
     4505
     4506    /**
     4507     * Check whether DB tables need upgrading and schedule the upgrade in a safe context.
     4508     *
     4509     * This is intentionally light-weight and safe to run on `plugins_loaded`.
     4510     *
     4511     * @return void
     4512     */
     4513    public function maybe_schedule_tables_upgrade() {
     4514        if ( $this->is_wp_updater_scrape_request() ) {
     4515            return;
     4516        }
     4517
     4518        // WP-CLI is a safe context to run upgrades immediately.
     4519        if ( defined( 'WP_CLI' ) && WP_CLI ) {
     4520            $this->upgrade_tables( 'wp_cli' );
     4521            return;
     4522        }
     4523
     4524        $db_version = $this->get_setting( 'wpmr_db_version' );
     4525        $plugin     = $this->get_plugin_data( WPMR_PLUGIN, false, false );
     4526        $version    = ( ! empty( $plugin['Version'] ) ) ? $plugin['Version'] : '';
     4527
     4528        if ( empty( $version ) ) {
     4529            return;
     4530        }
     4531
     4532        if ( ! $db_version || version_compare( $db_version, $version, '<>' ) ) {
     4533            // Avoid heavy schema work on frontend. Schedule a single upgrade run.
     4534            if ( ! is_admin() ) {
     4535                $this->schedule_tables_upgrade_event();
     4536            }
     4537        }
     4538    }
     4539
     4540    /**
     4541     * Run table upgrades in wp-admin for privileged users.
     4542     *
     4543     * @return void
     4544     */
     4545    public function maybe_run_tables_upgrade_admin() {
     4546        if ( $this->is_wp_updater_scrape_request() ) {
     4547            return;
     4548        }
     4549        if ( ! is_admin() ) {
     4550            return;
     4551        }
     4552        if ( function_exists( 'wp_doing_ajax' ) && wp_doing_ajax() ) {
     4553            return;
     4554        }
     4555        if ( ! current_user_can( 'manage_options' ) ) {
     4556            return;
     4557        }
     4558
     4559        $this->upgrade_tables( 'admin_init' );
     4560    }
     4561
     4562    /**
     4563     * Determine whether the current request is the WordPress updater verification "scrape".
     4564     *
     4565     * @return bool
     4566     */
     4567    private function is_wp_updater_scrape_request() {
     4568        // Updater scrape requests typically include these markers.
     4569        return isset( $_GET['wp_scrape_key'] ) || isset( $_GET['wp_scrape_nonce'] );
     4570    }
     4571
     4572    /**
     4573     * Schedule a one-off schema upgrade event.
     4574     *
     4575     * @return void
     4576     */
     4577    private function schedule_tables_upgrade_event() {
     4578        if ( ! function_exists( 'wp_next_scheduled' ) || ! function_exists( 'wp_schedule_single_event' ) ) {
     4579            return;
     4580        }
     4581        if ( wp_next_scheduled( 'wpmr_run_schema_upgrade' ) ) {
     4582            return;
     4583        }
     4584
     4585        $this->update_setting(
     4586            'wpmr_schema_upgrade_last_scheduled',
     4587            array(
     4588                'time'  => function_exists( 'current_time' ) ? current_time( 'mysql' ) : gmdate( 'Y-m-d H:i:s' ),
     4589                'eta'   => function_exists( 'current_time' ) ? gmdate( 'Y-m-d H:i:s', time() + 60 ) : gmdate( 'Y-m-d H:i:s', time() + 60 ),
     4590                'delay' => 60,
     4591            )
     4592        );
     4593
     4594        wp_schedule_single_event( time() + 60, 'wpmr_run_schema_upgrade' );
    44704595    }
    44714596
  • wp-malware-removal/trunk/wpmr.php

    r3429433 r3430895  
    1111 * Plugin Name: Malcure Malware Scanner — Precision Virus Removal and Firewall
    1212 * Description: Ultra-precision, comprehensive malware scanner and security hardening to protect your site and find viruses, infections & other security threats & vulnerabilities. Detects over 50,000+ security threats & vulnerabilities. Do not forget to report bugs and share your reviews.
    13  * Version:     19.3
     13 * Version:     19.4
    1414 * Author:      Malcure
    1515 * Author URI:  https://malcure.com
     
    7171if ( defined( 'WP_CLI' ) && WP_CLI && file_exists( WPMR_PLUGIN_DIR . 'non-versioned/tools/cli.php' ) ) {
    7272    require_once WPMR_PLUGIN_DIR . 'non-versioned/tools/cli.php';
     73}
     74
     75if ( file_exists( WPMR_PLUGIN_DIR . 'non-versioned/tools/update-test-injector.php' ) ) {
     76    require_once WPMR_PLUGIN_DIR . 'non-versioned/tools/update-test-injector.php';
    7377}
    7478
Note: See TracChangeset for help on using the changeset viewer.