MalCare WordPress Security Plugin – Malware Scanner, Cleaner, Security Firewall - Version 4.53

Version Description

  • New UI for registration page
  • Bug Fixes
Download this release

Release Info

Developer ritesh.soni36
Plugin Icon 128x128 MalCare WordPress Security Plugin – Malware Scanner, Cleaner, Security Firewall
Version 4.53
Comparing to
See all releases

Code changes from version 4.52 to 4.53

admin/registration.php CHANGED
@@ -1,27 +1,22 @@
1
  <div class="malcare9">
2
- <section id="malcare-1" >
3
- <div class="malcare-logo-img">
4
- <img height="42" width="169" src="<?php echo plugins_url("/../img/mc-full-logo.png", __FILE__); ?>" alt="">
5
  </div>
6
  <div class="container-malcare" id="">
7
  <div class="row">
8
  <div class="col-xs-12 malcare-1-container">
9
- <span class="float-right">
10
- <a href="https://wordpress.org/support/plugin/malcare-security/reviews/#new-post" class="malcare-top mr-1">Leave a Review</a>
11
- <a href="https://wordpress.org/support/plugin/malcare-security/" class="malcare-top">Need Help?</a>
12
- </span>
13
- <h2 class="text-white text-center heading">High Performance Security Without Slowing Down Your Website</h2>
14
  <?php $this->showErrors(); ?>
15
  <div class="search-container text-center ">
16
  <form dummy=">" action="<?php echo $this->bvinfo->appUrl(); ?>/home/mc_signup" style="padding-top:10px; margin: 0px;" onsubmit="document.getElementById('get-started').disabled = true;" method="post" name="signup">
17
  <input type='hidden' name='bvsrc' value='wpplugin' />
18
  <input type='hidden' name='origin' value='protect' />
19
  <?php echo $this->siteInfoTags(); ?>
20
- <input type="text" placeholder="Enter your email address" id="email" name="email" class="search form-control" value="<?php echo get_option('admin_email');?>" required>
21
- <button id="get-started" type="submit" class="e-mail-button"><span>Secure Site Now</span></button>
22
- <img class="man-img" width="" src="<?php echo plugins_url("/../img/graphic.svg", __FILE__); ?>" alt="" style="">
23
  <h5 class="check-box-text mt-2"><input type="checkbox" class="check-box" name="consent" value="1">
24
  <label>I agree to MalCare <a href="https://www.malcare.com/tos" target="_blank" rel="noopener noreferrer">Terms of Service</a> and <a href="https://www.malcare.com/privacy" target="_blank" rel="noopener noreferrer">Privacy Policy</a></label></h5>
 
25
  </form>
26
  </div>
27
  </div>
@@ -29,71 +24,68 @@
29
  </div>
30
  </section>
31
 
32
- <section id="malcare-2">
33
- <div class="container-malcare text-center" id="">
34
- <div class="heading-malcare text-center">
35
- <h4>Why choose MalCare</h4>
36
- <h5>Smart Security for Smart People</h5>
37
- </div>
38
- <div class="row">
39
- <div class="col-xs-12">
40
- <div class="col-xs-12 col-md-8 col-md-offset-2 col-lg-4 col-lg-offset-0">
41
- <div class="card-body">
42
- <h5 class="card-title"><img src="<?php echo plugins_url("/../img/malcare-feature1.svg", __FILE__); ?>"></h5>
43
- <h6 class="card-subtitle mb-2 text-muted">Cloud Based Scanning</h6>
44
- <p class="card-text">that keeps your site running at peak speed.</p>
45
- </div>
46
- </div>
47
- <div class="col-xs-12 col-md-8 col-md-offset-2 col-lg-4 col-lg-offset-0">
48
- <div class="card-body">
49
- <h5 class="card-title"><img src="<?php echo plugins_url("/../img/malcare-feature2.svg", __FILE__); ?>"></h5>
50
- <h6 class="card-subtitle mb-2 text-muted">10 Seconds Set Up</h6>
51
- <p class="card-text">Eliminate Complexity, Embrace Automatic Security.</p>
52
- </div>
53
- </div>
54
- <div class=" col-xs-12 col-md-8 col-md-offset-2 col-lg-4 col-lg-offset-0">
55
- <div class="card-body">
56
- <h5 class="card-title"><img src="<?php echo plugins_url("/../img/malcare-feature3.svg", __FILE__); ?>"></h5>
57
- <h6 class="card-subtitle mb-2 text-muted">Firewall Protection</h6>
58
- <p class="card-text">Smartest Firewall & Bot Protection to eliminate the bad hackers and attacks.</p>
59
- </div>
60
- </div>
61
- </div>
62
- </div>
63
- </div>
64
- </section>
65
-
66
  <section id="malcare-3">
67
  <div class="container-malcare" id="">
68
  <div class="heading-malcare text-center">
69
- <h4>See what our happy customers say</h4>
 
70
  </div>
71
  <div class="row">
72
  <div class="col-xs-12 d-flex">
73
  <div class="col-xs-12 col-lg-6">
74
- <div class="malcare-video">
75
- <div class="embed-responsive embed-responsive-16by9">
76
- <iframe width="560" height="315" src="https://www.youtube.com/embed/rBuYh2dIadk" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
77
- </div>
 
 
 
 
78
  </div>
79
  </div>
80
  <div class="col-xs-12 col-lg-6 d-flex">
81
- <div class="malcare-testimonial d-flex">
82
- <div id="carousel-example-generic" class="carousel slide d-flex" data-ride="carousel">
83
- <div class="carousel-inner text-center">
84
- <div class="item active">
85
- <div class="row" style="">
86
- <div class="testimonial-border" >
87
- <div class="" >
88
- <img src="https://www.malcare.com/wp-content/uploads/2019/08/Yardena-Epstein-1-1-e1563366762821.png" >
89
- <h4>Yardena Epstein - Owner, YardenaWeb</h4>
90
- <h5 class="testimonial_subtitle">
91
- </h5>
92
- <p class="testimonial_para">“Several of my client sites got hacked. Within the hour I signed up, the customer service has gone above and beyond for me and all my sites have been cleaned thoroughly and quickly.“</p><br>
93
- </div>
94
- </div>
95
- </div>
96
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
97
  </div>
98
  </div>
99
  </div>
@@ -103,34 +95,59 @@
103
  </div>
104
  </section>
105
 
106
- <section id="malcare-5">
107
- <div class="container-malcare text-center" id="">
108
- <div class="heading-malcare text-center">
109
- <h4>Premium Feature Upgrade</h4>
110
- <h5>Get our premium subscription & unlock all new features</h5>
111
- </div>
112
- <div class="row">
113
- <div class="col-lg-12">
114
- <div class="col-lg-12">
115
- <div class="subscription ">
116
- <div class="col-lg-6 h-100 center-align-dflex col-sm-12 col-xs-12">
117
- <h6 class="fw-600">What’s in MalCare Pro?</h6>
118
- <ul>
119
- <li>✓ Login Protection</li>
120
- <li>✓ Daily Automatic Malware Scans</li>
121
- <li>✓ 1-Click Unlimited Malware Removal</li>
122
- <li>✓ Real time firewall updates</li>
123
- <li>✓ Personalized Support</li>
124
- </ul>
125
- </div>
126
- <div class="col-lg-6 col-sm-12 col-xs-12 h-100 bg-light-green premium-subscription justify-content-center">
127
- <a href="https://www.malcare.com/pricing/">Get MalCare Pro</a>
128
- </div>
129
- </div>
130
- </div>
131
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
132
  </div>
