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
wpremote / plugin.php

plugin.php in The WP Remote WordPress Plugin 6.76, at plugin.php

253 lines 9.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /*
3 Plugin Name: WP Remote
4 Plugin URI: https://wpremote.com
5 Description: Manage your WordPress site with <a href="https://wpremote.com/">WP Remote</a>.
6 Author: WP Remote
7 Author URI: https://wpremote.com
8 Version: 6.76
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)
12 */
13
14 /* Copyright 2017 WP Remote (email : support@wpremote.com)
15
16 This program is free software; you can redistribute it and/or modify
17 it under the terms of the GNU General Public License, version 2, as
18 published by the Free Software Foundation.
19
20 This program is distributed in the hope that it will be useful,
21 but WITHOUT ANY WARRANTY; without even the implied warranty of
22 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23 GNU General Public License for more details.
24
25 You should have received a copy of the GNU General Public License
26 along with this program; if not, write to the Free Software
27 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
28 */
29
30 /* Global response array */
31
32 if (!defined('ABSPATH')) exit;
33 ##OLDWPR##
34
35 require_once dirname( __FILE__ ) . '/wp_settings.php';
36 require_once dirname( __FILE__ ) . '/wp_site_info.php';
37 require_once dirname( __FILE__ ) . '/wp_db.php';
38 require_once dirname( __FILE__ ) . '/wp_api.php';
39 require_once dirname( __FILE__ ) . '/wp_actions.php';
40 require_once dirname( __FILE__ ) . '/info.php';
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
48 ##WPCACHEMODULE##
49
50
51 $bvsettings = new WPRWPSettings();
52 $bvsiteinfo = new WPRWPSiteInfo();
53 $bvdb = new WPRWPDb();
54
55
56 $bvapi = new WPRWPAPI($bvsettings);
57 $bvinfo = new WPRInfo($bvsettings);
58 $wp_action = new WPRWPAction($bvsettings, $bvsiteinfo, $bvapi);
59
60 register_uninstall_hook(__FILE__, array('WPRWPAction', 'uninstall'));
61 register_activation_hook(__FILE__, array($wp_action, 'activate'));
62 register_deactivation_hook(__FILE__, array($wp_action, 'deactivate'));
63
64
65 add_action('wp_footer', array($wp_action, 'footerHandler'), 100);
66 add_action('wpr_clear_bv_services_config', array($wp_action, 'clear_bv_services_config'));
67
68 ##SOADDUNINSTALLACTION##
69
70 ##DISABLE_OTHER_OPTIMIZATION_PLUGINS##
71
72 ##WPCLIMODULE##
73
74 if (is_admin()) {
75 require_once dirname( __FILE__ ) . '/wp_admin.php';
76 $wpadmin = new WPRWPAdmin($bvsettings, $bvsiteinfo);
77 add_action('admin_init', array($wpadmin, 'initHandler'));
78 add_filter('all_plugins', array($wpadmin, 'initWhitelabel'));
79 add_filter('plugin_row_meta', array($wpadmin, 'hidePluginDetails'), 10, 2);
80 add_filter('debug_information', array($wpadmin, 'handlePluginHealthInfo'), 10, 1);
81 if ($bvsiteinfo->isMultisite()) {
82 add_action('network_admin_menu', array($wpadmin, 'menu'));
83 } else {
84 add_action('admin_menu', array($wpadmin, 'menu'));
85 }
86 add_filter('plugin_action_links', array($wpadmin, 'settingsLink'), 10, 2);
87 add_action('admin_head', array($wpadmin, 'removeAdminNotices'), 3);
88
89 ##MG_AJAX_ACTIONS##
90 ##POPUP_ON_DEACTIVATION##
91 add_action('admin_notices', array($wpadmin, 'activateWarning'));
92 add_action('admin_enqueue_scripts', array($wpadmin, 'wprsecAdminMenu'));
93 }
94
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
97 }
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
111 if ($bvinfo->hasValidDBVersion()) {
112 ##MAINTENANCEMODULE##
113 }
114
115 if (WPRHelper::getRawParam('REQUEST', 'bvplugname') == "wpremote") {
116 require_once dirname( __FILE__ ) . '/callback/base.php';
117 require_once dirname( __FILE__ ) . '/callback/response.php';
118 require_once dirname( __FILE__ ) . '/callback/request.php';
119 require_once dirname( __FILE__ ) . '/recover.php';
120
121 $pubkey = WPRHelper::getRawParam('REQUEST', 'pubkey');
122 $pubkey = isset($pubkey) ? WPRAccount::sanitizeKey($pubkey) : '';
123 $rcvracc = WPRHelper::getRawParam('REQUEST', 'rcvracc');
124
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);
129 } else {
130 $account = WPRAccount::find($bvsettings, $pubkey);
131 }
132
133 $request = new WPRCallbackRequest($account, $_REQUEST, $bvsettings); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
134 $response = new WPRCallbackResponse($request->bvb64cksize);
135
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();
142
143 } else {
144 define('WPRBASEPATH', plugin_dir_path(__FILE__));
145
146
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 }
165 }
166 } else {
167 $response->terminate($request->authFailedResp());
168 }
169 } else {
170 if ($bvinfo->hasValidDBVersion()) {
171 if ($bvinfo->isProtectModuleEnabled()) {
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 }
183 }
184
185 if ($bvinfo->isDynSyncModuleEnabled()) {
186 require_once dirname( __FILE__ ) . '/wp_dynsync.php';
187 $bvconfig = $bvinfo->config;
188 $dynsync = new BVWPDynSync($bvdb, $bvsettings, $bvconfig['dynsync']);
189 $dynsync->init();
190 }
191
192 }
193 $bv_site_settings = $bvsettings->getOption('bv_site_settings');
194 if (is_array($bv_site_settings)) {
195 if (isset($bv_site_settings['wp_auto_updates'])) {
196 $wp_auto_updates = $bv_site_settings['wp_auto_updates'];
197 if (array_key_exists('block_auto_update_core', $wp_auto_updates)) {
198 add_filter('auto_update_core', '__return_false' );
199 }
200 if (array_key_exists('block_auto_update_theme', $wp_auto_updates)) {
201 add_filter('auto_update_theme', '__return_false' );
202 add_filter('themes_auto_update_enabled', '__return_false' );
203 }
204 if (array_key_exists('block_auto_update_plugin', $wp_auto_updates)) {
205 add_filter('auto_update_plugin', '__return_false' );
206 add_filter('plugins_auto_update_enabled', '__return_false' );
207 }
208 if (array_key_exists('block_auto_update_translation', $wp_auto_updates)) {
209 add_filter('auto_update_translation', '__return_false' );
210 }
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
232 }
233
234 if (is_admin()) {
235 add_filter('site_transient_update_plugins', array($wpadmin, 'hidePluginUpdate'));
236 }
237
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##
253