PluginProbe
The WP Remote WordPress Plugin / 5.88
The WP Remote WordPress Plugin v5.88
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
wpremote / plugin.php

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

320 lines 12.0 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: 5.88
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_2fa/wp_2fa.php';
44
45 require_once dirname( __FILE__ ) . '/wp_login_whitelabel.php';
46
47 ##WPCACHEMODULE##
48
49
50 $bvsettings = new WPRWPSettings();
51 $bvsiteinfo = new WPRWPSiteInfo();
52 $bvdb = new WPRWPDb();
53
54
55 $bvapi = new WPRWPAPI($bvsettings);
56 $bvinfo = new WPRInfo($bvsettings);
57 $wp_action = new WPRWPAction($bvsettings, $bvsiteinfo, $bvapi);
58
59 register_uninstall_hook(__FILE__, array('WPRWPAction', 'uninstall'));
60 register_activation_hook(__FILE__, array($wp_action, 'activate'));
61 register_deactivation_hook(__FILE__, array($wp_action, 'deactivate'));
62
63
64 add_action('wp_footer', array($wp_action, 'footerHandler'), 100);
65 add_action('wpr_clear_bv_services_config', array($wp_action, 'clear_bv_services_config'));
66
67 ##SOADDUNINSTALLACTION##
68
69 ##DISABLE_OTHER_OPTIMIZATION_PLUGINS##
70
71 ##WPCLIMODULE##
72 if (is_admin()) {
73 require_once dirname( __FILE__ ) . '/wp_admin.php';
74 $wpadmin = new WPRWPAdmin($bvsettings, $bvsiteinfo);
75 add_action('admin_init', array($wpadmin, 'initHandler'));
76 add_filter('all_plugins', array($wpadmin, 'initWhitelabel'));
77 add_filter('plugin_row_meta', array($wpadmin, 'hidePluginDetails'), 10, 2);
78 add_filter('debug_information', array($wpadmin, 'handlePluginHealthInfo'), 10, 1);
79 if ($bvsiteinfo->isMultisite()) {
80 add_action('network_admin_menu', array($wpadmin, 'menu'));
81 } else {
82 add_action('admin_menu', array($wpadmin, 'menu'));
83 }
84 add_filter('plugin_action_links', array($wpadmin, 'settingsLink'), 10, 2);
85 add_action('admin_head', array($wpadmin, 'removeAdminNotices'), 3);
86 ##POPUP_ON_DEACTIVATION##
87 add_action('admin_notices', array($wpadmin, 'activateWarning'));
88 add_action('admin_enqueue_scripts', array($wpadmin, 'wprsecAdminMenu'));
89 ##ALPURGECACHEFUNCTION##
90 ##ALADMINMENU##
91 }
92
93 if ((array_key_exists('bvreqmerge', $_POST)) || (array_key_exists('bvreqmerge', $_GET))) { // phpcs:ignore WordPress.Security.NonceVerification.Missing, WordPress.Security.NonceVerification.Recommended
94 $_REQUEST = array_merge($_GET, $_POST); // phpcs:ignore WordPress.Security.NonceVerification.Missing, WordPress.Security.NonceVerification.Recommended
95 }
96
97 #Service active check
98 if ($bvinfo->config != false) {
99 add_action('wpr_remove_bv_preload_include', array($wp_action, 'removeBVPreload'));
100 }
101
102 require_once dirname( __FILE__ ) . '/php_error_monitoring/monitoring.php';
103 WPRWPPHPErrorMonitoring::init();
104
105 if ($bvinfo->hasValidDBVersion()) {
106 if ($bvinfo->isServiceActive('activity_log')) {
107 require_once dirname( __FILE__ ) . '/wp_actlog.php';
108 $bvconfig = $bvinfo->config;
109 $actlog = new BVWPActLog($bvdb, $bvsettings, $bvinfo, $bvconfig['activity_log']);
110 $actlog->init();
111 }
112
113 if ($bvinfo->isServiceActive('maintenance_mode')) {
114 require_once dirname( __FILE__ ). '/maintenance/wp_maintenance.php';
115 $bvconfig = $bvinfo->config;
116 $maintenance = new BVWPMaintenance($bvconfig['maintenance_mode']);
117 $maintenance->init();
118 }
119
120 }
121
122 if ((array_key_exists('bvplugname', $_REQUEST)) && ($_REQUEST['bvplugname'] == "wpremote")) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
123 require_once dirname( __FILE__ ) . '/callback/base.php';
124 require_once dirname( __FILE__ ) . '/callback/response.php';
125 require_once dirname( __FILE__ ) . '/callback/request.php';
126 require_once dirname( __FILE__ ) . '/recover.php';
127
128 // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.NonceVerification.Recommended
129 $pubkey = isset($_REQUEST['pubkey']) ? WPRAccount::sanitizeKey(wp_unslash($_REQUEST['pubkey'])) : '';
130
131 if (array_key_exists('rcvracc', $_REQUEST)) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
132 $account = WPRRecover::find($bvsettings, $pubkey);
133 } else {
134 $account = WPRAccount::find($bvsettings, $pubkey);
135 }
136
137 $request = new BVCallbackRequest($account, $_REQUEST, $bvsettings); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
138 $response = new BVCallbackResponse($request->bvb64cksize);
139
140 if ($request->authenticate() === 1) {
141 if (array_key_exists('bv_ignr_frm_cptch', $_REQUEST)) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
142 #handling of Contact Forms 7
143 add_filter('wpcf7_skip_spam_check', '__return_true', PHP_INT_MAX, 2);
144
145 #handling of Formidable plugin
146 add_filter('frm_is_field_hidden', '__return_true', PHP_INT_MAX, 3);
147
148 #handling of WP Forms plugin
149 add_filter('wpforms_process_bypass_captcha', '__return_true', PHP_INT_MAX, 3);
150
151 #handling of Forminator plugin
152 if (defined('WP_PLUGIN_DIR')) {
153 $abstractFrontActionFilePath = WP_PLUGIN_DIR . '/forminator/library/abstracts/abstract-class-front-action.php';
154 $frontActionFilePath = WP_PLUGIN_DIR . '/forminator/library/modules/custom-forms/front/front-action.php';
155
156 if (file_exists($abstractFrontActionFilePath) && file_exists($frontActionFilePath)) {
157 require_once $abstractFrontActionFilePath;
158 require_once $frontActionFilePath;
159 if (class_exists('Forminator_CForm_Front_Action')) {
160 Forminator_CForm_Front_Action::$hidden_fields[] = "bv-stripe-";
161 }
162 }
163 }
164
165 #handling of CleanTalk Antispam plugin
166 add_action('init', function() {
167 global $apbct;
168 if (isset($apbct) && is_object($apbct)) {
169 $apbct->settings['forms__contact_forms_test'] = 0;
170 }
171 });
172
173 #handling of Akismet plugin
174 add_filter('akismet_get_api_key', function($api_key) { return null; }, PHP_INT_MAX);
175
176 #handling of Formidable Antispam
177 add_filter('frm_validate_entry', function($errors, $values, $args) {
178 unset($errors['spam']); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
179 return $errors;
180 }, PHP_INT_MAX, 3);
181
182 #handling of Gravity Form plugin
183 if (isset($_REQUEST['form_id'])) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
184 $form_id = sanitize_text_field(wp_unslash($_REQUEST['form_id'])); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
185 add_filter('gform_pre_validation_' . $form_id, function($form) {
186 foreach ($form['fields'] as &$field) {
187 if ($field['type'] === 'captcha') {
188 $field->visibility = 'hidden';
189 }
190 }
191 return $form;
192 }, PHP_INT_MAX, 1);
193 }
194
195 #handling of Ninja Form plugin
196 add_filter('ninja_forms_pre_validate_field_settings', function($field_settings) {
197 if (isset($field_settings['type']) && in_array($field_settings['type'], array('recaptcha', 'spam'), true)) {
198 $field_settings['type'] = null;
199 }
200
201 return $field_settings;
202 }, PHP_INT_MAX, 1);
203
204 add_filter('ninja_forms_run_action_type_recaptcha', '__return_false', PHP_INT_MAX);
205 }
206
207 if (array_key_exists('bv_ignr_eml', $_REQUEST)) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
208 #handling of Gravity Form's Email
209 add_filter('gform_pre_send_email', function($email_data) {
210 $email_data['abort_email'] = true;
211 return $email_data;
212 }, PHP_INT_MAX, 1);
213
214 #handling of Ninja Form's Email
215 add_filter('ninja_forms_action_email_send', '__return_true', PHP_INT_MAX);
216
217 #handling of Contact Form 7's Email
218 add_action('wpcf7_before_send_mail', function($contact_form, &$abort) { $abort = true; }, PHP_INT_MAX, 2);
219
220 #handling of WP Form's Email
221 add_filter('wpforms_entry_email', '__return_false', PHP_INT_MAX);
222
223 #handling of Formidable Form's Email
224 add_filter('frm_send_email', '__return_false', PHP_INT_MAX);
225
226 #handling of Forminator Form's Email
227 foreach (['poll', 'quiz', 'form'] as $type) {
228 add_filter("forminator_{$type}_get_admin_email_recipients", function() {
229 return [];
230 }, PHP_INT_MAX);
231 }
232 }
233
234 if (!array_key_exists('bv_ignr_frm_cptch', $_REQUEST) && !array_key_exists('bv_ignr_eml', $_REQUEST)) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
235 define('WPRBASEPATH', plugin_dir_path(__FILE__));
236
237
238 require_once dirname( __FILE__ ) . '/callback/handler.php';
239
240 $params = $request->processParams($_REQUEST); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
241 if ($params === false) {
242 $response->terminate($request->corruptedParamsResp());
243 }
244 $request->params = $params;
245 $callback_handler = new BVCallbackHandler($bvdb, $bvsettings, $bvsiteinfo, $request, $account, $response);
246 if ($request->is_afterload) {
247 add_action('wp_loaded', array($callback_handler, 'execute'));
248 } else if ($request->is_admin_ajax) {
249 add_action('wp_ajax_bvadm', array($callback_handler, 'bvAdmExecuteWithUser'));
250 add_action('wp_ajax_nopriv_bvadm', array($callback_handler, 'bvAdmExecuteWithoutUser'));
251 } else {
252 $callback_handler->execute();
253 }
254 }
255 } else {
256 $response->terminate($request->authFailedResp());
257 }
258 } else {
259 if ($bvinfo->hasValidDBVersion()) {
260 if ($bvinfo->isProtectModuleEnabled()) {
261 require_once dirname( __FILE__ ) . '/protect/protect.php';
262 //For backward compatibility.
263 WPRProtect_V588::$settings = new WPRWPSettings();
264 WPRProtect_V588::$db = new WPRWPDb();
265 WPRProtect_V588::$info = new WPRInfo(WPRProtect_V588::$settings);
266
267 add_action('wpr_clear_pt_config', array('WPRProtect_V588', 'uninstall'));
268
269 if ($bvinfo->isActivePlugin()) {
270 WPRProtect_V588::init(WPRProtect_V588::MODE_WP);
271 }
272 }
273
274 if ($bvinfo->isDynSyncModuleEnabled()) {
275 require_once dirname( __FILE__ ) . '/wp_dynsync.php';
276 $bvconfig = $bvinfo->config;
277 $dynsync = new BVWPDynSync($bvdb, $bvsettings, $bvconfig['dynsync']);
278 $dynsync->init();
279 }
280
281 }
282 $bv_site_settings = $bvsettings->getOption('bv_site_settings');
283 if (isset($bv_site_settings)) {
284 if (isset($bv_site_settings['wp_auto_updates'])) {
285 $wp_auto_updates = $bv_site_settings['wp_auto_updates'];
286 if (array_key_exists('block_auto_update_core', $wp_auto_updates)) {
287 add_filter('auto_update_core', '__return_false' );
288 }
289 if (array_key_exists('block_auto_update_theme', $wp_auto_updates)) {
290 add_filter('auto_update_theme', '__return_false' );
291 add_filter('themes_auto_update_enabled', '__return_false' );
292 }
293 if (array_key_exists('block_auto_update_plugin', $wp_auto_updates)) {
294 add_filter('auto_update_plugin', '__return_false' );
295 add_filter('plugins_auto_update_enabled', '__return_false' );
296 }
297 if (array_key_exists('block_auto_update_translation', $wp_auto_updates)) {
298 add_filter('auto_update_translation', '__return_false' );
299 }
300 }
301 }
302
303 if (is_admin()) {
304 add_filter('site_transient_update_plugins', array($wpadmin, 'hidePluginUpdate'));
305 }
306
307 ##THIRDPARTYCACHINGMODULE##
308 }
309
310 if (WPRWP2FA::isEnabled($bvsettings)) {
311 $wp_2fa = new WPRWP2FA();
312 $wp_2fa->init();
313 }
314
315 if (!empty($bvinfo->getLPWhitelabelInfo())) {
316 $wp_login_whitelabel = new WPRWPLoginWhitelabel();
317 $wp_login_whitelabel->init();
318 }
319
320 add_action('wpr_clear_wp_2fa_config', array($wp_action, 'clear_wp_2fa_config'));