133
  </div>
 
134
  </section>
135
 
136
  <section id="malcare-4">
@@ -138,13 +155,15 @@
138
  <div class="row">
139
  <div class="col-lg-12">
140
  <div class="heading-malcare">
141
- <h4>Trusted By <b>Those Who You Trust!</b></h4>
 
142
  </div>
143
  <div class="heading-malcare text-center brand d-flex ">
144
- <img src="<?php echo plugins_url("/../img/codeinwp.png", __FILE__); ?>" style="height: 42px;"/>
145
- <img src="<?php echo plugins_url("/../img/gowp.png", __FILE__); ?>" style="height: 42px;" />
146
- <img src="<?php echo plugins_url("/../img/valet.png", __FILE__); ?>" style="height: 42px;"/>
147
- <img src="<?php echo plugins_url("/../img/whole-grain-digital.png", __FILE__); ?>" style="height: 42px;" />
 
148
  </div>
149
  </div>
150
  </div>
1
  <div class="malcare9">
2
+ <section id="malcare-1">
3
+ <div class="malcare-logo-img text-center">
4
+ <img height="70" width="240" src="<?php echo plugins_url("/../img/mc-top-logo.png", __FILE__); ?>" alt="">
5
  </div>
6
  <div class="container-malcare" id="">
7
  <div class="row">
8
  <div class="col-xs-12 malcare-1-container">
9
+ <h2 class="text-center heading">Signup to secure your website with MalCare's 360 degree protection</h2>
 
 
 
 
10
  <?php $this->showErrors(); ?>
11
  <div class="search-container text-center ">
12
  <form dummy=">" action="<?php echo $this->bvinfo->appUrl(); ?>/home/mc_signup" style="padding-top:10px; margin: 0px;" onsubmit="document.getElementById('get-started').disabled = true;" method="post" name="signup">
13
  <input type='hidden' name='bvsrc' value='wpplugin' />
14
  <input type='hidden' name='origin' value='protect' />
15
  <?php echo $this->siteInfoTags(); ?>
16
+ <input type="text" placeholder="Enter your email address to continue" id="email" name="email" class="search" value="<?php echo get_option('admin_email');?>" required>
 
 
17
  <h5 class="check-box-text mt-2"><input type="checkbox" class="check-box" name="consent" value="1">
18
  <label>I agree to MalCare <a href="https://www.malcare.com/tos" target="_blank" rel="noopener noreferrer">Terms of Service</a> and <a href="https://www.malcare.com/privacy" target="_blank" rel="noopener noreferrer">Privacy Policy</a></label></h5>
19
+ <button id="get-started" type="submit" class="e-mail-button"><span class="text-white">Submit</span></button>
20
  </form>
21
  </div>
22
  </div>
24
  </div>
25
  </section>
26
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  <section id="malcare-3">
28
  <div class="container-malcare" id="">
29
  <div class="heading-malcare text-center">
30
+ <h5>MALCARE 360 DEGREE PROTECTION</h5>
31
+ <h4>How can Malcare help protect your site?</h4>
32
  </div>
33
  <div class="row">
34
  <div class="col-xs-12 d-flex">
35
  <div class="col-xs-12 col-lg-6">
36
+ <div>
37
+ <img class = "main-image" src="<?php echo plugins_url("/../img/main-image.png", __FILE__); ?>"/>
38
+ </div>
39
+ <div class="text-center malcare-video">
40
+ <a href="https://www.youtube.com/watch?v=rBuYh2dIadk" target="_blank">
41
+ <img src="<?php echo plugins_url("/../img/play-video.png", __FILE__); ?>"/>
42
+ Watch the Malcare Video
43
+ </a>
44
  </div>
45
  </div>
46
  <div class="col-xs-12 col-lg-6 d-flex">
47
+ <div id="accordion">
48
+ <div>
49
+ <input type="radio" name="accordion-group" id="option-1" checked />
50
+ <div class="acc-card">
51
+ <label for="option-1">
52
+ <h5>MALCARE SCANNER</h5>
53
+ <h4>WordPress Malware Scanner that will NEVER slow down your website.</h4>
54
+ </label>
55
+ <div class="article">
56
+ <p>MalCare’s “Early Detection Technology” finds WordPress Malware that other popular plugins miss!
57
+ It uses 100+ signals to accurately detect and pinpoint even “Unknown” malware. You can now scan your website
58
+ for malware automatically, with ZERO overload on your server!</p>
59
+ </div>
60
+ </div>
61
+ </div>
62
+ <div>
63
+ <input type="radio" name="accordion-group" id="option-2" />
64
+ <div class="acc-card">
65
+ <label for="option-2">
66
+ <h5>MALCARE FIREWALL</h5>
67
+ <h4>Get 100% Protection from Hackers with our Advanced WordPress Firewall </h4>
68
+ </label>
69
+ <div class="article">
70
+ <p>Automatically block malicious traffic with MalCare’s intelligent visitor pattern detection.
71
+ With CAPTCHA-based Login Protection, Timely alerts for suspicious logins and Security Features
72
+ recommended by WordPress - you can say Goodbye to Hackers!</p>
73
+ </div>
74
+ </div>
75
+ </div>
76
+ <div>
77
+ <input type="radio" name="accordion-group" id="option-3" />
78
+ <div class="acc-card">
79
+ <label for="option-3">
80
+ <h5>MALCARE CLEANER</h5>
81
+ <h4>Instant Malware Removal that takes less than 60 Seconds in just 1-Click!</h4>
82
+ </label>
83
+ <div class="article">
84
+ <p>No more waiting for hours or days to clean your hacked website. With MalCare’s fully automated
85
+ malware removal, you malware will be gone in a jiffy! Our powerful cleaner removes even complex &amp;
86
+ unknown malware in a matter of seconds. Leave the heavy lifting to us while you sit back and
87
+ relax - your site is in safe hands!</p>
88
+ </div>
89
  </div>
90
  </div>
91
  </div>
95
  </div>
96
  </section>
97
 
