PluginProbe
The WP Remote WordPress Plugin / 6.76
The WP Remote WordPress Plugin v6.76
6.76 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 All 54 releases
← All changes | plugin.php +118 -59 4.876.76 View file →
@@ -4,10 +4,12 @@
4 4 Plugin URI: https://wpremote.com
5 5 Description: Manage your WordPress site with <a href="https://wpremote.com/">WP Remote</a>.
6 6 Author: WP Remote
7 7 Author URI: https://wpremote.com
8 -Version: 4.87
8 +Version: 6.76
9 9 Network: True
10 +License: GPLv2 or later
11 +License URI: [http://www.gnu.org/licenses/gpl-2.0.html](http://www.gnu.org/licenses/gpl-2.0.html)
10 12 */
11 13
12 14 /* Copyright 2017 WP Remote (email : support@wpremote.com)
13 15
@@ -36,8 +38,14 @@
36 38 require_once dirname( __FILE__ ) . '/wp_api.php';
37 39 require_once dirname( __FILE__ ) . '/wp_actions.php';
38 40 require_once dirname( __FILE__ ) . '/info.php';
39 41 require_once dirname( __FILE__ ) . '/account.php';
42 +require_once dirname( __FILE__ ) . '/helper.php';
43 +require_once dirname( __FILE__ ) . '/wp_file_system.php';
44 +require_once dirname( __FILE__ ) . '/wp_2fa/wp_2fa.php';
45 +
46 +require_once dirname( __FILE__ ) . '/wp_login_whitelabel.php';
47 +
40 48 ##WPCACHEMODULE##
41 49
42 50
43 51 $bvsettings = new WPRWPSettings();
@@ -52,18 +60,23 @@
52 60 register_uninstall_hook(__FILE__, array('WPRWPAction', 'uninstall'));
53 61 register_activation_hook(__FILE__, array($wp_action, 'activate'));
54 62 register_deactivation_hook(__FILE__, array($wp_action, 'deactivate'));
55 63
64 +
56 65 add_action('wp_footer', array($wp_action, 'footerHandler'), 100);
57 -add_action('clear_bv_services_config', array($wp_action, 'clear_bv_services_config'));
66 +add_action('wpr_clear_bv_services_config', array($wp_action, 'clear_bv_services_config'));
67 +
58 68 ##SOADDUNINSTALLACTION##
59 69
70 +##DISABLE_OTHER_OPTIMIZATION_PLUGINS##
71 +
60 72 ##WPCLIMODULE##
73 +
61 74 if (is_admin()) {
62 75 require_once dirname( __FILE__ ) . '/wp_admin.php';
63 76 $wpadmin = new WPRWPAdmin($bvsettings, $bvsiteinfo);
64 77 add_action('admin_init', array($wpadmin, 'initHandler'));
65 - add_filter('all_plugins', array($wpadmin, 'initBranding'));
78 + add_filter('all_plugins', array($wpadmin, 'initWhitelabel'));
66 79 add_filter('plugin_row_meta', array($wpadmin, 'hidePluginDetails'), 10, 2);
67 80 add_filter('debug_information', array($wpadmin, 'handlePluginHealthInfo'), 10, 1);
68 81 if ($bvsiteinfo->isMultisite()) {
69 82 add_action('network_admin_menu', array($wpadmin, 'menu'));
@@ -71,92 +84,104 @@
71 84 add_action('admin_menu', array($wpadmin, 'menu'));
72 85 }
73 86 add_filter('plugin_action_links', array($wpadmin, 'settingsLink'), 10, 2);
74 87 add_action('admin_head', array($wpadmin, 'removeAdminNotices'), 3);
88 +
89 + ##MG_AJAX_ACTIONS##
90 + ##POPUP_ON_DEACTIVATION##
75 91 add_action('admin_notices', array($wpadmin, 'activateWarning'));
76 92 add_action('admin_enqueue_scripts', array($wpadmin, 'wprsecAdminMenu'));
77 - ##ALPURGECACHEFUNCTION##
78 - ##ALADMINMENU##
79 93 }
80 94
81 -if ((array_key_exists('bvreqmerge', $_POST)) || (array_key_exists('bvreqmerge', $_GET))) {
82 - $_REQUEST = array_merge($_GET, $_POST);
95 +if ((array_key_exists('bvreqmerge', $_POST)) || (array_key_exists('bvreqmerge', $_GET))) { // phpcs:ignore WordPress.Security.NonceVerification.Missing, WordPress.Security.NonceVerification.Recommended
96 + $_REQUEST = array_merge($_GET, $_POST); // phpcs:ignore WordPress.Security.NonceVerification.Missing, WordPress.Security.NonceVerification.Recommended
83 97 }
84 98
99 +#Service active check
100 +if ($bvinfo->config != false) {
101 + add_action('wpr_remove_bv_preload_include', array($wp_action, 'removeBVPreload'));
102 +}
103 +
104 +require_once dirname( __FILE__ ) . '/php_error_monitoring/monitoring.php';
105 +WPRWPPHPErrorMonitoring::init();
106 +
107 +require_once dirname( __FILE__ ) . '/wp_actlog.php';
108 +$actlog = new BVWPActLog($bvdb, $bvsettings, $bvinfo, $bvinfo->isActivityLogActive() ? $bvinfo->config['activity_log'] : array());
109 +$actlog->init();
110 +
85 111 if ($bvinfo->hasValidDBVersion()) {
86 - if ($bvinfo->isServiceActive('activity_log')) {
87 - require_once dirname( __FILE__ ) . '/wp_actlog.php';
88 - $bvconfig = $bvinfo->config;
89 - $actlog = new BVWPActLog($bvdb, $bvsettings, $bvinfo, $bvconfig['activity_log']);
90 - $actlog->init();
91 - }
92 -
112 + ##MAINTENANCEMODULE##
93 113 }
94 114
95 -if ((array_key_exists('bvplugname', $_REQUEST)) && ($_REQUEST['bvplugname'] == "wpremote")) {
115 +if (WPRHelper::getRawParam('REQUEST', 'bvplugname') == "wpremote") {
96 116 require_once dirname( __FILE__ ) . '/callback/base.php';
97 117 require_once dirname( __FILE__ ) . '/callback/response.php';
98 118 require_once dirname( __FILE__ ) . '/callback/request.php';
99 119 require_once dirname( __FILE__ ) . '/recover.php';
100 120
101 - $pubkey = WPRAccount::sanitizeKey($_REQUEST['pubkey']);
121 + $pubkey = WPRHelper::getRawParam('REQUEST', 'pubkey');
122 + $pubkey = isset($pubkey) ? WPRAccount::sanitizeKey($pubkey) : '';
123 + $rcvracc = WPRHelper::getRawParam('REQUEST', 'rcvracc');
102 124
103 - if (array_key_exists('rcvracc', $_REQUEST)) {
104 - $account = WPRRecover::find($bvsettings, $pubkey);
125 + if (isset($rcvracc)) {
126 + $bvctag = WPRHelper::getRawParam('REQUEST', 'bvctag');
127 + $bvctag = isset($bvctag) ? WPRAccount::sanitizeKey($bvctag) : null;
128 + $account = WPRRecover::find($bvsettings, $pubkey, $bvctag);
105 129 } else {
106 130 $account = WPRAccount::find($bvsettings, $pubkey);
107 131 }
108 132
109 - $request = new BVCallbackRequest($account, $_REQUEST);
110 - $response = new BVCallbackResponse($request->bvb64cksize);
133 + $request = new WPRCallbackRequest($account, $_REQUEST, $bvsettings); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
134 + $response = new WPRCallbackResponse($request->bvb64cksize);
111 135
112 - if ($account && (1 === $account->authenticate($request))) {
113 - define('WPRBASEPATH', plugin_dir_path(__FILE__));
136 + if ($request->authenticate() === 1) {
137 + $bv_frm_tstng = WPRHelper::getRawParam('REQUEST', 'bv_frm_tstng');
138 + if (isset($bv_frm_tstng)) {
139 + require_once dirname(__FILE__) . '/form_testing/form_testing.php';
140 + $form_testing = new BVFormTesting($_REQUEST); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
141 + $form_testing->init();
114 142
143 + } else {
144 + define('WPRBASEPATH', plugin_dir_path(__FILE__));
115 145
116 - require_once dirname( __FILE__ ) . '/callback/handler.php';
117 146
118 - $params = $request->processParams($_REQUEST);
119 - if ($params === false) {
120 - $resp = array(
121 - "account_info" => $account->info(),
122 - "request_info" => $request->info(),
123 - "bvinfo" => $bvinfo->info(),
124 - "statusmsg" => "BVPRMS_CORRUPTED"
125 - );
126 - $response->terminate($resp);
147 + require_once dirname( __FILE__ ) . '/callback/handler.php';
148 +
149 + $params = $request->processParams($_REQUEST); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
150 + if ($params === false) {
151 + $response->terminate($request->corruptedParamsResp());
152 + }
153 + $request->params = $params;
154 + $callback_handler = new WPRCallbackHandler($bvdb, $bvsettings, $bvsiteinfo, $request, $account, $response);
155 + if ($request->is_aftershutdown) {
156 + $callback_handler->deferExecutionUntilShutdown();
157 + } else if ($request->is_afterload) {
158 + add_action('wp_loaded', array($callback_handler, 'execute'));
159 + } else if ($request->is_admin_ajax) {
160 + add_action('wp_ajax_bvadm', array($callback_handler, 'bvAdmExecuteWithUser'));
161 + add_action('wp_ajax_nopriv_bvadm', array($callback_handler, 'bvAdmExecuteWithoutUser'));
162 + } else {
163 + $callback_handler->execute();
164 + }
127 165 }
128 - $request->params = $params;
129 - $callback_handler = new BVCallbackHandler($bvdb, $bvsettings, $bvsiteinfo, $request, $account, $response);
130 - if ($request->is_afterload) {
131 - add_action('wp_loaded', array($callback_handler, 'execute'));
132 - } else if ($request->is_admin_ajax) {
133 - add_action('wp_ajax_bvadm', array($callback_handler, 'bvAdmExecuteWithUser'));
134 - add_action('wp_ajax_nopriv_bvadm', array($callback_handler, 'bvAdmExecuteWithoutUser'));
135 - } else {
136 - $callback_handler->execute();
137 - }
138 166 } else {
139 - $resp = array(
140 - "account_info" => $account ? $account->info() : array("error" => "ACCOUNT_NOT_FOUND"),
141 - "request_info" => $request->info(),
142 - "bvinfo" => $bvinfo->info(),
143 - "statusmsg" => "FAILED_AUTH",
144 - "api_pubkey" => substr(WPRAccount::getApiPublicKey($bvsettings), 0, 8),
145 - "def_sigmatch" => substr(WPRAccount::getSigMatch($request, WPRRecover::getDefaultSecret($bvsettings)), 0, 8)
146 - );
147 - $response->terminate($resp);
167 + $response->terminate($request->authFailedResp());
148 168 }
149 169 } else {
150 170 if ($bvinfo->hasValidDBVersion()) {
151 171 if ($bvinfo->isProtectModuleEnabled()) {
152 - require_once dirname( __FILE__ ) . '/protect/wp/protect.php';
153 - $bvprotect = new BVProtect($bvdb, $bvsettings);
154 - $bvprotect->init();
155 - if ($bvinfo->isActivePlugin() && !(defined( 'WP_CLI' ) && WP_CLI)) {
156 - $bvprotect->run();
172 + require_once dirname( __FILE__ ) . '/protect/protect.php';
173 + //For backward compatibility.
174 + WPRProtect_V676::$settings = new WPRWPSettings();
175 + WPRProtect_V676::$db = new WPRWPDb();
176 + WPRProtect_V676::$info = new WPRInfo(WPRProtect_V676::$settings);
177 +
178 + add_action('wpr_clear_pt_config', array('WPRProtect_V676', 'uninstall'));
179 +
180 + if ($bvinfo->isActivePlugin()) {
181 + WPRProtect_V676::init(WPRProtect_V676::MODE_WP);
182 + }
157 183 }
158 - }
159 184
160 185 if ($bvinfo->isDynSyncModuleEnabled()) {
161 186 require_once dirname( __FILE__ ) . '/wp_dynsync.php';
162 187 $bvconfig = $bvinfo->config;
@@ -165,9 +190,9 @@
165 190 }
166 191
167 192 }
168 193 $bv_site_settings = $bvsettings->getOption('bv_site_settings');
169 - if (isset($bv_site_settings)) {
194 + if (is_array($bv_site_settings)) {
170 195 if (isset($bv_site_settings['wp_auto_updates'])) {
171 196 $wp_auto_updates = $bv_site_settings['wp_auto_updates'];
172 197 if (array_key_exists('block_auto_update_core', $wp_auto_updates)) {
173 198 add_filter('auto_update_core', '__return_false' );
@@ -183,8 +208,28 @@
183 208 if (array_key_exists('block_auto_update_translation', $wp_auto_updates)) {
184 209 add_filter('auto_update_translation', '__return_false' );
185 210 }
186 211 }
212 +
213 + if (isset($bv_site_settings['security_hardening'])) {
214 + $bv_security_hardening = $bv_site_settings['security_hardening'];
215 + if (is_array($bv_security_hardening) &&
216 + isset($bv_security_hardening['version']) &&
217 + $bv_security_hardening['version'] === 1) {
218 + if (isset($bv_security_hardening['disable_file_editor']) &&
219 + $bv_security_hardening['disable_file_editor'] === true &&
220 + !defined('DISALLOW_FILE_EDIT')) {
221 + define('DISALLOW_FILE_EDIT', true);
222 + }
223 +
224 + if (isset($bv_security_hardening['block_file_modifications']) &&
225 + $bv_security_hardening['block_file_modifications'] === true &&
226 + !defined('DISALLOW_FILE_MODS')) {
227 + define('DISALLOW_FILE_MODS', true);
228 + }
229 + }
230 + }
231 +
187 232 }
188 233
189 234 if (is_admin()) {
190 235 add_filter('site_transient_update_plugins', array($wpadmin, 'hidePluginUpdate'));
@@ -189,5 +234,19 @@
189 234 if (is_admin()) {
190 235 add_filter('site_transient_update_plugins', array($wpadmin, 'hidePluginUpdate'));
191 236 }
192 237
193 -}
238 + ##THIRDPARTYCACHINGMODULE##
239 +}
240 +
241 +if (WPRWP2FA::isEnabled($bvsettings)) {
242 + $wp_2fa = new WPRWP2FA();
243 + $wp_2fa->init();
244 +}
245 +
246 +if (!empty($bvinfo->getLPWhitelabelInfo())) {
247 + $wp_login_whitelabel = new WPRWPLoginWhitelabel();
248 + $wp_login_whitelabel->init();
249 +}
250 +
251 +add_action('wpr_clear_wp_2fa_config', array($wp_action, 'clear_wp_2fa_config'));
252 +##PLUGIN_LOADED_MODULE##