Version Description
- Handling translations
- Callback improvements
- Adding delete transient callback
Download this release
Release Info
Developer | akshatc |
Plugin | ![]() |
Version | 1.88 |
Comparing to | |
See all releases |
Version 1.88
- account.php +50 -0
- admin.php +184 -0
- admin/add_new_acc.php +76 -0
- admin/footer.php +20 -0
- admin/header.php +27 -0
- admin/main_page.php +38 -0
- admin/top_box.php +21 -0
- blogvault.php +97 -0
- callback.php +251 -0
- callback/recover.php +76 -0
- callback/response.php +107 -0
- callback/streams.php +166 -0
- callback/wings/account.php +34 -0
- callback/wings/auth.php +26 -0
- callback/wings/brand.php +48 -0
- callback/wings/bv_upgrader_skin.php +68 -0
- callback/wings/db.php +145 -0
- callback/wings/dynsync.php +81 -0
- callback/wings/fs.php +258 -0
- callback/wings/fw.php +34 -0
- callback/wings/info.php +292 -0
- callback/wings/ipstore.php +116 -0
- callback/wings/lp.php +72 -0
- callback/wings/manage.php +516 -0
- callback/wings/misc.php +71 -0
- callback/wings/monit.php +77 -0
- callback/wings/protect.php +62 -0
- css/bvmui.min.css +1 -0
- css/bvplugin.min.css +1 -0
- dynsync.php +576 -0
- fw/config.php +66 -0
- fw/fw.php +280 -0
- fw/request.php +295 -0
- img/adobe-logo.png +0 -0
- img/as_seen_in.png +0 -0
- img/bv.png +0 -0
- img/bv_badge.png +0 -0
- img/bv_for_free.jpg +0 -0
- img/bvlogo.png +0 -0
- img/cloudways-logo.png +0 -0
- img/icon.png +0 -0
- img/intel-logo.png +0 -0
- img/liquid-web.png +0 -0
- img/lock.png +0 -0
- img/malcare-wordpress-security.png +0 -0
- img/mclogo.png +0 -0
- img/pressable-logo.png +0 -0
- img/sap-logo.png +0 -0
- img/testimonial_bv.png +0 -0
- img/testimonial_mc.png +0 -0
- img/valet-logo.png +0 -0
- img/wp-engine-logo.png +0 -0
- img/wp-site-care-logo.png +0 -0
- img/yoast-logo.png +0 -0
- ipstore.php +97 -0
- license.txt +385 -0
- logger.php +24 -0
- lp/config.php +80 -0
- lp/lp.php +248 -0
- main.php +167 -0
- main/auth.php +106 -0
- main/db.php +166 -0
- main/lib.php +44 -0
- main/site_info.php +99 -0
- protect.php +45 -0
- publickeys/bvkey3.pub +14 -0
- readme.txt +427 -0
account.php
ADDED
@@ -0,0 +1,50 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
if (!defined('ABSPATH')) exit;
|
3 |
+
if (!class_exists('BVAccountInfo')) :
|
4 |
+
|
5 |
+
class BVAccountInfo {
|
6 |
+
public $bvmain;
|
7 |
+
|
8 |
+
function __construct($bvmain) {
|
9 |
+
$this->bvmain = $bvmain;
|
10 |
+
}
|
11 |
+
|
12 |
+
public function add($info) {
|
13 |
+
$accounts = $this->allAccounts();
|
14 |
+
if(!is_array($accounts)) {
|
15 |
+
$accounts = array();
|
16 |
+
}
|
17 |
+
$pubkey = $info['pubkey'];
|
18 |
+
$accounts[$pubkey]['lastbackuptime'] = time();
|
19 |
+
$accounts[$pubkey]['url'] = $info['url'];
|
20 |
+
$accounts[$pubkey]['email'] = $info['email'];
|
21 |
+
$this->update($accounts);
|
22 |
+
}
|
23 |
+
|
24 |
+
public function remove($pubkey) {
|
25 |
+
$bvkeys = $this->bvmain->info->getOption('bvkeys');
|
26 |
+
$accounts = $this->allAccounts();
|
27 |
+
$this->bvmain->auth->rmkeys($pubkey);
|
28 |
+
$this->bvmain->setup($this->bvmain->lib->randString(32));
|
29 |
+
if ($accounts && is_array($accounts)) {
|
30 |
+
unset($accounts[$pubkey]);
|
31 |
+
$this->update($accounts);
|
32 |
+
return true;
|
33 |
+
}
|
34 |
+
return false;
|
35 |
+
}
|
36 |
+
|
37 |
+
public function allAccounts() {
|
38 |
+
return $this->bvmain->info->getOption('bvAccounts');
|
39 |
+
}
|
40 |
+
|
41 |
+
public function doesAccountExists($pubkey) {
|
42 |
+
$accounts = $this->allAccounts();
|
43 |
+
return array_key_exists($pubkey, $accounts);
|
44 |
+
}
|
45 |
+
|
46 |
+
public function update($accounts) {
|
47 |
+
$this->bvmain->info->updateOption('bvAccounts', $accounts);
|
48 |
+
}
|
49 |
+
}
|
50 |
+
endif;
|
admin.php
ADDED
@@ -0,0 +1,184 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if (!defined('ABSPATH')) exit;
|
4 |
+
if (!class_exists('BVAdmin')) :
|
5 |
+
|
6 |
+
require_once dirname( __FILE__ ) . '/account.php';
|
7 |
+
|
8 |
+
class BVAdmin {
|
9 |
+
public $bvmain;
|
10 |
+
public $account;
|
11 |
+
function __construct($bvmain) {
|
12 |
+
$this->bvmain = $bvmain;
|
13 |
+
$this->account = new BVAccountInfo($this->bvmain);
|
14 |
+
}
|
15 |
+
|
16 |
+
public function mainUrl($_params = '') {
|
17 |
+
if (function_exists('network_admin_url')) {
|
18 |
+
return network_admin_url('admin.php?page='.$this->bvmain->plugname.$_params);
|
19 |
+
} else {
|
20 |
+
return admin_url('admin.php?page='.$this->bvmain->plugname.$_params);
|
21 |
+
}
|
22 |
+
}
|
23 |
+
|
24 |
+
public function initHandler() {
|
25 |
+
if (!current_user_can('activate_plugins'))
|
26 |
+
return;
|
27 |
+
|
28 |
+
if (array_key_exists('bvnonce', $_REQUEST) &&
|
29 |
+
wp_verify_nonce($_REQUEST['bvnonce'], "bvnonce") &&
|
30 |
+
array_key_exists('blogvaultkey', $_REQUEST) &&
|
31 |
+
(strlen($_REQUEST['blogvaultkey']) == 64) &&
|
32 |
+
(array_key_exists('page', $_REQUEST) &&
|
33 |
+
$_REQUEST['page'] == $this->bvmain->plugname)) {
|
34 |
+
$keys = str_split($_REQUEST['blogvaultkey'], 32);
|
35 |
+
$this->bvmain->auth->updateKeys($keys[0], $keys[1]);
|
36 |
+
if (array_key_exists('redirect', $_REQUEST)) {
|
37 |
+
$location = $_REQUEST['redirect'];
|
38 |
+
wp_redirect($this->bvmain->appUrl()."/dash/redir?q=".urlencode($location));
|
39 |
+
exit();
|
40 |
+
}
|
41 |
+
}
|
42 |
+
if ($this->bvmain->isActivateRedirectSet()) {
|
43 |
+
wp_redirect($this->mainUrl());
|
44 |
+
}
|
45 |
+
}
|
46 |
+
|
47 |
+
public function menu() {
|
48 |
+
$brand = $this->bvmain->getBrandInfo();
|
49 |
+
if (!$brand || (!array_key_exists('hide', $brand) && !array_key_exists('hide_from_menu', $brand))) {
|
50 |
+
$bname = $this->bvmain->getBrandName();
|
51 |
+
add_menu_page($bname, $bname, 'manage_options', $this->bvmain->plugname,
|
52 |
+
array($this, 'adminPage'), plugins_url('img/icon.png', __FILE__ ));
|
53 |
+
}
|
54 |
+
}
|
55 |
+
|
56 |
+
public function hidePluginDetails($plugin_metas, $slug) {
|
57 |
+
$brand = $this->bvmain->getBrandInfo();
|
58 |
+
$bvslug = $this->bvmain->slug;
|
59 |
+
|
60 |
+
if ($slug === $bvslug && $brand && array_key_exists('hide_plugin_details', $brand)){
|
61 |
+
foreach ($plugin_metas as $pluginKey => $pluginValue) {
|
62 |
+
if (strpos($pluginValue, sprintf('>%s<', translate('View details')))) {
|
63 |
+
unset($plugin_metas[$pluginKey]);
|
64 |
+
break;
|
65 |
+
}
|
66 |
+
}
|
67 |
+
}
|
68 |
+
return $plugin_metas;
|
69 |
+
}
|
70 |
+
|
71 |
+
public function settingsLink($links, $file) {
|
72 |
+
#XNOTE: Fix this
|
73 |
+
if ( $file == plugin_basename( dirname(__FILE__).'/blogvault.php' ) ) {
|
74 |
+
$brand = $this->bvmain->getBrandInfo();
|
75 |
+
if (!$brand || !array_key_exists('hide_plugin_details', $brand)) {
|
76 |
+
$links[] = '<a href="'.$this->mainUrl().'">'.__( 'Settings' ).'</a>';
|
77 |
+
}
|
78 |
+
}
|
79 |
+
return $links;
|
80 |
+
}
|
81 |
+
|
82 |
+
public function getPluginLogo() {
|
83 |
+
$brand = $this->bvmain->getBrandInfo();
|
84 |
+
if ($brand && array_key_exists('logo', $brand)) {
|
85 |
+
return $brand['logo'];
|
86 |
+
}
|
87 |
+
return $this->bvmain->logo;
|
88 |
+
}
|
89 |
+
|
90 |
+
public function getWebPage() {
|
91 |
+
$brand = $this->bvmain->getBrandInfo();
|
92 |
+
if ($brand && array_key_exists('webpage', $brand)) {
|
93 |
+
return $brand['webpage'];
|
94 |
+
}
|
95 |
+
return $this->bvmain->webpage;
|
96 |
+
}
|
97 |
+
|
98 |
+
public function siteInfoTags() {
|
99 |
+
$bvnonce = wp_create_nonce("bvnonce");
|
100 |
+
$secret = $this->bvmain->auth->defaultSecret();
|
101 |
+
$tags = "<input type='hidden' name='url' value='".$this->bvmain->info->wpurl()."'/>\n".
|
102 |
+
"<input type='hidden' name='homeurl' value='".$this->bvmain->info->homeurl()."'/>\n".
|
103 |
+
"<input type='hidden' name='siteurl' value='".$this->bvmain->info->siteurl()."'/>\n".
|
104 |
+
"<input type='hidden' name='dbsig' value='".$this->bvmain->lib->dbsig(false)."'/>\n".
|
105 |
+
"<input type='hidden' name='plug' value='".$this->bvmain->plugname."'/>\n".
|
106 |
+
"<input type='hidden' name='adminurl' value='".$this->mainUrl()."'/>\n".
|
107 |
+
"<input type='hidden' name='bvversion' value='".$this->bvmain->version."'/>\n".
|
108 |
+
"<input type='hidden' name='serverip' value='".$_SERVER["SERVER_ADDR"]."'/>\n".
|
109 |
+
"<input type='hidden' name='abspath' value='".ABSPATH."'/>\n".
|
110 |
+
"<input type='hidden' name='secret' value='".$secret."'/>\n".
|
111 |
+
"<input type='hidden' name='bvnonce' value='".$bvnonce."'/>\n";
|
112 |
+
return $tags;
|
113 |
+
}
|
114 |
+
|
115 |
+
public function activateWarning() {
|
116 |
+
global $hook_suffix;
|
117 |
+
if (!$this->bvmain->isConfigured() && $hook_suffix == 'index.php' ) {
|
118 |
+
?>
|
119 |
+
<div id="message" class="updated" style="padding: 8px; font-size: 16px; background-color: #dff0d8">
|
120 |
+
<a class="button-primary" href="<?php echo $this->mainUrl(); ?>">Activate BlogVault</a>
|
121 |
+
<b>Almost Done:</b> Activate your BlogVault account to backup & secure your site.
|
122 |
+
</div>
|
123 |
+
<?php
|
124 |
+
}
|
125 |
+
}
|
126 |
+
|
127 |
+
public function isConfigured() {
|
128 |
+
$accounts = $this->account->allAccounts();
|
129 |
+
return (is_array($accounts) && sizeof($accounts) >= 1);
|
130 |
+
}
|
131 |
+
|
132 |
+
public function adminPage() {
|
133 |
+
wp_enqueue_style( 'bvsurface', plugins_url('css/bvmui.min.css', __FILE__));
|
134 |
+
wp_enqueue_style( 'bvplugin', plugins_url('css/bvplugin.min.css', __FILE__));
|
135 |
+
if (isset($_REQUEST['bvnonce']) && wp_verify_nonce( $_REQUEST['bvnonce'], 'bvnonce' )) {
|
136 |
+
$this->account->remove($_REQUEST['pubkey']);
|
137 |
+
}
|
138 |
+
require_once dirname( __FILE__ ) . '/admin/header.php';
|
139 |
+
if ($this->isConfigured()) {
|
140 |
+
if (!isset($_REQUEST['add_account'])) {
|
141 |
+
require_once dirname( __FILE__ ) . '/admin/main_page.php';
|
142 |
+
} else {
|
143 |
+
require_once dirname( __FILE__ ) . '/admin/add_new_acc.php';
|
144 |
+
}
|
145 |
+
} else {
|
146 |
+
require_once dirname( __FILE__ ) . '/admin/add_new_acc.php';
|
147 |
+
}
|
148 |
+
require_once dirname( __FILE__ ) . '/admin/footer.php';
|
149 |
+
}
|
150 |
+
|
151 |
+
public function initBranding($plugins) {
|
152 |
+
$slug = $this->bvmain->slug;
|
153 |
+
$brand = $this->bvmain->getBrandInfo();
|
154 |
+
if ($brand) {
|
155 |
+
if (array_key_exists('hide', $brand)) {
|
156 |
+
unset($plugins[$slug]);
|
157 |
+
} else {
|
158 |
+
if (array_key_exists('name', $brand)) {
|
159 |
+
$plugins[$slug]['Name'] = $brand['name'];
|
160 |
+
}
|
161 |
+
if (array_key_exists('title', $brand)) {
|
162 |
+
$plugins[$slug]['Title'] = $brand['title'];
|
163 |
+
}
|
164 |
+
if (array_key_exists('description', $brand)) {
|
165 |
+
$plugins[$slug]['Description'] = $brand['description'];
|
166 |
+
}
|
167 |
+
if (array_key_exists('authoruri', $brand)) {
|
168 |
+
$plugins[$slug]['AuthorURI'] = $brand['authoruri'];
|
169 |
+
}
|
170 |
+
if (array_key_exists('author', $brand)) {
|
171 |
+
$plugins[$slug]['Author'] = $brand['author'];
|
172 |
+
}
|
173 |
+
if (array_key_exists('authorname', $brand)) {
|
174 |
+
$plugins[$slug]['AuthorName'] = $brand['authorname'];
|
175 |
+
}
|
176 |
+
if (array_key_exists('pluginuri', $brand)) {
|
177 |
+
$plugins[$slug]['PluginURI'] = $brand['pluginuri'];
|
178 |
+
}
|
179 |
+
}
|
180 |
+
}
|
181 |
+
return $plugins;
|
182 |
+
}
|
183 |
+
}
|
184 |
+
endif;
|
admin/add_new_acc.php
ADDED
@@ -0,0 +1,76 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
if ($this->bvmain->isMalcare()) {
|
3 |
+
$signupFormTitle = "Let's scan your website";
|
4 |
+
$signupPurpose = array("Malware Scan", "Malware Clean", "Firewall", "Login Protection", "Others");
|
5 |
+
$signupButtonText = "Scan Site";
|
6 |
+
$signupButtonColor = "#4686f5";
|
7 |
+
} else {
|
8 |
+
$signupFormTitle = "Let's get your FREE Backup";
|
9 |
+
$signupPurpose = array("Backup", "Staging", "Restore", "Migrate", "Manage", "Others");
|
10 |
+
$signupButtonText = "Get started";
|
11 |
+
$signupButtonColor = "#25bea0";
|
12 |
+
}
|
13 |
+
?>
|
14 |
+
<div id="content-wrapper" style="width: 99%">
|
15 |
+
<div class="mui-container-fluid" style="padding: 0px;">
|
16 |
+
<div class="mui-col-md-10" style="padding-left: 0px;">
|
17 |
+
<br>
|
18 |
+
<div class="bv-box" style="padding-top: 10px; padding-bottom: 10px;">
|
19 |
+
<?php require_once dirname( __FILE__ ) . "/top_box.php";?>
|
20 |
+
</div>
|
21 |
+
<div class="mui-panel new-account-panel">
|
22 |
+
<form dummy=">" action="<?php echo $this->bvmain->appUrl(); ?>/plugin/bvstart" style="padding-top:10px; margin: 0px;" onsubmit="document.getElementById('get-started').disabled = true;" method="post" name="signup">
|
23 |
+
<div style="width: 800px; margin: 0 auto; padding: 10px;">
|
24 |
+
<div class="mui--text-title form-title"><?php echo $signupFormTitle; ?></div>
|
25 |
+
<input type='hidden' name='bvsrc' value='wpplugin' />
|
26 |
+
<?php echo $this->siteInfoTags(); ?>
|
27 |
+
<input type="text" class="bv-input" id="email" name="email" style="width:430px;" placeholder="Enter your email" required>
|
28 |
+
<select name="purpose" class="bv-input select-purpose" required>
|
29 |
+
<option value="" hidden>Looking for?</option>
|
30 |
+
<?php
|
31 |
+
foreach($signupPurpose as $value) {
|
32 |
+
echo "<option value='".$value."'>".$value."</option>";
|
33 |
+
}
|
34 |
+
?>
|
35 |
+
</select>
|
36 |
+
<button id="get-started" class="mui-btn mui-btn--raised mui-btn--primaryi get-started-button" type="submit" style="background: <?php echo $signupButtonColor; ?>;"><?php echo $signupButtonText; ?></button><br/>
|
37 |
+
<input type="checkbox" name="consent" value="1" required/>I agree to Blogvault <a href="https://www.blogvault.net/tos" target="_blank" rel="noopener noreferrer">Terms of Service</a> and <a href="https://www.blogvault.net/privacy" target="_blank" rel="noopener noreferrer">Privacy Policy</a>
|
38 |
+
</div>
|
39 |
+
</form>
|
40 |
+
<br/>
|
41 |
+
</div>
|
42 |
+
</div>
|
43 |
+
<div class="mui-col-md-2 side">
|
44 |
+
<?php if ($this->bvmain->isBlogvault()) { ?>
|
45 |
+
<div class="side-box" style="margin: 0px !important;">
|
46 |
+
<h2 class="side-box-title">Why choose BlogVault ?</h2>
|
47 |
+
<strong>
|
48 |
+
<ul>
|
49 |
+
<li><span class="bv-tick">✓</span> 100% Working Backups</li>
|
50 |
+
<li><span class="bv-tick">✓</span> FREE Staging Site</li>
|
51 |
+
<li><span class="bv-tick">✓</span> Fastest Website Recovery</li>
|
52 |
+
<li><span class="bv-tick">✓</span> Flawless 1-Click Migrations</li>
|
53 |
+
<li><span class="bv-tick">✓</span> WooCommerce Backups</li>
|
54 |
+
<li><span class="bv-tick">✓</span> Doesn't slow website ever</li>
|
55 |
+
<li><span class="bv-tick">✓</span> Full Website Management</li>
|
56 |
+
</ul>
|
57 |
+
</strong>
|
58 |
+
</div>
|
59 |
+
<div class="side-box" style="margin-top: 20px; overflow: hidden;">
|
60 |
+
<h2 class="side-box-title">What's in BlogVault Pro?</h2>
|
61 |
+
<strong>
|
62 |
+
<ul>
|
63 |
+
<li><span class="bv-tick">✓</span> Daily Automatic Backups</li>
|
64 |
+
<li><span class="bv-tick">✓</span> Real-Time backups</li>
|
65 |
+
<li><span class="bv-tick">✓</span> Personalized Support</li>
|
66 |
+
<li><span class="bv-tick">✓</span> Add Users and Clients</li>
|
67 |
+
<li><span class="bv-tick">✓</span> White Label Plugin</li>
|
68 |
+
<li><span class="bv-tick">✓</span> Client Reporting</li>
|
69 |
+
</ul>
|
70 |
+
</strong>
|
71 |
+
<div class="bv-upgrade-button"><a href="https://blogvault.net/pricing/?utm_source=bv_plugin_lp_pricing&utm_medium=lp_upgrade&utm_campaign=bv_plugin_lp_upgrade&utm_term=upgrade_button&utm_content=button_link">Get Me Pro »</a></span>
|
72 |
+
</div>
|
73 |
+
</div>
|
74 |
+
<?php } ?>
|
75 |
+
</div>
|
76 |
+
</div>
|
admin/footer.php
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<footer>
|
2 |
+
<div style="background: #45b3e0; margin-top: 20px; padding-top:10px;">
|
3 |
+
<div style="width: 850px; margin: 0 auto;">
|
4 |
+
<span class="footer-logo" style="color: #FFF; padding: 10px; display: inline-block; font-weight: bold; font-size: 28px; margin-top: 26px; float: left;"> Trusted By </span>
|
5 |
+
<span class="footer-logo"><img src="<?php echo plugins_url("/../img/adobe-logo.png", __FILE__); ?>" style="height: 36px; margin-left: 70px;"/></span>
|
6 |
+
<span class="footer-logo"><img src="<?php echo plugins_url("/../img/intel-logo.png", __FILE__); ?>" style="height: 38px;" /></span>
|
7 |
+
<span class="footer-logo"><img src="<?php echo plugins_url("/../img/wp-site-care-logo.png", __FILE__); ?>" style="height: 32px;" /></span>
|
8 |
+
<span class="footer-logo"><img src="<?php echo plugins_url("/../img/valet-logo.png", __FILE__); ?>" style="height: 42px;" /></span>
|
9 |
+
<span><img src="<?php echo plugins_url("/../img/yoast-logo.png", __FILE__); ?>" style="height: 32px;" /></span>
|
10 |
+
</div>
|
11 |
+
</div>
|
12 |
+
<div style="background: #45b3e0;">
|
13 |
+
<div style="width: 850px; margin: 0 auto;">
|
14 |
+
<span class="footer-logo"><img src="<?php echo plugins_url("/../img/cloudways-logo.png", __FILE__); ?>" style="height: 48px; margin-bottom: 10px;" /></span>
|
15 |
+
<span class="footer-logo"><img src="<?php echo plugins_url("/../img/wp-engine-logo.png", __FILE__); ?>"/></span>
|
16 |
+
<span class="footer-logo"><img src="<?php echo plugins_url("/../img/liquid-web.png", __FILE__); ?>" /></span>
|
17 |
+
<span><img src="<?php echo plugins_url("/../img/pressable-logo.png", __FILE__); ?>" /></span>
|
18 |
+
</div>
|
19 |
+
</div>
|
20 |
+
</footer>
|
admin/header.php
ADDED
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
if ($this->bvmain->isMalcare()) {
|
3 |
+
$headerColor = "#4686f5";
|
4 |
+
$pluginSlug = "malcare-security";
|
5 |
+
$headerLogoLink = $this->getWebPage() . "/?utm_source=mc_plugin_lp_logo&utm_medium=logo_link&utm_campaign=mc_plugin_lp_header&utm_term=header_logo&utm_content=image_link";
|
6 |
+
} else {
|
7 |
+
$headerColor = "#25bea0";
|
8 |
+
$pluginSlug = "blogvault-real-time-backup";
|
9 |
+
$headerLogoLink = $this->getWebPage() . "/?utm_source=bv_plugin_lp_logo&utm_medium=logo_link&utm_campaign=bv_plugin_lp_header&utm_term=header_logo&utm_content=image_link";
|
10 |
+
}
|
11 |
+
?>
|
12 |
+
<div id="content-wrapper" style="width: 99%;">
|
13 |
+
<!-- Content HTML goes here -->
|
14 |
+
<div class="mui-container-fluid">
|
15 |
+
<div class="mui--appbar-height"></div>
|
16 |
+
<br><br>
|
17 |
+
<div class="mui-row">
|
18 |
+
<div style="background: <?php echo $headerColor;?>; overflow: hidden;">
|
19 |
+
<a href="<?php echo $headerLogoLink; ?>"><img src="<?php echo plugins_url($this->getPluginLogo(), __FILE__); ?>" style="padding: 10px;"></a>
|
20 |
+
<div class="top-links">
|
21 |
+
<span class="bv-top-button"><a href="https://wordpress.org/support/plugin/<?php echo $pluginSlug; ?>/reviews/#new-post">Leave a Review</a></span>
|
22 |
+
<span class="bv-top-button"><a href="https://wordpress.org/support/plugin/<?php echo $pluginSlug; ?>/">Need Help?</a></span>
|
23 |
+
</div>
|
24 |
+
</div>
|
25 |
+
</div>
|
26 |
+
</div>
|
27 |
+
</div>
|
admin/main_page.php
ADDED
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<div id="content-wrapper">
|
2 |
+
<div class="bv-box" style= "width: 800px; margin: 20px auto; overflow: hidden; padding: 15px;">
|
3 |
+
<?php require_once dirname( __FILE__ ) . "/top_box.php";?>
|
4 |
+
</div>
|
5 |
+
<div class="mui-container-fluid">
|
6 |
+
<?php $accounts = $this->account->allAccounts();?>
|
7 |
+
<div class="mui-panel" style="width:800px; margin:0 auto;border:1px solid #CCC;">
|
8 |
+
<div class="mui--text-body1" style="text-align:center;font-size:18px;">Accounts associated with this website.</div><br/>
|
9 |
+
<table cellpadding="10" style="width:700px; margin:0 auto;border:1px solid black;">
|
10 |
+
<tr style="text-align:center;font-size:15px;border: 1px solid black;"> <th> Account Email</th><th>Last Synced At</th><th></th></tr>
|
11 |
+
<?php
|
12 |
+
$nonce = wp_create_nonce( 'bvnonce' );
|
13 |
+
foreach($accounts as $key => $value){
|
14 |
+
?>
|
15 |
+
<form dummy=">" action="" style="padding:0 2% 2em 1%;" method="post">
|
16 |
+
<input type='hidden' name='bvnonce' value="<?php echo $nonce ?>" />
|
17 |
+
<input type='hidden' name='pubkey' value="<?php echo $key ?>" />
|
18 |
+
<tr style="text-align:center;font-size:15px;border: 1px solid black;">
|
19 |
+
<td >
|
20 |
+
<?php echo $value['email'] ?>
|
21 |
+
</td>
|
22 |
+
<td>
|
23 |
+
<?php echo date('Y-m-d H:i:s', $value['lastbackuptime']); ?>
|
24 |
+
</td>
|
25 |
+
<td >
|
26 |
+
<input type='submit' class="button-primary" value='Disconnect' name='disconnect'>
|
27 |
+
</td>
|
28 |
+
</tr>
|
29 |
+
</form>
|
30 |
+
<?php } ?>
|
31 |
+
</table>
|
32 |
+
<div class="mui-col-md-12 mui-col-md-offset-3" style="padding-top:2%;">
|
33 |
+
<a class="mui-btn mui-btn--raised mui-btn--primary" href=<?php echo $this->bvmain->appUrl(); ?> target="_blank">Visit Dashboard</a>
|
34 |
+
<a class="mui-btn mui-btn--raised mui-btn--primary" href=<?php echo $this->mainUrl('&add_account=true'); ?> >Connect New Account</a>
|
35 |
+
</div>
|
36 |
+
</div>
|
37 |
+
</div>
|
38 |
+
</div>
|
admin/top_box.php
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
if ($this->bvmain->isMalcare()) {
|
3 |
+
$mainTitle = "Are you Hacked? Scan Your Website for FREE.";
|
4 |
+
$videoId = "rBuYh2dIadk";
|
5 |
+
$testimonialImg = "/../img/testimonial_mc.png";
|
6 |
+
} else {
|
7 |
+
$mainTitle = "Create Smart Incremental Backups On Cloud.";
|
8 |
+
$videoId = "Y4teDRL08mY";
|
9 |
+
$testimonialImg = "/../img/testimonial_bv.png";
|
10 |
+
}
|
11 |
+
?>
|
12 |
+
<div class="mui--text-title main-title"><?php echo $mainTitle; ?></div>
|
13 |
+
<br/><br/>
|
14 |
+
<div style= "width: 800px; margin: 20px auto; overflow: hidden;">
|
15 |
+
<div style="width: 49%; float: left; border-right: 2px solid #333;">
|
16 |
+
<iframe width="380" height="215" src="https://www.youtube.com/embed/<?php echo $videoId; ?>"></iframe>
|
17 |
+
</div>
|
18 |
+
<div style="width: 49%; float: right;">
|
19 |
+
<img src="<?php echo plugins_url($testimonialImg, __FILE__); ?>"/>
|
20 |
+
</div>
|
21 |
+
</div>
|
blogvault.php
ADDED
@@ -0,0 +1,97 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
Plugin Name: WordPress Backup & Security Plugin - BlogVault
|
4 |
+
Plugin URI: https://blogvault.net
|
5 |
+
Description: Easiest way to backup & secure your WordPress site
|
6 |
+
Author: Backup by BlogVault
|
7 |
+
Author URI: https://blogvault.net
|
8 |
+
Version: 1.88
|
9 |
+
Network: True
|
10 |
+
*/
|
11 |
+
|
12 |
+
/* Copyright 2017 BlogVault (email : support@blogvault.net)
|
13 |
+
|
14 |
+
This program is free software; you can redistribute it and/or modify
|
15 |
+
it under the terms of the GNU General Public License, version 2, as
|
16 |
+
published by the Free Software Foundation.
|
17 |
+
|
18 |
+
This program is distributed in the hope that it will be useful,
|
19 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
20 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
21 |
+
GNU General Public License for more details.
|
22 |
+
|
23 |
+
You should have received a copy of the GNU General Public License
|
24 |
+
along with this program; if not, write to the Free Software
|
25 |
+
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
26 |
+
*/
|
27 |
+
|
28 |
+
/* Global response array */
|
29 |
+
|
30 |
+
if (!defined('ABSPATH')) exit;
|
31 |
+
global $bvcb, $bvresp;
|
32 |
+
|
33 |
+
require_once dirname( __FILE__ ) . '/main.php';
|
34 |
+
$bvmain = new BVBackup();
|
35 |
+
|
36 |
+
register_uninstall_hook(__FILE__, array('BVBackup', 'uninstall'));
|
37 |
+
register_activation_hook(__FILE__, array($bvmain, 'activate'));
|
38 |
+
register_deactivation_hook(__FILE__, array($bvmain, 'deactivate'));
|
39 |
+
|
40 |
+
add_action('wp_footer', array($bvmain, 'footerHandler'), 100);
|
41 |
+
|
42 |
+
if (is_admin()) {
|
43 |
+
require_once dirname( __FILE__ ) . '/admin.php';
|
44 |
+
$bvadmin = new BVAdmin($bvmain);
|
45 |
+
add_action('admin_init', array($bvadmin, 'initHandler'));
|
46 |
+
add_filter('all_plugins', array($bvadmin, 'initBranding'));
|
47 |
+
add_filter('plugin_row_meta', array($bvadmin, 'hidePluginDetails'), 10, 2);
|
48 |
+
if ($bvmain->info->isMultisite()) {
|
49 |
+
add_action('network_admin_menu', array($bvadmin, 'menu'));
|
50 |
+
} else {
|
51 |
+
add_action('admin_menu', array($bvadmin, 'menu'));
|
52 |
+
}
|
53 |
+
add_filter('plugin_action_links', array($bvadmin, 'settingsLink'), 10, 2);
|
54 |
+
add_action('admin_notices', array($bvadmin, 'activateWarning'));
|
55 |
+
##ADMINENQUEUESCRIPTS##
|
56 |
+
}
|
57 |
+
|
58 |
+
if ((array_key_exists('bvreqmerge', $_POST)) || (array_key_exists('bvreqmerge', $_GET))) {
|
59 |
+
$_REQUEST = array_merge($_GET, $_POST);
|
60 |
+
}
|
61 |
+
|
62 |
+
if ((array_key_exists('bvplugname', $_REQUEST)) &&
|
63 |
+
stristr($_REQUEST['bvplugname'], $bvmain->plugname)) {
|
64 |
+
require_once dirname( __FILE__ ) . '/callback.php';
|
65 |
+
$bvcb = new BVCallback($bvmain);
|
66 |
+
$bvresp = new BVResponse();
|
67 |
+
if ($bvcb->preauth() === 1) {
|
68 |
+
if ($bvcb->authenticate() === 1) {
|
69 |
+
if (array_key_exists('afterload', $_REQUEST)) {
|
70 |
+
add_action('wp_loaded', array($bvcb, 'execute'));
|
71 |
+
} else if (array_key_exists('adajx', $_REQUEST)) {
|
72 |
+
add_action('wp_ajax_bvadm', array($bvcb, 'bvAdmExecuteWithUser'));
|
73 |
+
add_action('wp_ajax_nopriv_bvadm', array($bvcb, 'bvAdmExecuteWithoutUser'));
|
74 |
+
} else {
|
75 |
+
$bvcb->execute();
|
76 |
+
}
|
77 |
+
} else {
|
78 |
+
$bvcb->terminate(false, array_key_exists('bvdbg', $_REQUEST));
|
79 |
+
}
|
80 |
+
}
|
81 |
+
} else {
|
82 |
+
if ($bvmain->isProtectModuleEnabled()) {
|
83 |
+
require_once dirname( __FILE__ ) . '/protect.php';
|
84 |
+
$bvprotect = new BVProtect($bvmain);
|
85 |
+
$bvprotect->init();
|
86 |
+
require_once dirname( __FILE__ ) . '/ipstore.php';
|
87 |
+
$bvipstore = new BVIPStore($bvmain);
|
88 |
+
$bvipstore->init();
|
89 |
+
}
|
90 |
+
|
91 |
+
if ($bvmain->isDynSyncModuleEnabled()) {
|
92 |
+
require_once dirname( __FILE__ ) . '/dynsync.php';
|
93 |
+
$dynsync = new BVDynSync($bvmain);
|
94 |
+
$dynsync->init();
|
95 |
+
}
|
96 |
+
|
97 |
+
}
|
callback.php
ADDED
@@ -0,0 +1,251 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if (!defined('ABSPATH')) exit;
|
4 |
+
if (!class_exists('BVCallback')) :
|
5 |
+
|
6 |
+
require_once dirname( __FILE__ ) . '/callback/response.php';
|
7 |
+
|
8 |
+
class BVCallback {
|
9 |
+
public $bvmain;
|
10 |
+
function __construct($bvmain) {
|
11 |
+
$this->bvmain = $bvmain;
|
12 |
+
}
|
13 |
+
|
14 |
+
public function serversig($full = false) {
|
15 |
+
$sig = sha1($_SERVER['SERVER_ADDR'].ABSPATH);
|
16 |
+
if ($full)
|
17 |
+
return $sig;
|
18 |
+
else
|
19 |
+
return substr($sig, 0, 6);
|
20 |
+
}
|
21 |
+
|
22 |
+
public function terminate($with_basic, $bvdebug = false) {
|
23 |
+
global $bvresp;
|
24 |
+
$public = $this->bvmain->auth->defaultPublic();
|
25 |
+
$bvresp->addStatus("signature", "Blogvault API");
|
26 |
+
$bvresp->addStatus("asymauth", "true");
|
27 |
+
$bvresp->addStatus("sha1", "true");
|
28 |
+
$bvresp->addStatus("dbsig", $this->bvmain->lib->dbsig(false));
|
29 |
+
$bvresp->addStatus("serversig", $this->serversig(false));
|
30 |
+
$bvresp->addStatus("public", substr($public, 0, 6));
|
31 |
+
if (array_key_exists('adajx', $_REQUEST)) {
|
32 |
+
$bvresp->addStatus("adajx", true);
|
33 |
+
}
|
34 |
+
if ($with_basic) {
|
35 |
+
$binfo = array();
|
36 |
+
$this->bvmain->info->basic($binfo);
|
37 |
+
$bvresp->addStatus("basic", $binfo);
|
38 |
+
$bvresp->addStatus("bvversion", $this->bvmain->version);
|
39 |
+
}
|
40 |
+
|
41 |
+
if ($bvdebug) {
|
42 |
+
$bvresp->addStatus("inreq", $_REQUEST);
|
43 |
+
}
|
44 |
+
|
45 |
+
$bvresp->finish();
|
46 |
+
exit;
|
47 |
+
}
|
48 |
+
|
49 |
+
public function processParams() {
|
50 |
+
if (array_key_exists('concat', $_REQUEST)) {
|
51 |
+
foreach ($_REQUEST['concat'] as $key) {
|
52 |
+
$concated = '';
|
53 |
+
$count = intval($_REQUEST[$key]);
|
54 |
+
for ($i = 1; $i <= $count; $i++) {
|
55 |
+
$concated .= $_REQUEST[$key."_bv_".$i];
|
56 |
+
}
|
57 |
+
$_REQUEST[$key] = $concated;
|
58 |
+
}
|
59 |
+
}
|
60 |
+
if (array_key_exists('b64', $_REQUEST)) {
|
61 |
+
foreach ($_REQUEST['b64'] as $key) {
|
62 |
+
if (is_array($_REQUEST[$key])) {
|
63 |
+
$_REQUEST[$key] = array_map('base64_decode', $_REQUEST[$key]);
|
64 |
+
} else {
|
65 |
+
$_REQUEST[$key] = base64_decode($_REQUEST[$key]);
|
66 |
+
}
|
67 |
+
}
|
68 |
+
}
|
69 |
+
if (array_key_exists('unser', $_REQUEST)) {
|
70 |
+
foreach ($_REQUEST['unser'] as $key) {
|
71 |
+
$_REQUEST[$key] = json_decode($_REQUEST[$key], TRUE);
|
72 |
+
}
|
73 |
+
}
|
74 |
+
if (array_key_exists('b642', $_REQUEST)) {
|
75 |
+
foreach ($_REQUEST['b642'] as $key) {
|
76 |
+
if (is_array($_REQUEST[$key])) {
|
77 |
+
$_REQUEST[$key] = array_map('base64_decode', $_REQUEST[$key]);
|
78 |
+
} else {
|
79 |
+
$_REQUEST[$key] = base64_decode($_REQUEST[$key]);
|
80 |
+
}
|
81 |
+
}
|
82 |
+
}
|
83 |
+
if (array_key_exists('dic', $_REQUEST)) {
|
84 |
+
foreach ($_REQUEST['dic'] as $key => $mkey) {
|
85 |
+
$_REQUEST[$mkey] = $_REQUEST[$key];
|
86 |
+
unset($_REQUEST[$key]);
|
87 |
+
}
|
88 |
+
}
|
89 |
+
if (array_key_exists('clacts', $_REQUEST)) {
|
90 |
+
foreach ($_REQUEST['clacts'] as $action) {
|
91 |
+
remove_all_actions($action);
|
92 |
+
}
|
93 |
+
}
|
94 |
+
if (array_key_exists('clallacts', $_REQUEST)) {
|
95 |
+
global $wp_filter;
|
96 |
+
foreach ( $wp_filter as $filter => $val ){
|
97 |
+
remove_all_actions($filter);
|
98 |
+
}
|
99 |
+
}
|
100 |
+
if (array_key_exists('memset', $_REQUEST)) {
|
101 |
+
$val = intval(urldecode($_REQUEST['memset']));
|
102 |
+
@ini_set('memory_limit', $val.'M');
|
103 |
+
}
|
104 |
+
}
|
105 |
+
|
106 |
+
public function recover() {
|
107 |
+
$recover = new BVRecover(base64_decode($_REQUEST['sig']), $_REQUEST['orig'],
|
108 |
+
$_REQUEST['keyname'], $_REQUEST["keysize"]);
|
109 |
+
if ($recover->validate() && ($recover->process() === 1)) {
|
110 |
+
$recover->processKeyExchange();
|
111 |
+
return 1;
|
112 |
+
}
|
113 |
+
return false;
|
114 |
+
}
|
115 |
+
|
116 |
+
public function preauth() {
|
117 |
+
global $bvresp;
|
118 |
+
if (array_key_exists('obend', $_REQUEST) && function_exists('ob_end_clean'))
|
119 |
+
@ob_end_clean();
|
120 |
+
if (array_key_exists('op_reset', $_REQUEST) && function_exists('output_reset_rewrite_vars'))
|
121 |
+
@output_reset_rewrite_vars();
|
122 |
+
if (array_key_exists('binhead', $_REQUEST)) {
|
123 |
+
header("Content-type: application/binary");
|
124 |
+
header('Content-Transfer-Encoding: binary');
|
125 |
+
}
|
126 |
+
if (array_key_exists('bvrcvr', $_REQUEST)) {
|
127 |
+
require_once dirname( __FILE__ ) . '/callback/recover.php';
|
128 |
+
if ($this->recover() !== 1) {
|
129 |
+
$bvresp->addStatus("statusmsg", 'failed authentication');
|
130 |
+
}
|
131 |
+
$this->terminate(false, array_key_exists('bvdbg', $_REQUEST));
|
132 |
+
return false;
|
133 |
+
}
|
134 |
+
return 1;
|
135 |
+
}
|
136 |
+
|
137 |
+
public function authenticate() {
|
138 |
+
global $bvresp;
|
139 |
+
$auth = $this->bvmain->auth;
|
140 |
+
$method = $_REQUEST['bvMethod'];
|
141 |
+
$time = intval($_REQUEST['bvTime']);
|
142 |
+
$version = $_REQUEST['bvVersion'];
|
143 |
+
$sig = $_REQUEST['sig'];
|
144 |
+
$public = $auth->publicParam();
|
145 |
+
|
146 |
+
$bvresp->addStatus("requestedsig", $sig);
|
147 |
+
$bvresp->addStatus("requestedtime", $time);
|
148 |
+
$bvresp->addStatus("requestedversion", $version);
|
149 |
+
|
150 |
+
$sig_match = $auth->validate($public, $method, $time, $version, $sig);
|
151 |
+
if ($sig_match === 1) {
|
152 |
+
return 1;
|
153 |
+
} else {
|
154 |
+
$bvresp->addStatus("sigmatch", substr($sig_match, 0, 6));
|
155 |
+
$bvresp->addStatus("statusmsg", 'failed authentication');
|
156 |
+
return false;
|
157 |
+
}
|
158 |
+
}
|
159 |
+
|
160 |
+
public function route($wing, $method) {
|
161 |
+
global $bvresp;
|
162 |
+
$bvresp->addStatus("callback", $method);
|
163 |
+
switch ($wing) {
|
164 |
+
case 'manage':
|
165 |
+
require_once dirname( __FILE__ ) . '/callback/wings/manage.php';
|
166 |
+
$module = new BVManageCallback();
|
167 |
+
break;
|
168 |
+
case 'fs':
|
169 |
+
require_once dirname( __FILE__ ) . '/callback/wings/fs.php';
|
170 |
+
$module = new BVFSCallback();
|
171 |
+
break;
|
172 |
+
case 'db':
|
173 |
+
require_once dirname( __FILE__ ) . '/callback/wings/db.php';
|
174 |
+
$module = new BVDBCallback();
|
175 |
+
break;
|
176 |
+
case 'info':
|
177 |
+
require_once dirname( __FILE__ ) . '/callback/wings/info.php';
|
178 |
+
$module = new BVInfoCallback();
|
179 |
+
break;
|
180 |
+
case 'dynsync':
|
181 |
+
require_once dirname( __FILE__ ) . '/callback/wings/dynsync.php';
|
182 |
+
$module = new BVDynSyncCallback();
|
183 |
+
break;
|
184 |
+
case 'ipstr':
|
185 |
+
require_once dirname( __FILE__ ) . '/callback/wings/ipstore.php';
|
186 |
+
$module = new BVIPStoreCallback();
|
187 |
+
break;
|
188 |
+
case 'auth':
|
189 |
+
require_once dirname( __FILE__ ) . '/callback/wings/auth.php';
|
190 |
+
$module = new BVAuthCallback();
|
191 |
+
break;
|
192 |
+
case 'fw':
|
193 |
+
require_once dirname( __FILE__ ) . '/callback/wings/fw.php';
|
194 |
+
$module = new BVFirewallCallback();
|
195 |
+
break;
|
196 |
+
case 'lp':
|
197 |
+
require_once dirname( __FILE__ ) . '/callback/wings/lp.php';
|
198 |
+
$module = new BVLoginProtectCallback();
|
199 |
+
break;
|
200 |
+
case 'monit':
|
201 |
+
require_once dirname( __FILE__ ) . '/callback/wings/monit.php';
|
202 |
+
$module = new BVMonitCallback();
|
203 |
+
break;
|
204 |
+
case 'brand':
|
205 |
+
require_once dirname( __FILE__ ) . '/callback/wings/brand.php';
|
206 |
+
$module = new BVBrandCallback();
|
207 |
+
break;
|
208 |
+
case 'pt':
|
209 |
+
require_once dirname( __FILE__ ) . '/callback/wings/protect.php';
|
210 |
+
$module = new BVProtectCallback();
|
211 |
+
break;
|
212 |
+
case 'act':
|
213 |
+
require_once dirname( __FILE__ ) . '/callback/wings/account.php';
|
214 |
+
$module = new BVAccountCallback();
|
215 |
+
break;
|
216 |
+
default:
|
217 |
+
require_once dirname( __FILE__ ) . '/callback/wings/misc.php';
|
218 |
+
$module = new BVMiscCallback();
|
219 |
+
break;
|
220 |
+
}
|
221 |
+
$rval = $module->process($method);
|
222 |
+
if ($rval === false) {
|
223 |
+
$bvresp->addStatus("statusmsg", "Bad Command");
|
224 |
+
$bvresp->addStatus("status", false);
|
225 |
+
}
|
226 |
+
return 1;
|
227 |
+
}
|
228 |
+
|
229 |
+
public function bvAdmExecuteWithoutUser() {
|
230 |
+
global $bvresp;
|
231 |
+
$bvresp->addStatus("bvadmwithoutuser", true);
|
232 |
+
$this->execute();
|
233 |
+
}
|
234 |
+
|
235 |
+
public function bvAdmExecuteWithUser() {
|
236 |
+
global $bvresp;
|
237 |
+
$bvresp->addStatus("bvadmwithuser", true);
|
238 |
+
$this->execute();
|
239 |
+
}
|
240 |
+
|
241 |
+
public function execute() {
|
242 |
+
global $bvresp;
|
243 |
+
$this->processParams();
|
244 |
+
if ($bvresp->startStream()) {
|
245 |
+
$this->route($_REQUEST['wing'], $_REQUEST['bvMethod']);
|
246 |
+
$bvresp->endStream();
|
247 |
+
}
|
248 |
+
$this->terminate(true, array_key_exists('bvdbg', $_REQUEST));
|
249 |
+
}
|
250 |
+
}
|
251 |
+
endif;
|
callback/recover.php
ADDED
@@ -0,0 +1,76 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if (!defined('ABSPATH')) exit;
|
4 |
+
if (!class_exists('BVRecover')) :
|
5 |
+
class BVRecover {
|
6 |
+
public $keyname;
|
7 |
+
public $keysize;
|
8 |
+
public $signature;
|
9 |
+
public $original;
|
10 |
+
|
11 |
+
function __construct($_sig, $_orig, $_keyname, $_keysize) {
|
12 |
+
$this->keyname = $_keyname;
|
13 |
+
$this->keysize = $_keysize;
|
14 |
+
$this->signature = $_sig;
|
15 |
+
$this->original = $_orig;
|
16 |
+
}
|
17 |
+
|
18 |
+
public function keyFile() {
|
19 |
+
return dirname(__DIR__)."/publickeys/$this->keyname.pub";
|
20 |
+
}
|
21 |
+
|
22 |
+
public function getAsymKey() {
|
23 |
+
return file_get_contents($this->keyFile());
|
24 |
+
}
|
25 |
+
|
26 |
+
public function asymEncrypt($source) {
|
27 |
+
$output = '';
|
28 |
+
$blocksize = 1 + floor(($this->keysize - 1) / 8) - 11;
|
29 |
+
while ($source) {
|
30 |
+
$input = substr($source, 0, $blocksize);
|
31 |
+
$source = substr($source, $blocksize);
|
32 |
+
openssl_public_encrypt($input, $encrypted, $this->getAsymKey());
|
33 |
+
|
34 |
+
$output .= $encrypted;
|
35 |
+
}
|
36 |
+
return base64_encode($output);
|
37 |
+
}
|
38 |
+
|
39 |
+
public function validate() {
|
40 |
+
global $bvresp;
|
41 |
+
if (!preg_match('/^\w+$/', $this->keyname)) {
|
42 |
+
$bvresp->addStatus('asymerror', 'badkey');
|
43 |
+
return false;
|
44 |
+
} else if (!file_exists($this->keyFile())) {
|
45 |
+
$bvresp->addStatus('asymerror', 'missingkey');
|
46 |
+
return false;
|
47 |
+
} else if (!function_exists('openssl_public_decrypt')) {
|
48 |
+
$bvresp->addStatus('asymerror', 'openssl_public_decrypt');
|
49 |
+
return false;
|
50 |
+
} else if (!function_exists('openssl_public_encrypt')) {
|
51 |
+
$bvresp->addStatus('asymerror', 'openssl_public_encrypt');
|
52 |
+
return false;
|
53 |
+
}
|
54 |
+
return true;
|
55 |
+
}
|
56 |
+
|
57 |
+
public function process() {
|
58 |
+
openssl_public_decrypt($this->signature, $decrypted, $this->getAsymKey());
|
59 |
+
if ((strlen($decrypted) >= 32) && ($this->original === substr($decrypted, 0, 32))) {
|
60 |
+
return 1;
|
61 |
+
}
|
62 |
+
return false;
|
63 |
+
}
|
64 |
+
|
65 |
+
public function processKeyExchange() {
|
66 |
+
global $bvresp, $bvcb;
|
67 |
+
$bvmain = $bvcb->bvmain;
|
68 |
+
$keys = $bvmain->auth->allKeys();
|
69 |
+
$keys['dbsig'] = $bvmain->lib->dbsig(true);
|
70 |
+
$keys['salt'] = $bvmain->lib->randString(32);
|
71 |
+
$bvresp->addStatus("activatetime", $bvmain->info->getOption('bvActivateTime'));
|
72 |
+
$bvresp->addStatus("currenttime", time());
|
73 |
+
$bvresp->addStatus("keys", $this->asymEncrypt(serialize($keys)));
|
74 |
+
}
|
75 |
+
}
|
76 |
+
endif;
|
callback/response.php
ADDED
@@ -0,0 +1,107 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if (!defined('ABSPATH')) exit;
|
4 |
+
if (!class_exists('BVResponse')) :
|
5 |
+
|
6 |
+
require_once dirname( __FILE__ ) . '/streams.php';
|
7 |
+
|
8 |
+
class BVResponse {
|
9 |
+
public $status;
|
10 |
+
public $stream;
|
11 |
+
|
12 |
+
function __construct() {
|
13 |
+
$this->status = array("blogvault" => "response");
|
14 |
+
}
|
15 |
+
|
16 |
+
public function addStatus($key, $value) {
|
17 |
+
$this->status[$key] = $value;
|
18 |
+
}
|
19 |
+
|
20 |
+
public function addArrayToStatus($key, $value) {
|
21 |
+
if (!isset($this->status[$key])) {
|
22 |
+
$this->status[$key] = array();
|
23 |
+
}
|
24 |
+
$this->status[$key][] = $value;
|
25 |
+
}
|
26 |
+
|
27 |
+
public function base64Encode($data, $chunk_size) {
|
28 |
+
if ($chunk_size) {
|
29 |
+
$out = "";
|
30 |
+
$len = strlen($data);
|
31 |
+
for ($i = 0; $i < $len; $i += $chunk_size) {
|
32 |
+
$out .= base64_encode(substr($data, $i, $chunk_size));
|
33 |
+
}
|
34 |
+
} else {
|
35 |
+
$out = base64_encode($data);
|
36 |
+
}
|
37 |
+
return $out;
|
38 |
+
}
|
39 |
+
|
40 |
+
public function finish() {
|
41 |
+
$response = "bvbvbvbvbv".serialize($this->status)."bvbvbvbvbv";
|
42 |
+
if (array_key_exists('bvb64resp', $_REQUEST)) {
|
43 |
+
$chunk_size = array_key_exists('bvb64cksize', $_REQUEST) ? intval($_REQUEST['bvb64cksize']) : false;
|
44 |
+
$response = "bvb64bvb64".$this->base64Encode($response, $chunk_size)."bvb64bvb64";
|
45 |
+
}
|
46 |
+
die($response);
|
47 |
+
}
|
48 |
+
|
49 |
+
public function writeStream($_string) {
|
50 |
+
if (strlen($_string) > 0) {
|
51 |
+
$chunk = "";
|
52 |
+
if (isset($_REQUEST['bvb64stream'])) {
|
53 |
+
$chunk_size = array_key_exists('bvb64cksize', $_REQUEST) ? intval($_REQUEST['bvb64cksize']) : false;
|
54 |
+
$_string = $this->base64Encode($_string, $chunk_size);
|
55 |
+
$chunk .= "BVB64" . ":";
|
56 |
+
}
|
57 |
+
$chunk .= (strlen($_string) . ":" . $_string);
|
58 |
+
if (isset($_REQUEST['checksum'])) {
|
59 |
+
if ($_REQUEST['checksum'] == 'crc32') {
|
60 |
+
$chunk = "CRC32" . ":" . crc32($_string) . ":" . $chunk;
|
61 |
+
} else if ($_REQUEST['checksum'] == 'md5') {
|
62 |
+
$chunk = "MD5" . ":" . md5($_string) . ":" . $chunk;
|
63 |
+
}
|
64 |
+
}
|
65 |
+
$this->stream->writeChunk($chunk);
|
66 |
+
}
|
67 |
+
}
|
68 |
+
|
69 |
+
public function startStream() {
|
70 |
+
global $bvcb;
|
71 |
+
$this->stream = new BVRespStream();
|
72 |
+
if (array_key_exists('apicall',$_REQUEST)) {
|
73 |
+
$this->stream = new BVHttpStream($_REQUEST['apihost'], intval($_REQUEST['apiport']), array_key_exists('apissl', $_REQUEST));
|
74 |
+
if (!$this->stream->connect()) {
|
75 |
+
$this->addStatus("httperror", "Cannot Open Connection to Host");
|
76 |
+
$this->addStatus("streamerrno", $this->stream->errno);
|
77 |
+
$this->addStatus("streamerrstr", $this->stream->errstr);
|
78 |
+
return false;
|
79 |
+
}
|
80 |
+
if (array_key_exists('acbmthd', $_REQUEST)) {
|
81 |
+
$url = $bvcb->bvmain->authenticatedUrl('/bvapi/'.$_REQUEST['acbmthd'], $_REQUEST['bvapicheck'], false);
|
82 |
+
if (array_key_exists('acbqry', $_REQUEST)) {
|
83 |
+
$url .= "&".$_REQUEST['acbqry'];
|
84 |
+
}
|
85 |
+
$this->stream->multipartChunkedPost($url);
|
86 |
+
} else {
|
87 |
+
$this->addStatus("httperror", "ApiCall method not present");
|
88 |
+
return false;
|
89 |
+
}
|
90 |
+
}
|
91 |
+
return true;
|
92 |
+
}
|
93 |
+
|
94 |
+
public function endStream() {
|
95 |
+
$this->stream->endStream();
|
96 |
+
if (array_key_exists('apicall', $_REQUEST)) {
|
97 |
+
$resp = $this->stream->getResponse();
|
98 |
+
if (array_key_exists('httperror', $resp)) {
|
99 |
+
$this->addStatus("httperror", $resp['httperror']);
|
100 |
+
} else {
|
101 |
+
$this->addStatus("respstatus", $resp['status']);
|
102 |
+
$this->addStatus("respstatus_string", $resp['status_string']);
|
103 |
+
}
|
104 |
+
}
|
105 |
+
}
|
106 |
+
}
|
107 |
+
endif;
|
callback/streams.php
ADDED
@@ -0,0 +1,166 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if (!defined('ABSPATH')) exit;
|
4 |
+
if (!class_exists('BVRespStream')) :
|
5 |
+
|
6 |
+
class BVRespStream {
|
7 |
+
public function writeChunk($_string) {
|
8 |
+
echo "ckckckckck".$_string."ckckckckck";
|
9 |
+
}
|
10 |
+
|
11 |
+
public function endStream() {
|
12 |
+
echo "rerererere";
|
13 |
+
}
|
14 |
+
}
|
15 |
+
|
16 |
+
class BVHttpStream {
|
17 |
+
var $user_agent = 'BVHttpStream';
|
18 |
+
var $host;
|
19 |
+
var $port;
|
20 |
+
var $timeout = 20;
|
21 |
+
var $conn;
|
22 |
+
var $errno;
|
23 |
+
var $errstr;
|
24 |
+
var $boundary;
|
25 |
+
var $apissl;
|
26 |
+
|
27 |
+
/**
|
28 |
+
* PHP5 constructor.
|
29 |
+
*/
|
30 |
+
function __construct($_host, $_port, $_apissl) {
|
31 |
+
$this->host = $_host;
|
32 |
+
$this->port = $_port;
|
33 |
+
$this->apissl = $_apissl;
|
34 |
+
}
|
35 |
+
|
36 |
+
public function connect() {
|
37 |
+
if ($this->apissl && function_exists('stream_socket_client')) {
|
38 |
+
$this->conn = stream_socket_client("ssl://".$this->host.":".$this->port, $errno, $errstr, $this->timeout);
|
39 |
+
} else {
|
40 |
+
$this->conn = @fsockopen($this->host, $this->port, $errno, $errstr, $this->timeout);
|
41 |
+
}
|
42 |
+
if (!$this->conn) {
|
43 |
+
$this->errno = $errno;
|
44 |
+
$this->errstr = $errstr;
|
45 |
+
return false;
|
46 |
+
}
|
47 |
+
socket_set_timeout($this->conn, $this->timeout);
|
48 |
+
return true;
|
49 |
+
}
|
50 |
+
|
51 |
+
public function write($data) {
|
52 |
+
fwrite($this->conn, $data);
|
53 |
+
}
|
54 |
+
|
55 |
+
public function sendChunk($data) {
|
56 |
+
$this->write(sprintf("%x\r\n", strlen($data)));
|
57 |
+
$this->write($data);
|
58 |
+
$this->write("\r\n");
|
59 |
+
}
|
60 |
+
|
61 |
+
public function sendRequest($method, $url, $headers = array(), $body = null) {
|
62 |
+
$def_hdrs = array("Connection" => "keep-alive",
|
63 |
+
"Host" => $this->host);
|
64 |
+
$headers = array_merge($def_hdrs, $headers);
|
65 |
+
$request = strtoupper($method)." ".$url." HTTP/1.1\r\n";
|
66 |
+
if (null != $body) {
|
67 |
+
$headers["Content-length"] = strlen($body);
|
68 |
+
}
|
69 |
+
foreach($headers as $key=>$val) {
|
70 |
+
$request .= $key.":".$val."\r\n";
|
71 |
+
}
|
72 |
+
$request .= "\r\n";
|
73 |
+
if (null != $body) {
|
74 |
+
$request .= $body;
|
75 |
+
}
|
76 |
+
$this->write($request);
|
77 |
+
return $request;
|
78 |
+
}
|
79 |
+
|
80 |
+
public function post($url, $headers = array(), $body = "") {
|
81 |
+
if(is_array($body)) {
|
82 |
+
$b = "";
|
83 |
+
foreach($body as $key=>$val) {
|
84 |
+
$b .= $key."=".urlencode($val)."&";
|
85 |
+
}
|
86 |
+
$body = substr($b, 0, strlen($b) - 1);
|
87 |
+
}
|
88 |
+
$this->sendRequest("POST", $url, $headers, $body);
|
89 |
+
}
|
90 |
+
|
91 |
+
public function streamedPost($url, $headers = array()) {
|
92 |
+
$headers['Transfer-Encoding'] = "chunked";
|
93 |
+
$this->sendRequest("POST", $url, $headers);
|
94 |
+
}
|
95 |
+
|
96 |
+
public function multipartChunkedPost($url) {
|
97 |
+
$mph = array(
|
98 |
+
"Content-Disposition" => "form-data; name=bvinfile; filename=data",
|
99 |
+
"Content-Type" => "application/octet-stream"
|
100 |
+
);
|
101 |
+
$rnd = rand(100000, 999999);
|
102 |
+
$this->boundary = "----".$rnd;
|
103 |
+
$prologue = "--".$this->boundary."\r\n";
|
104 |
+
foreach($mph as $key=>$val) {
|
105 |
+
$prologue .= $key.":".$val."\r\n";
|
106 |
+
}
|
107 |
+
$prologue .= "\r\n";
|
108 |
+
$headers = array('Content-Type' => "multipart/form-data; boundary=".$this->boundary);
|
109 |
+
$this->streamedPost($url, $headers);
|
110 |
+
$this->sendChunk($prologue);
|
111 |
+
}
|
112 |
+
|
113 |
+
public function writeChunk($data) {
|
114 |
+
$this->sendChunk($data);
|
115 |
+
}
|
116 |
+
|
117 |
+
public function closeChunk() {
|
118 |
+
$this->sendChunk("");
|
119 |
+
}
|
120 |
+
|
121 |
+
public function endStream() {
|
122 |
+
$epilogue = "\r\n\r\n--".$this->boundary."--\r\n";
|
123 |
+
$this->sendChunk($epilogue);
|
124 |
+
$this->closeChunk();
|
125 |
+
}
|
126 |
+
|
127 |
+
public function getResponse() {
|
128 |
+
$response = array();
|
129 |
+
$response['headers'] = array();
|
130 |
+
$state = 1;
|
131 |
+
$conlen = 0;
|
132 |
+
stream_set_timeout($this->conn, 300);
|
133 |
+
while (!feof($this->conn)) {
|
134 |
+
$line = fgets($this->conn, 4096);
|
135 |
+
if (1 == $state) {
|
136 |
+
if (!preg_match('/HTTP\/(\\d\\.\\d)\\s*(\\d+)\\s*(.*)/', $line, $m)) {
|
137 |
+
$response['httperror'] = "Status code line invalid: ".htmlentities($line);
|
138 |
+
return $response;
|
139 |
+
}
|
140 |
+
$response['http_version'] = $m[1];
|
141 |
+
$response['status'] = $m[2];
|
142 |
+
$response['status_string'] = $m[3];
|
143 |
+
$state = 2;
|
144 |
+
} else if (2 == $state) {
|
145 |
+
# End of headers
|
146 |
+
if (2 == strlen($line)) {
|
147 |
+
if ($conlen > 0)
|
148 |
+
$response['body'] = fread($this->conn, $conlen);
|
149 |
+
return $response;
|
150 |
+
}
|
151 |
+
if (!preg_match('/([^:]+):\\s*(.*)/', $line, $m)) {
|
152 |
+
// Skip to the next header
|
153 |
+
continue;
|
154 |
+
}
|
155 |
+
$key = strtolower(trim($m[1]));
|
156 |
+
$val = trim($m[2]);
|
157 |
+
$response['headers'][$key] = $val;
|
158 |
+
if ($key == "content-length") {
|
159 |
+
$conlen = intval($val);
|
160 |
+
}
|
161 |
+
}
|
162 |
+
}
|
163 |
+
return $response;
|
164 |
+
}
|
165 |
+
}
|
166 |
+
endif;
|
callback/wings/account.php
ADDED
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if (!defined('ABSPATH')) exit;
|
4 |
+
if (!class_exists('BVAccountCallback')) :
|
5 |
+
|
6 |
+
require_once dirname( __FILE__ ) . '/../../account.php';
|
7 |
+
|
8 |
+
class BVAccountCallback {
|
9 |
+
|
10 |
+
function process($method) {
|
11 |
+
global $bvresp, $bvcb;
|
12 |
+
$account = new BVAccountInfo($bvcb->bvmain);
|
13 |
+
switch ($method) {
|
14 |
+
case "updt":
|
15 |
+
$info = array();
|
16 |
+
$info['email'] = $_REQUEST['email'];
|
17 |
+
$info['url'] = $_REQUEST['url'];
|
18 |
+
$info['pubkey'] = $_REQUEST['pubkey'];
|
19 |
+
$account->add($info);
|
20 |
+
$bvresp->addStatus("status", $account->doesAccountExists($_REQUEST['pubkey']));
|
21 |
+
break;
|
22 |
+
case "disc":
|
23 |
+
$account->remove($_REQUEST['pubkey']);
|
24 |
+
$bvresp->addStatus("status", !$account->doesAccountExists($_REQUEST['pubkey']));
|
25 |
+
case "fetch":
|
26 |
+
$bvresp->addStatus("status", $account->allAccounts());
|
27 |
+
break;
|
28 |
+
default:
|
29 |
+
return false;
|
30 |
+
}
|
31 |
+
return true;
|
32 |
+
}
|
33 |
+
}
|
34 |
+
endif;
|
callback/wings/auth.php
ADDED
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if (!defined('ABSPATH')) exit;
|
4 |
+
if (!class_exists('BVAuthCallback')) :
|
5 |
+
class BVAuthCallback {
|
6 |
+
|
7 |
+
function process($method) {
|
8 |
+
global $bvresp, $bvcb;
|
9 |
+
$auth = $bvcb->bvmain->auth;
|
10 |
+
switch ($method) {
|
11 |
+
case "addkeys":
|
12 |
+
$bvresp->addStatus("status", $auth->addKeys($_REQUEST['public'], $_REQUEST['secret']));
|
13 |
+
break;
|
14 |
+
case "updatekeys":
|
15 |
+
$bvresp->addStatus("status", $auth->updateKeys($_REQUEST['public'], $_REQUEST['secret']));
|
16 |
+
break;
|
17 |
+
case "rmkeys":
|
18 |
+
$bvresp->addStatus("status", $auth->rmKeys($_REQUEST['public']));
|
19 |
+
break;
|
20 |
+
default:
|
21 |
+
return false;
|
22 |
+
}
|
23 |
+
return true;
|
24 |
+
}
|
25 |
+
}
|
26 |
+
endif;
|
callback/wings/brand.php
ADDED
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if (!defined('ABSPATH')) exit;
|
4 |
+
if (!class_exists('BVBrandCallback')) :
|
5 |
+
|
6 |
+
class BVBrandCallback {
|
7 |
+
public function process($method) {
|
8 |
+
global $bvresp, $bvcb;
|
9 |
+
$info = $bvcb->bvmain->info;
|
10 |
+
$option_name = $bvcb->bvmain->brand_option;
|
11 |
+
switch($method) {
|
12 |
+
case 'setbrand':
|
13 |
+
$brandinfo = array();
|
14 |
+
if (array_key_exists('hide', $_REQUEST)) {
|
15 |
+
$brandinfo['hide'] = $_REQUEST['hide'];
|
16 |
+
} else {
|
17 |
+
$brandinfo['name'] = $_REQUEST['name'];
|
18 |
+
$brandinfo['title'] = $_REQUEST['title'];
|
19 |
+
$brandinfo['description'] = $_REQUEST['description'];
|
20 |
+
$brandinfo['pluginuri'] = $_REQUEST['pluginuri'];
|
21 |
+
$brandinfo['author'] = $_REQUEST['author'];
|
22 |
+
$brandinfo['authorname'] = $_REQUEST['authorname'];
|
23 |
+
$brandinfo['authoruri'] = $_REQUEST['authoruri'];
|
24 |
+
$brandinfo['menuname'] = $_REQUEST['menuname'];
|
25 |
+
$brandinfo['logo'] = $_REQUEST['logo'];
|
26 |
+
$brandinfo['webpage'] = $_REQUEST['webpage'];
|
27 |
+
$brandinfo['appurl'] = $_REQUEST['appurl'];
|
28 |
+
if (array_key_exists('hide_plugin_details', $_REQUEST)) {
|
29 |
+
$brandinfo['hide_plugin_details'] = $_REQUEST['hide_plugin_details'];
|
30 |
+
}
|
31 |
+
if (array_key_exists('hide_from_menu', $_REQUEST)) {
|
32 |
+
$brandinfo['hide_from_menu'] = $_REQUEST['hide_from_menu'];
|
33 |
+
}
|
34 |
+
}
|
35 |
+
$info->updateOption($option_name, $brandinfo);
|
36 |
+
$bvresp->addStatus("setbrand", $info->getOption($option_name));
|
37 |
+
break;
|
38 |
+
case 'rmbrand':
|
39 |
+
$info->deleteOption($option_name);
|
40 |
+
$bvresp->addStatus("rmbrand", !$info->getOption($option_name));
|
41 |
+
break;
|
42 |
+
default:
|
43 |
+
return false;
|
44 |
+
}
|
45 |
+
return true;
|
46 |
+
}
|
47 |
+
}
|
48 |
+
endif;
|
callback/wings/bv_upgrader_skin.php
ADDED
@@ -0,0 +1,68 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if (!defined('ABSPATH')) exit;
|
4 |
+
if (!class_exists('BVUpgraderSkin')) :
|
5 |
+
class BVUpgraderSkin extends WP_Upgrader_Skin {
|
6 |
+
public $action = '';
|
7 |
+
public $plugin_info = array();
|
8 |
+
public $theme_info = array();
|
9 |
+
public $language_update = null;
|
10 |
+
|
11 |
+
function __construct($type, $package = '') {
|
12 |
+
$this->action = $type;
|
13 |
+
$this->package = $package;
|
14 |
+
parent::__construct(array());
|
15 |
+
}
|
16 |
+
|
17 |
+
function header() {}
|
18 |
+
|
19 |
+
function footer() {}
|
20 |
+
|
21 |
+
function get_key() {
|
22 |
+
$key = "bvgeneral";
|
23 |
+
switch ($this->action) {
|
24 |
+
case "theme_upgrade":
|
25 |
+
if (!empty($this->theme_info))
|
26 |
+
$key = $this->theme_info['Name'];
|
27 |
+
break;
|
28 |
+
case "plugin_upgrade":
|
29 |
+
if (!empty($this->plugin_info))
|
30 |
+
$key = $this->plugin_info['Name'];
|
31 |
+
break;
|
32 |
+
case "installer":
|
33 |
+
if (!empty($this->package))
|
34 |
+
$key = $this->package;
|
35 |
+
break;
|
36 |
+
case "upgrade_translations":
|
37 |
+
if (null != $this->language_update)
|
38 |
+
$key = $this->language_update->package;
|
39 |
+
break;
|
40 |
+
}
|
41 |
+
return $key;
|
42 |
+
}
|
43 |
+
|
44 |
+
function error($errors) {
|
45 |
+
global $bvresp;
|
46 |
+
$key = $this->get_key();
|
47 |
+
$message = array();
|
48 |
+
$message['error'] = true;
|
49 |
+
if (is_string($errors)) {
|
50 |
+
$message['message'] = $errors;
|
51 |
+
} elseif (is_wp_error($errors) && $errors->get_error_code()) {
|
52 |
+
$message['data'] = $errors->get_error_data();
|
53 |
+
$message['code'] = $errors->get_error_code();
|
54 |
+
}
|
55 |
+
$bvresp->addArrayToStatus($this->action.':'.$key, $message);
|
56 |
+
}
|
57 |
+
|
58 |
+
function feedback($string) {
|
59 |
+
global $bvresp;
|
60 |
+
if ( empty($string) )
|
61 |
+
return;
|
62 |
+
$key = $this->get_key();
|
63 |
+
$message = array();
|
64 |
+
$message['message'] = $string;
|
65 |
+
$bvresp->addArrayToStatus($this->action.':'.$key, $message);
|
66 |
+
}
|
67 |
+
}
|
68 |
+
endif;
|
callback/wings/db.php
ADDED
@@ -0,0 +1,145 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|