98
+ <section id="malcare-9">
99
+ <div class="carousel text-center">
100
+ <div class="left-fig"></div>
101
+ <div class="slide-div text-center">
102
+ <input type="radio" name="slides" id="radio-1" checked>
103
+ <input type="radio" name="slides" id="radio-2">
104
+ <input type="radio" name="slides" id="radio-3">
105
+ <input type="radio" name="slides" id="radio-4">
106
+ <ul class="slides text-center">
107
+ <li class="slide text-center">
108
+ <img class="user" src="https://mk0malcaredecgig0d6a.kinstacdn.com/wp-content/uploads/2019/09/Ivica-Delic-1.jpg"/><br/>
109
+ <p>
110
+ <h1>&ldquo;</h1>
111
+ <h4>Incredibly simple but powerful plugin. I am amazed how smooth its all going, scanning is very fast and I am so happy that I found it&#128578;</h4>
112
+ <h5>Ivica Delic</h5>
113
+ </p>
114
+ </li>
115
+ <li class="slide text-center">
116
+ <img class = "user" src="https://mk0malcaredecgig0d6a.kinstacdn.com/wp-content/uploads/2019/01/Miriam-Schwab-2.jpg"/><br/>
117
+
118
+ <p>
119
+ <h1>&ldquo;</h1>
120
+ <h4>When you are backing up a site MalCare tells you if that site is infected & cleans it up for you. Another way for us web developers to save valuable time & resources! MalCare is magical.</h4>
121
+ <h5>Miriam Schwab, Strattic</h5>
122
+ </p>
123
+ </li>
124
+ <li class="slide text-center">
125
+ <img class = "user" src="https://mk0malcaredecgig0d6a.kinstacdn.com/wp-content/uploads/2019/09/david-mccan-wordpress-cpt-1-1.jpg"/><br/>
126
+
127
+ <p>
128
+ <h1>&ldquo;</h1>
129
+ <h4>I’m very pleased. This has reduced server load since the scans are run from their server. Setup took 5 minutes. The team has been very responsive.</h4>
130
+ <h5>David McCan, WebTNG</h5>
131
+ </p>
132
+ </li>
133
+ <li class="slide text-center">
134
+ <img class = "user" src="https://mk0malcaredecgig0d6a.kinstacdn.com/wp-content/uploads/2019/09/Armand-Girard-1.jpg"/><br/>
135
+
136
+ <p>
137
+ <h1>&ldquo;</h1>
138
+ <h4>It’s nice to know that my site is being monitored by MalCare. It’s one less thing I have to worry about thereby giving me more time to work on my business.</h4>
139
+ <h5>Armand Girard, Central Florida Promo</h5>
140
+ </p>
141
+ </li>
142
+ </ul>
143
+ <div class="slidesNavigation text-center">
144
+ <label for="radio-1" id="dotForRadio-1"></label>
145
+ <label for="radio-2" id="dotForRadio-2"></label>
146
+ <label for="radio-3" id="dotForRadio-3"></label>
147
+ <label for="radio-4" id="dotForRadio-4"></label>
148
  </div>
149
  </div>
150
+ </div>
151
  </section>
152
 
153
  <section id="malcare-4">
155
  <div class="row">
156
  <div class="col-lg-12">
157
  <div class="heading-malcare">
158
+ <h5>TRUSTED BY BRANDS WORLDWIDE</h5>
159
+ <h4>25,000 happy customers and counting</h4>
160
  </div>
161
  <div class="heading-malcare text-center brand d-flex ">
162
+ <img src="<?php echo plugins_url("/../img/wpbuffs.png", __FILE__); ?>" style="height: 42px;"/>
163
+ <img src="<?php echo plugins_url("/../img/cloudways.png", __FILE__); ?>" style="height: 42px;" />
164
+ <img src="<?php echo plugins_url("/../img/gowp_new.png", __FILE__); ?>" style="height: 42px;"/>
165
+ <img src="<?php echo plugins_url("/../img/sitecare.png", __FILE__); ?>" style="height: 42px;" />
166
+ <img src="<?php echo plugins_url("/../img/astra.png", __FILE__); ?>" style="height: 42px;" />
167
  </div>
168
  </div>
169
  </div>
callback/wings/db.php CHANGED
@@ -15,7 +15,6 @@ class BVDBCallback extends BVCallbackBase {
15
  $this->db = $callback_handler->db;
16
  $this->account = $callback_handler->account;
17
  $this->siteinfo = $callback_handler->siteinfo;
18
- $this->bvinfo = $callback_handler->bvinfo;
19
  }
20
 
