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 -41 5.246.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;
@@ -44,32 +44,22 @@
44 44 "comments" => get_object_vars(wp_count_comments())
45 45 );
46 46 }
47 47
48 - public function getLatestWooCommerceDB() {
49 - $version = false;
50 -
51 - if (defined('WC_ABSPATH') && file_exists(WC_ABSPATH . 'includes/class-wc-install.php')) {
52 - include_once WC_ABSPATH . 'includes/class-wc-install.php';
53 - }
54 -
55 - if (class_exists('WC_Install')) {
56 - $update_versions = array_keys(WC_Install::get_db_update_callbacks());
57 - usort($update_versions, 'version_compare');
58 - if (!empty($update_versions)) {
59 - $version = end($update_versions);
60 - }
61 - }
62 -
63 - return $version;
64 - }
65 -
66 48 public function addDBInfoToPlugin($pdata, $plugin_file) {
67 49 switch ($plugin_file) {
68 50 case "woocommerce/woocommerce.php":
69 51 $pdata['current_db_version'] = $this->settings->getOption('woocommerce_db_version');
70 - $pdata['latest_db_version'] = $this->getLatestWooCommerceDB();
52 + $pdata['latest_db_version'] = $this->bvinfo->getLatestWooCommerceDBVersion();
71 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;
72 62 }
73 63
74 64 return $pdata;
75 65 }
@@ -85,9 +75,13 @@
85 75 'file' => $plugin_file,
86 76 'title' => $plugin_data['Title'],
87 77 'version' => $plugin_data['Version'],
88 78 'active' => is_plugin_active($plugin_file),
89 - '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"],
90 84 );
91 85 $pdata = $this->addDBInfoToPlugin($pdata, $plugin_file);
92 86 $result["plugins"][] = $pdata;
93 87 }
@@ -100,9 +94,13 @@
100 94 'name' => $theme->Name,
101 95 'title' => $theme->Title,
102 96 'stylesheet' => $theme->get_stylesheet(),
103 97 'template' => $theme->Template,
104 - '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'),
105 103 );
106 104 } else {
107 105 $pdata = array(
108 106 'name' => $theme["Name"],
@@ -108,9 +106,11 @@
108 106 'name' => $theme["Name"],
109 107 'title' => $theme["Title"],
110 108 'stylesheet' => $theme["Stylesheet"],
111 109 'template' => $theme["Template"],
112 - 'version' => $theme["Version"]
110 + 'version' => $theme["Version"],
111 + 'author' => $theme['Author'],
112 + 'author_uri' => $theme['Author URI'],
113 113 );
114 114 }
115 115 return $pdata;
116 116 }
@@ -116,15 +116,14 @@
116 116 }
117 117
118 118 public function getThemes() {
119 119 $result = array();
120 - $themes = function_exists('wp_get_themes') ? wp_get_themes() : get_themes();
120 + $themes = wp_get_themes();
121 121 foreach($themes as $theme) {
122 122 $pdata = $this->themeToArray($theme);
123 123 $result["themes"][] = $pdata;
124 124 }
125 - $theme = function_exists('wp_get_theme') ? wp_get_theme() : get_current_theme();
126 - $pdata = $this->themeToArray($theme);
125 + $pdata = $this->themeToArray(wp_get_theme());
127 126 $result["currenttheme"] = $pdata;
128 127 return $result;
129 128 }
130 129
@@ -129,14 +128,14 @@
129 128 }
130 129
131 130 public function getSystemInfo() {
132 131 $sys_info = array(
133 - 'host' => $_SERVER['HTTP_HOST'],
132 + 'host' => WPRHelper::getRawParam('SERVER', 'HTTP_HOST'),
134 133 'phpversion' => phpversion(),
135 134 'AF_INET6' => defined('AF_INET6')
136 135 );
137 136 if (array_key_exists('SERVER_ADDR', $_SERVER)) {
138 - $sys_info['serverip'] = $_SERVER['SERVER_ADDR'];
137 + $sys_info['serverip'] = WPRHelper::getRawParam('SERVER', 'SERVER_ADDR');
139 138 }
140 139 if (function_exists('get_current_user')) {
141 140 $sys_info['user'] = get_current_user();
142 141 }
@@ -177,8 +176,10 @@
177 176 'uploaddir' => wp_upload_dir(),
178 177 'contentdir' => defined('WP_CONTENT_DIR') ? WP_CONTENT_DIR : null,
179 178 'contenturl' => defined('WP_CONTENT_URL') ? WP_CONTENT_URL : null,
180 179 'plugindir' => defined('WP_PLUGIN_DIR') ? WP_PLUGIN_DIR : null,
180 + 'themedir' => get_stylesheet_directory(),
181 + 'templatedir' => get_template_directory(),
181 182 'dbcharset' => defined('DB_CHARSET') ? DB_CHARSET : null,
182 183 'disallow_file_edit' => defined('DISALLOW_FILE_EDIT'),
183 184 'disallow_file_mods' => defined('DISALLOW_FILE_MODS'),
184 185 'custom_users' => defined('CUSTOM_USER_TABLE') ? CUSTOM_USER_TABLE : null,
@@ -185,10 +186,10 @@
185 186 'custom_usermeta' => defined('CUSTOM_USERMETA_TABLE') ? CUSTOM_USERMETA_TABLE : null,
186 187 'locale' => get_locale(),
187 188 'wp_local_string' => $wp_local_package,
188 189 'charset_collate' => $db->getCharsetCollate(),
189 - 'login_url' => wp_login_url(),
190 - 'admin_url' => get_admin_url()
190 + 'allowed_paths' => ini_get('open_basedir'),
191 + 'path_seprator' => PATH_SEPARATOR
191 192 );
192 193 return $wp_info;
193 194 }
194 195
@@ -227,8 +228,14 @@
227 228 }
228 229 if (function_exists('openssl_public_decrypt')) {
229 230 $info['openssl_public_decrypt'] = "1";
230 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 + }
231 238 $info['sha1'] = "1";
232 239 $info['apissl'] = "1";
233 240 if (function_exists('base64_encode')) {
234 241 $info['b64encode'] = true;
@@ -275,9 +282,16 @@
275 282 }
276 283
277 284 public function getHostInfo() {
278 285 $host_info = $_SERVER;
279 - $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 +
280 294 if (array_key_exists('IS_PRESSABLE', get_defined_constants())) {
281 295 $host_info['IS_PRESSABLE'] = true;
282 296 }
283 297
@@ -288,14 +302,18 @@
288 302 if (defined('WPE_APIKEY')) {
289 303 $host_info['WPE_APIKEY'] = WPE_APIKEY;
290 304 }
291 305
306 + if (defined('IS_ATOMIC')) {
307 + $host_info['IS_ATOMIC'] = IS_ATOMIC;
308 + }
309 +
292 310 return $host_info;
293 311 }
294 312
295 313 public function serverConfig() {
296 314 return array(
297 - 'software' => $_SERVER['SERVER_SOFTWARE'],
315 + 'software' => WPRHelper::getRawParam('SERVER', 'SERVER_SOFTWARE'),
298 316 'sapi' => (function_exists('php_sapi_name')) ? php_sapi_name() : false,
299 317 'has_apache_get_modules' => function_exists('apache_get_modules'),
300 318 'posix_getuid' => (function_exists('posix_getuid')) ? posix_getuid() : null,
301 319 'uid' => (function_exists('getmyuid')) ? getmyuid() : null,
@@ -394,13 +412,14 @@
394 412 return $result;
395 413 }
396 414
397 415 function getCoreHandler() {
398 - global $wp_db_version;
416 + global $wp_db_version, $wp_version;
399 417
400 418 $result = $this->getTransient('update_core');
401 419 $result['current_db_version'] = $this->settings->getOption('db_version');
402 420 $result['latest_db_version'] = $wp_db_version;
421 + $result['wp_version'] = $wp_version;
403 422
404 423 return $result;
405 424 }
406 425
@@ -487,8 +506,31 @@
487 506
488 507 return $result;
489 508 }
490 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 +
491 533 public function process($request) {
492 534 $db = $this->db;
493 535 $params = $request->params;
494 536 switch ($request->method) {
@@ -507,9 +549,9 @@
507 549 case "gtsts":
508 550 $resp = $this->getStats();
509 551 break;
510 552 case "gtdbvariables":
511 - $variable = (array_key_exists('variable', $params)) ? $variable : "";
553 + $variable = (array_key_exists('variable', $params)) ? $params['variable'] : "";
512 554 $resp = $this->db->showDbVariables($variable);
513 555 break;
514 556 case "gtplgs":
515 557 $resp = $this->getPlugins();
@@ -544,16 +586,22 @@
544 586 break;
545 587 case "gthost":
546 588 $resp = array('host_info' => $this->getHostInfo());
547 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;
548 602 case "gtplinfo":
549 - $args = array(
550 - 'slug' => wp_unslash($params['slug'])
551 - );
552 - $action = $params['action'];
553 - $args = (object) $args;
554 - $args = apply_filters('plugins_api_args', $args, $action);
555 - $data = apply_filters('plugins_api', false, $action, $args);
603 + $data = $this->fetchPluginApiData($params['slug'], $params['action']);
556 604 $resp = array("plugins_info" => $data);
557 605 break;
558 606 case "gtpostactinfo":
559 607 $resp = $this->getPostActivateInfo($params);