Version Description
- New UI for registration page
- Bug Fixes
Download this release
Release Info
Developer | ritesh.soni36 |
Plugin | 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 +116 -97
- callback/wings/db.php +3 -19
- callback/wings/fs.php +0 -18
- callback/wings/fs_write.php +3 -3
- callback/wings/info.php +1 -0
- callback/wings/misc.php +8 -0
- css/bvnew.min.css +1 -1
- img/astra.png +0 -0
- img/cloudways.png +0 -0
- img/gowp_new.png +0 -0
- img/main-image.png +0 -0
- img/mc-top-logo.png +0 -0
- img/play-video.png +0 -0
- img/sitecare.png +0 -0
- img/wpbuffs.png +0 -0
- info.php +1 -1
- malcare.php +6 -3
- protect/fw/fw.php +10 -1
- protect/wp/protect.php +78 -2
- readme.txt +12 -3
- wp_site_info.php +6 -0
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="
|
5 |
</div>
|
6 |
<div class="container-malcare" id="">
|
7 |
<div class="row">
|
8 |
<div class="col-xs-12 malcare-1-container">
|
9 |
-
<
|
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
|
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 |
-
<
|
|
|
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
|
75 |
-
<
|
76 |
-
|
77 |
-
|
|
|
|
|
|
|
|
|
78 |
</div>
|
79 |
</div>
|
80 |
<div class="col-xs-12 col-lg-6 d-flex">
|
81 |
-
<div
|
82 |
-
<div
|
83 |
-
<
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
97 |
</div>
|
98 |
</div>
|
99 |
</div>
|
@@ -103,34 +95,59 @@
|
|
103 |
</div>
|
104 |
</section>
|
105 |
|
106 |
-
<section id="malcare-
|
107 |
-
<div class="
|
108 |
-
<div class="
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
<
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
</
|
130 |
-
</
|
131 |
-
</
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
-
<
|
|
|
142 |
</div>
|
143 |
<div class="heading-malcare text-center brand d-flex ">
|
144 |
-
<img src="<?php echo plugins_url("/../img/
|
145 |
-
<img src="<?php echo plugins_url("/../img/
|
146 |
-
<img src="<?php echo plugins_url("/../img/
|
147 |
-
<img src="<?php echo plugins_url("/../img/
|
|
|
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 &
|
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>“</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🙂</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>“</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>“</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>“</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 |
-
$
|
|
|
|
|
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.
|
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.
|
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 ($
|
140 |
require_once dirname( __FILE__ ) . '/protect/wp/protect.php';
|
141 |
$bvprotect = new BVProtect($bvdb, $bvsettings);
|
142 |
-
$bvprotect->
|
|
|
|
|
|
|
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.
|
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.
|
401 |
-
*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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);
|