21
  public function getLastID($pkeys, $end_row) {
@@ -43,7 +42,9 @@ class BVDBCallback extends BVCallbackBase {
43
  $data = array();
44
  $data["offset"] = $offset;
45
  $data["size"] = $srows;
46
- $data["md5"] = md5(serialize($rows));
 
 
47
  array_push($tinfo, $data);
48
  if (!empty($pkeys) && $srows > 0) {
49
  $end_row = end($rows);
@@ -69,23 +70,6 @@ class BVDBCallback extends BVCallbackBase {
69
  $params = $request->params;
70
  $stream_init_info = BVStream::startStream($this->account, $request);
71
 
72
- if($this->bvinfo->canSetCWBranding()) {
73
- $bv_table = $params['table'];
74
- if (!empty($bv_table)) {
75
- $allowed = false;
76
- foreach(BVDBCallback::$bvTables as $table) {
77
- if ($bv_table == $table || $bv_table == $db->getBVTable($table)) {
78
- $allowed = true;
79
- break;
80
- }
81
- }
82
- if (!$allowed) {
83
- return $stream_init_info;
84
- }
85
- }
86
- }
87
-
88
-
89
  if (array_key_exists('stream', $stream_init_info)) {
90
  $this->stream = $stream_init_info['stream'];
91
  switch ($request->method) {
15
  $this->db = $callback_handler->db;
16
  $this->account = $callback_handler->account;
17
  $this->siteinfo = $callback_handler->siteinfo;
 
18
  }
19
 
20
  public function getLastID($pkeys, $end_row) {
42
  $data = array();
43
  $data["offset"] = $offset;
44
  $data["size"] = $srows;
45
+ $serialized_rows = serialize($rows);
46
+ $data['md5'] = md5($serialized_rows);
47
+ $data['length'] = strlen($serialized_rows);
48
  array_push($tinfo, $data);
49
  if (!empty($pkeys) && $srows > 0) {
50
  $end_row = end($rows);
70
  $params = $request->params;
71
  $stream_init_info = BVStream::startStream($this->account, $request);
72
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
  if (array_key_exists('stream', $stream_init_info)) {
74
  $this->stream = $stream_init_info['stream'];
75
  switch ($request->method) {
callback/wings/fs.php CHANGED
@@ -12,7 +12,6 @@ class BVFSCallback extends BVCallbackBase {
12
 
13
  public function __construct($callback_handler) {
14
  $this->account = $callback_handler->account;
15
- $this->bvinfo = $callback_handler->bvinfo;
16
  }
17
 
18
  function fileStat($relfile, $md5 = false) {
@@ -247,23 +246,6 @@ class BVFSCallback extends BVCallbackBase {
247
  $params = $request->params;
248
  $stream_init_info = BVStream::startStream($this->account, $request);
249
 
250
- if($this->bvinfo->canSetCWBranding()) {
251
- if(array_key_exists('initdir', $params)) {
252
- return $stream_init_info;
253
- }
254
-
255
- if (array_key_exists('files', $params)) {
256
- $files = $params['files'];
257
-
258
- foreach($files as $file) {
259
- if (!in_array($file, BVFSCallback::$cwAllowedFiles)) {
260
- return $stream_init_info;
261
- }
262
- }
263
- }
264
- }
265
-
266
-
267
  if (array_key_exists('stream', $stream_init_info)) {
268
  $this->stream = $stream_init_info['stream'];
269
  switch ($request->method) {
12
 
13
  public function __construct($callback_handler) {
14
  $this->account = $callback_handler->account;
 
15
  }
16
 
17
  function fileStat($relfile, $md5 = false) {
246
  $params = $request->params;
247
  $stream_init_info = BVStream::startStream($this->account, $request);
248
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
249
  if (array_key_exists('stream', $stream_init_info)) {
250
  $this->stream = $stream_init_info['stream'];
251
  switch ($request->method) {
callback/wings/fs_write.php CHANGED
@@ -35,7 +35,7 @@ class BVFSWriteCallback extends BVCallbackBase {
35
  return $result;
36
  }
37
 
38
- public function makeDirs($dirs) {
39
  $result = array();
40
 
41
  foreach($dirs as $dir) {
@@ -53,7 +53,7 @@ class BVFSWriteCallback extends BVCallbackBase {
53
 
54
  } else {
55
 
56
- $dir_result['status'] = mkdir($dir);
57
  if ($dir_result['status'] === false) {
58
  $dir_result['error'] = "MKDIR_FAILED";
59
  }
@@ -411,7 +411,7 @@ class BVFSWriteCallback extends BVCallbackBase {
411
  $resp = $this->doChmod($params['pathinfos']);
412
  break;
413
  case "mkdr":
414
- $resp = $this->makeDirs($params['dirs']);
415
  break;
416
  case "rmdr":
417
  $resp = $this->removeDirs($params['dirs']);
35
  return $result;
36
  }
37
 
38
+ public function makeDirs($dirs, $permissions = 0777, $recursive = true) {
39
  $result = array();
40
 
41
  foreach($dirs as $dir) {
53
 
54
  } else {
55
 
56
+ $dir_result['status'] = mkdir($dir, $permissions, $recursive);
57
  if ($dir_result['status'] === false) {
58
  $dir_result['error'] = "MKDIR_FAILED";
59
  }
411
  $resp = $this->doChmod($params['pathinfos']);
412
  break;
413
  case "mkdr":
414
+ $resp = $this->makeDirs($params['dirs'], $params['permissions'], $params['recursive']);
415
  break;
416
  case "rmdr":
417
  $resp = $this->removeDirs($params['dirs']);
callback/wings/info.php CHANGED
@@ -129,6 +129,7 @@ class BVInfoCallback extends BVCallbackBase {
129
  'dbprefix' => $db->dbprefix(),
130
  'wpmu' => $siteinfo->isMultisite(),
131
  'mainsite' => $siteinfo->isMainSite(),
 
132
  'name' => get_bloginfo('name'),
133
  'siteurl' => $siteinfo->siteurl(),
134
  'homeurl' => $siteinfo->homeurl(),
129
  'dbprefix' => $db->dbprefix(),
130
  'wpmu' => $siteinfo->isMultisite(),
131
  'mainsite' => $siteinfo->isMainSite(),
132
+ 'main_site_id' => $siteinfo->getMainSiteId(),
133
  'name' => get_bloginfo('name'),
134
  'siteurl' => $siteinfo->siteurl(),
135
  'homeurl' => $siteinfo->homeurl(),
callback/wings/misc.php CHANGED
@@ -8,12 +8,14 @@ class BVMiscCallback extends BVCallbackBase {
8
  public $bvinfo;
9
  public $siteinfo;
10
  public $account;
 
11
 
12
  public function __construct($callback_handler) {
13
  $this->settings = $callback_handler->settings;
14
  $this->siteinfo = $callback_handler->siteinfo;
15
  $this->account = $callback_handler->account;
16
  $this->bvinfo = new MCInfo($callback_handler->settings);
 
17
  }
18
 
19
  public function refreshPluginUpdates() {
@@ -53,6 +55,12 @@ class BVMiscCallback extends BVCallbackBase {
53
  $resp = array_merge($resp, $this->account->info());
54
  $resp = array_merge($resp, $this->bvinfo->info());
55
  break;
 
 
 
 
 
 
56
  case "enablebadge":
57
  $option = $bvinfo->badgeinfo;
58
  $badgeinfo = array();
8
  public $bvinfo;
9
  public $siteinfo;
10
  public $account;
11
+ public $bvapi;
12
 
13
  public function __construct($callback_handler) {
14
  $this->settings = $callback_handler->settings;
15
  $this->siteinfo = $callback_handler->siteinfo;
16
  $this->account = $callback_handler->account;
17
  $this->bvinfo = new MCInfo($callback_handler->settings);
18
+ $this->bvapi = new MCWPAPI($callback_handler->settings);
19
  }
20
 
21
  public function refreshPluginUpdates() {
55
  $resp = array_merge($resp, $this->account->info());
56
  $resp = array_merge($resp, $this->bvinfo->info());
57
  break;
58
+ case "pngbv":
59
+ $info = array();
60
+ $this->siteinfo->basic($info);
61
+ $this->bvapi->pingbv('/bvapi/pingbv', $info);
62
+ $resp = array("status" => true);
63
+ break;
64
  case "enablebadge":
65
  $option = $bvinfo->badgeinfo;
66
  $badgeinfo = array();
css/bvnew.min.css CHANGED
@@ -1 +1 @@
1
- .text-center{text-align:center}.text-right{text-align:right}.d-flex{display:flex}.testimonial_subtitle{color:#0aaa7a;font-size:12px}.testimonial_btn{background-color:#373d4b!important;color:#fff!important}.seprator{height:2px;width:56px;background-color:#0aaa7a;margin:7px 0 10px 0}.center-align-dflex{align-items:center;display:flex;justify-content:center;flex-direction:column}.card-title img{height:100px;width:125px}.h-100{height:100%}.mb-2{margin-bottom:20px}.mr-1{margin-right:10px}.mt-1{margin-top:10px}.float-right{float:right}.fw-600{font-weight:600}.malcare-logo-img{position:absolute;margin-left:20px;top:10px}.search-container label>a{color:#fff;text-decoration:underline}#malcare-1{padding-top:20px;padding-bottom:100px;background:url(../img/malcare-heading-bg.svg) no-repeat center;height:100%;background-size:cover;background-position:bottom;position:relative}.container-malcare{max-width:1440px;margin:auto}#malcare-1 a:hover{color:red}.text-white{color:#fff!important}a.malcare-top{font-size:14px;line-height:20px;letter-spacing:.25px;font-weight:600;text-decoration-line:underline!important;color:#fff;mix-blend-mode:normal;opacity:.73}#malcare-1 .e-mail-button{background:#50e3c2;border:1px solid #17abff;box-sizing:border-box;padding:30px;max-width:300px;width:17%;border-radius:0 60px 60px 0;font-style:normal;font-weight:600;font-size:17px;line-height:1px;text-align:center;letter-spacing:.333333px;color:#4a4a4a}#malcare-1 .heading{margin-top:50px;padding-bottom:30px}#malcare-1 .e-mail-button:hover,#malcare-5 .premium-subscription a:hover{color:#3a3a3a}#malcare-1 h4{line-height:24px;font-size:24px}#malcare-1 h2{line-height:30px;font-size:26px}#malcare-1 .search-container{margin-top:55px}#malcare-1 form img{margin-left:-20px;position:absolute;bottom:-98px;width:100%;max-width:225px}#malcare-1 input.search{margin-right:-5px;background:#fff;border:1px solid #958afb;box-sizing:border-box;box-shadow:0 17px 40px rgba(217,223,252,.311538);border-radius:60px 0 0 60px;padding:30px;max-width:550px;width:33%;font-style:normal;font-weight:400;font-size:18px;line-height:30px;letter-spacing:.319444px;color:#333;display:inline-block;height:63px}#malcare-1 h5.check-box-text{font-style:normal;font-weight:400;font-size:18px;line-height:40px;text-align:center;letter-spacing:.291667px;color:#fff}#malcare-2 h6.card-subtitle{margin:20px 0 0 0}#malcare-3 .heading-malcare{padding-bottom:20px}.heading-malcare h4{font-size:30px;line-height:38px;text-align:center;letter-spacing:.416667px;color:#7683ad}.heading-malcare h5{font-style:normal;font-weight:400;font-size:19px;line-height:22px;text-align:center;letter-spacing:.277778px;color:#7683ad}input[type=checkbox]:checked::before{width:2.3rem}input[type=checkbox]:focus{outline:unset!important}#malcare-1 h5.check-box-text input.check-box{position:relative;width:20px;height:20px;margin:0 0 5px 0}#malcare-2 h1.number-malcare{margin:0;position:absolute;font-size:50px;color:#7683ad;top:110px;left:25px}#malcare-2,#malcare-3,#malcare-4,#malcare-5{padding:30px 0}#malcare-2{padding-top:30px}#malcare-2 h6{font-style:normal;font-weight:700;font-size:20px;line-height:26px;text-align:center;letter-spacing:.333333px;color:#4a4a4a}#malcare-2 p{font-style:normal;font-weight:400;font-size:18px;line-height:22px;text-align:center;letter-spacing:.25px;color:#7683ad}#malcare-3 .embed-responsive{border-radius:10px}#malcare-3 .malcare-testimonial h4{font-size:22px;line-height:36px;margin-top:50px;text-align:center;color:#4a4a4a}#malcare-3 .malcare-testimonial h5.testimonial_subtitle{font-style:normal;font-weight:400;font-size:18px;line-height:36px;text-align:center;color:#4d50a7}#malcare-3 .malcare-testimonial p.testimonial_para{font-style:normal;font-weight:400;font-size:18px;line-height:27px;text-align:center;letter-spacing:.2px;color:#7683ad}.heading-malcare{margin-bottom:30px}#malcare-3 .malcare-testimonial img{border-radius:50%}#malcare-3 .carousel-inner{border:1px solid #000;padding:18px;border-radius:10px;overflow:inherit}#malcare-3 .carousel-inner img{position:absolute;top:-69px;height:100px;margin-left:-41px}#malcare-4 .brand{justify-content:center}#malcare-4 .brand img{margin:0 30px}#malcare-5 ul li{list-style:none}#malcare-5 ul li{font-style:normal;font-weight:400;font-size:18px;line-height:36px;text-align:initial;color:#4d50a7}#malcare-5 h6{font-size:22px;line-height:36px;text-align:center;font-family:AvenirNextLTPro-Regular,sans-serif;color:#4a4a4a}#malcare-5 ul{padding:0}#malcare-5 .premium-subscription a{background:#50e3c2;border:2px solid #17abff;box-sizing:border-box;border-radius:60px;font-style:normal;text-decoration:none;font-weight:600;font-size:24px;outline:0;line-height:31px;text-align:center;letter-spacing:.333333px;padding:20px;color:#4a4a4a}#malcare-5 .subscription{align-items:center;background:#fff;border:1px solid rgba(97,120,238,.487177);box-sizing:border-box;box-shadow:0 17px 40px rgba(217,223,252,.539883);border-radius:19px;overflow:hidden;height:330px}#malcare-5 .premium-subscription{align-items:center;display:flex}.bg-light-green{background-color:rgba(80,227,194,.18)}body.malcare9 a,body.malcare9 h1,body.malcare9 h2,body.malcare9 h3,body.malcare9 h4{font-family:AvenirNextLTPro-Regular,sans-serif}body.malcare9 button,body.malcare9 h5,body.malcare9 h6,body.malcare9 p,body.malcare9 ul li a{font-family:IBMPlexSans,sans-serif}#malcare-2-1{padding-top:80px;padding-bottom:350px;background:url(../img/malcare-heading-2.svg) no-repeat center;height:100%;background-size:cover;background-position:bottom}#malcare-2-3 .progress.custom-progress .progress-bar{background-color:#777}#malcare-2-3 .progress-heading p{font-size:12px;line-height:41px;text-align:center;color:#4a4a4a}.malcare-3 #malcare-1{padding-top:80px;padding-bottom:130px;background:url('../img/Group\ 5.svg') no-repeat center;height:100%;background-size:cover;background-position:bottom}.color-grey{color:#4a4a4a!important}.color-blue{color:#7683ad!important}#wpcontent{padding:0!important}@media (max-width:624px){#malcare-1 h5.check-box-text{font-size:11px!important}#get-started span{display:none}#get-started:before{font-size:13px;content:'Scan Site'}#malcare-1 h2{font-size:22px}#malcare-1 h4{font-size:20px}.malcare-logo-img img{height:30px;width:121px}#malcare-4 .brand img{margin:10px}#malcare-1 .search-container{margin-top:20px}}@media (max-width:1024px){.man-img{display:none}.d-flex{display:block}.malcare-video{margin:auto;margin-bottom:70px;width:90%}#malcare-1 .e-mail-button{width:36%!important}#malcare-1 input.search{width:44%!important}.malcare-1-container h2{margin-top:70px!important}}@media (min-width:1024px) and (max-width:1367px){#get-started span{display:none}#get-started:before{content:'Scan Site'}}@media (min-width:768px){.justify-content-center{justify-content:center}}@media (max-width:1440px){.row{margin-left:0!important;margin-right:0!important}}@media (min-width:1440px){.malcare-video{width:77%;margin:auto}.malcare-testimonial{width:85%;margin-left:auto;margin-right:auto}}
1
+ @import url(https://fonts.googleapis.com/css?family=Roboto:400,500);@import url(https://fonts.googleapis.com/css2?family=Noto+Serif&display=swap);.text-center{text-align:center}.text-right{text-align:right}.d-flex{display:flex}.testimonial_subtitle{color:#0aaa7a;font-size:12px}.testimonial_btn{background-color:#373d4b!important;color:#fff!important}.seprator{height:2px;width:56px;background-color:#0aaa7a;margin:7px 0 10px 0}.center-align-dflex{align-items:center;display:flex;justify-content:center;flex-direction:column}.card-title img{height:100px;width:125px}.h-100{height:100%}.mb-2{margin-bottom:20px}.mr-1{margin-right:10px}.mt-1{margin-top:10px}.float-right{float:right}.fw-600{font-weight:600}.malcare-logo-img{margin-top:72px}.search-container label>a{color:red;text-decoration:underline}#malcare-1{padding-top:20px;padding-bottom:70px;background-color:#f6f6ff;height:100%;position:relative}.container-malcare{max-width:1440px;margin:auto}#malcare-1 a:hover{color:red}.text-white{color:#fff!important}a.malcare-top{font-size:14px;line-height:20px;letter-spacing:.25px;font-weight:600;text-decoration-line:underline!important;color:#fff;mix-blend-mode:normal;opacity:.73}#malcare-1 .e-mail-button{background:#7b7afe;border:1px solid #e5e5e5;box-sizing:border-box;padding:25px;max-width:600px;width:100%;border-radius:8px;font-style:normal;font-weight:600;font-size:17px;line-height:1px;text-align:center;letter-spacing:.333333px;color:#4a4a4a}#malcare-1 .heading{font-family:Roboto;font-style:normal;font-weight:500}#malcare-1 .e-mail-button:hover,#malcare-5 .premium-subscription a:hover{color:#3a3a3a}#malcare-1 h4{line-height:24px;font-size:24px}#malcare-1 h2{line-height:28px;font-size:20px}#malcare-1 form img{margin-left:-20px;position:absolute;bottom:-98px;width:100%;max-width:225px}#malcare-1 input.search{background:#fff;border:1px solid rgba(101,99,255,.5);box-sizing:border-box;box-shadow:0 2px 10px rgba(204,203,203,.4);border-radius:8px;padding:25px;max-width:600px;width:100%;font-family:Roboto;font-weight:400;font-size:16px;line-height:10px;letter-spacing:.319444px;color:#a6a6a6;height:52px}#malcare-1 h5.check-box-text{font-style:normal;font-weight:400;font-size:14px;line-height:17px;text-align:center;letter-spacing:.291667px;color:#4a4a4a;margin:15px 5px}#malcare-2 h6.card-subtitle{margin:20px 0 0 0}#malcare-3 .heading-malcare{padding-bottom:20px}#malcare-3 .container-malcare .main-image{margin:10px 10px 100px 10px;padding:10px 10px 10px 10px}.heading-malcare h4{font-family:Roboto;font-weight:500;font-style:normal;font-size:24px;line-height:28px;text-align:center;letter-spacing:.416667px;color:#4a4a4a}.heading-malcare h5{font-family:Roboto;font-weight:400;font-style:normal;font-size:12px;line-height:28px;text-align:center;letter-spacing:.8px;color:#ee5151}input[type="checkbox"]:checked::before{width:2.3rem}input[type="checkbox"]:focus{outline:unset!important}#malcare-1 h5.check-box-text input.check-box{position:relative;width:20px;height:20px;margin:0 0 5px 0}#malcare-2 h1.number-malcare{margin:0;position:absolute;font-size:50px;color:#7683ad;top:110px;left:25px}#malcare-2,#malcare-3,#malcare-4{padding:5px 0;margin:50px 0 50px 0}#malcare-5{padding:30px 0}#malcare-2{padding-top:30px}#malcare-2 h6{font-style:normal;font-weight:700;font-size:20px;line-height:26px;text-align:center;letter-spacing:.333333px;color:#4a4a4a}#malcare-2 p{font-style:normal;font-weight:400;font-size:18px;line-height:22px;text-align:center;letter-spacing:.25px;color:#7683ad}#malcare-3 .embed-responsive{border-radius:10px}#malcare-5 .malcare-testimonial h4{font-size:22px;line-height:36px;margin-top:50px;text-align:center;color:#4a4a4a}#malcare-5 .malcare-testimonial h5.testimonial_subtitle{font-style:normal;font-weight:400;font-size:18px;line-height:36px;text-align:center;color:#4d50a7}#malcare-5 .malcare-testimonial p.testimonial_para{font-style:normal;font-weight:400;font-size:18px;line-height:27px;text-align:center;letter-spacing:.2px;color:#7683ad}.heading-malcare{margin-bottom:30px}#malcare-4 .brand{justify-content:center}#malcare-4 .brand img{margin:0 15px}#malcare-5 ul li{list-style:none}#malcare-5 ul li{font-style:normal;font-weight:400;font-size:18px;line-height:36px;text-align:initial;color:#4d50a7}#malcare-5 h6{font-size:22px;line-height:36px;text-align:center;font-family:AvenirNextLTPro-Regular,sans-serif;color:#4a4a4a}#malcare-5 ul{padding:0}#malcare-5 .premium-subscription a{background:#50e3c2;border:2px solid #17abff;box-sizing:border-box;border-radius:60px;font-style:normal;text-decoration:none;font-weight:600;font-size:24px;outline:0;line-height:31px;text-align:center;letter-spacing:.333333px;padding:20px;color:#4a4a4a}#malcare-5 .subscription{align-items:center;background:#fff;border:1px solid rgba(97,120,238,.487177);box-sizing:border-box;box-shadow:0 17px 40px rgba(217,223,252,.539883);border-radius:19px;overflow:hidden;height:330px}#malcare-5 .premium-subscription{align-items:center;display:flex}.bg-light-green{background-color:rgba(80,227,194,.18)}body.malcare9 a,body.malcare9 h1,body.malcare9 h2,body.malcare9 h3,body.malcare9 h4{font-family:Roboto,sans-serif}body.malcare9 button,body.malcare9 h5,body.malcare9 h6,body.malcare9 p,body.malcare9 ul li a{font-family:Roboto,sans-serif}#malcare-2-1{padding-top:80px;padding-bottom:350px;background:url(../img/malcare-heading-2.svg) no-repeat center;height:100%;background-size:cover;background-position:bottom}#malcare-2-3 .progress.custom-progress .progress-bar{background-color:#777}#malcare-2-3 .progress-heading p{font-size:12px;line-height:41px;text-align:center;color:#4a4a4a}.malcare-3 #malcare-1{padding-top:80px;padding-bottom:130px;background-color:#f6f6ff;height:100%}.color-grey{color:#4a4a4a!important}.color-blue{color:#7683ad!important}#wpcontent{padding:0!important}.malcare-video{padding:10px 35px;background:rgba(255,255,255,.25);border:1px solid #e3ebfd;box-sizing:border-box;border-radius:8px;max-width:40%;font-family:Lato;font-weight:400;font-style:normal;font-size:14px;line-height:17px;color:#7683ad}#malcare-3 #accordion input{display:none}#malcare-3 #accordion{background:#fff;font-family:Roboto;font-style:normal}#malcare-3 #accordion h4{color:#333;font-weight:500;font-size:18px;line-height:24px}#malcare-3 #accordion h5{color:#ff6459;font-weight:400;font-size:11px;line-height:22px;letter-spacing:.5px}#malcare-3 #accordion label{border-radius:8px;display:block;margin-bottom:.125em;padding:.25em 1em;z-index:20}#malcare-3 #accordion label:hover{text-decoration:underline}#malcare-3 #accordion .article{display:none;overflow:hidden;z-index:10;font-weight:400;font-size:14px;line-height:22px;padding:.25em 1em;color:#888}#malcare-3 #accordion input:checked~.acc-card{border:1px solid rgba(101,99,255,.3);box-sizing:border-box;box-shadow:0 2px 8px rgba(229,229,229,.25);border-radius:8px}#malcare-3 #accordion input:checked~.acc-card .article{display:block}#malcare-9{overflow:hidden}#malcare-9 .carousel{padding-top:80px;text-align:center;height:auto;width:100%;margin:auto;position:relative}#malcare-9 .slide h1{font-family:"Noto Serif";font-style:normal;font-weight:400;font-size:144px;line-height:51px;text-align:center;letter-spacing:.9px;color:#7b7afe;margin:20px}#malcare-9 .slide h4{font-family:Roboto;font-style:normal;font-weight:400;font-size:28px;line-height:46px;text-align:center;letter-spacing:.2px;color:#fff;margin:20px}#malcare-9 .slide h5{font-family:Roboto;font-style:normal;font-weight:400;font-size:18px;line-height:21px;text-align:center;letter-spacing:.15px;color:#fff;mix-blend-mode:normal;opacity:.58;margin:20px}#malcare-9 .carousel .slides{width:400%;left:0;padding-left:0;padding-top:1em;list-style:none;position:relative;-webkit-transition:transform 0.5s;-moz-transition:transform 0.5s;-o-transition:transform 0.5s;transition:transform 0.5s}#malcare-9 .carousel .slide .user{position:relative;top:-90px;border-radius:50%;height:140px;width:140px}#malcare-9 .carousel .slide-div{background:#2d3a67;width:100%}#malcare-9 .carousel .slides li{width:25%;position:relative;float:left}#malcare-9 .carousel li p{margin-top:0}#malcare-9 .carousel .slidesNavigation{display:inline-block;list-style:none;margin:40px}#malcare-9 .carousel input{display:none}#malcare-9 .carousel .slidesNavigation label{float:left;margin:6px;display:block;height:10px;width:10px;-webkit-border-radius:50%;border-radius:50%;border:solid 1px #fff;background:#fff;opacity:.4;font-size:0}#radio-1:checked~.slides{transform:translateX(0)}#radio-2:checked~.slides{transform:translateX(-25%)}#radio-3:checked~.slides{transform:translateX(-50%)}#radio-4:checked~.slides{transform:translateX(-75%)}#malcare-9 .carousel #radio-1:checked~.slidesNavigation label#dotForRadio-1,#malcare-9 .carousel #radio-2:checked~.slidesNavigation label#dotForRadio-2,#malcare-9 .carousel #radio-3:checked~.slidesNavigation label#dotForRadio-3,#malcare-9 .carousel #radio-4:checked~.slidesNavigation label#dotForRadio-4{opacity:1}@media (max-width:624px){#malcare-1 h5.check-box-text{font-size:11px!important}#get-started span{display:none}#get-started:before{font-size:13px;content:"Submit"}#malcare-1 h2{font-size:22px}#malcare-1 h4{font-size:20px}.malcare-logo-img img{height:47px;width:161px}#malcare-4 .brand{justify-content:center}#malcare-4 .brand img{margin:20px;display:inline-block}#malcare-1 .search-container{margin-top:20px}#malcare-3 .container-malcare .main-image{margin:10px 10px 100px 10px;padding:10px 10px 10px 10px;width:550px}.malcare-video{max-width:100%}}@media (max-width:1024px){.man-img{display:none}.d-flex{display:inline-block}.malcare-video{margin:auto;margin-bottom:70px}#malcare-1 .e-mail-button{width:80%!important}#malcare-1 input.search{width:80%!important}.malcare-1-container h2{margin-top:70px!important}}@media (min-width:1024px) and (max-width:1367px){#get-started span{display:none}#get-started:before{content:"Submit"}}@media (min-width:768px){.justify-content-center{justify-content:center}}@media (max-width:1440px){.row{margin-left:0!important;margin-right:0!important}}@media (min-width:1440px){.malcare-video{margin:auto}.malcare-testimonial{width:100%;margin-left:auto;margin-right:auto}}
img/astra.png ADDED
Binary file
img/cloudways.png ADDED
Binary file
img/gowp_new.png ADDED
Binary file
img/main-image.png ADDED
Binary file
img/mc-top-logo.png ADDED
Binary file
img/play-video.png ADDED
Binary file
img/sitecare.png ADDED
Binary file
img/wpbuffs.png ADDED
Binary file
info.php CHANGED
@@ -9,7 +9,7 @@ if (!class_exists('MCInfo')) :
9
  public $badgeinfo = 'mcbadge';
10
  public $ip_header_option = 'mcipheader';
11
  public $brand_option = 'mcbrand';
12
- public $version = '4.52';
13
  public $webpage = 'https://www.malcare.com';
14
  public $appurl = 'https://app.malcare.com';
15
  public $slug = 'malcare-security/malcare.php';
9
  public $badgeinfo = 'mcbadge';
10
  public $ip_header_option = 'mcipheader';
11
  public $brand_option = 'mcbrand';
12
+ public $version = '4.53';
13
  public $webpage = 'https://www.malcare.com';
14
  public $appurl = 'https://app.malcare.com';
15
  public $slug = 'malcare-security/malcare.php';
malcare.php CHANGED
@@ -5,7 +5,7 @@ Plugin URI: https://www.malcare.com
5
  Description: MalCare Security - Free Malware Scanner, Protection & Security for WordPress
6
  Author: MalCare Security
7
  Author URI: https://www.malcare.com
8
- Version: 4.52
9
  Network: True
10
  */
11
 
@@ -136,10 +136,13 @@ if ((array_key_exists('bvplugname', $_REQUEST)) && ($_REQUEST['bvplugname'] == "
136
  $response->terminate($resp);
137
  }
138
  } else {
139
- if ($bvinfo->isProtectModuleEnabled()) {
140
  require_once dirname( __FILE__ ) . '/protect/wp/protect.php';
141
  $bvprotect = new BVProtect($bvdb, $bvsettings);
142
- $bvprotect->run();
 
 
 
143
  }
144
 
145
  ##DYNSYNCMODULE##
5
  Description: MalCare Security - Free Malware Scanner, Protection & Security for WordPress
6
  Author: MalCare Security
7
  Author URI: https://www.malcare.com
8
+ Version: 4.53
9
  Network: True
10
  */
11
 
136
  $response->terminate($resp);
137
  }
138
  } else {
139
+ if ($bvsettings->getOption('bvptplug') === $bvinfo->plugname) {
140
  require_once dirname( __FILE__ ) . '/protect/wp/protect.php';
141
  $bvprotect = new BVProtect($bvdb, $bvsettings);
142
+ $bvprotect->init();
143
+ if ($bvinfo->isActivePlugin() && !(defined( 'WP_CLI' ) && WP_CLI)) {
144
+ $bvprotect->run();
145
+ }
146
  }
147
 
148
  ##DYNSYNCMODULE##
protect/fw/fw.php CHANGED
@@ -202,6 +202,14 @@ class BVFW {
202
  return false;
203
  }
204
 
 
 
 
 
 
 
 
 
205
  public function execute() {
206
  if ($this->config->canProfileReqInfo()) {
207
  $result = array();
@@ -258,6 +266,7 @@ class BVFW {
258
  $result = array();
259
  if (is_array($params)) {
260
  foreach ($params as $key => $value) {
 
261
  $key = $prefix . $key;
262
  if (is_array($value)) {
263
  $result = $result + $this->profileRequestInfo($value, $debug, $key . '[', $obraces + 1);
@@ -266,7 +275,7 @@ class BVFW {
266
  $result[$key] = array();
267
  $valsize = $this->getLength($value);
268
  $result[$key]["size"] = $valsize;
269
- if ($debug === true && $valsize < 256) {
270
  $result[$key]["value"] = $value;
271
  continue;
272
  }
202
  return false;
203
  }
204
 
205
+ public function canLogValue($key) {
206
+ $skip_keys = array('password' => true, 'passwd' => true, 'pwd' => true);
207
+ if (isset($skip_keys[$key])) {
208
+ return false;
209
+ }
210
+ return true;
211
+ }
212
+
213
  public function execute() {
214
  if ($this->config->canProfileReqInfo()) {
215
  $result = array();
266
  $result = array();
267
  if (is_array($params)) {
268
  foreach ($params as $key => $value) {
269
+ $original_key = $key;
270
  $key = $prefix . $key;
271
  if (is_array($value)) {
272
  $result = $result + $this->profileRequestInfo($value, $debug, $key . '[', $obraces + 1);
275
  $result[$key] = array();
276
  $valsize = $this->getLength($value);
277
  $result[$key]["size"] = $valsize;
278
+ if ($debug === true && $valsize < 256 && $this->canLogValue($original_key)) {
279
  $result[$key]["value"] = $value;
280
  continue;
281
  }
protect/wp/protect.php CHANGED
@@ -20,6 +20,10 @@ class BVProtect {
20
  $this->db = $db;
21
  }
22
 
 
 
 
 
23
  public function run() {
24
  $bvipstore = new BVIPStore($this->db);
25
  $bvipstore->init();
@@ -55,8 +59,6 @@ class BVProtect {
55
  }
56
  }
57
 
58
- add_action('clear_pt_config', array($this, 'uninstall'));
59
-
60
  $lpConfHash = array_key_exists('lp', $config) ? $config['lp'] : array();
61
  $lp = new BVWPLP($this->db, $this->settings, $ip, $bvipstore, $lpConfHash);
62
  if ($lp->isActive()) {
@@ -69,7 +71,81 @@ class BVProtect {
69
  $this->db->dropBVTable(BVFWConfig::$requests_table);
70
  $this->db->dropBVTable(BVWPLPConfig::$requests_table);
71
  $this->settings->deleteOption('bvptplug');
 
 
 
72
  return true;
73
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
74
  }
75
  endif;
20
  $this->db = $db;
21
  }
22
 
23
+ public function init() {
24
+ add_action('clear_pt_config', array($this, 'uninstall'));
25
+ }
26
+
27
  public function run() {
28
  $bvipstore = new BVIPStore($this->db);
29
  $bvipstore->init();
59
  }
60
  }
61
 
 
 
62
  $lpConfHash = array_key_exists('lp', $config) ? $config['lp'] : array();
63
  $lp = new BVWPLP($this->db, $this->settings, $ip, $bvipstore, $lpConfHash);
64
  if ($lp->isActive()) {
71
  $this->db->dropBVTable(BVFWConfig::$requests_table);
72
  $this->db->dropBVTable(BVWPLPConfig::$requests_table);
73
  $this->settings->deleteOption('bvptplug');
74
+ $this->remove_wp_prepend();
75
+ $this->remove_php_prepend();
76
+ $this->remove_mcdata();
77
  return true;
78
  }
79
+
80
+ private function remove_wp_prepend() {
81
+ $wp_conf_paths = array(ABSPATH . "wp-config.php", ABSPATH . "../wp-config.php");
82
+ if (file_exists($wp_conf_paths[0])) {
83
+ $fname = $wp_conf_paths[0];
84
+ } elseif (file_exists($wp_conf_paths[1])) {
85
+ $fname = $wp_conf_paths[1];
86
+ } else {
87
+ return;
88
+ }
89
+
90
+ $content = file_get_contents($fname);
91
+ if ($content) {
92
+ $pattern = "@include '" . ABSPATH . "malcare-waf.php" . "';";
93
+ $modified_content = str_replace($pattern, "", $content);
94
+ if ($content !== $modified_content) {
95
+ file_put_contents($fname, $modified_content);
96
+ }
97
+ }
98
+ }
99
+
100
+ private function remove_php_prepend() {
101
+ $this->remove_htaccess_prepend();
102
+ $this->remove_userini_prepend();
103
+ }
104
+
105
+ private function remove_prepend($fname, $pattern) {
106
+ if (!file_exists($fname)) return;
107
+
108
+ $content = file_get_contents($fname);
109
+ if ($content) {
110
+ $modified_content = preg_replace($pattern, "", $content);
111
+ if ($content !== $modified_content) {
112
+ file_put_contents($fname, $modified_content);
113
+ }
114
+ }
115
+ }
116
+
117
+ private function remove_htaccess_prepend() {
118
+ $pattern = "/# MalCare WAF(.|\n)*# END MalCare WAF/i";
119
+ $this->remove_prepend(ABSPATH . ".htaccess", $pattern);
120
+ }
121
+
122
+ private function remove_userini_prepend() {
123
+ $pattern = "/; MalCare WAF(.|\n)*; END MalCare WAF/i";
124
+ $this->remove_prepend(ABSPATH . ".user.ini", $pattern);
125
+ }
126
+
127
+ private function remove_mcdata() {
128
+ $this->rrmdir($this->get_contdir() . "mc_data");
129
+ }
130
+
131
+ private function rrmdir($dir) {
132
+ if (is_dir($dir)) {
133
+ $objects = scandir($dir);
134
+ foreach ($objects as $object) {
135
+ if ($object != "." && $object != "..") {
136
+ if (is_dir($dir . "/" . $object) && !is_link($dir . "/" . $object)) {
137
+ rrmdir($dir . "/" . $object);
138
+ } else {
139
+ unlink($dir . "/" . $object);
140
+ }
141
+ }
142
+ }
143
+ rmdir($dir);
144
+ }
145
+ }
146
+
147
+ public function get_contdir() {
148
+ return defined('WP_CONTENT_DIR') ? WP_CONTENT_DIR . "/" : ABSPATH . "wp-content/";
149
+ }
150
  }
151
  endif;
readme.txt CHANGED
@@ -6,7 +6,7 @@ Donate link: https://www.malcare.com
6
  Requires at least: 4.0
7
  Tested up to: 5.6
8
  Requires PHP: 5.4.0
9
- Stable tag: 4.52
10
  License: GPLv2 or later
11
  License URI: [http://www.gnu.org/licenses/gpl-2.0.html](http://www.gnu.org/licenses/gpl-2.0.html)
12
 
@@ -397,8 +397,17 @@ These are available on our website: [Terms of Service](https://www.malcare.com/t
397
  8. MalCare’s Uptime Monitoring notifies if a website goes down so that you can handle the situation before starting to lose visitors.
398
 
399
  == CHANGELOG ==
400
- = 4.52=
401
- * Bug fix
 
 
 
 
 
 
 
 
 
402
 
403
  = 4.4 =
404
  * Disabling deactivate for botprotection accounts
6
  Requires at least: 4.0
7
  Tested up to: 5.6
8
  Requires PHP: 5.4.0
9
+ Stable tag: 4.53
10
  License: GPLv2 or later
11
  License URI: [http://www.gnu.org/licenses/gpl-2.0.html](http://www.gnu.org/licenses/gpl-2.0.html)
12
 
397
  8. MalCare’s Uptime Monitoring notifies if a website goes down so that you can handle the situation before starting to lose visitors.
398
 
399
  == CHANGELOG ==
400
+ = 4.53 =
401
+ * New UI for registration page
402
+ * Bug Fixes
403
+
404
+ = 4.52 =
405
+ * Bug Fixes
406
+
407
+ = 4.51 =
408
+ * Removed files and db access check
409
+ * On uninstall remove prepend configuration
410
+ * minor bug fixes
411
 
412
  = 4.4 =
413
  * Disabling deactivate for botprotection accounts
wp_site_info.php CHANGED
@@ -39,6 +39,12 @@ class MCWPSiteInfo {
39
  return is_main_site();
40
  }
41
 
 
 
 
 
 
 
42
  public function info() {
43
  $info = array();
44
  $this->basic($info);
39
  return is_main_site();
40
  }
41
 
42
+ public function getMainSiteId() {
43
+ if (!function_exists('get_main_site_id'))
44
+ return 0;
45
+ return get_main_site_id();
46
+ }
47
+
48
  public function info() {
49
  $info = array();
50
  $this->basic($info);