PluginProbe
The WP Remote WordPress Plugin / 6.72
The WP Remote WordPress Plugin v6.72
6.72 6.69 6.65 6.62 6.48 6.47 4.87 4.97 5.05 5.09 5.16 5.22 5.24 5.25 5.38 5.41 5.42 5.45 5.47 5.53 5.56 5.65 5.68 5.72 5.73 All 53 releases
wpremote / account.php

account.php in The WP Remote WordPress Plugin 6.72, at account.php

249 lines 7.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 if (!defined('ABSPATH')) exit;
4 if (!class_exists('WPRAccount')) :
5 class WPRAccount {
6 public $settings;
7 public $public;
8 public $secret;
9 public static $api_public_key = 'bvApiPublic';
10 public static $accounts_list = 'bvAccountsList';
11 private static $default_credential = array();
12
13 public function __construct($settings, $public, $secret) {
14 $this->settings = $settings;
15 $this->public = $public;
16 $this->secret = $secret;
17 }
18
19 public static function find($settings, $public) {
20 if (!is_string($public)) {
21 return null;
22 }
23
24 $accounts = self::allAccounts($settings);
25 if (array_key_exists($public, $accounts) && isset($accounts[$public]['secret'])) {
26 $secret = $accounts[$public]['secret'];
27 }
28 if (empty($secret) || (strlen($secret) < 32)) {
29 if (!empty(self::$default_credential) && array_key_exists($public, self::$default_credential)
30 && strlen($public) >= 32) {
31 $secret = self::$default_credential[$public];
32 self::addAccount($settings, $public, $secret);
33 } else {
34 return null;
35 }
36 }
37 return new self($settings, $public, $secret);
38 }
39
40 public static function update($settings, $allAccounts) {
41 $settings->updateOption(self::$accounts_list, $allAccounts);
42 }
43
44 public static function randString($length) {
45 $chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
46
47 $str = "";
48 $size = strlen($chars);
49 for( $i = 0; $i < $length; $i++ ) {
50 $str .= $chars[random_int(0, $size - 1)];
51 }
52 return $str;
53 }
54
55 public static function sanitizeKey($key) {
56 if (!is_string($key)) {
57 return '';
58 }
59
60 return preg_replace('/[^a-zA-Z0-9_\-]/', '', $key);
61 }
62
63 public static function apiPublicAccount($settings) {
64 $pubkey = $settings->getOption(self::$api_public_key);
65 return self::find($settings, $pubkey);
66 }
67
68 public static function updateApiPublicKey($settings, $pubkey) {
69 $settings->updateOption(self::$api_public_key, $pubkey);
70 }
71
72 public static function getDefaultPublicKey() {
73 return WPRHelper::arrayKeyFirst(self::$default_credential);
74 }
75
76 public static function getApiPublicKey($settings) {
77 return $settings->getOption(self::$api_public_key);
78 }
79
80 public static function getPlugName($settings) {
81 $bvinfo = new WPRInfo($settings);
82 return $bvinfo->plugname;
83 }
84
85 public static function allAccounts($settings) {
86 $accounts = $settings->getOption(self::$accounts_list);
87 if (!is_array($accounts)) {
88 $accounts = array();
89 }
90 return $accounts;
91 }
92
93 public static function accountsByPlugname($settings) {
94 $accounts = self::allAccounts($settings);
95 $accountsByPlugname = array();
96 $plugname = self::getPlugName($settings);
97 foreach ($accounts as $pubkey => $value) {
98 if (array_key_exists($plugname, $value) && $value[$plugname] == 1) {
99 $accountsByPlugname[$pubkey] = $value;
100 }
101 }
102 return $accountsByPlugname;
103 }
104
105 public static function accountsByType($settings, $account_type) {
106 $accounts = self::allAccounts($settings);
107 $accounts_by_type = array();
108 foreach ($accounts as $pubkey => $value) {
109 if (array_key_exists('account_type', $value) && $value['account_type'] === $account_type) {
110 $accounts_by_type[$pubkey] = $value;
111 }
112 }
113 return $accounts_by_type;
114 }
115
116 public static function accountsByGid($settings, $account_gid) {
117 $accounts = self::allAccounts($settings);
118 $accounts_by_gid = array();
119 foreach ($accounts as $pubkey => $value) {
120 if (array_key_exists('account_gid', $value) && $value['account_gid'] === $account_gid) {
121 $accounts_by_gid[$pubkey] = $value;
122 }
123 }
124 return $accounts_by_gid;
125 }
126
127 public static function accountsByPattern($settings, $search_key, $search_pattern) {
128 $accounts = self::allAccounts($settings);
129 $accounts_by_pattern = array();
130 foreach ($accounts as $pubkey => $value) {
131 if (array_key_exists($search_key, $value) &&
132 WPRHelper::safePregMatch($search_pattern, $value[$search_key]) == 1) {
133 $accounts_by_pattern[$pubkey] = $value;
134 }
135 }
136 return $accounts_by_pattern;
137 }
138
139 public static function isConfigured($settings) {
140 $accounts = self::accountsByPlugname($settings);
141 return (sizeof($accounts) >= 1);
142 }
143
144 public static function setup($settings) {
145 $bvinfo = new WPRInfo($settings);
146 $settings->updateOption($bvinfo->plug_redirect, 'yes');
147 $settings->updateOption('bvActivateTime', time());
148 }
149
150 public function authenticatedUrl($method) {
151 $bvinfo = new WPRInfo($this->settings);
152 $qstr = http_build_query($this->newAuthParams($bvinfo->version));
153 return $bvinfo->appUrl().$method."?".$qstr;
154 }
155
156 public function newAuthParams($version) {
157 $bvinfo = new WPRInfo($this->settings);
158 $args = array();
159 $time = time();
160 $sig = sha1($this->public.$this->secret.$time.$version);
161 $args['sig'] = $sig;
162 $args['bvTime'] = $time;
163 $args['bvPublic'] = $this->public;
164 $args['bvVersion'] = $version;
165 $args['sha1'] = '1';
166 $args['plugname'] = $bvinfo->plugname;
167 return $args;
168 }
169
170 public static function addAccount($settings, $public, $secret) {
171 $accounts = self::allAccounts($settings);
172 if (!isset($public, $accounts)) {
173 $accounts[$public] = array();
174 }
175 $accounts[$public]['secret'] = $secret;
176 self::update($settings, $accounts);
177 }
178
179 public function info() {
180 return array(
181 "public" => substr($this->public, 0, 6)
182 );
183 }
184
185 public function updateInfo($info) {
186 $accounts = self::allAccounts($this->settings);
187 $account_type = $info["account_type"];
188 $pubkey = $info['pubkey'];
189 if (!array_key_exists($pubkey, $accounts)) {
190 $accounts[$pubkey] = array();
191 }
192 if (array_key_exists('secret', $info)) {
193 $accounts[$pubkey]['secret'] = $info['secret'];
194 }
195 $accounts[$pubkey]['account_gid'] = $info['account_gid'];
196 $accounts[$pubkey]['lastbackuptime'] = time();
197 if (isset($info["speed_plugname"])) {
198 $speed_plugname = $info["speed_plugname"];
199 $accounts[$pubkey][$speed_plugname] = true;
200 }
201 if (isset($info["plugname"])) {
202 $plugname = $info["plugname"];
203 $accounts[$pubkey][$plugname] = true;
204 }
205 $accounts[$pubkey]['account_type'] = $account_type;
206 $accounts[$pubkey]['url'] = $info['url'];
207 $accounts[$pubkey]['email'] = $info['email'];
208 self::update($this->settings, $accounts);
209 }
210
211 public static function remove($settings, $pubkey) {
212 $accounts = self::allAccounts($settings);
213 if (array_key_exists($pubkey, $accounts)) {
214 unset($accounts[$pubkey]);
215 self::update($settings, $accounts);
216 return true;
217 }
218 return false;
219 }
220
221 public static function removeByAccountType($settings, $account_type) {
222 $accounts = WPRAccount::accountsByType($settings, $account_type);
223 if (sizeof($accounts) >= 1) {
224 foreach ($accounts as $pubkey => $value) {
225 WPRAccount::remove($settings, $pubkey);
226 }
227 return true;
228 }
229 return false;
230 }
231
232 public static function removeByAccountGid($settings, $account_gid) {
233 $accounts = WPRAccount::accountsByGid($settings, $account_gid);
234 if (sizeof($accounts) >= 1) {
235 foreach ($accounts as $pubkey => $value) {
236 WPRAccount::remove($settings, $pubkey);
237 }
238 return true;
239 }
240 return false;
241 }
242
243 public static function exists($settings, $pubkey) {
244 $accounts = self::allAccounts($settings);
245 return array_key_exists($pubkey, $accounts);
246 }
247 }
248 endif;
249