PluginProbe
The WP Remote WordPress Plugin / 6.36
The WP Remote WordPress Plugin v6.36
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
← All changes | callback/wings/info.php +89 -21 5.416.36 View file →
@@ -9,9 +9,9 @@
9 9 public $siteinfo;
10 10 public $bvinfo;
11 11 public $bvapi;
12 12
13 - const INFO_WING_VERSION = 1.8;
13 + const INFO_WING_VERSION = 2.7;
14 14
15 15 public function __construct($callback_handler) {
16 16 $this->db = $callback_handler->db;
17 17 $this->siteinfo = $callback_handler->siteinfo;
@@ -50,8 +50,16 @@
50 50 case "woocommerce/woocommerce.php":
51 51 $pdata['current_db_version'] = $this->settings->getOption('woocommerce_db_version');
52 52 $pdata['latest_db_version'] = $this->bvinfo->getLatestWooCommerceDBVersion();
53 53 break;
54 + case "elementor/elementor.php":
55 + $pdata['current_db_version'] = $this->settings->getOption('elementor_version');
56 + $pdata['latest_db_version'] = $this->bvinfo->getLatestElementorDBVersion($plugin_file);
57 + break;
58 + case "elementor-pro/elementor-pro.php":
59 + $pdata['current_db_version'] = $this->settings->getOption('elementor_pro_version');
60 + $pdata['latest_db_version'] = $this->bvinfo->getLatestElementorDBVersion($plugin_file);
61 + break;
54 62 }
55 63
56 64 return $pdata;
57 65 }
@@ -67,9 +75,13 @@
67 75 'file' => $plugin_file,
68 76 'title' => $plugin_data['Title'],
69 77 'version' => $plugin_data['Version'],
70 78 'active' => is_plugin_active($plugin_file),
71 - 'network' => $plugin_data['Network']
79 + 'network' => $plugin_data['Network'],
80 + "plugin_uri" => $plugin_data["PluginURI"],
81 + "update_uri" => $plugin_data["UpdateURI"],
82 + "author_uri" => $plugin_data["AuthorURI"],
83 + "author" => $plugin_data["AuthorName"],
72 84 );
73 85 $pdata = $this->addDBInfoToPlugin($pdata, $plugin_file);
74 86 $result["plugins"][] = $pdata;
75 87 }
@@ -82,9 +94,13 @@
82 94 'name' => $theme->Name,
83 95 'title' => $theme->Title,
84 96 'stylesheet' => $theme->get_stylesheet(),
85 97 'template' => $theme->Template,
86 - 'version' => $theme->Version
98 + 'version' => $theme->Version,
99 + 'theme_uri' => $theme->get('ThemeURI'),
100 + 'author' => $theme->get('Author'),
101 + 'author_uri' => $theme->get('AuthorURI'),
102 + 'update_uri' => $theme->get('UpdateURI'),
87 103 );
88 104 } else {
89 105 $pdata = array(
90 106 'name' => $theme["Name"],
@@ -90,9 +106,11 @@
90 106 'name' => $theme["Name"],
91 107 'title' => $theme["Title"],
92 108 'stylesheet' => $theme["Stylesheet"],
93 109 'template' => $theme["Template"],
94 - 'version' => $theme["Version"]
110 + 'version' => $theme["Version"],
111 + 'author' => $theme['Author'],
112 + 'author_uri' => $theme['Author URI'],
95 113 );
96 114 }
97 115 return $pdata;
98 116 }
@@ -98,15 +116,14 @@
98 116 }
99 117
100 118 public function getThemes() {
101 119 $result = array();
102 - $themes = function_exists('wp_get_themes') ? wp_get_themes() : get_themes();
120 + $themes = wp_get_themes();
103 121 foreach($themes as $theme) {
104 122 $pdata = $this->themeToArray($theme);
105 123 $result["themes"][] = $pdata;
106 124 }
107 - $theme = function_exists('wp_get_theme') ? wp_get_theme() : get_current_theme();
108 - $pdata = $this->themeToArray($theme);
125 + $pdata = $this->themeToArray(wp_get_theme());
109 126 $result["currenttheme"] = $pdata;
110 127 return $result;
111 128 }
112 129
@@ -111,14 +128,14 @@
111 128 }
112 129
113 130 public function getSystemInfo() {
114 131 $sys_info = array(
115 - 'host' => $_SERVER['HTTP_HOST'],
132 + 'host' => WPRHelper::getRawParam('SERVER', 'HTTP_HOST'),
116 133 'phpversion' => phpversion(),
117 134 'AF_INET6' => defined('AF_INET6')
118 135 );
119 136 if (array_key_exists('SERVER_ADDR', $_SERVER)) {
120 - $sys_info['serverip'] = $_SERVER['SERVER_ADDR'];
137 + $sys_info['serverip'] = WPRHelper::getRawParam('SERVER', 'SERVER_ADDR');
121 138 }
122 139 if (function_exists('get_current_user')) {
123 140 $sys_info['user'] = get_current_user();
124 141 }
@@ -159,8 +176,10 @@
159 176 'uploaddir' => wp_upload_dir(),
160 177 'contentdir' => defined('WP_CONTENT_DIR') ? WP_CONTENT_DIR : null,
161 178 'contenturl' => defined('WP_CONTENT_URL') ? WP_CONTENT_URL : null,
162 179 'plugindir' => defined('WP_PLUGIN_DIR') ? WP_PLUGIN_DIR : null,
180 + 'themedir' => get_stylesheet_directory(),
181 + 'templatedir' => get_template_directory(),
163 182 'dbcharset' => defined('DB_CHARSET') ? DB_CHARSET : null,
164 183 'disallow_file_edit' => defined('DISALLOW_FILE_EDIT'),
165 184 'disallow_file_mods' => defined('DISALLOW_FILE_MODS'),
166 185 'custom_users' => defined('CUSTOM_USER_TABLE') ? CUSTOM_USER_TABLE : null,
@@ -166,9 +185,11 @@
166 185 'custom_users' => defined('CUSTOM_USER_TABLE') ? CUSTOM_USER_TABLE : null,
167 186 'custom_usermeta' => defined('CUSTOM_USERMETA_TABLE') ? CUSTOM_USERMETA_TABLE : null,
168 187 'locale' => get_locale(),
169 188 'wp_local_string' => $wp_local_package,
170 - 'charset_collate' => $db->getCharsetCollate()
189 + 'charset_collate' => $db->getCharsetCollate(),
190 + 'allowed_paths' => ini_get('open_basedir'),
191 + 'path_seprator' => PATH_SEPARATOR
171 192 );
172 193 return $wp_info;
173 194 }
174 195
@@ -207,8 +228,14 @@
207 228 }
208 229 if (function_exists('openssl_public_decrypt')) {
209 230 $info['openssl_public_decrypt'] = "1";
210 231 }
232 + if (function_exists('openssl_encrypt')) {
233 + $info['openssl_encrypt'] = "1";
234 + }
235 + if (function_exists('openssl_decrypt')) {
236 + $info['openssl_decrypt'] = "1";
237 + }
211 238 $info['sha1'] = "1";
212 239 $info['apissl'] = "1";
213 240 if (function_exists('base64_encode')) {
214 241 $info['b64encode'] = true;
@@ -255,9 +282,16 @@
255 282 }
256 283
257 284 public function getHostInfo() {
258 285 $host_info = $_SERVER;
259 - $host_info['PHP_SERVER_NAME'] = php_uname('\n');
286 + if (function_exists('php_uname')) {
287 + $host_info['PHP_SERVER_NAME'] = php_uname();
288 + }
289 +
290 + if (isset($_SERVER['SERVER_ADDR']) && function_exists('gethostbyaddr')) {
291 + $host_info['HOST_FROM_IP'] = gethostbyaddr(WPRHelper::getRawParam('SERVER', 'SERVER_ADDR'));
292 + }
293 +
260 294 if (array_key_exists('IS_PRESSABLE', get_defined_constants())) {
261 295 $host_info['IS_PRESSABLE'] = true;
262 296 }
263 297
@@ -268,14 +302,18 @@
268 302 if (defined('WPE_APIKEY')) {
269 303 $host_info['WPE_APIKEY'] = WPE_APIKEY;
270 304 }
271 305
306 + if (defined('IS_ATOMIC')) {
307 + $host_info['IS_ATOMIC'] = IS_ATOMIC;
308 + }
309 +
272 310 return $host_info;
273 311 }
274 312
275 313 public function serverConfig() {
276 314 return array(
277 - 'software' => $_SERVER['SERVER_SOFTWARE'],
315 + 'software' => WPRHelper::getRawParam('SERVER', 'SERVER_SOFTWARE'),
278 316 'sapi' => (function_exists('php_sapi_name')) ? php_sapi_name() : false,
279 317 'has_apache_get_modules' => function_exists('apache_get_modules'),
280 318 'posix_getuid' => (function_exists('posix_getuid')) ? posix_getuid() : null,
281 319 'uid' => (function_exists('getmyuid')) ? getmyuid() : null,
@@ -374,13 +412,14 @@
374 412 return $result;
375 413 }
376 414
377 415 function getCoreHandler() {
378 - global $wp_db_version;
416 + global $wp_db_version, $wp_version;
379 417
380 418 $result = $this->getTransient('update_core');
381 419 $result['current_db_version'] = $this->settings->getOption('db_version');
382 420 $result['latest_db_version'] = $wp_db_version;
421 + $result['wp_version'] = $wp_version;
383 422
384 423 return $result;
385 424 }
386 425
@@ -467,8 +506,31 @@
467 506
468 507 return $result;
469 508 }
470 509
510 + function getPluginFileData($plugin_file) {
511 + $result = array();
512 +
513 + if (!function_exists('get_plugin_data')) {
514 + require_once ABSPATH . 'wp-admin/includes/plugin.php';
515 + }
516 + $plugin_data = get_plugin_data(WP_PLUGIN_DIR . '/' . $plugin_file);
517 + if ($plugin_data && isset($plugin_data['Version'])) {
518 + $result['version'] = $plugin_data['Version'];
519 + }
520 +
521 + return $result;
522 + }
523 +
524 + function fetchPluginApiData($slug, $action) {
525 + $args = array('slug' => wp_unslash($slug));
526 + $args = (object) $args;
527 + $args = apply_filters('plugins_api_args', $args, $action);
528 + $data = apply_filters('plugins_api', false, $action, $args);
529 +
530 + return $data;
531 + }
532 +
471 533 public function process($request) {
472 534 $db = $this->db;
473 535 $params = $request->params;
474 536 switch ($request->method) {
@@ -487,9 +549,9 @@
487 549 case "gtsts":
488 550 $resp = $this->getStats();
489 551 break;
490 552 case "gtdbvariables":
491 - $variable = (array_key_exists('variable', $params)) ? $variable : "";
553 + $variable = (array_key_exists('variable', $params)) ? $params['variable'] : "";
492 554 $resp = $this->db->showDbVariables($variable);
493 555 break;
494 556 case "gtplgs":
495 557 $resp = $this->getPlugins();
@@ -524,16 +586,22 @@
524 586 break;
525 587 case "gthost":
526 588 $resp = array('host_info' => $this->getHostInfo());
527 589 break;
590 + case "gtplsinfo":
591 + $resp = array("plugins_info" => array());
592 + $file_by_slug = $params["file_by_slug"];
593 + foreach ($params['slugs'] as $slug) {
594 + $data = $this->fetchPluginApiData($slug, $params['action']);
595 + if (is_object($data) && !property_exists($data, 'version') && isset($file_by_slug[$slug])) {
596 + $plugin_data = $this->getPluginFileData($file_by_slug[$slug]);
597 + $data->version = $plugin_data['version'];
598 + }
599 + $resp['plugins_info'][$slug] = $data;
600 + }
601 + break;
528 602 case "gtplinfo":
529 - $args = array(
530 - 'slug' => wp_unslash($params['slug'])
531 - );
532 - $action = $params['action'];
533 - $args = (object) $args;
534 - $args = apply_filters('plugins_api_args', $args, $action);
535 - $data = apply_filters('plugins_api', false, $action, $args);
603 + $data = $this->fetchPluginApiData($params['slug'], $params['action']);
536 604 $resp = array("plugins_info" => $data);
537 605 break;
538 606 case "gtpostactinfo":
539 607 $resp = $this->getPostActivateInfo($params);