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 +86 -19 5.426.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.9;
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,
@@ -468,8 +506,31 @@
468 506
469 507 return $result;
470 508 }
471 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 +
472 533 public function process($request) {
473 534 $db = $this->db;
474 535 $params = $request->params;
475 536 switch ($request->method) {
@@ -525,16 +586,22 @@
525 586 break;
526 587 case "gthost":
527 588 $resp = array('host_info' => $this->getHostInfo());
528 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;
529 602 case "gtplinfo":
530 - $args = array(
531 - 'slug' => wp_unslash($params['slug'])
532 - );
533 - $action = $params['action'];
534 - $args = (object) $args;
535 - $args = apply_filters('plugins_api_args', $args, $action);
536 - $data = apply_filters('plugins_api', false, $action, $args);
603 + $data = $this->fetchPluginApiData($params['slug'], $params['action']);
537 604 $resp = array("plugins_info" => $data);
538 605 break;
539 606 case "gtpostactinfo":
540 607 $resp = $this->getPostActivateInfo($params);