Google Authenticator – WordPress Two Factor Authentication (2FA) - Version 5.4.34

Version Description

Download this release

Release Info

Developer cyberlord92
Plugin Icon 128x128 Google Authenticator – WordPress Two Factor Authentication (2FA)
Version 5.4.34
Comparing to
See all releases

Code changes from version 5.5.1 to 5.4.34

Files changed (108) hide show
  1. api/Mo2f_OnPremRedirect.php +3 -3
  2. api/class-customer-common-setup.php +1 -63
  3. changelog.txt +0 -718
  4. controllers/account.php +1 -1
  5. controllers/dashboard.php +1 -1
  6. controllers/feedback_footer.php +22 -0
  7. controllers/main_controller.php +76 -51
  8. controllers/navbar.php +1 -2
  9. controllers/request_christmas_offer.php +0 -48
  10. controllers/request_demo.php +0 -51
  11. controllers/request_offer.php +1 -1
  12. controllers/support.php +22 -3
  13. controllers/tour-model.php +0 -334
  14. controllers/tour/tour_ajax.php +0 -146
  15. controllers/trial.php +0 -91
  16. controllers/twofa/mo2fa_common_login.php +10 -107
  17. controllers/twofa/mo2fa_inline_registration.php +0 -31
  18. controllers/twofa/two_factor_ajax.php +12 -721
  19. controllers/upgrade.php +1 -2
  20. controllers/wpns-loginsecurity-ajax.php +7 -28
  21. database/database_functions_2fa.php +1 -5
  22. database/mo2f_db_options.php +0 -2
  23. handler/ajax.php +1 -13
  24. handler/logger.php +0 -2
  25. handler/login.php +31 -36
  26. handler/recaptcha.php +0 -4
  27. handler/twofa/class_miniorange_2fa_strong_password.php +1 -1
  28. handler/twofa/gaonprem.php +2 -8
  29. handler/twofa/setup_twofa.php +10 -28
  30. handler/twofa/two_fa_constants.php +0 -13
  31. handler/twofa/two_fa_login.php +12 -15
  32. handler/twofa/two_fa_pass2login.php +115 -236
  33. handler/twofa/two_fa_settings.php +69 -1107
  34. handler/twofa/two_fa_utility.php +24 -40
  35. handler/user-profile-2fa-update.php +0 -213
  36. handler/user-profile-2fa.php +0 -276
  37. helper/constants.php +1 -1
  38. helper/messages.php +1 -35
  39. helper/utility.php +4 -10
  40. includes/css/bootstrap.min.css +1 -14
  41. includes/css/button_styles.css +2 -2
  42. includes/css/christmas.gif +0 -0
  43. includes/css/datetime-style-settings.css +576 -0
  44. includes/css/datetime-style-settings.min.css +1 -0
  45. includes/css/hide-login-form.css +0 -3
  46. includes/css/jquery-ui.min.css +4 -1
  47. includes/css/jquery.ui.css +175 -0
  48. includes/css/popup.css +2 -2
  49. includes/css/style_settings.css +309 -403
  50. includes/css/twofa_style_settings.css +1 -13
  51. includes/css/upgrade.css +47 -728
  52. includes/css/user-profile.css +0 -179
  53. includes/email-New-release.php +243 -553
  54. includes/images/firebase.png +0 -0
  55. includes/js/mo2fa_elementor.js +0 -122
  56. includes/js/pointers.js +3 -3
  57. includes/js/settings_page.js +4 -37
  58. includes/js/setup-wizard-2fa.js +9 -7
  59. includes/js/skip_tour.js +0 -19
  60. includes/js/user-profile-twofa.js +0 -194
  61. includes/lib/mo-2fa-options-enum.php +435 -0
  62. miniorange_2_factor_settings.php +21 -67
  63. readme.txt +944 -329
  64. uninstall.php +5 -18
  65. views/addons.php +13 -13
  66. views/advanced-blocking.php +56 -36
  67. views/backup/backup.php +40 -28
  68. views/backup/backup_created_report.php +3 -6
  69. views/backup/backup_schdule.php +1 -1
  70. views/backup/backup_setting_view.php +2 -2
  71. views/dashboard.php +5 -16
  72. views/email-IPaddress.php +6 -7
  73. views/feedback_footer.php +118 -12
  74. views/ip-blocking.php +1 -1
  75. views/login-security.php +3 -3
  76. views/login_spam.php +48 -40
  77. views/malware_scanner/malware_scan.php +67 -50
  78. views/malware_scanner/scan_report_view.php +2 -6
  79. views/malware_scanner/scan_settings_view.php +1 -1
  80. views/malware_scanner/scan_summary_view.php +4 -4
  81. views/navbar.php +52 -35
  82. views/network_security_features.php +1 -1
  83. views/request_christmas_offer.php +0 -36
  84. views/request_demo.php +0 -47
  85. views/request_offer.php +8 -9
  86. views/support.php +155 -61
  87. views/tour-model.php +0 -197
  88. views/trial.php +0 -56
  89. views/twofa/setup/setup_duo_authenticator.php +1 -3
  90. views/twofa/setup/setup_google_authenticator.php +1 -2
  91. views/twofa/setup/setup_google_authenticator_onpremise.php +2 -103
  92. views/twofa/setup/setup_kba_questions.php +10 -12
  93. views/twofa/setup/setup_miniorange_authenticator.php +1 -1
  94. views/twofa/setup_twofa.php +20 -18
  95. views/twofa/two_fa.php +82 -78
  96. views/twofa/two_fa_addon.php +3 -3
  97. views/twofa/two_fa_custom_form.php +120 -122
  98. views/twofa/two_fa_custom_login.php +6 -6
  99. views/twofa/two_fa_login_option.php +87 -118
  100. views/twofa/two_fa_premium_feature.php +2 -2
  101. views/twofa/two_fa_rba.php +4 -4
  102. views/twofa/two_fa_session_control.php +4 -3
  103. views/twofa/two_fa_setup_notification.php +1 -1
  104. views/twofa/two_fa_shortcode.php +2 -2
  105. views/twofa/two_fa_unlimittedUser.php +20 -58
  106. views/upgrade.php +427 -367
  107. views/upgrade_2fa_lite.php +1 -1
  108. views/waf.php +100 -70
api/Mo2f_OnPremRedirect.php CHANGED
@@ -68,7 +68,7 @@ class Mo2f_OnPremRedirect {
68
  return $content;
69
  case "EMAIL":
70
 
71
- case "OTP Over Email": $content = $this->OnpremOTPOverEMail($currentuser,$useremail);
72
  return $content;
73
  case "KBA": $content = $this->OnpremSecurityQuestions($currentuser);
74
  return $content;
@@ -104,9 +104,9 @@ class Mo2f_OnPremRedirect {
104
  $content=$gauth_obj->verifyCode($secret, $otpToken);
105
  return $content;
106
  }
107
- function OnpremOTPOverEMail($current_user,$useremail=false)
108
  {
109
- return $this->OnpremSendOTPEMail($current_user,'mo2f_otp_email_code','mo2f_otp_email_time',$useremail);
110
  }
111
  function OnpremSendOTPEMail($current_user,$tokenName,$timeName,$email=null)
112
  {
68
  return $content;
69
  case "EMAIL":
70
 
71
+ case "OTP Over Email": $content = $this->OnpremOTPOverEMail($currentuser);
72
  return $content;
73
  case "KBA": $content = $this->OnpremSecurityQuestions($currentuser);
74
  return $content;
104
  $content=$gauth_obj->verifyCode($secret, $otpToken);
105
  return $content;
106
  }
107
+ function OnpremOTPOverEMail($current_user)
108
  {
109
+ return $this->OnpremSendOTPEMail($current_user,'mo2f_otp_email_code','mo2f_otp_email_time');
110
  }
111
  function OnpremSendOTPEMail($current_user,$tokenName,$timeName,$email=null)
112
  {
api/class-customer-common-setup.php CHANGED
@@ -301,69 +301,6 @@ class Customer_Cloud_Setup {
301
  return $content;
302
  }
303
 
304
- public function mo_2f_generate_backup_codes($mo2f_user_email,$site_url){
305
-
306
-
307
- $url = 'https://sitestats.xecurify.com/backupcodeservice/index.php';
308
-
309
- $headers = array('header' => "Authorization:Basic" . base64_encode("$mo2f_user_email:$site_url") );
310
-
311
- $postdata = array('mo2f_email'=> $mo2f_user_email,
312
- 'mo2f_domain' =>$site_url,
313
- 'headers'=>$headers['header'],
314
- 'mo2f_generate_backup_codes'=>'initiated_backup_codes');
315
-
316
- $handle = curl_init();
317
-
318
- curl_setopt_array($handle,
319
- array(
320
- CURLOPT_URL => $url,
321
- CURLOPT_POST => true,
322
- CURLOPT_POSTFIELDS => $postdata,
323
- CURLOPT_RETURNTRANSFER => true,
324
- CURLOPT_SSL_VERIFYHOST => FALSE,
325
- CURLOPT_SSL_VERIFYPEER => FALSE,
326
- )
327
- );
328
-
329
- $data = curl_exec($handle);
330
-
331
- curl_close($handle);
332
- return $data;
333
-
334
- }
335
-
336
- public function mo2f_validate_backup_codes($mo2f_backup_code,$mo2f_user_email){
337
- $url = 'https://sitestats.xecurify.com/backupcodeservice/backup_code_validation.php';
338
-
339
- $site_url = site_url();
340
- $headers = array('header' => "Authorization:Basic" . base64_encode("$mo2f_user_email:$site_url") );
341
-
342
- $postdata = array('mo2f_otp_token' => $mo2f_backup_code,
343
- 'mo2f_user_email'=> $mo2f_user_email,
344
- 'headers'=>$headers['header'],
345
- 'mo2f_site_url' => $site_url);
346
-
347
- $handle = curl_init();
348
-
349
- curl_setopt_array($handle,
350
- array(
351
- CURLOPT_URL => $url,
352
- CURLOPT_POST => true,
353
- CURLOPT_POSTFIELDS => $postdata,
354
- CURLOPT_RETURNTRANSFER => true,
355
- CURLOPT_SSL_VERIFYHOST => FALSE,
356
- CURLOPT_SSL_VERIFYPEER => FALSE,
357
- )
358
- );
359
-
360
- $data = curl_exec($handle);
361
-
362
- curl_close($handle);
363
-
364
- return $data;
365
- }
366
-
367
 
368
  function validate_otp_token( $authType, $username, $transactionId, $otpToken, $cKey, $customerApiKey, $current_user =null) {
369
  $content='';
@@ -424,6 +361,7 @@ class Customer_Cloud_Setup {
424
 
425
 
426
  $content = $mo2fApi->make_curl_call( $url, $field_string, $headers );
 
427
  return $content;
428
  }
429
 
301
  return $content;
302
  }
303
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
304
 
305
  function validate_otp_token( $authType, $username, $transactionId, $otpToken, $cKey, $customerApiKey, $current_user =null) {
306
  $content='';
361
 
362
 
363
  $content = $mo2fApi->make_curl_call( $url, $field_string, $headers );
364
+
365
  return $content;
366
  }
367
 
changelog.txt DELETED
@@ -1,718 +0,0 @@
1
- === miniOrange's Google Authenticator - WordPress Two Factor Authentication (2FA , MFA, OTP SMS and Email) | Passwordless login ===
2
-
3
- == Archived Changelog Entries ==
4
-
5
- This file contains older changelog entries, so we can keep the size of the standard WordPress readme.txt file reasonable.
6
- For the latest changes, please refer to the "Changelog" section in the [readme.txt file](https://plugins.svn.wordpress.org/miniorange-2-factor-authentication/trunk/readme.txt).
7
-
8
- = 5.5.1 =
9
- * Google Authenticator - Two factor Authentication (2FA, OTP) :
10
- * Updated Pricing page UI
11
-
12
- = 5.5 =
13
- * Google Authenticator - Two factor Authentication (2FA, OTP) :
14
- * Updated Network Security UI
15
-
16
- = 5.4.52 =
17
- * Google Authenticator - Two factor Authentication (2FA, OTP) :
18
- * Updated Trial Request Form
19
-
20
- = 5.4.51 =
21
- * Google Authenticator - Two factor Authentication (2FA, OTP) :
22
- * Trial notification visibility issue fixed
23
-
24
- = 5.4.50 =
25
- * Google Authenticator - Two factor Authentication (2FA, OTP) :
26
- * Bug fix - Headers already sent
27
-
28
- = 5.4.49 =
29
- * Google Authenticator - Two factor Authentication (2FA, OTP) :
30
- * Trial Notification for Premium Plugins
31
- * CSRF Fix
32
-
33
- = 5.4.48 =
34
- * Google Authenticator - Two factor Authentication (2FA, OTP) :
35
- * Close button on offer banner
36
-
37
- = 5.4.47 =
38
- * Google Authenticator - Two factor Authentication (2FA, OTP) :
39
- * Christmas offer
40
-
41
- = 5.4.46 =
42
- * Google Authenticator - Two factor Authentication (2FA, OTP) :
43
- * Black friday offer
44
- * Get email notification on the plugin's new release
45
-
46
- = 5.4.45 =
47
- * Google Authenticator - Two factor Authentication (2FA, OTP) :
48
- * Added login with the any configured methods
49
- * Minor bug fix
50
-
51
- = 5.4.44 =
52
- * Google Authenticator - Two factor Authentication (2FA, OTP) :
53
- * Added link to WordPress forum in support form
54
- * Minor bug fix
55
-
56
- = 5.4.43 =
57
- * Google Authenticator - Two factor Authentication (2FA, OTP) :
58
- * Special offer - Special discount for limited time
59
-
60
- = 5.4.42 =
61
- * Google Authenticator - Two factor Authentication (2FA, OTP) :
62
- * Backup Code as a cloud service
63
-
64
- = 5.4.41 =
65
- * Google Authenticator - Two factor Authentication (2FA, OTP) :
66
- * Minor UI Changes and Bug Fixes
67
-
68
- = 5.4.40 =
69
- * Google Authenticator - Two factor Authentication (2FA, OTP) :
70
- * XSS Vulnerability fix
71
- * Added video link for miniOrange Authenticator
72
-
73
- = 5.4.39 =
74
- * Google Authenticator - Two factor Authentication (2FA, OTP) :
75
- * Added 2FA setup using user profile option
76
- * Support Form UI
77
- * 2FA Form support for login with ajax, Elementor Pro, UserPro login forms
78
- * Minor bug fixes
79
-
80
- = 5.4.38 =
81
- * Google Authenticator - Two factor Authentication (2FA, OTP) :
82
- * Added 2FA setup using user profile option
83
- * Setup Wizard for configuring 2FA
84
- * 2FA Form support for login with ajax, Elementor Pro, UserPro login forms
85
- * Minor bug fixes
86
-
87
- = 5.4.37 =
88
- * Google Authenticator - Two factor Authentication (2FA, OTP) :
89
- * Minor bug fixes
90
-
91
- = 5.4.36 =
92
- * Google Authenticator - Two Factor Authentication (2FA, OTP) :
93
- * Remove extra comma
94
-
95
- = 5.4.35 =
96
- * Google Authenticator - Two Factor Authentication (2FA, OTP) :
97
- * Minor bug fixes
98
-
99
- = 5.4.34 =
100
- * Google Authenticator - Two Factor Authentication (2FA, OTP) :
101
- * New User Interface for easy setup
102
- * Added developers logs
103
- * Minor fixes
104
-
105
- = 5.4.33 =
106
- * Google Authenticator – Two Factor Authentication (2FA, TFA) :
107
- * New pricing page for two factor authentication
108
- * Added Duo Authenticator push notification method.
109
- * WooCommerce redirect issue fix.
110
-
111
- = 5.4.32 =
112
- * Google Authenticator – Two Factor Authentication (2FA, TFA) :
113
- * Replaced sessions with transient.
114
-
115
- = 5.4.31 =
116
- * Google Authenticator - Two Factor Authentication (2FA, OTP) :
117
- * OTP over Email as two factor fix
118
- * Low Email transaction alert fix
119
-
120
- = 5.4.30 =
121
- * Google Authenticator - Two Factor Authentication (2FA, OTP) :
122
- * Feedback changes
123
-
124
- = 5.4.29 =
125
- * Google Authenticator - Two Factor Authentication (2FA, OTP) :
126
- * Session independent Google Authenticator
127
- * Session independent KBA
128
- * Feedback improvement for two factor authentication plugin
129
-
130
- = 5.4.28 =
131
- * Google Authenticator - Two Factor Authentication (2FA, OTP) :
132
- * New year sale update
133
-
134
- = 5.4.27 =
135
- * Google Authenticator - Two Factor Authentication (2FA, OTP) :
136
- * New year sale
137
- * WordPress 5.6 compatibility fix
138
- * WAF fixes
139
- * Real time IP blocking
140
- * IP based user login
141
- * New feature release notification
142
-
143
- = 5.4.26 =
144
- * Google Authenticator - Two Factor Authentication (2FA, OTP) :
145
- * Christmas Offer
146
-
147
- = 5.4.25 =
148
- * Google Authenticator - Two Factor Authentication (2FA, OTP) :
149
- * OTP over Telegram Fixes
150
-
151
- = 5.4.24 =
152
- * Google Authenticator - Two Factor Authentication (2FA, OTP) :
153
- * OTP over Whatsapp
154
- * OTP over Telegram
155
- * Feedback form changes
156
-
157
- = 5.4.23 =
158
- * Google Authenticator - Two Factor Authentication (2FA, OTP) :
159
- * Call support with technical team
160
- * Email and SMS transaction sync
161
- * Feedback form on network deactivate
162
- * Enable/Disable 2FA fix
163
- * 2FA added for super admin role
164
-
165
- = 5.4.22 =
166
- * Google Authenticator - Two Factor Authentication (2FA, OTP) :
167
- * Backup Codes
168
- * Sanitization and JS improvements
169
- * SMS and Email Sync
170
- * Whatsapp based Two factor in Premium plugin
171
- * Telegram based Two factor in Premium plugin
172
-
173
- = 5.4.21 =
174
- * Google Authenticator - Two Factor Authentication (2FA, SMS) :
175
- * Sanitization of some input values.
176
-
177
- = 5.4.20 =
178
- * Google Authenticator - Two Factor Authentication (2FA, SMS) :
179
- * Google Authenticator Qr code fix.
180
- * My theme login Login fix.
181
-
182
- = 5.4.19 =
183
- * Google Authenticator - Two Factor Authentication (2FA, OTP) : Google Authenticator cloud fix.
184
-
185
- = 5.4.18 =
186
- * Google Authenticator - Two Factor Authentication (2FA, OTP) :
187
- * Added missing file
188
-
189
- = 5.4.17 =
190
- * Google Authenticator - Two Factor Authentication (2FA, OTP) :
191
- *Digimember Form Support
192
- *Memberpress Form Support
193
- *SMS Verification Support
194
- *OTP Verification on WooCommerce Registration
195
-
196
- = 5.4.16 =
197
- * Google Authenticator - Two Factor Authentication (2FA, OTP) : Quick form fix.
198
-
199
- = 5.4.15 =
200
- * Google Authenticator - Two Factor Authentication (2FA, OTP) :
201
- * Theme My Login plugin Support
202
- * Ultimate Member Registration Support
203
- * WooCommerce Registration Support
204
- * Ultimate Member Redirect
205
- * Restrict Content Pro Login and Registration
206
-
207
- = 5.4.14 =
208
- * Google Authenticator - Two Factor Authentication (2FA, MFA) : Performance improvement with fixes in Security Questions. And User Email verification and Phone Verification issues resolved.
209
-
210
- = 5.4.13 =
211
- * Google Authenticator - Two Factor Authentication (2FA, TFA) : Support Form Improvement.
212
-
213
- = 5.4.11 =
214
- * Google Authenticator - Two Factor Authentication (2FA, MFA) : Feedback Issue fix.
215
-
216
- = 5.4.9 =
217
- * Google Authenticator - Two Factor Authentication (2FA, TFA) : User Experience, new support form and Security disabled by default. Added New Methods for users to choose.
218
-
219
- = 5.4.8 =
220
- * Google Authenticator - Two Factor Authentication (2FA, OTP Verification) : Learning Management System support, Microsoft Authenticator and Duo Authenticator support and restrict account sharing add-on.
221
-
222
- = 5.4.7 =
223
- * Google Authenticator - Two Factor Authentication (2FA, SMS Verification) : Fixing warnings and adding minor changes in the plans.
224
-
225
- = 5.4.6 =
226
- * Google Authenticator - Two Factor Authentication (2FA) : Improving Google Authenticator and adding Payment options.
227
-
228
- = 5.4.5 =
229
- * Google Authenticator - Two Factor Authentication (2FA, OTP) : Security and MFA UI updates.
230
-
231
- = 5.4.4 =
232
- * Google Authenticator - Two Factor Authentication (2FA, TFA) : Two Factor : WooCommerce login page integration.
233
-
234
- = 5.4.3 =
235
- * Google Authenticator - Two Factor Authentication (2FA, MFA) : Session issue fix for customers using Two Factor.
236
-
237
- = 5.4.2 =
238
- * Google Authenticator - Two Factor Authentication (2FA, MFA) : Warning for cloud customer moving to on-premise Two factor
239
-
240
- = 5.4.1 =
241
- * Google Authenticator - Two Factor Authentication (2FA) : Headers sent issue is security firewall.
242
-
243
- = 5.4.0 =
244
- * Google Authenticator - Two Factor Authentication (2FA) : Two Factor FAQ Fix and OTP code convenience.
245
-
246
- = 5.3.26 =
247
- * Google Authenticator - Two Factor Authentication (2FA) : Two Factor On-premise FAQ update.
248
-
249
- = 5.3.25 =
250
- * Google Authenticator - Two Factor Authentication (2FA) : Two Factor On-premise support form.
251
-
252
- = 5.3.24 =
253
- * Google Authenticator - Two Factor Authentication (2FA) : On-premise two factor released with multiple user support for some authentication methods.
254
-
255
- = 5.3.23 =
256
- * Google Authenticator - Two Factor Authentication (2FA) : Scanner : Timing and caching issue fix.
257
- * Disable 2fa on WooCommerce login.
258
- * Login with Username only fix.
259
-
260
- = 5.3.22 =
261
- * Google Authenticator - Two Factor Authentication (2FA) : Antivirus : Fixing Cache issues and adding nonce.
262
-
263
- = 5.3.21 =
264
- * Google Authenticator - Two Factor Authentication (2FA) : Two Factor : Choice between Two factor and Security.
265
-
266
- = 5.3.20 =
267
- * Google Authenticator - Two Factor Authentication (2FA) : Anti Malware : Fixing issue faced by users during scan.
268
-
269
- = 5.3.19 =
270
- * Google Authenticator - Two Factor Authentication (2FA) : Security : Giving users choice of two factor.
271
-
272
- = 5.3.18 =
273
- * Google Authenticator - Two Factor Authentication (2FA) : Antivirus and Firewall : Fix Scan.
274
-
275
- = 5.3.17 =
276
- * Google Authenticator - Two Factor Authentication (2FA) : Anti-Virus : Improved Stop Scan.
277
-
278
- = 5.3.16 =
279
- * Google Authenticator - Two Factor Authentication (2FA) : Anti-Virus : Stop Scan.
280
-
281
- = 5.3.15 =
282
- * Google Authenticator - Two Factor Authentication (2FA) : Anti-Malware : schedule scan.
283
-
284
- = 5.3.14 =
285
- * Google Authenticator - Two Factor Authentication (2FA) : Anti-Malware : Adding more signatures.
286
-
287
- = 5.3.13 =
288
- * Google Authenticator - Two Factor Authentication (2FA) : Security : fix UI Issue and improving 2fa.
289
-
290
- = 5.3.12 =
291
- * Google Authenticator - Two Factor Authentication (2FA) : Security : backup table fix.
292
-
293
- = 5.3.11 =
294
- * Google Authenticator - Two Factor Authentication (2FA) : Security : Limiting Firewall, Malware, backup and login security for users not needing it.
295
-
296
- = 5.3.10 =
297
- * Google Authenticator - Two Factor Authentication (2FA) : Security : Moved to Old WAF version minor issues..
298
-
299
- = 5.3.9 =
300
- * Google Authenticator - Two Factor Authentication (2FA) : Security : Web application Firewall Sql Injections report and monitoring.
301
-
302
- = 5.3.8 =
303
- * Google Authenticator - Two Factor Authentication (2FA) : Security : Malware Scanner Fix.
304
-
305
- = 5.3.7 =
306
- * Google Authenticator - Two Factor Authentication (2FA) : Security : Two factor login with username fix.
307
-
308
- = 5.3.6 =
309
- * Google Authenticator - Two Factor Authentication (2FA) : Anti virus zip file fix.
310
-
311
- = 5.3.5 =
312
- * Google Authenticator - Two Factor Authentication (2FA) : Backup URL Fix and space issue in google authenticator.
313
-
314
- = 5.3.4 =
315
- * Google Authenticator - Two Factor Authentication (2FA) : CSS fix for Malware Scanner, Security and firewall.
316
-
317
- = 5.3.3 =
318
- * Google Authenticator - Two Factor Authentication (2FA) : Minor Malware Scanner issues fix.
319
-
320
- = 5.3.2 =
321
- * Google Authenticator - Two Factor Authentication (2FA) : File Changes.
322
-
323
- = 5.3.1 =
324
- * Google Authenticator - Two Factor Authentication (2FA) : Bug fix.
325
-
326
- = 5.3.0 =
327
- * Google Authenticator - Two Factor Authentication (2FA) : Releasing Firewall with Two Factor.
328
-
329
- = 5.2.6 =
330
- * Google Authenticator - Two Factor Authentication (2FA) : Fixed conflict and filter issues.
331
-
332
- = 5.2.5 =
333
- * Google Authenticator - Two Factor Authentication (2FA) : Some warnings in remote posts.
334
-
335
- = 5.2.4 =
336
- * Google Authenticator - Two Factor Authentication (2FA) : Removed curl calls and unnecessary files.
337
-
338
- = 5.2.3 =
339
- * Google Authenticator - Two Factor Authentication (2FA) : Fix for some users facing issues in api calls.
340
-
341
- = 5.2.2 =
342
- * Google Authenticator - Two Factor Authentication (2FA) : Adding File Protection and Strong Password feature.
343
- :
344
- = 5.2.1 =
345
- * Google Authenticator - Two Factor Authentication (2FA) : UI changes for description.
346
-
347
- = 5.2.0 =
348
- * Google Authenticator - Two Factor Authentication (2FA) : UI changes with more description.
349
-
350
- = 5.1.22 =
351
- * Google Authenticator - Two Factor Authentication (2FA) : UI Fixes.
352
-
353
- = 5.1.21 =
354
- * Google Authenticator - Two Factor Authentication (2FA) : Login Redirect.
355
-
356
- = 5.1.20 =
357
- * Google Authenticator - Two Factor Authentication (2FA) : Minor Bug fix.
358
-
359
- = 5.1.19 =
360
- * Google Authenticator - Two Factor Authentication (2FA) : Adding basic Security Features Monitoring, IP blocking and login transaction report.
361
-
362
- = 5.1.18 =
363
- * Google Authenticator - Two Factor Authentication (2FA) : Object access error for lower PHP versions.
364
-
365
- = 5.1.17 =
366
- * Google Authenticator - Two Factor Authentication (2FA) : Minor Bug fix and Documentation changes.
367
-
368
- = 5.1.16 =
369
- * Google Authenticator - Two Factor Authentication (2FA) : Login redirect fix.
370
-
371
- = 5.1.15 =
372
- * Google Authenticator - Two Factor Authentication (2FA) : UI Fixes.
373
-
374
- = 5.1.14 =
375
- * Google Authenticator - Two Factor Authentication (2FA) : Database Error Fix and Custom Redirect.
376
-
377
- = 5.1.12 =
378
- * Google Authenticator - Two Factor Authentication (2FA) : Removing redundant code.
379
-
380
- = 5.1.11 =
381
- * Google Authenticator - Two Factor Authentication (2FA) : Password Pattern Fix.
382
-
383
- = 5.1.10 =
384
- * Google Authenticator - Two Factor Authentication (2FA) : Javascript Error fixes.
385
-
386
- = 5.1.9 =
387
- * Google Authenticator - Two Factor Authentication (2FA) : Added visual tour and security fixes.
388
-
389
- = 5.1.8 =
390
- * Google Authenticator - Two Factor Authentication (2FA) : Bug fix for Validation.
391
-
392
- = 5.1.7 =
393
- * Google Authenticator - Two Factor Authentication (2FA) : Bug fix for DB error after Update.
394
-
395
- = 5.1.6 =
396
- * Google Authenticator - Two Factor Authentication (2FA) : Bug fix for DB error.
397
-
398
- = 5.1.5 =
399
- * Google Authenticator - Two Factor Authentication (2FA) : UI changes.
400
-
401
- = 5.1.4 =
402
- * Google Authenticator - Two Factor Authentication (2FA) : Bug fixes for redirect to login page issues.
403
-
404
- = 5.1.3 =
405
- * Google Authenticator - Two Factor Authentication (2FA) : Minor bug fixes.
406
-
407
- = 5.1.2 =
408
- * Google Authenticator - Two Factor Authentication (2FA) : Changes in registration flow.
409
-
410
- = 5.1.1 =
411
- * Google Authenticator - Two Factor Authentication (2FA) : Minor changes.
412
-
413
- = 5.1.0 =
414
- * Google Authenticator - Two Factor Authentication (2FA) : Added new user plans
415
-
416
- = 5.0.17 =
417
- * Google Authenticator - Two Factor Authentication (2FA) : Minor Bug fix.
418
-
419
- = 5.0.16 =
420
- * Google Authenticator - Two Factor Authentication (2FA) : Bug fixes.
421
-
422
- = 5.0.15 =
423
- * Google Authenticator - Two Factor Authentication (2FA) : Added Google Authenticator option in the WP login page itself.
424
-
425
- = 5.0.14 =
426
- * Google Authenticator - Two Factor Authentication (2FA) : Bug Fixes.
427
-
428
- = 5.0.13 =
429
- * Google Authenticator - Two Factor Authentication (2FA) : Bug Fix and code optimization.
430
-
431
- = 5.0.12 =
432
- * Google Authenticator - Two Factor Authentication (2FA) : Added GDPR Compliance.
433
-
434
- = 5.0.11 =
435
- * Google Authenticator - Two Factor Authentication (2FA) : Readme Update.
436
-
437
- = 5.0.10 =
438
- * Google Authenticator - Two Factor Authentication (2FA) : Added Proxy Setup feature.
439
-
440
- = 5.0.9 =
441
- * Google Authenticator - Two Factor Authentication (2FA) : Bug Fix for "The loopback request to your site failed." error.
442
-
443
- = 5.0.8 =
444
- * Google Authenticator - Two Factor Authentication (2FA) : Changes for 2FA Free plugin for 1 user forever.
445
-
446
- = 5.0.7 =
447
- * Google Authenticator - Two Factor Authentication (2FA) : Bug Fix for User Registration and other plugin conflicts in Dashboard.
448
-
449
- = 5.0.6 =
450
- * Google Authenticator - Two Factor Authentication (2FA) : Bug Fix for existing customers who upgraded from 4.5.x version to versions between 5.0.0 and 5.0.4 and are facing issues with the Account Setup Tab.
451
-
452
- = 5.0.5 =
453
- * Google Authenticator - Two Factor Authentication (2FA) : Bug fix for user entry during plugin update.
454
-
455
- = 5.0.4 =
456
- * Google Authenticator - Two Factor Authentication (2FA) : Workaround for errors during sending of OTP during registration.
457
-
458
- = 5.0.3 =
459
- * Google Authenticator - Two Factor Authentication (2FA) : Minor fix for removing warings.
460
-
461
- = 5.0.2 =
462
- * Google Authenticator - Two Factor Authentication (2FA) : Bug fix.
463
-
464
- = 5.0.1 =
465
- * Google Authenticator - Two Factor Authentication (2FA) : Bug fix.
466
-
467
- = 5.0.0 =
468
- * Google Authenticator - Two Factor Authentication (2FA) : New UI Interface, 2-factor authentication for Unlimited Users.
469
- * This is a major release.
470
-
471
- = 4.6.2 =
472
- * Google Authenticator - Two Factor Authentication (2FA) : Plugin registration fixes and minor warning fixes.
473
-
474
- = 4.6.1 =
475
- * Google Authenticator - Two Factor Authentication (2FA) : Login error fix. Please skip version 4.5.9 and update to version 4.6.1
476
-
477
- = 4.5.9 =
478
- * Google Authenticator - Two Factor Authentication (2FA) : Bug fixes for customers who were getting redirected to the login page after the two factor authentication.
479
-
480
- = 4.5.8 =
481
- * Google Authenticator - Two Factor Authentication (2FA) : Tested up to 4.9.4 and Removed External links.
482
-
483
- = 4.5.7 =
484
- * Google Authenticator - Two Factor Authentication (2FA) : Minor bug fixes.
485
-
486
- = 4.5.6 =
487
- * Google Authenticator - Two Factor Authentication (2FA) : Tested up to Wordpress 4.9.
488
-
489
- = 4.5.5 =
490
- * Google Authenticator - Two Factor Authentication (2FA) : 404 bug fixes.
491
-
492
- = 4.5.4 =
493
- * Google Authenticator - Two Factor Authentication (2FA) : Better UI of Login Pages, Fixed Redirection issue. Fixed the error in the last version (4.5.3) for the customers who were getting undefined action errors.
494
-
495
- = 4.5.3 =
496
- * Google Authenticator - Two Factor Authentication (2FA) : Changed UI of the Login Pages, Redirect to Login Page bug fixes.
497
-
498
- = 4.5.2 =
499
- * Google Authenticator - Two Factor Authentication (2FA) : Readme Update: Description Update
500
-
501
- = 4.5.1 =
502
- * Google Authenticator - Two Factor Authentication (2FA) : Updated the new Google Authenticator App's link and the 'How to Setup Tab' tab.
503
-
504
- = 4.5.0 =
505
- * Google Authenticator - Two Factor Authentication (2FA) : Fix Google Authenticator configuration issue.
506
-
507
- = 4.4.9 =
508
- * Google Authenticator - Two Factor Authentication (2FA) : Added Alert Message for SMS Transactions only when authentication method is OTP over SMS.
509
-
510
- = 4.4.8 =
511
- * Google Authenticator - Two Factor Authentication (2FA) : Added Alert Message for SMS Transactions. Fixed Remember Device flow and confliction with themes. Added support for multiple instances of wordpress.
512
-
513
- = 4.4.7 =
514
- * Google Authenticator - Two Factor Authentication (2FA) : Updated the error message for 2 factor configuration.
515
-
516
- = 4.4.6 =
517
- * Google Authenticator - Two Factor Authentication (2FA) : Instructions for login in case user get locked out.
518
-
519
- = 4.4.5 =
520
- * Google Authenticator - Two Factor Authentication (2FA) : Fixed the issue of session variable on the login with username page.
521
-
522
- = 4.4.4 =
523
- * Google Authenticator - Two Factor Authentication (2FA) : Added alert messages for OTP over SMS usages.
524
-
525
- = 4.4.3 =
526
- * Google Authenticator - Two Factor Authentication (2FA) : Fixed the login flow for third party Apps that supports XML-RPC.
527
-
528
- = 4.4 =
529
- * Google Authenticator - Two Factor Authentication (2FA):
530
- * Note: This is a very important update having altogether a new UI and compatibility with Limit Login Attempts. After updating, please do not logout from your admin dashboard. Try to login from another browser and if you face any issue , please contact us at info@xecurify.com
531
- * Compatibility with Limit Login Attempts.
532
- * New User Interface for login.
533
-
534
- = 4.3.2 =
535
- * Google Authenticator - Two Factor Authentication (2FA, MFA): Revised licensing cost for users.
536
-
537
- = 4.3.1 =
538
- * Google Authenticator - Two Factor Authentication (2FA, MFA): Compatible upto 4.7
539
-
540
- = 4.3.0 =
541
- * Google Authenticator - Two Factor Authentication (2FA, MFA): Updated miniOrange APIs.
542
-
543
- = 4.2.9 =
544
- * Google Authenticator - Two Factor Authentication (2FA, MFA): Tested up to WordPress 4.6.
545
-
546
- = 4.2.7 =
547
- * Google Authenticator - Two Factor Authentication (2FA, MFA): Session Warning fix in the last version for some of the users.
548
-
549
- = 4.2.6 =
550
- * Google Authenticator - Two Factor Authentication (2FA, MFA): Compatible with wordpress caching.
551
-
552
- = 4.2.5 =
553
- * Google Authenticator - Two Factor Authentication (2FA, MFA): Improved the session handler.
554
-
555
- = 4.2.4 =
556
- * Google Authenticator - Two Factor Authentication (2FA, MFA): Updated faq for limit login attempt type of plugins.
557
-
558
- = 4.2.3 =
559
- * Google Authenticator - Two Factor Authentication ( 2FA ):
560
- * Improved Error handling during Account Creation.
561
-
562
- = 4.2.2 =
563
- * Google Authenticator - Two Factor Authentication ( 2FA ):
564
- * Registration Flow fixes
565
-
566
- = 4.2.1 =
567
- * Google Authenticator - Two Factor Authentication ( 2FA ):
568
- * Change of status during login with phone flow and tested with WP 4.5
569
-
570
- = 4.2.0 =
571
- * Google Authenticator - Two Factor Authentication ( 2FA ):
572
- * Mark as tested on Wordpress 4.5
573
-
574
- = 4.1.8 =
575
- * Google Authenticator - Two Factor Authentication ( 2FA ):
576
- * Changed the location of images used for the demo. Now being loaded from the site having SSL certificate.
577
-
578
- = 4.1.7 =
579
- * Google Authenticator - Two Factor Authentication ( 2FA ):
580
- * Improved Error Handling for Remember Device.
581
-
582
- = 4.1.6 =
583
- * Google Authenticator - Two Factor Authentication ( 2 Factor ):
584
- * Licensing Plan Updated.
585
-
586
- = 4.1.5 =
587
- * Google Authenticator - Two Factor Authentication ( 2FA ):
588
- * Added Forgot Password functionality for miniOrange customer admin.
589
- * Added warning message for the users who are using lower version of php.
590
- * Added functionality to change the customer email.
591
-
592
- = 4.1.4 =
593
- * Google Authenticator - Two Factor Authentication ( 2FA ):
594
- * Added an option for admin to enable or disable login for XML-RPC supported applications.
595
-
596
- = 4.1.3 =
597
- * Google Authenticator - Two Factor Authentication ( 2FA ):
598
- * Fixed CSS Conflict with the plugins in the admin dashboard.
599
- * More intuitive UI for WooCommerce login.
600
- * Tested front-end login with themes like wordpress default theme,
601
- customize theme,zerif-lite theme,accesspress store theme,ishop theme and many more.
602
-
603
- = 4.1.2 =
604
- * Google Authenticator - Two Factor Authentication ( 2FA ): Google Authenticator for Windows phone
605
- * Fixed CSS conflict with front-end of site if WooCommerce is not enabled.
606
-
607
- = 4.1.1 =
608
- * Google Authenticator - Two Factor Authentication ( 2FA ): Adding Validation in choosing Security Questions (KBA).
609
-
610
- = 4.1.0 =
611
- * Google Authenticator - Two Factor Authentication ( 2FA ): Features added.
612
- multisite support
613
- Custom login redirection
614
- Authy 2-Factor Authentication as separate authentication method
615
-
616
- = 4.0.6 = Google Authenticator - Two Factor Authentication Added multisite support and custom redirection after login feature.
617
-
618
- = 4.0.5 = Google Authenticator - Two Factor Authentication Login into third party apps which support XML-RPC.
619
-
620
- = 4.0.4 = Google Authenticator - Two Factor Authentication Added a check of KBA configuration from mobile login.
621
-
622
- = 4.0.3 = Google Authenticator - Two Factor Authentication Added Support for Authy 2-Factor Authentication App.
623
-
624
- = 4.0.2 = Google Authenticator - Two Factor Authentication Added a check for selection of unique questions during KBA setup .
625
-
626
- = 4.0.1 = Bug Fix Google Authenticator - 2 Factor
627
-
628
- = 4.0 =
629
- * Google Authenticator - Two Factor Authentication ( 2FA ): Features added.
630
- * KBA as backup method.
631
- * mobile browser support.
632
- * more intuitive UI for WooCommerce login.
633
-
634
- = 3.8 =
635
- * Google Authenticator - Two Factor Authentication ( 2 Factor ): Bug Fix for roles.
636
-
637
- = 3.7 =
638
- * Google Authenticator - Two Factor Authentication ( 2FA ): Activation of two factor role wise.
639
-
640
- = 3.6 =
641
- * Google Authenticator - Two Factor Authentication ( 2FA ): email verification in inline registration flow for all users.
642
- More descriptive setup messages and UI changes.
643
-
644
- = 3.5 =
645
- * Google Authenticator - Two Factor Authentication ( 2FA ): Provided mobile login support.
646
-
647
- = 3.4 =
648
- * Google Authenticator - Two Factor Authentication ( 2FA ): Features added
649
- * Inline registration flow for users.
650
- * Security Questions (KBA) as additional method
651
- * Alternate way of user identification in customer creation.
652
- * premium customizable features.
653
-
654
- = 3.3 =
655
- * Google Authenticator - Two Factor Authentication ( 2FA ): Fix the issue of session for some versions of php.
656
-
657
- = 3.2 =
658
- * Google Authenticator - Two Factor Authentication ( 2FA ): Fix for device-id compatibility.
659
-
660
- = 3.1 =
661
- * Google Authenticator - Two Factor Authentication ( 2 Factor ): Fix for 2FA ShortCode.
662
-
663
- = 3.0 =
664
- * Google Authenticator - Two Factor Authentication ( 2FA ): Features added
665
- * Google Authenticator.
666
- * Device Id (Remember device).
667
- * Choice given to admin to enable specific authentication methods for users.
668
- * Two Factor support for WooCommerce theme.
669
- * Short Code for various customized fronted login.
670
- * More intuitive UI and descriptive instructions.
671
-
672
- = 2.6 =
673
- * Google Authenticator - Two Factor Authentication ( 2FA ): Fix the compatibility issues of user session with other security plugins.
674
-
675
- = 2.5 =
676
- * Google Authenticator - Two Factor Authentication ( 2FA ): Fix the compatibility issues with All In One WP Security & Firewall plugin.
677
-
678
- = 2.4 =
679
- * Google Authenticator - Two Factor Authentication ( 2FA ): UI fixes for admin media library dashboard.
680
-
681
- = 2.3 =
682
- * Google Authenticator - Two Factor Authentication ( 2FA ): More descriptive setup messages, more intuitive UI.
683
-
684
- = 2.2 =
685
- * Google Authenticator - Two Factor Authentication ( 2FA ): Fixed css issues for existing users
686
-
687
- = 2.1 =
688
- * Google Authenticator - Two Factor Authentication ( 2FA ): Added support for multiple Two Factor Choices like OTP Over SMS, Phone Call Verification, Push Notification, Soft Token (like Google Authenticator Code), Email Verification, etc.
689
-
690
- = 2.0 =
691
- * Google Authenticator - Two Factor Authentication ( 2FA ): Added login with password plus second factor feature.
692
-
693
- = 1.8 =
694
- * Google Authenticator - Two Factor Authentication ( 2FA ): Added feature of different login form choice,test authentication and help for configuration and setup.
695
-
696
- = 1.7 =
697
- * Bug Fixes Google Authenticator - Two Factor Authentication ( 2FA ): Modifying login screen adaptable to user's login form
698
-
699
- = 1.6 =
700
- * Bug Fixes Google Authenticator - Two Factor Authentication ( 2FA ): fetching 2 factor configuration when activating the plugin after deactivating it.
701
-
702
- = 1.5 =
703
- * Bug Fixes Google Authenticator - Two Factor Authentication ( 2FA ): Login issues and password save issues resolved
704
-
705
- = 1.4 =
706
- * Bug Fixes Google Authenticator - Two Factor Authentication ( 2FA ): Authentication was not working on some version of php.
707
-
708
- = 1.3 =
709
- * Google Authenticator - Two Factor Authentication Bug Fixes
710
-
711
- = 1.2 =
712
- * Google Authenticator - Two Factor Authentication ( 2FA ): Added 2 factor for all users along with forgot phone functionality.
713
-
714
- = 1.1 =
715
- * Google Authenticator - Two Factor Authentication ( 2FA ): Added email ID verification during registration.
716
-
717
- = 1.0.0 =
718
- * First version of Google Authenticator - Two Factor Authentication ( 2FA ) plugin supported with mobile authentication for admins only.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
controllers/account.php CHANGED
@@ -280,7 +280,7 @@
280
  if ( ! empty( $mo2f_customer_selected_plan ) ) {
281
  delete_option( 'mo2f_customer_selected_plan' );
282
 
283
- if (MoWpnsUtility::get_mo2f_db_option('mo2f_planname', 'site_option') == 'addon_plan')
284
  {
285
  ?><script>window.location.href="admin.php?page=mo_2fa_addons";</script><?php
286
  }
280
  if ( ! empty( $mo2f_customer_selected_plan ) ) {
281
  delete_option( 'mo2f_customer_selected_plan' );
282
 
283
+ if (MoWpnsUtility::get_mo2f_db_option('mo2f_planname', 'get_option') == 'addon_plan')
284
  {
285
  ?><script>window.location.href="admin.php?page=mo_2fa_addons";</script><?php
286
  }
controllers/dashboard.php CHANGED
@@ -20,4 +20,4 @@
20
  $total_malicious=($total_malicious/1000);
21
  $total_malicious= round($total_malicious,1)."k";
22
  }
23
- include_once $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'dashboard.php';
20
  $total_malicious=($total_malicious/1000);
21
  $total_malicious= round($total_malicious,1)."k";
22
  }
23
+ include $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'dashboard.php';
controllers/feedback_footer.php CHANGED
@@ -26,6 +26,13 @@
26
 
27
  function wpns_handle_support_form_new($email,$query,$phone)
28
  {
 
 
 
 
 
 
 
29
  $send_configuration = (isset($_POST['mo2f_send_configuration'])?$_POST['mo2f_send_configuration']:0);
30
 
31
  if(empty($email) || empty($query)){
@@ -43,11 +50,26 @@
43
  else
44
  $query = $query.MoWpnsUtility::mo_2fa_send_configuration();
45
 
 
 
46
  if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
47
  do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_ERROR'),'ERROR');
48
  } else {
49
  $submited = json_decode($contact_us->submit_contact_us( $email, $phone, $query),true);
50
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  if(json_last_error() == JSON_ERROR_NONE && $submited){
52
  do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_SENT'),'SUCCESS');
53
  }else{
26
 
27
  function wpns_handle_support_form_new($email,$query,$phone)
28
  {
29
+ $call_setup = false;
30
+ if(array_key_exists('2fa_setup_call',$_POST)===true){
31
+ $time_zone = sanitize_text_field($_POST['mo_2fa_setup_call_timezone']);
32
+ $call_date = sanitize_text_field($_POST['mo_2fa_setup_call_date']);
33
+ $call_time = sanitize_text_field($_POST['mo_2fa_setup_call_time']);
34
+ $call_setup = true;
35
+ }
36
  $send_configuration = (isset($_POST['mo2f_send_configuration'])?$_POST['mo2f_send_configuration']:0);
37
 
38
  if(empty($email) || empty($query)){
50
  else
51
  $query = $query.MoWpnsUtility::mo_2fa_send_configuration();
52
 
53
+ if($call_setup == false) {
54
+ $query = $query.'<br><br>';
55
  if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
56
  do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_ERROR'),'ERROR');
57
  } else {
58
  $submited = json_decode($contact_us->submit_contact_us( $email, $phone, $query),true);
59
  }
60
+ } else {
61
+
62
+ $local_timezone='Asia/Kolkata';
63
+ $call_datetime=$call_date.$call_time;
64
+ $convert_datetime = strtotime ( $call_datetime );
65
+ $ist_date = new DateTime(date ( 'Y-m-d H:i:s' , $convert_datetime ), new DateTimeZone($time_zone));
66
+ $ist_date->setTimezone(new DateTimeZone($local_timezone));
67
+
68
+
69
+ $query = $query . '<br><br>' .'Meeting Details: '.'('.$time_zone.') '. date('d M, Y H:i',$convert_datetime). ' [IST Time -> '. $ist_date->format('d M, Y H:i').']'.'<br><br>';
70
+ $submited = json_decode($contact_us->submit_contact_us( $email, $phone, $query, true),true);
71
+
72
+ }
73
  if(json_last_error() == JSON_ERROR_NONE && $submited){
74
  do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_SENT'),'SUCCESS');
75
  }else{
controllers/main_controller.php CHANGED
@@ -4,58 +4,57 @@
4
 
5
  $controller = $mo2f_dirName . 'controllers'.DIRECTORY_SEPARATOR;
6
 
7
- include_once $controller . 'navbar.php';
8
  if(current_user_can('administrator'))
9
  {
10
 
11
- include_once $controller . 'newtork_security_features.php';
12
-
13
- if( isset( $_GET[ 'page' ]))
 
 
 
14
  {
15
- switch($_GET['page'])
16
- {
17
- case 'mo_2fa_dashboard':
18
- include_once $controller . 'dashboard.php'; break;
19
- case 'mo_2fa_login_and_spam':
20
- include_once $controller . 'login-spam.php'; break;
21
- case 'default':
22
- include_once $controller . 'login-security.php'; break;
23
- case 'mo_2fa_account':
24
- include_once $controller . 'account.php'; break;
25
- case 'mo_2fa_backup':
26
- include_once $controller . 'backup'.DIRECTORY_SEPARATOR.'backup.php'; break;
27
- case 'mo_2fa_upgrade':
28
- include_once $controller . 'upgrade.php'; break;
29
- case 'mo_2fa_waf':
30
- include_once $controller . 'waf.php'; break;
31
- case 'mo_2fa_blockedips':
32
- include_once $controller . 'ip-blocking.php'; break;
33
- case 'mo_2fa_advancedblocking':
34
- include_once $controller . 'advanced-blocking.php'; break;
35
- case 'mo_2fa_notifications':
36
- include_once $controller . 'notification-settings.php'; break;
37
- case 'mo_2fa_reports':
38
- include_once $controller . 'reports.php'; break;
39
- case 'mo_2fa_licensing':
40
- include_once $controller . 'licensing.php'; break;
41
- case 'mo_2fa_troubleshooting':
42
- include_once $controller . 'troubleshooting.php'; break;
43
- case 'mo_2fa_addons':
44
- include_once $controller . 'addons.php'; break;
45
- case 'mo_2fa_malwarescan':
46
- include_once $controller . 'malware_scanner'.DIRECTORY_SEPARATOR.'scan_malware.php'; break;
47
- case 'mo_2fa_two_fa':
48
- include_once $controller .'twofa'.DIRECTORY_SEPARATOR. 'two_fa.php'; break;
49
- case 'mo_2fa_request_demo':
50
- include_once $controller . 'request_demo.php'; break;
51
- case 'mo_2fa_request_offer':
52
- include_once $controller . 'request_offer.php'; break;
53
- case 'mo2f_trial':
54
- include_once $controller . 'trial.php'; break;
55
-
56
- }
57
  }
58
  }
 
 
59
  else
60
  {
61
  if( isset( $_GET[ 'page' ]))
@@ -63,7 +62,7 @@ if(current_user_can('administrator'))
63
  switch($_GET['page'])
64
  {
65
  case 'mo_2fa_two_fa':
66
- include_once $controller .'twofa'.DIRECTORY_SEPARATOR. 'two_fa.php'; break;
67
 
68
  }
69
 
@@ -72,12 +71,38 @@ if(current_user_can('administrator'))
72
  }
73
  if (isset( $_GET[ 'page' ])) {
74
 
75
-
76
- if (MoWpnsUtility::get_mo2f_db_option('mo_wpns_2fa_with_network_security', 'get_option') || $_GET[ 'page' ] == "mo_2fa_upgrade" || $_GET[ 'page' ] == "mo_2fa_addons" || $_GET['page'] == "mo_2fa_account"
77
- || $_GET['page']=="mo_2fa_waf" || $_GET['page']=="mo_2fa_login_and_spam" || $_GET['page']=="mo_2fa_dashboard")
78
  {
79
- include_once $controller . 'feedback_footer.php';
 
 
 
 
 
 
80
  }
81
  }
82
  ?>
83
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
 
5
  $controller = $mo2f_dirName . 'controllers'.DIRECTORY_SEPARATOR;
6
 
7
+ include $controller . 'navbar.php';
8
  if(current_user_can('administrator'))
9
  {
10
 
11
+ include $controller . 'newtork_security_features.php';
12
+
13
+
14
+ if( isset( $_GET[ 'page' ]))
15
+ {
16
+ switch($_GET['page'])
17
  {
18
+ case 'mo_2fa_dashboard':
19
+ include $controller . 'dashboard.php'; break;
20
+ case 'mo_2fa_login_and_spam':
21
+ include $controller . 'login-spam.php'; break;
22
+ case 'default':
23
+ include $controller . 'login-security.php'; break;
24
+ case 'mo_2fa_account':
25
+ include $controller . 'account.php'; break;
26
+ case 'mo_2fa_backup':
27
+ include $controller . 'backup'.DIRECTORY_SEPARATOR.'backup.php'; break;
28
+ case 'mo_2fa_upgrade':
29
+ include $controller . 'upgrade.php'; break;
30
+ case 'mo_2fa_waf':
31
+ include $controller . 'waf.php'; break;
32
+ case 'mo_2fa_blockedips':
33
+ include $controller . 'ip-blocking.php'; break;
34
+ case 'mo_2fa_advancedblocking':
35
+ include $controller . 'advanced-blocking.php'; break;
36
+ case 'mo_2fa_notifications':
37
+ include $controller . 'notification-settings.php'; break;
38
+ case 'mo_2fa_reports':
39
+ include $controller . 'reports.php'; break;
40
+ case 'mo_2fa_licensing':
41
+ include $controller . 'licensing.php'; break;
42
+ case 'mo_2fa_troubleshooting':
43
+ include $controller . 'troubleshooting.php'; break;
44
+ case 'mo_2fa_addons':
45
+ include $controller . 'addons.php'; break;
46
+ case 'mo_2fa_malwarescan':
47
+ include $controller . 'malware_scanner'.DIRECTORY_SEPARATOR.'scan_malware.php'; break;
48
+ case 'mo_2fa_two_fa':
49
+ include $controller .'twofa'.DIRECTORY_SEPARATOR. 'two_fa.php'; break;
50
+ case 'mo_2fa_request_demo':
51
+ include $controller . 'request_demo.php'; break;
52
+ case 'mo_2fa_request_offer':
53
+ include $controller . 'request_offer.php';
 
 
 
 
 
 
54
  }
55
  }
56
+
57
+ }
58
  else
59
  {
60
  if( isset( $_GET[ 'page' ]))
62
  switch($_GET['page'])
63
  {
64
  case 'mo_2fa_two_fa':
65
+ include $controller .'twofa'.DIRECTORY_SEPARATOR. 'two_fa.php'; break;
66
 
67
  }
68
 
71
  }
72
  if (isset( $_GET[ 'page' ])) {
73
 
74
+ if ($_GET[ 'page' ] == "mo_2fa_upgrade" || $_GET[ 'page' ] == "mo_2fa_addons")
 
 
75
  {
76
+ include $controller . 'feedback_footer.php';
77
+ }
78
+ else
79
+ {
80
+ if(current_user_can('administrator')){
81
+ include $controller . 'feedback_footer.php';
82
+ }
83
  }
84
  }
85
  ?>
86
 
87
+ <!-- <script>
88
+ jQuery(document).ready(function(){
89
+ var nonce = "<?php //echo wp_create_nonce('wpns-quick-scan');?>";
90
+ var data={
91
+ 'action':'mo_wpns_malware_redirect',
92
+ 'call_type':'malware_scan_initiate',
93
+ 'scan':'scan_start',
94
+ 'scantype':'quick_scan',
95
+ 'nonce': nonce
96
+ };
97
+ jQuery.post(ajaxurl, data, function(response){
98
+ jQuery('input[name="quick_scan_button"]').removeAttr('disabled');
99
+ document.getElementById('quick_scan_button').style.backgroundColor = '#20b2aa';
100
+ jQuery('input[name="standard_scan_button"]').removeAttr('disabled');
101
+ document.getElementById('standard_scan_button').style.backgroundColor = '#20b2aa';
102
+ jQuery('input[name="custom_scan_button"]').removeAttr('disabled');
103
+ document.getElementById('custom_scan_button').style.backgroundColor = '#20b2aa';
104
+ document.getElementById("quick_scan_button").value = "Quick Scan";
105
+ });
106
+ });
107
+ </script> -->
108
+
controllers/navbar.php CHANGED
@@ -68,8 +68,7 @@
68
  $dashboard_url = add_query_arg(array('page' => 'mo_2fa_dashboard' ), $_SERVER['REQUEST_URI']);
69
  $upgrade_url = add_query_arg(array('page' => 'mo_2fa_upgrade' ), $_SERVER['REQUEST_URI']);
70
  $request_demo_url = add_query_arg(array('page' => 'mo_2fa_request_demo' ), $_SERVER['REQUEST_URI']);
71
- $request_offer_url = add_query_arg(array('page' => 'mo_2fa_request_offer' ), $_SERVER['REQUEST_URI']);
72
- $trial_url = add_query_arg( array('page' => 'mo2f_trial' ), $_SERVER['REQUEST_URI'] );
73
 
74
  //dynamic
75
  $logo_url = plugin_dir_url(dirname(__FILE__)) . 'includes/images/miniorange_logo.png';
68
  $dashboard_url = add_query_arg(array('page' => 'mo_2fa_dashboard' ), $_SERVER['REQUEST_URI']);
69
  $upgrade_url = add_query_arg(array('page' => 'mo_2fa_upgrade' ), $_SERVER['REQUEST_URI']);
70
  $request_demo_url = add_query_arg(array('page' => 'mo_2fa_request_demo' ), $_SERVER['REQUEST_URI']);
71
+ $request_offer_url = add_query_arg(array('page' => 'mo_2fa_request_offer' ), $_SERVER['REQUEST_URI']);
 
72
 
73
  //dynamic
74
  $logo_url = plugin_dir_url(dirname(__FILE__)) . 'includes/images/miniorange_logo.png';
controllers/request_christmas_offer.php DELETED
@@ -1,48 +0,0 @@
1
- <?php
2
-
3
-
4
- if(current_user_can( 'manage_options' ) && isset($_POST['option']) )
5
- {
6
- switch($_POST['option'])
7
- {
8
- case "mo_2FA_christmas_request_form":
9
- wpns_handle_christmas_request_form($_POST); break;
10
- }
11
- }
12
-
13
- include $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'request_christmas_offer.php';
14
-
15
- function wpns_handle_christmas_request_form($post){
16
- $nonce = isset($post['nonce'])?$post['nonce']:NULL;
17
- $usecase = isset($post['mo_2FA_christmas_usecase'])? $post['mo_2FA_christmas_usecase']: NULL;
18
- $email = isset($post['mo_2FA_christmas_email'])? $post['mo_2FA_christmas_email'] : NULL;
19
- if ( ! wp_verify_nonce( $nonce, 'mo2f-Request-christmas' ) ){
20
- return;
21
- }
22
- if(empty($usecase) || empty($email) )
23
- {
24
- do_action('wpns_show_message',MoWpnsMessages::showMessage('DEMO_FORM_ERROR'),'SUCCESS');
25
- return;
26
- }
27
- else{
28
-
29
- $usecase = sanitize_text_field( $usecase );
30
- $email = sanitize_text_field( $email );
31
- $query = 'REQUEST FOR CHRISTMAS OFFERS';
32
- $query .= ' =>';
33
- $query .= ' : ';
34
- $query .= $usecase;
35
- $contact_us = new MocURL();
36
- $submited = json_decode($contact_us->submit_contact_us($email, '', $query),true);
37
-
38
- if(json_last_error() == JSON_ERROR_NONE && $submited)
39
- {
40
- do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_SENT'),'SUCCESS');
41
- return;
42
- }
43
- else{
44
- do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_ERROR'),'ERROR');
45
- }
46
- }
47
- }
48
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
controllers/request_demo.php DELETED
@@ -1,51 +0,0 @@
1
- <?php
2
-
3
-
4
- if(current_user_can( 'manage_options' ) && isset($_POST['option']) )
5
- {
6
- switch($_POST['option'])
7
- {
8
- case "mo_2FA_demo_request_form":
9
- wpns_handle_demo_request_form($_POST); break;
10
- }
11
- }
12
-
13
- include $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'request_demo.php';
14
-
15
- function wpns_handle_demo_request_form($post){
16
- $nonce = isset($post['nonce'])?$post['nonce']:NULL;
17
- $usecase = isset($post['mo_2FA_demo_usecase'])? $post['mo_2FA_demo_usecase']: NULL;
18
- $email = isset($post['mo_2FA_demo_email'])? $post['mo_2FA_demo_email'] : NULL;
19
- $demo_plan = isset($post['mo_2FA_demo_plan'])? $post['mo_2FA_demo_plan']: NULL;
20
- if ( ! wp_verify_nonce( $nonce, 'mo2f-Request-demo' ) ){
21
- return;
22
- }
23
- if(empty($usecase) || empty($email) || empty($demo_plan) )
24
- {
25
- do_action('wpns_show_message',MoWpnsMessages::showMessage('DEMO_FORM_ERROR'),'SUCCESS');
26
- return;
27
- }
28
- else{
29
-
30
- $usecase = sanitize_text_field( $usecase );
31
- $email = sanitize_text_field( $email );
32
- $demo_plan = sanitize_text_field($demo_plan);
33
- $query = 'REQUEST FOR DEMO';
34
- $query .= ' =>';
35
- $query .= $demo_plan;
36
- $query .= ' : ';
37
- $query .= $usecase;
38
- $contact_us = new MocURL();
39
- $submited = json_decode($contact_us->submit_contact_us($email, '', $query),true);
40
-
41
- if(json_last_error() == JSON_ERROR_NONE && $submited)
42
- {
43
- do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_SENT'),'SUCCESS');
44
- return;
45
- }
46
- else{
47
- do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_ERROR'),'ERROR');
48
- }
49
- }
50
- }
51
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
controllers/request_offer.php CHANGED
@@ -26,7 +26,7 @@
26
  }
27
  else{
28
 
29
- $query = 'REQUEST FOR SPECIAL OFFERS';
30
  $query .= ' =>';
31
  $query .= ' : ';
32
  $query .= $usecase;
26
  }
27
  else{
28
 
29
+ $query = 'REQUEST FOR NEW YEAR OFFERS';
30
  $query .= ' =>';
31
  $query .= ' : ';
32
  $query .= $usecase;
controllers/support.php CHANGED
@@ -4,8 +4,6 @@
4
 
5
  if(current_user_can( 'manage_options' ) && isset($_POST['option']))
6
  {
7
-
8
-
9
  switch($_POST['option'])
10
  {
11
  case "mo_wpns_send_query":
@@ -29,7 +27,13 @@
29
  //Function to handle support form submit
30
  function wpns_handle_support_form($email,$query,$phone)
31
  {
32
-
 
 
 
 
 
 
33
  $send_configuration = (isset($_POST['mo2f_send_configuration'])?$_POST['mo2f_send_configuration']:0);
34
  if(empty($email) || empty($query)){
35
  do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_VALUES'),'ERROR');
@@ -45,11 +49,26 @@
45
  else
46
  $query = $query.MoWpnsUtility::mo_2fa_send_configuration();
47
 
 
 
48
  if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
49
  do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_ERROR'),'ERROR');
50
  } else {
51
  $submited = json_decode($contact_us->submit_contact_us( $email, $phone, $query),true);
52
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
53
  if(json_last_error() == JSON_ERROR_NONE && $submited){
54
  do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_SENT'),'SUCCESS');
55
  }else{
4
 
5
  if(current_user_can( 'manage_options' ) && isset($_POST['option']))
6
  {
 
 
7
  switch($_POST['option'])
8
  {
9
  case "mo_wpns_send_query":
27
  //Function to handle support form submit
28
  function wpns_handle_support_form($email,$query,$phone)
29
  {
30
+ $call_setup = false;
31
+ if(array_key_exists('2fa_setup_call',$_POST)===true){
32
+ $time_zone = sanitize_text_field($_POST['mo_2fa_setup_call_timezone']);
33
+ $call_date = sanitize_text_field($_POST['mo_2fa_setup_call_date']);
34
+ $call_time = sanitize_text_field($_POST['mo_2fa_setup_call_time']);
35
+ $call_setup = true;
36
+ }
37
  $send_configuration = (isset($_POST['mo2f_send_configuration'])?$_POST['mo2f_send_configuration']:0);
38
  if(empty($email) || empty($query)){
39
  do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_VALUES'),'ERROR');
49
  else
50
  $query = $query.MoWpnsUtility::mo_2fa_send_configuration();
51
 
52
+ if($call_setup == false) {
53
+ $query = $query.'<br><br>';
54
  if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
55
  do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_ERROR'),'ERROR');
56
  } else {
57
  $submited = json_decode($contact_us->submit_contact_us( $email, $phone, $query),true);
58
  }
59
+ } else {
60
+
61
+ $local_timezone='Asia/Kolkata';
62
+ $call_datetime=$call_date.$call_time;
63
+ $convert_datetime = strtotime ( $call_datetime );
64
+ $ist_date = new DateTime(date ( 'Y-m-d H:i:s' , $convert_datetime ), new DateTimeZone($time_zone));
65
+ $ist_date->setTimezone(new DateTimeZone($local_timezone));
66
+
67
+
68
+ $query = $query . '<br><br>' .'Meeting Details: '.'('.$time_zone.') '. date('d M, Y H:i',$convert_datetime). ' [IST Time -> '. $ist_date->format('d M, Y H:i').']'.'<br><br>';
69
+ $submited = json_decode($contact_us->submit_contact_us( $email, $phone, $query, true),true);
70
+
71
+ }
72
  if(json_last_error() == JSON_ERROR_NONE && $submited){
73
  do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_SENT'),'SUCCESS');
74
  }else{
controllers/tour-model.php DELETED
@@ -1,334 +0,0 @@
1
- <?php
2
-
3
- global $mo2f_dirName;
4
- $current_user = wp_get_current_user();
5
- $email = get_option("mo2f_email");
6
- $phone = get_option("mo_wpns_admin_phone");
7
- $display = get_option('mo2f_tour_started') == 2?'block':'none';
8
- $networkSEnable = MoWpnsUtility::get_mo2f_db_option('mo_wpns_2fa_with_network_security', 'get_option');
9
- if(empty($email))
10
- $email = $current_user->user_email;
11
- $counter = 0;
12
- $enableTour = $networkSEnable == 1 ? '' : 'disabled';
13
- $tour_body = '<p class="modal-body-para">Hey, Thank you for installing <b style="color: #E85700">miniOrange 2-Factor plugin</b>.</p>
14
- <p class="modal-body-para">Two-factor will provide extra layer of security to your users account which will help to protect your users accounts from any outside attack.</p>';
15
- if($networkSEnable != 1)
16
- {
17
- $tour_body .= '<div style="margin-left:37.5%;margin-right:37.5%;">';
18
- }
19
-
20
- $tour_body .= '<table style="width: 100%; text-align: center; table-layout: fixed; font-size: medium;">
21
- <div class="mo2f_hiddenradio">
22
- <tr>
23
-
24
- <td style="border: 1px solid black;" id="2fa">
25
- <label>
26
- <input type="radio" name="mo2f_two_factor" value="2fa" checked style="display:none">
27
- <img src="'.plugin_dir_url(dirname(__FILE__)) . 'includes/images/google-authenticator.png">
28
- </label>
29
- </td>';
30
- if($networkSEnable == 1)
31
- {
32
- $tour_body .= '<td style="border: 1px solid black;" id="waf">
33
- <label >
34
- <input type="radio" name="mo2f_two_factor" value="waf" style="display:none" '.$enableTour.'>
35
- <img src="'.plugin_dir_url(dirname(__FILE__)) . 'includes/images/mo-waf-logo.png">
36
- </label>
37
- </td>
38
-
39
- <td style="border: 1px solid black;" id="login">
40
- <label >
41
- <input type="radio" name="mo2f_two_factor" value="login" style="display:none"'.$enableTour.'>
42
- <img src="'.plugin_dir_url(dirname(__FILE__)) . 'includes/images/login-protection-logo.png">
43
- </label>
44
- </td>
45
-
46
- <td style="border: 1px solid black;" id="backup">
47
- <label>
48
- <input type="radio" name="mo2f_two_factor" value="backup" style="display:none"'.$enableTour.'>
49
- <img src="'.plugin_dir_url(dirname(__FILE__)) . 'includes/images/database-backup-logo.png">
50
- </label>
51
- </td>
52
-
53
- <td style="border: 1px solid black;" id="malware">
54
- <label >
55
- <input type="radio" name="mo2f_two_factor" value="malware" style="display:none"'.$enableTour.'>
56
- <img src="'.plugin_dir_url(dirname(__FILE__)) . 'includes/images/malware-scanner-logo.png">
57
- </label>
58
- </td>';
59
- }
60
- $tour_body .= '</tr>
61
- <tr>
62
- <th>
63
- Two-factor authentication
64
- </th>';
65
-
66
- if($networkSEnable == 1)
67
- {
68
-
69
- $tour_body .= '<th>
70
- Web Application Firewall(WAF)
71
- </th>
72
-
73
- <th>
74
- Login Protection
75
- </th>
76
-
77
- <th>
78
- Database Backup
79
- </th>
80
-
81
- <th>
82
- Malware scanner
83
- </th>';
84
- }
85
-
86
- $tour_body .= '</tr>
87
- </div>
88
- </table>';
89
- if($networkSEnable != 1)
90
- {
91
- $tour_body .= '</div>';
92
- }
93
-
94
- $waf_arr_ecc = '<div class="modal-body-div-c modal-body-div-d"><div id="div-show-hide-1" style="width: 98%; overflow: ; height: ;line-height: 1.5;"><b><u>Data theft and manipulation</u>:</b> Data manipulation can lead to alter, delete, destroy data. The manipulated data may or may not be regained. It includes very sensitive data such as user details, credit/debit card or bank details. It is very necessary to fix the existing data vulnerability issues, data leaks, change weak passwords and provide high end security to stop data breach and manipulation.<div class="modal-waf-dinner"><span class="modal-waf-sinner">Prevent SQL-Injection attacks:</span> SQL-Injection is web security vulnerability through SQL queries executed to modify, delete and destroy data. </div></div><div style="width: 2%; font-size: xx-large;"><a id="show-hide-1" onclick="open_hide(this);">-</a></div></div><div class="modal-body-div-c modal-body-div-d"><div id="div-show-hide-2" style="width: 98%; overflow: hidden; height: 50px;line-height: 1.5;"><b><u>Web Scraping</u>:</b> Web scraping is a used to extract large amount of data from websites and saved on local computer. The web scraping involves fetching and extracting data from it. It can be used to web indexing, web mining, data mining, research, tracking online presence and reputation, etc. Media scraping, price scraping are also some scraping techniques which are used to degrade/destroy media files and change the price of products.<div class="modal-waf-dinner"><span class="modal-waf-sinner">Prevent Cross-site scripting(XSS) attacks:</span> Cross site scripts used to web scraping and data extraction.</div></div><div style="width: 2%; font-size: xx-large;"><a id="show-hide-2" onclick="open_hide(this);">+</a></div></div><div class="modal-body-div-c modal-body-div-d"><div id="div-show-hide-3" style="width: 98%; overflow: hidden; height: 50px;line-height: 1.5;"><b><u>File manipualtion</u>:</b> The file manipuaiton used to alter, delete, execution of files on the sever. It leads to spoil site, spread malicious content which will harm to the business. <div class="modal-waf-dinner"><span class="modal-waf-sinner">Prevent Remote File Inclusion attacks:</span> Remote file inclusion used to include local file into the server. RFI is type of vulnerability which can lead to add malicious file through a script on server.</div><div class="modal-waf-dinner"><span class="modal-waf-sinner">Prevent Local File Inclusion attacks:</span> Local file inclusion used to access local file available on the server. LFI can be achieved by uploading malicious file to the server.</div></div><div style="width: 2%; font-size: xx-large;"><a id="show-hide-3" onclick="open_hide(this);">+</a></div></div><div class="modal-body-div-c modal-body-div-d"><div id="div-show-hide-4" style="width: 98%; overflow: hidden; height: 50px;line-height: 1.5;"><b><u>Content modification</u>:</b> Cross-site scripting used to change or modify data shown on website. Content modification affects a lot on business due to irrelevent content, malicious links which leads to spoil the trust of clients and reputation of organizations.<div class="modal-waf-dinner"><span class="modal-waf-sinner">Prevent SQL-Injection attacks:</span> SQL-Injection attack can change data in database. The data used to view content such as statistical data, charts, graphs, etc. It may mislead to business.</div><div class="modal-waf-dinner"><span class="modal-waf-sinner">Prevent Cross-site scripting(XSS) attacks:</span> Cross site script can add malicious links, change content of site. </div></div><div style="width: 2%; font-size: xx-large;"><a id="show-hide-4" onclick="open_hide(this);">+</a></div></div>';
95
-
96
- $waf_arr_busi = '<div class="modal-body-div-c modal-body-div-d"><div id="div-show-hide-1" style="width: 98%; overflow: ; height: ;line-height: 1.5;"><b><u>Data theft and manipulation</u>:</b> Data manipulation can lead to alter, delete, destroy data. The manipulated data may or may not be regained. It may include company privileged data, admin users data which will affect on the business. It is very necessary to fix the existing data vulnerability issues, data leaks, change weak passwords and provide high end security to stop data breach and manipulation.<div class="modal-waf-dinner"><span class="modal-waf-sinner">Prevent SQL-Injection attacks:</span> SQL-Injection is web security vulnerability through SQL queries executed to modify, delete and destroy data. </div></div><div style="width: 2%; font-size: xx-large;"><a id="show-hide-1" onclick="open_hide(this);">-</a></div></div><div class="modal-body-div-c modal-body-div-d"><div id="div-show-hide-2" style="width: 98%; overflow: hidden; height: 50px;line-height: 1.5;"><b><u>Web Scraping</u>:</b> Web scraping is a used to extract large amount of data from websites and saved on local computer. The web scraping involves fetching and extracting data from it. It can be used to web indexing, web mining, data mining, research, tracking online presence and reputation, etc. Price scraping is part of web scraping which is used to change prices of the products which affects a lot on business.<div class="modal-waf-dinner"><span class="modal-waf-sinner">Prevent Cross-site scripting(XSS) attacks:</span> Cross site scripts used to web scraping and data extraction.</div></div><div style="width: 2%; font-size: xx-large;"><a id="show-hide-2" onclick="open_hide(this);">+</a></div></div><div class="modal-body-div-c modal-body-div-d"><div id="div-show-hide-3" style="width: 98%; overflow: hidden; height: 50px;line-height: 1.5;"><b><u>File manipualtion</u>:</b> The file manipuaiton used to alter, delete, execution of files on the sever. It leads to spoil site, spread malicious content which will harm to the business.<div class="modal-waf-dinner"><span class="modal-waf-sinner">Prevent Remote File Inclusion attacks:</span> Remote file inclusion used to include local file into the server. RFI is type of vulnerability which can lead to add malicious file through a script on server.</div><div class="modal-waf-dinner"><span class="modal-waf-sinner">Prevent Local File Inclusion attacks:</span> Local file inclusion used to access local file available on the server. LFI can be achieved by uploading malicious file to the server.</div></div><div style="width: 2%; font-size: xx-large;"><a id="show-hide-3" onclick="open_hide(this);">+</a></div></div><div class="modal-body-div-c modal-body-div-d"><div id="div-show-hide-4" style="width: 98%; overflow: hidden; height: 50px;line-height: 1.5;"><b><u>Content modification</u>:</b> Cross-site scripting used to change or modify data shown on website. Content modification affects a lot on business due to irrelevent content, malicious links which leads to spoil the trust of clients and reputation of organizations.<div class="modal-waf-dinner"><span class="modal-waf-sinner">Prevent SQL-Injection attacks:</span> SQL-Injection attack can change data in database. The data used to view content such as statistical data, charts, graphs, etc. It may mislead to business.</div><div class="modal-waf-dinner"><span class="modal-waf-sinner">Prevent Cross-site scripting(XSS) attacks:</span> Cross site script can add malicious links, change content of site. </div></div><div style="width: 2%; font-size: xx-large;"><a id="show-hide-4" onclick="open_hide(this);">+</a></div></div>';
97
-
98
- $waf_arr_blog = '<div class="modal-body-div-c modal-body-div-d"><div id="div-show-hide-1" style="width: 98%; overflow: ; height: ;line-height: 1.5;"><b><u>Data theft and manipulation</u>:</b> Data manipulation can lead to alter, delete, destroy data. The manipulated data may or may not be regained. It is very necessary to fix the existing data vulnerability issues, data leaks, change weak passwords and provide high end security to stop data breach and manipulation. The data may include user details, privileged data, privileged blogs, etc.<div class="modal-waf-dinner"><span class="modal-waf-sinner">Prevent SQL-Injection attacks:</span> SQL-Injection is web security vulnerability through SQL queries executed to modify, delete and destroy data. </div></div><div style="width: 2%; font-size: xx-large;"><a id="show-hide-1" onclick="open_hide(this);">-</a></div></div><div class="modal-body-div-c modal-body-div-d"><div id="div-show-hide-2" style="width: 98%; overflow: hidden; height: 50px;line-height: 1.5;"><b><u>Web Scraping</u>:</b> Web scraping is a used to extract large amount of data from websites and saved on local computer. The web scraping involves fetching and extracting data from it. It can be used to web indexing, web mining, data mining, research, tracking online presence and reputation, etc. Media scraping can be done in the blog/news site which alter, degrade or destroy media files.<div class="modal-waf-dinner"><span class="modal-waf-sinner">Prevent Cross-site scripting(XSS) attacks:</span> Cross site scripts used to web scraping and data extraction.</div></div><div style="width: 2%; font-size: xx-large;"><a id="show-hide-2" onclick="open_hide(this);">+</a></div></div><div class="modal-body-div-c modal-body-div-d"><div id="div-show-hide-3" style="width: 98%; overflow: hidden; height: 50px;line-height: 1.5;"><b><u>File manipualtion</u>:</b> The file manipuaiton used to alter, delete, execution of files on the sever. It leads to spoil site, spread malicious content which will harm to the business.<div class="modal-waf-dinner"><span class="modal-waf-sinner">Prevent Remote File Inclusion attacks:</span> Remote file inclusion used to include local file into the server. RFI is type of vulnerability which can lead to add malicious file through a script on server.</div><div class="modal-waf-dinner"><span class="modal-waf-sinner">Prevent Local File Inclusion attacks:</span> Local file inclusion used to access local file available on the server. LFI can be achieved by uploading malicious file to the server.</div></div><div style="width: 2%; font-size: xx-large;"><a id="show-hide-3" onclick="open_hide(this);">+</a></div></div><div class="modal-body-div-c modal-body-div-d"><div id="div-show-hide-4" style="width: 98%; overflow: hidden; height: 50px;line-height: 1.5;"><b><u>Content modification</u>:</b> Cross-site scripting used to change or modify data shown on website. Content modification affects a lot on business due to irrelevent content, malicious links which leads to spoil the trust of clients and reputation of organizations. Content modification may mislead to blog/news site subscriber. It can be used to spread fake/malicious imformation.<div class="modal-waf-dinner"><span class="modal-waf-sinner">Prevent SQL-Injection attacks:</span> SQL-Injection attack can change data in database. The data used to view content such as statistical data, charts, graphs, etc. It may mislead to business.</div><div class="modal-waf-dinner"><span class="modal-waf-sinner">Prevent Cross-site scripting(XSS) attacks:</span> Cross site script can add malicious links, change content of site. </div></div><div style="width: 2%; font-size: xx-large;"><a id="show-hide-4" onclick="open_hide(this);">+</a></div></div>';
99
-
100
- $waf_arr_other = '<div class="modal-body-div-c modal-body-div-d"><div id="div-show-hide-1" style="width: 98%; overflow: ; height: ;line-height: 1.5;"><b><u>Data theft and manipulation</u>:</b> Data manipulation can lead to alter, delete, destroy data. The manipulated data may or may not be regained. It is very necessary to fix the existing data vulnerability issues, data leaks, change weak passwords and provide high end security to stop data breach and manipulation.<div class="modal-waf-dinner"><span class="modal-waf-sinner">Prevent SQL-Injection attacks:</span> SQL-Injection is web security vulnerability through SQL queries executed to modify, delete and destroy data. </div></div><div style="width: 2%; font-size: xx-large;"><a id="show-hide-1" onclick="open_hide(this);">-</a></div></div><div class="modal-body-div-c modal-body-div-d"><div id="div-show-hide-2" style="width: 98%; overflow: hidden; height: 50px;line-height: 1.5;"><b><u>Web Scraping</u>:</b> Web scraping is a used to extract large amount of data from websites and saved on local computer. The web scraping involves fetching and extracting data from it. It can be used to web indexing, web mining, data mining, research, tracking online presence and reputation, etc.<div class="modal-waf-dinner"><span class="modal-waf-sinner">Prevent Cross-site scripting(XSS) attacks:</span> Cross site scripts used to web scraping and data extraction.</div></div><div style="width: 2%; font-size: xx-large;"><a id="show-hide-2" onclick="open_hide(this);">+</a></div></div><div class="modal-body-div-c modal-body-div-d"><div id="div-show-hide-3" style="width: 98%; overflow: hidden; height: 50px;line-height: 1.5;"><b><u>File manipualtion</u>:</b> The file manipuaiton used to alter, delete, execution of files on the sever. It leads to spoil site, spread malicious content which will harm to the business.<div class="modal-waf-dinner"><span class="modal-waf-sinner">Prevent Remote File Inclusion attacks:</span> Remote file inclusion used to include local file into the server. RFI is type of vulnerability which can lead to add malicious file through a script on server.</div><div class="modal-waf-dinner"><span class="modal-waf-sinner">Prevent Local File Inclusion attacks:</span> Local file inclusion used to access local file available on the server. LFI can be achieved by uploading malicious file to the server.</div></div><div style="width: 2%; font-size: xx-large;"><a id="show-hide-3" onclick="open_hide(this);">+</a></div></div><div class="modal-body-div-c modal-body-div-d"><div id="div-show-hide-4" style="width: 98%; overflow: hidden; height: 50px;line-height: 1.5;"><b><u>Content modification</u>:</b> Cross-site scripting used to change or modify data shown on website. Content modification affects a lot on business due to irrelevent content, malicious links which leads to spoil the trust of clients and reputation of organizations.<div class="modal-waf-dinner"><span class="modal-waf-sinner">Prevent SQL-Injection attacks:</span> SQL-Injection attack can change data in database. The data used to view content such as statistical data, charts, graphs, etc. It may mislead to business. </div><div class="modal-waf-dinner"><span class="modal-waf-sinner">Prevent Cross-site scripting(XSS) attacks:</span> Cross site script can add malicious links, change content of site. </div></div><div style="width: 2%; font-size: xx-large;"><a id="show-hide-4" onclick="open_hide(this);">+</a></div></div>';
101
-
102
- $waf_body_ecommerce = '<div class="modal-body-div">
103
- <p class="modal-body-para" style="margin: 0;">Ecommerce sites are always under attack to spoil organizations reputaion, data theft and manipualation, file manipualation, web scraping, etc. WAF controls the access of web applications using rules designed to recognize and restrict suspicious activities.</p>';
104
- $waf_body_business = '<div class="modal-body-div">
105
- <p class="modal-body-para" style="margin: 0;">Business sites are always under attack to spoil organizations reputaion, data theft and manipualation, file manipualation, web scraping, etc. WAF controls the access of web applications using rules designed to recognize and restrict suspicious activities.</p>';
106
- $waf_body_blog = '<div class="modal-body-div">
107
- <p class="modal-body-para" style="margin: 0;">Blogs/News sites are attacked to spoil organizations reputaion, data theft and manipualation, file manipualation, web scraping, etc. WAF controls the access of web applications using rules designed to recognize and restrict suspicious activities.</p>';
108
- $waf_body_other = '<div class="modal-body-div">
109
- <p class="modal-body-para" style="margin: 0;">Other sites such as employment, portfolio, multilingual, etc are attacked to spoil organizations reputaion, data theft and manipualation, file manipualation, web scraping, etc. WAF controls the access of web applications using rules designed to recognize and restrict suspicious activities.</p>';
110
-
111
- $waf_body = '<div style="width:100%; display:inline-flex; margin-left: 20px;">
112
- <div style="width:50%;font-size: medium;">1: <b>Data theft and manipulation</b></div>
113
- <div style="width:50%;font-size: medium;">2: <b>Web Scraping</b></div></div>
114
- <div style="width:100%; display:inline-flex; margin-left: 20px;">
115
- <div style="width:50%;font-size: medium;">3: <b>File manipulation</b></div>
116
- <div style="width:50%;font-size: medium;">4: <b>Content modification</b></div></div>
117
- </div>';
118
-
119
- $registration_security_ecommerce = '<div class="modal-body-div-c modal-body-div-d"><div id="div-show-hide-13" style="width: 98%; overflow: hidden; height: 50px;line-height: 1.5;"><b><u>Registratoin security:</u></b> Ecommerce sites need to prevent fake registrations. It helps to keep site safe from suspicious user.';
120
- $registration_security_business = '<div class="modal-body-div-c modal-body-div-d"><div id="div-show-hide-13" style="width: 98%; overflow: hidden; height: 50px;line-height: 1.5;"><b><u>Registratoin security:</u></b> Business sites need to prevent fake registrations. It helps to keep site safe from suspicious user.';
121
-
122
- $registration_security_other = '<div class="modal-body-div-c modal-body-div-d"><div id="div-show-hide-13" style="width: 98%; overflow: hidden; height: 50px;line-height: 1.5;"><b><u>Registratoin security:</u></b> The sites such as employment, social networking, etc. need to prevent fake user registrations. The user will spam other users and share private data of others.';
123
-
124
- $registration_security = '<div style="margin:1em;"><ul>
125
- <li>
126
- <p class="modal-body-para" style="margin: 0;">1. Temporary/Fake email ban</p>
127
- </li>
128
- <li>
129
- <p class="modal-body-para" style="margin: 0;">2. OTP Verification during registrations</p>
130
- </li>
131
- <li>
132
- <p class="modal-body-para" style="margin: 0;">3. Social login</p>
133
- </li>
134
- </ul>
135
- </div></div><div style="width: 2%; font-size: xx-large;"><a id="show-hide-13" onclick="open_hide(this);">+</a></div></div>';
136
-
137
- $login_security_ecommerce = '<div class="modal-body-div"><p class="modal-body-para">Ecommerce sites should have strong login security to prevent unauthorised access.</p></div>';
138
- $login_security_business = '<div class="modal-body-div"><p class="modal-body-para">Business sites should have strong login security to prevent unauthorised access.</p></div>';
139
- $login_security_blog = '<div class="modal-body-div"><p class="modal-body-para">Blogs/News sites should have strong login security to prevent unauthorised access.</p></div>';
140
- $login_security_other = '<div class="modal-body-div"><p class="modal-body-para">Other sites such as employment, portfolio, etc. should have strong login security to prevent unauthorised access.</p></div>';
141
-
142
- $login_security_body = '<div class="modal-body-div-c modal-body-div-d"><div id="div-show-hide-10" style="width: 98%; overflow:; height: ;line-height: 1.5;"><b><u>Limit Login:</u></b> Password guessing/Brute force attack can be controlled/prevented by limiting the login attempts. Paasword guessing can be protected by:
143
- <div style="margin:1em;">
144
- <ul>
145
- <li>
146
- <p class="modal-body-para">1. Limit Login attempts: 10 (<b>Recommended</b>)</p>
147
- </li>
148
- <li>
149
- <p class="modal-body-para">2. Enforce Strong passwords</p>
150
- </li>
151
- </ul>
152
- </div></div><div style="width: 2%; font-size: xx-large;"><a id="show-hide-10" onclick="open_hide(this);">-</a></div></div>
153
-
154
- <div class="modal-body-div-c modal-body-div-d"><div id="div-show-hide-11" style="width: 98%; overflow: hidden; height: 50px;line-height: 1.5;"><b><u>2-Factor:</u></b> 2-factor authentication is important to prevent unauthorised login. 2-factor authentication can be enabled on top of login credentials at the time of login. Google authenticator, Authy authenticator, Lastpass authenticator applications can be used to configure 2FA. miniOrange supports 15+ 2FA methods, it includes OTP over SMS, Email, Security Questions, QR code authentication, push notification, Hardware Token, etc. 2FA can enabled to:
155
- <div style="margin:1em;">
156
- <ul>
157
- <li>
158
- <p class="modal-body-para">1. Enable 2FA for employees (<b>Recommended</b>)</p>
159
- </li>
160
- <li>
161
- <p class="modal-body-para">2. Enable 2FA for users</p>
162
- </li>
163
- <li>
164
- <p class="modal-body-para">3. Backup methods in case of emergency login</p>
165
- </li>
166
- </ul>
167
- </div></div><div style="width: 2%; font-size: xx-large;"><a id="show-hide-11" onclick="open_hide(this);">+</a></div></div>
168
- <div class="modal-body-div-c modal-body-div-d"><div id="div-show-hide-12" style="width: 98%; overflow: hidden; height: 50px;line-height: 1.5;"><b><u>Remember device:</u></b> Remember device allows user to login from trusted devices. It keeps safe from unauthorised users who tries to gain access. It improves your login security by allowing you to login from limited and trusted deivces.
169
- <div style="margin:1em;">
170
- <ul>
171
- <li>
172
- <p class="modal-body-para">1. Allows multiple trusted devices</p>
173
- </li>
174
- <li>
175
- <p class="modal-body-para">2. Limit no. of trusted devices</p>
176
- </li>
177
- <li>
178
- <p class="modal-body-para">3. Block IP\'s of unauthorised users</p>
179
- </li>
180
- </ul>
181
- </div></div><div style="width: 2%; font-size: xx-large;"><a id="show-hide-12" onclick="open_hide(this);">+</a></div></div>';
182
-
183
-
184
- $media_body = '<div class="modal-body-div"><p class="modal-body-para">Ecommerce sites are often attacked to degrade and destroy media files such as images of product, audios and videos about products. You need to secure your media data. Media protection is important because the users of ecommerce site buy product by viewing the media of products. The broad word media scraping can be used for these types attacks.</p>
185
- <div class="modal-body-div modal-body-para">Here is our <a target="_blank" href="https://wordpress.org/plugins/prevent-file-access/">Media protection</a> plugin.</div>
186
- <div class="modal-body-div">The Media protection prevents media files listed below:</div>
187
- </div>
188
- <div style="margin:1em;">
189
- <ul>
190
- <li>
191
- <p class="modal-body-para">1. It protects all type of image files, audio, video and gif files.</p>
192
- </li>
193
- <li>
194
- <p class="modal-body-para">2. It also prevents access to documents such as pdf, doc, docx, txt, xls, xlsx, etc.</p>
195
- </li>
196
- </ul>
197
- </div>';
198
-
199
- $media_body_1 = '<div class="modal-body-div"><p class="modal-body-para">Some sites such as Photo Gallery or other site which contains media files are often attacked to degrade and destroy media files. You need to secure your media data. Media protection is important because the these sites are totally based on media files.</p>
200
- <div class="modal-body-div modal-body-para">Here is our <a target="_blank" href="https://wordpress.org/plugins/prevent-file-access/">Media protection</a> plugin.</div>
201
- <div class="modal-body-div">The Media protection prevents media files listed below:</div>
202
- </div>
203
- <div style="margin:1em;">
204
- <ul>
205
- <li>
206
- <p class="modal-body-para">1. It protects all type of image files, audio, video and gif files.</p>
207
- </li>
208
- <li>
209
- <p class="modal-body-para">2. It also prevents access to documents such as pdf, doc, docx, txt, xls, xlsx, etc.</p>
210
- </li>
211
- </ul>
212
- </div>';
213
-
214
- $backup_ecommerce = '<div class="modal-body-div"><p class="modal-body-para">The data is backbone of any e-commerce site. The ecommerce sites are attacked to steal data, data manipulation and files manipulation. You can take a backup of your data and files securely.</p></div>';
215
- $backup_business = '<div class="modal-body-div"><p class="modal-body-para">The data is backbone of any Business site. The business sites are attacked to steal data, data manipulation and files manipulation. You can take a backup of your data and files securely.</p></div>';
216
- $backup_blog = '<div class="modal-body-div"><p class="modal-body-para">The data is backbone of any Blog/News site. These sites are attacked to steal data, data manipulation and files manipulation. You can take a backup of your data and files securely.</p></div>';
217
- $backup_blog = '<div class="modal-body-div"><p class="modal-body-para">The data is backbone of any site such as social networking, employment, etc. There are several attacks happens on these sites to steal data, data manipulation and files manipulation. You can take a backup of your data and files securely.</p></div>';
218
-
219
-
220
- $backup_body = '<div class="modal-body-div">
221
- <ul>
222
- <li>
223
- <p class="modal-body-para"><b>1. <u>Scheduled backup:</u></b> Scheduled backup used to create automatic backup after scheduled time. It allows you to relax because you know that all of your information is being backed up, and you are limiting what you may lose. Using this feature you can set a time interval to create a continuous backup. ';
224
- $backup_body_1 = '<div class="modal-waf-dinner"><span class="modal-waf-sinner">Set scheduled backup time 1/2 hr for ecommerce site.</span></div>';
225
- $backup_body_2 = '<div class="modal-waf-dinner"><span class="modal-waf-sinner">You can set automatic backup after 12 hrs time interval.</span></div>';
226
- $backup_body_3 = '<div class="modal-waf-dinner"><span class="modal-waf-sinner">You can set automatic backup after 4-5 hrs time interval.</span></div>';
227
- $backup_body_4 = '</p>
228
- </li>
229
- <li>
230
- <p class="modal-body-para"><b>2. <u>Manual backup:</u></b> Manual backup can be taken manually whenever user wants. It is important when you made any crucial changes and don\'t want to loose data then you can immediately take a backup and keep it securely.</p>
231
- </li>
232
- <li>
233
- <p class="modal-body-para"><b>3. <u>Password protected encrypted backup:</u></b> Password protected encrypted backup is very secure way to take a backup. If anyone gets it still no one can decode it because of its highly secure nature.</p>
234
- </li>
235
- <li>
236
- <p class="modal-body-para"><b>4. <u>Easy restoring and recovering:</u></b> Simple one-click restore using installer files created for your website. During backup, we create an installer.php file. At the time of restore and recovery, you just need to upload the zip file of backup and installer.php and run the installer file and follow instructions to set up your website.</p>
237
- </li>
238
- </ul>
239
- </div>';
240
-
241
- $comment_ecommerce = '<div class="modal-body-div"><p class="modal-body-para">Ecommerce websites are attacked to spread unwanted or irrelevant content by submitting automated posts, comments, contact forms, etc. A spam message, content or comment includes backlinks or excessive links that redirect to illegal websites or websites containing inappropriate content. Automated scripts and botnets are used to spread such spam comments and posts to spoil the organizations reputation or product reputation. </p></div>';
242
- $comment_business = '<div class="modal-body-div"><p class="modal-body-para">Business websites are used to spread unwanted or irrelevant content by submitting automated posts, comments, contact forms, etc. A spam message, content or comment includes backlinks or excessive links that redirect to illegal websites or websites containing inappropriate content. Automated scripts and botnets are used to spread such spam comments and posts to spoil the organizations reputation or product reputation. </p></div>';
243
- $comment_blog = '<div class="modal-body-div"><p class="modal-body-para">Blog/News websites are used to spread unwanted or irrelevant content by submitting automated posts, comments, contact forms, etc. A spam message, content or comment includes backlinks or excessive links that redirect to illegal websites or websites containing inappropriate content. Automated scripts and botnets are used to spread such spam comments and posts to spoil the organizations reputation or product reputation. </p></div>';
244
- $comment_other = '<div class="modal-body-div"><p class="modal-body-para">Other websites such as employment, multilingual, etc. are used to spread unwanted or irrelevant content by submitting automated posts, comments, contact forms, etc. A spam message, content or comment includes backlinks or excessive links that redirect to illegal websites or websites containing inappropriate content. Automated scripts and botnets are used to spread such spam comments and posts to spoil the organizations reputation or product reputation. </p></div>';
245
-
246
- $comment_spam = '<div style="margin:1em;">
247
- <ul>
248
- <li>
249
- <p class="modal-body-para"><b>1. <u>Comment protection:</u></b> Spam comments generated by automated scripts can be prevented using captcha. Honeypot is another widely used technique to catch bots and block them.</p>
250
- </li>
251
- <li>
252
- <p class="modal-body-para"><b>2. <u>Post protection:</u></b> Automated scripts or botnets can prevented by using captcha. There are three forms of captcha availble text, math and google recaptcha. Honeypot is also another way to detect spam posts. Malware scanner can also used to scan the malware in the posts.</p>
253
- </li>
254
- </ul>
255
- </div>';
256
-
257
-
258
- $scanner = '<div class="modal-body-div"><p class="modal-body-para">Malware scanner detects the malicious code in the files. Compares the wordpress, plugins and theme files with Wordpress repo files. Detects changes present in any wordpress, theme and plugin files. It also checks outdated/vulnerable plugins, themes. It is also useful to detect malware in posts and comments.</p></div>
259
- <div style="margin:1em;">
260
- <ul>
261
- <li>
262
- <p class="modal-body-para"><b>1. <u>Malware scan:</u></b> Malware scan scans the wordpress core files, plugins and theme files to check malware. It detects the trojans, backdoors, viruses, worms, etc. in the files. </p>
263
- </li>
264
- <li>
265
- <p class="modal-body-para"><b>2. <u>Wordpress version and file compare:</u></b> Checks WordPress, plugins and themes version with Wordpress.org repository and compare WordPress core, plugins and themes files with the repository to detect any file changes. Detect any changes in the files present in the WordPress plugins and themes folder.</p>
266
- </li>
267
- <li>
268
- <p class="modal-body-para"><b>3. <u>Check vulnerable plugins and themes:</u></b> Checks vulnerable plugins and themes which contains malicious code. You can remove it to enhance your site security.</p>
269
- </li>
270
- </ul>
271
- </div>';
272
-
273
- $support_modal = '<div>
274
-
275
- <div style="width: unset; float: unset; margin: 10px 20%;" class="mo_wpns_support_layout_model">
276
-
277
- <img src="'.dirname(plugin_dir_url(__FILE__)).'/includes/images/support3.png">
278
- <h1>Support</h1>
279
- <p>Need any help? We are available any time, Just send us a query so we can help you.</p>
280
- <form name="f" method="post" action="">
281
- <input type="hidden" name="option" value="mo_wpns_send_query"/>
282
- <table class="mo_wpns_settings_table">
283
- <tr><td>
284
- <input type="email" class="mo_wpns_table_textbox" id="query_email" name="query_email" value="'.$email.'" placeholder="Enter your email" required />
285
- </td>
286
- </tr>
287
- <tr><td>
288
- <input type="text" class="mo_wpns_table_textbox" name="query_phone" id="query_phone" value="'.$phone.'" placeholder="Enter your phone"/>
289
- </td>
290
- </tr>
291
- <tr>
292
- <td>
293
- <textarea id="query" name="query" class="mo_wpns_settings_textarea" style="resize: vertical;width:100%" cols="52" rows="7" placeholder="Write your query here"></textarea>
294
- </td>
295
- </tr>
296
- </table>
297
- <input type="submit" name="send_query" id="send_query" value="Submit Query" class="mo_wpns_button mo_wpns_button1" />
298
- </form>
299
- <br />
300
- </div>
301
- </div>
302
- <script>
303
- function moSharingSizeValidate(e){
304
- var t=parseInt(e.value.trim());t>60?e.value=60:10>t&&(e.value=10)
305
- }
306
- function moSharingSpaceValidate(e){
307
- var t=parseInt(e.value.trim());t>50?e.value=50:0>t&&(e.value=0)
308
- }
309
- function moLoginSizeValidate(e){
310
- var t=parseInt(e.value.trim());t>60?e.value=60:20>t&&(e.value=20)
311
- }
312
- function moLoginSpaceValidate(e){
313
- var t=parseInt(e.value.trim());t>60?e.value=60:0>t&&(e.value=0)
314
- }
315
- function moLoginWidthValidate(e){
316
- var t=parseInt(e.value.trim());t>1000?e.value=1000:140>t&&(e.value=140)
317
- }
318
- function moLoginHeightValidate(e){
319
- var t=parseInt(e.value.trim());t>50?e.value=50:35>t&&(e.value=35)
320
- }
321
- </script>';
322
-
323
-
324
- $ecommerce_site = array(array('Web Application Firewall(WAF)', $waf_body_ecommerce.$waf_body.$waf_arr_ecc), array('Login Security', $login_security_ecommerce.$login_security_body.$registration_security_ecommerce.$registration_security), array('Media Protection', $media_body), array('Encrypted Backup', $backup_ecommerce.$backup_body.$backup_body_1.$backup_body_4), array('Comment and Spam Protection', $comment_ecommerce.$comment_spam), array('Malware Scanner', $scanner), array('Support', $support_modal));
325
-
326
- $business_site = array(array('Web Application Firewall(WAF)', $waf_body_business.$waf_body.$waf_arr_busi), array('Encrypted Backup', $backup_business.$backup_body.$backup_body_2.$backup_body_4), array('Comment and Spam Protection', $comment_business.$comment_spam), array('Login Security', $login_security_business.$login_security_body.$registration_security_business.$registration_security), array('Malware Scanner', $scanner), array('Support', $support_modal));
327
-
328
- $blog_site = array(array('Web Application Firewall(WAF)', $waf_body_blog.$waf_body.$waf_arr_blog), array('Comment and Spam Protection', $comment_blog.$comment_spam), array('Login Security', $login_security_blog.$login_security_body), array('Encrypted Backup', $backup_blog.$backup_body.$backup_body_3.$backup_body_4), array('Malware Scanner', $scanner), array('Support', $support_modal));
329
-
330
- $other_site = array(array('Web Application Firewall(WAF)', $waf_body_other.$waf_body.$waf_arr_other), array('Comment and Spam Protection', $comment_other.$comment_spam), array('Login Security', $login_security_other.$login_security_body), array('Encrypted Backup', $backup_blog.$backup_body.$backup_body_4), array('Media Protection', $media_body_1), array('Malware Scanner', $scanner), array('Support', $support_modal));
331
-
332
- $main_pointer = array('Main' => array('Let\'s get Started', $tour_body), 'Ecommerce' => $ecommerce_site, 'Business' => $business_site, 'Blogs/News' => $blog_site, 'Other' => $other_site);
333
-
334
- include $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'tour-model.php';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
controllers/tour/tour_ajax.php DELETED
@@ -1,146 +0,0 @@
1
- <?php
2
- class Mo_wpns_Tour
3
- {
4
- function __construct(){
5
- add_action( 'admin_init' , array( $this, 'mo_wpns_save_tour_details' ) );
6
-
7
- }
8
-
9
- public function mo_wpns_save_tour_details(){
10
- if(isset($_REQUEST['page']))
11
- {
12
- switch ($_REQUEST['page']) {
13
- case 'mo_2fa_two_fa':
14
- if(!MoWpnsUtility::get_mo2f_db_option('mo2f_two_factor_tour', 'get_option'))
15
- update_option('mo2f_two_factor_tour',1);
16
-
17
- break;
18
- case 'mo_2fa_waf':
19
- if(!get_option('mo2f_tour_firewall'))
20
- update_option('mo2f_tour_firewall',1);
21
- break;
22
- case 'mo_2fa_login_and_spam':
23
- if(!get_option('mo2f_tour_loginSpam'))
24
- update_option('mo2f_tour_loginSpam',1);
25
- break;
26
-
27
- case 'mo_2fa_backup':
28
- if(!get_option('mo2f_tour_backup'))
29
- update_option('mo2f_tour_backup',1);
30
-
31
- break;
32
- case 'mo_2fa_malwarescan':
33
- if(!get_option('mo2f_tour_malware_scan'))
34
- update_option('mo2f_tour_malware_scan',1);
35
-
36
- break;
37
- case 'mo_2fa_advancedblocking':
38
- if(!get_option('mo2f_tour_advance_blocking'))
39
- update_option('mo2f_tour_advance_blocking',1);
40
- break;
41
-
42
- default:
43
- break;
44
- }
45
- }
46
- add_action('wp_ajax_mo_wpns_tour', array( $this, 'mo_wpns_tour' ));
47
-
48
- }
49
-
50
- public function mo_wpns_tour(){
51
- switch($_POST['call_type'])
52
- {
53
- case "wpns_enable_tour":
54
- update_option('skip_tour', 0);
55
- break;
56
- case "skip_entire_plugin_tour":
57
- $this->handle_skip_entire_plugin();
58
- break;
59
- case 'entire_plugin_tour_started':
60
- $this->entire_plugin_tour_started();
61
- break;
62
- case "mo2f_close_tour_details":
63
- $this->mo2f_close_tour_details();
64
- break;
65
- case "mo2f_visit_page_tour_details":
66
- $this->mo2f_visit_page_tour_details();
67
- break;
68
- case "mo2f_last_visit_tab":
69
- $this->mo2f_last_visit_tab();
70
- break;
71
- }
72
- }
73
-
74
-
75
- function mo2f_last_visit_tab()
76
- {
77
- $lasttab = sanitize_text_field($_POST['tab']);
78
- update_option('mo2f_tour_tab',$lasttab);
79
- }
80
- function mo2f_visit_page_tour_details()
81
- {
82
- $currentPointer = '';
83
- if(isset($_POST['index']))
84
- $currentPointer = sanitize_text_field($_POST['index']);
85
-
86
- if(strpos($currentPointer, 'support') != false)
87
- {
88
- exit;
89
- }
90
- $uid = get_current_user_id();
91
- $visited = get_user_meta($uid,'mo2f_visited_pointers',true);
92
- $visited = $visited.',custom_admin_pointers4_8_52_'.$currentPointer;
93
- update_user_meta($uid,'mo2f_visited_pointers',$visited);
94
- }
95
- function entire_plugin_tour_started()
96
- {
97
- update_option('mo2f_tour_started',3);
98
- exit;
99
- }
100
-
101
- function handle_skip_entire_plugin(){
102
- update_option('mo2f_two_factor_tour',-1);
103
- update_option('mo2f_tour_firewall',-1);
104
- update_option('mo2f_tour_malware_scan',-1);
105
- update_option('mo2f_tour_advance_blocking',-1);
106
- update_option('mo2f_tour_backup',-1);
107
- update_option('mo2f_tour_loginSpam',-1);
108
- update_option('mo2f_tour_started',3);
109
- exit;
110
- }
111
-
112
-
113
- function mo2f_close_tour_details()
114
- {
115
- $uid = get_current_user_id();
116
- delete_user_meta($uid,'mo2f_visited_pointers');
117
- $page = $_POST['page'];
118
- $page = sanitize_text_field($page[0]);
119
- update_option('mo2f_tour_tab','');
120
- update_option("yeah",1);
121
- switch ($page) {
122
- case 'toplevel_page_mo_2fa_two_fa':
123
- update_option('mo2f_two_factor_tour',-1);
124
- break;
125
- case 'miniorange-2-factor_page_mo_2fa_waf':
126
- update_option('mo2f_tour_firewall',-1);
127
- break;
128
- case 'miniorange-2-factor_page_mo_2fa_malwarescan':
129
- update_option('mo2f_tour_malware_scan',-1);
130
- break;
131
- case 'miniorange-2-factor_page_mo_2fa_advancedblocking':
132
- update_option('mo2f_tour_advance_blocking',-1);
133
- break;
134
- case 'miniorange-2-factor_page_mo_2fa_backup':
135
- update_option('mo2f_tour_backup',-1);
136
- break;
137
- case 'miniorange-2-factor_page_mo_2fa_login_and_spam':
138
- update_option('mo2f_tour_loginSpam',-1);
139
- break;
140
- }
141
-
142
- }
143
-
144
- }
145
- new Mo_wpns_Tour();
146
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
controllers/trial.php DELETED
@@ -1,91 +0,0 @@
1
- <?php
2
-
3
-
4
- if(current_user_can( 'manage_options' ) && isset($_POST['option']) )
5
- {
6
- switch(sanitize_text_field($_POST['option']))
7
- {
8
- case "mo2f_trial_request_form":
9
- mo2f_handle_trial_request_form($_POST); break;
10
- }
11
- }
12
- global $mo2f_dirName;
13
- $current_user = wp_get_current_user();
14
- $email = isset($current_user->user_email)?$current_user->user_email:null;
15
- $url = get_site_url();
16
- $user_phone = $Mo2fdbQueries->get_user_detail( 'mo2f_user_phone', $current_user->ID );
17
-
18
-
19
- echo '<link rel="stylesheet" type="text/css" href="' . plugins_url( 'includes/css/style_settings.css', dirname(__FILE__)) . '" />';
20
- include $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'trial.php';
21
-
22
- function mo2f_handle_trial_request_form($post){
23
- $nonce = isset($post['nonce'])?sanitize_text_field($post['nonce']):NULL;
24
- if ( ! wp_verify_nonce( $nonce, 'mo2f_trial-nonce' ) ){
25
- return;
26
- }
27
-
28
- $email = isset($post['mo2f_trial_email'])? $post['mo2f_trial_email'] : NULL;
29
- $phone = isset($post['mo2f_trial_phone'])? $post['mo2f_trial_phone'] : ( $user_phone ? $user_phone : NULL );
30
- $trial_plan = isset($post['mo2f_trial_plan'])? $post['mo2f_trial_plan']: NULL;
31
-
32
- if(get_site_option('mo2f_trial_query_sent')){
33
- do_action('wpns_show_message',MoWpnsMessages::showMessage('TRIAL_REQUEST_ALREADY_SENT'),'ERROR');
34
- return;
35
- }
36
-
37
- if(empty($email) || empty($phone) || empty($trial_plan))
38
- {
39
- do_action('wpns_show_message',MoWpnsMessages::showMessage('REQUIRED_FIELDS'),'ERROR');
40
- return;
41
- }
42
- if(!preg_match("/^[\+][0-9]{1,4}\s?[0-9]{7,12}$/", $phone)){
43
- do_action('wpns_show_message',MoWpnsMessages::showMessage('INVALID_PHONE'),'ERROR');
44
- return;
45
- }
46
- else{
47
- $email = filter_var( $email,FILTER_VALIDATE_EMAIL );
48
- $phone = preg_replace('/[^0-9]/', '', $phone);
49
- $trial_plan = sanitize_text_field($trial_plan);
50
- $query = 'REQUEST FOR TRIAL';
51
- $query .= ' [ Plan Name => ';
52
- $query .= $trial_plan;
53
- $query .= ' | Email => ';
54
- $query .= get_option('mo2f_email').' ]';
55
- $current_user = wp_get_current_user();
56
-
57
-
58
- $url = MoWpnsConstants::HOST_NAME . "/moas/rest/customer/contact-us";
59
- global $mowafutility;
60
- $query = '[WordPress 2 Factor Authentication Plugin: OV3 - '.MO2F_VERSION.']: ' . $query;
61
-
62
- $fields = array(
63
- 'firstName' => $current_user->user_firstname,
64
- 'lastName' => $current_user->user_lastname,
65
- 'company' => $_SERVER['SERVER_NAME'],
66
- 'email' => $email,
67
- 'ccEmail' => '2fasupport@xecurify.com',
68
- 'phone' => $phone,
69
- 'query' => $query
70
- );
71
- $field_string = json_encode( $fields );
72
-
73
- $mo2fApi= new Mo2f_Api();
74
- $response = $mo2fApi->make_curl_call($url, $field_string);
75
-
76
- $submitted = $response;
77
-
78
- if(json_last_error() == JSON_ERROR_NONE && $submitted)
79
- {
80
- update_site_option('mo2f_trial_query_sent', true);
81
- do_action('wpns_show_message',MoWpnsMessages::showMessage('TRIAL_REQUEST_SENT'),'SUCCESS');
82
- return;
83
- }
84
- else{
85
- do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_ERROR'),'ERROR');
86
- }
87
-
88
- }
89
- }
90
-
91
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
controllers/twofa/mo2fa_common_login.php CHANGED
@@ -40,79 +40,7 @@ function mo2f_collect_device_attributes_handler( $session_id_encrypt,$redirect_t
40
  </html>
41
  <?php
42
  }
43
- function mo2fa_prompt_mfa_form_for_user($configure_array_method,$session_id_encrypt,$redirect_to)
44
- {
45
- ?>
46
- <html>
47
- <head>
48
- <meta charset="utf-8"/>
49
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
50
- <meta name="viewport" content="width=device-width, initial-scale=1">
51
- <?php
52
- mo2f_inline_css_and_js();
53
- ?>
54
- </head>
55
- <body>
56
- <div class="mo2f_modal1" tabindex="-1" role="dialog" id="myModal51">
57
- <div class="mo2f-modal-backdrop"></div>
58
- <div class="mo_customer_validation-modal-dialog mo_customer_validation-modal-md">
59
- <div class="login mo_customer_validation-modal-content">
60
- <div class="mo2f_modal-header">
61
- <h3 class="mo2f_modal-title"><button type="button" class="mo2f_close" data-dismiss="modal" aria-label="Close" title="<?php echo __('Back to login','miniorange-2-factor-authentication');?>" onclick="mologinback();"><span aria-hidden="true">&times;</span></button>
62
-
63
- <?php echo __('Select 2 Factor method for authentication', 'miniorange-2-factor-authentication'); ?></h3>
64
- </div>
65
- <div class="mo2f_modal-body">
66
- <?php
67
- foreach ($configure_array_method as $key => $value)
68
- {
69
- echo'<span >
70
- <label>
71
- <input type="radio" name="mo2f_selected_mfactor_method" class ="mo2f-styled-radio_conf" value="'.$value.'"/>';
72
- echo'<span class="mo2f-styled-radio-text_conf">';
73
- echo __($value, 'miniorange-2-factor-authentication');
74
- echo ' </span> </label>
75
- <br>
76
- <br>
77
- </span>';
78
-
79
- }
80
-
81
- ?>
82
-
83
- <?php mo2f_customize_logo() ?>
84
- </div>
85
- </div>
86
- </div>
87
- </div>
88
- <form name="f" id="mo2f_backto_mo_loginform" method="post" action="<?php echo wp_login_url(); ?>" style="display:none;">
89
- <input type="hidden" name="miniorange_mobile_validation_failed_nonce" value="<?php echo wp_create_nonce('miniorange-2-factor-mobile-validation-failed-nonce'); ?>" />
90
- <input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
91
- <input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
92
- </form>
93
- <form name="f" method="post" action="" id="mo2f_select_mfa_methods_form" style="display:none;">
94
- <input type="hidden" name="mo2f_selected_mfactor_method" />
95
- <input type="hidden" name="mo2f_miniorange_2factor_method_nonce" value="<?php echo wp_create_nonce('mo2f_miniorange-2factor-method-nonce'); ?>" />
96
- <input type="hidden" name="option" value="miniorange_mfactor_method" />
97
- <input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
98
- <input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
99
- </form>
100
-
101
- <script>
102
- function mologinback(){
103
- jQuery('#mo2f_backto_mo_loginform').submit();
104
- }
105
- jQuery('input:radio[name=mo2f_selected_mfactor_method]').click(function() {
106
- var selectedMethod = jQuery(this).val();
107
- document.getElementById("mo2f_select_mfa_methods_form").elements[0].value = selectedMethod;
108
- jQuery('#mo2f_select_mfa_methods_form').submit();
109
- });
110
-
111
- </script>
112
- </body>
113
- </html>
114
- <?php
115
- }
116
  function miniorange_get_user_role( $user ) {
117
  return $user->roles;
118
  }
@@ -1179,7 +1107,7 @@ function mo2f_get_qrcode_authentication_prompt( $login_status, $login_message, $
1179
  <?php
1180
  }
1181
 
1182
- function mo2f_get_otp_authentication_prompt( $login_status, $login_message, $redirect_to,$session_id_encrypt,$user_id,$show_back_button =null ,$mo2fa_transaction_id = null ) {
1183
  global $Mo2fdbQueries,$moWpnsUtility;
1184
  $mo2f_enable_forgotphone = MoWpnsUtility::get_mo2f_db_option('mo2f_enable_forgotphone', 'get_option');
1185
  $mo_wpns_config = new MoWpnsHandler();
@@ -1254,9 +1182,6 @@ function mo2f_get_otp_authentication_prompt( $login_status, $login_message, $re
1254
  <input type="hidden" name="option" value="miniorange_soft_token">
1255
  <input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
1256
  <input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
1257
- <?php if($mo2fa_transaction_id!=null){ ?>
1258
- <input type="hidden" name="mo2fa_transaction_id" id="mo2fa_transaction_id" value="<?php echo $mo2fa_transaction_id; ?>"/>
1259
- <?php }?>
1260
  </form>
1261
  <?php
1262
  $Kbaset = get_user_meta( $user_id ,'Security Questions' );
@@ -1493,12 +1418,11 @@ function mo2f_customize_logo() { ?>
1493
  function echo_js_css_files() {
1494
  echo '<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>';
1495
  echo '<script src="' . plugins_url( 'includes/js/bootstrap.min.js', dirname(dirname(__FILE__)) ) . '" ></script>';
1496
- echo '<link rel="stylesheet" type="text/css" href="' . plugins_url( 'includes/css/twofa_style_settings.css?version=5.5', dirname(dirname(__FILE__))) . '" />';
1497
  }
1498
 
1499
  function mo2f_backup_codes_generate($id, $redirect_to, $session_id_encrypt){
1500
  global $Mo2fdbQueries;
1501
- update_site_option('mo2f_is_inline_used','1');
1502
  if(get_user_meta($id, 'mo_backup_code_generated', true) && !get_user_meta($id, 'mo_backup_code_downloaded', true)){
1503
  $encrypted_codes =get_user_meta($id, 'chqwetcsdvnvd', true);
1504
  $key = get_option( 'mo2f_encryption_key' );
@@ -1507,25 +1431,16 @@ function mo2f_backup_codes_generate($id, $redirect_to, $session_id_encrypt){
1507
  delete_user_meta($id, 'chqwetcsdvnvd');
1508
  $result = true;
1509
  }else{
1510
- $mo2f_user_email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $id );
 
 
 
1511
  if(empty($mo2f_user_email)){
1512
  $currentuser = get_user_by( 'id', $id );
1513
  $mo2f_user_email = $currentuser->user_email;
1514
  }
1515
- $generate_backup_code = new Customer_Cloud_Setup();
1516
- $codes = $generate_backup_code->mo_2f_generate_backup_codes($mo2f_user_email, site_url());
1517
-
1518
- if($codes != 'DBConnectionIssue' && $codes != 'UnableToFetchData' && $codes != 'UserLimitReached' && $codes != 'ERROR' && $codes != 'LimitReached' && $codes != 'AllUsed' && $codes != 'invalid_request' ){
1519
- $codes = explode(' ', $codes);
1520
- $result = MO2f_Utility::mo2f_email_backup_codes($codes, $mo2f_user_email);
1521
  update_user_meta($id, 'mo_backup_code_generated', 1);
1522
- $code_generated = 'code_generation_successful';
1523
- }else{
1524
- $code_generated = 'code_generation_failed';
1525
- update_user_meta($id, 'error_during_code_generation',$codes);
1526
- }
1527
-
1528
-
1529
  }
1530
  update_user_meta($id, 'mo_backup_code_screen_shown', 1);
1531
  ?>
@@ -1556,7 +1471,6 @@ function mo2f_backup_codes_generate($id, $redirect_to, $session_id_encrypt){
1556
  <h4 class="mo2f_modal-title"><button type="button" class="mo2f_close" data-dismiss="modal" aria-label="Close" title="<?php echo __('Back to login', 'miniorange-2-factor-authentication'); ?>" onclick="mologinback();"><span aria-hidden="true">&times;</span></button>
1557
  <?php echo __('Two Factor Setup Complete', 'miniorange-2-factor-authentication'); ?></h4>
1558
  </div>
1559
- <?php if($code_generated == 'code_generation_successful') { ?>
1560
  <div class="mo2f_modal-body center">
1561
 
1562
 
@@ -1572,13 +1486,13 @@ function mo2f_backup_codes_generate($id, $redirect_to, $session_id_encrypt){
1572
  <div style="display: inline-flex;width: 350px; ">
1573
  <div id="clipboard" style="border: solid;width: 55%;float: left;">
1574
  <?php
1575
- for ($x = 0; $x < sizeof($codes); $x++) {
1576
  $str = $codes[$x];
1577
  echo("<br>".$str." <br>");
1578
  }
1579
 
1580
  $str1="";
1581
- for ($x = 0; $x < sizeof($codes); $x++) {
1582
  $str = $codes[$x];
1583
  $str1.=$str;
1584
  if($x != 4){
@@ -1611,17 +1525,6 @@ function mo2f_backup_codes_generate($id, $redirect_to, $session_id_encrypt){
1611
  <?php
1612
  mo2f_customize_logo() ?>
1613
  </div>
1614
- <?php } else { ?>
1615
- <div style="text-align:center;">
1616
- <form name="f" id="mo2f_backto_mo_loginform" method="post" action="<?php echo wp_login_url();?>" >
1617
- <input type="hidden" name="option" value="mo2f_goto_wp_dashboard" />
1618
- <input type="hidden" name="mo2f_inline_wp_dashboard_nonce" value="<?php echo wp_create_nonce('miniorange-2-factor-inline-wp-dashboard-nonce'); ?>" />
1619
- <input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
1620
- <input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
1621
- <input type="submit" name="login_page" id="login_page" style ="margin-top: 7px" class="button button-primary button-large" value="<?php echo __('Finish','miniorange-2-factor-authentication');?>" /><br>
1622
- </form>
1623
- </div>
1624
- <?php } ?>
1625
  </div>
1626
  </div>
1627
  </div>
40
  </html>
41
  <?php
42
  }
43
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44
  function miniorange_get_user_role( $user ) {
45
  return $user->roles;
46
  }
1107
  <?php
1108
  }
1109
 
1110
+ function mo2f_get_otp_authentication_prompt( $login_status, $login_message, $redirect_to,$session_id_encrypt,$user_id,$show_back_button =null ) {
1111
  global $Mo2fdbQueries,$moWpnsUtility;
1112
  $mo2f_enable_forgotphone = MoWpnsUtility::get_mo2f_db_option('mo2f_enable_forgotphone', 'get_option');
1113
  $mo_wpns_config = new MoWpnsHandler();
1182
  <input type="hidden" name="option" value="miniorange_soft_token">
1183
  <input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
1184
  <input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
 
 
 
1185
  </form>
1186
  <?php
1187
  $Kbaset = get_user_meta( $user_id ,'Security Questions' );
1418
  function echo_js_css_files() {
1419
  echo '<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>';
1420
  echo '<script src="' . plugins_url( 'includes/js/bootstrap.min.js', dirname(dirname(__FILE__)) ) . '" ></script>';
1421
+ echo '<link rel="stylesheet" type="text/css" href="' . plugins_url( 'includes/css/twofa_style_settings.css?version=5.1.21', dirname(dirname(__FILE__))) . '" />';
1422
  }
1423
 
1424
  function mo2f_backup_codes_generate($id, $redirect_to, $session_id_encrypt){
1425
  global $Mo2fdbQueries;
 
1426
  if(get_user_meta($id, 'mo_backup_code_generated', true) && !get_user_meta($id, 'mo_backup_code_downloaded', true)){
1427
  $encrypted_codes =get_user_meta($id, 'chqwetcsdvnvd', true);
1428
  $key = get_option( 'mo2f_encryption_key' );
1431
  delete_user_meta($id, 'chqwetcsdvnvd');
1432
  $result = true;
1433
  }else{
1434
+ $codes = MO2f_Utility::mo_2f_generate_backup_codes();
1435
+ $codes_hash = MO2f_Utility::mo2f_get_codes_hash($codes);
1436
+ update_user_meta($id,'mo2f_backup_codes', $codes_hash);
1437
+ $mo2f_user_email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $id );
1438
  if(empty($mo2f_user_email)){
1439
  $currentuser = get_user_by( 'id', $id );
1440
  $mo2f_user_email = $currentuser->user_email;
1441
  }
1442
+ $result = MO2f_Utility::mo2f_email_backup_codes($codes, $mo2f_user_email);
 
 
 
 
 
1443
  update_user_meta($id, 'mo_backup_code_generated', 1);
 
 
 
 
 
 
 
1444
  }
1445
  update_user_meta($id, 'mo_backup_code_screen_shown', 1);
1446
  ?>
1471
  <h4 class="mo2f_modal-title"><button type="button" class="mo2f_close" data-dismiss="modal" aria-label="Close" title="<?php echo __('Back to login', 'miniorange-2-factor-authentication'); ?>" onclick="mologinback();"><span aria-hidden="true">&times;</span></button>
1472
  <?php echo __('Two Factor Setup Complete', 'miniorange-2-factor-authentication'); ?></h4>
1473
  </div>
 
1474
  <div class="mo2f_modal-body center">
1475
 
1476
 
1486
  <div style="display: inline-flex;width: 350px; ">
1487
  <div id="clipboard" style="border: solid;width: 55%;float: left;">
1488
  <?php
1489
+ for ($x = 0; $x < 5; $x++) {
1490
  $str = $codes[$x];
1491
  echo("<br>".$str." <br>");
1492
  }
1493
 
1494
  $str1="";
1495
+ for ($x = 0; $x < 5; $x++) {
1496
  $str = $codes[$x];
1497
  $str1.=$str;
1498
  if($x != 4){
1525
  <?php
1526
  mo2f_customize_logo() ?>
1527
  </div>
 
 
 
 
 
 
 
 
 
 
 
1528
  </div>
1529
  </div>
1530
  </div>
controllers/twofa/mo2fa_inline_registration.php CHANGED
@@ -139,13 +139,6 @@ function prompt_user_to_select_2factor_mthod_inline($current_user_id, $login_sta
139
  </label>
140
  <br>
141
  </span>
142
- <span class="<?php if( !(in_array("OTP OVER WHATSAPP", $opt)) ){ echo "mo2f_td_hide"; }else { echo "mo2f_td_show"; } ?>" >
143
- <label title="<?php echo __('You will get an OTP on your WHATSAPP app from miniOrange Bot.', 'miniorange-2-factor-authentication'); ?>" >
144
- <input type="radio" name="mo2f_selected_2factor_method" value="OTP OVER WHATSAPP" />
145
- <?php echo __('OTP Over WHATSAPP', 'miniorange-2-factor-authentication'); ?>
146
- </label>
147
- <br>
148
- </span>
149
  <span class="<?php if( !(in_array("MOBILE AUTHENTICATION", $opt)) ){ echo "mo2f_td_hide"; }else { echo "mo2f_td_show"; }?>">
150
  <label title="<?php echo __('You have to scan the QR Code from your phone using miniOrange Authenticator App to login. Supported in Smartphones only.', 'miniorange-2-factor-authentication'); ?>">
151
  <input type="radio" name="mo2f_selected_2factor_method" value="MOBILE AUTHENTICATION" />
@@ -618,31 +611,7 @@ function prompt_user_for_duo_authenticator_setup($current_user_id, $login_status
618
  function prompt_user_for_google_authenticator_setup($current_user_id, $login_status, $login_message,$redirect_to,$session_id){
619
  $ga_secret = MO2f_Utility::mo2f_get_transient($session_id, 'secret_ga');
620
  $data = MO2f_Utility::mo2f_get_transient($session_id, 'ga_qrCode');
621
- global $Mo2fdbQueries;
622
- if(empty($data)){
623
- $user = get_user_by('ID',$current_user_id);
624
- if(!MO2F_IS_ONPREM){
625
- if(!get_user_meta($user->ID, 'mo2f_google_auth', true)){
626
- Miniorange_Authentication::mo2f_get_GA_parameters($user);
627
- }
628
- $mo2f_google_auth = get_user_meta($user->ID, 'mo2f_google_auth', true);
629
- $data = isset($mo2f_google_auth['ga_qrCode']) ? $mo2f_google_auth['ga_qrCode'] : null;
630
- $ga_secret = isset($mo2f_google_auth['ga_secret']) ? $mo2f_google_auth['ga_secret'] : null;
631
- MO2f_Utility::mo2f_set_transient($session_id, 'secret_ga', $mo2f_google_auth['ga_secret']);
632
- MO2f_Utility::mo2f_set_transient($session_id, 'ga_qrCode', $mo2f_google_auth['ga_qrCode']);
633
- }else{
634
- include_once dirname(dirname(dirname( __FILE__ ))) .DIRECTORY_SEPARATOR . 'handler'.DIRECTORY_SEPARATOR . 'twofa'. DIRECTORY_SEPARATOR . 'gaonprem.php';
635
- $gauth_obj = new Google_auth_onpremise();
636
- $email = $Mo2fdbQueries->get_user_detail('mo2f_user_email',$user->ID);
637
- $onpremise_secret = $gauth_obj->createSecret();
638
- $issuer = get_site_option( 'mo2f_GA_account_name', 'miniOrangeAu' );
639
- $url = $gauth_obj->geturl( $onpremise_secret, $issuer, $email );
640
- $data = $url;
641
- MO2f_Utility::mo2f_set_transient($session_id, 'secret_ga', $onpremise_secret);
642
- MO2f_Utility::mo2f_set_transient($session_id, 'ga_qrCode', $url);
643
 
644
- }
645
- }
646
  ?>
647
  <html>
648
  <head> <meta charset="utf-8"/>
139
  </label>
140
  <br>
141
  </span>
 
 
 
 
 
 
 
142
  <span class="<?php if( !(in_array("MOBILE AUTHENTICATION", $opt)) ){ echo "mo2f_td_hide"; }else { echo "mo2f_td_show"; }?>">
143
  <label title="<?php echo __('You have to scan the QR Code from your phone using miniOrange Authenticator App to login. Supported in Smartphones only.', 'miniorange-2-factor-authentication'); ?>">
144
  <input type="radio" name="mo2f_selected_2factor_method" value="MOBILE AUTHENTICATION" />
611
  function prompt_user_for_google_authenticator_setup($current_user_id, $login_status, $login_message,$redirect_to,$session_id){
612
  $ga_secret = MO2f_Utility::mo2f_get_transient($session_id, 'secret_ga');
613
  $data = MO2f_Utility::mo2f_get_transient($session_id, 'ga_qrCode');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
614
 
 
 
615
  ?>
616
  <html>
617
  <head> <meta charset="utf-8"/>
controllers/twofa/two_factor_ajax.php CHANGED
@@ -12,6 +12,7 @@ class mo_2f_ajax
12
  }
13
 
14
  function mo_two_factor_ajax(){
 
15
  $GLOBALS['mo2f_is_ajax_request'] = true;
16
  switch ($_POST['mo_2f_two_factor_ajax']) {
17
  case 'mo2f_ajax_login_redirect':
@@ -32,8 +33,6 @@ class mo_2f_ajax
32
  $this->mo2f_enable_disable_twofactor(); break;
33
  case 'mo2f_enable_disable_inline':
34
  $this->mo2f_enable_disable_inline(); break;
35
- case 'mo2f_enable_disable_configurd_methods':
36
- $this->mo2f_enable_disable_configurd_methods(); break;
37
  case 'mo2f_shift_to_onprem':
38
  $this->mo2f_shift_to_onprem();break;
39
  case 'mo2f_enable_disable_twofactor_prompt_on_login':
@@ -47,630 +46,12 @@ class mo_2f_ajax
47
  case 'mo2f_delete_log_file':
48
  $this->mo2f_delete_log_file();
49
  break;
50
- case 'select_method_setup_wizard':
51
- $this->mo2f_select_method_setup_wizard();
52
- break;
53
- case 'mo_wpns_register_verify_customer':
54
- $this->mo_wpns_register_verify_customer();
55
- break;
56
- case 'mo_2fa_configure_GA_setup_wizard':
57
- $this->mo_2fa_configure_GA_setup_wizard();
58
- break;
59
- case 'mo_2fa_verify_GA_setup_wizard':
60
- $this->mo_2fa_verify_GA_setup_wizard();
61
- break;
62
- case 'mo_2fa_configure_OTPOverSMS_setup_wizard':
63
- $this->mo_2fa_configure_OTPOverSMS_setup_wizard();
64
- break;
65
- case 'mo_2fa_configure_OTPOverEmail_setup_wizard':
66
- $this->mo_2fa_configure_OTPOverEmail_setup_wizard();
67
- break;
68
- case 'mo_2fa_verify_OTPOverEmail_setup_wizard':
69
- $this->mo_2fa_verify_OTPOverEmail_setup_wizard();
70
- break;
71
- case 'mo_2fa_verify_OTPOverSMS_setup_wizard':
72
- $this->mo_2fa_verify_OTPOverSMS_setup_wizard();
73
- break;
74
- case 'mo_2fa_configure_KBA_setup_wizard':
75
- $this->mo_2fa_configure_KBA_setup_wizard();
76
- break;
77
- case 'mo_2fa_verify_KBA_setup_wizard':
78
- $this->mo_2fa_verify_KBA_setup_wizard();
79
- break;
80
- case 'mo_2fa_send_otp_token':
81
- $this->mo_2fa_send_otp_token();
82
- break;
83
- case "mo2f_set_otp_over_sms":
84
- $this->mo2f_set_otp_over_sms(); break;
85
- case "mo2f_set_miniorange_methods":
86
- $this->mo2f_set_miniorange_methods(); break;
87
- case "mo2f_set_GA":
88
- $this->mo2f_set_GA(); break;
89
- }
90
- }
91
- function mo_2fa_verify_KBA_setup_wizard()
92
- {
93
- global $Mo2fdbQueries;
94
- $kba_q1 = sanitize_text_field($_POST['mo2f_kbaquestion_1']);
95
- $kba_a1 = sanitize_text_field( $_POST['mo2f_kba_ans1'] );
96
- $kba_q2 = sanitize_text_field($_POST['mo2f_kbaquestion_2']);
97
- $kba_a2 = sanitize_text_field( $_POST['mo2f_kba_ans2'] );
98
- $kba_q3 = sanitize_text_field( $_POST['mo2f_kbaquestion_3'] );
99
- $kba_a3 = sanitize_text_field( $_POST['mo2f_kba_ans3'] );
100
- $user = wp_get_current_user();
101
- $this->mo2f_check_and_create_user($user->ID);
102
- if ( MO2f_Utility::mo2f_check_empty_or_null( $kba_q1 ) || MO2f_Utility::mo2f_check_empty_or_null( $kba_a1 ) || MO2f_Utility::mo2f_check_empty_or_null( $kba_q2 ) || MO2f_Utility::mo2f_check_empty_or_null( $kba_a2) || MO2f_Utility::mo2f_check_empty_or_null( $kba_q3) || MO2f_Utility::mo2f_check_empty_or_null( $kba_a3) ) {
103
- echo "Invalid Questions or Answers";
104
- exit;
105
- }
106
- if ( strcasecmp( $kba_q1, $kba_q2 ) == 0 || strcasecmp( $kba_q2, $kba_q3 ) == 0 || strcasecmp( $kba_q3, $kba_q1 ) == 0 ) {
107
- echo "The questions you select must be unique.";
108
- exit;
109
- }
110
- $kba_q1 = addcslashes( stripslashes( $kba_q1 ), '"\\' );
111
- $kba_q2 = addcslashes( stripslashes( $kba_q2 ), '"\\' );
112
- $kba_q3 = addcslashes( stripslashes( $kba_q3 ), '"\\' );
113
- $kba_a1 = addcslashes( stripslashes( $kba_a1 ), '"\\' );
114
- $kba_a2 = addcslashes( stripslashes( $kba_a2 ), '"\\' );
115
- $kba_a3 = addcslashes( stripslashes( $kba_a3 ), '"\\' );
116
- $email = $user->user_email;
117
- $kba_registration = new Two_Factor_Setup();
118
- $Mo2fdbQueries->update_user_details( $user->ID, array(
119
- 'mo2f_SecurityQuestions_config_status' => true,
120
- 'mo_2factor_user_registration_status' => 'MO_2_FACTOR_PLUGIN_SETTINGS',
121
- 'mo2f_user_email' => $email
122
- ));
123
- $kba_reg_reponse = json_decode( $kba_registration->register_kba_details( $email, $kba_q1, $kba_a1, $kba_q2, $kba_a2, $kba_q3, $kba_a3, $user->ID ), true );
124
-
125
- if($kba_reg_reponse['status']=='SUCCESS')
126
- {
127
- echo "SUCCESS";
128
- exit;
129
- }
130
- else
131
- {
132
- echo "An error has occured while saving KBA details. Please try again.";
133
- exit;
134
- }
135
- }
136
- function mo_2fa_send_otp_token()
137
- {
138
- $enduser = new Customer_Setup();
139
- $email = sanitize_text_field($_POST['phone']);
140
- $customer_key = get_site_option('mo2f_customerKey');
141
- $api_key = get_site_option('mo2f_api_key');
142
- $selected_2FA_method = sanitize_text_field($_POST['selected_2FA_method']);
143
- $user_id = wp_get_current_user()->ID;
144
-
145
- if($selected_2FA_method == 'OTP Over Email')
146
- {
147
- update_user_meta($user_id,'tempRegEmail',$email);
148
- if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
149
- $emailErr = "Invalid email format";
150
- echo $emailErr;
151
- exit;
152
- }
153
- }
154
- else if($selected_2FA_method == 'OTP Over SMS')
155
- {
156
-
157
- }
158
- $content = $enduser->send_otp_token($email,$selected_2FA_method,$customer_key,$api_key);
159
- $content = json_decode($content);
160
-
161
- if($content->status =='SUCCESS')
162
- {
163
- echo 'SUCCESS';
164
- update_user_meta($user_id,'txId',$content->txId);
165
- update_user_meta($user_id,'tempRegPhone',$email);
166
- exit;
167
- }
168
- else
169
- echo "An error has occured while sending the OTP.";
170
- exit;
171
- }
172
- function mo2f_check_and_create_user($user_id)
173
- {
174
- global $Mo2fdbQueries;
175
- $twofactor_transactions = new Mo2fDB;
176
- $exceeded = $twofactor_transactions->check_alluser_limit_exceeded($user_id);
177
- if($exceeded){
178
- echo 'User Limit has been exceeded';
179
- exit;
180
- }
181
- $Mo2fdbQueries->insert_user( $user_id );
182
- }
183
- function mo_2fa_verify_OTPOverSMS_setup_wizard()
184
- {
185
- global $Mo2fdbQueries;
186
- $enduser = new Customer_Setup();
187
- $current_user = wp_get_current_user();
188
- $otpToken = sanitize_text_field($_POST['mo2f_otp_token']);
189
- $user_id = wp_get_current_user()->ID;
190
- $email = get_user_meta($user_id,'tempRegPhone',true);
191
- $content = json_decode($enduser->validate_otp_token( 'SMS', null, get_user_meta($user_id,'txId',true), $otpToken, get_site_option('mo2f_customerKey'), get_site_option('mo2f_api_key') ),true);
192
-
193
- if($content['status'] == 'SUCCESS')
194
- {
195
- $this->mo2f_check_and_create_user($user_id);
196
- $Mo2fdbQueries->update_user_details( $user_id, array(
197
- 'mo2f_OTPOverSMS_config_status' => true,
198
- 'mo2f_configured_2FA_method' => "OTP Over SMS",
199
- 'mo2f_user_phone' => $email,
200
- 'user_registration_with_miniorange' => 'SUCCESS',
201
- 'mo_2factor_user_registration_status' => 'MO_2_FACTOR_PLUGIN_SETTINGS'
202
- ) );
203
- echo "SUCCESS";
204
- }
205
- else
206
- {
207
- echo "Invalid OTP";
208
- }
209
- exit;
210
-
211
- }
212
- function mo_2fa_verify_OTPOverEmail_setup_wizard()
213
- {
214
- global $Mo2fdbQueries;
215
- $enduser = new Customer_Setup();
216
- $current_user = wp_get_current_user();
217
- $otpToken = sanitize_text_field($_POST['mo2f_otp_token']);
218
- $user_id = wp_get_current_user()->ID;
219
- $email = get_user_meta($user_id,'tempRegEmail',true);
220
- $content = json_decode($enduser->validate_otp_token( 'OTP_OVER_EMAIL', null, get_user_meta($current_user->ID,'mo2f_transactionId',true), $otpToken, get_site_option('mo2f_customerKey'), get_site_option('mo2f_api_key') ),true);
221
-
222
- if($content['status'] == 'SUCCESS')
223
- {
224
- $this->mo2f_check_and_create_user($user_id);
225
- $Mo2fdbQueries->update_user_details( $user_id, array(
226
- 'mo2f_OTPOverEmail_config_status' => true,
227
- 'mo2f_configured_2FA_method' => "OTP Over Email",
228
- 'mo2f_user_email' => $email,
229
- 'user_registration_with_miniorange' => 'SUCCESS',
230
- 'mo_2factor_user_registration_status' => 'MO_2_FACTOR_PLUGIN_SETTINGS'
231
- ) );
232
- echo "SUCCESS";
233
- }
234
- else
235
- {
236
- echo "Invalid OTP";
237
- }
238
- exit;
239
- }
240
- function mo_2fa_verify_GA_setup_wizard()
241
- {
242
- global $Mo2fdbQueries;
243
- $path = dirname(dirname(dirname(__FILE__))).DIRECTORY_SEPARATOR.'handler'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'gaonprem.php';
244
- include_once $path;
245
- $obj_google_auth = new Google_auth_onpremise();
246
- $user_id = wp_get_current_user()->ID;
247
- $otpToken = sanitize_text_field($_POST['mo2f_google_auth_code']);
248
- $session_id_encrypt = isset($_POST['mo2f_session_id']) ? sanitize_text_field($_POST['mo2f_session_id']) : null;
249
- $secret= $obj_google_auth->mo_GAuth_get_secret($user_id);
250
- if($session_id_encrypt){
251
- $secret = MO2f_Utility::mo2f_get_transient($session_id_encrypt, 'secret_ga');
252
- }
253
- $content = $obj_google_auth->verifyCode($secret, $otpToken);
254
- $content = json_decode($content);
255
- if($content->status== 'false')
256
- echo "Invalid One time Passcode. Please enter again";
257
- else
258
- {
259
- $obj_google_auth->mo_GAuth_set_secret($user_id,$secret);
260
- $this->mo2f_check_and_create_user($user_id);
261
- $Mo2fdbQueries->update_user_details( $user_id, array(
262
- 'mo2f_GoogleAuthenticator_config_status' => true,
263
- 'mo2f_AuthyAuthenticator_config_status' => false,
264
- 'mo2f_configured_2FA_method' => "Google Authenticator",
265
- 'user_registration_with_miniorange' => 'SUCCESS',
266
- 'mo_2factor_user_registration_status' => 'MO_2_FACTOR_PLUGIN_SETTINGS'
267
- ) );
268
-
269
- echo 'SUCCESS';
270
- }
271
- exit;
272
- }
273
- function mo_2fa_configure_GA_setup_wizard()
274
- {
275
- $path = dirname(dirname(dirname(__FILE__))).DIRECTORY_SEPARATOR.'handler'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'gaonprem.php';
276
- include_once $path;
277
- $obj_google_auth = new Google_auth_onpremise();
278
- update_option('mo2f_google_appname',$_SERVER['SERVER_NAME']);
279
- $res = $obj_google_auth->mo_GAuth_get_details(true);
280
- return $res;
281
- }
282
- function mo_2fa_configure_OTPOverSMS_setup_wizard()
283
- {
284
- global $Mo2fdbQueries;
285
- $user = wp_get_current_user();
286
- $mo2f_user_phone = $Mo2fdbQueries->get_user_detail( 'mo2f_user_phone', $user->ID );
287
- $user_phone = $mo2f_user_phone ? $mo2f_user_phone : get_option( 'user_phone_temp' );
288
- $session_id_encrypt = MO2f_Utility::random_str(20);
289
-
290
- ?>
291
- <h4 style="padding:10px; background-color: #a7c5eb;font-weight:normal"> Remaining SMS Transactions: <b><?php echo get_site_option('cmVtYWluaW5nT1RQVHJhbnNhY3Rpb25z');?> </b></h4>
292
- <form name="f" method="post" action="" id="mo2f_verifyphone_form">
293
- <input type="hidden" name="option" value="mo2f_configure_otp_over_sms_send_otp"/>
294
- <input type="hidden" name="mo2f_session_id" value="<?php echo $session_id_encrypt ?>"/>
295
- <input type="hidden" name="mo2f_configure_otp_over_sms_send_otp_nonce"
296
- value="<?php echo wp_create_nonce( "mo2f-configure-otp-over-sms-send-otp-nonce" ) ?>"/>
297
-
298
- <div style="display:inline;">
299
- <input class="mo2f_table_textbox_phone" style="width:200px;height: 30px;" type="text" name="phone" id="phone"
300
- value="<?php echo $user_phone ?>" pattern="[\+]?[0-9]{1,4}\s?[0-9]{7,12}"
301
- title="<?php echo mo2f_lt( 'Enter phone number without any space or dashes' ); ?>"/><br>
302
- <input type="button" name="mo2f_send_otp" id="mo2f_send_otp" class="miniorange_button"
303
- value="<?php echo mo2f_lt( 'Send OTP' ); ?>"/>
304
- </div>
305
- </form>
306
- <br>
307
- <form name="f" method="post" action="" id="mo2f_validateotp_form">
308
- <input type="hidden" name="option" value="mo2f_configure_otp_over_sms_validate"/>
309
- <input type="hidden" name="mo2f_session_id" value="<?php echo $session_id_encrypt ?>"/>
310
- <input type="hidden" name="mo2f_configure_otp_over_sms_validate_nonce"
311
- value="<?php echo wp_create_nonce( "mo2f-configure-otp-over-sms-validate-nonce" ) ?>"/>
312
- <p><?php echo mo2f_lt( 'Enter One Time Passcode' ); ?></p>
313
- <input class="mo2f_table_textbox_phone" style="width:200px;height: 30px" autofocus="true" type="text" name="mo2f_otp_token" id="mo2f_otp_token"
314
- placeholder="<?php echo mo2f_lt( 'Enter OTP' ); ?>" style="width:95%;"/>
315
- <br><br>
316
- </form><br>
317
-
318
- <?php
319
- exit;
320
- }
321
- function mo_2fa_configure_OTPOverEmail_setup_wizard()
322
- {
323
- $session_id_encrypt = MO2f_Utility::random_str(20);
324
- $user_email = wp_get_current_user()->user_email;
325
- ?>
326
- <h4 style="padding:10px; background-color: #f1f3f5"> Remaining Email Transactions: <b><?php echo get_site_option('cmVtYWluaW5nT1RQ');?> </b></h4>
327
- <form name="f" method="post" action="" id="mo2f_verifyemail_form">
328
- <input type="hidden" name="option" value="mo2f_configure_otp_over_email_send_otp"/>
329
- <input type="hidden" name="mo2f_session_id" value="<?php echo $session_id_encrypt ?>"/>
330
- <input type="hidden" name="mo2f_configure_otp_over_email_send_otp_nonce"
331
- value="<?php echo wp_create_nonce( "mo2f-configure-otp-over-email-send-otp-nonce" ) ?>"/>
332
-
333
- <div style="display:inline;">
334
- <b>Email Address: </b>
335
- <input class="mo2f_table_textbox" style="width:280px;height: 30px;" type="email" name="verify_phone" id="phone"
336
- value="<?php echo $user_email ?>"
337
- title="<?php echo mo2f_lt( 'Enter your email address without any space or dashes' ); ?>"/><br><br>
338
- <input type="button" name="mo2f_send_otp" id="mo2f_send_otp" class="miniorange_button"
339
- value="<?php echo mo2f_lt( 'Send OTP' ); ?>"/>
340
- </div>
341
- </form>
342
- <br><br>
343
- <form name="f" method="post" action="" id="mo2f_validateotp_form">
344
- <input type="hidden" name="option" value="mo2f_configure_otp_over_sms_validate"/>
345
- <input type="hidden" name="mo2f_session_id" value="<?php echo $session_id_encrypt ?>"/>
346
- <input type="hidden" name="mo2f_configure_otp_over_email_validate_nonce"
347
- value="<?php echo wp_create_nonce( "mo2f-configure-otp-over-email-validate-nonce" ) ?>"/>
348
- <b><?php echo mo2f_lt( 'Enter One Time Passcode:' ); ?>
349
- <input class="mo2f_table_textbox" style="width:200px;height: 30px;" autofocus="true" type="text" name="mo2f_otp_token" id ="mo2f_otp_token"
350
- placeholder="<?php echo mo2f_lt( 'Enter OTP' ); ?>" style="width:95%;"/></b>
351
- <br><br>
352
- </form><br>
353
-
354
- <?php
355
- exit;
356
- }
357
- function mo_2fa_configure_KBA_setup_wizard()
358
- {
359
- ?>
360
- <div class="mo2f_kba_header"><?php echo mo2f_lt( 'Please choose 3 questions' ); ?></div>
361
- <br>
362
- <table cellspacing="10">
363
- <tr class="mo2f_kba_header">
364
- <th style="width: 10%;">
365
- <?php echo mo2f_lt( 'Sr. No.' ); ?>
366
- </th>
367
- <th class="mo2f_kba_tb_data">
368
- <?php echo mo2f_lt( 'Questions' ); ?>
369
- </th>
370
- <th>
371
- <?php echo mo2f_lt( 'Answers' ); ?>
372
- </th>
373
- </tr>
374
- <tr class="mo2f_kba_body">
375
- <td>
376
- <center>1.</center>
377
- </td>
378
- <td class="mo2f_kba_tb_data">
379
- <select name="mo2f_kbaquestion_1" id="mo2f_kbaquestion_1" class="mo2f_kba_ques" required="true"
380
- >
381
- <option value="" selected="selected">
382
- -------------------------<?php echo mo2f_lt( 'Select your question' ); ?>
383
- -------------------------
384
- </option>
385
- <option id="mq1_1"
386
- value="What is your first company name?"><?php echo mo2f_lt( 'What is your first company name?' ); ?></option>
387
- <option id="mq2_1"
388
- value="What was your childhood nickname?"><?php echo mo2f_lt( 'What was your childhood nickname?' ); ?></option>
389
- <option id="mq3_1"
390
- value="In what city did you meet your spouse/significant other?"><?php echo mo2f_lt( 'In what city did you meet your spouse/significant other?' ); ?></option>
391
- <option id="mq4_1"
392
- value="What is the name of your favorite childhood friend?"><?php echo mo2f_lt( 'What is the name of your favorite childhood friend?' ); ?></option>
393
- <option id="mq5_1"
394
- value="What school did you attend for sixth grade?"><?php echo mo2f_lt( 'What school did you attend for sixth grade?' ); ?></option>
395
- <option id="mq6_1"
396
- value="In what city or town was your first job?"><?php echo mo2f_lt( 'In what city or town was your first job?' ); ?></option>
397
- <option id="mq7_1"
398
- value="What is your favourite sport?"><?php echo mo2f_lt( 'What is your favourite sport?' ); ?></option>
399
- <option id="mq8_1"
400
- value="Who is your favourite sports player?"><?php echo mo2f_lt( 'Who is your favourite sports player?' ); ?></option>
401
- <option id="mq9_1"
402
- value="What is your grandmother's maiden name?"><?php echo mo2f_lt( "What is your grandmother's maiden name?" ); ?></option>
403
- <option id="mq10_1"
404
- value="What was your first vehicle's registration number?"><?php echo mo2f_lt( "What was your first vehicle's registration number?" ); ?></option>
405
- </select>
406
- </td>
407
- <td style="text-align: end;">
408
- <input class="mo2f_table_textbox_KBA" type="password" name="mo2f_kba_ans1" id="mo2f_kba_ans1"
409
- title="<?php echo mo2f_lt( 'Only alphanumeric letters with special characters(_@.$#&amp;+-) are allowed.' ); ?>"
410
- pattern="(?=\S)[A-Za-z0-9_@.$#&amp;+\-\s]{1,100}" required="true" autofocus="true"
411
- placeholder="<?php echo mo2f_lt( 'Enter your answer' ); ?>"/>
412
- </td>
413
- </tr>
414
- <tr class="mo2f_kba_body">
415
- <td>
416
- <center>2.</center>
417
- </td>
418
- <td class="mo2f_kba_tb_data">
419
- <select name="mo2f_kbaquestion_2" id="mo2f_kbaquestion_2" class="mo2f_kba_ques" required="true"
420
- >
421
- <option value="" selected="selected">
422
- -------------------------<?php echo mo2f_lt( 'Select your question' ); ?>
423
- -------------------------
424
- </option>
425
- <option id="mq1_2"
426
- value="What is your first company name?"><?php echo mo2f_lt( 'What is your first company name?' ); ?></option>
427
- <option id="mq2_2"
428
- value="What was your childhood nickname?"><?php echo mo2f_lt( 'What was your childhood nickname?' ); ?></option>
429
- <option id="mq3_2"
430
- value="In what city did you meet your spouse/significant other?"><?php echo mo2f_lt( 'In what city did you meet your spouse/significant other?' ); ?></option>
431
- <option id="mq4_2"
432
- value="What is the name of your favorite childhood friend?"><?php echo mo2f_lt( 'What is the name of your favorite childhood friend?' ); ?></option>
433
- <option id="mq5_2"
434
- value="What school did you attend for sixth grade?"><?php echo mo2f_lt( 'What school did you attend for sixth grade?' ); ?></option>
435
- <option id="mq6_2"
436
- value="In what city or town was your first job?"><?php echo mo2f_lt( 'In what city or town was your first job?' ); ?></option>
437
- <option id="mq7_2"
438
- value="What is your favourite sport?"><?php echo mo2f_lt( 'What is your favourite sport?' ); ?></option>
439
- <option id="mq8_2"
440
- value="Who is your favourite sports player?"><?php echo mo2f_lt( 'Who is your favourite sports player?' ); ?></option>
441
- <option id="mq9_2"
442
- value="What is your grandmother's maiden name?"><?php echo mo2f_lt( 'What is your grandmother\'s maiden name?' ); ?></option>
443
- <option id="mq10_2"
444
- value="What was your first vehicle's registration number?"><?php echo mo2f_lt( 'What was your first vehicle\'s registration number?' ); ?></option>
445
- </select>
446
- </td>
447
- <td style="text-align: end;">
448
- <input class="mo2f_table_textbox_KBA" type="password" name="mo2f_kba_ans2" id="mo2f_kba_ans2"
449
- title="<?php echo mo2f_lt( 'Only alphanumeric letters with special characters(_@.$#&amp;+-) are allowed.' ); ?>"
450
- pattern="(?=\S)[A-Za-z0-9_@.$#&amp;+\-\s]{1,100}" required="true"
451
- placeholder="<?php echo mo2f_lt( 'Enter your answer' ); ?>"/>
452
- </td>
453
- </tr>
454
- <tr class="mo2f_kba_body">
455
- <td>
456
- <center>3.</center>
457
- </td>
458
- <td class="mo2f_kba_tb_data">
459
- <input class="mo2f_kba_ques" type="text" style="width: 100%;"name="mo2f_kbaquestion_3" id="mo2f_kbaquestion_3"
460
- required="true"
461
- placeholder="<?php echo mo2f_lt( 'Enter your custom question here' ); ?>"/>
462
- </td>
463
- <td style="text-align: end;">
464
- <input class="mo2f_table_textbox_KBA" type="password" name="mo2f_kba_ans3" id="mo2f_kba_ans3"
465
- title="<?php echo mo2f_lt( 'Only alphanumeric letters with special characters(_@.$#&amp;+-) are allowed.' ); ?>"
466
- pattern="(?=\S)[A-Za-z0-9_@.$#&amp;+\-\s]{1,100}" required="true"
467
- placeholder="<?php echo mo2f_lt( 'Enter your answer' ); ?>"/>
468
- </td>
469
- </tr>
470
- </table>
471
- <script type="text/javascript">
472
- var mo_option_to_hide1;
473
- //hidden element in dropdown list 2
474
- var mo_option_to_hide2;
475
-
476
- function mo_option_hide(list) {
477
- //grab the team selected by the user in the dropdown list
478
- var list_selected = document.getElementById("mo2f_kbaquestion_" + list).selectedIndex;
479
- //if an element is currently hidden, unhide it
480
- if (typeof (mo_option_to_hide1) != "undefined" && mo_option_to_hide1 !== null && list == 2) {
481
- mo_option_to_hide1.style.display = 'block';
482
- } else if (typeof (mo_option_to_hide2) != "undefined" && mo_option_to_hide2 !== null && list == 1) {
483
- mo_option_to_hide2.style.display = 'block';
484
- }
485
- //select the element to hide and then hide it
486
- if (list == 1) {
487
- if (list_selected != 0) {
488
- mo_option_to_hide2 = document.getElementById("mq" + list_selected + "_2");
489
- mo_option_to_hide2.style.display = 'none';
490
- }
491
- }
492
- if (list == 2) {
493
- if (list_selected != 0) {
494
- mo_option_to_hide1 = document.getElementById("mq" + list_selected + "_1");
495
- mo_option_to_hide1.style.display = 'none';
496
- }
497
- }
498
- }
499
-
500
-
501
- </script>
502
-
503
- <?php
504
- exit;
505
- }
506
-
507
- function mo2f_register_customer($post)
508
- {
509
- //validate and sanitize
510
- global $moWpnsUtility, $Mo2fdbQueries;
511
- $user = wp_get_current_user();
512
- $email = sanitize_email($post['email']);
513
- $company = $_SERVER["SERVER_NAME"];
514
-
515
- $password = $post['password'];
516
- $confirmPassword = $post['confirmPassword'];
517
-
518
- if( strlen( $password ) < 6 || strlen( $confirmPassword ) < 6)
519
- {
520
- return "Password length is less then expected";
521
- }
522
-
523
- if( $password != $confirmPassword )
524
- {
525
- return "Password and confirm Password does not match.";
526
- }
527
- if( MoWpnsUtility::check_empty_or_null( $email ) || MoWpnsUtility::check_empty_or_null( $password )
528
- || MoWpnsUtility::check_empty_or_null( $confirmPassword ) )
529
- {
530
- return "Unknown Error has occured.";
531
- }
532
-
533
- update_option( 'mo2f_email', $email );
534
-
535
- update_option( 'mo_wpns_company' , $company );
536
-
537
- update_option( 'mo_wpns_password' , $password );
538
-
539
- $customer = new MocURL();
540
- $content = json_decode($customer->check_customer($email), true);
541
- $Mo2fdbQueries->insert_user( $user->ID );
542
-
543
- switch ($content['status'])
544
- {
545
- case 'CUSTOMER_NOT_FOUND':
546
- $customerKey = json_decode($customer->create_customer($email, $company, $password, $phone = '', $first_name = '', $last_name = ''), true);
547
-
548
- if(strcasecmp($customerKey['status'], 'SUCCESS') == 0)
549
- {
550
- update_site_option(base64_encode("totalUsersCloud"),get_site_option(base64_encode("totalUsersCloud"))+1);
551
- update_option( 'mo2f_email', $email );
552
- $this->save_success_customer_config($email, $customerKey['id'], $customerKey['apiKey'], $customerKey['token'], $customerKey['appSecret']);
553
- $this->_get_current_customer($email,$password);
554
- return "SUCCESS";
555
- }
556
-
557
  break;
558
- default:
559
- $res = $this->_get_current_customer($email,$password);
560
- if($res == "SUCCESS")
561
- return $res;
562
- return "Email is already registered in miniOrange. Please try to login to your account.";
563
-
564
- }
565
-
566
- }
567
- function _verify_customer($post)
568
- {
569
- global $moWpnsUtility;
570
- $email = sanitize_email( $post['email'] );
571
- $password = sanitize_text_field( $post['password'] );
572
-
573
- if( $moWpnsUtility->check_empty_or_null( $email ) || $moWpnsUtility->check_empty_or_null( $password ) )
574
- {
575
- return "Username or Password is missing.";
576
- }
577
- return $this->_get_current_customer($email,$password);
578
- }
579
- function _get_current_customer($email,$password)
580
- {
581
- global $Mo2fdbQueries;
582
- $user = wp_get_current_user();
583
- $customer = new MocURL();
584
- $content = $customer->get_customer_key($email, $password);
585
- $customerKey = json_decode($content, true);
586
- if(json_last_error() == JSON_ERROR_NONE)
587
- {
588
- if(isset($customerKey['phone'])){
589
- update_option( 'mo_wpns_admin_phone', $customerKey['phone'] );
590
- }
591
- update_option('mo2f_email',$email);
592
-
593
- $this->save_success_customer_config($email, $customerKey['id'], $customerKey['apiKey'], $customerKey['token'], $customerKey['appSecret']);
594
- update_site_option(base64_encode("totalUsersCloud"),get_site_option(base64_encode("totalUsersCloud"))+1);
595
- $customerT = new Customer_Cloud_Setup();
596
- $content = json_decode( $customerT->get_customer_transactions( get_option( 'mo2f_customerKey' ), get_option( 'mo2f_api_key' ),'PREMIUM' ), true );
597
- if($content['status'] == 'SUCCESS')
598
- {
599
- update_site_option('mo2f_license_type','PREMIUM');
600
- }
601
- else
602
- {
603
- update_site_option('mo2f_license_type','DEMO');
604
- $content = json_decode( $customerT->get_customer_transactions( get_option( 'mo2f_customerKey' ), get_option( 'mo2f_api_key' ),'DEMO' ), true );
605
- }
606
- if(isset($content['smsRemaining']))
607
- update_site_option('cmVtYWluaW5nT1RQVHJhbnNhY3Rpb25z',$content['smsRemaining']);
608
- else if($content['status'] =='SUCCESS')
609
- update_site_option('cmVtYWluaW5nT1RQVHJhbnNhY3Rpb25z',0);
610
-
611
- if(isset($content['emailRemaining']))
612
- {
613
- if($content['emailRemaining']>30)
614
- {
615
- $currentTransaction = $content['emailRemaining'];
616
- update_site_option('cmVtYWluaW5nT1RQ',$currentTransaction);
617
- update_site_option('EmailTransactionCurrent',$content['emailRemaining']);
618
- }
619
- else if($content['emailRemaining'] == 10 and get_site_option('cmVtYWluaW5nT1RQ')>30)
620
- {
621
- update_site_option('cmVtYWluaW5nT1RQ',30);
622
- }
623
- }
624
- return "SUCCESS";
625
- }
626
- else
627
- {
628
- update_option('mo_2factor_user_registration_status','MO_2_FACTOR_VERIFY_CUSTOMER' );
629
- update_option('mo_wpns_verify_customer', 'true');
630
- delete_option('mo_wpns_new_registration');
631
- return "Invalid Username or Password";
632
  }
633
  }
634
-
635
-
636
- function save_success_customer_config($email, $id, $apiKey, $token, $appSecret)
637
- {
638
- global $Mo2fdbQueries;
639
-
640
- $user = wp_get_current_user();
641
- update_option( 'mo2f_customerKey' , $id );
642
- update_option( 'mo2f_api_key' , $apiKey );
643
- update_option( 'mo2f_customer_token' , $token );
644
- update_option( 'mo2f_app_secret' , $appSecret );
645
- update_option( 'mo_wpns_enable_log_requests' , true );
646
- update_option( 'mo2f_miniorange_admin', $user->ID );
647
- update_option( 'mo_2factor_admin_registration_status', 'MO_2_FACTOR_CUSTOMER_REGISTERED_SUCCESS' );
648
- update_option( 'mo_2factor_user_registration_status', 'MO_2_FACTOR_PLUGIN_SETTINGS' );
649
-
650
- $Mo2fdbQueries->update_user_details( $user->ID, array(
651
- 'mo2f_user_email' => $email,
652
- 'user_registration_with_miniorange' => 'SUCCESS'
653
- ) );
654
- $enduser = new Two_Factor_Setup();
655
- $userinfo = json_decode( $enduser->mo2f_get_userinfo( $email ), true );
656
-
657
-
658
- delete_option( 'mo_wpns_verify_customer' );
659
- delete_option( 'mo_wpns_registration_status' );
660
- delete_option( 'mo_wpns_password' );
661
- }
662
-
663
- function mo_wpns_register_verify_customer()
664
- {
665
- $res ="";
666
- if(isset($_POST['Login_and_Continue']) && $_POST['Login_and_Continue'] =='Login and Continue')
667
- $res = $this->_verify_customer($_POST);
668
-
669
- else
670
- $res = $this->mo2f_register_customer($_POST);
671
- wp_send_json($res);
672
- }
673
- function mo2f_select_method_setup_wizard()
674
  {
675
  global $Mo2fdbQueries;
676
  if(!wp_verify_nonce(sanitize_text_field($_POST['nonce']),'miniorange-select-method-setup-wizard'))
@@ -711,90 +92,17 @@ class mo_2f_ajax
711
  update_user_meta( $current_user->ID, 'configure_2FA', 1);
712
  wp_send_json("SUCCESS");
713
  }
714
- function mo2f_set_miniorange_methods(){
715
- $nonce = sanitize_text_field($_POST['nonce']);
716
- if ( ! wp_verify_nonce( $nonce, 'mo2f-update-mobile-nonce' ) ) {
717
- $error = new WP_Error();
718
- $error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
719
- wp_send_json_error($error);
720
- exit;
721
- }
722
- global $Mo2fdbQueries;
723
- $transient_id=sanitize_text_field($_POST['transient_id']);
724
- $user_id = MO2f_Utility::mo2f_get_transient($transient_id, 'mo2f_user_id');
725
- if(empty($user_id)){
726
- wp_send_json('UserIdNotFound');
727
- }
728
- $user = get_user_by('id',$user_id);
729
- $email = !empty($Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user_id ))?$Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user_id ):$user->user_email;
730
- $otpToken=sanitize_text_field($_POST['code']);
731
- $customer = new Customer_Setup();
732
- $content = json_decode( $customer->validate_otp_token( 'SOFT TOKEN', $email, null, $otpToken, get_option( 'mo2f_customerKey' ), get_option( 'mo2f_api_key' ) ), true );
733
- wp_send_json($content);
734
- }
735
- function mo2f_set_otp_over_sms(){
736
- $nonce = sanitize_text_field($_POST['nonce']);
737
- if ( ! wp_verify_nonce( $nonce, 'mo2f-update-mobile-nonce' ) ) {
738
- $error = new WP_Error();
739
- $error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
740
- wp_send_json_error($error);
741
- exit;
742
- }
743
- global $Mo2fdbQueries;
744
- $transient_id=sanitize_text_field($_POST['transient_id']);
745
- $user_id = MO2f_Utility::mo2f_get_transient($transient_id, 'mo2f_user_id');
746
- if(empty($user_id)){
747
- wp_send_json('UserIdNotFound');
748
- }
749
- $user = get_user_by('id',$user_id);
750
- $new_phone = sanitize_text_field($_POST['phone']);
751
- $new_phone = str_replace(' ','',$new_phone);
752
- $Mo2fdbQueries->update_user_details($user_id, array("mo2f_user_phone" => $new_phone) );
753
- $user_phone = $Mo2fdbQueries->get_user_detail( 'mo2f_user_phone', $user_id );
754
- wp_send_json($user_phone);
755
- }
756
- function mo2f_set_GA(){
757
- $nonce = sanitize_text_field($_POST['nonce']);
758
- if ( ! wp_verify_nonce( $nonce, 'mo2f-update-mobile-nonce' ) ) {
759
- $error = new WP_Error();
760
- $error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
761
- wp_send_json_error($error);
762
  exit;
763
  }
764
- include_once dirname(dirname(dirname( __FILE__ ))) .DIRECTORY_SEPARATOR.'handler'. DIRECTORY_SEPARATOR.'twofa'. DIRECTORY_SEPARATOR. 'gaonprem.php';
765
- global $Mo2fdbQueries;
766
- $transient_id=sanitize_text_field($_POST['transient_id']);
767
- $user_id = MO2f_Utility::mo2f_get_transient($transient_id, 'mo2f_user_id');
768
- if(empty($user_id)){
769
- wp_send_json('UserIdNotFound');
770
- }
771
- $google_auth = new Miniorange_Rba_Attributes();
772
- $user = get_user_by('id',$user_id);
773
- $email = !empty($Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user_id ))?$Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user_id ):$user->user_email;
774
- $otpToken = sanitize_text_field($_POST['code']);
775
- $ga_secret = sanitize_text_field($_POST['ga_secret']);
776
- if(MO2F_IS_ONPREM){
777
- $gauth_obj = new Google_auth_onpremise();
778
- $gauth_obj->mo_GAuth_set_secret($user_id, $ga_secret);
779
- }else{
780
-
781
- $google_auth = new Miniorange_Rba_Attributes();
782
- $google_response = json_decode( $google_auth->mo2f_google_auth_service( $email, 'miniOrangeAu' ), true );
783
- }
784
- $google_response = json_decode($google_auth->mo2f_validate_google_auth($email,$otpToken,$ga_secret),true);
785
- wp_send_json($google_response['status']);
786
  }
787
- function mo2f_ajax_login_redirect()
788
- {
789
- if(!wp_verify_nonce(sanitize_text_field($_POST['nonce']),'miniorange-2-factor-login-nonce'))
790
- {
791
- wp_send_json("ERROR");
792
- exit;
793
- }
794
- $username = sanitize_text_field($_POST['username']);
795
- $password = $_POST['password'];
796
- apply_filters( 'authenticate', null, $username, $password );
797
- }
798
  function mo2f_save_custom_form_settings()
799
  {
800
 
@@ -1053,23 +361,6 @@ function mo2f_shift_to_onprem(){
1053
  wp_send_json('false');
1054
  }
1055
  }
1056
- function mo2f_enable_disable_configurd_methods(){
1057
- $nonce = sanitize_text_field($_POST['nonce']);
1058
-
1059
- if ( ! wp_verify_nonce( $nonce, 'WAFsettingNonce_configurd_methods' ) ) {
1060
- wp_send_json_error("error");
1061
- }
1062
- $enable = sanitize_text_field($_POST['mo2f_nonce_enable_configured_methods']);
1063
-
1064
- if($enable == 'true'){
1065
- update_site_option('mo2f_nonce_enable_configured_methods' ,true);
1066
- wp_send_json('true');
1067
- }
1068
- else{
1069
- update_site_option('mo2f_nonce_enable_configured_methods' , false);
1070
- wp_send_json('false');
1071
- }
1072
- }
1073
 
1074
  function mo2f_role_based_2_factor(){
1075
  if ( !wp_verify_nonce($_POST['nonce'],'unlimittedUserNonce') ){
12
  }
13
 
14
  function mo_two_factor_ajax(){
15
+
16
  $GLOBALS['mo2f_is_ajax_request'] = true;
17
  switch ($_POST['mo_2f_two_factor_ajax']) {
18
  case 'mo2f_ajax_login_redirect':
33
  $this->mo2f_enable_disable_twofactor(); break;
34
  case 'mo2f_enable_disable_inline':
35
  $this->mo2f_enable_disable_inline(); break;
 
 
36
  case 'mo2f_shift_to_onprem':
37
  $this->mo2f_shift_to_onprem();break;
38
  case 'mo2f_enable_disable_twofactor_prompt_on_login':
46
  case 'mo2f_delete_log_file':
47
  $this->mo2f_delete_log_file();
48
  break;
49
+ case 'select_method_setup_wizard':
50
+ $this->select_method_setup_wizard();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  break;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52
  }
53
  }
54
+ function select_method_setup_wizard()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
  {
56
  global $Mo2fdbQueries;
57
  if(!wp_verify_nonce(sanitize_text_field($_POST['nonce']),'miniorange-select-method-setup-wizard'))
92
  update_user_meta( $current_user->ID, 'configure_2FA', 1);
93
  wp_send_json("SUCCESS");
94
  }
95
+ function mo2f_ajax_login_redirect()
96
+ {
97
+ if(!wp_verify_nonce(sanitize_text_field($_POST['nonce']),'miniorange-2-factor-login-nonce'))
98
+ {
99
+ wp_send_json("ERROR");
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
100
  exit;
101
  }
102
+ $username = sanitize_text_field($_POST['username']);
103
+ $password = $_POST['password'];
104
+ apply_filters( 'authenticate', null, $username, $password );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
105
  }
 
 
 
 
 
 
 
 
 
 
 
106
  function mo2f_save_custom_form_settings()
107
  {
108
 
361
  wp_send_json('false');
362
  }
363
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
364
 
365
  function mo2f_role_based_2_factor(){
366
  if ( !wp_verify_nonce($_POST['nonce'],'unlimittedUserNonce') ){
controllers/upgrade.php CHANGED
@@ -1,5 +1,4 @@
1
  <?php
2
  include $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'upgrade.php';
3
  MoWpnsUtility::checkSecurity();
4
- update_site_option("mo_2fa_pnp",time());
5
- update_site_option("mo2fa_visit",intval(get_site_option("mo2fa_visit",0))+1);
1
  <?php
2
  include $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'upgrade.php';
3
  MoWpnsUtility::checkSecurity();
4
+ update_site_option("mo_2fa_pnp",time());
 
controllers/wpns-loginsecurity-ajax.php CHANGED
@@ -4,7 +4,7 @@ class wpns_ajax
4
  function __construct(){
5
  //add comment here
6
  add_action( 'admin_init' , array( $this, 'mo_login_security_ajax' ) );
7
- add_action('init', array( $this, 'mo2fa_elementor_ajax_fun' ));
8
  }
9
 
10
  function mo_login_security_ajax(){
@@ -25,27 +25,6 @@ class wpns_ajax
25
  $this->mo2f_ajax_otp(); break;
26
  }
27
  }
28
- function mo2fa_elementor_ajax_fun()
29
- {
30
-
31
- if (isset( $_POST['miniorange_elementor_login_nonce'])){
32
- $nonce = sanitize_text_field($_POST['miniorange_elementor_login_nonce']);
33
- if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-login-nonce' ) ){
34
- wp_send_json('ERROR');
35
- }
36
- if(isset($_POST['mo2fa_elementor_user_password']) && !empty($_POST['mo2fa_elementor_user_password']) && isset($_POST['mo2fa_elementor_user_name']))
37
- {
38
- $info = array();
39
- $info['user_login'] = sanitize_text_field($_POST['mo2fa_elementor_user_name']);
40
- $info['user_password'] = $_POST['mo2fa_elementor_user_password'];
41
- $info['remember'] = false;
42
- $user_signon = wp_signon($info, false);
43
- if (is_wp_error($user_signon)) {
44
- wp_send_json(array('loggedin'=>false, 'message'=>__('Wrong username or password.')));
45
- }
46
- }
47
- }
48
- }
49
  function wpns_login_security(){
50
  switch($_POST['wpns_loginsecurity_ajax'])
51
  {
@@ -85,15 +64,15 @@ class wpns_ajax
85
  function update_plan(){
86
  $mo2f_all_plannames = $_POST['planname'];
87
  $mo_2fa_plan_type = $_POST['planType'];
88
- update_site_option('mo2f_planname', $mo2f_all_plannames);
89
  if ($mo2f_all_plannames == 'addon_plan')
90
  {
91
- update_site_option('mo2f_planname', 'addon_plan');
92
  update_site_option('mo_2fa_addon_plan_type',$mo_2fa_plan_type);
93
  }
94
  elseif ($mo2f_all_plannames == '2fa_plan')
95
  {
96
- update_site_option('mo2f_planname', '2fa_plan');
97
  update_site_option('mo_2fa_plan_type',$mo_2fa_plan_type);
98
  }
99
  }
@@ -216,15 +195,15 @@ class wpns_ajax
216
  {
217
  $mo2f_all_plannames = $_POST['planname'];
218
  $mo_2fa_plan_type = $_POST['planType'];
219
- update_site_option('mo2f_planname', $mo2f_all_plannames);
220
  if ($mo2f_all_plannames == 'addon_plan')
221
  {
222
- update_site_option('mo2f_planname', 'addon_plan');
223
  update_site_option('mo_2fa_addon_plan_type',$mo_2fa_plan_type);
224
  }
225
  elseif ($mo2f_all_plannames == '2fa_plan')
226
  {
227
- update_site_option('mo2f_planname', '2fa_plan');
228
  update_site_option('mo_2fa_plan_type',$mo_2fa_plan_type);
229
  }
230
  }
4
  function __construct(){
5
  //add comment here
6
  add_action( 'admin_init' , array( $this, 'mo_login_security_ajax' ) );
7
+
8
  }
9
 
10
  function mo_login_security_ajax(){
25
  $this->mo2f_ajax_otp(); break;
26
  }
27
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  function wpns_login_security(){
29
  switch($_POST['wpns_loginsecurity_ajax'])
30
  {
64
  function update_plan(){
65
  $mo2f_all_plannames = $_POST['planname'];
66
  $mo_2fa_plan_type = $_POST['planType'];
67
+ update_option('mo2f_planname', $mo2f_all_plannames);
68
  if ($mo2f_all_plannames == 'addon_plan')
69
  {
70
+ update_option('mo2f_planname', 'addon_plan');
71
  update_site_option('mo_2fa_addon_plan_type',$mo_2fa_plan_type);
72
  }
73
  elseif ($mo2f_all_plannames == '2fa_plan')
74
  {
75
+ update_option('mo2f_planname', '2fa_plan');
76
  update_site_option('mo_2fa_plan_type',$mo_2fa_plan_type);
77
  }
78
  }
195
  {
196
  $mo2f_all_plannames = $_POST['planname'];
197
  $mo_2fa_plan_type = $_POST['planType'];
198
+ update_option('mo2f_planname', $mo2f_all_plannames);
199
  if ($mo2f_all_plannames == 'addon_plan')
200
  {
201
+ update_option('mo2f_planname', 'addon_plan');
202
  update_site_option('mo_2fa_addon_plan_type',$mo_2fa_plan_type);
203
  }
204
  elseif ($mo2f_all_plannames == '2fa_plan')
205
  {
206
+ update_option('mo2f_planname', '2fa_plan');
207
  update_site_option('mo_2fa_plan_type',$mo_2fa_plan_type);
208
  }
209
  }
database/database_functions_2fa.php CHANGED
@@ -211,6 +211,7 @@ class Mo2fDB {
211
  );
212
  return $count;
213
  }
 
214
  function get_all_user_2fa_methods() {
215
  global $wpdb;
216
  $all_methods = [];
@@ -321,11 +322,6 @@ class Mo2fDB {
321
 
322
  return $value == '' ? '' : $value[ $column_name ];
323
  }
324
- function get_user_configured_methods( $user_id ) {
325
- global $wpdb;
326
- $user_methods_detail = $wpdb->get_results( "SELECT * FROM " . $this->userDetailsTable . " WHERE user_id = " . $user_id . ";" );
327
- return $user_methods_detail;
328
- }
329
 
330
  function delete_user_login_sessions($session_id ) {
331
  global $wpdb;
211
  );
212
  return $count;
213
  }
214
+
215
  function get_all_user_2fa_methods() {
216
  global $wpdb;
217
  $all_methods = [];
322
 
323
  return $value == '' ? '' : $value[ $column_name ];
324
  }
 
 
 
 
 
325
 
326
  function delete_user_login_sessions($session_id ) {
327
  global $wpdb;
database/mo2f_db_options.php CHANGED
@@ -21,7 +21,6 @@ $GLOBALS['scheduled_db_backup'] = 0;
21
  $GLOBALS['file_backup_created_time'] = 0;
22
  $GLOBALS['db_backup_created_time'] = 0;
23
  $GLOBALS['mo2f_inline_registration'] = 1;
24
- $GLOBALS['mo2f_nonce_enable_configured_methods'] = true;
25
  $GLOBALS['mo_database_backup'] = 1;
26
  $GLOBALS['mo_wpns_scan_initialize'] = 1;
27
  $GLOBALS['mo_file_manual_backup_plugins'] = 1;
@@ -37,4 +36,3 @@ $GLOBALS['mo2f_is_NC'] = 1;
37
  $GLOBALS['mo2f_is_NNC'] = 1;
38
  $GLOBALS['mo2f_enforce_strong_passswords'] = false;
39
  $GLOBALS['mo2f_enable_debug_log'] = 0;
40
- $GLOBALS['mo2f_trial_query_sent'] = false;
21
  $GLOBALS['file_backup_created_time'] = 0;
22
  $GLOBALS['db_backup_created_time'] = 0;
23
  $GLOBALS['mo2f_inline_registration'] = 1;
 
24
  $GLOBALS['mo_database_backup'] = 1;
25
  $GLOBALS['mo_wpns_scan_initialize'] = 1;
26
  $GLOBALS['mo_file_manual_backup_plugins'] = 1;
36
  $GLOBALS['mo2f_is_NNC'] = 1;
37
  $GLOBALS['mo2f_enforce_strong_passswords'] = false;
38
  $GLOBALS['mo2f_enable_debug_log'] = 0;
 
handler/ajax.php CHANGED
@@ -41,10 +41,6 @@ class AjaxHandler
41
  case "plugin_warning_never_show_again":
42
  $this->wpns_plugin_warning_never_show_again();
43
  break;
44
-
45
- case "mo2f_banner_never_show_again":
46
- $this->wpns_mo2f_banner_never_show_again();
47
- break;
48
 
49
  case "dismissSms":
50
  $this->wpns_sms_notice(); break;
@@ -60,8 +56,6 @@ class AjaxHandler
60
 
61
  case "dismisscodeswarning":
62
  $this->mo2f_backup_codes_dismiss(); break;
63
-
64
-
65
  }
66
  }
67
  }
@@ -144,12 +138,6 @@ class AjaxHandler
144
  wp_send_json('success');
145
  }
146
 
147
- function wpns_mo2f_banner_never_show_again(){
148
- update_site_option('mo2f_banner_never_show_again', 1);
149
- wp_send_json('success');
150
- }
151
-
152
-
153
  function wpns_dismiss_firewall_notice(){
154
  update_site_option('waf_notification_option', 1);
155
  update_site_option('notice_dismiss_time',time());
@@ -181,7 +169,7 @@ class AjaxHandler
181
  update_user_meta($user_id, 'donot_show_backup_code_notice' , 1);
182
  wp_send_json('success');
183
  }
184
-
185
 
186
 
187
  }new AjaxHandler;
41
  case "plugin_warning_never_show_again":
42
  $this->wpns_plugin_warning_never_show_again();
43
  break;
 
 
 
 
44
 
45
  case "dismissSms":
46
  $this->wpns_sms_notice(); break;
56
 
57
  case "dismisscodeswarning":
58
  $this->mo2f_backup_codes_dismiss(); break;
 
 
59
  }
60
  }
61
  }
138
  wp_send_json('success');
139
  }
140
 
 
 
 
 
 
 
141
  function wpns_dismiss_firewall_notice(){
142
  update_site_option('waf_notification_option', 1);
143
  update_site_option('notice_dismiss_time',time());
169
  update_user_meta($user_id, 'donot_show_backup_code_notice' , 1);
170
  wp_send_json('success');
171
  }
172
+
173
 
174
 
175
  }new AjaxHandler;
handler/logger.php CHANGED
@@ -14,7 +14,6 @@ class mo2f_Logger
14
  global $moWpnsUtility;
15
  $mo_wpns_config = new MoWpnsHandler();
16
  $userIp = $moWpnsUtility->get_client_ip();
17
- $userIp = sanitize_text_field( $userIp );
18
  $url = $moWpnsUtility->get_current_url();
19
  $user = wp_get_current_user();
20
  $username = is_user_logged_in() ? $user->user_login : 'GUEST';
@@ -29,7 +28,6 @@ class mo2f_Logger
29
  return;
30
  $mo_wpns_config = new MoWpnsHandler();
31
  $userIp = $moWpnsUtility->get_client_ip();
32
- $userIp = sanitize_text_field( $userIp );
33
  $url = $moWpnsUtility->get_current_url();
34
  $user = wp_get_current_user();
35
  $username = is_user_logged_in() ? $user->user_login : 'GUEST';
14
  global $moWpnsUtility;
15
  $mo_wpns_config = new MoWpnsHandler();
16
  $userIp = $moWpnsUtility->get_client_ip();
 
17
  $url = $moWpnsUtility->get_current_url();
18
  $user = wp_get_current_user();
19
  $username = is_user_logged_in() ? $user->user_login : 'GUEST';
28
  return;
29
  $mo_wpns_config = new MoWpnsHandler();
30
  $userIp = $moWpnsUtility->get_client_ip();
 
31
  $url = $moWpnsUtility->get_current_url();
32
  $user = wp_get_current_user();
33
  $username = is_user_logged_in() ? $user->user_login : 'GUEST';
handler/login.php CHANGED
@@ -35,10 +35,7 @@ class LoginHandler
35
 
36
  function mo_wpns_init()
37
  {
38
- add_action( 'show_user_profile', array($this,'twofa_on_user_profile') ,10,3);
39
- add_action( 'edit_user_profile', array($this,'twofa_on_user_profile') ,10,3);
40
- add_action( 'personal_options_update', array( $this, 'user_two_factor_options_update' ) ,10,3);
41
- add_action( 'edit_user_profile_update', array( $this, 'user_two_factor_options_update' ) ,10,3);
42
  global $moWpnsUtility,$mo2f_dirName;
43
  $WAFEnabled = get_option('WAFEnabled');
44
  $WAFLevel = get_option('WAF');
@@ -54,12 +51,15 @@ class LoginHandler
54
  {
55
  if(file_exists($mo2f_dirName .'handler'.DIRECTORY_SEPARATOR.'WAF'.DIRECTORY_SEPARATOR.'mo-waf-plugin.php'))
56
  include_once($mo2f_dirName .'handler'.DIRECTORY_SEPARATOR.'WAF'.DIRECTORY_SEPARATOR.'mo-waf-plugin.php');
 
 
 
 
57
  }
58
  }
59
 
60
 
61
  $userIp = $moWpnsUtility->get_client_ip();
62
- $userIp = sanitize_text_field( $userIp );
63
  $mo_wpns_config = new MoWpnsHandler();
64
  $isWhitelisted = $mo_wpns_config->is_whitelisted($userIp);
65
  $isIpBlocked = false;
@@ -113,44 +113,39 @@ class LoginHandler
113
  }
114
 
115
  }
116
- function twofa_on_user_profile( $user ) {
117
- global $mo2f_dirName;
118
- if(file_exists($mo2f_dirName .'handler'.DIRECTORY_SEPARATOR.'user-profile-2fa.php')){
119
- include_once($mo2f_dirName .'handler'.DIRECTORY_SEPARATOR.'user-profile-2fa.php');
120
- }
121
- }
122
- function user_two_factor_options_update( $user ) {
123
- global $mo2f_dirName;
124
- if(file_exists($mo2f_dirName .'handler'.DIRECTORY_SEPARATOR.'user-profile-2fa-update.php')){
125
- include_once($mo2f_dirName .'handler'.DIRECTORY_SEPARATOR.'user-profile-2fa-update.php');
126
- }
127
- }
128
 
129
  function mo2f_IP_email_send()
130
  {
131
- global $moWpnsUtility, $Mo2fdbQueries;
132
  $userIp = $moWpnsUtility->get_client_ip();
133
- $userIp = sanitize_text_field( $userIp );
134
- $user = wp_get_current_user();
135
- $user_id = $user->ID;
136
- $meta_key = 'mo2f_user_IP';
137
- add_user_meta($user->ID, $meta_key,$userIp);
138
- $email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user->ID);
139
- if (empty($email)) {
140
- $email = $user->user_email;
141
- }
142
- $check_Ip = get_user_meta($user->ID,$meta_key)[0];
143
 
144
  if ($check_Ip != $userIp)
145
- {
 
 
146
  $subject ="Alert: New IP Detected";
147
  $message = mo_IP_template();
148
  $headers=array('Content-Type: text/html; charset=UTF-8');
149
- if(is_email($email))
150
- {
151
- wp_mail( $email,$subject,$message,$headers);
152
- }
153
- }
 
 
 
 
 
 
 
 
 
154
  }
155
 
156
  function wooc_validate_user_captcha_register($username, $email, $validation_errors) {
@@ -291,7 +286,7 @@ class LoginHandler
291
 
292
  $mo_wpns_config = new MoWpnsHandler();
293
  $userIp = $moWpnsUtility->get_client_ip();
294
- $userIp = sanitize_text_field( $userIp );
295
  $mo_wpns_config->move_failed_transactions_to_past_failed($userIp);
296
 
297
  if(get_option('mo_wpns_enable_unusual_activity_email_to_user'))
@@ -335,7 +330,7 @@ class LoginHandler
335
  {
336
  global $moWpnsUtility;
337
  $userIp = $moWpnsUtility->get_client_ip();
338
- $userIp = sanitize_text_field( $userIp );
339
  if(empty($userIp) || empty($username) || !MoWpnsUtility::get_mo2f_db_option('mo2f_enable_brute_force', 'get_option'))
340
  return;
341
 
35
 
36
  function mo_wpns_init()
37
  {
38
+
 
 
 
39
  global $moWpnsUtility,$mo2f_dirName;
40
  $WAFEnabled = get_option('WAFEnabled');
41
  $WAFLevel = get_option('WAF');
51
  {
52
  if(file_exists($mo2f_dirName .'handler'.DIRECTORY_SEPARATOR.'WAF'.DIRECTORY_SEPARATOR.'mo-waf-plugin.php'))
53
  include_once($mo2f_dirName .'handler'.DIRECTORY_SEPARATOR.'WAF'.DIRECTORY_SEPARATOR.'mo-waf-plugin.php');
54
+ else
55
+ {
56
+ //UNable to find file. Please reconfigure.
57
+ }
58
  }
59
  }
60
 
61
 
62
  $userIp = $moWpnsUtility->get_client_ip();
 
63
  $mo_wpns_config = new MoWpnsHandler();
64
  $isWhitelisted = $mo_wpns_config->is_whitelisted($userIp);
65
  $isIpBlocked = false;
113
  }
114
 
115
  }
 
 
 
 
 
 
 
 
 
 
 
 
116
 
117
  function mo2f_IP_email_send()
118
  {
119
+ global $moWpnsUtility;
120
  $userIp = $moWpnsUtility->get_client_ip();
121
+
122
+ if(!get_site_option('mo2f_user_IP'))
123
+ {
124
+ update_site_option('mo2f_user_IP',$userIp );
125
+ }
126
+ $check_Ip = get_site_option('mo2f_user_IP');
 
 
 
 
127
 
128
  if ($check_Ip != $userIp)
129
+ {
130
+
131
+ $email = get_option('admin_email');
132
  $subject ="Alert: New IP Detected";
133
  $message = mo_IP_template();
134
  $headers=array('Content-Type: text/html; charset=UTF-8');
135
+ if(empty($email))
136
+ {
137
+ $user = wp_get_current_user();
138
+ $email = $user->user_email;
139
+ }
140
+ if(is_email($email))
141
+ {
142
+
143
+ wp_mail( $email,$subject,$message,$headers);
144
+
145
+ }
146
+
147
+ }
148
+
149
  }
150
 
151
  function wooc_validate_user_captcha_register($username, $email, $validation_errors) {
286
 
287
  $mo_wpns_config = new MoWpnsHandler();
288
  $userIp = $moWpnsUtility->get_client_ip();
289
+
290
  $mo_wpns_config->move_failed_transactions_to_past_failed($userIp);
291
 
292
  if(get_option('mo_wpns_enable_unusual_activity_email_to_user'))
330
  {
331
  global $moWpnsUtility;
332
  $userIp = $moWpnsUtility->get_client_ip();
333
+
334
  if(empty($userIp) || empty($username) || !MoWpnsUtility::get_mo2f_db_option('mo2f_enable_brute_force', 'get_option'))
335
  return;
336
 
handler/recaptcha.php CHANGED
@@ -24,7 +24,6 @@
24
  if(array_key_exists('g-recaptcha-response',$_POST))
25
  {
26
  $userIp = $moWpnsUtility->get_client_ip();
27
- $userIp = sanitize_text_field( $userIp );
28
  $mocURL = new MocURL;
29
  $response = $mocURL->validate_recaptcha($userIp,sanitize_text_field($_POST['g-recaptcha-response']));
30
  $content = json_decode($response, true);
@@ -42,7 +41,6 @@
42
  if(array_key_exists('g-recaptcha-response',$_REQUEST))
43
  {
44
  $userIp = $moWpnsUtility->get_client_ip();
45
- $userIp = sanitize_text_field( $userIp );
46
  $mocURL = new MocURL;
47
 
48
  $response = $mocURL->get_Captcha_v3($_REQUEST['g-recaptcha-response']);
@@ -136,7 +134,6 @@
136
  {
137
  global $moWpnsUtility;
138
  $userIp = $moWpnsUtility->get_client_ip();
139
- $userIp = sanitize_text_field( $userIp );
140
  $mocURL = new MocURL;
141
  $response = $mocURL->validate_recaptcha($userIp,$response);
142
  $content = json_decode($response, true);
@@ -148,7 +145,6 @@
148
  {
149
  global $moWpnsUtility;
150
  $userIp = $moWpnsUtility->get_client_ip();
151
- $userIp = sanitize_text_field( $userIp );
152
  $mocURL = new MocURL;
153
  $response = $mocURL->get_Captcha_v3($response);
154
  $content = json_decode($response, true);
24
  if(array_key_exists('g-recaptcha-response',$_POST))
25
  {
26
  $userIp = $moWpnsUtility->get_client_ip();
 
27
  $mocURL = new MocURL;
28
  $response = $mocURL->validate_recaptcha($userIp,sanitize_text_field($_POST['g-recaptcha-response']));
29
  $content = json_decode($response, true);
41
  if(array_key_exists('g-recaptcha-response',$_REQUEST))
42
  {
43
  $userIp = $moWpnsUtility->get_client_ip();
 
44
  $mocURL = new MocURL;
45
 
46
  $response = $mocURL->get_Captcha_v3($_REQUEST['g-recaptcha-response']);
134
  {
135
  global $moWpnsUtility;
136
  $userIp = $moWpnsUtility->get_client_ip();
 
137
  $mocURL = new MocURL;
138
  $response = $mocURL->validate_recaptcha($userIp,$response);
139
  $content = json_decode($response, true);
145
  {
146
  global $moWpnsUtility;
147
  $userIp = $moWpnsUtility->get_client_ip();
 
148
  $mocURL = new MocURL;
149
  $response = $mocURL->get_Captcha_v3($response);
150
  $content = json_decode($response, true);
handler/twofa/class_miniorange_2fa_strong_password.php CHANGED
@@ -20,7 +20,7 @@ class class_miniorange_2fa_strong_password {
20
  }
21
  public static function validatePassword($errors, $update, $userData){
22
  $Users = MoWpnsUtility::get_mo2f_db_option('mo2f_enforce_strong_passswords_for_accounts', 'get_option');
23
- $UserRole = isset($_POST['role'])?sanitize_text_field($_POST['role']):NULL;
24
  if(is_null($UserRole) and $Users == 'user')
25
  {
26
  return true;
20
  }
21
  public static function validatePassword($errors, $update, $userData){
22
  $Users = MoWpnsUtility::get_mo2f_db_option('mo2f_enforce_strong_passswords_for_accounts', 'get_option');
23
+ $UserRole = $_POST['role'];
24
  if(is_null($UserRole) and $Users == 'user')
25
  {
26
  return true;
handler/twofa/gaonprem.php CHANGED
@@ -6,7 +6,7 @@ class Google_auth_onpremise{
6
 
7
  }
8
 
9
- function mo_GAuth_get_details($setupWizard = false)
10
  {
11
 
12
  $user=wp_get_current_user();
@@ -28,16 +28,10 @@ class Google_auth_onpremise{
28
  $email=$user->user_email;
29
  $otpcode=$this->getCode($secret_ga);
30
  $url=$this->geturl($secret_ga ,$issuer,$email);
31
- if(!$setupWizard)
32
- {
33
  echo '<div class="mo2f_table_layout">';
34
  mo2f_configure_google_authenticator_onprem( $secret_ga ,$url,$otpcode, $session_id_encrypt );
35
  echo '</div>';
36
- }
37
- else
38
- {
39
- mo2f_configure_google_authenticator_setupWizard($secret_ga ,$url,$otpcode, $session_id_encrypt);
40
- }
41
  }
42
 
43
  function mo_GAuth_set_secret($user_id,$secret){
6
 
7
  }
8
 
9
+ function mo_GAuth_get_details()
10
  {
11
 
12
  $user=wp_get_current_user();
28
  $email=$user->user_email;
29
  $otpcode=$this->getCode($secret_ga);
30
  $url=$this->geturl($secret_ga ,$issuer,$email);
 
 
31
  echo '<div class="mo2f_table_layout">';
32
  mo2f_configure_google_authenticator_onprem( $secret_ga ,$url,$otpcode, $session_id_encrypt );
33
  echo '</div>';
34
+
 
 
 
 
35
  }
36
 
37
  function mo_GAuth_set_secret($user_id,$secret){
handler/twofa/setup_twofa.php CHANGED
@@ -81,11 +81,10 @@
81
 
82
  function mo2f_create_2fa_form( $user, $category, $auth_methods, $can_display_admin_features='' ) {
83
  global $Mo2fdbQueries;
84
-
85
  $miniorange_authenticator = array(
86
- "miniOrange QR Code Authentication",
87
- "miniOrange Soft Token",
88
- "miniOrange Push Notification",
89
  );
90
  $all_two_factor_methods = array(
91
  "miniOrange Authenticator",
@@ -120,6 +119,7 @@
120
  $two_factor_methods_doc = array(
121
  "Security Questions" => "https://developers.miniorange.com/docs/security/wordpress/wp-security/step-by-setup-guide-to-set-up-security-question",
122
  "Google Authenticator" => "https://developers.miniorange.com/docs/security/wordpress/wp-security/google-authenticator",
 
123
  "Email Verification" => "https://developers.miniorange.com/docs/security/wordpress/wp-security/email_verification",
124
  "miniOrange Soft Token" => "https://developers.miniorange.com/docs/security/wordpress/wp-security/step-by-setup-guide-to-set-up-miniorange-soft-token",
125
  "miniOrange Push Notification" => "https://developers.miniorange.com/docs/security/wordpress/wp-security/step-by-setup-guide-to-set-up-miniorange-push-notification",
@@ -134,7 +134,7 @@
134
  $two_factor_methods_video = array(
135
  "Security Questions" => "https://www.youtube.com/watch?v=pXPqQ047o-0",
136
  "Google Authenticator" => "https://www.youtube.com/watch?v=BS6tY-Goa1Q",
137
- "miniOrange Authenticator" => "https://www.youtube.com/watch?v=oRaGtKxouiI",
138
  "Email Verification" => "https://www.youtube.com/watch?v=OacJWBYx_AE",
139
  "miniOrange Soft Token" => "https://www.youtube.com/watch?v=9HV8V4f80k8",
140
  "miniOrange Push Notification" => "https://www.youtube.com/watch?v=it_dAhFcxvw",
@@ -312,23 +312,6 @@
312
 
313
  break;
314
 
315
- case 'miniOrange Authenticator':
316
- $form .=' <span style="float:right">';
317
- if(isset($two_factor_methods_doc[$auth_method])){
318
- $form .='<a href='.$two_factor_methods_doc[$auth_method].' target="_blank">
319
- <span title="View Setup Guide" class="dashicons dashicons-text-page" style="font-size:19px;color:#413c69;float: right;"></span>
320
- </a>';
321
- }
322
-
323
- if(isset($two_factor_methods_video[$auth_method])){
324
- $form .='<a href='.$two_factor_methods_video[$auth_method].' target="_blank">
325
- <span title="Watch Setup Video" class="dashicons dashicons-video-alt3" style="font-size:18px;color:red;float: right;margin-right: 5px;"></span>
326
- </a>';
327
- }
328
-
329
- $form .='</span>';
330
- break;
331
-
332
  case 'miniOrange QR Code Authentication':
333
  $form .=' <span style="float:right">
334
  <a href='.$two_factor_methods_doc[$auth_method].' target="_blank">
@@ -402,7 +385,7 @@
402
  if($auth_method_abr == 'miniOrangeAuthenticator'){
403
  $is_auth_method_configured = $Mo2fdbQueries->get_user_detail( 'mo2f_miniOrangeSoftToken_config_status', $user->ID );
404
  }else{
405
- $is_auth_method_configured = $Mo2fdbQueries->get_user_detail( 'mo2f_' . $auth_method_abr . '_config_status', $user->ID );
406
  }
407
  if(($auth_method == 'OUT OF BAND EMAIL' or $auth_method == 'OTP Over Email') and !MO2F_IS_ONPREM )
408
  $is_auth_method_configured = 1;
@@ -466,15 +449,15 @@
466
  $form .= $can_user_configure_2fa_method ? "" : " disabled ";
467
  $form .= $show==1 ? "" : " disabled ";
468
  if($show == 1 and $is_auth_method_configured and $iscurrentMethod == 0){
469
- $form .= '>Set as 2-factor</button>
470
- </div>';
471
  }else{
472
  $form .= '
473
  </button>
474
  </div>';
475
- }
476
  }
477
-
 
478
  }
479
  else
480
  {
@@ -516,7 +499,6 @@
516
  <option value="miniOrangePushNotification">Push Notification</option>
517
  </select></div>
518
  <br><br>
519
-
520
  ';
521
  }
522
  $form .= '</div>';
81
 
82
  function mo2f_create_2fa_form( $user, $category, $auth_methods, $can_display_admin_features='' ) {
83
  global $Mo2fdbQueries;
 
84
  $miniorange_authenticator = array(
85
+ "miniOrange QR Code Authentication",
86
+ "miniOrange Soft Token",
87
+ "miniOrange Push Notification",
88
  );
89
  $all_two_factor_methods = array(
90
  "miniOrange Authenticator",
119
  $two_factor_methods_doc = array(
120
  "Security Questions" => "https://developers.miniorange.com/docs/security/wordpress/wp-security/step-by-setup-guide-to-set-up-security-question",
121
  "Google Authenticator" => "https://developers.miniorange.com/docs/security/wordpress/wp-security/google-authenticator",
122
+ "miniOrange Authenticator" => "https://developers.miniorange.com/docs/security/wordpress/wp-security/step-by-setup-guide-to-set-up-miniorange-QR-code",
123
  "Email Verification" => "https://developers.miniorange.com/docs/security/wordpress/wp-security/email_verification",
124
  "miniOrange Soft Token" => "https://developers.miniorange.com/docs/security/wordpress/wp-security/step-by-setup-guide-to-set-up-miniorange-soft-token",
125
  "miniOrange Push Notification" => "https://developers.miniorange.com/docs/security/wordpress/wp-security/step-by-setup-guide-to-set-up-miniorange-push-notification",
134
  $two_factor_methods_video = array(
135
  "Security Questions" => "https://www.youtube.com/watch?v=pXPqQ047o-0",
136
  "Google Authenticator" => "https://www.youtube.com/watch?v=BS6tY-Goa1Q",
137
+ "miniOrange Authenticator" => "https://www.youtube.com/watch?v=IPYizmgzTd8",
138
  "Email Verification" => "https://www.youtube.com/watch?v=OacJWBYx_AE",
139
  "miniOrange Soft Token" => "https://www.youtube.com/watch?v=9HV8V4f80k8",
140
  "miniOrange Push Notification" => "https://www.youtube.com/watch?v=it_dAhFcxvw",
312
 
313
  break;
314
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
315
  case 'miniOrange QR Code Authentication':
316
  $form .=' <span style="float:right">
317
  <a href='.$two_factor_methods_doc[$auth_method].' target="_blank">
385
  if($auth_method_abr == 'miniOrangeAuthenticator'){
386
  $is_auth_method_configured = $Mo2fdbQueries->get_user_detail( 'mo2f_miniOrangeSoftToken_config_status', $user->ID );
387
  }else{
388
+ $is_auth_method_configured = $Mo2fdbQueries->get_user_detail( 'mo2f_' . $auth_method_abr . '_config_status', $user->ID );
389
  }
390
  if(($auth_method == 'OUT OF BAND EMAIL' or $auth_method == 'OTP Over Email') and !MO2F_IS_ONPREM )
391
  $is_auth_method_configured = 1;
449
  $form .= $can_user_configure_2fa_method ? "" : " disabled ";
450
  $form .= $show==1 ? "" : " disabled ";
451
  if($show == 1 and $is_auth_method_configured and $iscurrentMethod == 0){
452
+ $form .= '>Set as 2-factor</button>
453
+ </div>';
454
  }else{
455
  $form .= '
456
  </button>
457
  </div>';
 
458
  }
459
+ }
460
+
461
  }
462
  else
463
  {
499
  <option value="miniOrangePushNotification">Push Notification</option>
500
  </select></div>
501
  <br><br>
 
502
  ';
503
  }
504
  $form .= '</div>';
handler/twofa/two_fa_constants.php CHANGED
@@ -273,19 +273,6 @@ class Mo2fConstants {
273
  case 'ANSWER_SECURITY_QUESTIONS':
274
  Return mo2f_lt( 'Please answer the following security questions.' );
275
  break;
276
-
277
- case 'BACKUP_CODE_LIMIT_REACH':
278
- Return mo2f_lt( 'You have already downloaded the backup codes for this domain.' );
279
- break;
280
- case 'BACKUP_CODE_DOMAIN_LIMIT_REACH':
281
- Return mo2f_lt( 'User Limit is reached for your domain.' );
282
- break;
283
- case 'BACKUP_CODE_INVALID_REQUEST':
284
- Return mo2f_lt( 'Invalid request.' );
285
- break;
286
- case 'USED_ALL_BACKUP_CODES':
287
- Return mo2f_lt( 'You have used all of the backup codes' );
288
- break;
289
  case 'RESET_DUO_CONFIGURATON':
290
  Return mo2f_lt( 'Your Duo configuration has been reset successfully.' );
291
  break;
273
  case 'ANSWER_SECURITY_QUESTIONS':
274
  Return mo2f_lt( 'Please answer the following security questions.' );
275
  break;
 
 
 
 
 
 
 
 
 
 
 
 
 
276
  case 'RESET_DUO_CONFIGURATON':
277
  Return mo2f_lt( 'Your Duo configuration has been reset successfully.' );
278
  break;
handler/twofa/two_fa_login.php CHANGED
@@ -173,7 +173,7 @@ class Miniorange_Mobile_Login {
173
  function mo_2_factor_hide_login() {
174
  $bootstrappath = plugins_url( 'includes/css/bootstrap.min.css?version='.MO2F_VERSION.'', dirname(dirname(__FILE__)) );
175
  $bootstrappath = str_replace('/handler/includes/css', '/includes/css', $bootstrappath);
176
- $hidepath = plugins_url( 'includes/css/hide-login-form.css?version=5.5.1', dirname(dirname(__FILE__)) );
177
  $hidepath = str_replace('/handler/includes/css', '/includes/css', $hidepath);
178
 
179
  wp_register_style( 'hide-login', $hidepath );
@@ -270,7 +270,7 @@ class Miniorange_Mobile_Login {
270
  }
271
 
272
  function mo_2_factor_show_login_with_password_when_phonelogin_enabled() {
273
- wp_register_style( 'show-login', plugins_url( 'includes/css/show-login.css?version=5.5.1', dirname(dirname(__FILE__ ))) );
274
  wp_enqueue_style( 'show-login' );
275
  }
276
 
@@ -291,9 +291,9 @@ class Miniorange_Mobile_Login {
291
  }
292
 
293
  function mo_2_factor_show_login() {
294
- $hidepath = plugins_url( 'includes/css/hide-login-form.css?version=5.5.1', dirname(dirname(__FILE__)) );
295
 
296
- $showpath = plugins_url( 'includes/css/show-login.css?version=5.5.1', dirname(dirname(__FILE__ )));
297
 
298
  if ( get_option( 'mo2f_enable_login_with_2nd_factor' ) ) {
299
  wp_register_style( 'show-login', $hidepath );
@@ -338,22 +338,20 @@ class Miniorange_Mobile_Login {
338
  function mouserloginsubmit() {
339
  var username = jQuery('#mo2fa_usernamekey').val();
340
  var recap = jQuery('#g-recaptcha-response').val();
341
- if(document.getElementById("mo2fa-g-recaptcha-response-form") !== null){
342
- document.getElementById("mo2fa-g-recaptcha-response-form").elements[0].value = username;
343
- document.getElementById("mo2fa-g-recaptcha-response-form").elements[1].value = recap;
344
 
345
- jQuery('#mo2fa-g-recaptcha-response-form').submit();
346
- }
347
  }
348
 
349
  jQuery('#mo2fa_usernamekey').keypress(function (e) {
350
  if (e.which == 13) {//Enter key pressed
351
  e.preventDefault();
352
  var username = jQuery('#mo2fa_usernamekey').val();
353
- if(document.getElementById("mo2fa-g-recaptcha-response-form") !== null){
354
- document.getElementById("mo2fa-g-recaptcha-response-form").elements[0].value = username;
355
- jQuery('#mo2fa-g-recaptcha-response-form').submit();
356
- }
357
  }
358
 
359
  });
@@ -377,7 +375,7 @@ class Miniorange_Mobile_Login {
377
  <input type="hidden" id="sessids" name="session_id"
378
  value="<?php echo $session_id_encrypt; ?>"/>
379
  </form>
380
- <form name="f" id="mo2fa-g-recaptcha-response-form" method="post" action="" hidden>
381
  <input type="text" name="mo2fa_username" id="mo2fa_username" hidden/>
382
  <input type="text" name="g-recaptcha-response" id = 'g-recaptcha-response' hidden/>
383
  <input type="hidden" name="miniorange_login_nonce"
@@ -390,7 +388,6 @@ class Miniorange_Mobile_Login {
390
  var session_ids="<?php echo $session_id_encrypt; ?>";
391
  if (document.getElementById('loginform') != null) {
392
  jQuery("#user_pass").after( "<input type='hidden' id='sessid' name='session_id' value='"+session_ids+"'/>");
393
- jQuery(".wp-hide-pw").addClass('mo2fa_visible');
394
 
395
  }
396
  });
173
  function mo_2_factor_hide_login() {
174
  $bootstrappath = plugins_url( 'includes/css/bootstrap.min.css?version='.MO2F_VERSION.'', dirname(dirname(__FILE__)) );
175
  $bootstrappath = str_replace('/handler/includes/css', '/includes/css', $bootstrappath);
176
+ $hidepath = plugins_url( 'includes/css/hide-login-form.css?version=5.1.21', dirname(dirname(__FILE__)) );
177
  $hidepath = str_replace('/handler/includes/css', '/includes/css', $hidepath);
178
 
179
  wp_register_style( 'hide-login', $hidepath );
270
  }
271
 
272
  function mo_2_factor_show_login_with_password_when_phonelogin_enabled() {
273
+ wp_register_style( 'show-login', plugins_url( 'includes/css/show-login.css?version=5.1.21', dirname(dirname(__FILE__ ))) );
274
  wp_enqueue_style( 'show-login' );
275
  }
276
 
291
  }
292
 
293
  function mo_2_factor_show_login() {
294
+ $hidepath = plugins_url( 'includes/css/hide-login-form.css?version=5.1.21', dirname(dirname(__FILE__)) );
295
 
296
+ $showpath = plugins_url( 'includes/css/show-login.css?version=5.1.21', dirname(dirname(__FILE__ )));
297
 
298
  if ( get_option( 'mo2f_enable_login_with_2nd_factor' ) ) {
299
  wp_register_style( 'show-login', $hidepath );
338
  function mouserloginsubmit() {
339
  var username = jQuery('#mo2fa_usernamekey').val();
340
  var recap = jQuery('#g-recaptcha-response').val();
341
+
342
+ document.getElementById("mo2f_show_qrcode_loginform").elements[0].value = username;
343
+ document.getElementById("mo2f_show_qrcode_loginform").elements[1].value = recap;
344
 
345
+ jQuery('#mo2f_show_qrcode_loginform').submit();
346
+
347
  }
348
 
349
  jQuery('#mo2fa_usernamekey').keypress(function (e) {
350
  if (e.which == 13) {//Enter key pressed
351
  e.preventDefault();
352
  var username = jQuery('#mo2fa_usernamekey').val();
353
+ document.getElementById("mo2f_show_qrcode_loginform").elements[0].value = username;
354
+ jQuery('#mo2f_show_qrcode_loginform').submit();
 
 
355
  }
356
 
357
  });
375
  <input type="hidden" id="sessids" name="session_id"
376
  value="<?php echo $session_id_encrypt; ?>"/>
377
  </form>
378
+ <form name="f" id="mo2f_show_qrcode_loginform" method="post" action="" hidden>
379
  <input type="text" name="mo2fa_username" id="mo2fa_username" hidden/>
380
  <input type="text" name="g-recaptcha-response" id = 'g-recaptcha-response' hidden/>
381
  <input type="hidden" name="miniorange_login_nonce"
388
  var session_ids="<?php echo $session_id_encrypt; ?>";
389
  if (document.getElementById('loginform') != null) {
390
  jQuery("#user_pass").after( "<input type='hidden' id='sessid' name='session_id' value='"+session_ids+"'/>");
 
391
 
392
  }
393
  });
handler/twofa/two_fa_pass2login.php CHANGED
@@ -174,67 +174,40 @@ class Miniorange_Password_2Factor_Login {
174
  }
175
  $backup_codes=get_user_meta($currentuser_id,'mo2f_backup_codes',true);
176
  $mo2f_backup_code= sanitize_text_field($POSTED[ 'mo2f_backup_code' ]);
177
- $mo2f_user_email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $currentuser_id );
178
-
179
- if(!empty($backup_codes)){
180
- $mo2f_backup_code = md5($mo2f_backup_code);
181
  if(in_array($mo2f_backup_code,$backup_codes)){
182
  foreach ($backup_codes as $key => $value) {
183
  if($value==$mo2f_backup_code){
184
  unset($backup_codes[$key]);
185
  update_user_meta($currentuser_id,'mo2f_backup_codes', $backup_codes);
186
- $this->mo2fa_pass2login($redirect_to, $session_id_encrypt);
187
  }
188
  }
189
- }else{
190
- $mo2fa_login_message = __('The code you provided is already used or incorrect.','miniorange-2-factor-authentication');
191
- $mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_BACKUP';
192
- $this->miniorange_pass2login_form_fields($mo2fa_login_status, $mo2fa_login_message, $redirect_to, null, $session_id_encrypt);
193
- }
194
- }else{
195
-
196
- if(isset($mo2f_backup_code)){
197
- $generate_backup_code = new Customer_Cloud_Setup();
198
- $data = $generate_backup_code->mo2f_validate_backup_codes($mo2f_backup_code,$mo2f_user_email);
199
-
200
- if( $data == 'success'){
201
- $this->mo2fa_pass2login($redirect_to, $session_id_encrypt);
202
- }else if($data == 'error_in_validation'){
203
- $mo2fa_login_message = __('Error occurred while validating the backup codes.','miniorange-2-factor-authentication');
204
- $mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_BACKUP';
205
- $this->miniorange_pass2login_form_fields($mo2fa_login_status, $mo2fa_login_message, $redirect_to, null, $session_id_encrypt);
206
- }else if($data == 'used_code'){
207
- $mo2fa_login_message = __('The code you provided is already used or incorrect.','miniorange-2-factor-authentication');
208
- $mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_BACKUP';
209
- $this->miniorange_pass2login_form_fields($mo2fa_login_status, $mo2fa_login_message, $redirect_to, null, $session_id_encrypt);
210
- }else if($data == 'total_code_used'){
211
- $mo2fa_login_message = __('You have used all the backup codes. Please contact <a herf="mailto:2fasupport@xecurify.com">2fasupport@xecurify.com</a>','miniorange-2-factor-authentication');
212
- $mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_BACKUP';
213
- $this->miniorange_pass2login_form_fields($mo2fa_login_status, $mo2fa_login_message, $redirect_to, null, $session_id_encrypt);
214
- }else if($data == 'backup_code_not_generated'){
215
- $mo2fa_login_message = __('Backup code has not generated for you.','miniorange-2-factor-authentication');
216
- $mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_BACKUP';
217
- $this->miniorange_pass2login_form_fields($mo2fa_login_status, $mo2fa_login_message, $redirect_to, null, $session_id_encrypt);
218
- }else if($data == 'DBConnectionerror'){
219
- $mo2fa_login_message = __('Error occurred while establising connection.','miniorange-2-factor-authentication');
220
- $mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_BACKUP';
221
- $this->miniorange_pass2login_form_fields($mo2fa_login_status, $mo2fa_login_message, $redirect_to, null, $session_id_encrypt);
222
-
223
- }else if($data == 'missingparameter'){
224
- $mo2fa_login_message = __('Some parameters are missing while validating backup codes.');
225
- $mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_BACKUP';
226
- $this->miniorange_pass2login_form_fields($mo2fa_login_status, $mo2fa_login_message, $redirect_to, null, $session_id_encrypt);
227
- }
228
-
229
-
230
- }else{
231
- $mo2fa_login_message = __('Please enter backup code.','miniorange-2-factor-authentication');
232
- $mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_BACKUP';
233
- $this->miniorange_pass2login_form_fields($mo2fa_login_status, $mo2fa_login_message, $redirect_to, null, $session_id_encrypt);
234
- }
235
- }
236
 
 
 
 
 
 
 
 
 
 
 
 
 
237
 
 
 
 
 
 
 
 
 
 
 
 
238
  }else{
239
  $this->remove_current_activity($session_id_encrypt);
240
  return new WP_Error('invalid_username', '<strong>'. __('ERROR','miniorange-2-factor-authentication') . '</strong>: ' . __('Please try again..', 'miniorange-2-factor-authentication'));
@@ -254,41 +227,18 @@ class Miniorange_Password_2Factor_Login {
254
  $redirect_to = esc_url_raw($_POST['redirect_to']);
255
  $session_id = sanitize_text_field($_POST['session_id']);
256
  $id = $this->mo2f_userID ? $this->mo2f_userID : MO2f_Utility::mo2f_get_transient($session_id, 'mo2f_current_user_id');
257
- $mo2f_user_email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $id );
258
- if(empty($mo2f_user_email)){
259
- $currentuser = get_user_by( 'id', $id );
260
- $mo2f_user_email = $currentuser->user_email;
261
- }
262
- $generate_backup_code = new Customer_Cloud_Setup();
263
- $codes=$generate_backup_code->mo_2f_generate_backup_codes($mo2f_user_email, site_url());
264
- if($codes == 'AllUsed'){
265
- $mo2fa_login_message = "You have already used all the backup codes for this user and domain.";
266
- $mo2fa_login_status = sanitize_text_field($_POST['login_status']);
267
- $this->miniorange_pass2login_form_fields($mo2fa_login_status, $mo2fa_login_message, $redirect_to, null ,$session_id);
268
- }else if($codes == 'UserLimitReached') {
269
- $mo2fa_login_message = "Backup code generation limit has reached for this domain.";
270
- $mo2fa_login_status = sanitize_text_field($_POST['login_status']);
271
- $this->miniorange_pass2login_form_fields($mo2fa_login_status, $mo2fa_login_message, $redirect_to, null ,$session_id);
272
- }else if($codes == 'LimitReached'){
273
- $mo2fa_login_message = "backup code generation limit has reached for this user.";
274
- $mo2fa_login_status = sanitize_text_field($_POST['login_status']);
275
- $this->miniorange_pass2login_form_fields($mo2fa_login_status, $mo2fa_login_message, $redirect_to, null ,$session_id);
276
- }else if($codes == 'invalid_request'){
277
- $mo2fa_login_message = "Invalid request.";
278
- $mo2fa_login_status = sanitize_text_field($_POST['login_status']);
279
- $this->miniorange_pass2login_form_fields($mo2fa_login_status, $mo2fa_login_message, $redirect_to, null ,$session_id);
280
- }
281
- $codes = explode(' ', $codes);
282
  $codes_hash=MO2f_Utility::mo2f_get_codes_hash($codes);
283
  $str1="";
284
- for ($x = 0; $x < sizeof($codes); $x++) {
285
  $str = $codes[$x];
286
  $str1.=$str;
287
  if($x != 4){
288
  $str1.=',';
289
  }
290
  }
291
-
292
  $key = get_option( 'mo2f_encryption_key' );
293
  $codes_encrypt = MO2f_Utility::encrypt_data($str1, $key);
294
  update_user_meta($id,'chqwetcsdvnvd', $codes_encrypt);
@@ -956,21 +906,8 @@ class Miniorange_Password_2Factor_Login {
956
  }
957
  update_user_meta($current_user->ID,'mo2f_external_app_type','GOOGLE AUTHENTICATOR');
958
  $mo2fa_login_status = 'MO_2_FACTOR_SETUP_SUCCESS';
959
-
960
- //When user sets method of another admin from USers section.
961
- if(!empty(get_user_meta($current_user->ID,'mo2fa_set_Authy_inline'))){
962
- $Mo2fdbQueries->update_user_details( $current_user->ID, array(
963
- 'mo2f_GoogleAuthenticator_config_status' => false,
964
- 'mo2f_AuthyAuthenticator_config_status' => true,
965
- 'mo2f_configured_2FA_method' => "Authy Authenticator",
966
- 'user_registration_with_miniorange' => 'SUCCESS',
967
- 'mo_2factor_user_registration_status' => 'MO_2_FACTOR_PLUGIN_SETTINGS'
968
- ) );
969
- update_user_meta( $current_user->ID, 'mo2f_external_app_type', "Authy Authenticator" );
970
- delete_user_meta($current_user->ID ,'mo2fa_set_Authy_inline');
971
- }
972
  }else{
973
- $mo2fa_login_message = __('An error occured while setting up Google/Authy Authenticator. Please Try again.','miniorange-2-factor-authentication');
974
  }
975
  }else{
976
  $mo2fa_login_message = __('An error occured while processing your request. Please Try again.','miniorange-2-factor-authentication');
@@ -1786,7 +1723,6 @@ function check_miniorange_duo_push_validation_failed($POSTED){
1786
  $current_user = get_userdata($user_id);
1787
  //if the php session folder has insufficient permissions, cookies to be used
1788
  $mo2f_login_transaction_id = MO2f_Utility::mo2f_get_transient($session_id_encrypt, 'mo2f_transactionId');
1789
- $mo2f_login_transaction_id = isset($_POST['mo2fa_transaction_id'])?sanitize_text_field($_POST['mo2fa_transaction_id']):MO2f_Utility::mo2f_get_transient($session_id_encrypt, 'mo2f_transactionId');
1790
  MO2f_Utility::mo2f_debug_file('Transaction_id-'.$mo2f_login_transaction_id.' User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$user_id.' Email-'.$user_email);
1791
  if ( isset( $mo2fa_login_status ) && $mo2fa_login_status == 'MO_2_FACTOR_CHALLENGE_OTP_OVER_EMAIL' ) {
1792
  $content = json_decode( $customer->validate_otp_token( 'EMAIL', null, $mo2f_login_transaction_id, $softtoken, get_option( 'mo2f_customerKey' ), get_option( 'mo2f_api_key' ),$current_user ), true );
@@ -1880,6 +1816,7 @@ function check_miniorange_duo_push_validation_failed($POSTED){
1880
  $this->remove_current_activity($session_id_encrypt);
1881
  return new WP_Error( 'invalid_username', __( '<strong>ERROR</strong>: Invalid Request. Please try again.' ) );
1882
  }
 
1883
  if ( strcasecmp( $content['status'], 'SUCCESS' ) == 0 ) {
1884
  update_option('mo2f_attempts_before_redirect', 3);
1885
  if ( get_option( 'mo2f_remember_device' ) ) {
@@ -1948,6 +1885,7 @@ function check_miniorange_duo_push_validation_failed($POSTED){
1948
  $error->add( 'empty_username', __( '<strong>ERROR</strong>: Invalid Request.' ) );
1949
  }
1950
  function miniorange_pass2login_redirect() {
 
1951
  do_action('mo2f_network_init');
1952
  global $Mo2fdbQueries;
1953
 
@@ -2078,28 +2016,6 @@ function check_miniorange_duo_push_validation_failed($POSTED){
2078
  }
2079
 
2080
  }
2081
- if(isset($_GET['reconfigureMethod']) && is_user_logged_in()){
2082
- $userIDGet = get_current_user_id();
2083
- $txidGet = isset($_GET['transactionId'])?sanitize_text_field($_GET['transactionId']):'';
2084
- $methodGet = isset($_GET['reconfigureMethod'])?sanitize_text_field($_GET['reconfigureMethod']):'';
2085
- if(get_site_option($txidGet) === $userIDGet && ctype_xdigit($txidGet) && ctype_xdigit($methodGet)){
2086
- $method = get_site_option($methodGet);
2087
- $Mo2fdbQueries->update_user_details( $userIDGet, array(
2088
- 'mo_2factor_user_registration_status' =>'MO_2_FACTOR_CUSTOMER_REGISTERED_SUCCESS',
2089
- 'mo2f_configured_2FA_method' => $method
2090
- ) );
2091
- $is_Authy_configured = $Mo2fdbQueries->get_user_detail('mo2f_AuthyAuthenticator_config_status',$userIDGet);
2092
- if($method == 'Google Authenticator' || $is_Authy_configured){
2093
- update_user_meta($userIDGet,'mo2fa_set_Authy_inline',true);
2094
- }
2095
- delete_site_option($txidGet);
2096
- }else{
2097
- $head = "You are not authorized to perform this action";
2098
- $body = "Please contact to your admin";
2099
- $this->display_email_verification($head,$body,'red');
2100
- exit();
2101
- }
2102
- }
2103
  if(isset($_GET['Txid'])&&isset($_GET['accessToken']))
2104
  {
2105
  $userIDGet = sanitize_text_field($_GET['userID']);
@@ -2187,11 +2103,6 @@ function check_miniorange_duo_push_validation_failed($POSTED){
2187
  case 'miniorange_rba_validate':
2188
  $this->check_rba_validation($_POST);
2189
  break;
2190
- case 'miniorange_mfactor_method':
2191
- $current_userID= MO2f_Utility::mo2f_get_transient($_POST['session_id'], 'mo2f_current_user_id');
2192
- $currentuser = get_user_by('id',$current_userID);
2193
- $this->mo2fa_select_method($currentuser, sanitize_text_field($_POST['mo2f_selected_mfactor_method']), null,sanitize_text_field($_POST['session_id']), esc_url_raw($_POST['redirect_to']),null);
2194
- break;
2195
 
2196
  case 'miniorange_rba_cancle':
2197
 
@@ -2414,7 +2325,7 @@ function check_miniorange_duo_push_validation_failed($POSTED){
2414
  $session_path = ini_get('session.save_path');
2415
  if( is_writable($session_path) && is_readable($session_path) ) {
2416
  if(session_status() != PHP_SESSION_DISABLED )
2417
- session_start();
2418
  }
2419
  }
2420
  }
@@ -2475,7 +2386,7 @@ function check_miniorange_duo_push_validation_failed($POSTED){
2475
  }
2476
  }
2477
 
2478
- function miniorange_pass2login_form_fields( $mo2fa_login_status = null, $mo2fa_login_message = null, $redirect_to = null, $qrCode = null, $session_id_encrypt=null,$show_back_button =null ,$mo2fa_transaction_id =false ) {
2479
 
2480
  $login_status = $mo2fa_login_status;
2481
  $login_message = $mo2fa_login_message;
@@ -2495,7 +2406,7 @@ function check_miniorange_duo_push_validation_failed($POSTED){
2495
  case 'MO_2_FACTOR_CHALLENGE_OTP_OVER_EMAIL':
2496
  $user_id = $this->mo2f_userID ? $this->mo2f_userID : MO2f_Utility::mo2f_get_transient($session_id_encrypt, 'mo2f_current_user_id');
2497
 
2498
- mo2f_get_otp_authentication_prompt( $login_status, $login_message, $redirect_to, $session_id_encrypt,$user_id,$show_back_button ,$mo2fa_transaction_id );
2499
  exit;
2500
  break;
2501
  case 'MO_2_FACTOR_CHALLENGE_OTP_OVER_TELEGRAM':
@@ -2986,7 +2897,8 @@ function check_miniorange_duo_push_validation_failed($POSTED){
2986
  $this->mo2f_transactionid=$response['txId'];
2987
  $mo2fa_login_message = $message;
2988
  $currentMethod = $Mo2fdbQueries->get_user_detail( 'mo2f_configured_2FA_method', $user->ID );
2989
- if($mo2f_second_factor == 'EMAIL')
 
2990
  $mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_OTP_OVER_EMAIL';
2991
  else
2992
  $mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_OTP_OVER_SMS';
@@ -3171,17 +3083,83 @@ function check_miniorange_duo_push_validation_failed($POSTED){
3171
  if(!MO2F_IS_ONPREM and $mo2f_second_factor!= 'OTP Over Telegram')
3172
  $mo2f_second_factor = mo2f_get_user_2ndfactor( $currentuser );
3173
 
3174
- // adding function for the mfa call
3175
-
3176
- $configure_array_method = $this->mo2fa_return_methods_value($currentuser->ID);
3177
-
3178
- if (sizeof( $configure_array_method) >1 && get_site_option('mo2f_nonce_enable_configured_methods') == true) {
3179
- update_site_option('mo2f_login_with_mfa_use','1');
3180
- mo2fa_prompt_mfa_form_for_user($configure_array_method,$session_id_encrypt,$redirect_to);
3181
- exit;
3182
- }
3183
- else
3184
- $this->mo2fa_select_method($currentuser, $mo2f_second_factor, $otp_token,$session_id_encrypt, $redirect_to,$kba_configuration_status);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3185
  }
3186
  }else if(!$exceeded && MoWpnsUtility::get_mo2f_db_option('mo2f_inline_registration', 'site_option')){
3187
  $this->mo2fa_inline( $currentuser, $redirect_to, $session_id_encrypt );
@@ -3198,105 +3176,7 @@ function check_miniorange_duo_push_validation_failed($POSTED){
3198
  }
3199
 
3200
  }
3201
- function mo2fa_return_methods_value($currentuserid)
3202
- {
3203
- global $Mo2fdbQueries;
3204
- $count_methods = $Mo2fdbQueries->get_user_configured_methods($currentuserid );
3205
- $value = empty( $count_methods ) ? '' : get_object_vars( $count_methods[0] );
3206
- $configured_methods_arr=array();
3207
- foreach ($value as $config_status_option => $config_status) {
3208
- if(strpos($config_status_option, 'config_status')){
3209
- $config_status_string_array =explode('_',$config_status_option);
3210
- $config_method = MO2f_Utility::mo2f_decode_2_factor($config_status_string_array[1],'wpdb');
3211
- if(1 == $value[$config_status_option])
3212
- array_push($configured_methods_arr,$config_method);
3213
-
3214
- }
3215
- }
3216
-
3217
- return $configured_methods_arr;
3218
- }
3219
- function mo2fa_select_method($currentuser, $mo2f_second_factor, $otp_token,$session_id_encrypt, $redirect_to,$kba_configuration_status)
3220
- {
3221
- global $moWpnsUtility;
3222
-
3223
- if($mo2f_second_factor == 'OTP Over Email' || $mo2f_second_factor == 'OTP OVER EMAIL' || $mo2f_second_factor == "EMAIL") {
3224
- $mo2f_second_factor = "EMAIL";
3225
- if(MoWpnsUtility::get_mo2f_db_option('cmVtYWluaW5nT1RQ', 'site_option')<=0)
3226
- {
3227
- update_site_option("bGltaXRSZWFjaGVk",1);
3228
- }
3229
- }
3230
- else
3231
- $mo2f_second_factor = MO2f_Utility::mo2f_decode_2_factor($mo2f_second_factor, "server" );
3232
-
3233
- if($mo2f_second_factor == 'OTPOverTelegram')
3234
- $mo2f_second_factor = "OTP Over Telegram";
3235
-
3236
- if((($mo2f_second_factor == 'GOOGLE AUTHENTICATOR') || ($mo2f_second_factor =='SOFT TOKEN') || ($mo2f_second_factor =='AUTHY AUTHENTICATOR')) && MoWpnsUtility::get_mo2f_db_option('mo2f_enable_2fa_prompt_on_login_page', 'site_option')&& !get_option('mo2f_remember_device') && !isset($_POST['mo_woocommerce_login_prompt']) )
3237
- {
3238
- $error=$this->mo2f_validate_soft_token($currentuser, $mo2f_second_factor, $otp_token,$session_id_encrypt, $redirect_to);
3239
- if(is_wp_error( $error))
3240
- {
3241
- return $error;
3242
- }
3243
- }
3244
- else
3245
- {
3246
- if ( MO2f_Utility::check_if_request_is_from_mobile_device( $_SERVER['HTTP_USER_AGENT'] ) && $kba_configuration_status )
3247
- {
3248
- $this->mo2f_pass2login_kba_verification( $currentuser->ID, $redirect_to, $session_id_encrypt );
3249
- }
3250
- else
3251
- {
3252
- if ( $mo2f_second_factor == 'MOBILE AUTHENTICATION' )
3253
- {
3254
- $this->mo2f_pass2login_mobile_verification( $currentuser, $redirect_to, $session_id_encrypt );
3255
- }
3256
- else if ( $mo2f_second_factor == 'PUSH NOTIFICATIONS' || $mo2f_second_factor == 'OUT OF BAND EMAIL' || $mo2f_second_factor == 'Email Verification')
3257
- {
3258
- MO2f_Utility::mo2f_debug_file('Initiating 2fa validation template for '.$mo2f_second_factor.'User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$currentuser->ID.' Email-'.$currentuser->user_email);
3259
- $this->mo2f_pass2login_push_oobemail_verification( $currentuser, $mo2f_second_factor, $redirect_to, $session_id_encrypt );
3260
- }
3261
- else if ( $mo2f_second_factor == 'SOFT TOKEN' || $mo2f_second_factor == 'SMS' || $mo2f_second_factor == 'PHONE VERIFICATION' || $mo2f_second_factor == 'GOOGLE AUTHENTICATOR' || $mo2f_second_factor == 'EMAIL' ||$mo2f_second_factor == 'OTP Over Telegram'|| $mo2f_second_factor == 'OTP Over Whatsapp') {
3262
- MO2f_Utility::mo2f_debug_file('Initiating 2fa validation template for '.$mo2f_second_factor.'User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$currentuser->ID.' Email-'.$currentuser->user_email);
3263
- $this->mo2f_pass2login_otp_verification( $currentuser, $mo2f_second_factor, $redirect_to, $session_id_encrypt );
3264
- }
3265
- else if ( $mo2f_second_factor == 'KBA' or $mo2f_second_factor == 'Security Questions') {
3266
- MO2f_Utility::mo2f_debug_file('Initiating 2fa validation template for '.$mo2f_second_factor.'User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$currentuser->ID.' Email-'.$currentuser->user_email);
3267
- $this->mo2f_pass2login_kba_verification( $currentuser->ID, $redirect_to , $session_id_encrypt );
3268
- }
3269
- else if ( $mo2f_second_factor == 'Duo Authenticator') {
3270
- MO2f_Utility::mo2f_debug_file('Initiating 2fa validation template for '.$mo2f_second_factor.'User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$currentuser->ID.' Email-'.$currentuser->user_email);
3271
- $this->mo2f_pass2login_duo_push_verification( $currentuser, $mo2f_second_factor, $redirect_to, $session_id_encrypt );
3272
 
3273
- }
3274
- else if ( $mo2f_second_factor == 'NONE' ) {
3275
- MO2f_Utility::mo2f_debug_file('mo2f_second_factor is NONE'.'User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$currentuser->ID.' Email-'.$currentuser->user_email);
3276
- if(MO2f_Utility::get_index_value('GLOBALS','mo2f_is_ajax_request'))
3277
- $this->mo2fa_pass2login( $redirect_to, $session_id_encrypt );
3278
- else
3279
- return $currentuser;
3280
- }
3281
- else
3282
- {
3283
- $this->remove_current_activity($session_id_encrypt);
3284
- $error = new WP_Error();
3285
- if(MO2f_Utility::get_index_value('GLOBALS','mo2f_is_ajax_request')){
3286
- MO2f_Utility::mo2f_debug_file('Two factor method has not been configured '.'User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$currentuser->ID.' Email-'.$currentuser->user_email);
3287
- $data = array('notice' => '<div style="border-left:3px solid #dc3232;">&nbsp; Two Factor method has not been configured.', );
3288
- wp_send_json_success($data);
3289
- }
3290
- else
3291
- {
3292
- MO2f_Utility::mo2f_debug_file('Two factor method has not been configured '.'User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$currentuser->ID.' Email-'.$currentuser->user_email);
3293
- $error->add( 'empty_username', __( '<strong>ERROR</strong>: Two Factor method has not been configured.' ) );
3294
- return $error;
3295
- }
3296
- }
3297
- }
3298
- }
3299
- }
3300
  function mo2fa_inline($currentuser,$redirect_to,$session_id){
3301
 
3302
  global $Mo2fdbQueries;
@@ -3369,8 +3249,7 @@ function mo2fa_select_method($currentuser, $mo2f_second_factor, $otp_token,$sess
3369
  update_site_option("cmVtYWluaW5nT1RQ",$cmVtYWluaW5nT1RQ-1);
3370
  $mo2fa_login_message = 'An OTP has been sent to '.$email.' please verify to set the two-factor';
3371
  $mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_OTP_OVER_EMAIL';
3372
- $mo2fa_transaction_id = isset($response['txId'])?$response['txId']:null;
3373
- $this->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to,null, $session_id_encrypt, 1 ,$mo2fa_transaction_id);
3374
  }
3375
  else
3376
  {
174
  }
175
  $backup_codes=get_user_meta($currentuser_id,'mo2f_backup_codes',true);
176
  $mo2f_backup_code= sanitize_text_field($POSTED[ 'mo2f_backup_code' ]);
177
+ $mo2f_backup_code=md5($mo2f_backup_code);
178
+ if(!empty($backup_codes)){
 
 
179
  if(in_array($mo2f_backup_code,$backup_codes)){
180
  foreach ($backup_codes as $key => $value) {
181
  if($value==$mo2f_backup_code){
182
  unset($backup_codes[$key]);
183
  update_user_meta($currentuser_id,'mo2f_backup_codes', $backup_codes);
 
184
  }
185
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
186
 
187
+ if(sizeof($backup_codes) <= 2){
188
+ $codes_remaining = sizeof($backup_codes);
189
+ $mo2f_user_email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $currentuser_id );
190
+ if(empty($mo2f_user_email)){
191
+ $currentuser = get_user_by( 'id', $currentuser_id );
192
+ $mo2f_user_email = $currentuser->user_email;
193
+ }
194
+ $subject = '2-Factor Authentication(Backup Codes)';
195
+ $headers = array('Content-Type: text/html; charset=UTF-8');
196
+ $message = MO2f_Utility::get_codes_warning_email_content($codes_remaining);
197
+ $result = wp_mail($mo2f_user_email,$subject,$message,$headers);
198
+ }
199
 
200
+ $this->mo2fa_pass2login($redirect_to, $session_id_encrypt);
201
+ }else{
202
+ $mo2fa_login_message = __('The codes you have provided are either expired or incorrect.','miniorange-2-factor-authentication');
203
+ $mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_BACKUP';
204
+ $this->miniorange_pass2login_form_fields($mo2fa_login_status, $mo2fa_login_message, $redirect_to, null, $session_id_encrypt);
205
+ }
206
+ }else{
207
+ $mo2fa_login_message = __('There are no codes left.','miniorange-2-factor-authentication');
208
+ $mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_BACKUP';
209
+ $this->miniorange_pass2login_form_fields($mo2fa_login_status, $mo2fa_login_message, $redirect_to, null, $session_id_encrypt);
210
+ }
211
  }else{
212
  $this->remove_current_activity($session_id_encrypt);
213
  return new WP_Error('invalid_username', '<strong>'. __('ERROR','miniorange-2-factor-authentication') . '</strong>: ' . __('Please try again..', 'miniorange-2-factor-authentication'));
227
  $redirect_to = esc_url_raw($_POST['redirect_to']);
228
  $session_id = sanitize_text_field($_POST['session_id']);
229
  $id = $this->mo2f_userID ? $this->mo2f_userID : MO2f_Utility::mo2f_get_transient($session_id, 'mo2f_current_user_id');
230
+
231
+ $codes=MO2f_Utility::mo_2f_generate_backup_codes();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
232
  $codes_hash=MO2f_Utility::mo2f_get_codes_hash($codes);
233
  $str1="";
234
+ for ($x = 0; $x < 5; $x++) {
235
  $str = $codes[$x];
236
  $str1.=$str;
237
  if($x != 4){
238
  $str1.=',';
239
  }
240
  }
241
+ update_user_meta($id,'mo2f_backup_codes', $codes_hash);
242
  $key = get_option( 'mo2f_encryption_key' );
243
  $codes_encrypt = MO2f_Utility::encrypt_data($str1, $key);
244
  update_user_meta($id,'chqwetcsdvnvd', $codes_encrypt);
906
  }
907
  update_user_meta($current_user->ID,'mo2f_external_app_type','GOOGLE AUTHENTICATOR');
908
  $mo2fa_login_status = 'MO_2_FACTOR_SETUP_SUCCESS';
 
 
 
 
 
 
 
 
 
 
 
 
 
909
  }else{
910
+ $mo2fa_login_message = __('An error occured while processing your request. Please Try again.','miniorange-2-factor-authentication');
911
  }
912
  }else{
913
  $mo2fa_login_message = __('An error occured while processing your request. Please Try again.','miniorange-2-factor-authentication');
1723
  $current_user = get_userdata($user_id);
1724
  //if the php session folder has insufficient permissions, cookies to be used
1725
  $mo2f_login_transaction_id = MO2f_Utility::mo2f_get_transient($session_id_encrypt, 'mo2f_transactionId');
 
1726
  MO2f_Utility::mo2f_debug_file('Transaction_id-'.$mo2f_login_transaction_id.' User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$user_id.' Email-'.$user_email);
1727
  if ( isset( $mo2fa_login_status ) && $mo2fa_login_status == 'MO_2_FACTOR_CHALLENGE_OTP_OVER_EMAIL' ) {
1728
  $content = json_decode( $customer->validate_otp_token( 'EMAIL', null, $mo2f_login_transaction_id, $softtoken, get_option( 'mo2f_customerKey' ), get_option( 'mo2f_api_key' ),$current_user ), true );
1816
  $this->remove_current_activity($session_id_encrypt);
1817
  return new WP_Error( 'invalid_username', __( '<strong>ERROR</strong>: Invalid Request. Please try again.' ) );
1818
  }
1819
+
1820
  if ( strcasecmp( $content['status'], 'SUCCESS' ) == 0 ) {
1821
  update_option('mo2f_attempts_before_redirect', 3);
1822
  if ( get_option( 'mo2f_remember_device' ) ) {
1885
  $error->add( 'empty_username', __( '<strong>ERROR</strong>: Invalid Request.' ) );
1886
  }
1887
  function miniorange_pass2login_redirect() {
1888
+
1889
  do_action('mo2f_network_init');
1890
  global $Mo2fdbQueries;
1891
 
2016
  }
2017
 
2018
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2019
  if(isset($_GET['Txid'])&&isset($_GET['accessToken']))
2020
  {
2021
  $userIDGet = sanitize_text_field($_GET['userID']);
2103
  case 'miniorange_rba_validate':
2104
  $this->check_rba_validation($_POST);
2105
  break;
 
 
 
 
 
2106
 
2107
  case 'miniorange_rba_cancle':
2108
 
2325
  $session_path = ini_get('session.save_path');
2326
  if( is_writable($session_path) && is_readable($session_path) ) {
2327
  if(session_status() != PHP_SESSION_DISABLED )
2328
+ session_start();
2329
  }
2330
  }
2331
  }
2386
  }
2387
  }
2388
 
2389
+ function miniorange_pass2login_form_fields( $mo2fa_login_status = null, $mo2fa_login_message = null, $redirect_to = null, $qrCode = null, $session_id_encrypt=null,$show_back_button =null ) {
2390
 
2391
  $login_status = $mo2fa_login_status;
2392
  $login_message = $mo2fa_login_message;
2406
  case 'MO_2_FACTOR_CHALLENGE_OTP_OVER_EMAIL':
2407
  $user_id = $this->mo2f_userID ? $this->mo2f_userID : MO2f_Utility::mo2f_get_transient($session_id_encrypt, 'mo2f_current_user_id');
2408
 
2409
+ mo2f_get_otp_authentication_prompt( $login_status, $login_message, $redirect_to, $session_id_encrypt,$user_id,$show_back_button );
2410
  exit;
2411
  break;
2412
  case 'MO_2_FACTOR_CHALLENGE_OTP_OVER_TELEGRAM':
2897
  $this->mo2f_transactionid=$response['txId'];
2898
  $mo2fa_login_message = $message;
2899
  $currentMethod = $Mo2fdbQueries->get_user_detail( 'mo2f_configured_2FA_method', $user->ID );
2900
+
2901
+ if($currentMethod == 'OTP Over Email')
2902
  $mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_OTP_OVER_EMAIL';
2903
  else
2904
  $mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_OTP_OVER_SMS';
3083
  if(!MO2F_IS_ONPREM and $mo2f_second_factor!= 'OTP Over Telegram')
3084
  $mo2f_second_factor = mo2f_get_user_2ndfactor( $currentuser );
3085
 
3086
+ if($mo2f_second_factor == 'miniOrange Soft Token')
3087
+ $mo2f_second_factor = "SOFT TOKEN";
3088
+ else if($mo2f_second_factor == "miniOrange Push Notification")
3089
+ $mo2f_second_factor = "PUSH NOTIFICATIONS";
3090
+ else if($mo2f_second_factor == "miniOrange QR Code Authentication")
3091
+ $mo2f_second_factor = "MOBILE AUTHENTICATION";
3092
+ else if($mo2f_second_factor == 'Security Questions')
3093
+ $mo2f_second_factor = 'KBA';
3094
+ else if($mo2f_second_factor == 'Google Authenticator')
3095
+ $mo2f_second_factor = 'GOOGLE AUTHENTICATOR';
3096
+ else if($mo2f_second_factor == 'OTP Over SMS')
3097
+ $mo2f_second_factor = 'SMS';
3098
+ else if($mo2f_second_factor == 'Duo Authenticator' || $mo2f_second_factor == 'DUO AUTHENTICATOR')
3099
+ $mo2f_second_factor = 'Duo Authenticator';
3100
+ else if($mo2f_second_factor == 'OTP Over Email' || $mo2f_second_factor == 'OTP OVER EMAIL' || $mo2f_second_factor == "EMAIL") {
3101
+ $mo2f_second_factor = "EMAIL";
3102
+
3103
+ if(MoWpnsUtility::get_mo2f_db_option('cmVtYWluaW5nT1RQ', 'site_option')<=0)
3104
+ {
3105
+ update_site_option("bGltaXRSZWFjaGVk",1);
3106
+
3107
+ }
3108
+ }
3109
+
3110
+
3111
+ if((($mo2f_second_factor == 'GOOGLE AUTHENTICATOR') || ($mo2f_second_factor =='SOFT TOKEN') || ($mo2f_second_factor =='AUTHY AUTHENTICATOR')) && MoWpnsUtility::get_mo2f_db_option('mo2f_enable_2fa_prompt_on_login_page', 'site_option')&& !get_option('mo2f_remember_device') && !isset($_POST['mo_woocommerce_login_prompt']) )
3112
+ {
3113
+ $error=$this->mo2f_validate_soft_token($currentuser, $mo2f_second_factor, $otp_token,$session_id_encrypt, $redirect_to);
3114
+ if(is_wp_error( $error))
3115
+ {
3116
+ return $error;
3117
+ }
3118
+ }
3119
+ else{
3120
+
3121
+ if ( MO2f_Utility::check_if_request_is_from_mobile_device( $_SERVER['HTTP_USER_AGENT'] ) && $kba_configuration_status ) {
3122
+ $this->mo2f_pass2login_kba_verification( $currentuser->ID, $redirect_to, $session_id_encrypt );
3123
+ } else {
3124
+
3125
+ if ( $mo2f_second_factor == 'MOBILE AUTHENTICATION' ) {
3126
+ $this->mo2f_pass2login_mobile_verification( $currentuser, $redirect_to, $session_id_encrypt );
3127
+ } else if ( $mo2f_second_factor == 'PUSH NOTIFICATIONS' || $mo2f_second_factor == 'OUT OF BAND EMAIL' || $mo2f_second_factor == 'Email Verification') {
3128
+ MO2f_Utility::mo2f_debug_file('Initiating 2fa validation template for '.$mo2f_second_factor.'User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$currentuser->ID.' Email-'.$currentuser->user_email);
3129
+ $this->mo2f_pass2login_push_oobemail_verification( $currentuser, $mo2f_second_factor, $redirect_to, $session_id_encrypt );
3130
+ } else if ( $mo2f_second_factor == 'SOFT TOKEN' || $mo2f_second_factor == 'SMS' || $mo2f_second_factor == 'PHONE VERIFICATION' || $mo2f_second_factor == 'GOOGLE AUTHENTICATOR' || $mo2f_second_factor == 'EMAIL' ||$mo2f_second_factor == 'OTP Over Telegram'|| $mo2f_second_factor == 'OTP Over Whatsapp') {
3131
+ MO2f_Utility::mo2f_debug_file('Initiating 2fa validation template for '.$mo2f_second_factor.'User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$currentuser->ID.' Email-'.$currentuser->user_email);
3132
+ $this->mo2f_pass2login_otp_verification( $currentuser, $mo2f_second_factor, $redirect_to, $session_id_encrypt );
3133
+ } else if ( $mo2f_second_factor == 'KBA' or $mo2f_second_factor == 'Security Questions') {
3134
+ MO2f_Utility::mo2f_debug_file('Initiating 2fa validation template for '.$mo2f_second_factor.'User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$currentuser->ID.' Email-'.$currentuser->user_email);
3135
+ $this->mo2f_pass2login_kba_verification( $currentuser->ID, $redirect_to , $session_id_encrypt );
3136
+ }else if ( $mo2f_second_factor == 'Duo Authenticator') {
3137
+ MO2f_Utility::mo2f_debug_file('Initiating 2fa validation template for '.$mo2f_second_factor.'User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$currentuser->ID.' Email-'.$currentuser->user_email);
3138
+ $this->mo2f_pass2login_duo_push_verification( $currentuser, $mo2f_second_factor, $redirect_to, $session_id_encrypt );
3139
+
3140
+ }else if ( $mo2f_second_factor == 'NONE' ) {
3141
+ MO2f_Utility::mo2f_debug_file('mo2f_second_factor is NONE'.'User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$currentuser->ID.' Email-'.$currentuser->user_email);
3142
+ if(MO2f_Utility::get_index_value('GLOBALS','mo2f_is_ajax_request'))
3143
+ $this->mo2fa_pass2login( $redirect_to, $session_id_encrypt );
3144
+ else
3145
+ return $currentuser;
3146
+ } else {
3147
+ $this->remove_current_activity($session_id_encrypt);
3148
+ $error = new WP_Error();
3149
+ if(MO2f_Utility::get_index_value('GLOBALS','mo2f_is_ajax_request')){
3150
+ MO2f_Utility::mo2f_debug_file('Two factor method has not been configured '.'User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$currentuser->ID.' Email-'.$currentuser->user_email);
3151
+ $data = array('notice' => '<div style="border-left:3px solid #dc3232;">&nbsp; Two Factor method has not been configured.', );
3152
+ wp_send_json_success($data);
3153
+ }
3154
+ else{
3155
+ MO2f_Utility::mo2f_debug_file('Two factor method has not been configured '.'User_IP-'.$moWpnsUtility->get_client_ip() .' User_Id-'.$currentuser->ID.' Email-'.$currentuser->user_email);
3156
+ $error->add( 'empty_username', __( '<strong>ERROR</strong>: Two Factor method has not been configured.' ) );
3157
+ return $error;
3158
+ }
3159
+ }
3160
+ }
3161
+ }
3162
+
3163
  }
3164
  }else if(!$exceeded && MoWpnsUtility::get_mo2f_db_option('mo2f_inline_registration', 'site_option')){
3165
  $this->mo2fa_inline( $currentuser, $redirect_to, $session_id_encrypt );
3176
  }
3177
 
3178
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3179
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3180
  function mo2fa_inline($currentuser,$redirect_to,$session_id){
3181
 
3182
  global $Mo2fdbQueries;
3249
  update_site_option("cmVtYWluaW5nT1RQ",$cmVtYWluaW5nT1RQ-1);
3250
  $mo2fa_login_message = 'An OTP has been sent to '.$email.' please verify to set the two-factor';
3251
  $mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_OTP_OVER_EMAIL';
3252
+ $this->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to,null, $session_id_encrypt, 1 );
 
3253
  }
3254
  else
3255
  {
handler/twofa/two_fa_settings.php CHANGED
@@ -469,19 +469,6 @@ class Miniorange_Authentication {
469
  private function settings_error_page( $id = 'mo2f-setup-vue-site-settings', $footer = '' ) {
470
 
471
  $contact_url = 'https://wordpress.org/plugins/miniorange-2-factor-authentication/';
472
- echo '<head>';
473
- echo '<script type="text/javascript" src="'.plugins_url( "/includes/jquery-qrcode/jquery-qrcode.js", dirname(dirname(__FILE__ ))).'"></script>';
474
- echo '<script type="text/javascript" src="'.plugins_url( "/includes/jquery-qrcode/jquery-qrcode.min.js", dirname(dirname(__FILE__ ))).'"></script>';
475
- echo '<script type="text/javascript" src="'.plugins_url( "/includes/js/phone.js", dirname(dirname(__FILE__ ))).'"></script>';
476
-
477
- echo '<link rel="stylesheet" type="text/css" href="' . plugins_url('includes/css/phone.css', dirname(dirname(__FILE__))). '" />';
478
- // echo '<link rel="stylesheet" type="text/css" href="' . plugins_url('includes/css/twofa_style_settings.css', dirname(dirname(__FILE__))). '" />';
479
- // echo '<link rel="stylesheet" type="text/css" href="' . plugins_url('includes/css/style_settings.css', dirname(dirname(__FILE__))). '" />';
480
-
481
-
482
- echo '</head>';
483
-
484
-
485
  ?>
486
  <style type="text/css">
487
  #mo2f-setup-wizard-settings-area {
@@ -515,7 +502,6 @@ private function settings_error_page( $id = 'mo2f-setup-vue-site-settings', $foo
515
  padding: 0 10px;
516
  }
517
 
518
-
519
  #mo2f-setup-wizard-settings-area .mo2f-setup-logo img {
520
  width: 100%;
521
  height: 100%;
@@ -533,54 +519,7 @@ private function settings_error_page( $id = 'mo2f-setup-vue-site-settings', $foo
533
  box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.05);
534
  padding: 20px 30px;
535
  }
536
- #mo2f-setup-settings-error-loading-area2 {
537
- box-sizing: border-box;
538
- max-width: 90%;
539
- width: auto;
540
- margin: 0 auto;
541
- background: #fff;
542
- border: 1px solid #DDDDDD;
543
- border-radius: 6px;
544
- webkit-box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.05);
545
- box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.05);
546
- padding: 20px 30px;
547
- }
548
- #mo2f-setup-settings-error-loading-area3 {
549
- box-sizing: border-box;
550
- max-width: 90%;
551
- width: auto;
552
- margin: 0 auto;
553
- background: #fff;
554
- border: 1px solid #DDDDDD;
555
- border-radius: 6px;
556
- webkit-box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.05);
557
- box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.05);
558
- padding: 20px 30px;
559
- }
560
- #mo2f-setup-settings-error-loading-area4 {
561
- box-sizing: border-box;
562
- max-width: 90%;
563
- width: auto;
564
- margin: 0 auto;
565
- background: #fff;
566
- border: 1px solid #DDDDDD;
567
- border-radius: 6px;
568
- webkit-box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.05);
569
- box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.05);
570
- padding: 20px 30px;
571
- }
572
- #mo2f-setup-settings-error-loading-area1 {
573
- box-sizing: border-box;
574
- max-width: 90%;
575
- width: auto;
576
- margin: 0 auto;
577
- background: #fff;
578
- border: 1px solid #DDDDDD;
579
- border-radius: 6px;
580
- webkit-box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.05);
581
- box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.05);
582
- padding: 20px 30px;
583
- }
584
  #mo2f-setup-wizard-settings-area .mo2f-setup-error-footer {
585
  text-align: center;
586
  margin-top: 20px;
@@ -610,40 +549,6 @@ private function settings_error_page( $id = 'mo2f-setup-vue-site-settings', $foo
610
  #mo2f-setup-error-js ul.info {
611
  margin: -10px 0 20px;
612
  }
613
- .mo2f-input-radios-with-icons label {
614
- width: 90%;
615
- height: 40px;
616
- color: #444;
617
- border: 1px solid #ddd;
618
- background: #fff;
619
- border-radius: 3px;
620
- font-size: 16px;
621
- display: block;
622
- margin-bottom: 20px;
623
- padding: 24px 9px 9px 9px;
624
- cursor: pointer
625
- }
626
-
627
- .mo2f-input-radios-with-icons label:hover {
628
- border: 1px solid #999;
629
- -webkit-box-shadow: 0 0 0 1px #999;
630
- box-shadow: 0 0 0 1px #999
631
- }
632
-
633
- .mo2f-styled-radio {
634
- width: 32px;
635
- height: 32px;
636
- position: relative;
637
- display: inline-block;
638
- border-radius: 50%;
639
- background-color: #e6e6e6
640
- float: left;
641
- margin-top: -4px;
642
- }
643
- .mo_wpns_table_textbox {
644
- width:100%;
645
- height:30px;
646
- }
647
 
648
  #mo2f-setup-error-js a.button {
649
  display: inline-block;
@@ -677,13 +582,7 @@ private function settings_error_page( $id = 'mo2f-setup-vue-site-settings', $foo
677
  font-weight: 300;
678
  text-align: left;
679
  }
680
- table {
681
- table-layout: fixed ;
682
- width: 100% ;
683
- }
684
- td {
685
- width: 48% ;
686
- }
687
  @media (min-width: 782px) {
688
  #mo2f-setup-wizard-settings-area .mo2f-setup-logo {
689
  margin-top: 50px;
@@ -695,36 +594,6 @@ private function settings_error_page( $id = 'mo2f-setup-vue-site-settings', $foo
695
  margin-top: 40px;
696
  padding: 52px 67px 49px;
697
  }
698
- #mo2f-setup-settings-error-loading-area1 {
699
- width: 650px;
700
- margin-top: 40px;
701
- padding: 52px 67px 49px;
702
- }
703
- #mo2f-setup-settings-error-loading-area2 {
704
- width: 650px;
705
- margin-top: 40px;
706
- padding: 52px 67px 49px;
707
- }
708
- #mo2f-setup-settings-error-loading-area3 {
709
- width: 650px;
710
- margin-top: 40px;
711
- padding: 52px 67px 49px;
712
- }
713
- #mo2f-setup-settings-error-loading-area4 {
714
- width: 650px;
715
- margin-top: 40px;
716
- padding: 52px 67px 49px;
717
- }
718
- .mo2f-styled-radio {
719
- width: 32px;
720
- height: 32px;
721
- position: relative;
722
- display: inline-block;
723
- border-radius: 50%;
724
- background-color: #e6e6e6;
725
- float: left;
726
- margin-top: -4px;
727
- }
728
 
729
  #mo2f-setup-wizard-settings-area .mo2f-setup-error-footer {
730
  margin-top: 50px;
@@ -743,9 +612,6 @@ private function settings_error_page( $id = 'mo2f-setup-vue-site-settings', $foo
743
  font-size: 18px;
744
  padding: 19px 39px;
745
  }
746
- .mo2f-styled-radio-text {
747
- margin-left: 10px
748
- }
749
  .mo2f-setup-button.mo2f-setup-button-main:hover {
750
  background-color: #c45e1b;
751
  }
@@ -754,305 +620,6 @@ private function settings_error_page( $id = 'mo2f-setup-vue-site-settings', $foo
754
  color: #fff;
755
  font-weight: 500;
756
  }
757
- .mo2f-setup-wizard-timeline {
758
- -webkit-box-align: center;
759
- -ms-flex-align: center;
760
- align-items: center;
761
- display: -webkit-box;
762
- display: -ms-flexbox;
763
- display: flex;
764
- margin: 41px auto 0;
765
- max-width: 650px;
766
- padding: 0 20px
767
- }
768
-
769
- .mo2f-setup-wizard-timeline .mo2f-setup-wizard-timeline-step-line {
770
- background: #ddd;
771
- height: 2px;
772
- margin: 0 6px;
773
- width: 100%
774
- }
775
-
776
- .mo2f-setup-wizard-timeline .mo2f-setup-wizard-timeline-step-line.mo2f-setup-wizard-timeline-line-active {
777
- background: #6aa08b
778
- }
779
-
780
- .mo2f-setup-wizard-timeline .mo2f-setup-wizard-timeline-step {
781
- border: none;
782
- background-color: #b6b6b6;
783
- border-radius: 50%;
784
- -ms-flex-negative: 0;
785
- flex-shrink: 0;
786
- height: 16px;
787
- width: 16px
788
- }
789
-
790
- .mo2f-setup-wizard-step-footer {
791
- display: block;
792
- text-align: center;
793
- min-height: 110px;
794
- padding: 0 20px;
795
- margin-top: 30px
796
- }
797
- .popup_text
798
- {
799
- color:black;
800
- margin-top: 2%;
801
- font-weight: 600;
802
- font-size: 12px !important;
803
- }
804
- .overlay{
805
- position: fixed;
806
- top: 0;
807
- left: 0;
808
- right: 0;
809
- bottom: 0;
810
- width: 100%;
811
- height: 100%;
812
- background: #000;
813
- opacity: .5;
814
- z-index: 0;
815
- }
816
- .overlay_success {
817
- width: min-content;
818
- height: 40px;
819
- float: left;
820
- z-index: 1;
821
- top: 0;
822
- right: 0;
823
- text-align: center;
824
- margin-bottom: 4%
825
- background-color:#bcffb4 !important ;
826
- /* overflow-x: hidden; */
827
- background: #b1ffb1;
828
- border-left: 4px solid #46b450;
829
- }
830
- .overlay_error {
831
- width: min-content;
832
- height: min-content;
833
- padding-bottom: 1%;
834
- float: left;
835
- z-index: 1;
836
- top: 0;
837
- right: 0;
838
- margin-bottom: 4%;
839
- text-align: center;
840
- background-color:bisque !important ;
841
- /* overflow-x: hidden; */
842
- border-left: 4px solid red;
843
- }
844
-
845
- .mo2f-setup-wizard-step-footer a {
846
- font-size: 14px;
847
- display: block;
848
- color: #999;
849
- margin: 20px 0
850
- }
851
-
852
- .mo2f-setup-wizard-step-footer a:active,
853
- .mo2f-setup-wizard-step-footer a:hover {
854
- color: #777;
855
- text-decoration: underline
856
- }
857
-
858
-
859
- .mo2f-button.mo2f-button-main {
860
- background-color: #e27730;
861
- color: #fff;
862
- font-weight: 500;
863
- -webkit-box-flex: 11;
864
- -ms-flex: 11;
865
- flex: 11;
866
- padding: 12px 25px;
867
- font-size: 16px;
868
- }
869
-
870
- .mo2f-button.mo2f-button-main:focus,
871
- .mo2f-button.mo2f-button-main:hover {
872
- background-color: #c45e1b
873
- }
874
-
875
- .mo2f-button.mo2f-button-main:disabled {
876
- opacity: .65;
877
- cursor: not-allowed;
878
- background-color: #e27730;
879
- -webkit-box-flex: 11;
880
- -ms-flex: 11;
881
- flex: 11;
882
- margin-right: 30px
883
- }
884
-
885
- .mo2f-setup-wizard-timeline .mo2f-setup-wizard-timeline-step .icon {
886
- display: none
887
- }
888
-
889
- .mo2f-setup-wizard-timeline .mo2f-setup-wizard-timeline-step.mo2f-setup-wizard-timeline-step-active,
890
- .mo2f-setup-wizard-timeline .mo2f-setup-wizard-timeline-step.mo2f-setup-wizard-timeline-step-completed {
891
- background-color: #6aa08b;
892
- position: relative
893
- }
894
-
895
- .mo2f-setup-wizard-timeline .mo2f-setup-wizard-timeline-step.mo2f-setup-wizard-timeline-step-failed {
896
- background-color: #d83638;
897
- position: relative
898
- }
899
-
900
- .mo2f-step-show{
901
- margin: 0 0 16px;
902
- font-size: 14px;
903
- line-height: 18px;
904
- color: #b6b6b6;
905
- }
906
- .mo2f_table_textbox {
907
- width: 200px;
908
- height: 20px !important;
909
- font-size: 14px !important;
910
- }
911
- .mo2f_table_textbox_phone {
912
- width: 200px;
913
- height: 40px !important;
914
- font-size: 14px !important;
915
- }
916
- .mo2f_kba_ques {
917
- width: 394px !important;
918
- border-radius: 4px !important;
919
- height: 40px !important;
920
- font-size: 14px !important;
921
- }
922
-
923
- .mo2f_kba_tb_data {
924
- padding-left: 15px;
925
- }
926
-
927
- .mo2f_kba_table {
928
- padding: 0 10px;
929
- width: 100%;
930
- }
931
- .mo2f_kba_body {
932
- border: hidden !important;
933
- }
934
-
935
-
936
- .mo2f_table_textbox_KBA {
937
- width: 200px;
938
- height: 40px !important;
939
- font-size: 14px !important;
940
- }
941
-
942
-
943
- .mo2f_kba_header {
944
- font-weight: bold;
945
- }
946
-
947
- .mo2f-setup-wizard-timeline .mo2f-setup-wizard-timeline-step.mo2f-setup-wizard-timeline-step-completed .icon-success,
948
- .mo2f-setup-wizard-timeline .mo2f-setup-wizard-timeline-step.mo2f-setup-wizard-timeline-step-failed .icon-failed {
949
- color: #fff;
950
- display: block;
951
- position: absolute;
952
- left: 3px;
953
- top: 3px
954
- }
955
- .mo2f-setup-wizard-step-footer {
956
- display: -webkit-box;
957
- display: -ms-flexbox;
958
- display: flex;
959
- -webkit-box-pack: justify;
960
- -ms-flex-pack: justify;
961
- justify-content: space-between;
962
- -webkit-box-align: center;
963
- -ms-flex-align: center;
964
- align-items: center;
965
- padding: 0;
966
- margin-top: 0
967
- }
968
- .mo2f_blur {
969
- filter: blur(5px);
970
- -webkit-filter: blur(5px);
971
- -moz-filter: blur(5px);
972
- -o-filter: blur(5px);
973
- -ms-filter: blur(5px);
974
- }
975
- .mo2f_loader {
976
- border: 16px solid #b9acac;
977
- border-radius: 50%;
978
- border-top: 16px solid #fb540b;
979
- width: 50px;
980
- height: 50px;
981
- -webkit-animation: spin 2s linear infinite; /* Safari */
982
- animation: spin 2s linear infinite;
983
- position: fixed;
984
- left: 50%;
985
- top: 50%;
986
- z-index: 100;
987
- }
988
-
989
- /* Safari */
990
- @-webkit-keyframes spin {
991
- 0% { -webkit-transform: rotate(0deg); }
992
- 100% { -webkit-transform: rotate(360deg); }
993
- }
994
-
995
- @keyframes spin {
996
- 0% { transform: rotate(0deg); }
997
- 100% { transform: rotate(360deg); }
998
- }
999
- .mo2f-setup-wizard-step-footer-buttons {
1000
- margin-bottom: 0;
1001
- }
1002
- .mo2f-setup-wizard-step-footer-buttons button {
1003
- margin-bottom: 0;
1004
- margin-right: 15px;
1005
- width: inherit
1006
- }
1007
- .miniorange_button
1008
- {
1009
- background:#00A0D2!important;
1010
- border-color:#0073AA!important;
1011
- box-shadow:0 1px 0 rgba(120,200,230,.5) inset,0 1px 0 rgba(0,0,0,.15)!important;
1012
- color:#FFF!important;
1013
- text-decoration:none!important;
1014
- cursor:pointer!important;
1015
- border-width:1px!important;
1016
- border-style:solid!important;
1017
- border-radius:3px!important;
1018
- white-space:nowrap!important;
1019
- box-sizing:border-box!important;
1020
- line-height:28px!important;
1021
- padding:0 12px!important;
1022
- font-size:13px!important;
1023
- }
1024
-
1025
-
1026
- .mo2f_IR_phone_OTP{
1027
- font-size:15px;
1028
- width:150px !important;
1029
- color:#212F3C;
1030
- border:none;
1031
- display:block;
1032
- border-bottom-style: solid;
1033
- border-width: 2px;
1034
- border-color:#D0D3D4;
1035
- border-radius:0px;
1036
- outline:none;
1037
- padding:5px;
1038
-
1039
- }
1040
- .mo2f-setup-wizard-step-footer-buttons button:last-child {
1041
- margin-right: 0
1042
- }
1043
- a .text-with-arrow-left .icon {
1044
- margin-right: 10px
1045
- }
1046
-
1047
- a .text-with-arrow {
1048
- display: -webkit-box;
1049
- display: -ms-flexbox;
1050
- display: flex;
1051
- -webkit-box-pack: center;
1052
- -ms-flex-pack: center;
1053
- justify-content: center
1054
- }
1055
-
1056
  }
1057
  </style>
1058
  <!--[if IE]>
@@ -1063,9 +630,7 @@ private function settings_error_page( $id = 'mo2f-setup-vue-site-settings', $foo
1063
  </style>
1064
 
1065
  <![endif]-->
1066
- <div class="mo2f_loader" id="mo2f_loader" style="display: none;"></div>
1067
-
1068
- <div id="mo2f-setup-wizard-settings-area" class="mo2f-setup-wizard-settings-area wpms-container">
1069
  <header class="mo2f-setup-wizard-header">
1070
  <h1 >
1071
  <div>
@@ -1078,12 +643,14 @@ private function settings_error_page( $id = 'mo2f-setup-vue-site-settings', $foo
1078
  <div id="mo2f-setup-settings-error-loading-area">
1079
  <div>
1080
  <div id="mo2f-setup-error-js">
 
 
1081
  <p class="subtitle" style="text-align:center;" > This setup guide will take you through all the steps you need to follow to enable the two-factor authentication for your website.</p>
1082
 
1083
  <br><br>
1084
  <button type="button" style="text-align:center;display: flex;margin: auto;" class="mo2f-setup-button mo2f-setup-button-main mo2f-setup-button-large" id ='mo2f_get_started' target="_blank" class="button" rel="noopener noreferrer"> <?php esc_html_e("Let's Get Started", 'mo2f-setup'); ?></button>
1085
 
1086
- <br><br>
1087
  <div style="text-align:center;display: flex;margin: auto;flex-direction: column;">
1088
  <a href="<?php echo esc_url( $contact_url ); ?>" target="_blank" rel="noopener noreferrer">
1089
  <?php esc_html_e( 'Facing issues? Contact Us', 'mo2f-setup' ); ?>
@@ -1097,267 +664,64 @@ private function settings_error_page( $id = 'mo2f-setup-vue-site-settings', $foo
1097
  </div>
1098
  </div>
1099
  <div id = "mo2f_methods_setup_wizard">
1100
- <div class="mo2f-setup-wizard-timeline">
1101
-
1102
- <div class="mo2f-setup-wizard-timeline-step mo2f-setup-wizard-timeline-step-active" id="mo2f-setup-wizard-step1"></div>
1103
- <div class="mo2f-setup-wizard-timeline-step-line" id="mo2f-setup-wizard-line1"></div>
1104
- <div class="mo2f-setup-wizard-timeline-step" id="mo2f-setup-wizard-step2"> </div>
1105
- <div class="mo2f-setup-wizard-timeline-step-line" id="mo2f-setup-wizard-line2"></div>
1106
- <div class="mo2f-setup-wizard-timeline-step"id="mo2f-setup-wizard-step3"> </div>
1107
- <div class="mo2f-setup-wizard-timeline-step-line" id="mo2f-setup-wizard-line3"></div>
1108
- <div class="mo2f-setup-wizard-timeline-step" id="mo2f-setup-wizard-step4"> </div>
1109
-
1110
- </div>
1111
- <div id="mo2f-setup-settings-error-loading-area1" style="width: 900px">
1112
-
1113
- <p class="mo2f-step-show"> Step 1 of 4</p>
1114
- <h3 style="text-align:center;font-size:xx-large;"> Select the Authentication method you want to configure </h3>
1115
- <br>
1116
- <div class="mo2f-input-radios-with-icons">
1117
- <table>
1118
- <tr>
1119
- <td>
1120
- <label title="<?php echo __('You have to enter 6 digits code generated by google Authenticator App to login. Supported in Smartphones only.', 'miniorange-2-factor-authentication'); ?>">
1121
- <input type="radio" name="mo2f_selected_2factor_method" class="mo2f-styled-radio" value="Google Authenticator" />
1122
- <span class="mo2f-styled-radio-text"> Google Authenticator</span>
1123
  </label>
1124
- </td>
1125
- <td>
1126
  <label title="<?php echo __('You will receive a one time passcode via SMS on your phone. You have to enter the otp on your screen to login. Supported in Smartphones, Feature Phones.', 'miniorange-2-factor-authentication'); ?>">
1127
- <input type="radio" name="mo2f_selected_2factor_method" class="mo2f-styled-radio" value="OTP Over SMS" />
1128
- <span class="mo2f-styled-radio-text">
1129
  <?php echo __('OTP Over SMS (Registration required)', 'miniorange-2-factor-authentication'); ?>
1130
- </span>
1131
- </label></td>
1132
- </tr>
1133
- <tr>
1134
- <td>
1135
-
1136
- <label title="<?php echo __('You will receive a one time passcode on your email. You have to enter the otp on your screen to login. Supported in Smartphones, Feature Phones.', 'miniorange-2-factor-authentication'); ?>" >
1137
- <input type="radio" name="mo2f_selected_2factor_method" class="mo2f-styled-radio" value="OTP Over Email" />
1138
- <span class="mo2f-styled-radio-text">
1139
- <?php echo __('OTP Over Email', 'miniorange-2-factor-authentication'); ?>
1140
- </span>
1141
  </label>
1142
- </td>
1143
 
1144
- <td>
1145
- <label title="<?php echo __('You have to answers some knowledge based security questions which are only known to you to authenticate yourself. Supported in Desktops,Laptops,Smartphones.', 'miniorange-2-factor-authentication'); ?>" >
1146
- <input type="radio" name="mo2f_selected_2factor_method" class="mo2f-styled-radio" value="Security Questions" />
1147
- <span class="mo2f-styled-radio-text">
1148
- <?php echo __('Security Questions ( KBA )', 'miniorange-2-factor-authentication'); ?>
1149
- </span>
1150
- </label>
1151
- </td>
1152
- </tr>
1153
- <tr>
1154
- <td>
1155
-
1156
- <label title="<?php echo __('You have to enter 6 digits code generated by Microsoft Authenticator App to login. Supported in Smartphones only.', 'miniorange-2-factor-authentication'); ?>">
1157
- <input type="radio" name="mo2f_selected_2factor_method" class="mo2f-styled-radio" value="Google Authenticator" />
1158
- <span class="mo2f-styled-radio-text">
1159
- <?php echo __('Microsoft Authenticator', 'miniorange-2-factor-authentication'); ?>
1160
- </span>
1161
  </label>
1162
- </td>
1163
- <td>
1164
  <label title="<?php echo __('You have to enter 6 digits code generated by Authy 2-Factor Authentication App to login. Supported in Smartphones only.', 'miniorange-2-factor-authentication'); ?>">
1165
- <input type="radio" name="mo2f_selected_2factor_method" class="mo2f-styled-radio" value="Google Authenticator" />
1166
- <span class="mo2f-styled-radio-text">
1167
  <?php echo __('Authy 2-Factor Authentication', 'miniorange-2-factor-authentication'); ?>
1168
- </span>
1169
  </label>
1170
- </td></tr>
1171
- <tr><td>
1172
-
1173
  <label title="<?php echo __('You will receive a push notification on your phone. You have to ACCEPT or DENY it to login. Supported in Smartphones only.', 'miniorange-2-factor-authentication'); ?>">
1174
- <input type="radio" name="mo2f_selected_2factor_method" class="mo2f-styled-radio" value="Duo Authenticator" />
1175
- <span class="mo2f-styled-radio-text">
1176
  <?php echo __('Duo Push Notification', 'miniorange-2-factor-authentication'); ?>
1177
- </span>
1178
  </label>
1179
- </td>
1180
- <td>
 
 
 
 
 
 
1181
  <label title="<?php echo __('You will get an OTP on your TELEGRAM app from miniOrange Bot.', 'miniorange-2-factor-authentication'); ?>" >
1182
- <input type="radio" name="mo2f_selected_2factor_method" class="mo2f-styled-radio" value="OTP Over Telegram" />
1183
- <span class="mo2f-styled-radio-text">
1184
  <?php echo __('OTP Over Telegram', 'miniorange-2-factor-authentication'); ?>
1185
- </span>
1186
  </label>
1187
- </td>
1188
- </table>
1189
- </div>
1190
 
1191
- <br><a href="#skiptwofactor" style="color:#F4D03F ;font-weight:bold;margin-left:45%;"><?php echo __('Skip Setup', 'miniorange-2-factor-authentication'); ?></a>
1192
  <br />
1193
 
1194
 
1195
- <div class="mo2f-setup-wizard-step-footer">
1196
- <a href="#previousStep1"><span class="text-with-arrow text-with-arrow-left"><svg viewBox="0 0 448 512" role="img" class="icon" data-icon="long-arrow-alt-left" data-prefix="far" focusable="false" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="16" height="18"><path xmlns="http://www.w3.org/2000/svg" fill="currentColor" d="M107.515 150.971L8.485 250c-4.686 4.686-4.686 12.284 0 16.971L107.515 366c7.56 7.56 20.485 2.206 20.485-8.485v-71.03h308c6.627 0 12-5.373 12-12v-32c0-6.627-5.373-12-12-12H128v-71.03c0-10.69-12.926-16.044-20.485-8.484z"></path></svg> Previous Step </span></a>
1197
- <div class="mo2f-setup-wizard-step-footer-buttons">
1198
- <input type="button" name="mo2f_next_step1" id="mo2f_next_step1" class="mo2f-button mo2f-button-main" value="Save and Continue" />
1199
-
1200
- </div>
1201
- </div>
1202
- </div>
1203
-
1204
-
1205
-
1206
-
1207
-
1208
- <div id="mo2f-setup-settings-error-loading-area2" style="width: 900px; display: none;">
1209
- <p class="mo2f-step-show"> Step 2 of 4</p>
1210
-
1211
- <h4 style="text-align:center;font-size: xx-large;"> Register with miniOrange </h4>
1212
-
1213
- <form name="f" id="mo2f_registration_form" method="post" action="">
1214
- <input type="hidden" name="option" value="mo_wpns_register_customer" />
1215
- <div class="mo2f_table_layout">
1216
- <div style="margin-bottom:30px;">
1217
- <div class="overlay_error" style="width:760px; display: none;" id= "mo2f_Error_block">
1218
- <p class ="popup_text" id="mo2f_Error_message" style="color: red;" >Seems like email is already registered. Please click on 'Already have an account'</p></div>
1219
- <p> Please enter a valid email id that you have access to and select a password</p>
1220
- <table class="mo_wpns_settings_table">
1221
- <tr>
1222
- <td><b><font color="#FF0000">*</font>Email:</b></td>
1223
- <td><input style="padding: 5px;" class="mo_wpns_table_textbox" type="email" id="mo2f_email" name="email"
1224
- required placeholder="person@example.com" /></td>
1225
- </tr>
1226
-
1227
- <tr>
1228
- <td><b><font color="#FF0000">*</font>Password:</b></td>
1229
- <td><input style="padding: 5px;" class="mo_wpns_table_textbox" required id= "mo2f_password" type="password"
1230
- name="password" placeholder="Choose your password (Min. length 6)" /></td>
1231
- </tr>
1232
- <tr>
1233
- <td><b><font color="#FF0000">*</font>Confirm Password:</b></td>
1234
- <td><input style="padding: 5px;" class="mo_wpns_table_textbox" id= "mo2f_confirmPassword" required type="password"
1235
- name="confirmPassword" placeholder="Confirm your password" /></td>
1236
- </tr>
1237
- <tr>
1238
- <td>&nbsp;</td>
1239
- <td><br>
1240
- <a href="#mo2f_account_exist">Already have an account?</a>
1241
-
1242
- </tr>
1243
- </table>
1244
- </div>
1245
- </div>
1246
- </form>
1247
- <form name="f" id="mo2f_login_form" style="display: none;" method="post" action="">
1248
- <input type="hidden" name="option" value="mo_wpns_verify_customer" />
1249
- <div class="mo2f_table_layout">
1250
- <div style="margin-bottom:30px;">
1251
- <div class="overlay_error" style="width:760px; display: none;" id= "mo2f_Error_block">
1252
- <p class ="popup_text" id="mo2f_Error_message" style="color: red;" >Invalid Credentials</p></div>
1253
-
1254
- <p>Please enter your miniOrange email and password. <a target="_blank" href="https://login.xecurify.com/moas/idp/resetpassword"> Click here if you forgot your password?</a></p>
1255
- <table class="mo_wpns_settings_table">
1256
- <tr>
1257
- <td><b><font color="#FF0000">*</font>Email:</b></td>
1258
- <td><input style="padding: 5px;" class="mo_wpns_table_textbox" type="email" id="mo2f_email_login" name="email"
1259
- required placeholder="person@example.com" /></td>
1260
- </tr>
1261
- <tr>
1262
- <td><b><font color="#FF0000">*</font>Password:</b></td>
1263
- <td><input style="padding: 5px;" class="mo_wpns_table_textbox" required id= "mo2f_password_login" type="password"
1264
- name="password" placeholder="Enter your miniOrange password" /></td>
1265
- </tr>
1266
- <tr>
1267
- <td>&nbsp;</td>
1268
- <td><br>
1269
- <a href="#mo2f_register_new_account">Go Back to Registration Page</a>
1270
-
1271
- </tr>
1272
-
1273
- </table>
1274
- </div>
1275
- </div>
1276
- </form>
1277
-
1278
-
1279
- <br><a href="#skiptwofactor" style="color:#F4D03F ;font-weight:bold;margin-left:45%;"><?php echo __('Skip Setup', 'miniorange-2-factor-authentication'); ?></a>
1280
- <br/>
1281
-
1282
-
1283
- <div class="mo2f-setup-wizard-step-footer">
1284
- <a href="#previousStep2"><span class="text-with-arrow text-with-arrow-left"><svg viewBox="0 0 448 512" role="img" class="icon" data-icon="long-arrow-alt-left" data-prefix="far" focusable="false" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="16" height="18"><path xmlns="http://www.w3.org/2000/svg" fill="currentColor" d="M107.515 150.971L8.485 250c-4.686 4.686-4.686 12.284 0 16.971L107.515 366c7.56 7.56 20.485 2.206 20.485-8.485v-71.03h308c6.627 0 12-5.373 12-12v-32c0-6.627-5.373-12-12-12H128v-71.03c0-10.69-12.926-16.044-20.485-8.484z"></path></svg> Previous Step </span></a>
1285
- <div class="mo2f-setup-wizard-step-footer-buttons">
1286
- <input type="button" name="mo2f_next_step2" id="mo2f_next_step2" class="mo2f-button mo2f-button-main" value="Create Account and continue" />
1287
-
1288
- </div>
1289
- </div>
1290
-
1291
-
1292
- </div>
1293
-
1294
- <div id="mo2f-setup-settings-error-loading-area3" style="width: 900px; display: none;">
1295
- <p class="mo2f-step-show"> Step 3 of 4</p>
1296
-
1297
- <h3 style="text-align:center;font-size: xx-large;" id="mo2f_setup_method_title"> Configure 2-factor authentication </h3>
1298
-
1299
- <div class="overlay_success" style="width:760px; display: none;" id= "mo2f_success_block_configuration">
1300
- <p class ="popup_text" id="mo2f_configure_success_message" >An OTP has been sent to the below email.</p>
1301
- <br><br></div>
1302
-
1303
- <div class="overlay_error" style="width:760px; display: none;" id= "mo2f_Error_block_configuration">
1304
- <p class ="popup_text" id="mo2f_configure_Error_message" style="color: red;" >Invalid OTP</p>
1305
- </div>
1306
- <div id="mo2f_main_content"> </div>
1307
-
1308
- <br><a href="#skiptwofactor" style="color:#F4D03F ;font-weight:bold;margin-left:45%;"><?php echo __('Skip Setup', 'miniorange-2-factor-authentication'); ?></a>
1309
- <br/>
1310
-
1311
-
1312
-
1313
- <div class="mo2f-setup-wizard-step-footer">
1314
- <a href="#previousStep3"><span class="text-with-arrow text-with-arrow-left"><svg viewBox="0 0 448 512" role="img" class="icon" data-icon="long-arrow-alt-left" data-prefix="far" focusable="false" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="16" height="18"><path xmlns="http://www.w3.org/2000/svg" fill="currentColor" d="M107.515 150.971L8.485 250c-4.686 4.686-4.686 12.284 0 16.971L107.515 366c7.56 7.56 20.485 2.206 20.485-8.485v-71.03h308c6.627 0 12-5.373 12-12v-32c0-6.627-5.373-12-12-12H128v-71.03c0-10.69-12.926-16.044-20.485-8.484z"></path></svg> Previous Step </span></a>
1315
- <div class="mo2f-setup-wizard-step-footer-buttons">
1316
- <input type="button" name="mo2f_next_step3" id="mo2f_next_step3" class="mo2f-button mo2f-button-main" value="Save and Continue" />
1317
-
1318
- </div>
1319
- </div>
1320
-
1321
-
1322
- </div>
1323
-
1324
- <div id="mo2f-setup-settings-error-loading-area4" style="width: 900px; display: none;">
1325
- <p class="mo2f-step-show"> Step 4 of 4</p>
1326
- <div style="text-align: center;">
1327
- <h3 style="text-align:center;font-size: xx-large;"> Congratulations! </h3>
1328
- <br>
1329
- You have successfully configured the two-factor authentication.
1330
- <br><br><br>
1331
- <input type="button" name="mo2f_next_step4" id="mo2f_next_step4" class="mo2f-button mo2f-button-main" value="Advance Settings" />
1332
-
1333
- </div>
1334
- </div>
1335
-
1336
- </div>
1337
-
1338
-
1339
  </div>
1340
  </div>
1341
 
1342
 
1343
 
1344
  <script type="text/javascript">
1345
-
1346
- var selected_2FA_method = '';
1347
- var ele = document.getElementsByName('mo2f_selected_2factor_method');
1348
- for(i = 0; i < ele.length; i++) {
1349
- if(ele[i].checked)
1350
- selected_2FA_method = ele[i].value;
1351
- }
1352
- jQuery("#mo2f_setup_method_title").text(selected_2FA_method);
1353
-
1354
- jQuery('#mo2f_next_step4').click(function(e){
1355
- localStorage.setItem("last_tab", 'unlimittedUser_2fa');
1356
- window.location.href = '<?php echo (admin_url()."admin.php?page=mo_2fa_two_fa"); ?>';
1357
-
1358
- });
1359
-
1360
-
1361
  jQuery('#mo2f_methods_setup_wizard').css('display', 'none');
1362
  jQuery("#mo2f_get_started").click(function(e){
1363
  jQuery('#mo2f-setup-settings-error-loading-area-container').css('display', 'none');
@@ -1365,417 +729,21 @@ private function settings_error_page( $id = 'mo2f-setup-vue-site-settings', $foo
1365
 
1366
  });
1367
 
1368
- jQuery('a[href="#previousStep3"]').click(function(e){
1369
- document.getElementById('mo2f_success_block_configuration').style.display = "none";
1370
- document.getElementById('mo2f_Error_block_configuration').style.display = "none";
1371
-
1372
- var selected_2FA_method = '';
1373
- var ele = document.getElementsByName('mo2f_selected_2factor_method');
1374
- for(i = 0; i < ele.length; i++) {
1375
- if(ele[i].checked)
1376
- selected_2FA_method = ele[i].value;
1377
- }
1378
- if(selected_2FA_method =='OTP Over SMS')
1379
- {
1380
- document.getElementById('mo2f-setup-settings-error-loading-area3').style.display = "none";
1381
- document.getElementById('mo2f-setup-settings-error-loading-area2').style.display = "block";
1382
- var lineElement = document.getElementById("mo2f-setup-wizard-line2");
1383
- lineElement.classList.remove("mo2f-setup-wizard-timeline-line-active");
1384
- var stepElement = document.getElementById("mo2f-setup-wizard-step3");
1385
- stepElement.classList.remove("mo2f-setup-wizard-timeline-step-active");
1386
- }
1387
- else
1388
- {
1389
- var lineElement = document.getElementById("mo2f-setup-wizard-line2");
1390
- lineElement.classList.remove("mo2f-setup-wizard-timeline-line-active");
1391
- var stepElement = document.getElementById("mo2f-setup-wizard-step3");
1392
- stepElement.classList.remove("mo2f-setup-wizard-timeline-step-active");
1393
- var lineElement = document.getElementById("mo2f-setup-wizard-line1");
1394
- lineElement.classList.remove("mo2f-setup-wizard-timeline-line-active");
1395
- var stepElement = document.getElementById("mo2f-setup-wizard-step2");
1396
- stepElement.classList.remove("mo2f-setup-wizard-timeline-step-active");
1397
- document.getElementById('mo2f-setup-settings-error-loading-area3').style.display = "none";
1398
- document.getElementById('mo2f-setup-settings-error-loading-area1').style.display = "block";
1399
-
1400
- }
1401
- });
1402
-
1403
- jQuery('a[href="#previousStep2"]').click(function(e){
1404
- document.getElementById('mo2f-setup-settings-error-loading-area2').style.display = "none";
1405
- document.getElementById('mo2f-setup-settings-error-loading-area1').style.display = "block";
1406
- var lineElement = document.getElementById("mo2f-setup-wizard-line1");
1407
- lineElement.classList.remove("mo2f-setup-wizard-timeline-line-active");
1408
- var stepElement = document.getElementById("mo2f-setup-wizard-step2");
1409
- stepElement.classList.remove("mo2f-setup-wizard-timeline-step-active");
1410
-
1411
- });
1412
-
1413
- jQuery('a[href="#previousStep1"]').click(function(e){
1414
- jQuery('#mo2f-setup-settings-error-loading-area-container').css('display', 'block');
1415
- jQuery('#mo2f_methods_setup_wizard').css('display', 'none');
1416
-
1417
- });
1418
-
1419
- jQuery('a[href=\"#mo2f_account_exist\"]').click(function (e) {
1420
- document.getElementById('mo2f_registration_form').style.display = "none";
1421
- document.getElementById('mo2f_login_form').style.display = "block";
1422
- document.getElementById('mo2f_next_step2').value = 'Login and Continue';
1423
- });
1424
-
1425
- jQuery('a[href=\"#mo2f_register_new_account\"]').click(function (e) {
1426
- document.getElementById('mo2f_registration_form').style.display = "block";
1427
- document.getElementById('mo2f_login_form').style.display = "none";
1428
- document.getElementById('mo2f_next_step2').value = 'Create Account and Continue';
1429
- });
1430
-
1431
- jQuery('#mo2f_next_step3').click(function(e){
1432
- document.getElementById('mo2f_loader').style.display = "block";
1433
- document.getElementById('mo2f_success_block_configuration').style.display = "none";
1434
- document.getElementById('mo2f_Error_block_configuration').style.display = "none";
1435
- document.getElementById('mo2f-setup-wizard-settings-area').className = ' overlay';
1436
-
1437
- var selected_2FA_method = '';
1438
- var ele = document.getElementsByName('mo2f_selected_2factor_method');
1439
- for(i = 0; i < ele.length; i++) {
1440
- if(ele[i].checked)
1441
- selected_2FA_method = ele[i].value;
1442
- }
1443
- var data ='';
1444
- if(selected_2FA_method == 'Google Authenticator')
1445
- {
1446
- data= { 'action':'mo_two_factor_ajax',
1447
- 'mo_2f_two_factor_ajax' : 'mo_2fa_verify_GA_setup_wizard',
1448
- 'mo2f_google_auth_code' : jQuery('#mo2f_google_auth_code').val(),
1449
- 'mo2f_session_id' : jQuery('#mo2f_session_id').val()
1450
- };
1451
-
1452
- }
1453
- else if (selected_2FA_method =='OTP Over SMS')
1454
- {
1455
- data= { 'action':'mo_two_factor_ajax',
1456
- 'mo_2f_two_factor_ajax' : 'mo_2fa_verify_OTPOverSMS_setup_wizard',
1457
- 'mo2f_otp_token' : jQuery('#mo2f_otp_token').val()
1458
- };
1459
-
1460
- }
1461
- else if(selected_2FA_method == 'OTP Over Email')
1462
- {
1463
- data= { 'action':'mo_two_factor_ajax',
1464
- 'mo_2f_two_factor_ajax' : 'mo_2fa_verify_OTPOverEmail_setup_wizard',
1465
- 'mo2f_otp_token' : jQuery('#mo2f_otp_token').val()
1466
- };
1467
-
1468
- }
1469
- else if(selected_2FA_method == 'Security Questions')
1470
- {
1471
- data= { 'action':'mo_two_factor_ajax',
1472
- 'mo_2f_two_factor_ajax' : 'mo_2fa_verify_KBA_setup_wizard',
1473
- 'mo2f_kbaquestion_1' : jQuery('#mo2f_kbaquestion_1').val(),
1474
- 'mo2f_kbaquestion_2' : jQuery('#mo2f_kbaquestion_2').val(),
1475
- 'mo2f_kbaquestion_3' : jQuery('#mo2f_kbaquestion_3').val(),
1476
- 'mo2f_kba_ans1' : jQuery('#mo2f_kba_ans1').val(),
1477
- 'mo2f_kba_ans2' : jQuery('#mo2f_kba_ans2').val(),
1478
- 'mo2f_kba_ans3' : jQuery('#mo2f_kba_ans3').val()
1479
- };
1480
-
1481
- }
1482
- var ajax_url = "<?php echo admin_url('admin-ajax.php'); ?>";
1483
- jQuery.post(ajax_url, data, function(response){
1484
- document.getElementById('mo2f_loader').style.display = "none";
1485
- document.getElementById('mo2f-setup-wizard-settings-area').classList.remove('overlay');
1486
-
1487
- if(response =='SUCCESS')
1488
- {
1489
- var lineElement = document.getElementById("mo2f-setup-wizard-line3");
1490
- lineElement.className += " mo2f-setup-wizard-timeline-line-active";
1491
- var stepElement = document.getElementById("mo2f-setup-wizard-step4");
1492
- stepElement.className += " mo2f-setup-wizard-timeline-step-active";
1493
- document.getElementById('mo2f-setup-settings-error-loading-area3').style.display = "none";
1494
- jQuery('#mo2f-setup-settings-error-loading-area4').css('display','block');
1495
-
1496
- }
1497
- else
1498
- {
1499
- document.getElementById('mo2f_configure_Error_message').innerHTML = response;
1500
- document.getElementById('mo2f_Error_block_configuration').style.display = "block";
1501
- }
1502
- });
1503
-
1504
- });
1505
-
1506
- jQuery("#mo2f_next_step2").click(function(e){
1507
- document.getElementById('mo2f-setup-wizard-settings-area').className = ' overlay';
1508
- document.getElementById('mo2f_loader').style.display = "block";
1509
- document.getElementById('mo2f_Error_block').style.display = "none";
1510
- document.getElementById('mo2f_next_step2').disabled = true;
1511
- var ajax_url = "<?php echo admin_url('admin-ajax.php'); ?>";
1512
- var email = jQuery("#mo2f_email").val();
1513
- var password = jQuery("#mo2f_password").val();
1514
- if(jQuery("#mo2f_next_step2").val() == 'Login and Continue')
1515
- {
1516
- email = jQuery("#mo2f_email_login").val();
1517
- password = jQuery("#mo2f_password_login").val();
1518
- }
1519
- var data= { 'action':'mo_two_factor_ajax',
1520
- 'mo_2f_two_factor_ajax' : 'mo_wpns_register_verify_customer',
1521
- 'email': email,
1522
- 'password':password,
1523
- 'confirmPassword' : jQuery("#mo2f_confirmPassword").val(),
1524
- 'Login and Continue' : jQuery("#mo2f_next_step2").val()
1525
- };
1526
-
1527
- jQuery.post(ajax_url, data, function(response){
1528
- document.getElementById('mo2f-setup-wizard-settings-area').classList.remove('overlay');
1529
-
1530
- document.getElementById('mo2f_next_step2').disabled = false;
1531
- if(response == 'SUCCESS')
1532
- {
1533
- var lineElement = document.getElementById("mo2f-setup-wizard-line2");
1534
- lineElement.className += " mo2f-setup-wizard-timeline-line-active";
1535
- var stepElement = document.getElementById("mo2f-setup-wizard-step3");
1536
- stepElement.className += " mo2f-setup-wizard-timeline-step-active";
1537
- document.getElementById('mo2f-setup-settings-error-loading-area2').style.display = "none";
1538
- jQuery('#mo2f-setup-settings-error-loading-area3').css('display','block');
1539
-
1540
- var ajax_url = "<?php echo admin_url('admin-ajax.php'); ?>";
1541
- var data= { 'action':'mo_two_factor_ajax',
1542
- 'mo_2f_two_factor_ajax' : 'mo_2fa_configure_OTPOverSMS_setup_wizard'
1543
- };
1544
- jQuery.post(ajax_url, data, function(response){
1545
-
1546
- document.getElementById('mo2f_loader').style.display = "none";
1547
- document.getElementById('mo2f_main_content').innerHTML = response;
1548
- jQuery("#phone").intlTelInput();
1549
-
1550
- jQuery('#mo2f_send_otp').click(function(e){
1551
- document.getElementById('mo2f_loader').style.display = "block";
1552
- document.getElementById('mo2f-setup-wizard-settings-area').className = ' overlay';
1553
-
1554
- document.getElementById('mo2f_success_block_configuration').style.display = "none";
1555
- document.getElementById('mo2f_Error_block_configuration').style.display = "none";
1556
-
1557
- var data = { 'action':'mo_two_factor_ajax',
1558
- 'mo_2f_two_factor_ajax' : 'mo_2fa_send_otp_token',
1559
- 'phone' : jQuery('#phone').val(),
1560
- 'selected_2FA_method' : 'SMS'
1561
- };
1562
- var ajax_url = "<?php echo admin_url('admin-ajax.php'); ?>";
1563
- jQuery.post(ajax_url, data, function(response){
1564
- document.getElementById('mo2f_loader').style.display = "none";
1565
- document.getElementById('mo2f-setup-wizard-settings-area').classList.remove('overlay');
1566
-
1567
- if(response == 'SUCCESS')
1568
- {
1569
- $message = 'An OTP has been sent to the below phone number. Please enter the OTP to set the 2FA';
1570
- document.getElementById('mo2f_configure_success_message').innerHTML = $message;
1571
- document.getElementById('mo2f_success_block_configuration').style.display = "block";
1572
-
1573
- }
1574
- else
1575
- {
1576
- document.getElementById('mo2f_configure_Error_message').innerHTML = response;
1577
- document.getElementById('mo2f_Error_block_configuration').style.display = "block";
1578
-
1579
- }
1580
- });
1581
-
1582
- });
1583
-
1584
- });
1585
- }
1586
- else
1587
- {
1588
- document.getElementById('mo2f_loader').style.display = "none";
1589
- document.getElementById('mo2f_Error_message').innerHTML = response;
1590
- document.getElementById('mo2f_Error_block').style.display = "block";
1591
- }
1592
-
1593
- });
1594
-
1595
- });
1596
-
1597
- jQuery("#mo2f_next_step1").click(function(e){
1598
- var ele = document.getElementsByName('mo2f_selected_2factor_method');
1599
- var selected_2FA_method = '';
1600
- for(i = 0; i < ele.length; i++) {
1601
- if(ele[i].checked)
1602
- selected_2FA_method = ele[i].value;
1603
- }
1604
- var configMessage = 'Configure '+selected_2FA_method;
1605
- jQuery("#mo2f_setup_method_title").text(configMessage);
1606
-
1607
- if(selected_2FA_method == '')
1608
- {
1609
- return '';
1610
- }
1611
-
1612
-
1613
-
1614
- document.getElementById('mo2f-setup-settings-error-loading-area1').style.display = "none";
1615
- var lineElement = document.getElementById("mo2f-setup-wizard-line1");
1616
- lineElement.className += " mo2f-setup-wizard-timeline-line-active";
1617
- var stepElement = document.getElementById("mo2f-setup-wizard-step2");
1618
- stepElement.className += " mo2f-setup-wizard-timeline-step-active";
1619
-
1620
- if(selected_2FA_method !="OTP Over SMS" && selected_2FA_method != '')
1621
- {
1622
- var lineElement = document.getElementById("mo2f-setup-wizard-line2");
1623
- lineElement.className += " mo2f-setup-wizard-timeline-line-active";
1624
- var stepElement = document.getElementById("mo2f-setup-wizard-step3");
1625
- stepElement.className += " mo2f-setup-wizard-timeline-step-active";
1626
- jQuery('#mo2f-setup-settings-error-loading-area3').css('display','block');
1627
-
1628
- document.getElementById('mo2f_loader').style.display = "block";
1629
-
1630
- var mo2f_setup_call = "";
1631
- if(selected_2FA_method == "Google Authenticator")
1632
- {
1633
- mo2f_setup_call = "mo_2fa_configure_GA_setup_wizard";
1634
- }
1635
- else if(selected_2FA_method =="OTP Over Email")
1636
- {
1637
- mo2f_setup_call ="mo_2fa_configure_OTPOverEmail_setup_wizard";
1638
- }
1639
- else if (selected_2FA_method == "Security Questions")
1640
- {
1641
- mo2f_setup_call = "mo_2fa_configure_KBA_setup_wizard";
1642
- }
1643
- var ajax_url = "<?php echo admin_url('admin-ajax.php'); ?>";
1644
- var data= { 'action':'mo_two_factor_ajax',
1645
- 'mo_2f_two_factor_ajax' : mo2f_setup_call
1646
- };
1647
- jQuery.post(ajax_url, data, function(response){
1648
- document.getElementById('mo2f_loader').style.display = "none";
1649
- document.getElementById('mo2f_main_content').innerHTML = response;
1650
-
1651
- if(selected_2FA_method == 'Google Authenticator')
1652
- {
1653
- jQuery('.mo2f_gauth').qrcode({
1654
- 'render': 'image',
1655
- size: 175,
1656
- 'text': jQuery('.mo2f_gauth').data('qrcode')
1657
- });
1658
- jQuery('a[href="#mo2f_scanbarcode_a"]').click(function(e){
1659
- var element = document.getElementById('mo2f_scanbarcode_a');
1660
- if(element.style.display === 'none')
1661
- element.style.display = 'block';
1662
-
1663
- else
1664
- element.style.display = "none";
1665
- });
1666
-
1667
- }
1668
- else if(selected_2FA_method =='OTP Over Email')
1669
- {
1670
- jQuery('#mo2f_send_otp').click(function(e){
1671
- document.getElementById('mo2f_loader').style.display = "block";
1672
- document.getElementById('mo2f-setup-wizard-settings-area').className = ' overlay';
1673
-
1674
- document.getElementById('mo2f_success_block_configuration').style.display = "none";
1675
- document.getElementById('mo2f_Error_block_configuration').style.display = "none";
1676
-
1677
- var data = { 'action':'mo_two_factor_ajax',
1678
- 'mo_2f_two_factor_ajax' : 'mo_2fa_send_otp_token',
1679
- 'phone' : jQuery('#phone').val(),
1680
- 'mo2f_session_id' : jQuery('#mo2f_session_id').val(),
1681
- 'selected_2FA_method' : 'OTP Over Email'
1682
- };
1683
- var ajax_url = "<?php echo admin_url('admin-ajax.php'); ?>";
1684
- jQuery.post(ajax_url, data, function(response){
1685
- document.getElementById('mo2f_loader').style.display = "none";
1686
- document.getElementById('mo2f-setup-wizard-settings-area').classList.remove('overlay');
1687
-
1688
- if(response == 'SUCCESS')
1689
- {
1690
- $message = 'An OTP has been sent to the below email please enter the OTP to set the 2FA';
1691
- document.getElementById('mo2f_configure_success_message').innerHTML = $message;
1692
- document.getElementById('mo2f_success_block_configuration').style.display = "block";
1693
-
1694
- }
1695
- else
1696
- {
1697
- document.getElementById('mo2f_configure_Error_message').innerHTML = response;
1698
- document.getElementById('mo2f_Error_block_configuration').style.display = "block";
1699
-
1700
- }
1701
- });
1702
-
1703
- });
1704
- }
1705
- else if (selected_2FA_method =='Security Questions')
1706
- {
1707
-
1708
- var mo_option_to_hide1;
1709
- //hidden element in dropdown list 2
1710
- var mo_option_to_hide2;
1711
-
1712
- jQuery('#mo2f_kbaquestion_1').change(function(){
1713
- list = 1;
1714
- var list_selected = document.getElementById("mo2f_kbaquestion_" + list).selectedIndex;
1715
- //if an element is currently hidden, unhide it
1716
- if (typeof (mo_option_to_hide1) != "undefined" && mo_option_to_hide1 !== null && list == 2) {
1717
- mo_option_to_hide1.style.display = 'block';
1718
- } else if (typeof (mo_option_to_hide2) != "undefined" && mo_option_to_hide2 !== null && list == 1) {
1719
- mo_option_to_hide2.style.display = 'block';
1720
- }
1721
- //select the element to hide and then hide it
1722
- if (list == 1) {
1723
- if (list_selected != 0) {
1724
- mo_option_to_hide2 = document.getElementById("mq" + list_selected + "_2");
1725
- mo_option_to_hide2.style.display = 'none';
1726
- }
1727
- }
1728
- });
1729
- jQuery('#mo2f_kbaquestion_2').change(function(){
1730
- list = 2;
1731
- var list_selected = document.getElementById("mo2f_kbaquestion_" + list).selectedIndex;
1732
- //if an element is currently hidden, unhide it
1733
- if (typeof (mo_option_to_hide1) != "undefined" && mo_option_to_hide1 !== null && list == 2) {
1734
- mo_option_to_hide1.style.display = 'block';
1735
- } else if (typeof (mo_option_to_hide2) != "undefined" && mo_option_to_hide2 !== null && list == 1) {
1736
- mo_option_to_hide2.style.display = 'block';
1737
- }
1738
- //select the element to hide and then hide it
1739
- if (list == 2) {
1740
- if (list_selected != 0) {
1741
- mo_option_to_hide1 = document.getElementById("mq" + list_selected + "_1");
1742
- mo_option_to_hide1.style.display = 'none';
1743
- }
1744
- }
1745
- });
1746
-
1747
- }
1748
- });
1749
-
1750
-
1751
- }
1752
- else if(selected_2FA_method == 'OTP Over SMS')
1753
- {
1754
- jQuery('#mo2f-setup-settings-error-loading-area2').css('display','block');
1755
- }
1756
-
1757
-
1758
- });
1759
  jQuery('input:radio[name=mo2f_selected_2factor_method]').click(function() {
1760
-
1761
-
1762
  localStorage.setItem("last_tab", 'setup_2fa');
1763
  var selectedMethod = jQuery(this).val();
1764
  var ajax_url = "<?php echo admin_url('admin-ajax.php'); ?>";
1765
  var nonce = "<?php echo wp_create_nonce( 'miniorange-select-method-setup-wizard' ); ?>";
1766
 
1767
- if(selectedMethod == 'Duo Authenticator' || selectedMethod =='OTP Over Telegram')
1768
- {
1769
- var data= { 'action':'mo_two_factor_ajax',
1770
- 'mo_2f_two_factor_ajax' : 'select_method_setup_wizard',
1771
- 'mo2f_method': selectedMethod,
1772
- 'nonce': nonce };
1773
-
1774
- jQuery.post(ajax_url, data, function(response){
1775
- window.location.href = '<?php echo (admin_url()."admin.php?page=mo_2fa_two_fa"); ?>';
1776
- });
1777
- }
1778
-
1779
  });
1780
 
1781
  jQuery('a[href="#skiptwofactor"]').click(function(e){
@@ -1839,7 +807,7 @@ private function settings_error_page( $id = 'mo2f-setup-vue-site-settings', $foo
1839
 
1840
  do_action( 'mo2f_admin_setup_wizard_load_setup_wizard_before', $this );
1841
  wp_enqueue_script('jquery');
1842
- wp_enqueue_script('wp-mo2f-setup-wizard',plugins_url( 'includes/js/setup-wizard-2fa.js', dirname(dirname(__FILE__))));
1843
 
1844
  wp_localize_script(
1845
  'wp-mo2f-setup-wizard',
@@ -4180,6 +3148,18 @@ private function settings_error_page( $id = 'mo2f-setup-vue-site-settings', $foo
4180
  } else {
4181
  update_option( 'mo2f_enable_2fa', isset( $_POST['mo2f_enable_2fa'] ) ? $_POST['mo2f_enable_2fa'] : 0 );
4182
  }
 
 
 
 
 
 
 
 
 
 
 
 
4183
  }else if ( isset( $_POST['option'] ) && $_POST['option'] == 'mo_2factor_test_authentication_method' ) {
4184
  //network security feature
4185
  $nonce = $_POST['mo_2factor_test_authentication_method_nonce'];
@@ -4449,25 +3429,7 @@ private function settings_error_page( $id = 'mo2f-setup-vue-site-settings', $foo
4449
  $error->add('empty_username', '<strong>'. __('ERROR','miniorange-2-factor-authentication') .'</strong>: '. __('Invalid Request.', 'miniorange-2-factor-authentication'));
4450
  return $error;
4451
  }else {
4452
- $codes = MO2f_Utility::mo2f_mail_and_download_codes();
4453
-
4454
- if($codes == 'LimitReached' || $codes == 'UserLimitReached' || $codes == 'AllUsed' || $codes == 'invalid_request'){
4455
- $id = get_current_user_id();
4456
- update_user_meta($id, 'mo_backup_code_generated', 1);
4457
- update_user_meta($id, 'mo_backup_code_downloaded', 1);
4458
- if($codes == 'AllUsed'){
4459
- update_option( 'mo2f_message', Mo2fConstants::langTranslate("USED_ALL_BACKUP_CODES"));
4460
- }else if($codes == 'LimitReached'){
4461
- update_option( 'mo2f_message', Mo2fConstants::langTranslate("BACKUP_CODE_LIMIT_REACH"));
4462
- }else if($codes == 'UserLimitReached'){
4463
- update_option( 'mo2f_message', Mo2fConstants::langTranslate("BACKUP_CODE_DOMAIN_LIMIT_REACH"));
4464
- }else if($codes == 'invalid_request'){
4465
- update_user_meta($id, 'mo_backup_code_generated', 0);
4466
- update_user_meta($id, 'mo_backup_code_downloaded', 0);
4467
- update_option( 'mo2f_message', Mo2fConstants::langTranslate("BACKUP_CODE_INVALID_REQUEST"));
4468
- }
4469
- $this->mo_auth_show_error_message();
4470
- }
4471
  }
4472
  }
4473
 
@@ -4509,7 +3471,7 @@ private function settings_error_page( $id = 'mo2f-setup-vue-site-settings', $foo
4509
  <!-- Modal content -->
4510
  <div class="modal-content">
4511
  <div class="modal-header">
4512
- <h3 class="modal-title" style="text-align: center; font-size: 20px; color: #2271b1">Email Address for miniOrange</h3><span id="closeEnterEmailCloud" class="modal-span-close">X</span>
4513
  </div>
4514
  <div class="modal-body" style="height: auto">
4515
  <h2><i>Enter your Email:&nbsp;&nbsp;&nbsp; <input type ='email' id='emailEnteredCloud' name='emailEnteredCloud' size= '40' required value="<?php echo $email;?>"/></i></h2>
@@ -4901,18 +3863,18 @@ private function settings_error_page( $id = 'mo2f-setup-vue-site-settings', $foo
4901
  $url = get_site_option('siteurl').'/wp-login.php?'; //login page can change
4902
  $message = '<table cellpadding="25" style="margin:0px auto">
4903
  <tbody>
4904
- <td>
4905
  <td>
4906
  <table cellpadding="24" width="584px" style="margin:0 auto;max-width:584px;background-color:#f6f4f4;border:1px solid #a8adad">
4907
  <tbody>
4908
- <td>
4909
  <td><img src="https://ci5.googleusercontent.com/proxy/10EQeM1udyBOkfD2dwxGhIaMXV4lOwCRtUecpsDkZISL0JIkOL2JhaYhVp54q6Sk656rW2rpAFJFEgGQiAOVcYIIKxXYMHHMNSNB=s0-d-e1-ft#https://login.xecurify.com/moas/images/xecurify-logo.png" style="color:#5fb336;text-decoration:none;display:block;width:auto;height:auto;max-height:35px" class="CToWUd"></td>
4910
  </tr>
4911
  </tbody>
4912
  </table>
4913
  <table cellpadding="24" style="background:#fff;border:1px solid #a8adad;width:584px;border-top:none;color:#4d4b48;font-family:Arial,Helvetica,sans-serif;font-size:13px;line-height:18px">
4914
  <tbody>
4915
- <td>
4916
  <td>
4917
  <p style="margin-top:0;margin-bottom:20px">Dear Customers,</p>
4918
  <p style="margin-top:0;margin-bottom:10px">You initiated a transaction <b>WordPress 2 Factor Authentication Plugin</b>:</p>
@@ -4993,18 +3955,18 @@ private function settings_error_page( $id = 'mo2f-setup-vue-site-settings', $foo
4993
  $headers[] = 'Cc: 2fasupport <2fasupport@xecurify.com>';
4994
  $message = '<table cellpadding="25" style="margin:0px auto">
4995
  <tbody>
4996
- <td>
4997
  <td>
4998
  <table cellpadding="24" width="584px" style="margin:0 auto;max-width:584px;background-color:#f6f4f4;border:1px solid #a8adad">
4999
  <tbody>
5000
- <td>
5001
  <td><img src="https://ci5.googleusercontent.com/proxy/10EQeM1udyBOkfD2dwxGhIaMXV4lOwCRtUecpsDkZISL0JIkOL2JhaYhVp54q6Sk656rW2rpAFJFEgGQiAOVcYIIKxXYMHHMNSNB=s0-d-e1-ft#https://login.xecurify.com/moas/images/xecurify-logo.png" style="color:#5fb336;text-decoration:none;display:block;width:auto;height:auto;max-height:35px" class="CToWUd"></td>
5002
  </tr>
5003
  </tbody>
5004
  </table>
5005
  <table cellpadding="24" style="background:#fff;border:1px solid #a8adad;width:584px;border-top:none;color:#4d4b48;font-family:Arial,Helvetica,sans-serif;font-size:13px;line-height:18px">
5006
  <tbody>
5007
- <td>
5008
  <td>
5009
  <p style="margin-top:0;margin-bottom:20px">Dear Customer,</p>
5010
  <p style="margin-top:0;margin-bottom:20px"> You are going to exhaust all your '.$string.'. You have only <b>'.$count.'</b> '.$string.' remaining. You can recharge or add '.$string.' to your account: <a href='.MoWpnsConstants::rechargeLink.'>Recharge</a></p>
469
  private function settings_error_page( $id = 'mo2f-setup-vue-site-settings', $footer = '' ) {
470
 
471
  $contact_url = 'https://wordpress.org/plugins/miniorange-2-factor-authentication/';
 
 
 
 
 
 
 
 
 
 
 
 
 
472
  ?>
473
  <style type="text/css">
474
  #mo2f-setup-wizard-settings-area {
502
  padding: 0 10px;
503
  }
504
 
 
505
  #mo2f-setup-wizard-settings-area .mo2f-setup-logo img {
506
  width: 100%;
507
  height: 100%;
519
  box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.05);
520
  padding: 20px 30px;
521
  }
522
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
523
  #mo2f-setup-wizard-settings-area .mo2f-setup-error-footer {
524
  text-align: center;
525
  margin-top: 20px;
549
  #mo2f-setup-error-js ul.info {
550
  margin: -10px 0 20px;
551
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
552
 
553
  #mo2f-setup-error-js a.button {
554
  display: inline-block;
582
  font-weight: 300;
583
  text-align: left;
584
  }
585
+
 
 
 
 
 
 
586
  @media (min-width: 782px) {
587
  #mo2f-setup-wizard-settings-area .mo2f-setup-logo {
588
  margin-top: 50px;
594
  margin-top: 40px;
595
  padding: 52px 67px 49px;
596
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
597
 
598
  #mo2f-setup-wizard-settings-area .mo2f-setup-error-footer {
599
  margin-top: 50px;
612
  font-size: 18px;
613
  padding: 19px 39px;
614
  }
 
 
 
615
  .mo2f-setup-button.mo2f-setup-button-main:hover {
616
  background-color: #c45e1b;
617
  }
620
  color: #fff;
621
  font-weight: 500;
622
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
623
  }
624
  </style>
625
  <!--[if IE]>
630
  </style>
631
 
632
  <![endif]-->
633
+ <div id="mo2f-setup-wizard-settings-area" class="mo2f-setup-wizard-settings-area wpms-container">
 
 
634
  <header class="mo2f-setup-wizard-header">
635
  <h1 >
636
  <div>
643
  <div id="mo2f-setup-settings-error-loading-area">
644
  <div>
645
  <div id="mo2f-setup-error-js">
646
+ <h3 style="text-align:center;"> Welcome to the 2FA Setup Wizard! </h3>
647
+ <br>
648
  <p class="subtitle" style="text-align:center;" > This setup guide will take you through all the steps you need to follow to enable the two-factor authentication for your website.</p>
649
 
650
  <br><br>
651
  <button type="button" style="text-align:center;display: flex;margin: auto;" class="mo2f-setup-button mo2f-setup-button-main mo2f-setup-button-large" id ='mo2f_get_started' target="_blank" class="button" rel="noopener noreferrer"> <?php esc_html_e("Let's Get Started", 'mo2f-setup'); ?></button>
652
 
653
+ <br><br><br>
654
  <div style="text-align:center;display: flex;margin: auto;flex-direction: column;">
655
  <a href="<?php echo esc_url( $contact_url ); ?>" target="_blank" rel="noopener noreferrer">
656
  <?php esc_html_e( 'Facing issues? Contact Us', 'mo2f-setup' ); ?>
664
  </div>
665
  </div>
666
  <div id = "mo2f_methods_setup_wizard">
667
+ <div id="mo2f-setup-settings-error-loading-area" style="width: 900px">
668
+
669
+ <h3 style="text-align:center;"> Select the Authentication method you want to configure </h3>
670
+ <br>
671
+ <label title="<?php echo __('You have to enter 6 digits code generated by Authenticator App to login. Supported in Smartphones only.', 'miniorange-2-factor-authentication'); ?>">
672
+ <input type="radio" name="mo2f_selected_2factor_method" value="Google Authenticator" />
673
+ <?php echo __('Google / Authy / Microsoft Authenticator (Any TOTP Based Authenticatior App)', 'miniorange-2-factor-authentication'); ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
674
  </label>
675
+ <br><br>
676
+
677
  <label title="<?php echo __('You will receive a one time passcode via SMS on your phone. You have to enter the otp on your screen to login. Supported in Smartphones, Feature Phones.', 'miniorange-2-factor-authentication'); ?>">
678
+ <input type="radio" name="mo2f_selected_2factor_method" value="OTP Over SMS" />
 
679
  <?php echo __('OTP Over SMS (Registration required)', 'miniorange-2-factor-authentication'); ?>
 
 
 
 
 
 
 
 
 
 
 
680
  </label>
681
+ <br><br>
682
 
683
+ <label title="<?php echo __('You will receive a one time passcode on your email. You have to enter the otp on your screen to login. Supported in Smartphones, Feature Phones.', 'miniorange-2-factor-authentication'); ?>" >
684
+ <input type="radio" name="mo2f_selected_2factor_method" value="OTP Over Email" />
685
+ <?php echo __('OTP Over Email', 'miniorange-2-factor-authentication'); ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
686
  </label>
687
+ <br><br>
688
+
689
  <label title="<?php echo __('You have to enter 6 digits code generated by Authy 2-Factor Authentication App to login. Supported in Smartphones only.', 'miniorange-2-factor-authentication'); ?>">
690
+ <input type="radio" name="mo2f_selected_2factor_method" value="Google Authenticator" />
 
691
  <?php echo __('Authy 2-Factor Authentication', 'miniorange-2-factor-authentication'); ?>
 
692
  </label>
693
+ <br><br>
694
+
 
695
  <label title="<?php echo __('You will receive a push notification on your phone. You have to ACCEPT or DENY it to login. Supported in Smartphones only.', 'miniorange-2-factor-authentication'); ?>">
696
+ <input type="radio" name="mo2f_selected_2factor_method" value="Duo Authenticator" />
 
697
  <?php echo __('Duo Push Notification', 'miniorange-2-factor-authentication'); ?>
 
698
  </label>
699
+ <br><br>
700
+
701
+ <label title="<?php echo __('You have to answers some knowledge based security questions which are only known to you to authenticate yourself. Supported in Desktops,Laptops,Smartphones.', 'miniorange-2-factor-authentication'); ?>" >
702
+ <input type="radio" name="mo2f_selected_2factor_method" value="Security Questions" />
703
+ <?php echo __('Security Questions ( KBA )', 'miniorange-2-factor-authentication'); ?>
704
+ </label>
705
+ <br><br>
706
+
707
  <label title="<?php echo __('You will get an OTP on your TELEGRAM app from miniOrange Bot.', 'miniorange-2-factor-authentication'); ?>" >
708
+ <input type="radio" name="mo2f_selected_2factor_method" value="OTP Over Telegram" />
 
709
  <?php echo __('OTP Over Telegram', 'miniorange-2-factor-authentication'); ?>
 
710
  </label>
711
+ <br><br>
712
+
 
713
 
714
+ <br><a href="#skiptwofactor" style="color:#F4D03F ;font-weight:bold;margin-left:35%;"><?php echo __('Skip Setup', 'miniorange-2-factor-authentication'); ?></a>>>
715
  <br />
716
 
717
 
718
+ </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
719
  </div>
720
  </div>
721
 
722
 
723
 
724
  <script type="text/javascript">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
725
  jQuery('#mo2f_methods_setup_wizard').css('display', 'none');
726
  jQuery("#mo2f_get_started").click(function(e){
727
  jQuery('#mo2f-setup-settings-error-loading-area-container').css('display', 'none');
729
 
730
  });
731
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
732
  jQuery('input:radio[name=mo2f_selected_2factor_method]').click(function() {
 
 
733
  localStorage.setItem("last_tab", 'setup_2fa');
734
  var selectedMethod = jQuery(this).val();
735
  var ajax_url = "<?php echo admin_url('admin-ajax.php'); ?>";
736
  var nonce = "<?php echo wp_create_nonce( 'miniorange-select-method-setup-wizard' ); ?>";
737
 
738
+ var data= { 'action':'mo_two_factor_ajax',
739
+ 'mo_2f_two_factor_ajax' : 'select_method_setup_wizard',
740
+ 'mo2f_method': selectedMethod,
741
+ 'nonce': nonce };
742
+
743
+ jQuery.post(ajax_url, data, function(response){
744
+ window.location.href = '<?php echo (admin_url()."admin.php?page=mo_2fa_two_fa"); ?>';
745
+ });
746
+
 
 
 
747
  });
748
 
749
  jQuery('a[href="#skiptwofactor"]').click(function(e){
807
 
808
  do_action( 'mo2f_admin_setup_wizard_load_setup_wizard_before', $this );
809
  wp_enqueue_script('jquery');
810
+ wp_enqueue_script('wp-mo2f-setup-wizard',plugins_url( 'includes/js/setup-wizard-2fa.js', dirname(dirname(__FILE__))),);
811
 
812
  wp_localize_script(
813
  'wp-mo2f-setup-wizard',
3148
  } else {
3149
  update_option( 'mo2f_enable_2fa', isset( $_POST['mo2f_enable_2fa'] ) ? $_POST['mo2f_enable_2fa'] : 0 );
3150
  }
3151
+ // }else if( isset( $_POST['option'] ) && $_POST['option'] == 'mo2f_enable_2FA_on_login_page_option' ) {
3152
+ // $nonce = $_POST['mo2f_enable_2FA_on_login_page_option_nonce'];
3153
+
3154
+ // if ( ! wp_verify_nonce( $nonce, 'mo2f-enable-2FA-on-login-page-option-nonce' ) ) {
3155
+ // $error = new WP_Error();
3156
+ // $error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
3157
+
3158
+ // return $error;
3159
+ // } else {
3160
+ // if(!class_exists("UM_functions"))
3161
+ // update_site_option('mo2f_enable_2fa_prompt_on_login_page', isset( $_POST['mo2f_enable_2fa_prompt_on_login_page'] ) ? $_POST['mo2f_enable_2fa_prompt_on_login_page'] : 0 );
3162
+ // }
3163
  }else if ( isset( $_POST['option'] ) && $_POST['option'] == 'mo_2factor_test_authentication_method' ) {
3164
  //network security feature
3165
  $nonce = $_POST['mo_2factor_test_authentication_method_nonce'];
3429
  $error->add('empty_username', '<strong>'. __('ERROR','miniorange-2-factor-authentication') .'</strong>: '. __('Invalid Request.', 'miniorange-2-factor-authentication'));
3430
  return $error;
3431
  }else {
3432
+ MO2f_Utility::mo2f_mail_and_download_codes();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3433
  }
3434
  }
3435
 
3471
  <!-- Modal content -->
3472
  <div class="modal-content">
3473
  <div class="modal-header">
3474
+ <h3 class="modal-title" style="text-align: center; font-size: 20px; color: #20b2aa">Email Address for miniOrange</h3><span id="closeEnterEmailCloud" class="modal-span-close">X</span>
3475
  </div>
3476
  <div class="modal-body" style="height: auto">
3477
  <h2><i>Enter your Email:&nbsp;&nbsp;&nbsp; <input type ='email' id='emailEnteredCloud' name='emailEnteredCloud' size= '40' required value="<?php echo $email;?>"/></i></h2>
3863
  $url = get_site_option('siteurl').'/wp-login.php?'; //login page can change
3864
  $message = '<table cellpadding="25" style="margin:0px auto">
3865
  <tbody>
3866
+ <tr>
3867
  <td>
3868
  <table cellpadding="24" width="584px" style="margin:0 auto;max-width:584px;background-color:#f6f4f4;border:1px solid #a8adad">
3869
  <tbody>
3870
+ <tr>
3871
  <td><img src="https://ci5.googleusercontent.com/proxy/10EQeM1udyBOkfD2dwxGhIaMXV4lOwCRtUecpsDkZISL0JIkOL2JhaYhVp54q6Sk656rW2rpAFJFEgGQiAOVcYIIKxXYMHHMNSNB=s0-d-e1-ft#https://login.xecurify.com/moas/images/xecurify-logo.png" style="color:#5fb336;text-decoration:none;display:block;width:auto;height:auto;max-height:35px" class="CToWUd"></td>
3872
  </tr>
3873
  </tbody>
3874
  </table>
3875
  <table cellpadding="24" style="background:#fff;border:1px solid #a8adad;width:584px;border-top:none;color:#4d4b48;font-family:Arial,Helvetica,sans-serif;font-size:13px;line-height:18px">
3876
  <tbody>
3877
+ <tr>
3878
  <td>
3879
  <p style="margin-top:0;margin-bottom:20px">Dear Customers,</p>
3880
  <p style="margin-top:0;margin-bottom:10px">You initiated a transaction <b>WordPress 2 Factor Authentication Plugin</b>:</p>
3955
  $headers[] = 'Cc: 2fasupport <2fasupport@xecurify.com>';
3956
  $message = '<table cellpadding="25" style="margin:0px auto">
3957
  <tbody>
3958
+ <tr>
3959
  <td>
3960
  <table cellpadding="24" width="584px" style="margin:0 auto;max-width:584px;background-color:#f6f4f4;border:1px solid #a8adad">
3961
  <tbody>
3962
+ <tr>
3963
  <td><img src="https://ci5.googleusercontent.com/proxy/10EQeM1udyBOkfD2dwxGhIaMXV4lOwCRtUecpsDkZISL0JIkOL2JhaYhVp54q6Sk656rW2rpAFJFEgGQiAOVcYIIKxXYMHHMNSNB=s0-d-e1-ft#https://login.xecurify.com/moas/images/xecurify-logo.png" style="color:#5fb336;text-decoration:none;display:block;width:auto;height:auto;max-height:35px" class="CToWUd"></td>
3964
  </tr>
3965
  </tbody>
3966
  </table>
3967
  <table cellpadding="24" style="background:#fff;border:1px solid #a8adad;width:584px;border-top:none;color:#4d4b48;font-family:Arial,Helvetica,sans-serif;font-size:13px;line-height:18px">
3968
  <tbody>
3969
+ <tr>
3970
  <td>
3971
  <p style="margin-top:0;margin-bottom:20px">Dear Customer,</p>
3972
  <p style="margin-top:0;margin-bottom:20px"> You are going to exhaust all your '.$string.'. You have only <b>'.$count.'</b> '.$string.' remaining. You can recharge or add '.$string.' to your account: <a href='.MoWpnsConstants::rechargeLink.'>Recharge</a></p>
handler/twofa/two_fa_utility.php CHANGED
@@ -248,6 +248,7 @@ class MO2f_Utility {
248
 
249
  if(isset($_SESSION[$session_id])){
250
  $transient_array = $_SESSION[$session_id];
 
251
  $transient_value = isset($transient_array[$key]) ? $transient_array[$key] : null;
252
  return $transient_value;
253
  }else if(isset($_COOKIE[base64_decode($session_id)])){
@@ -272,9 +273,9 @@ class MO2f_Utility {
272
  public static function mo2f_start_session() {
273
  if ( ! session_id() || session_id() == '' || ! isset( $_SESSION ) ) {
274
  $session_path = ini_get('session.save_path');
275
- if( is_writable($session_path) && is_readable($session_path) && !headers_sent() ) {
276
  if(session_status() != PHP_SESSION_DISABLED )
277
- session_start();
278
  }
279
  }
280
  }
@@ -397,12 +398,7 @@ class MO2f_Utility {
397
  $decrypted_data_array = explode( '&', $decrypted_data );
398
 
399
  $cookie_value = $decrypted_data_array[0];
400
- if(sizeof($decrypted_data_array) == 2 ){
401
- $cookie_creation_time = new DateTime( $decrypted_data_array[1] );
402
- }else{
403
- $cookie_creation_time = new DateTime( array_pop($decrypted_data_array) );
404
- $cookie_value = implode('&', $decrypted_data_array);
405
- }
406
  $current_time = new DateTime( 'now' );
407
 
408
  $interval = $cookie_creation_time->diff( $current_time );
@@ -551,8 +547,7 @@ class MO2f_Utility {
551
  "SecurityQuestions" => "Security Questions",
552
  "EmailVerification" => "Email Verification",
553
  "OTPOverSMS" => "OTP Over SMS",
554
- "OTPOverEmail" => "OTP Over Email",
555
- "DuoAuthenticator" => "Duo Authenticator"
556
  );
557
 
558
  $server_2fa_methods = array(
@@ -565,12 +560,7 @@ class MO2f_Utility {
565
  "Email Verification" => "OUT OF BAND EMAIL",
566
  "OTP Over SMS" => "SMS",
567
  "EMAIL" => "OTP Over Email",
568
- "OTPOverEmail" => "OTP Over Email",
569
- "Duo Authenticator" => "Duo Authenticator",
570
- "DUO AUTHENTICATOR" => "Duo Authenticator",
571
- "OTP Over Email" => "EMAIL",
572
- "OTP OVER EMAIL" => "EMAIL"
573
-
574
  );
575
 
576
  $server_to_wpdb_2fa_methods = array(
@@ -600,11 +590,6 @@ class MO2f_Utility {
600
  return $methodname;
601
 
602
  }
603
- public static function is_same_method($method,$current_method){
604
- if($method == $current_method || $method == MO2f_Utility::mo2f_decode_2_factor($current_method,'wpdb') || $method == MO2f_Utility::mo2f_decode_2_factor($current_method,'') || MO2f_Utility::mo2f_decode_2_factor($current_method,'server') == $method)
605
- return true;
606
- return false;
607
- }
608
 
609
  public static function get_plugin_name_by_identifier( $plugin_identitifier ){
610
  $all_plugins = get_plugins();
@@ -651,12 +636,8 @@ class MO2f_Utility {
651
  <p style="margin-top:0;margin-bottom:10px">You initiated a transaction from <b>WordPress 2 Factor Authentication Plugin</b>:</p>
652
  <p style="margin-top:0;margin-bottom:10px">Your backup codes are:-
653
  <table cellspacing="10">
654
- <tr>';
655
- for ($x = 0; $x < sizeof($codes); $x++) {
656
- $message = $message.'<td>'.$codes[$x].'</td>';
657
-
658
- }
659
- $message = $message.'</table></p>
660
  <p style="margin-top:0;margin-bottom:10px">Please use this carefully as each code can only be used once. Please do not share these codes with anyone.</p>
661
  <p style="margin-top:0;margin-bottom:10px">Also, we would highly recommend you to reconfigure your two-factor after logging in.</p>
662
  <p style="margin-top:0;margin-bottom:15px">Thank you,<br>miniOrange Team</p>
@@ -703,9 +684,18 @@ class MO2f_Utility {
703
  return $message;
704
  }
705
 
 
 
 
 
 
 
 
 
 
706
  public static function mo2f_get_codes_hash($codes){
707
  $codes_hash=array();
708
- for ($x = 0; $x < sizeof($codes); $x++) {
709
  $str = $codes[$x];
710
  array_push($codes_hash,md5($str));
711
  }
@@ -724,8 +714,8 @@ class MO2f_Utility {
724
  update_user_meta($id, 'mo_backup_code_downloaded', 1);
725
  header('Content-Disposition: attachment; filename=miniOrange2-factor-BackupCodes.txt');
726
  echo "Two Factor Backup Codes:".PHP_EOL.PHP_EOL;
727
- echo "These are the codes that can be used in case you lose your phone or cannot access your email. Please reconfigure your authentication method after login.".PHP_EOL."Please use this carefully as each code can only be used once. Please do not share these codes with anyone..".PHP_EOL.PHP_EOL;
728
- for ($x = 0; $x < sizeof($codes); $x++){
729
  $str1= $codes[$x];
730
  echo(($x+1).". ".$str1." ");
731
  }
@@ -747,25 +737,19 @@ class MO2f_Utility {
747
 
748
 
749
  public static function mo2f_mail_and_download_codes(){
750
- global $Mo2fdbQueries;
751
-
 
752
  $id = get_current_user_id();
753
  $mo2f_user_email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $id );
754
  if(empty($mo2f_user_email)){
755
  $currentuser = get_user_by( 'id', $id );
756
  $mo2f_user_email = $currentuser->user_email;
757
  }
758
- $generate_backup_code = new Customer_Cloud_Setup();
759
- $codes=$generate_backup_code->mo_2f_generate_backup_codes($mo2f_user_email, site_url());
760
-
761
- if($codes == 'LimitReached'|| $codes == 'UserLimitReached' || $codes == 'AllUsed' || $codes == 'invalid_request')
762
- return $codes;
763
-
764
- $codes = explode(' ', $codes);
765
- $codes_hash=MO2f_Utility::mo2f_get_codes_hash($codes);
766
  $result = MO2f_Utility::mo2f_email_backup_codes($codes, $mo2f_user_email);
767
  update_user_meta($id, 'mo_backup_code_generated', 1);
768
  update_user_meta($id, 'mo_backup_code_downloaded', 1);
 
769
  MO2f_Utility::mo2f_download_backup_codes($id, $codes);
770
  }
771
 
248
 
249
  if(isset($_SESSION[$session_id])){
250
  $transient_array = $_SESSION[$session_id];
251
+
252
  $transient_value = isset($transient_array[$key]) ? $transient_array[$key] : null;
253
  return $transient_value;
254
  }else if(isset($_COOKIE[base64_decode($session_id)])){
273
  public static function mo2f_start_session() {
274
  if ( ! session_id() || session_id() == '' || ! isset( $_SESSION ) ) {
275
  $session_path = ini_get('session.save_path');
276
+ if( is_writable($session_path) && is_readable($session_path) ) {
277
  if(session_status() != PHP_SESSION_DISABLED )
278
+ session_start();
279
  }
280
  }
281
  }
398
  $decrypted_data_array = explode( '&', $decrypted_data );
399
 
400
  $cookie_value = $decrypted_data_array[0];
401
+ $cookie_creation_time = new DateTime( $decrypted_data_array[1] );
 
 
 
 
 
402
  $current_time = new DateTime( 'now' );
403
 
404
  $interval = $cookie_creation_time->diff( $current_time );
547
  "SecurityQuestions" => "Security Questions",
548
  "EmailVerification" => "Email Verification",
549
  "OTPOverSMS" => "OTP Over SMS",
550
+ "OTPOverEmail" => "OTP Over Email"
 
551
  );
552
 
553
  $server_2fa_methods = array(
560
  "Email Verification" => "OUT OF BAND EMAIL",
561
  "OTP Over SMS" => "SMS",
562
  "EMAIL" => "OTP Over Email",
563
+ "OTPOverEmail" => "OTP Over Email"
 
 
 
 
 
564
  );
565
 
566
  $server_to_wpdb_2fa_methods = array(
590
  return $methodname;
591
 
592
  }
 
 
 
 
 
593
 
594
  public static function get_plugin_name_by_identifier( $plugin_identitifier ){
595
  $all_plugins = get_plugins();
636
  <p style="margin-top:0;margin-bottom:10px">You initiated a transaction from <b>WordPress 2 Factor Authentication Plugin</b>:</p>
637
  <p style="margin-top:0;margin-bottom:10px">Your backup codes are:-
638
  <table cellspacing="10">
639
+ <tr><td>'.$codes[0].'</td><td>'.$codes[1].'</td><td>'.$codes[2].'</td><td>'.$codes[3].'</td><td>'.$codes[4].'</td>
640
+ </table></p>
 
 
 
 
641
  <p style="margin-top:0;margin-bottom:10px">Please use this carefully as each code can only be used once. Please do not share these codes with anyone.</p>
642
  <p style="margin-top:0;margin-bottom:10px">Also, we would highly recommend you to reconfigure your two-factor after logging in.</p>
643
  <p style="margin-top:0;margin-bottom:15px">Thank you,<br>miniOrange Team</p>
684
  return $message;
685
  }
686
 
687
+ public static function mo_2f_generate_backup_codes(){
688
+ $codes=array();
689
+ for ($x = 0; $x < 5; $x++) {
690
+ $str = MO2f_Utility::random_str(10);
691
+ array_push($codes,$str);
692
+ }
693
+ return $codes;
694
+ }
695
+
696
  public static function mo2f_get_codes_hash($codes){
697
  $codes_hash=array();
698
+ for ($x = 0; $x < 5; $x++) {
699
  $str = $codes[$x];
700
  array_push($codes_hash,md5($str));
701
  }
714
  update_user_meta($id, 'mo_backup_code_downloaded', 1);
715
  header('Content-Disposition: attachment; filename=miniOrange2-factor-BackupCodes.txt');
716
  echo "Two Factor Backup Codes:".PHP_EOL.PHP_EOL;
717
+ echo "These are the codes which can be used incase you lose your phone or cannot access your email. Please reconfigure you authentication method after login.".PHP_EOL."Please use this carefully as each code can only be used once. Please do not share these codes with anyone.".PHP_EOL.PHP_EOL;
718
+ for ($x = 0; $x < 5; $x++){
719
  $str1= $codes[$x];
720
  echo(($x+1).". ".$str1." ");
721
  }
737
 
738
 
739
  public static function mo2f_mail_and_download_codes(){
740
+ global $Mo2fdbQueries;
741
+ $codes=MO2f_Utility::mo_2f_generate_backup_codes();
742
+ $codes_hash=MO2f_Utility::mo2f_get_codes_hash($codes);
743
  $id = get_current_user_id();
744
  $mo2f_user_email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $id );
745
  if(empty($mo2f_user_email)){
746
  $currentuser = get_user_by( 'id', $id );
747
  $mo2f_user_email = $currentuser->user_email;
748
  }
 
 
 
 
 
 
 
 
749
  $result = MO2f_Utility::mo2f_email_backup_codes($codes, $mo2f_user_email);
750
  update_user_meta($id, 'mo_backup_code_generated', 1);
751
  update_user_meta($id, 'mo_backup_code_downloaded', 1);
752
+ update_user_meta($id,'mo2f_backup_codes', $codes_hash);
753
  MO2f_Utility::mo2f_download_backup_codes($id, $codes);
754
  }
755
 
handler/user-profile-2fa-update.php DELETED
@@ -1,213 +0,0 @@
1
- <?php
2
- if(isset($_POST['method']))
3
- $method = sanitize_text_field($_POST['method']);
4
- else
5
- return;
6
- global $Mo2fdbQueries;
7
- $email = $Mo2fdbQueries->get_user_detail('mo2f_user_email',$user);
8
- $method = MO2f_Utility::mo2f_decode_2_factor($method,'wpdb');
9
- $email = ($email=='')?filter_var($_POST['email'], FILTER_SANITIZE_EMAIL):$email;
10
- $enduser = new Two_Factor_Setup();
11
- if(isset($_POST['verify_phone']))
12
- $phone = strlen($_POST['verify_phone']>4)?sanitize_text_field($_POST['verify_phone']):null;
13
- else
14
- $phone = null;
15
- $response = json_decode( $enduser->mo2f_update_userinfo( $email,MO2f_Utility::mo2f_decode_2_factor($method,'server') , $phone, null, null ), true );
16
- if($response['status']!= 'SUCCESS')
17
- return;
18
- $id = get_current_user_id();
19
- $method = MO2f_Utility::mo2f_decode_2_factor($method,'wpdb');
20
- switch ($method) {
21
- case "miniOrange QR Code Authentication":
22
- case "miniOrange Push Notification":
23
- case "miniOrange Soft Token":
24
- if($id != $user){
25
- send_reconfiguration_on_email($email,$user,$method);
26
- }else if($_POST['mo2f_configuration_status']!='SUCCESS')
27
- return;
28
- delete_user_meta( $user, 'configure_2FA' );
29
- update_user_meta($user,'mo2f_2FA_method_to_configure',$method);
30
- $Mo2fdbQueries->update_user_details($user, array(
31
- 'mobile_registration_status' =>true,
32
- 'mo2f_miniOrangeQRCodeAuthentication_config_status' => true,
33
- 'mo2f_miniOrangeSoftToken_config_status' => true,
34
- 'mo2f_miniOrangePushNotification_config_status' => true,
35
- "mo2f_configured_2FA_method" => $method,
36
- 'user_registration_with_miniorange' => 'SUCCESS',
37
- 'mo2f_2factor_enable_2fa_byusers'=> '1',
38
- 'mo_2factor_user_registration_status' =>'MO_2_FACTOR_PLUGIN_SETTINGS',
39
- ) );
40
- break;
41
- case "Google Authenticator":
42
- if($id!= $user){
43
- send_reconfiguration_on_email($email,$user,$method);
44
- }else if($_POST['mo2f_configuration_status']!='SUCCESS')
45
- return;
46
- $Mo2fdbQueries->update_user_details( $user, array(
47
- 'mo2f_GoogleAuthenticator_config_status' => true,
48
- 'mo2f_configured_2FA_method' => 'Google Authenticator',
49
- 'mo2f_AuthyAuthenticator_config_status' => false,
50
- 'user_registration_with_miniorange' => 'SUCCESS',
51
- 'mo_2factor_user_registration_status' => 'MO_2_FACTOR_PLUGIN_SETTINGS',
52
- 'mo2f_2factor_enable_2fa_byusers' => 1,
53
- 'mo2f_user_email' => $email
54
- ) );
55
- if(!MO2F_IS_ONPREM){
56
- update_user_meta( $user ,'mo2f_external_app_type', "Google Authenticator" );
57
- }
58
- break;
59
- case "Authy Authenticator":
60
- if($id!= $user){
61
- send_reconfiguration_on_email($email,$user,$method);
62
- }else if($_POST['mo2f_configuration_status']!='SUCCESS')
63
- return;
64
- $Mo2fdbQueries->update_user_details( $user, array(
65
- 'mo2f_GoogleAuthenticator_config_status' => false,
66
- 'mo2f_configured_2FA_method' => 'Authy Authenticator',
67
- 'mo2f_AuthyAuthenticator_config_status' => true,
68
- 'user_registration_with_miniorange' => 'SUCCESS',
69
- 'mo_2factor_user_registration_status' => 'MO_2_FACTOR_PLUGIN_SETTINGS',
70
- 'mo2f_2factor_enable_2fa_byusers' => 1,
71
- 'mo2f_user_email' => $email
72
- ) );
73
- if(!MO2F_IS_ONPREM){
74
- update_user_meta( $user ,'mo2f_external_app_type', "Authy Authenticator" );
75
- }
76
- break;
77
- case "OTP Over SMS":
78
- $Mo2fdbQueries->update_user_details($user, array(
79
- "mo2f_configured_2FA_method" => 'OTP Over SMS',
80
- 'mo2f_OTPOverSMS_config_status' => true,
81
- 'user_registration_with_miniorange' => 'SUCCESS',
82
- 'mo2f_2factor_enable_2fa_byusers'=> '1',
83
- 'mo_2factor_user_registration_status' =>'MO_2_FACTOR_PLUGIN_SETTINGS',
84
- ) );
85
- break;
86
- case "Security Questions":
87
- $obj = new Miniorange_Authentication();
88
- $kba_q1 = sanitize_text_field($_POST['mo2f_kbaquestion_1']);
89
- $kba_a1 = sanitize_text_field( $_POST['mo2f_kba_ans1'] );
90
- $kba_q2 = sanitize_text_field($_POST['mo2f_kbaquestion_2']);
91
- $kba_a2 = sanitize_text_field( $_POST['mo2f_kba_ans2'] );
92
- $kba_q3 = sanitize_text_field( $_POST['mo2f_kbaquestion_3'] );
93
- $kba_a3 = sanitize_text_field( $_POST['mo2f_kba_ans3'] );
94
-
95
- $kba_q1 = addcslashes( stripslashes( $kba_q1 ), '"\\' );
96
- $kba_q2 = addcslashes( stripslashes( $kba_q2 ), '"\\' );
97
- $kba_q3 = addcslashes( stripslashes( $kba_q3 ), '"\\' );
98
-
99
- $kba_a1 = addcslashes( stripslashes( $kba_a1 ), '"\\' );
100
- $kba_a2 = addcslashes( stripslashes( $kba_a2 ), '"\\' );
101
- $kba_a3 = addcslashes( stripslashes( $kba_a3 ), '"\\' );
102
- if ( MO2f_Utility::mo2f_check_empty_or_null( $kba_q1 ) || MO2f_Utility::mo2f_check_empty_or_null( $kba_a1 ) || MO2f_Utility::mo2f_check_empty_or_null( $kba_q2 ) || MO2f_Utility::mo2f_check_empty_or_null( $kba_a2) || MO2f_Utility::mo2f_check_empty_or_null( $kba_q3) || MO2f_Utility::mo2f_check_empty_or_null( $kba_a3) ) {
103
- update_option( 'mo2f_message', Mo2fConstants:: langTranslate( "INVALID_ENTRY" ) );
104
- return;
105
- }
106
-
107
- if ( strcasecmp( $kba_q1, $kba_q2 ) == 0 || strcasecmp( $kba_q2, $kba_q3 ) == 0 || strcasecmp( $kba_q3, $kba_q1 ) == 0 ) {
108
- update_option( 'mo2f_message', 'The questions you select must be unique.' );
109
- return;
110
- }
111
- $kba_registration = new Two_Factor_Setup();
112
- $kba_reg_reponse = json_decode( $kba_registration->register_kba_details( $email, $kba_q1, $kba_a1, $kba_q2, $kba_a2, $kba_q3, $kba_a3, $user ), true );
113
-
114
- if ( json_last_error() == JSON_ERROR_NONE ) {
115
- if ( $response['status'] == 'SUCCESS' ) {
116
- $Mo2fdbQueries->update_user_details( $user, array(
117
- 'mo2f_configured_2FA_method' => 'Security Questions' ,
118
- 'user_registration_with_miniorange' => 'SUCCESS',
119
- 'mo2f_SecurityQuestions_config_status' => true,
120
- 'mo2f_2factor_enable_2fa_byusers'=> '1',
121
- 'mo_2factor_user_registration_status' =>'MO_2_FACTOR_PLUGIN_SETTINGS',
122
- ), true);
123
-
124
- }else {
125
- update_option( 'mo2f_message', Mo2fConstants:: langTranslate( "ERROR_DURING_PROCESS" ) );
126
- $obj->mo_auth_show_error_message();
127
-
128
- }
129
- }
130
-
131
- break;
132
- case "OTP Over Email":
133
- $Mo2fdbQueries->update_user_details($user, array(
134
- "mo2f_configured_2FA_method" => 'OTP Over Email',
135
- 'mo2f_OTPOverEmail_config_status' => true,
136
- 'mo2f_user_email' => $email,
137
- 'mo2f_2factor_enable_2fa_byusers'=> '1',
138
- 'mo_2factor_user_registration_status' =>'MO_2_FACTOR_PLUGIN_SETTINGS',
139
- 'user_registration_with_miniorange' => 'SUCCESS',
140
- ) );
141
- delete_user_meta( $user, 'configure_2FA');
142
- delete_user_meta( $user, 'test_2FA');
143
- break;
144
- case "Email Verification":
145
- $Mo2fdbQueries->update_user_details($user, array(
146
- "mo2f_configured_2FA_method" => 'Email Verification',
147
- 'mo2f_user_email' => $email,
148
- 'user_registration_with_miniorange' => 'SUCCESS',
149
- 'mo2f_2factor_enable_2fa_byusers'=> '1',
150
- 'mo_2factor_user_registration_status' =>'MO_2_FACTOR_PLUGIN_SETTINGS',
151
- 'mo2f_EmailVerification_config_status' => true
152
- ) );
153
- break;
154
- }
155
- if(isset($_POST['mo2fa_count']) && sanitize_text_field($_POST['mo2fa_count']) != '1')
156
- update_option('mo2fa_userProfile_method',$method);
157
- function send_reconfiguration_on_email($email,$user,$method){
158
- global $mo2f_dirName;
159
- $method = MO2f_Utility::mo2f_decode_2_factor($method,'server');
160
- $reconfiguraion_method = hash('sha512',$method);
161
- update_site_option($reconfiguraion_method,$method);
162
- $txid = bin2hex(openssl_random_pseudo_bytes(32));
163
- update_site_option($txid, get_current_user_id());
164
- update_user_meta($user,'mo2f_EV_txid',$txid);
165
- $subject = '2fa-reconfiguration : Scan QR';
166
- $headers = array('Content-Type: text/html; charset=UTF-8');
167
- update_option('mo2fa_reconfiguration_via_email',json_encode(array($user,$email,$method)));
168
- $path = plugins_url(DIRECTORY_SEPARATOR. 'views'.DIRECTORY_SEPARATOR. 'qr_over_email.php',dirname( __FILE__ )).'?email='.$email.'&amp;user_id='.$user_id;
169
- $url = get_site_option('siteurl').'/wp-login.php?';
170
- $path = $url.'&amp;reconfigureMethod='.$reconfiguraion_method.'&amp;transactionId='.$txid;
171
- $message = '
172
- <table>
173
- <tbody>
174
- <tr>
175
- <td>
176
- <table cellpadding="24" width="584px" style="margin:0 auto;max-width:584px;background-color:#f6f4f4;border:1px solid #a8adad">
177
- <tbody>
178
- <tr>
179
- <td><img src="https://ci5.googleusercontent.com/proxy/10EQeM1udyBOkfD2dwxGhIaMXV4lOwCRtUecpsDkZISL0JIkOL2JhaYhVp54q6Sk656rW2rpAFJFEgGQiAOVcYIIKxXYMHHMNSNB=s0-d-e1-ft#https://login.xecurify.com/moas/images/xecurify-logo.png" style="color:#5fb336;text-decoration:none;display:block;width:auto;height:auto;max-height:35px" class="CToWUd"></td>
180
- </tr>
181
- </tbody>
182
- </table>
183
- <table cellpadding="24" style="background:#fff;border:1px solid #a8adad;width:584px;border-top:none;color:#4d4b48;font-family:Arial,Helvetica,sans-serif;font-size:13px;line-height:18px">
184
- <tbody>
185
- <tr>
186
- <td>
187
- <input type="hidden" name="user_id" id="user_id" value="'.$user_id.'">
188
- <input type="hidden" name="email" id="email" value="'.$email.'">
189
- <p style="margin-top:0;margin-bottom:20px">Dear Customer,</p>
190
- <p style="margin-top:0;margin-bottom:10px">Please scan the QR code from given link to set <b>2FA method</b>:</p>
191
- <p><a href="'.$path.'" > Click to reconfigure 2nd factor</a></p>
192
- <p style="margin-top:0;margin-bottom:15px">Thank you,<br>miniOrange Team</p>
193
- <p style="margin-top:0;margin-bottom:0px;font-size:11px">Disclaimer: This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed.</p>
194
- </div></div></td>
195
- </tr>
196
- </tbody>
197
- </table>
198
- </td>
199
- </tr>
200
- </tbody>
201
- </table>';
202
- $result = wp_mail($email,$subject,$message,$headers);
203
- if($result){
204
- update_site_option( 'mo2f_message', 'A OTP has been sent to you on' .'<b> ' . $email . '</b>. ' . Mo2fConstants::langTranslate("ACCEPT_LINK_TO_VERIFY_EMAIL"));
205
- $arr = array('status' => 'SUCCESS','message'=>'Successfully validated.' ,'txId' => '' );
206
-
207
- }else{
208
- $arr = array('status' => 'FAILED','message'=>'TEST FAILED.');
209
- update_site_option( 'mo2f_message', Mo2fConstants::langTranslate("ERROR_DURING_PROCESS_EMAIL"));
210
- }
211
- $content = json_encode($arr);
212
- }
213
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
handler/user-profile-2fa.php DELETED
@@ -1,276 +0,0 @@
1
- <?php
2
- $is_registered = empty(get_option('mo2f_customerkey'))?false:true;
3
- $role = $user->roles;
4
- $roles = ( array ) $user->roles;
5
- $flag = 0;
6
- foreach ( $roles as $role ) {
7
- if(get_option('mo2fa_'.$role)=='1')
8
- $flag=1;
9
- }
10
- if(!current_user_can( 'administrator', $user->ID) || (!MO2F_IS_ONPREM && !$is_registered) || $flag==0)
11
- return;
12
- else if(!MO2F_IS_ONPREM && !$is_registered)
13
- return;
14
- $cloud_methods = array("miniOrange QR Code Authentication", "miniOrange Soft Token","miniOrange Push Notification","OTP Over SMS");
15
- $id = get_current_user_id();
16
- $available_methods = MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option')?get_site_option('mo2fa_free_plan_new_user_methods'):get_site_option('mo2fa_free_plan_existing_user_methods');
17
- if(!$available_methods)
18
- return;
19
- $transient_id = MO2f_Utility::random_str(20);
20
-
21
- MO2f_Utility::mo2f_set_transient($transient_id, 'mo2f_user_id', $user->ID);
22
- $same_user = $user->ID == $id?true:false;
23
- global $Mo2fdbQueries;
24
- $current_method = $Mo2fdbQueries->get_user_detail('mo2f_configured_2FA_method',$user->ID);
25
- if($current_method == "miniOrange QR Code Authentication" || $current_method == "miniOrange Soft Token" || $current_method == "miniOrange Push Notification")
26
- $current_method = "miniOrange Authenticator";
27
- $twofactor_transactions = new Mo2fDB;
28
- $exceeded = $twofactor_transactions->check_alluser_limit_exceeded($user->ID);
29
- if($exceeded){
30
- return;
31
- }
32
- $user_column_exists = $Mo2fdbQueries->check_if_user_column_exists( $user->ID );
33
- $email=$Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user->ID );
34
- if($email == ''){
35
- $Mo2fdbQueries->update_user_details($user->ID,array('mo2f_user_email'=>$user->user_email));
36
- }
37
- $email = !empty($Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user->ID ))?$Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user->ID ):$user->user_email;
38
- $pass_2fa_login_session = new Miniorange_Password_2Factor_Login();
39
- if(!$user_column_exists){
40
- $Mo2fdbQueries->insert_user( $user->ID );
41
- $content = $pass_2fa_login_session->create_user_in_miniOrange($user->ID,$email,'SOFT TOKEN');
42
- }
43
- $registerMobile = new Two_Factor_Setup();
44
- $content = $registerMobile->register_mobile($email);
45
- update_user_meta($user->ID,'registered_mobile',$content);
46
- $two_factor_methods_descriptions = array(
47
- "miniOrange QR Code Authentication" => "Scan the QR code from the account in your miniOrange Authenticator App to login.",
48
- "miniOrange Authenticator" => "Scan the QR code from the account in your miniOrange Authenticator App to login.",
49
- "miniOrange Soft Token" => "Enter the soft token from the account in your miniOrange Authenticator App to login.",
50
- "miniOrange Push Notification" => "Accept a push notification in your miniOrange Authenticator App to login.",
51
- "Google Authenticator" => "Enter the soft token from the account in your Google Authenticator App to login.",
52
- "Security Questions" => "Answer the three security questions you had set, to login.",
53
- "OTP Over SMS" => "Enter the One Time Passcode sent to your phone to login.",
54
- "Authy Authenticator" => "Enter the soft token from the account in your Authy Authenticator App to login.",
55
- "OTP Over Email" => "Enter the One Time Passcode sent to your email to login.",
56
- "Email Verification" => "Accept the verification link sent to your email to login.",
57
- "OTP Over SMS and Email" => "Enter the One Time Passcode sent to your phone and email to login.",
58
- "Hardware Token" => "Enter the One Time Passcode on your Hardware Token to login."
59
- );
60
- global $mainDir;
61
- wp_enqueue_style( 'mo2f_user-profile_style', $mainDir.'/includes/css/user-profile.css');
62
- ?>
63
- <h3><?php esc_html_e( 'Set 2-Factor Authentication', 'miniorange 2-factor-authentication' ); ?></h3>
64
- <table class="form-table" id="mo2fa_form-table-user-profile">
65
- <tr>
66
- <th style="text-align: left;">
67
- <?php echo mo2f_lt( '2-Factor Options' ); ?>
68
- </th>
69
- <td>
70
- <form name="f" method="post" action="" id="mo2f_update_2fa">
71
- <div class="mo2fa_tab">
72
- <?php foreach ( $two_factor_methods_descriptions as $method => $description ){
73
- if(in_array($method, $available_methods)){
74
- $trimmed_method = str_replace(' ','',$method);?>
75
- <button class="mo2fa_tablinks" type="button"
76
- <?php if((!empty($current_method) && MO2f_Utility::is_same_method($method,$current_method)) || (empty($current_method) && MO2f_Utility::is_same_method($method,'miniOrange Authenticator')) ){?>
77
- id="defaultOpen"
78
- <?php }?>
79
- onclick='mo2fa_viewMethod(event, "<?php echo esc_attr( $trimmed_method );?>")'><?php echo esc_attr( $method );?>
80
- </button>
81
- <?php }}?>
82
- </div>
83
- </form>
84
- <?php foreach ( $two_factor_methods_descriptions as $method => $description ){
85
- if(in_array($method, $available_methods)){
86
- $trimmed_method = str_replace(' ','',$method);?>
87
- <div id="<?php echo esc_attr( $trimmed_method );?>" class="mo2fa_tabcontent">
88
- <p><?php echo esc_attr( $description );?></p>
89
- <p><?php methods_on_user_profile($method,$user,$transient_id);?></p>
90
- </div>
91
- <?php }}?>
92
- </td>
93
- </tr>
94
- </table>
95
- <div id="wpns_nav_message"></div>
96
- <input type="hidden" name="MO2F_IS_ONPREM" value="<?php echo MO2F_IS_ONPREM;?>">
97
- <input type="hidden" name="same_user" value="<?php echo $same_user;?>">
98
- <input type="hidden" name="is_registered" value="<?php echo $is_registered;?>">
99
- <input type="hidden" name="mo2f-update-mobile-nonce" value="<?php echo wp_create_nonce("mo2f-update-mobile-nonce");?>">
100
- <input type="hidden" name="mo2fa_count" id="mo2fa_count" value="1">
101
- <input type="hidden" name="transient_id" value="<?php echo $transient_id;?>">
102
- <input type="hidden" name='method' id="method" value="NONE">
103
- <input type="hidden" name='mo2f_configuration_status' id="mo2f_configuration_status" value="Configuration">
104
- <?php
105
- wp_enqueue_script( 'user-profile-2fa-script', $mainDir.'/includes/js/user-profile-twofa.js');
106
-
107
- function methods_on_user_profile($method,$user,$transient_id){
108
- global $Mo2fdbQueries,$mainDir;
109
- $email=$Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user->ID );
110
- $pass_2fa_login_session = new Miniorange_Password_2Factor_Login();
111
- $trimmed_method = str_replace(' ','',$method);
112
- $is_registered = get_option('mo2f_customerkey');
113
- $id = get_current_user_id();
114
- if($email == ''){
115
- $Mo2fdbQueries->update_user_details($user->ID,array('mo2f_user_email'=>$user->user_email));
116
- }
117
- $email = !empty($Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user->ID ))?$Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user->ID ):$user->user_email;
118
- switch($method){
119
- case "miniOrange Authenticator":
120
- if(!$is_registered){
121
- $message = "Please register with miniOrange for using this method.";
122
- echo mo2f_lt( $message );
123
- }
124
- else{
125
- ?>
126
- <div id="mo2fa_display_mo_methods">
127
- <h4 class="mo2fa_select_method">
128
- Select Authentication method :
129
- </h4>
130
- <input type="button" name="mo2f_method" id="miniOrangeSoftTokenButton" class="mo2f_miniAuthApp" value="Soft Token" />
131
- <input type="button" name="mo2f_method" id="miniOrangeQRCodeAuthenticationButton" class="mo2f_miniAuthApp" value="QR Code Authentication" />
132
- <input type="button" name="mo2f_method" id="miniOrangePushNotificationButton" class="mo2f_miniAuthApp" value="Push Notification" />
133
- </div>
134
- <?php
135
- if($id == $user->ID)
136
- {
137
- $content = get_user_meta($user->ID,'registered_mobile',true);
138
- $response = json_decode($content, true);
139
- $message = '';
140
-
141
- if(json_last_error() == JSON_ERROR_NONE) {
142
- if($response['status'] == 'ERROR'){
143
- $mo_qr_details['message'] = Mo2fConstants::langTranslate($response['message']);
144
- delete_user_meta( $user->ID, 'miniorageqr' );
145
- }else{
146
- if($response['status'] == 'IN_PROGRESS'){
147
-
148
- $mo_qr_details['message'] = '';
149
- $mo_qr_details['mo2f-login-qrCode']=$response['qrCode'];
150
- update_user_meta($user->ID,'miniorageqr',$mo_qr_details);
151
- }else{
152
- $mo_qr_details['message'] = __('An error occured while processing your request. Please Try again.','miniorange-2-factor-authentication');
153
- delete_user_meta( $user->ID, 'miniorageqr' );
154
- }
155
- }
156
- }
157
- ?>
158
-
159
- <div class="mcol-2" id='mo2f_qrcode'>
160
- <table class="mo2f_settings_table">
161
- <br><?php
162
- echo (isset($mo_qr_details['mo2f-login-qrCode'])?'<img style="width:165px;" src="data:image/jpg;base64,' .$mo_qr_details['mo2f-login-qrCode']. '" />':'Please register with miniOrange for using this method') ;
163
- ?>
164
- </table>
165
- <?php
166
- if(isset($mo_qr_details['mo2f-login-qrCode'])){
167
- ?>
168
- <form name="f" method="post" action="" id="<?php echo 'mo2f_verify_form-'.mo2f_lt($trimmed_method); ?>">
169
-
170
- <table id="mo2f_setup_mo_methods">
171
- <td class="bg-none"><?php echo mo2f_lt( 'Enter Code:' )?></td>
172
- <td><input type="tel" class="mo2f_table_textbox" style="margin-left: 1%; margin-right: 1%; width:200px;" name="mo_qr_auth_code" id="<?php echo 'textbox-'.mo2f_lt($trimmed_method); ?>" value="" pattern="[0-9]{4,8}" title="<?php echo mo2f_lt('Enter OTP:'); ?>"/></td>
173
- <td><a id="<?php echo 'save-'.mo2f_lt($trimmed_method); ?>" name="save_qr" class="button button1" ><?php echo mo2f_lt( 'Verify and Save' ); ?></a></td>
174
- </table>
175
-
176
- </form>
177
- <?php } ?>
178
- </div>
179
-
180
- <?php
181
- }
182
- else{
183
- $message= "Link to reconfigure 2nd factor will be sent to ".$email;
184
- echo mo2f_lt( $message );
185
- }
186
- }
187
- break;
188
- case "Authy Authenticator":
189
- case "Google Authenticator":
190
- if($user->ID == $id){
191
- if(MO2F_IS_ONPREM){
192
- include_once dirname( __FILE__ ) . DIRECTORY_SEPARATOR.'twofa'. DIRECTORY_SEPARATOR. 'gaonprem.php';
193
- $gauth_obj= new Google_auth_onpremise();
194
-
195
- $ga_secret = $gauth_obj->createSecret();
196
- $issuer = get_site_option( 'mo2f_GA_account_name', 'miniOrangeAu' );
197
- $url = $gauth_obj->geturl( $ga_secret, $issuer, $email );
198
- $mo2f_google_auth = array('ga_qrCode'=> $url,'ga_secret'=>$ga_secret);
199
- update_user_meta( $user->ID, 'mo2f_google_auth', json_encode( $mo2f_google_auth ) );
200
- $otpcode = $gauth_obj->getCode($ga_secret);
201
- $data = isset($mo2f_google_auth) ? $mo2f_google_auth['ga_qrCode'] : null;
202
- wp_enqueue_script( 'mo_wpns_qrcode_script', $mainDir.'/includes/jquery-qrcode/jquery-qrcode.js' );
203
- wp_enqueue_script( 'mo_wpns_min_qrcode_script', $mainDir.'/includes/jquery-qrcode/jquery-qrcode.min.js');
204
- echo '<div class="mo2f_gauth_column mo2f_gauth_left" >';
205
- echo '<div class="mo2f_gauth" data-qrcode='.$data.'></div>';
206
- echo '</div>';
207
- }else{
208
- if(!get_user_meta($user->ID, 'mo2f_google_auth', true)){
209
- Miniorange_Authentication::mo2f_get_GA_parameters($user);
210
- }
211
- $mo2f_google_auth = get_user_meta($user->ID, 'mo2f_google_auth', true);
212
- $data = isset($mo2f_google_auth['ga_qrCode']) ? $mo2f_google_auth['ga_qrCode'] : null;
213
- $ga_secret = isset($mo2f_google_auth['ga_secret']) ? $mo2f_google_auth['ga_secret'] : null;
214
- echo '<br><div id="displayQrCode">
215
- <img id="mo2f_gauth" style="line-height: 0;background:white;" src="data:image/jpg;base64,' . $data . '" />
216
- </div>';
217
- }
218
- ?>
219
-
220
- <div class="mcol-2">
221
- <br>
222
- <form name="f" method="post" action="" id="<?php echo 'mo2f_verify_form-'.mo2f_lt($trimmed_method); ?>">
223
-
224
- <table id="mo2f_setup_ga">
225
- <td class="bg-none"><?php echo mo2f_lt( 'Enter Code:' )?></td>
226
- <td><input type="tel" class="mo2f_table_textbox" style="margin-left: 1%; margin-right: 1%; width:200px;" name="google_auth_code" id="<?php echo 'textbox-'.mo2f_lt($trimmed_method); ?>" value="" pattern="[0-9]{4,8}" title="<?php echo mo2f_lt('Enter OTP:'); ?>"/></td>
227
- <td><a id="<?php echo 'save-'.mo2f_lt($trimmed_method); ?>" name="save_GA" class="button button1" ><?php echo mo2f_lt( 'Verify and Save' ); ?></a></td>
228
- </table>
229
-
230
- <input type="hidden" name="ga_secret" value="<?php echo $ga_secret;?>">
231
- </form>
232
-
233
- </div>
234
- <?php
235
- }else{
236
- $message= "Link to reconfigure 2nd factor will be sent to ".$email;
237
- echo mo2f_lt( $message );
238
- }
239
- break;
240
- case "OTP Over SMS":
241
- if(!$is_registered){
242
- $message = "Please register with miniOrange for using this method.";
243
- echo mo2f_lt( $message );
244
- }
245
- else{
246
- $mo2f_user_phone = $Mo2fdbQueries->get_user_detail( 'mo2f_user_phone', $user->ID );
247
- $user_phone = $mo2f_user_phone ? $mo2f_user_phone : get_option( 'user_phone_temp' );
248
- ?>
249
- <form name="f" method="post" action="" id="<?php echo 'mo2f_verify_form-'.mo2f_lt($trimmed_method); ?>">
250
-
251
- <table id="mo2f_setup_sms">
252
- <td class="bg-none"><?php echo mo2f_lt( 'Authentication codes will be sent to ' )?></td>
253
- <td><input type="text" class="mo2f_table_textbox" style="margin-left: 1%; margin-right: 1%; width:200px;" name="verify_phone" id="<?php echo 'textbox-'.mo2f_lt($trimmed_method); ?>" value="<?php echo $user_phone ?>" pattern="[\+]?[0-9]{1,4}\s?[0-9]{7,12}" required="true" title="<?php echo mo2f_lt( 'Enter phone number without any space or dashes' ); ?>"/></td>
254
- <td><a id="<?php echo 'save-'.mo2f_lt($trimmed_method); ?>" name="save" class="button button1" ><?php echo mo2f_lt( 'Save' ); ?></a></td>
255
- </table>
256
-
257
- </form>
258
- <?php
259
- }
260
- break;
261
- case "Security Questions":
262
- mo2f_configure_kba_questions($user);
263
- break;
264
- case "OTP Over Email":
265
- case "Email Verification":
266
- if(!$Mo2fdbQueries->check_if_user_column_exists($user->ID)){
267
- $content = $pass_2fa_login_session->create_user_in_miniOrange($user->ID,$email,$method);
268
- }
269
- $email = ($email=='')?$user->user_email:$email;
270
- $message = "Authentication codes will be sent to ".$email;
271
- echo mo2f_lt( $message );
272
- break;
273
- $Mo2fdbQueries->delete_user_login_sessions($user->ID);
274
- }
275
- }
276
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
helper/constants.php CHANGED
@@ -12,7 +12,7 @@
12
  const DEFAULT_CUSTOMER_KEY = "16555";
13
  const DEFAULT_API_KEY = "fFd2XcvTGDemZvbw1bcUesNJWEqKbbUq";
14
  const DB_VERSION = 155;
15
- const DB_FEATURE_MAIL = 2;
16
  const SUPPORT_EMAIL = 'info@xecurify.com';
17
  const REAL_TIME_IP_HOST = 'https://firewall.xecurify.com/';
18
  const IP_LOOKUP_TEMPLATE = '<span style="font-size:14px;font-weight:bold">GENERAL INFORMATION</span><table style="margin-left:2%;"><tr><td style="width:100px;">Response</td><td >:</td><td>{{status}}</td></tr><tr><td style="width:100px;">IP Address</td><td>:</td><td>{{ip}}</td></tr><tr><td>HostName</td><td>:</td><td>{{hostname}}</td></tr><tr><td>TimeZone</td><td>:</td><td>{{timezone}}</td></tr><tr><td>Time Difference</td><td>:</td><td>{{offset}}</td></tr></table><hr><span style="font-size:14px;font-weight:bold">LOCATION INFORMATION</span><table style="margin-left:2%;"><tr><td>Latitude</td><td>:</td><td>{{latitude}}</td></tr><tr><td>Longitude</td><td>:</td><td>{{longitude}}</td></tr><tr><td>Region</td><td>:</td><td>{{region}}</td></tr><tr><td>Country</td><td>:</td><td>{{country}}</td></tr><tr><td>City</td><td>:</td><td>{{city}}</td></tr><tr><td>Continent</td><td>:</td><td>{{continent}}</td></tr><tr><td>Curreny Code</td><td>:</td><td>{{curreny_code}}</td></tr><tr><td>Curreny Symbol</td><td>:</td><td>{{curreny_symbol}}</td></tr><tr><td>Per Dollar Value</td><td>:</td><td>{{per_dollar_value}}</td></tr></table>';
12
  const DEFAULT_CUSTOMER_KEY = "16555";
13
  const DEFAULT_API_KEY = "fFd2XcvTGDemZvbw1bcUesNJWEqKbbUq";
14
  const DB_VERSION = 155;
15
+ const DB_FEATURE_MAIL = 1;
16
  const SUPPORT_EMAIL = 'info@xecurify.com';
17
  const REAL_TIME_IP_HOST = 'https://firewall.xecurify.com/';
18
  const IP_LOOKUP_TEMPLATE = '<span style="font-size:14px;font-weight:bold">GENERAL INFORMATION</span><table style="margin-left:2%;"><tr><td style="width:100px;">Response</td><td >:</td><td>{{status}}</td></tr><tr><td style="width:100px;">IP Address</td><td>:</td><td>{{ip}}</td></tr><tr><td>HostName</td><td>:</td><td>{{hostname}}</td></tr><tr><td>TimeZone</td><td>:</td><td>{{timezone}}</td></tr><tr><td>Time Difference</td><td>:</td><td>{{offset}}</td></tr></table><hr><span style="font-size:14px;font-weight:bold">LOCATION INFORMATION</span><table style="margin-left:2%;"><tr><td>Latitude</td><td>:</td><td>{{latitude}}</td></tr><tr><td>Longitude</td><td>:</td><td>{{longitude}}</td></tr><tr><td>Region</td><td>:</td><td>{{region}}</td></tr><tr><td>Country</td><td>:</td><td>{{country}}</td></tr><tr><td>City</td><td>:</td><td>{{city}}</td></tr><tr><td>Continent</td><td>:</td><td>{{continent}}</td></tr><tr><td>Curreny Code</td><td>:</td><td>{{curreny_code}}</td></tr><tr><td>Curreny Symbol</td><td>:</td><td>{{curreny_symbol}}</td></tr><tr><td>Per Dollar Value</td><td>:</td><td>{{per_dollar_value}}</td></tr></table>';
helper/messages.php CHANGED
@@ -63,8 +63,6 @@
63
  //support form
64
  const SUPPORT_FORM_VALUES = "Please submit your query along with email.";
65
  const SUPPORT_FORM_SENT = "Thanks for getting in touch! We shall get back to you shortly.";
66
- const TRIAL_REQUEST_SENT = "Thanks for getting in touch! We shall provide you the trial plugin on your email shortly.";
67
- const TRIAL_REQUEST_ALREADY_SENT = "You have already sent a trial request for premium plugin. We will get back to you on your email soon.";
68
  const SUPPORT_FORM_ERROR = "Your query could not be submitted. Please try again.";
69
  // request demo form
70
  const DEMO_FORM_ERROR = "Please fill out all the fields.";
@@ -75,7 +73,6 @@
75
  const UNKNOWN_ERROR = "Error processing your request. Please try again.";
76
  const CONFIG_SAVED = "Configuration saved successfully.";
77
  const REQUIRED_FIELDS = "Please enter all the required fields";
78
- CONST SELECT_A_PLAN = "Please select a plan";
79
  const RESET_PASS = "You password has been reset successfully and sent to your registered email. Please check your mailbox.";
80
  const TEMPLATE_SAVED = "Email template saved.";
81
  const GET_BACKUP_CODES = "<div class='custom-notice notice notice-warning backupcodes-notice'><p><p class='notice-message'><b>Please download backup codes using the 'Get backup codes' button to avoid getting locked out. Backup codes will be emailed as well as downloaded.</b></p><button class='backup_codes_dismiss notice-button'><i>NEVER SHOW AGAIN</i></button></p></div>";
@@ -94,7 +91,7 @@
94
  const INVALID_CRED = 'Invalid username or password. Please try again.';
95
  const REQUIRED_OTP = 'Please enter a value in OTP field.';
96
  const INVALID_OTP = 'Invalid one time passcode. Please enter a valid passcode.';
97
- const INVALID_PHONE = 'Please enter a valid phone number.';
98
  const PASS_MISMATCH = 'Password and Confirm Password do not match.';
99
  const CRON_DB_BACKUP_ENABLE = 'Scheduled Database Backup enabled';
100
  const CRON_DB_BACKUP_DISABLE = 'Scheduled Database Backup disabled';
@@ -144,37 +141,6 @@
144
  const LOW_EMAIL_TRANSACTIONS = "<div class='custom-notice notice notice-warning low_email-notice MOWrn'><p><p class='notice-message'><img style='width:15px;' src='".MO2F_PLUGIN_URL.'/includes/images/miniorange_icon.png'."'>&nbsp&nbspYou have left very few Email transaction. We advise you to recharge or change 2FA method before you have no Email left.</p><a class='notice-button' href='".MoWpnsConstants::rechargeLink."' target='_blank' style='margin-right: 15px;'>RECHARGE</a><a class='notice-button' href='admin.php?page=mo_2fa_two_fa'id='setuptwofa_redirect' style='margin-right: 15px;'>SET UP ANOTHER 2FA</a><button class='email_low_dismiss notice-button' style='margin-right: 15px;'><i>DISMISS</i></button><button class='email_low_dismiss_always notice-button'><i>NEVER SHOW AGAIN</i></button></p></div>";
145
 
146
 
147
- const FREE_TRIAL_MESSAGE_TRIAL_PAGE = "
148
- <div class='notice notice-warning mo2f-notice-warning trial-notice MOWrn' id='mo2f_is-dismissible'>
149
- <form id='MO2F_FREE_TRIAL_MESSAGE_TRIAL_PAGE' method='post' action=''>
150
- <p>
151
- <img style='width:15px;' src='".MO2F_PLUGIN_URL.'includes/images/miniorange_icon.png'."'>&nbsp&nbspInterested in the Trial of<b> 2 Factor Authentication Premium Plugins?</b> Click on the button below to get trial for <strong>7 days</strong>.
152
- (<em>No credit card required</em>)
153
- </p>
154
- <p style='height:25px; padding: 10px;'>
155
- <a class='button button-primary notice-button' href='admin.php?page=mo2f_trial' id='mo2f_trial_redirect'>Get Trial</a>
156
- <input type='hidden' name='mo2f_dismiss_trial' value='mo2f_dismiss_trial'/>
157
- <button type='submit' class='mo2f-trial-dismiss notice-button'><i>DISMISS</i></button>
158
- </p>
159
- </form>
160
- </div>
161
- ";
162
-
163
- const FREE_TRIAL_MESSAGE_ACCOUNT_PAGE = "
164
- <div class='notice notice-warning mo2f-notice-warning trial-notice MOWrn'>
165
- <form id='MO2F_FREE_TRIAL_MESSAGE_TRIAL_PAGE' method='post' action=''>
166
- <p>
167
- <img style='width:15px;' src='".MO2F_PLUGIN_URL.'includes/images/miniorange_icon.png'."'>&nbsp&nbspInterested in the Trial of<b> 2 Factor Authentication Premium Plugins?</b> Click on the button below to get trial for <strong>7 days</strong>.
168
- (<em>No credit card required</em>)
169
- </p>
170
- <p style='height:25px; padding: 10px;'>
171
- <a class='button button-primary notice-button' href='admin.php?page=mo_2fa_account' id='mo2f_trial_redirect'>Get Trial</a>
172
- <input type='hidden' name='mo2f_dismiss_trial' value='mo2f_dismiss_trial'/>
173
- <button type='submit' class='mo2f-trial-dismiss notice-button'><i>DISMISS</i></button>
174
- </p>
175
- </form>
176
- </div>
177
- ";
178
 
179
 
180
 
63
  //support form
64
  const SUPPORT_FORM_VALUES = "Please submit your query along with email.";
65
  const SUPPORT_FORM_SENT = "Thanks for getting in touch! We shall get back to you shortly.";
 
 
66
  const SUPPORT_FORM_ERROR = "Your query could not be submitted. Please try again.";
67
  // request demo form
68
  const DEMO_FORM_ERROR = "Please fill out all the fields.";
73
  const UNKNOWN_ERROR = "Error processing your request. Please try again.";
74
  const CONFIG_SAVED = "Configuration saved successfully.";
75
  const REQUIRED_FIELDS = "Please enter all the required fields";
 
76
  const RESET_PASS = "You password has been reset successfully and sent to your registered email. Please check your mailbox.";
77
  const TEMPLATE_SAVED = "Email template saved.";
78
  const GET_BACKUP_CODES = "<div class='custom-notice notice notice-warning backupcodes-notice'><p><p class='notice-message'><b>Please download backup codes using the 'Get backup codes' button to avoid getting locked out. Backup codes will be emailed as well as downloaded.</b></p><button class='backup_codes_dismiss notice-button'><i>NEVER SHOW AGAIN</i></button></p></div>";
91
  const INVALID_CRED = 'Invalid username or password. Please try again.';
92
  const REQUIRED_OTP = 'Please enter a value in OTP field.';
93
  const INVALID_OTP = 'Invalid one time passcode. Please enter a valid passcode.';
94
+ const INVALID_PHONE = 'Please enter the phone number in the following format: <b>+##country code## ##phone number##';
95
  const PASS_MISMATCH = 'Password and Confirm Password do not match.';
96
  const CRON_DB_BACKUP_ENABLE = 'Scheduled Database Backup enabled';
97
  const CRON_DB_BACKUP_DISABLE = 'Scheduled Database Backup disabled';
141
  const LOW_EMAIL_TRANSACTIONS = "<div class='custom-notice notice notice-warning low_email-notice MOWrn'><p><p class='notice-message'><img style='width:15px;' src='".MO2F_PLUGIN_URL.'/includes/images/miniorange_icon.png'."'>&nbsp&nbspYou have left very few Email transaction. We advise you to recharge or change 2FA method before you have no Email left.</p><a class='notice-button' href='".MoWpnsConstants::rechargeLink."' target='_blank' style='margin-right: 15px;'>RECHARGE</a><a class='notice-button' href='admin.php?page=mo_2fa_two_fa'id='setuptwofa_redirect' style='margin-right: 15px;'>SET UP ANOTHER 2FA</a><button class='email_low_dismiss notice-button' style='margin-right: 15px;'><i>DISMISS</i></button><button class='email_low_dismiss_always notice-button'><i>NEVER SHOW AGAIN</i></button></p></div>";
142
 
143
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
144
 
145
 
146
 
helper/utility.php CHANGED
@@ -69,11 +69,11 @@ class MoWpnsUtility
69
  public static function get_client_ip()
70
  {
71
  if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
72
- return sanitize_text_field($_SERVER['HTTP_CLIENT_IP']);
73
  } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
74
- return sanitize_text_field($_SERVER['HTTP_X_FORWARDED_FOR']);
75
  } else {
76
- return sanitize_text_field($_SERVER['REMOTE_ADDR']);
77
  }
78
  return '';
79
  }
@@ -361,15 +361,11 @@ class MoWpnsUtility
361
  $is_plugin_active_for_network = is_plugin_active_for_network( MoWpnsConstants::TWO_FACTOR_SETTINGS);
362
  $is_onprem = get_option('is_onprem');
363
  $WAFEnabled = get_site_option('WAFEnabled');
364
- $pricing_page_visits = get_site_option('mo2fa_visit',0);
365
  $WAFLevel = get_site_option('WAF');
366
  $NoOf2faUsers = $Mo2fdbQueries->get_no_of_2fa_users();
367
- $is_inline_used = get_site_option('mo2f_is_inline_used');
368
- $login_with_mfa_use = get_site_option('mo2f_login_with_mfa_use');
369
  $EmailTransactions = MoWpnsUtility::get_mo2f_db_option('cmVtYWluaW5nT1RQ', 'site_option');
370
  $SMSTransactions = get_site_option('cmVtYWluaW5nT1RQVHJhbnNhY3Rpb25z')?get_site_option('cmVtYWluaW5nT1RQVHJhbnNhY3Rpb25z'):0;
371
  $SQLInjection = get_option('SQLInjection');
372
- $user_profile = get_option('mo2fa_userProfile_method');
373
  $XSSAttack = get_option('XSSAttack');
374
  $RFIAttack = get_option('RFIAttack');
375
  $LFIAttack = get_option('LFIAttack');
@@ -380,7 +376,6 @@ class MoWpnsUtility
380
  $mo2f_enable_brute_force = get_option('mo2f_enable_brute_force');
381
  $space = "<span>&nbsp;&nbsp;&nbsp;</span>";
382
  $browser = $moWpnsUtility->getCurrentBrowser();
383
- $user_count = isset((count_users())['total_users'])?(count_users())['total_users']:'';
384
  $specific_plugins = array('UM_Functions'=>'Ultimate Member', 'wc_get_product'=>'WooCommerce','pmpro_gateways'=>'Paid MemberShip Pro');
385
  $backup_codes_remaining = get_user_meta($user_object->ID, 'mo2f_backup_codes', true);
386
  if(is_array($backup_codes_remaining)){
@@ -388,7 +383,7 @@ class MoWpnsUtility
388
  }else{
389
  $backup_codes_remaining = 0;
390
  }
391
- $plugin_configuration ="<br><br><I>Plugin Configuration :-</I>".$space."On-premise:".($is_onprem?"Yes":"No"). $space."User Profile 2fa:".($user_profile?$user_profile:"No"). $space."Login with MFA:".($login_with_mfa_use == '1'?"Yes":"No"). $space."Inline Registration:".($is_inline_used == '1'?"Yes":"No"). $space."2FA method:" . ($mo2f_configured_2FA_method==''?"Not selected":$mo2f_configured_2FA_method).$space."No. of 2FA users :".$NoOf2faUsers.$space."Total users : ".$user_count.$space."Methods of users:".($other_methods==''?"NONE":$other_methods).$space."Email transactions:".$EmailTransactions.$space."SMS Transactions:".$SMSTransactions.$space.(is_multisite()?"Multisite:Yes":"Single-site:Yes").((mo2f_is_customer_registered())?($space."Customer Key:".$key):($space."Customer Registered:'No")).$space."Browser:".$browser;
392
  if(get_user_meta($user_object->ID, 'mo_backup_code_generated', true) || get_user_meta($user_object->ID, 'mo_backup_code_downloaded', true))
393
  $plugin_configuration=$plugin_configuration.$space."Backup Codes:".$backup_codes_remaining."/5";
394
  $plugins='';
@@ -403,7 +398,6 @@ class MoWpnsUtility
403
  if(is_multisite()){
404
  $plugin_configuration = $plugin_configuration.$space.($is_plugin_active_for_network?"Network activated:'Yes":"Site activated:'Yes");
405
  }
406
- $plugin_configuration=$plugin_configuration.$space."Pricing Page visits : ".$pricing_page_visits;
407
  if(time()-get_site_option("mo_2fa_pnp")<2592000 && (get_site_option('mo_2fa_plan_type')|| get_site_option('mo_2fa_addon_plan_type'))){
408
  $plugin_configuration=$plugin_configuration.$space."Checked plans:'";
409
  if(get_site_option('mo_2fa_plan_type'))
69
  public static function get_client_ip()
70
  {
71
  if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
72
+ return $_SERVER['HTTP_CLIENT_IP'];
73
  } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
74
+ return $_SERVER['HTTP_X_FORWARDED_FOR'];
75
  } else {
76
+ return $_SERVER['REMOTE_ADDR'];
77
  }
78
  return '';
79
  }
361
  $is_plugin_active_for_network = is_plugin_active_for_network( MoWpnsConstants::TWO_FACTOR_SETTINGS);
362
  $is_onprem = get_option('is_onprem');
363
  $WAFEnabled = get_site_option('WAFEnabled');
 
364
  $WAFLevel = get_site_option('WAF');
365
  $NoOf2faUsers = $Mo2fdbQueries->get_no_of_2fa_users();
 
 
366
  $EmailTransactions = MoWpnsUtility::get_mo2f_db_option('cmVtYWluaW5nT1RQ', 'site_option');
367
  $SMSTransactions = get_site_option('cmVtYWluaW5nT1RQVHJhbnNhY3Rpb25z')?get_site_option('cmVtYWluaW5nT1RQVHJhbnNhY3Rpb25z'):0;
368
  $SQLInjection = get_option('SQLInjection');
 
369
  $XSSAttack = get_option('XSSAttack');
370
  $RFIAttack = get_option('RFIAttack');
371
  $LFIAttack = get_option('LFIAttack');
376
  $mo2f_enable_brute_force = get_option('mo2f_enable_brute_force');
377
  $space = "<span>&nbsp;&nbsp;&nbsp;</span>";
378
  $browser = $moWpnsUtility->getCurrentBrowser();
 
379
  $specific_plugins = array('UM_Functions'=>'Ultimate Member', 'wc_get_product'=>'WooCommerce','pmpro_gateways'=>'Paid MemberShip Pro');
380
  $backup_codes_remaining = get_user_meta($user_object->ID, 'mo2f_backup_codes', true);
381
  if(is_array($backup_codes_remaining)){
383
  }else{
384
  $backup_codes_remaining = 0;
385
  }
386
+ $plugin_configuration ="<br><br><I>Plugin Configuration :-</I>".$space."On-premise:".($is_onprem?"Yes":"No"). $space."2FA method:" . ($mo2f_configured_2FA_method==''?"Not selected":$mo2f_configured_2FA_method).$space."No. of 2FA users :".$NoOf2faUsers.$space."Methods of users:".($other_methods==''?"NONE":$other_methods).$space."Email transactions:".$EmailTransactions.$space."SMS Transactions:".$SMSTransactions.$space.(is_multisite()?"Multisite:Yes":"Single-site:Yes").((mo2f_is_customer_registered())?($space."Customer Key:".$key):($space."Customer Registered:'No")).$space."Browser:".$browser;
387
  if(get_user_meta($user_object->ID, 'mo_backup_code_generated', true) || get_user_meta($user_object->ID, 'mo_backup_code_downloaded', true))
388
  $plugin_configuration=$plugin_configuration.$space."Backup Codes:".$backup_codes_remaining."/5";
389
  $plugins='';
398
  if(is_multisite()){
399
  $plugin_configuration = $plugin_configuration.$space.($is_plugin_active_for_network?"Network activated:'Yes":"Site activated:'Yes");
400
  }
 
401
  if(time()-get_site_option("mo_2fa_pnp")<2592000 && (get_site_option('mo_2fa_plan_type')|| get_site_option('mo_2fa_addon_plan_type'))){
402
  $plugin_configuration=$plugin_configuration.$space."Checked plans:'";
403
  if(get_site_option('mo_2fa_plan_type'))
includes/css/bootstrap.min.css CHANGED
@@ -1246,21 +1246,8 @@ button.mo2f_close {
1246
  }
1247
 
1248
 
1249
- .mo2f-styled-radio_conf {
1250
- width: 25px;
1251
- height: 32px;
1252
- position: relative;
1253
- display: inline-block;
1254
- border-radius: 51%;
1255
- background-color: #e6e6e6;
1256
- float: left;
1257
- margin-top: -7px;
1258
- }
1259
 
1260
- .mo2f-styled-radio-text_conf {
1261
- margin-left: 10px;
1262
- font-size: medium;
1263
- }
1264
 
1265
  .mo2f-modal-backdrop {
1266
 
1246
  }
1247
 
1248
 
 
 
 
 
 
 
 
 
 
 
1249
 
1250
+
 
 
 
1251
 
1252
  .mo2f-modal-backdrop {
1253
 
includes/css/button_styles.css CHANGED
@@ -91,10 +91,10 @@ input:checked + .mo_wpns_slider:before {
91
  transition: .4s;
92
  }
93
  input:checked + .mo_wpns_slider_small {
94
- background-color: #2271b1;
95
  }
96
  input:focus + .mo_wpns_slider_small {
97
- box-shadow: 0 0 1px #2271b1;
98
  }
99
 
100
  input:checked + .mo_wpns_slider_small:before {
91
  transition: .4s;
92
  }
93
  input:checked + .mo_wpns_slider_small {
94
+ background-color: #20b2aa;
95
  }
96
  input:focus + .mo_wpns_slider_small {
97
+ box-shadow: 0 0 1px #20b2aa;
98
  }
99
 
100
  input:checked + .mo_wpns_slider_small:before {
includes/css/christmas.gif DELETED
Binary file
includes/css/datetime-style-settings.css ADDED
@@ -0,0 +1,576 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * jQuery Timepicker
3
+ * http://timepicker.co
4
+ * https://cdnjs.cloudflare.com/ajax/libs/timepicker/1.3.5/jquery.timepicker.min.css
5
+ * Enhances standard form input fields helping users to select (or type) times.
6
+ *
7
+ * Copyright (c) 2016 Willington Vega; Licensed MIT, GPL
8
+ */
9
+
10
+ .ui-timepicker-container {
11
+ position: absolute;
12
+ overflow: hidden;
13
+ box-sizing: border-box;
14
+ }
15
+
16
+ .ui-timepicker {
17
+ box-sizing: content-box;
18
+ display: block;
19
+ height: 205px;
20
+ list-style: none outside none;
21
+ margin: 0;
22
+ padding: 0 1px;
23
+ text-align: center;
24
+ }
25
+
26
+ .ui-timepicker-viewport {
27
+ box-sizing: content-box;
28
+ display: block;
29
+ height: 148px;
30
+ margin: 0;
31
+ padding: 0;
32
+ overflow: auto;
33
+ overflow-x: hidden; /* IE */
34
+ }
35
+
36
+ .ui-timepicker-standard {
37
+ /* overwrites .ui-widget */
38
+ font-family: Verdana,Arial,sans-serif;
39
+ font-size: 1.1em;
40
+ /* overwrites .ui-widget-content */
41
+ background-color: #FFF;
42
+ border: 1px solid #AAA;
43
+ color: #222;
44
+ /* overwrites .ui-menu */
45
+ margin: 0;
46
+ padding: 2px;
47
+ height: 155px !important;
48
+ }
49
+ .ui-timepicker-standard a {
50
+ border: 1px solid transparent;
51
+ color: #222;
52
+ display: block;
53
+ padding: 0.2em 0.4em;
54
+ text-decoration: none;
55
+ }
56
+ .ui-timepicker-standard .ui-state-hover {
57
+ /* overwrites .ui-state-hover */
58
+ background-color: #DADADA;
59
+ border: 1px solid #999;
60
+ font-weight: normal;
61
+ color: #212121;
62
+ }
63
+ .ui-timepicker-standard .ui-menu-item {
64
+ /* overwrites .ui-menu and .ui-menu-item */
65
+ /*clear: left;
66
+ float: left;*/
67
+ margin: 0;
68
+ padding: 0;
69
+ }
70
+
71
+ .ui-timepicker-corners,
72
+ .ui-timepicker-corners .ui-corner-all {
73
+ -moz-border-radius: 4px;
74
+ -webkit-border-radius: 4px;
75
+ border-radius: 4px;
76
+ }
77
+
78
+ .ui-timepicker-hidden {
79
+ /* overwrites .ui-helper-hidden */
80
+ display: none;
81
+ }
82
+
83
+ .ui-timepicker-no-scrollbar .ui-timepicker {
84
+ border: none;
85
+ }
86
+
87
+
88
+
89
+ /* ADDED FOR TIMEZONE DROPDOWN - https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css */
90
+
91
+ .select2-container {
92
+ box-sizing: border-box;
93
+ display: inline-block;
94
+ margin: 0;
95
+ width: 90% !important;
96
+ position: relative;
97
+ vertical-align: middle; }
98
+ .select2-container .select2-selection--single {
99
+ box-sizing: border-box;
100
+ cursor: pointer;
101
+ display: block;
102
+ height: 28px;
103
+ user-select: none;
104
+ -webkit-user-select: none; }
105
+ .select2-container .select2-selection--single .select2-selection__rendered {
106
+ display: block;
107
+ padding-left: 8px;
108
+ padding-right: 20px;
109
+ overflow: hidden;
110
+ text-overflow: ellipsis;
111
+ white-space: nowrap; }
112
+ .select2-container .select2-selection--single .select2-selection__clear {
113
+ position: relative; }
114
+ .select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered {
115
+ padding-right: 8px;
116
+ padding-left: 20px; }
117
+ .select2-container .select2-selection--multiple {
118
+ box-sizing: border-box;
119
+ cursor: pointer;
120
+ display: block;
121
+ min-height: 32px;
122
+ user-select: none;
123
+ -webkit-user-select: none; }
124
+ .select2-container .select2-selection--multiple .select2-selection__rendered {
125
+ display: inline-block;
126
+ overflow: hidden;
127
+ padding-left: 8px;
128
+ text-overflow: ellipsis;
129
+ white-space: nowrap; }
130
+ .select2-container .select2-search--inline {
131
+ float: left; }
132
+ .select2-container .select2-search--inline .select2-search__field {
133
+ box-sizing: border-box;
134
+ border: none;
135
+ font-size: 100%;
136
+ margin-top: 5px;
137
+ padding: 0; }
138
+ .select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button {
139
+ -webkit-appearance: none; }
140
+
141
+ .select2-dropdown {
142
+ background-color: white;
143
+ border: 1px solid #aaa;
144
+ border-radius: 4px;
145
+ box-sizing: border-box;
146
+ display: block;
147
+ position: absolute;
148
+ left: -100000px;
149
+ width: 100%;
150
+ z-index: 1051; }
151
+
152
+ .select2-results {
153
+ display: block; }
154
+
155
+ .select2-results__options {
156
+ list-style: none;
157
+ margin: 0;
158
+ padding: 0; }
159
+
160
+ .select2-results__option {
161
+ padding: 6px;
162
+ user-select: none;
163
+ -webkit-user-select: none; }
164
+ .select2-results__option[aria-selected] {
165
+ cursor: pointer; }
166
+
167
+ .select2-container--open .select2-dropdown {
168
+ left: 0; }
169
+
170
+ .select2-container--open .select2-dropdown--above {
171
+ border-bottom: none;
172
+ border-bottom-left-radius: 0;
173
+ border-bottom-right-radius: 0; }
174
+
175
+ .select2-container--open .select2-dropdown--below {
176
+ border-top: none;
177
+ border-top-left-radius: 0;
178
+ border-top-right-radius: 0; }
179
+
180
+ .select2-search--dropdown {
181
+ display: block;
182
+ padding: 4px; }
183
+ .select2-search--dropdown .select2-search__field {
184
+ padding: 4px;
185
+ width: 100%;
186
+ box-sizing: border-box; }
187
+ .select2-search--dropdown .select2-search__field::-webkit-search-cancel-button {
188
+ -webkit-appearance: none; }
189
+ .select2-search--dropdown.select2-search--hide {
190
+ display: none; }
191
+
192
+ .select2-close-mask {
193
+ border: 0;
194
+ margin: 0;
195
+ padding: 0;
196
+ display: block;
197
+ position: fixed;
198
+ left: 0;
199
+ top: 0;
200
+ min-height: 100%;
201
+ min-width: 100%;
202
+ height: auto;
203
+ width: auto;
204
+ opacity: 0;
205
+ z-index: 99;
206
+ background-color: #fff;
207
+ filter: alpha(opacity=0); }
208
+
209
+ .select2-hidden-accessible {
210
+ border: 0 !important;
211
+ clip: rect(0 0 0 0) !important;
212
+ height: 1px !important;
213
+ margin: -1px !important;
214
+ overflow: hidden !important;
215
+ padding: 0 !important;
216
+ position: absolute !important;
217
+ width: 1px !important; }
218
+
219
+ .select2-container--default .select2-selection--single {
220
+ background-color: #fff;
221
+ border: 1px solid #aaa;
222
+ border-radius: 4px; }
223
+ .select2-container--default .select2-selection--single .select2-selection__rendered {
224
+ color: #444;
225
+ line-height: 28px; }
226
+ .select2-container--default .select2-selection--single .select2-selection__clear {
227
+ cursor: pointer;
228
+ float: right;
229
+ font-weight: bold; }
230
+ .select2-container--default .select2-selection--single .select2-selection__placeholder {
231
+ color: #999; }
232
+ .select2-container--default .select2-selection--single .select2-selection__arrow {
233
+ height: 26px;
234
+ position: absolute;
235
+ top: 1px;
236
+ right: 1px;
237
+ width: 20px; }
238
+ .select2-container--default .select2-selection--single .select2-selection__arrow b {
239
+ border-color: #888 transparent transparent transparent;
240
+ border-style: solid;
241
+ border-width: 5px 4px 0 4px;
242
+ height: 0;
243
+ left: 50%;
244
+ margin-left: -4px;
245
+ margin-top: -2px;
246
+ position: absolute;
247
+ top: 50%;
248
+ width: 0; }
249
+
250
+ .select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear {
251
+ float: left; }
252
+
253
+ .select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow {
254
+ left: 1px;
255
+ right: auto; }
256
+
257
+ .select2-container--default.select2-container--disabled .select2-selection--single {
258
+ background-color: #eee;
259
+ cursor: default; }
260
+ .select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear {
261
+ display: none; }
262
+
263
+ .select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b {
264
+ border-color: transparent transparent #888 transparent;
265
+ border-width: 0 4px 5px 4px; }
266
+
267
+ .select2-container--default .select2-selection--multiple {
268
+ background-color: white;
269
+ border: 1px solid #aaa;
270
+ border-radius: 4px;
271
+ cursor: text; }
272
+ .select2-container--default .select2-selection--multiple .select2-selection__rendered {
273
+ box-sizing: border-box;
274
+ list-style: none;
275
+ margin: 0;
276
+ padding: 0 5px;
277
+ width: 100%; }
278
+ .select2-container--default .select2-selection--multiple .select2-selection__rendered li {
279
+ list-style: none; }
280
+ .select2-container--default .select2-selection--multiple .select2-selection__placeholder {
281
+ color: #999;
282
+ margin-top: 5px;
283
+ float: left; }
284
+ .select2-container--default .select2-selection--multiple .select2-selection__clear {
285
+ cursor: pointer;
286
+ float: right;
287
+ font-weight: bold;
288
+ margin-top: 5px;
289
+ margin-right: 10px; }
290
+ .select2-container--default .select2-selection--multiple .select2-selection__choice {
291
+ background-color: #e4e4e4;
292
+ border: 1px solid #aaa;
293
+ border-radius: 4px;
294
+ cursor: default;
295
+ float: left;
296
+ margin-right: 5px;
297
+ margin-top: 5px;
298
+ padding: 0 5px; }
299
+ .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {
300
+ color: #999;
301
+ cursor: pointer;
302
+ display: inline-block;
303
+ font-weight: bold;
304
+ margin-right: 2px; }
305
+ .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {
306
+ color: #333; }
307
+
308
+ .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline {
309
+ float: right; }
310
+
311
+ .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
312
+ margin-left: 5px;
313
+ margin-right: auto; }
314
+
315
+ .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove {
316
+ margin-left: 2px;
317
+ margin-right: auto; }
318
+
319
+ .select2-container--default.select2-container--focus .select2-selection--multiple {
320
+ border: solid black 1px;
321
+ outline: 0; }
322
+
323
+ .select2-container--default.select2-container--disabled .select2-selection--multiple {
324
+ background-color: #eee;
325
+ cursor: default; }
326
+
327
+ .select2-container--default.select2-container--disabled .select2-selection__choice__remove {
328
+ display: none; }
329
+
330
+ .select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple {
331
+ border-top-left-radius: 0;
332
+ border-top-right-radius: 0; }
333
+
334
+ .select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple {
335
+ border-bottom-left-radius: 0;
336
+ border-bottom-right-radius: 0; }
337
+
338
+ .select2-container--default .select2-search--dropdown .select2-search__field {
339
+ border: 1px solid #aaa; }
340
+
341
+ .select2-container--default .select2-search--inline .select2-search__field {
342
+ background: transparent;
343
+ border: none;
344
+ outline: 0;
345
+ box-shadow: none;
346
+ -webkit-appearance: textfield; }
347
+
348
+ .select2-container--default .select2-results > .select2-results__options {
349
+ max-height: 200px;
350
+ overflow-y: auto; }
351
+
352
+ .select2-container--default .select2-results__option[role=group] {
353
+ padding: 0; }
354
+
355
+ .select2-container--default .select2-results__option[aria-disabled=true] {
356
+ color: #999; }
357
+
358
+ .select2-container--default .select2-results__option[aria-selected=true] {
359
+ background-color: #ddd; }
360
+
361
+ .select2-container--default .select2-results__option .select2-results__option {
362
+ padding-left: 1em; }
363
+ .select2-container--default .select2-results__option .select2-results__option .select2-results__group {
364
+ padding-left: 0; }
365
+ .select2-container--default .select2-results__option .select2-results__option .select2-results__option {
366
+ margin-left: -1em;
367
+ padding-left: 2em; }
368
+ .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
369
+ margin-left: -2em;
370
+ padding-left: 3em; }
371
+ .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
372
+ margin-left: -3em;
373
+ padding-left: 4em; }
374
+ .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
375
+ margin-left: -4em;
376
+ padding-left: 5em; }
377
+ .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
378
+ margin-left: -5em;
379
+ padding-left: 6em; }
380
+
381
+ .select2-container--default .select2-results__option--highlighted[aria-selected] {
382
+ background-color: #5897fb;
383
+ color: white; }
384
+
385
+ .select2-container--default .select2-results__group {
386
+ cursor: default;
387
+ display: block;
388
+ padding: 6px; }
389
+
390
+ .select2-container--classic .select2-selection--single {
391
+ background-color: #f7f7f7;
392
+ border: 1px solid #aaa;
393
+ border-radius: 4px;
394
+ outline: 0;
395
+ background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%);
396
+ background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%);
397
+ background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%);
398
+ background-repeat: repeat-x;
399
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }
400
+ .select2-container--classic .select2-selection--single:focus {
401
+ border: 1px solid #5897fb; }
402
+ .select2-container--classic .select2-selection--single .select2-selection__rendered {
403
+ color: #444;
404
+ line-height: 28px; }
405
+ .select2-container--classic .select2-selection--single .select2-selection__clear {
406
+ cursor: pointer;
407
+ float: right;
408
+ font-weight: bold;
409
+ margin-right: 10px; }
410
+ .select2-container--classic .select2-selection--single .select2-selection__placeholder {
411
+ color: #999; }
412
+ .select2-container--classic .select2-selection--single .select2-selection__arrow {
413
+ background-color: #ddd;
414
+ border: none;
415
+ border-left: 1px solid #aaa;
416
+ border-top-right-radius: 4px;
417
+ border-bottom-right-radius: 4px;
418
+ height: 26px;
419
+ position: absolute;
420
+ top: 1px;
421
+ right: 1px;
422
+ width: 20px;
423
+ background-image: -webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%);
424
+ background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%);
425
+ background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%);
426
+ background-repeat: repeat-x;
427
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0); }
428
+ .select2-container--classic .select2-selection--single .select2-selection__arrow b {
429
+ border-color: #888 transparent transparent transparent;
430
+ border-style: solid;
431
+ border-width: 5px 4px 0 4px;
432
+ height: 0;
433
+ left: 50%;
434
+ margin-left: -4px;
435
+ margin-top: -2px;
436
+ position: absolute;
437
+ top: 50%;
438
+ width: 0; }
439
+
440
+ .select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear {
441
+ float: left; }
442
+
443
+ .select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow {
444
+ border: none;
445
+ border-right: 1px solid #aaa;
446
+ border-radius: 0;
447
+ border-top-left-radius: 4px;
448
+ border-bottom-left-radius: 4px;
449
+ left: 1px;
450
+ right: auto; }
451
+
452
+ .select2-container--classic.select2-container--open .select2-selection--single {
453
+ border: 1px solid #5897fb; }
454
+ .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow {
455
+ background: transparent;
456
+ border: none; }
457
+ .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b {
458
+ border-color: transparent transparent #888 transparent;
459
+ border-width: 0 4px 5px 4px; }
460
+
461
+ .select2-container--classic.select2-container--open.select2-container--above .select2-selection--single {
462
+ border-top: none;
463
+ border-top-left-radius: 0;
464
+ border-top-right-radius: 0;
465
+ background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%);
466
+ background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%);
467
+ background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%);
468
+ background-repeat: repeat-x;
469
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }
470
+
471
+ .select2-container--classic.select2-container--open.select2-container--below .select2-selection--single {
472
+ border-bottom: none;
473
+ border-bottom-left-radius: 0;
474
+ border-bottom-right-radius: 0;
475
+ background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%);
476
+ background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%);
477
+ background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%);
478
+ background-repeat: repeat-x;
479
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0); }
480
+
481
+ .select2-container--classic .select2-selection--multiple {
482
+ background-color: white;
483
+ border: 1px solid #aaa;
484
+ border-radius: 4px;
485
+ cursor: text;
486
+ outline: 0; }
487
+ .select2-container--classic .select2-selection--multiple:focus {
488
+ border: 1px solid #5897fb; }
489
+ .select2-container--classic .select2-selection--multiple .select2-selection__rendered {
490
+ list-style: none;
491
+ margin: 0;
492
+ padding: 0 5px; }
493
+ .select2-container--classic .select2-selection--multiple .select2-selection__clear {
494
+ display: none; }
495
+ .select2-container--classic .select2-selection--multiple .select2-selection__choice {
496
+ background-color: #e4e4e4;
497
+ border: 1px solid #aaa;
498
+ border-radius: 4px;
499
+ cursor: default;
500
+ float: left;
501
+ margin-right: 5px;
502
+ margin-top: 5px;
503
+ padding: 0 5px; }
504
+ .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove {
505
+ color: #888;
506
+ cursor: pointer;
507
+ display: inline-block;
508
+ font-weight: bold;
509
+ margin-right: 2px; }
510
+ .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover {
511
+ color: #555; }
512
+
513
+ .select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
514
+ float: right; }
515
+
516
+ .select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
517
+ margin-left: 5px;
518
+ margin-right: auto; }
519
+
520
+ .select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove {
521
+ margin-left: 2px;
522
+ margin-right: auto; }
523
+
524
+ .select2-container--classic.select2-container--open .select2-selection--multiple {
525
+ border: 1px solid #5897fb; }
526
+
527
+ .select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple {
528
+ border-top: none;
529
+ border-top-left-radius: 0;
530
+ border-top-right-radius: 0; }
531
+
532
+ .select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple {
533
+ border-bottom: none;
534
+ border-bottom-left-radius: 0;
535
+ border-bottom-right-radius: 0; }
536
+
537
+ .select2-container--classic .select2-search--dropdown .select2-search__field {
538
+ border: 1px solid #aaa;
539
+ outline: 0; }
540
+
541
+ .select2-container--classic .select2-search--inline .select2-search__field {
542
+ outline: 0;
543
+ box-shadow: none; }
544
+
545
+ .select2-container--classic .select2-dropdown {
546
+ background-color: white;
547
+ border: 1px solid transparent; }
548
+
549
+ .select2-container--classic .select2-dropdown--above {
550
+ border-bottom: none; }
551
+
552
+ .select2-container--classic .select2-dropdown--below {
553
+ border-top: none; }
554
+
555
+ .select2-container--classic .select2-results > .select2-results__options {
556
+ max-height: 200px;
557
+ overflow-y: auto; }
558
+
559
+ .select2-container--classic .select2-results__option[role=group] {
560
+ padding: 0; }
561
+
562
+ .select2-container--classic .select2-results__option[aria-disabled=true] {
563
+ color: grey; }
564
+
565
+ .select2-container--classic .select2-results__option--highlighted[aria-selected] {
566
+ background-color: #3875d7;
567
+ color: white; }
568
+
569
+ .select2-container--classic .select2-results__group {
570
+ cursor: default;
571
+ display: block;
572
+ padding: 6px; }
573
+
574
+ .select2-container--classic.select2-container--open .select2-dropdown {
575
+ border-color: #5897fb; }
576
+
includes/css/datetime-style-settings.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .ui-timepicker-container{position:absolute;overflow:hidden;box-sizing:border-box}.ui-timepicker{box-sizing:content-box;display:block;height:205px;list-style:none outside none;margin:0;padding:0 1px;text-align:center}.ui-timepicker-viewport{box-sizing:content-box;display:block;height:148px;margin:0;padding:0;overflow:auto;overflow-x:hidden}.ui-timepicker-standard{font-family:Verdana,Arial,sans-serif;font-size:1.1em;background-color:#fff;border:1px solid #aaa;color:#222;margin:0;padding:2px;height:155px!important}.ui-timepicker-standard a{border:1px solid transparent;color:#222;display:block;padding:.2em .4em;text-decoration:none}.ui-timepicker-standard .ui-state-hover{background-color:#dadada;border:1px solid #999;font-weight:400;color:#212121}.ui-timepicker-standard .ui-menu-item{margin:0;padding:0}.ui-timepicker-corners,.ui-timepicker-corners .ui-corner-all{-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px}.ui-timepicker-hidden{display:none}.ui-timepicker-no-scrollbar .ui-timepicker{border:none}.select2-container{box-sizing:border-box;display:inline-block;margin:0;width:90%!important;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir=rtl] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:#fff;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff}.select2-hidden-accessible{border:0!important;clip:rect(0 0 0 0)!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:700}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:700;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:700;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-search--inline,.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__placeholder{float:right}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid #000 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple,.select2-container--default.select2-container--open.select2-container--above .select2-selection--single{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple,.select2-container--default.select2-container--open.select2-container--below .select2-selection--single{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:0 0;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:#fff}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top,#fff 50%,#eee 100%);background-image:-o-linear-gradient(top,#fff 50%,#eee 100%);background-image:linear-gradient(to bottom,#fff 50%,#eee 100%);background-repeat:repeat-x}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:700;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top,#eee 50%,#ccc 100%);background-image:-o-linear-gradient(top,#eee 50%,#ccc 100%);background-image:linear-gradient(to bottom,#eee 50%,#ccc 100%);background-repeat:repeat-x}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:0 0;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top,#fff 0,#eee 50%);background-image:-o-linear-gradient(top,#fff 0,#eee 50%);background-image:linear-gradient(to bottom,#fff 0,#eee 50%);background-repeat:repeat-x}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top,#eee 50%,#fff 100%);background-image:-o-linear-gradient(top,#eee 50%,#fff 100%);background-image:linear-gradient(to bottom,#eee 50%,#fff 100%);background-repeat:repeat-x}.select2-container--classic .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:700;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice{float:right}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb}
includes/css/hide-login-form.css CHANGED
@@ -1,6 +1,3 @@
1
- .mo2fa_visible{
2
- top: 20px !important;
3
- }
4
  body.login div#login {
5
  display: block;
6
  }
 
 
 
1
  body.login div#login {
2
  display: block;
3
  }
includes/css/jquery-ui.min.css CHANGED
@@ -1 +1,4 @@
1
- * http: //jqueryui.com * Includes: core.css,.ui-helper-hidden,accordion.css,autocomplete.css,button.css,checkboxradio.css,controlgroup.css,dialog.css,draggable.css,menu.css,progressbar.css,resizable.css,selectable.css,selectmenu.css,slider.css,sortable.css,spinner.css,tabs.css,theme.css * To view and modify this theme,tooltip.css{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:after,.ui-helper-clearfix:before{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default;max-height:100px;overflow-y:auto;overflow-x:hidden}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-active,.ui-menu .ui-state-focus{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:active,.ui-button:hover,.ui-button:link,.ui-button:visited{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}button.ui-button::-moz-focus-inner,input.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup>.ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup>.ui-controlgroup-item.ui-visual-focus,.ui-controlgroup>.ui-controlgroup-item:focus{z-index:9999}.ui-controlgroup-vertical>.ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label+.ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label+.ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc(100% - 2.4em)}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:0 0;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw,.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-autohide .ui-resizable-handle,.ui-resizable-disabled .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url(data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==);height:100%;opacity:.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted #000}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:700;line-height:1.5;padding:2px .4em;margin:.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:0 0;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:0 0}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget button,.ui-widget input,.ui-widget select,.ui-widget textarea{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #c5c5c5}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:700}.ui-widget-header a{color:#333}.ui-button,.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,html .ui-button.ui-state-disabled:active,html .ui-button.ui-state-disabled:hover{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:400;color:#454545}.ui-button,.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button{color:#454545;text-decoration:none}.ui-button:focus,.ui-button:hover,.ui-state-focus,.ui-state-hover,.ui-widget-content .ui-state-focus,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-focus,.ui-widget-header .ui-state-hover{border:1px solid #ccc;background:#ededed;font-weight:400;color:#2b2b2b}.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,a.ui-button:focus,a.ui-button:hover{color:#2b2b2b;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px #5e9ed6}.ui-button.ui-state-active:hover,.ui-button:active,.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active{border:1px solid #003eff;background:#007fff;font-weight:400;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#003eff;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-checked{border:1px solid #dad55e;background:#fffa90}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:700}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:400}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-left,.ui-corner-tl,.ui-corner-top{border-top-left-radius:3px}.ui-corner-all,.ui-corner-right,.ui-corner-top,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bl,.ui-corner-bottom,.ui-corner-left{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-br,.ui-corner-right{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{-webkit-box-shadow:0 0 5px #666;box-shadow:0 0 5px #666}
 
 
 
1
+ * http://jqueryui.com
2
+ * Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
3
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&fwDefault=normal&cornerRadius=3px&bgColorHeader=e9e9e9&bgTextureHeader=flat&borderColorHeader=dddddd&fcHeader=333333&iconColorHeader=444444&bgColorContent=ffffff&bgTextureContent=flat&borderColorContent=dddddd&fcContent=333333&iconColorContent=444444&bgColorDefault=f6f6f6&bgTextureDefault=flat&borderColorDefault=c5c5c5&fcDefault=454545&iconColorDefault=777777&bgColorHover=ededed&bgTextureHover=flat&borderColorHover=cccccc&fcHover=2b2b2b&iconColorHover=555555&bgColorActive=007fff&bgTextureActive=flat&borderColorActive=003eff&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=fffa90&bgTextureHighlight=flat&borderColorHighlight=dad55e&fcHighlight=777620&iconColorHighlight=777620&bgColorError=fddfdf&bgTextureError=flat&borderColorError=f1a899&fcError=5f3f3f&iconColorError=cc0000&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=666666&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=5px&offsetTopShadow=0px&offsetLeftShadow=0px&cornerRadiusShadow=8px
4
+ * Copyright jQuery Foundation and other contributors; Licensed MIT */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:after,.ui-helper-clearfix:before{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default;max-height:100px;overflow-y:auto;overflow-x:hidden}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-active,.ui-menu .ui-state-focus{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:active,.ui-button:hover,.ui-button:link,.ui-button:visited{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}button.ui-button::-moz-focus-inner,input.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup>.ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup>.ui-controlgroup-item.ui-visual-focus,.ui-controlgroup>.ui-controlgroup-item:focus{z-index:9999}.ui-controlgroup-vertical>.ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label+.ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label+.ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc(100% - 2.4em)}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-next,.ui-datepicker .ui-datepicker-prev{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-next-hover,.ui-datepicker .ui-datepicker-prev-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-next span,.ui-datepicker .ui-datepicker-prev span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:700;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td a,.ui-datepicker td span{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:0 0;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw,.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-autohide .ui-resizable-handle,.ui-resizable-disabled .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url(data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==);height:100%;opacity:.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted #000}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:700;line-height:1.5;padding:2px .4em;margin:.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:0 0;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:0 0}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget button,.ui-widget input,.ui-widget select,.ui-widget textarea{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #c5c5c5}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:700}.ui-widget-header a{color:#333}.ui-button,.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,html .ui-button.ui-state-disabled:active,html .ui-button.ui-state-disabled:hover{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:400;color:#454545}.ui-button,.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button{color:#454545;text-decoration:none}.ui-button:focus,.ui-button:hover,.ui-state-focus,.ui-state-hover,.ui-widget-content .ui-state-focus,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-focus,.ui-widget-header .ui-state-hover{border:1px solid #ccc;background:#ededed;font-weight:400;color:#2b2b2b}.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,a.ui-button:focus,a.ui-button:hover{color:#2b2b2b;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px #5e9ed6}.ui-button.ui-state-active:hover,.ui-button:active,.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active{border:1px solid #003eff;background:#007fff;font-weight:400;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#003eff;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-checked{border:1px solid #dad55e;background:#fffa90}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:700}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:400}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-left,.ui-corner-tl,.ui-corner-top{border-top-left-radius:3px}.ui-corner-all,.ui-corner-right,.ui-corner-top,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bl,.ui-corner-bottom,.ui-corner-left{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-br,.ui-corner-right{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{-webkit-box-shadow:0 0 5px #666;box-shadow:0 0 5px #666}
includes/css/jquery.ui.css CHANGED
@@ -741,3 +741,178 @@ button.ui-button::-moz-focus-inner {
741
  filter: Alpha(Opacity=30); /* support: IE8 */
742
  border-radius: 8px;
743
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
741
  filter: Alpha(Opacity=30); /* support: IE8 */
742
  border-radius: 8px;
743
  }
744
+ .ui-datepicker {
745
+ width: 17em;
746
+ padding: .2em .2em 0;
747
+ display: none;
748
+ }
749
+ .ui-datepicker .ui-datepicker-header {
750
+ position: relative;
751
+ padding: .2em 0;
752
+ }
753
+ .ui-datepicker .ui-datepicker-prev,
754
+ .ui-datepicker .ui-datepicker-next {
755
+ position: absolute;
756
+ top: 2px;
757
+ width: 1.8em;
758
+ height: 1.8em;
759
+ }
760
+ .ui-datepicker .ui-datepicker-prev-hover,
761
+ .ui-datepicker .ui-datepicker-next-hover {
762
+ top: 1px;
763
+ }
764
+ .ui-datepicker .ui-datepicker-prev {
765
+ left: 2px;
766
+ }
767
+ .ui-datepicker .ui-datepicker-next {
768
+ right: 2px;
769
+ }
770
+ .ui-datepicker .ui-datepicker-prev-hover {
771
+ left: 1px;
772
+ }
773
+ .ui-datepicker .ui-datepicker-next-hover {
774
+ right: 1px;
775
+ }
776
+ .ui-datepicker .ui-datepicker-prev span,
777
+ .ui-datepicker .ui-datepicker-next span {
778
+ display: block;
779
+ position: absolute;
780
+ left: 50%;
781
+ margin-left: -8px;
782
+ top: 50%;
783
+ margin-top: -8px;
784
+ }
785
+ .ui-datepicker .ui-datepicker-title {
786
+ margin: 0 2.3em;
787
+ line-height: 1.8em;
788
+ text-align: center;
789
+ }
790
+ .ui-datepicker .ui-datepicker-title select {
791
+ font-size: 1em;
792
+ margin: 1px 0;
793
+ }
794
+ .ui-datepicker select.ui-datepicker-month,
795
+ .ui-datepicker select.ui-datepicker-year {
796
+ width: 45%;
797
+ }
798
+ .ui-datepicker table {
799
+ width: 100%;
800
+ font-size: .9em;
801
+ border-collapse: collapse;
802
+ margin: 0 0 .4em;
803
+ }
804
+ .ui-datepicker th {
805
+ padding: .7em .3em;
806
+ text-align: center;
807
+ font-weight: bold;
808
+ border: 0;
809
+ }
810
+ .ui-datepicker td {
811
+ border: 0;
812
+ padding: 1px;
813
+ }
814
+ .ui-datepicker td span,
815
+ .ui-datepicker td a {
816
+ display: block;
817
+ padding: .2em;
818
+ text-align: right;
819
+ text-decoration: none;
820
+ }
821
+ .ui-datepicker .ui-datepicker-buttonpane {
822
+ background-image: none;
823
+ margin: .7em 0 0 0;
824
+ padding: 0 .2em;
825
+ border-left: 0;
826
+ border-right: 0;
827
+ border-bottom: 0;
828
+ }
829
+ .ui-datepicker .ui-datepicker-buttonpane button {
830
+ float: right;
831
+ margin: .5em .2em .4em;
832
+ cursor: pointer;
833
+ padding: .2em .6em .3em .6em;
834
+ width: auto;
835
+ overflow: visible;
836
+ }
837
+ .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
838
+ float: left;
839
+ }
840
+
841
+ /* with multiple calendars */
842
+ .ui-datepicker.ui-datepicker-multi {
843
+ width: auto;
844
+ }
845
+ .ui-datepicker-multi .ui-datepicker-group {
846
+ float: left;
847
+ }
848
+ .ui-datepicker-multi .ui-datepicker-group table {
849
+ width: 95%;
850
+ margin: 0 auto .4em;
851
+ }
852
+ .ui-datepicker-multi-2 .ui-datepicker-group {
853
+ width: 50%;
854
+ }
855
+ .ui-datepicker-multi-3 .ui-datepicker-group {
856
+ width: 33.3%;
857
+ }
858
+ .ui-datepicker-multi-4 .ui-datepicker-group {
859
+ width: 25%;
860
+ }
861
+ .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
862
+ .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
863
+ border-left-width: 0;
864
+ }
865
+ .ui-datepicker-multi .ui-datepicker-buttonpane {
866
+ clear: left;
867
+ }
868
+ .ui-datepicker-row-break {
869
+ clear: both;
870
+ width: 100%;
871
+ font-size: 0;
872
+ }
873
+
874
+ /* RTL support */
875
+ .ui-datepicker-rtl {
876
+ direction: rtl;
877
+ }
878
+ .ui-datepicker-rtl .ui-datepicker-prev {
879
+ right: 2px;
880
+ left: auto;
881
+ }
882
+ .ui-datepicker-rtl .ui-datepicker-next {
883
+ left: 2px;
884
+ right: auto;
885
+ }
886
+ .ui-datepicker-rtl .ui-datepicker-prev:hover {
887
+ right: 1px;
888
+ left: auto;
889
+ }
890
+ .ui-datepicker-rtl .ui-datepicker-next:hover {
891
+ left: 1px;
892
+ right: auto;
893
+ }
894
+ .ui-datepicker-rtl .ui-datepicker-buttonpane {
895
+ clear: right;
896
+ }
897
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button {
898
+ float: left;
899
+ }
900
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
901
+ .ui-datepicker-rtl .ui-datepicker-group {
902
+ float: right;
903
+ }
904
+ .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
905
+ .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
906
+ border-right-width: 0;
907
+ border-left-width: 1px;
908
+ }
909
+
910
+ /* Icons */
911
+ .ui-datepicker .ui-icon {
912
+ display: block;
913
+ text-indent: -99999px;
914
+ overflow: hidden;
915
+ background-repeat: no-repeat;
916
+ left: .5em;
917
+ top: .3em;
918
+ }
includes/css/popup.css CHANGED
@@ -24,7 +24,7 @@
24
  height: 80%;
25
  display: block;
26
  background: white;
27
- border: 2px solid #2271b1;
28
  border-radius: 20px;
29
  padding: 1rem;
30
  padding-top: 0px;
@@ -36,7 +36,7 @@
36
  }
37
 
38
  #mo_popup_id input[type="radio"]:checked + label {
39
- background: #2271b1;
40
  color: hsla(215, 0%, 100%, 1);
41
  &::after {
42
  color: hsla(215, 5%, 25%, 1);
24
  height: 80%;
25
  display: block;
26
  background: white;
27
+ border: 2px solid #20b2aa;
28
  border-radius: 20px;
29
  padding: 1rem;
30
  padding-top: 0px;
36
  }
37
 
38
  #mo_popup_id input[type="radio"]:checked + label {
39
+ background: #20b2aa;
40
  color: hsla(215, 0%, 100%, 1);
41
  &::after {
42
  color: hsla(215, 5%, 25%, 1);
includes/css/style_settings.css CHANGED
@@ -1,10 +1,3 @@
1
-
2
-
3
- :root {
4
- --mo2f-theme-color: #2271b1;
5
- --white: #ffffff;
6
- }
7
-
8
  .mo2f_miniAuthApp {
9
  padding: 26px;
10
  font-size: 18px;
@@ -12,17 +5,17 @@
12
  width: 100%;
13
  height: 100%;
14
  margin:-10px;
15
- background-color:#2271b130;
16
  display:block;
17
  }
18
  .mo2f_miniAuthApp:hover {
19
- background: #2271b19e;
20
  }
21
  input[name = 'miniOrangeAuthenticator'] {
22
  visibility:hidden;
23
  }
24
  input[name = 'miniOrangeAuthenticator']:checked + .mo2f_miniAuthApp{
25
- background: #2271b1db;
26
  }
27
  .mo2fa-addons-preview-alignment{
28
  text-align: right;
@@ -123,8 +116,6 @@
123
  text-decoration: none;
124
  cursor: pointer;
125
  }
126
-
127
-
128
  .mo-2fa-help-button-text {
129
  cursor: pointer;
130
  font-size: 16px;
@@ -138,7 +129,6 @@
138
  border-radius: 15px;
139
  padding: 9px;
140
  transition: all 3s ease-in-out;
141
- display: none;
142
  }
143
  .mo_support_input_label {
144
  color: #999;
@@ -219,6 +209,10 @@
219
  padding: 0px;
220
  }
221
 
 
 
 
 
222
  .mo-2fa-mail-button
223
  {
224
  bottom: 2.5%;
@@ -303,8 +297,8 @@
303
  }
304
  .mo2f_2fa_plan_title
305
  {
306
- background-color: var(--mo2f-theme-color);
307
- border: 2px solid var(--mo2f-theme-color);
308
  }
309
  .mo2f_padding_style
310
  {
@@ -329,7 +323,7 @@
329
  .mo2f_tooltip .mo2f_tooltiptext {
330
  visibility: hidden;
331
  width: 200px;
332
- background-color: var(--mo2f-theme-color);
333
  color: white;
334
  text-align: center;
335
  border-radius: 6px;
@@ -406,15 +400,15 @@
406
  border-radius: 50em;
407
  border-width: 1px;
408
  border-style: solid;
409
- border-color: var(--mo2f-theme-color);
410
  border-image: initial;
411
  }
412
- .mo2f_upgrade_toggle_lable
413
  {
414
  position: relative;
415
  z-index: 1;
416
  display: inline-block;
417
- float:left;
418
  width: 210px;
419
  height: 44px;
420
  line-height: 40px;
@@ -645,7 +639,7 @@
645
  background-color: white;
646
  }
647
  .mo_wpns_button_info_tab {
648
- background-color: var(--mo2f-theme-color);
649
  border: none;
650
  color: white;
651
  height: 1.8em;
@@ -811,7 +805,7 @@
811
  font-size: 103%;
812
  margin-top: 20px;
813
  margin-bottom: 20px;
814
- border: solid 1px var(--mo2f-theme-color);
815
  background-color: white;
816
  color: black;
817
  width :162px;
@@ -820,16 +814,16 @@
820
 
821
  /* Change background color of buttons on hover */
822
  .mo_wpns_tab button:hover {
823
- background-color: var(--mo2f-theme-color);
824
  color: white;
825
  }
826
 
827
  /* Create an active/current tablink class */
828
  .mo_wpns_tab button.active {
829
- background-color: var(--mo2f-theme-color);
830
  color: white;
831
  width: 20%;
832
- border: solid 1px var(--mo2f-theme-color);
833
  /*border-bottom: none;*/
834
  box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
835
  font-weight: 600;
@@ -843,7 +837,7 @@
843
  border-top: none;
844
  }
845
  .mo_wpsn_button {
846
- background-color: var(--mo2f-theme-color); /* Green */
847
  border: none;
848
  color: white;
849
  padding: 11px 32px;
@@ -866,18 +860,13 @@
866
  padding:0px 24px 10px 10px;
867
  min-height:220px;
868
  }
869
- .mo_wpns_waf_divided_layout_tab{
870
  margin-bottom: 10px;
871
  margin-top: 10px;
872
- height: 200px;
873
  width:100%;
874
  float:left;
875
 
876
- }
877
- .mo_wpns_offer_image{
878
- margin-bottom: 10px;
879
- margin-top: 10px;
880
- float:left;
881
 
882
  }
883
  .mo_wpns_divided_layout{
@@ -886,6 +875,7 @@
886
  height:auto;
887
  width:100%;
888
  float:left;
 
889
 
890
  }
891
  .mo_wpns_divided_layout_2
@@ -906,7 +896,7 @@
906
  min-height: 222px;
907
  overflow: hidden;
908
  text-align: center;
909
- border-top: 6px solid var(--mo2f-theme-color);
910
  box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
911
  }
912
  .mo_wpns_small_layout{
@@ -918,23 +908,18 @@
918
  margin: 10px;
919
  padding: 5px 20px;
920
  background-color: #FFFFFF;
921
- border: 1px solid #CCCCCC;
922
  float: left;
923
- width: 320px;
924
  margin-left: 1%;
925
- min-height: 280px;
926
- overflow:auto;
927
  text-align: center;
928
- border-top: 6px solid var(--mo2f-theme-color);
929
- /* */
930
  /*font-style: italic;*/
931
 
932
  }
933
-
934
- .mo_wpns_small_layout:hover{
935
- box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
936
- }
937
-
938
  .mo_wpns_method_layout{
939
  margin: 10px;
940
  padding: 5px 20px;
@@ -946,7 +931,7 @@
946
  min-height: 222px;
947
  overflow: hidden;
948
  text-align: center;
949
- border-top: 6px solid var(--mo2f-theme-color);
950
  box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
951
  /*font-style: italic;*/
952
 
@@ -959,40 +944,34 @@
959
  /*border: 1px solid #CCCCCC;*/
960
  float: left;
961
  width: 47%;
962
- margin-left: 1%;
963
- height: inherit;
964
  text-align: center;
965
-
966
  }
967
 
968
 
969
  .mo_wpns_small_3_layout
970
  {
971
- display: flex;
972
- align-items: center;
973
- flex-direction: column;
974
- justify-content: top;
975
  width: 64%;
976
- height: inherit;
977
  text-align: center;
978
- margin-top: 10px;
979
-
980
- flex-wrap: wrap;
981
  }
982
  .mo_wpns_line
983
  {
984
- border: 1.2px solid var(--mo2f-theme-color);
985
  }
986
  .mo_wpns_dashboard_layout
987
  {
988
  margin: 10px;
 
 
 
989
  float: left;
990
- width: 100%;
991
- height: 200px;
992
- margin-left: 3%;
993
- background-color: #ffffff;
994
- width: 94.5%;
995
- /* border: 2px solid var(--mo2f-theme-color); */
996
  }
997
  .mo_wpns_inside_dashboard_layout
998
  {
@@ -1005,7 +984,7 @@
1005
  height: 100px;
1006
  margin-left: 1%;
1007
  font-weight: 600;
1008
- border-top: 2px solid var(--mo2f-theme-color);
1009
  /*box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);*/
1010
  }
1011
  .mo_wpns_sub_dashboards_layout
@@ -1013,15 +992,13 @@
1013
  margin-top: 10px;
1014
  padding: 5px 0px;
1015
  background-color: #FFFFFF;
1016
- border: 1px solid var(--mo2f-theme-color);
1017
  float: left;
1018
  width: 34%;
1019
- height: 150px;
1020
  margin-left: 1%;
1021
  font-weight: 600;
1022
- border-top: 4px solid var(--mo2f-theme-color);
1023
- text-align: center;
1024
-
1025
  /*box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);*/
1026
  /*font-style: italic;*/
1027
  /*box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);*/
@@ -1031,15 +1008,14 @@
1031
  margin-top: 10px;
1032
  padding: 5px 0px;
1033
  background-color: #FFFFFF;
1034
- border: 1px solid var(--mo2f-theme-color);
1035
  float: left;
1036
  width: 45%;
1037
- min-width: 50px;
1038
- min-height: 50px;
1039
  overflow: hidden;
1040
  margin-left: 1%;
1041
  font-weight: 600;
1042
- border-top: 3px solid var(--mo2f-theme-color);
1043
  /*box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);*/
1044
  /*font-style: italic;*/
1045
  }
@@ -1114,7 +1090,7 @@ h2.mo_wpns_nav-tab-wrapper
1114
  margin-left: 0.3%;
1115
  float: left;
1116
  text-align: center;
1117
- border: 2px solid var(--mo2f-theme-color);
1118
  box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
1119
  }
1120
 
@@ -1126,7 +1102,7 @@ h2.mo_wpns_nav-tab-wrapper
1126
  margin-left: 1%;
1127
  float: left;
1128
  /*text-align: center;*/
1129
- border: 2px solid var(--mo2f-theme-color);
1130
  box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
1131
  }
1132
  .mo_wpns_settings_textarea
@@ -1166,7 +1142,7 @@ h2.mo_wpns_nav-tab-wrapper
1166
  margin: 10px;
1167
  padding: 5px 20px;
1168
  background-color: #FFFFFF;
1169
- border: 2px solid var(--mo2f-theme-color);
1170
  float: left;
1171
  width: 593px;
1172
  min-height: 200px;
@@ -1187,20 +1163,21 @@ h2.mo_wpns_nav-tab-wrapper
1187
  margin: 5px;
1188
  margin-left: 0px;
1189
  padding: 5px 20px 30px 20px;
1190
- background-color: #FFFFFF;
1191
- border: 1px solid #CCCCCC !important;
1192
- float: left;
1193
- width: 90%;
1194
- overflow: hidden;
1195
- text-align: left;
1196
- box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
 
1197
  }
1198
  .mo_wpns_setting_layout_scan
1199
  {
1200
  margin: 5px;
1201
  padding: 5px 20px 30px 20px;
1202
  background-color: #FFFFFF;
1203
- border: 1px solid #CCCCCC;
1204
  float: left;
1205
  width: 80%;
1206
  margin-left: 10%;
@@ -1239,7 +1216,7 @@ h2.mo_wpns_nav-tab-wrapper
1239
 
1240
  /* Create an active/current tablink class */
1241
  .mo_wpns_sub_nav_tab button.mo_wpns_sub_nav_active {
1242
- background-color: var(--mo2f-theme-color);
1243
  color: white;
1244
  }
1245
 
@@ -1278,12 +1255,12 @@ h2.mo_wpns_nav-tab-wrapper
1278
  width:23.3%;
1279
  float:left;
1280
  background-color: white;
1281
- border-top: 4px solid var(--mo2f-theme-color);
1282
  box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
1283
  font-style: italic;
1284
  }
1285
  .mo_wpns_button {
1286
- background-color: var(--mo2f-theme-color); /* Green */
1287
  border: none;
1288
  color: white;
1289
  padding: 11px 28px;
@@ -1314,7 +1291,7 @@ h2.mo_wpns_nav-tab-wrapper
1314
 
1315
 
1316
  .mo_wpns_dashboard_button {
1317
- background-color: var(--mo2f-theme-color); /* Green */
1318
  border: none;
1319
  color: white;
1320
  padding-top: 10px;
@@ -1349,7 +1326,7 @@ h2.mo_wpns_nav-tab-wrapper
1349
  }*/
1350
  .mo_wpns_upgrade_page_button
1351
  {
1352
- border: 2px solid #2a80ca;
1353
  background-color: #2a80ca;
1354
  color: white;
1355
  padding: 12px 0px;
@@ -1418,7 +1395,7 @@ h2.mo_wpns_nav-tab-wrapper
1418
  min-height: 222px;
1419
  overflow: hidden;
1420
  text-align: center;
1421
- border-top: 6px solid var(--mo2f-theme-color);
1422
  box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
1423
  }
1424
 
@@ -1433,7 +1410,7 @@ h2.mo_wpns_nav-tab-wrapper
1433
  height: 220px;
1434
  overflow: hidden;
1435
  text-align: center;
1436
- /*border-top: 6px solid var(--mo2f-theme-color);*/
1437
  /*box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);*/
1438
  }
1439
 
@@ -1496,7 +1473,7 @@ h2.mo_wpns_nav-tab-wrapper
1496
  background-color: #dddddd;
1497
  }
1498
  .mo_wpns_free_feature_button {
1499
- /*background-color: green; /* Green */
1500
  border: none;
1501
  color: black;
1502
  padding: 11px 12px;
@@ -1567,7 +1544,15 @@ h2.mo_wpns_nav-tab-wrapper
1567
  width: 100%;
1568
 
1569
  }
 
 
 
 
 
 
 
1570
 
 
1571
  .mo_wpns_small_layout{
1572
  /*background-color:#FFFFFF;
1573
  border:1px solid #CCCCCC;
@@ -1586,7 +1571,7 @@ h2.mo_wpns_nav-tab-wrapper
1586
  text-align: center;
1587
  box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
1588
  /*font-style: italic;*/
1589
- border-top: 6px solid var(--mo2f-theme-color);
1590
  }
1591
 
1592
  .mo_wpns_small_layout_test{
@@ -1610,7 +1595,39 @@ h2.mo_wpns_nav-tab-wrapper
1610
 
1611
  }
1612
 
1613
- /* .mo_wpns_inside_dashboard_layout
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1614
  {
1615
  margin-top: 10px;
1616
  padding: 5px 0px;
@@ -1619,10 +1636,10 @@ h2.mo_wpns_nav-tab-wrapper
1619
  float: left;
1620
  width: 18.5%;
1621
  height: 100px;
1622
- border-top: 2px solid var(--mo2f-theme-color);
1623
  font-weight: 600;
1624
  /*box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);*/
1625
- } */
1626
 
1627
  /*.wpns_font_size {
1628
  font-size: 30px;
@@ -1652,7 +1669,7 @@ h2.mo_wpns_nav-tab-wrapper
1652
 
1653
  .mo_wpns_dashboard_button
1654
  {
1655
- background-color: var(--mo2f-theme-color); /* Green */
1656
  border: none;
1657
  color: white;
1658
  padding-top: 10px;
@@ -1685,16 +1702,52 @@ h2.mo_wpns_nav-tab-wrapper
1685
  text-align: center;
1686
  color: black;
1687
  box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
 
 
 
 
 
 
 
 
 
 
1688
  }
 
 
 
 
 
 
 
 
 
 
 
 
1689
 
1690
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1691
  .mo_wpns_container{
1692
  /*padding:10px;*/
1693
  width: 100%;
1694
  /*background-color: yellow;*/
1695
  height: auto;
1696
  }
1697
-
1698
  .mo_wpns_details_layout
1699
  {
1700
  margin:10px;
@@ -1710,7 +1763,7 @@ h2.mo_wpns_nav-tab-wrapper
1710
  float:left;
1711
  border: 1px solid;
1712
  background-color: white;
1713
- border-top: 4px solid var(--mo2f-theme-color);
1714
  box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
1715
  font-style: italic;
1716
  }
@@ -1724,22 +1777,35 @@ h2.mo_wpns_nav-tab-wrapper
1724
  font-size: 103%;
1725
  margin-top: 20px;
1726
  margin-bottom: 20px;
1727
- border: solid 1px var(--mo2f-theme-color);
1728
  background-color: white;
1729
  color: black;
1730
  width: 129px;
1731
  height: 55%;
1732
  }
1733
  .mo_wpns_tab button.active {
1734
- background-color: var(--mo2f-theme-color);
1735
  color: white;
1736
  width: 130px;
1737
- border: solid 1px var(--mo2f-theme-color);
1738
  /*border-bottom: none;*/
1739
  box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
1740
  font-weight: 600;
1741
  }
1742
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1743
  .mo_wpns_third_layout{
1744
  margin-top: 10px;
1745
  padding: 5px 20px;
@@ -1770,7 +1836,7 @@ h2.mo_wpns_nav-tab-wrapper
1770
  margin: 10px;
1771
  padding: 5px 20px;
1772
  background-color: #FFFFFF;
1773
- border: 2px solid var(--mo2f-theme-color);
1774
  float: left;
1775
  width: 90%;
1776
  min-height: 200px;
@@ -1778,9 +1844,7 @@ h2.mo_wpns_nav-tab-wrapper
1778
  text-align: center;
1779
  box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
1780
  }
1781
- .nav-tab{
1782
- cursor: pointer;
1783
- }
1784
  h1 .nav-tab, a .nav-tab{
1785
  font-size : auto;
1786
  background-color: none; /* Green
@@ -1793,6 +1857,7 @@ h2.mo_wpns_nav-tab-wrapper
1793
 
1794
  font-size: 20px;
1795
  margin: 5px 0px;
 
1796
  /*border-radius: 23px;*/
1797
  width: 07.5%;
1798
  border: 1px solid gray;
@@ -1804,20 +1869,20 @@ h2.mo_wpns_nav-tab-wrapper
1804
  /*background-color: #4CAF50;*/
1805
  font-size: 150%;
1806
  box-shadow: 3px 4px 3px #888888;
1807
- background-color: var(--mo2f-theme-color);
1808
  color: white;
1809
 
1810
  }
1811
  h1 .nav-tab:hover , a .nav-tab:hover
1812
  {
1813
- background-color: var(--mo2f-theme-color);
1814
  color: white;
1815
  /*border-bottom: none;*/
1816
  }
1817
  h1 .nav-tab-active:hover , a .nav-tab-active:hover
1818
  {
1819
  background-color: white;
1820
- color:var(--mo2f-theme-color);
1821
  }
1822
  .mo_wpns_sub_nav_tab button {
1823
  background-color: inherit;
@@ -1836,7 +1901,21 @@ h2.mo_wpns_nav-tab-wrapper
1836
  color: black;
1837
  width :210px;
1838
  }
 
 
 
 
 
 
 
 
 
 
1839
 
 
 
 
 
1840
  .mo_wpns_products-dollar-amount {
1841
  color: #797878;
1842
  font-weight: 400;
@@ -1862,7 +1941,7 @@ h2.mo_wpns_nav-tab-wrapper
1862
  -o-transition: border .2s ease-in-out;
1863
  transition: border .2s ease-in-out
1864
  }
1865
-
1866
 
1867
 
1868
  .mo_wpns_table_layout td strong {
@@ -1882,7 +1961,7 @@ h2.mo_wpns_nav-tab-wrapper
1882
  }
1883
 
1884
  .fixed {
1885
- width: 75% !important;
1886
  }
1887
  .mo_wpns_table_textbox {
1888
  width:100%;
@@ -2018,57 +2097,20 @@ h2.mo_wpns_nav-tab-wrapper
2018
 
2019
  .test_auth_button
2020
  {
2021
- margin: auto;
2022
  text-align: center;
2023
- align-items: center;
2024
-
2025
  }
2026
 
2027
  .mo2f_table_layout
2028
  {
2029
- width: 90%;
2030
- background-color: #FFFFFF;
2031
- border: 1px solid #CCCCCC;
2032
- padding: 25px 50px 25px 50px;
2033
- margin: 10px;
2034
- }
2035
-
2036
- .mo2f_wpns_container
2037
- {
2038
- position: absolute;
2039
- width: 90%;
2040
- margin: 10px;
2041
- }
2042
-
2043
-
2044
-
2045
-
2046
- .mo2f_table_divide_border
2047
- {
2048
- padding: 10px;
2049
- }
2050
-
2051
- .mo2f_flexbox
2052
- {
2053
- display: flex;
2054
- justify-content: space-between;
2055
- }
2056
-
2057
- .mo2f_support_flex
2058
- {
2059
- flex: 0 0 25%;
2060
- }
2061
- .mo2f_table_layout_support
2062
- {
2063
  margin: 10px;
2064
- border: 1px solid #053742;
2065
- text-align: center;
2066
- padding: 10px;
2067
- background-color: #dcecff;
2068
-
2069
  }
2070
 
2071
-
2072
  .ip_lookup_desc,.file_backup_desc{
2073
  background-color:#E6E6E6;
2074
  width:100%;
@@ -2443,17 +2485,22 @@ a{
2443
  font-weight: bold;
2444
  }
2445
 
2446
-
2447
-
 
 
 
2448
  .wpns_font_shown {
2449
- padding-top: 20%;
2450
  font-size: 70px;
 
 
 
2451
  }
2452
 
2453
  /* Added for malware */
2454
  .malwaresummarydiv{
2455
  display: inline-flex;
2456
- width: 90%;
2457
  }
2458
  .malwarescandiv{
2459
  border-radius: 4px;
@@ -2512,6 +2559,11 @@ font-size: 70px;
2512
  line-height: 20px; /* To center it vertically */
2513
  color: white;
2514
  }
 
 
 
 
 
2515
  .mo_wpns_lightgreen{
2516
  color:rgb(128, 173, 128);
2517
  }
@@ -2554,7 +2606,7 @@ font-size: 70px;
2554
  width: 50%;
2555
  }
2556
  .mo_wpns_scan_button {
2557
- background-color: var(--mo2f-theme-color); /* Green */
2558
  border: none;
2559
  color: white;
2560
  padding: 5px 5px;
@@ -2568,7 +2620,7 @@ font-size: 70px;
2568
  transition-duration: 0.4s;
2569
  }
2570
  .mo_wpns_scan_modal_button {
2571
- background-color: var(--mo2f-theme-color); /* Green */
2572
  border: none;
2573
  color: white;
2574
  padding: 5px 80px;
@@ -2582,7 +2634,7 @@ font-size: 70px;
2582
  transition-duration: 0.4s;
2583
  }
2584
  .mo_wpns_deep_scan_button {
2585
- background-color: var(--mo2f-theme-color); /* Green */
2586
  border: none;
2587
  color: white;
2588
  padding: 5px 5px;
@@ -2604,18 +2656,18 @@ font-size: 70px;
2604
  {
2605
  padding: 5px;
2606
  background-color: #FFFFFF;
2607
- border: 1px solid var(--mo2f-theme-color);
2608
  width: 23.5%;
2609
- border-top: 4px solid var(--mo2f-theme-color);
2610
  min-height: 180px;
2611
  }
2612
  .mo_wpns_malwarescandiv
2613
  {
2614
  padding: 5px;
2615
  background-color: #FFFFFF;
2616
- border: 1px solid var(--mo2f-theme-color);
2617
  width: 50%;
2618
- border-top: 4px solid var(--mo2f-theme-color);
2619
  }
2620
 
2621
 
@@ -2800,7 +2852,7 @@ font-size: 70px;
2800
  margin: 10px;
2801
  float: left;
2802
  text-align: center;
2803
- border: 2px solid var(--mo2f-theme-color);
2804
  box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
2805
  }
2806
 
@@ -2935,7 +2987,7 @@ a.mo2f_thumbnail:hover, a.mo2f_thumbnail:focus, a.mo2f_thumbnail.active {
2935
  }
2936
 
2937
  .mo2f_thumbnail_method_desc{
2938
- padding:10px;
2939
  font-size:17px;
2940
  }
2941
 
@@ -2979,6 +3031,20 @@ a.mo2f_thumbnail:hover, a.mo2f_thumbnail:focus, a.mo2f_thumbnail.active {
2979
  .mo2fa_see_preview{
2980
  font-size: 13px;
2981
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2982
  .mo2f_configure_set_2_factor:hover {
2983
  font-weight: bold;
2984
  font-size: 14px;
@@ -3095,11 +3161,9 @@ a.mo2f_thumbnail:hover, a.mo2f_thumbnail:focus, a.mo2f_thumbnail.active {
3095
  color: #1a5a97!important;
3096
  font-weight: 600!important;
3097
  }
3098
-
3099
- .mo2f_kba_ques:hover {
3100
  color: #1a5a97!important;
3101
- font-weight: 600 !important;
3102
-
3103
  }
3104
 
3105
  .mo2f_kba_table {
@@ -3192,17 +3256,7 @@ a.mo2f_thumbnail:hover, a.mo2f_thumbnail:focus, a.mo2f_thumbnail.active {
3192
  text-align: center;
3193
  padding: 11px;
3194
  }
3195
- .mo2f_send_query{
3196
- margin-bottom:3%!important;
3197
- width: 18em;
3198
- }
3199
- .mo2f_raise_support_ticket{
3200
- margin-bottom:3%!important;
3201
- background-color: #479814b5!important;
3202
- color: white!important;
3203
- width: 18em;
3204
- border-color: white !important;
3205
- }
3206
  .mo2f_vertical-submenu a:hover {
3207
  background-color: #ccc;
3208
  }
@@ -3281,7 +3335,7 @@ a.mo2f_thumbnail:hover, a.mo2f_thumbnail:focus, a.mo2f_thumbnail.active {
3281
  margin: 0px 0px;
3282
  cursor: pointer;
3283
  width: 1200px;
3284
- border: 1px solid var(--mo2f-theme-color);
3285
 
3286
  }
3287
  .mo_subtab_flex-container{
@@ -3301,25 +3355,25 @@ a.mo2f_thumbnail:hover, a.mo2f_thumbnail:focus, a.mo2f_thumbnail.active {
3301
  margin: 0px 0px;
3302
  cursor: pointer;
3303
  width: 1200px;
3304
- border: 1px solid var(--mo2f-theme-color);
3305
  }
3306
 
3307
  .mo_wpns_sub_scanmode
3308
  {
3309
  padding: 5px;
3310
  background-color: #FFFFFF;
3311
- border: 1px solid var(--mo2f-theme-color);
3312
  width: 23.5%;
3313
- border-top: 4px solid var(--mo2f-theme-color);
3314
  min-height: 180px;
3315
  }
3316
  .mo_wpns_sub_scansummary
3317
  {
3318
  padding: 5px;
3319
  background-color: #FFFFFF;
3320
- border: 1px solid var(--mo2f-theme-color);
3321
  width: 23.5%;
3322
- border-top: 4px solid var(--mo2f-theme-color);
3323
  height: 120px;
3324
  }
3325
  .mo_wpns_scan_summary_text
@@ -3332,9 +3386,9 @@ a.mo2f_thumbnail:hover, a.mo2f_thumbnail:focus, a.mo2f_thumbnail.active {
3332
  {
3333
  padding: 5px;
3334
  background-color: #FFFFFF;
3335
- border: 1px solid var(--mo2f-theme-color);
3336
  width: 50%;
3337
- border-top: 4px solid var(--mo2f-theme-color);
3338
  }
3339
 
3340
  .mo_scan_modal {
@@ -3492,7 +3546,7 @@ a.mo2f_thumbnail:hover, a.mo2f_thumbnail:focus, a.mo2f_thumbnail.active {
3492
  }
3493
  .mo2f_addons_alignment
3494
  {
3495
- color:var(--mo2f-theme-color);
3496
  font-size: large;
3497
  float: left;
3498
  margin-right: 5px;
@@ -3546,7 +3600,17 @@ a.mo2f_thumbnail:hover, a.mo2f_thumbnail:focus, a.mo2f_thumbnail.active {
3546
  color: #ffffff;
3547
  margin-left: 15px;
3548
  }
3549
-
 
 
 
 
 
 
 
 
 
 
3550
  /* The switch - the box around the slider */
3551
  .switch {
3552
  position: relative;
@@ -3610,6 +3674,27 @@ input:checked + .slider:before {
3610
  border-radius: 50%;
3611
  }
3612
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3613
  .mo_wpns_upgrade_page_2fa_ns_styles
3614
  {
3615
  background-color: #7ccbc7;
@@ -3799,246 +3884,67 @@ input:checked + .slider:before {
3799
 
3800
  .mo2f_offer_main_div
3801
  {
3802
- display:flex;
3803
- background-image : url("christmas.gif");
3804
- background-repeat: repeat;
3805
- margin-top: -2.5%;
3806
- height:auto;
3807
- width: inherit;
3808
- border-radius: 6px;
3809
- padding-top: 1%;
3810
- padding-bottom: 3%;
3811
- justify-content: space-around;
3812
  }
3813
 
3814
  .mo2f_offer_first_section
3815
  {
3816
- clear: both;
3817
- display: block;
3818
- width:23%;
3819
- height: auto;
3820
- margin:0px;
3821
- padding-left: 3%;
3822
- text-align: center;
3823
- padding-top: 30px;
3824
- }
3825
- @media screen and (max-width: 768px) {
3826
- .mo2f_offer_first_section {
3827
- display:none;
3828
- }
3829
- .mo2f_offer_valid{
3830
- display: none !important;
3831
- }
3832
- .mo2f_offer_timer{
3833
- display:none !important;
3834
- }
3835
- .mo2f_offer_contact_us
3836
- {
3837
- font-size: 120% !important;
3838
- border-radius: 30px;
3839
- border: 1px solid #ea5ab7a1;
3840
- color: white;
3841
- padding: 4% 8%;
3842
- background: #ea5ab7a1;
3843
- text-decoration: none;
3844
- }
3845
-
3846
-
3847
- }
3848
 
3849
- .mo2f_offer_christmas{
3850
- letter-spacing: 5px;
3851
- font-size: 250%;
3852
- width: 83%;
3853
- color: #fffafa;
3854
- -webkit-text-stroke: 2px #ffff;
3855
- font-family: sans-serif;
3856
- margin: 0%;
3857
- }
3858
- .mo2f_offer_cyber{
3859
- font-size: 200%;
3860
- margin:0px;
3861
- margin-left: -18%;
3862
- letter-spacing: 6px;
3863
- color: white;
3864
- margin-top: 2%;
3865
- font-weight: bold;
3866
  }
3867
- .mo2fa_hr_line{
3868
- width: 83%;
3869
- line-height: 1%;
3870
- margin: 7px;
3871
- }
3872
- .mo2fa_hr_line span{
3873
- background: #fe161600;
3874
- padding: 0 10px;
3875
- color: #ffffff;
3876
- font-weight: bold;
3877
- font-size: 30px;
3878
- }
3879
-
3880
- .mo2f_offer_middle_section
3881
  {
3882
- width:50%;
3883
- color: white; /*if no support for background-clip*/
3884
- float: left;
3885
- }
 
3886
 
 
3887
  .mo2f_offer_get_upto
3888
  {
3889
- text-align:center;
3890
- margin:0px;
3891
- margin-bottom: -2%;
3892
- margin-top: 4.5%;
3893
- color: white;
3894
- font-size: 200%;
3895
  }
3896
- .mo2f_offer_valid{
3897
- text-align: center;
3898
- font-size: 165%;
3899
- margin:0px;
3900
- }
3901
- .mo2f_offer_timer{
3902
- text-align: center;
3903
- margin:0px;
3904
- font-size: 150%;
3905
- font-weight:bold;
3906
  }
3907
 
3908
  .mo2f_offer_last_section
3909
  {
3910
- width:25%;
3911
- padding-top: 5%;
3912
- float: right;
3913
- text-align: center;
3914
  }
3915
 
3916
  .mo2f_offer_contact_us
3917
  {
3918
- font-size: 170%;
3919
- border-radius: 30px;
3920
- border: 1px solid #ffff;
 
3921
  color: white;
3922
- padding: 4% 8%;
3923
- background: #ffffff94;
3924
- font-weight: 500;
3925
  text-decoration: none;
3926
  }
3927
 
3928
- .mo2f_banner_never_show_again{
3929
- color: white;
3930
-
3931
- font-size: 15px;
3932
- float: right;
3933
- margin-top: -70px;
3934
- margin-right: 10px;
3935
- border:none;
3936
- }
3937
-
3938
- .mo2f_close
3939
- {
3940
- background:none;
3941
- }
3942
-
3943
- .mo2f_cross
3944
- {
3945
- background:#d69494;
3946
- padding: 0px 4px;
3947
- font-weight: bold;
3948
- cursor: pointer;
3949
- }
3950
-
3951
- .mo2f_offer_contact_us:hover, .mo2f_cross:hover
3952
  {
3953
- color: white;
3954
- background: #ffffff7a;
3955
  }
3956
 
3957
  .mo2f_offer_contact_us_layout
3958
  {
3959
- border: 3px solid var(--mo2f-theme-color) !important;
3960
  }
3961
 
3962
  .mo2f_offer_contact_us_button
3963
  {
3964
- background: var(--mo2f-theme-color) !important;
3965
- }
3966
-
3967
- .mo2f_trial_submit_button
3968
- {
3969
- background: #2271b1 !important;
3970
- background-color: #20b2aa; /* Green */
3971
- border: none;
3972
- color: white;
3973
- padding: 11px 28px;
3974
- text-align: center;
3975
- text-decoration: none;
3976
- display: inline-block;
3977
- font-size: 16px;
3978
- margin: 4px 2px;
3979
- cursor: pointer;
3980
- -webkit-transition-duration: 0.4s; /* Safari */
3981
- transition-duration: 0.4s;
3982
- }
3983
- .mo2f_trial_submit_button:hover {
3984
- box-shadow: 0 12px 16px 0 rgba(0,0,0,0.24),0 17px 50px 0 rgba(0,0,0,0.19);
3985
- color: white;
3986
- }
3987
-
3988
- .mo2f_trial_box{
3989
- width: 654px;
3990
- }
3991
-
3992
- .mo2f_firebase_adv_container{
3993
- display: flex;
3994
- justify-content: top;
3995
- align-items: center;
3996
- flex-direction: column;
3997
- margin: 10px;
3998
- border: 1px solid #000000;
3999
- height: 185px;
4000
- padding: 10px;
4001
- background-image: linear-gradient(rgba(255, 252, 0, 1),rgb(255,188,107));
4002
- /* background-color: orange; */
4003
- }
4004
-
4005
- .mo2f_firebase_adv_img{
4006
- display: flex;
4007
- align-items: center;
4008
- justify-content: space-between;
4009
- }
4010
- .mo2f_firebase_adv_text{
4011
- width: 60px;
4012
- height: 60px;
4013
- left: 0px;
4014
- top: 0px;
4015
-
4016
- }
4017
- .mo2f_firebase_adv_content{
4018
- text-align: center;
4019
- padding: 10px;
4020
- font-size:15px;
4021
- color: #434343;
4022
- }
4023
-
4024
- .mo2f_firebase_adv_button{
4025
- background-color: #000000;
4026
- border: none;
4027
- color: #ffffff;
4028
- padding: 10px 20px;
4029
- text-align: center;
4030
- text-decoration: none;
4031
- display: inline-block;
4032
- font-size: 16px;
4033
- margin: 4px 2px;
4034
- cursor: pointer;
4035
- border-radius: 50px;
4036
- }
4037
-
4038
-
4039
- .mo2f_firebase_adv_button,.mo2f_firebase_adv_button:visited, .mo2f_firebase_adv_button:hover,.mo2f_firebase_adv_button:active{color:#ffffff;}
4040
-
4041
- .mp2f-form-div{
4042
- display: none;
4043
- margin-top:10px;
4044
  }
 
 
 
 
 
 
 
1
  .mo2f_miniAuthApp {
2
  padding: 26px;
3
  font-size: 18px;
5
  width: 100%;
6
  height: 100%;
7
  margin:-10px;
8
+ background-color:#20b2aa30;
9
  display:block;
10
  }
11
  .mo2f_miniAuthApp:hover {
12
+ background: #20b2aa9e;
13
  }
14
  input[name = 'miniOrangeAuthenticator'] {
15
  visibility:hidden;
16
  }
17
  input[name = 'miniOrangeAuthenticator']:checked + .mo2f_miniAuthApp{
18
+ background: #20b2aadb;
19
  }
20
  .mo2fa-addons-preview-alignment{
21
  text-align: right;
116
  text-decoration: none;
117
  cursor: pointer;
118
  }
 
 
119
  .mo-2fa-help-button-text {
120
  cursor: pointer;
121
  font-size: 16px;
129
  border-radius: 15px;
130
  padding: 9px;
131
  transition: all 3s ease-in-out;
 
132
  }
133
  .mo_support_input_label {
134
  color: #999;
209
  padding: 0px;
210
  }
211
 
212
+ #wpfooter
213
+ {
214
+ position: relative !important;
215
+ }
216
  .mo-2fa-mail-button
217
  {
218
  bottom: 2.5%;
297
  }
298
  .mo2f_2fa_plan_title
299
  {
300
+ background-color: #20b2aa;
301
+ border: 2px solid #20b2aa;
302
  }
303
  .mo2f_padding_style
304
  {
323
  .mo2f_tooltip .mo2f_tooltiptext {
324
  visibility: hidden;
325
  width: 200px;
326
+ background-color: #20b2aa;
327
  color: white;
328
  text-align: center;
329
  border-radius: 6px;
400
  border-radius: 50em;
401
  border-width: 1px;
402
  border-style: solid;
403
+ border-color: #20b2aa;
404
  border-image: initial;
405
  }
406
+ .mo_upgrade_toggle_2fa_lable
407
  {
408
  position: relative;
409
  z-index: 1;
410
  display: inline-block;
411
+ float: left;
412
  width: 210px;
413
  height: 44px;
414
  line-height: 40px;
639
  background-color: white;
640
  }
641
  .mo_wpns_button_info_tab {
642
+ background-color: #20b2aa;
643
  border: none;
644
  color: white;
645
  height: 1.8em;
805
  font-size: 103%;
806
  margin-top: 20px;
807
  margin-bottom: 20px;
808
+ border: solid 1px #20b2aa;
809
  background-color: white;
810
  color: black;
811
  width :162px;
814
 
815
  /* Change background color of buttons on hover */
816
  .mo_wpns_tab button:hover {
817
+ background-color: #20b2aa;
818
  color: white;
819
  }
820
 
821
  /* Create an active/current tablink class */
822
  .mo_wpns_tab button.active {
823
+ background-color: #20b2aa;
824
  color: white;
825
  width: 20%;
826
+ border: solid 1px #20b2aa;
827
  /*border-bottom: none;*/
828
  box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
829
  font-weight: 600;
837
  border-top: none;
838
  }
839
  .mo_wpsn_button {
840
+ background-color: #20b2aa; /* Green */
841
  border: none;
842
  color: white;
843
  padding: 11px 32px;
860
  padding:0px 24px 10px 10px;
861
  min-height:220px;
862
  }
863
+ .mo_wpns_divided_layout_tab{
864
  margin-bottom: 10px;
865
  margin-top: 10px;
866
+ height:auto;
867
  width:100%;
868
  float:left;
869
 
 
 
 
 
 
870
 
871
  }
872
  .mo_wpns_divided_layout{
875
  height:auto;
876
  width:100%;
877
  float:left;
878
+
879
 
880
  }
881
  .mo_wpns_divided_layout_2
896
  min-height: 222px;
897
  overflow: hidden;
898
  text-align: center;
899
+ border-top: 6px solid lightseagreen;
900
  box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
901
  }
902
  .mo_wpns_small_layout{
908
  margin: 10px;
909
  padding: 5px 20px;
910
  background-color: #FFFFFF;
911
+ /*border: 1px solid #CCCCCC;*/
912
  float: left;
913
+ width: 42%;
914
  margin-left: 1%;
915
+ min-height: 220px;
916
+ overflow: hidden;
917
  text-align: center;
918
+ border-top: 6px solid lightseagreen;
919
+ box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
920
  /*font-style: italic;*/
921
 
922
  }
 
 
 
 
 
923
  .mo_wpns_method_layout{
924
  margin: 10px;
925
  padding: 5px 20px;
931
  min-height: 222px;
932
  overflow: hidden;
933
  text-align: center;
934
+ border-top: 6px solid lightseagreen;
935
  box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
936
  /*font-style: italic;*/
937
 
944
  /*border: 1px solid #CCCCCC;*/
945
  float: left;
946
  width: 47%;
947
+ margin-left: 1%;
948
+ height: 222px;
949
  text-align: center;
 
950
  }
951
 
952
 
953
  .mo_wpns_small_3_layout
954
  {
955
+ float: left;
 
 
 
956
  width: 64%;
957
+ height: 222px;
958
  text-align: center;
959
+ margin-top: 35px;
 
 
960
  }
961
  .mo_wpns_line
962
  {
963
+ border: 1.2px solid #20b2aa;
964
  }
965
  .mo_wpns_dashboard_layout
966
  {
967
  margin: 10px;
968
+ /*padding: 5px 20px;*/
969
+ background-color: none;
970
+ /*border: 1px solid #CCCCCC;*/
971
  float: left;
972
+ width: 94%;
973
+ height: auto;
974
+ margin-left: 1%;
 
 
 
975
  }
976
  .mo_wpns_inside_dashboard_layout
977
  {
984
  height: 100px;
985
  margin-left: 1%;
986
  font-weight: 600;
987
+ border-top: 2px solid lightseagreen;
988
  /*box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);*/
989
  }
990
  .mo_wpns_sub_dashboards_layout
992
  margin-top: 10px;
993
  padding: 5px 0px;
994
  background-color: #FFFFFF;
995
+ border: 1px solid lightseagreen;
996
  float: left;
997
  width: 34%;
998
+ height: 170px;
999
  margin-left: 1%;
1000
  font-weight: 600;
1001
+ border-top: 4px solid lightseagreen;
 
 
1002
  /*box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);*/
1003
  /*font-style: italic;*/
1004
  /*box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);*/
1008
  margin-top: 10px;
1009
  padding: 5px 0px;
1010
  background-color: #FFFFFF;
1011
+ border: 1px solid lightseagreen;
1012
  float: left;
1013
  width: 45%;
1014
+ min-height: 56px;
 
1015
  overflow: hidden;
1016
  margin-left: 1%;
1017
  font-weight: 600;
1018
+ border-top: 3px solid lightseagreen;
1019
  /*box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);*/
1020
  /*font-style: italic;*/
1021
  }
1090
  margin-left: 0.3%;
1091
  float: left;
1092
  text-align: center;
1093
+ border: 2px solid lightseagreen;
1094
  box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
1095
  }
1096
 
1102
  margin-left: 1%;
1103
  float: left;
1104
  /*text-align: center;*/
1105
+ border: 2px solid lightseagreen;
1106
  box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
1107
  }
1108
  .mo_wpns_settings_textarea
1142
  margin: 10px;
1143
  padding: 5px 20px;
1144
  background-color: #FFFFFF;
1145
+ border: 2px solid #20b2aa;
1146
  float: left;
1147
  width: 593px;
1148
  min-height: 200px;
1163
  margin: 5px;
1164
  margin-left: 0px;
1165
  padding: 5px 20px 30px 20px;
1166
+ background-color: #FFFFFF;
1167
+ border: 2px solid #20b2aa;
1168
+ float: left;
1169
+ width: 94%;
1170
+
1171
+ overflow: hidden;
1172
+ text-align: left;
1173
+ box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
1174
  }
1175
  .mo_wpns_setting_layout_scan
1176
  {
1177
  margin: 5px;
1178
  padding: 5px 20px 30px 20px;
1179
  background-color: #FFFFFF;
1180
+ border: 2px solid #20b2aa;
1181
  float: left;
1182
  width: 80%;
1183
  margin-left: 10%;
1216
 
1217
  /* Create an active/current tablink class */
1218
  .mo_wpns_sub_nav_tab button.mo_wpns_sub_nav_active {
1219
+ background-color: #20b2aa;
1220
  color: white;
1221
  }
1222
 
1255
  width:23.3%;
1256
  float:left;
1257
  background-color: white;
1258
+ border-top: 4px solid lightseagreen;
1259
  box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
1260
  font-style: italic;
1261
  }
1262
  .mo_wpns_button {
1263
+ background-color: #20b2aa; /* Green */
1264
  border: none;
1265
  color: white;
1266
  padding: 11px 28px;
1291
 
1292
 
1293
  .mo_wpns_dashboard_button {
1294
+ background-color: #20b2aa; /* Green */
1295
  border: none;
1296
  color: white;
1297
  padding-top: 10px;
1326
  }*/
1327
  .mo_wpns_upgrade_page_button
1328
  {
1329
+ border: 2px solid ##2a80ca;
1330
  background-color: #2a80ca;
1331
  color: white;
1332
  padding: 12px 0px;
1395
  min-height: 222px;
1396
  overflow: hidden;
1397
  text-align: center;
1398
+ border-top: 6px solid lightseagreen;
1399
  box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
1400
  }
1401
 
1410
  height: 220px;
1411
  overflow: hidden;
1412
  text-align: center;
1413
+ /*border-top: 6px solid lightseagreen;*/
1414
  /*box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);*/
1415
  }
1416
 
1473
  background-color: #dddddd;
1474
  }
1475
  .mo_wpns_free_feature_button {
1476
+ /*background-color: green; /* Green */*/
1477
  border: none;
1478
  color: black;
1479
  padding: 11px 12px;
1544
  width: 100%;
1545
 
1546
  }
1547
+ .mo_wpns_divided_layout_tab{
1548
+ margin-bottom: 10px;
1549
+ margin-top: 10px;
1550
+ height:auto;
1551
+ width:100%;
1552
+ float:left;
1553
+
1554
 
1555
+ }
1556
  .mo_wpns_small_layout{
1557
  /*background-color:#FFFFFF;
1558
  border:1px solid #CCCCCC;
1571
  text-align: center;
1572
  box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
1573
  /*font-style: italic;*/
1574
+ border-top: 6px solid lightseagreen;
1575
  }
1576
 
1577
  .mo_wpns_small_layout_test{
1595
 
1596
  }
1597
 
1598
+ .mo_wpns_small_2_layout
1599
+ {
1600
+ /*margin: 10px;*/
1601
+ /*padding: 5px 20px;*/
1602
+ /*background-color: yellow;*/
1603
+ /*border: 1px solid #CCCCCC;*/
1604
+ float: left;
1605
+ width: 100%;
1606
+ margin-left: 1%;
1607
+ height: 120px;
1608
+ text-align: center;
1609
+ }
1610
+ .mo_wpns_small_3_layout
1611
+ {
1612
+ float: left;
1613
+ width: 68%;
1614
+ height: 222px;
1615
+ text-align: center;
1616
+ margin-top: 26px;
1617
+ }
1618
+ .mo_wpns_dashboard_layout
1619
+ {
1620
+ /*margin: 10px;*/
1621
+ padding: 5px 20px;
1622
+ background-color: none;
1623
+
1624
+ float: left;
1625
+ width: 90%;
1626
+ height: auto;
1627
+ /*margin-left: 1%;*/
1628
+
1629
+ }
1630
+ .mo_wpns_inside_dashboard_layout
1631
  {
1632
  margin-top: 10px;
1633
  padding: 5px 0px;
1636
  float: left;
1637
  width: 18.5%;
1638
  height: 100px;
1639
+ border-top: 2px solid lightseagreen;
1640
  font-weight: 600;
1641
  /*box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);*/
1642
+ }
1643
 
1644
  /*.wpns_font_size {
1645
  font-size: 30px;
1669
 
1670
  .mo_wpns_dashboard_button
1671
  {
1672
+ background-color: #20b2aa; /* Green */
1673
  border: none;
1674
  color: white;
1675
  padding-top: 10px;
1702
  text-align: center;
1703
  color: black;
1704
  box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
1705
+ /*margin-top: 20px;
1706
+ padding: 5px 20px;
1707
+ background-color: #20b2aa;
1708
+ border: 1px solid #CCCCCC;
1709
+ float: left;
1710
+ width: 227px;
1711
+ height: 170px;
1712
+ margin-left: 1%;
1713
+ color: white;
1714
+ box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);*/
1715
  }
1716
+ .mo_wpns_sub_dashboards_layout
1717
+ {
1718
+ margin-top: 10px;
1719
+ padding: 5px 0px;
1720
+ background-color: #FFFFFF;
1721
+ border: 1px solid lightseagreen;
1722
+ float: left;
1723
+ width: 30%;
1724
+ height: 100px;
1725
+ margin-left: 1%;
1726
+ font-weight: 600;
1727
+ border-top: 4px solid lightseagreen;
1728
 
1729
+ /*box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);*/
1730
+ }
1731
+ .mo_wpns_sub_sub_dashboard_layout
1732
+ {
1733
+ margin-top: 10px;
1734
+ padding: 5px 0px;
1735
+ background-color: #FFFFFF;
1736
+ border: 1px solid lightseagreen;
1737
+ float: left;
1738
+ width: 22%;
1739
+ min-height: 74px;
1740
+ overflow: hidden;
1741
+ margin-left: 1%;
1742
+ font-weight: 600;
1743
+ border-top: 3px solid lightseagreen;
1744
+ }
1745
  .mo_wpns_container{
1746
  /*padding:10px;*/
1747
  width: 100%;
1748
  /*background-color: yellow;*/
1749
  height: auto;
1750
  }
 
1751
  .mo_wpns_details_layout
1752
  {
1753
  margin:10px;
1763
  float:left;
1764
  border: 1px solid;
1765
  background-color: white;
1766
+ border-top: 4px solid lightseagreen;
1767
  box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
1768
  font-style: italic;
1769
  }
1777
  font-size: 103%;
1778
  margin-top: 20px;
1779
  margin-bottom: 20px;
1780
+ border: solid 1px #20b2aa;
1781
  background-color: white;
1782
  color: black;
1783
  width: 129px;
1784
  height: 55%;
1785
  }
1786
  .mo_wpns_tab button.active {
1787
+ background-color: #20b2aa;
1788
  color: white;
1789
  width: 130px;
1790
+ border: solid 1px #20b2aa;
1791
  /*border-bottom: none;*/
1792
  box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
1793
  font-weight: 600;
1794
  }
1795
 
1796
+
1797
+ /* background-color: #4CAF50;
1798
+ border: none;
1799
+ color: white;
1800
+ padding: 15px 32px;
1801
+ text-align: center;
1802
+ text-decoration: none;
1803
+ display: inline-block;
1804
+ font-size: 16px;
1805
+ margin: 10px 14px;
1806
+ cursor: pointer;
1807
+ width: 20%;*/
1808
+ }
1809
  .mo_wpns_third_layout{
1810
  margin-top: 10px;
1811
  padding: 5px 20px;
1836
  margin: 10px;
1837
  padding: 5px 20px;
1838
  background-color: #FFFFFF;
1839
+ border: 2px solid #20b2aa;
1840
  float: left;
1841
  width: 90%;
1842
  min-height: 200px;
1844
  text-align: center;
1845
  box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
1846
  }
1847
+
 
 
1848
  h1 .nav-tab, a .nav-tab{
1849
  font-size : auto;
1850
  background-color: none; /* Green
1857
 
1858
  font-size: 20px;
1859
  margin: 5px 0px;
1860
+ cursor: pointer;
1861
  /*border-radius: 23px;*/
1862
  width: 07.5%;
1863
  border: 1px solid gray;
1869
  /*background-color: #4CAF50;*/
1870
  font-size: 150%;
1871
  box-shadow: 3px 4px 3px #888888;
1872
+ background-color: #20b2aa;
1873
  color: white;
1874
 
1875
  }
1876
  h1 .nav-tab:hover , a .nav-tab:hover
1877
  {
1878
+ background-color: #20b2aa;
1879
  color: white;
1880
  /*border-bottom: none;*/
1881
  }
1882
  h1 .nav-tab-active:hover , a .nav-tab-active:hover
1883
  {
1884
  background-color: white;
1885
+ color:#20b2aa;
1886
  }
1887
  .mo_wpns_sub_nav_tab button {
1888
  background-color: inherit;
1901
  color: black;
1902
  width :210px;
1903
  }
1904
+ .mo_wpns_setting_layout
1905
+ {
1906
+ margin: 5px;
1907
+ margin-left: 0px;
1908
+ padding: 5px 20px 30px 20px;
1909
+ background-color: #FFFFFF;
1910
+ border: 2px solid #20b2aa;
1911
+ float: left;
1912
+ width: 90%;
1913
+ /*margin-left: 1%;*/
1914
 
1915
+ overflow: hidden;
1916
+ text-align: left;
1917
+ box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
1918
+ }
1919
  .mo_wpns_products-dollar-amount {
1920
  color: #797878;
1921
  font-weight: 400;
1941
  -o-transition: border .2s ease-in-out;
1942
  transition: border .2s ease-in-out
1943
  }
1944
+ }
1945
 
1946
 
1947
  .mo_wpns_table_layout td strong {
1961
  }
1962
 
1963
  .fixed {
1964
+ //width: 75% !important;
1965
  }
1966
  .mo_wpns_table_textbox {
1967
  width:100%;
2097
 
2098
  .test_auth_button
2099
  {
2100
+ padding: 10px 25px 0 25px;
2101
  text-align: center;
2102
+ align-content: center;
2103
+ margin: auto;
2104
  }
2105
 
2106
  .mo2f_table_layout
2107
  {
2108
+ background-color: #FFFFFF;
2109
+ border: 1px solid #CCCCCC;
2110
+ padding: 25px 50px 25px 50px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2111
  margin: 10px;
 
 
 
 
 
2112
  }
2113
 
 
2114
  .ip_lookup_desc,.file_backup_desc{
2115
  background-color:#E6E6E6;
2116
  width:100%;
2485
  font-weight: bold;
2486
  }
2487
 
2488
+ /*.wpns_font_size {
2489
+ font-size: 50px;
2490
+ margin-top: -10px;
2491
+ padding-right: 11px;
2492
+ }*/
2493
  .wpns_font_shown {
 
2494
  font-size: 70px;
2495
+ margin-top: -10px;
2496
+ margin-bottom: 5px;
2497
+ padding-right: 11px;
2498
  }
2499
 
2500
  /* Added for malware */
2501
  .malwaresummarydiv{
2502
  display: inline-flex;
2503
+ width: 100%;
2504
  }
2505
  .malwarescandiv{
2506
  border-radius: 4px;
2559
  line-height: 20px; /* To center it vertically */
2560
  color: white;
2561
  }
2562
+ /*#mo_wpns_bar {
2563
+ width: 0%;
2564
+ height: 20px;
2565
+ background-color: blue;
2566
+ }*/
2567
  .mo_wpns_lightgreen{
2568
  color:rgb(128, 173, 128);
2569
  }
2606
  width: 50%;
2607
  }
2608
  .mo_wpns_scan_button {
2609
+ background-color: #20b2aa; /* Green */
2610
  border: none;
2611
  color: white;
2612
  padding: 5px 5px;
2620
  transition-duration: 0.4s;
2621
  }
2622
  .mo_wpns_scan_modal_button {
2623
+ background-color: #20b2aa; /* Green */
2624
  border: none;
2625
  color: white;
2626
  padding: 5px 80px;
2634
  transition-duration: 0.4s;
2635
  }
2636
  .mo_wpns_deep_scan_button {
2637
+ background-color: #20b2aa; /* Green */
2638
  border: none;
2639
  color: white;
2640
  padding: 5px 5px;
2656
  {
2657
  padding: 5px;
2658
  background-color: #FFFFFF;
2659
+ border: 1px solid lightseagreen;
2660
  width: 23.5%;
2661
+ border-top: 4px solid lightseagreen;
2662
  min-height: 180px;
2663
  }
2664
  .mo_wpns_malwarescandiv
2665
  {
2666
  padding: 5px;
2667
  background-color: #FFFFFF;
2668
+ border: 1px solid lightseagreen;
2669
  width: 50%;
2670
+ border-top: 4px solid lightseagreen;
2671
  }
2672
 
2673
 
2852
  margin: 10px;
2853
  float: left;
2854
  text-align: center;
2855
+ border: 2px solid lightseagreen;
2856
  box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
2857
  }
2858
 
2987
  }
2988
 
2989
  .mo2f_thumbnail_method_desc{
2990
+ padding:20px;
2991
  font-size:17px;
2992
  }
2993
 
3031
  .mo2fa_see_preview{
3032
  font-size: 13px;
3033
  }
3034
+ .mo_wpns_setting_layout{
3035
+ margin: 5px;
3036
+ margin-left: 0px;
3037
+ padding: 5px 20px 30px 20px;
3038
+ background-color: #FFFFFF;
3039
+ border: 2px solid #20b2aa;
3040
+ float: left;
3041
+ width: 94%;
3042
+ /*margin-left: 1%;*/
3043
+ /*overflow: hidden;*/
3044
+ text-align: left;
3045
+ box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
3046
+ }
3047
+
3048
  .mo2f_configure_set_2_factor:hover {
3049
  font-weight: bold;
3050
  font-size: 14px;
3161
  color: #1a5a97!important;
3162
  font-weight: 600!important;
3163
  }
3164
+ .mo2f_kba_ques : hover{
 
3165
  color: #1a5a97!important;
3166
+ font-weight: 600!important;
 
3167
  }
3168
 
3169
  .mo2f_kba_table {
3256
  text-align: center;
3257
  padding: 11px;
3258
  }
3259
+
 
 
 
 
 
 
 
 
 
 
3260
  .mo2f_vertical-submenu a:hover {
3261
  background-color: #ccc;
3262
  }
3335
  margin: 0px 0px;
3336
  cursor: pointer;
3337
  width: 1200px;
3338
+ border: 1px solid #20b2aa;
3339
 
3340
  }
3341
  .mo_subtab_flex-container{
3355
  margin: 0px 0px;
3356
  cursor: pointer;
3357
  width: 1200px;
3358
+ border: 1px solid #20b2aa;
3359
  }
3360
 
3361
  .mo_wpns_sub_scanmode
3362
  {
3363
  padding: 5px;
3364
  background-color: #FFFFFF;
3365
+ border: 1px solid lightseagreen;
3366
  width: 23.5%;
3367
+ border-top: 4px solid lightseagreen;
3368
  min-height: 180px;
3369
  }
3370
  .mo_wpns_sub_scansummary
3371
  {
3372
  padding: 5px;
3373
  background-color: #FFFFFF;
3374
+ border: 1px solid lightseagreen;
3375
  width: 23.5%;
3376
+ border-top: 4px solid lightseagreen;
3377
  height: 120px;
3378
  }
3379
  .mo_wpns_scan_summary_text
3386
  {
3387
  padding: 5px;
3388
  background-color: #FFFFFF;
3389
+ border: 1px solid lightseagreen;
3390
  width: 50%;
3391
+ border-top: 4px solid lightseagreen;
3392
  }
3393
 
3394
  .mo_scan_modal {
3546
  }
3547
  .mo2f_addons_alignment
3548
  {
3549
+ color:#20b2aa;
3550
  font-size: large;
3551
  float: left;
3552
  margin-right: 5px;
3600
  color: #ffffff;
3601
  margin-left: 15px;
3602
  }
3603
+ .call-setup-div{
3604
+ background: #F2F5FF;
3605
+ border-radius: 5px;
3606
+ margin-top: 10px;
3607
+ margin-bottom: 15px;
3608
+ padding-top: 10px;
3609
+ border-style: solid;
3610
+ border-color: #2f6062;
3611
+ padding-left: 10px;
3612
+ text-align: center;
3613
+ }
3614
  /* The switch - the box around the slider */
3615
  .switch {
3616
  position: relative;
3674
  border-radius: 50%;
3675
  }
3676
 
3677
+
3678
+
3679
+
3680
+
3681
+
3682
+
3683
+
3684
+
3685
+
3686
+
3687
+
3688
+
3689
+
3690
+
3691
+
3692
+
3693
+
3694
+
3695
+
3696
+
3697
+
3698
  .mo_wpns_upgrade_page_2fa_ns_styles
3699
  {
3700
  background-color: #7ccbc7;
3884
 
3885
  .mo2f_offer_main_div
3886
  {
3887
+ height:200px;
3888
+ background-color:white;
3889
+ border-top: 4px solid #a02929;
3890
+ border-bottom: 4px solid #a02929;
3891
+ width: 100%;
 
 
 
 
 
3892
  }
3893
 
3894
  .mo2f_offer_first_section
3895
  {
3896
+ width:41%;
3897
+ color:red;
3898
+ height: 167.5px;
3899
+ float: left;
3900
+ text-align: left;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3901
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3902
  }
3903
+ .mo2f_offer_first_section_text
 
 
 
 
 
 
 
 
 
 
 
 
 
3904
  {
3905
+ font-size: 73px !important;
3906
+ text-align: center;
3907
+ margin: 0px;
3908
+ margin-bottom: 4% !important;
3909
+ color: black;
3910
 
3911
+ }
3912
  .mo2f_offer_get_upto
3913
  {
3914
+ text-align:center;margin:0px;margin-bottom: -2%;margin-top: 2%;color: black;font-size: 120%;
 
 
 
 
 
3915
  }
3916
+ .mo2f_offer_middle_section
3917
+ {
3918
+ width:39%;color:red;height: 100px;float: left;
 
 
 
 
 
 
 
3919
  }
3920
 
3921
  .mo2f_offer_last_section
3922
  {
3923
+ width:20%;color:red;height: 100px;float: left;text-align: left;
 
 
 
3924
  }
3925
 
3926
  .mo2f_offer_contact_us
3927
  {
3928
+ font-size: 23px;
3929
+ border-radius: 4px;
3930
+ background: #a02929;
3931
+ border: 0px;
3932
  color: white;
3933
+ padding: 12px 27px;
 
 
3934
  text-decoration: none;
3935
  }
3936
 
3937
+ .mo2f_offer_contact_us:hover
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3938
  {
3939
+ color: white !important;
 
3940
  }
3941
 
3942
  .mo2f_offer_contact_us_layout
3943
  {
3944
+ border: 3px solid #a02929 !important;
3945
  }
3946
 
3947
  .mo2f_offer_contact_us_button
3948
  {
3949
+ background: #a02929 !important;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3950
  }
includes/css/twofa_style_settings.css CHANGED
@@ -155,19 +155,7 @@
155
  filter: alpha(opacity=50);
156
  opacity: .5
157
  }
158
- .mo2f-styled-radio {
159
- width: 32px;
160
- height: 32px;
161
- position: relative;
162
- display: inline-block;
163
- border-radius: 50%;
164
- background-color: #e6e6e6;
165
- float: left;
166
- margin-top: -4px;
167
- }
168
- .mo2f-styled-radio-text_conf {
169
- margin-left: 10px;
170
- }
171
  button.mo2f_close {
172
  -webkit-appearance: none;
173
  padding: 0;
155
  filter: alpha(opacity=50);
156
  opacity: .5
157
  }
158
+
 
 
 
 
 
 
 
 
 
 
 
 
159
  button.mo2f_close {
160
  -webkit-appearance: none;
161
  padding: 0;
includes/css/upgrade.css CHANGED
@@ -1,291 +1,3 @@
1
- .mo2fa_pricing_head_blue{
2
- background-color: #1f3668;
3
- border-radius: 1em 1em 50% 50%;
4
- padding: 1em 1em 2em 0em;
5
- color: white;
6
- margin-top: -10%;
7
- }
8
- .mo2fa_per_tooltip_methodlist {
9
- position: relative;
10
- display: inline-block;
11
- }
12
- .mo2fa_per_tooltip_methodlist .mo2fa_methodlist {
13
- visibility: hidden;
14
- width: 13em;
15
- background-color: #000000b8;
16
- color: #fff;
17
- text-align: left;
18
- border-radius: 6px;
19
- padding: 12px 2px 12px 28px;
20
- position: absolute;
21
- z-index: 1;
22
- top: -2em;
23
- left: 107%;
24
- }
25
- .mo2fa_per_tooltip_methodlist:hover .mo2fa_methodlist {
26
- visibility: visible;
27
- }
28
- .mo2fa_per_tooltip_methodlist .mo2fa_methodlist::after {
29
- content: "";
30
- position: absolute;
31
- top: 50%;
32
- right: 100%;
33
- margin-top: -5px;
34
- border-width: 5px;
35
- border-style: solid;
36
- border-color: transparent black transparent transparent;
37
- }
38
- .mo2fa_on_per_tooltip_methodlist {
39
- position: relative;
40
- display: inline-block;
41
- }
42
- .mo2fa_on_per_tooltip_methodlist .mo2fa_methodlist {
43
- visibility: hidden;
44
- width: 14em;
45
- background-color: #000000b8;
46
- color: #fff;
47
- text-align: left;
48
- border-radius: 6px;
49
- padding: 12px 2px 12px 28px;
50
- position: absolute;
51
- z-index: 1;
52
- top: -1.6em;
53
- left: 90%;
54
- }
55
- .mo2fa_on_per_tooltip_methodlist:hover .mo2fa_methodlist {
56
- visibility: visible;
57
- }
58
- .mo2fa_on_per_tooltip_methodlist .mo2fa_methodlist::after {
59
- content: "";
60
- position: absolute;
61
- top: 50%;
62
- right: 100%;
63
- margin-top: -5px;
64
- border-width: 5px;
65
- border-style: solid;
66
- border-color: transparent black transparent transparent;
67
- }
68
-
69
-
70
- .mo2fa_cloud_per_tooltip_methodlist {
71
- position: relative;
72
- display: inline-block;
73
- }
74
- .mo2fa_cloud_per_tooltip_methodlist .mo2fa_methodlist {
75
- visibility: hidden;
76
- width: 14em;
77
- background-color: #000000b8;
78
- color: #fff;
79
- text-align: left;
80
- border-radius: 6px;
81
- padding: 11px 1px 11px 43px;
82
- position: absolute;
83
- z-index: 1;
84
- top: -15px;
85
- right: 110%;
86
- }
87
- .mo2fa_cloud_per_tooltip_methodlist:hover .mo2fa_methodlist {
88
- visibility: visible;
89
- }
90
- .mo2fa_cloud_per_tooltip_methodlist .mo2fa_methodlist::after {
91
- content: "";
92
- position: absolute;
93
- top: 50%;
94
- left: 100%;
95
- margin-top: -5px;
96
- border-width: 5px;
97
- border-style: solid;
98
- border-color: transparent transparent transparent black;
99
- }
100
-
101
- .mo2fa_fido_tooltip_methodlist {
102
- position: relative;
103
- display: inline-block;
104
- }
105
- .mo2fa_fido_tooltip_methodlist .mo2fa_methodlist {
106
- visibility: hidden;
107
- width: 16em;
108
- background-color: #000000b8;
109
- color: #fff;
110
- text-align: left;
111
- border-radius: 6px;
112
- padding: 12px 2px 12px 28px;
113
- position: absolute;
114
- z-index: 1;
115
- top: -1.9em;
116
- left: 91%;
117
- }
118
- .mo2fa_fido_tooltip_methodlist:hover .mo2fa_methodlist {
119
- visibility: visible;
120
- }
121
- .mo2fa_fido_tooltip_methodlist .mo2fa_methodlist::after {
122
- content: "";
123
- position: absolute;
124
- top: 50%;
125
- right: 100%;
126
- margin-top: -5px;
127
- border-width: 5px;
128
- border-style: solid;
129
- border-color: transparent black transparent transparent;
130
- }
131
-
132
- .mo2fa_shortcode_tooltip_methodlist {
133
- position: relative;
134
- display: inline-block;
135
- }
136
- .mo2fa_shortcode_tooltip_methodlist .mo2fa_methodlist {
137
- visibility: hidden;
138
- width: auto;
139
- min-width:26em;
140
- background-color: #000000b8;
141
- color: #fff;
142
- text-align: left;
143
- border-radius: 6px;
144
- padding: 7px 0px 8px 8px;
145
- position: absolute;
146
- z-index: 1;
147
- top: -1.1em;
148
- left: 107%;
149
- }
150
- .mo2fa_shortcode_tooltip_methodlist:hover .mo2fa_methodlist {
151
- visibility: visible;
152
- }
153
- .mo2fa_shortcode_tooltip_methodlist .mo2fa_methodlist::after {
154
- content: "";
155
- position: absolute;
156
- top: 50%;
157
- right: 100%;
158
- margin-top: -5px;
159
- border-width: 5px;
160
- border-style: solid;
161
- border-color: transparent black transparent transparent;
162
- }
163
- .mo2fa_shortcode_ent_tooltip_methodlist {
164
- position: relative;
165
- display: inline-block;
166
- }
167
- .mo2fa_shortcode_ent_tooltip_methodlist .mo2fa_methodlist {
168
- visibility: hidden;
169
- width: auto;
170
- min-width:26em;
171
- background-color: #000000b8;
172
- color: #fff;
173
- text-align: left;
174
- border-radius: 6px;
175
- padding: 7px 0px 8px 8px;
176
- position: absolute;
177
- z-index: 1;
178
- top: -15px;
179
- right: 110%;
180
- }
181
- .mo2fa_shortcode_ent_tooltip_methodlist:hover .mo2fa_methodlist {
182
- visibility: visible;
183
- }
184
- .mo2fa_shortcode_ent_tooltip_methodlist .mo2fa_methodlist::after {
185
- content: "";
186
- position: absolute;
187
- top: 50%;
188
- left: 100%;
189
- margin-top: -5px;
190
- border-width: 5px;
191
- border-style: solid;
192
- border-color: transparent transparent transparent black;
193
- }
194
- #mo2f_upgrade_main_div:hover > #mo2fa-ribbon{
195
- margin-top: 0%;
196
- transition: 1s;
197
- }
198
- .mo2fa_per_year{
199
- color:white;
200
- font-size: small;
201
- }
202
- .mo2fa_tooltip {
203
- position: relative;
204
- border-bottom: 1px dotted black;
205
- }
206
- .mo2fa_tooltip .mo2fa_tooltiptext {
207
- visibility: hidden;
208
- line-height: 1.6;
209
- width: 248px;
210
- background-color: white;
211
- color: cadetblue;
212
- border: 1px solid cadetblue;
213
- text-align: center;
214
- border-radius: 6px;
215
- padding: 10px 0;
216
- position: absolute;
217
- z-index: 1;
218
- top: -5px;
219
- left: 105%;
220
- }
221
- .mo2fa_tooltip:hover .mo2fa_tooltiptext {
222
- visibility: visible;
223
- }
224
- .mo2fa-ribbon span {
225
- position: absolute;
226
- width: 154px;
227
- padding: 19px 0px 15px 68px;
228
- background-color: #3498db;
229
- box-shadow: 0 5px 10px rgb(0 0 0 / 10%);
230
- color: #fff;
231
- font: 700 14px/1 Lato,sans-serif;
232
- text-shadow: 0 1px 1px rgb(0 0 0 / 20%);
233
- }
234
- .mo2fa-ribbon-top-right span {
235
- left: 0;
236
- top: 19px;
237
- transform: rotate(45deg);
238
- z-index: 1;
239
- }
240
- .mo2fa-ribbon {
241
- width: 160px;
242
- height: 160px;
243
- overflow: hidden;
244
- position: absolute;
245
- z-index: 0;
246
- }
247
- .mo2fa-ribbon-top-right {
248
- top: 154px;
249
- right: 486px;
250
- }
251
- .mo2fa-ribbon::before {
252
- position: absolute;
253
- content: "";
254
- border: 5px solid #2980b9;
255
- }
256
- .mo2fa-ribbon-top-right::before {
257
- top: -2px;
258
- left: 34px;
259
- }
260
- .mo2fa-ribbon::after, .mo2fa-ribbon::before {
261
- position: absolute;
262
- content: "";
263
- border: 5px solid #2980b9;
264
- }
265
- .mo2fa-ribbon-top-right::after {
266
- bottom: 34px;
267
- right: 0;
268
- }
269
- .mo2fa_pricing_head_sky{
270
- background-color: #327a86;
271
- border-radius: 1em 1em 50% 50%;
272
- padding: 1em 1em 2em 0em;
273
- color: white;
274
- margin-top: -10%;
275
- height:15.5em;
276
- }
277
- .wp-core-ui select{
278
- padding: 4px 24px 4px 8px;
279
- margin-left:1em;
280
- }
281
- .mo2fa_plan-type{
282
- text-align: center;
283
- color: #1f3668;
284
- font-size: 28px;
285
- }
286
- .mo2fa_ul li{
287
- margin-bottom: 0%;
288
- }
289
  .mo2fa_pricing_feature_collection_supporter{
290
  height: 32em;
291
  }
@@ -296,14 +8,12 @@
296
  }
297
  i.fa-check {
298
  color: black;
299
- margin-left:2em;
300
  margin-right: 17px;
301
  margin-top: 0.5em;
302
  margin-bottom: 0.5em;
303
  }
304
  i.fa-times {
305
  color: #b6abab;
306
- margin-left: 2em;
307
  margin-right: 17px;
308
  margin-top: 0.5em;
309
  margin-bottom: 0.5em;
@@ -316,19 +26,20 @@ i.fa-times {
316
 
317
  }
318
  .mo2fa_pricing_feature_collection{
 
319
  height: 31em;
 
 
 
 
320
  }
321
  .mo2fa_limit_pricing_feature_mo_2fa{
322
  color: #b6abab;
323
  font-weight: 500;
324
  }
325
  .mo2fa_unltimate_feature{
326
- text-align: center;
327
- color: #000000;
328
- font-family:Open Sans;
329
- letter-spacing: 0.3px;
330
- padding:0.5em;
331
- font-family:Open Sans;
332
  }
333
  .mo2fa_sec{
334
  width: 27em;
@@ -338,45 +49,24 @@ i.fa-times {
338
  border: 1px solid #ccc;
339
  padding-top: 2em;
340
  }
341
- .mo2fa_upgrade_my_plan_ent{
342
  border: none;
343
- top: 50%;
344
- left: 50%;
345
  color: white;
346
  padding: 15px 32px;
347
  width: auto;
348
- min-width: 50%;
349
  border-radius: 26px;
350
  text-align: center;
351
  text-decoration: none;
352
  display: inline-block;
353
- background: #327a86;
354
  font-size: 16px;
355
  height: auto;
 
356
  margin-top: 24px;
357
  }
358
- .mo2fa_upgrade_my_plan_ent:hover{
359
- border: none;
360
- background: #8d86f5;
361
- }
362
- .mo2fa_upgrade_my_plan {
363
- border: none;
364
- top: 50%;
365
- left: 50%;
366
- color: white;
367
- padding: 15px 32px;
368
- width: auto;
369
- min-width: 50%;
370
- border-radius: 26px;
371
- text-align: center;
372
- text-decoration: none;
373
- display: inline-block;
374
- background: #1f3668;
375
- font-size: 16px;
376
- height: auto;
377
- margin-top: 24px;
378
- cursor:pointer;
379
- }
380
  .mo2fa_upgrade_my_plan:hover{
381
  border: none;
382
  background: #8d86f5;
@@ -387,7 +77,7 @@ i.fa-times {
387
  .mo2fa_pricing_tabs_mo{
388
  width: auto;
389
  border-radius: 4px;
390
- height: 84.5em;
391
  border: 1px solid #ccc;
392
  padding-top: 2em;
393
  }
@@ -409,15 +99,12 @@ i.fa-times {
409
  color: white;
410
  background: #8d86f5;
411
  }
412
- .mo2fa_web_sec{
413
- padding:20px 0;
414
- }
415
  .mo2fa_pricing_head_mo_2fa{
416
- font-size: 20px;
417
- color: white;
418
- line-height: 1.6;
419
  margin-bottom: 3%;
420
- font-family:unset;
421
  }
422
  .mo2fa_method-list-size{
423
  font-size: 11px;
@@ -426,6 +113,7 @@ i.fa-times {
426
  margin-left: 2em;
427
  font-weight: 450;
428
  }
 
429
  .mo2fa_method-list-mo-size-cross{
430
  font-size: 11px;
431
  color: #b6abab;
@@ -433,23 +121,28 @@ i.fa-times {
433
  list-style: none!important;
434
  margin-left: 2em;
435
  }
 
436
  .mo2fa_price_mo_2fa{
437
  font-size: 35px;
438
  font-weight: bold;
439
  color: black;
 
440
  }
441
  .mo2fa_purchase_user_limit_mo{
442
  margin-top: 22px!important;
443
  margin-bottom: 0px!important;
444
  color: black;
445
  }
 
446
  .mo2fa_purchase_otp_limit{
447
  margin-top: 10px!important;
448
  margin-bottom: 4px!important;
449
  color: black;
 
450
  }
451
  .mo2fa_increase_my_limit{
452
- width:40%;
 
453
  color: black;
454
  font-size: 11px;
455
  background: #c9dbdb75;
@@ -466,14 +159,6 @@ i.fa-times {
466
  .mo2fa_ul{
467
  font-size: 15px;
468
  }
469
- .mo2fa_ul li{
470
- font-size: 14px;
471
- font-family: system-ui;
472
- }
473
-
474
- .mo2fa_ul li:nth-of-type(2n+1) {
475
- background-color: rgba(23,61,80,.06);
476
- }
477
  .mo2fa_more_details_p,.mo2fa_more_details_p1{
478
  font-size: 13px;
479
  margin-bottom: -10px;
@@ -488,7 +173,8 @@ i.fa-times {
488
  }
489
  .mo2fa_pricing{
490
  padding: 16px 55px 12px 41px;
491
- height: 10em;
 
492
  }
493
  .mo2fa_pricing_p{
494
  font-size: 10px;
@@ -498,8 +184,8 @@ i.fa-times {
498
  font-size: 46px;
499
  font-weight: 600;
500
  padding: 5px 5px 5px 5px;
501
- margin-top: 35px;
502
- color:white;
503
  }
504
  .mo2fa_country{
505
  margin-top: 2px;
@@ -526,6 +212,7 @@ i.fa-times {
526
  .mo2fa_starting_from{
527
  font-size: 10px;
528
  margin-left: -24px;
 
529
  }
530
  .mo2fa_center{
531
  text-align: center;
@@ -535,6 +222,8 @@ i.fa-times {
535
  border: none!important;
536
  }
537
  .mo2fa_pricing_tabs_mo_premium{
 
 
538
  background: ffffffad;
539
  border: none;
540
  box-shadow: 12px;
@@ -553,6 +242,7 @@ i.fa-times {
553
  background: #2a80caa6;
554
  color: white;
555
  height: 3em;
 
556
  margin-left: 0px;
557
  margin-top: -2em;
558
  font-size: 16px;
@@ -586,7 +276,7 @@ i.fa-times {
586
  height: 28px;
587
  width:auto;
588
  }
589
- .mo2fa_category_feature{
590
  font-size: 16px;
591
  font-weight: 600;
592
  padding-bottom: 0.3em;
@@ -597,12 +287,12 @@ background: #d5d5d5!important;
597
  margin-top: 0.3em;
598
  margin-bottom: 0.3em;
599
  }
600
- .mo2fa_bg_category_main{
601
  font-size: 17px;
602
  border :0.5px solid #c1c1c1 ;
603
  background: #c9dbdb!important
604
  }
605
- .mo2fa_description{
606
  font-size: 13px!important;
607
  font-weight: 400;
608
  }
@@ -660,6 +350,7 @@ table.mo2fa_table_features tr:last-child
660
  top: 0px;
661
  left: 107%;
662
  }
 
663
  .mo2fa_tooltip_sms_info .mo2fa_sms_info::after {
664
  content: "";
665
  position: absolute;
@@ -673,24 +364,27 @@ table.mo2fa_table_features tr:last-child
673
  .mo2fa_tooltip_sms_info:hover .mo2fa_sms_info {
674
  visibility: visible;
675
  }
 
676
  .mo2fa_tooltip_methodlist {
677
  position: relative;
678
  display: inline-block;
679
  }
680
- .mo2fa_tooltip_methodlist .mo2fa_methodlist {
 
681
  visibility: hidden;
682
  width: 14em;
683
  background-color: #000000b8;
684
  color: #fff;
685
  text-align: left;
686
  border-radius: 6px;
687
- padding: 11px 1px 11px 43px;
688
  position: absolute;
689
  z-index: 1;
690
- top: -9.4em;
691
- left: 95%;
692
  }
693
- .mo2fa_tooltip_methodlist .mo2fa_methodlist::after {
 
694
  content: "";
695
  position: absolute;
696
  top: 50%;
@@ -700,346 +394,9 @@ table.mo2fa_table_features tr:last-child
700
  border-style: solid;
701
  border-color: transparent black transparent transparent;
702
  }
703
- .mo2fa_tooltip_methodlist:hover .mo2fa_methodlist {
704
  visibility: visible;
705
  }
706
-
707
- .mo2fa_ent_tooltip_methodlist {
708
- position: relative;
709
- display: inline-block;
710
- }
711
- .mo2fa_ent_tooltip_methodlist .mo2fa_methodlist {
712
- visibility: hidden;
713
- width: 14em;
714
- background-color: #000000b8;
715
- color: #fff;
716
- text-align: left;
717
- border-radius: 6px;
718
- padding: 11px 1px 11px 43px;
719
- position: absolute;
720
- z-index: 1;
721
- top: -128px;
722
- right: 110%;
723
- }
724
- .mo2fa_ent_tooltip_methodlist .mo2fa_methodlist::after {
725
- content: "";
726
- position: absolute;
727
- top: 50%;
728
- left: 100%;
729
- margin-top: -5px;
730
- border-width: 5px;
731
- border-style: solid;
732
- border-color: transparent transparent transparent black;
733
- }
734
- .mo2fa_ent_tooltip_methodlist:hover .mo2fa_methodlist {
735
- visibility: visible;
736
- }
737
- .mo2fa_rba_tooltip_methodlist {
738
- position: relative;
739
- display: inline-block;
740
- }
741
- .mo2fa_rba_tooltip_methodlist .mo2fa_methodlist {
742
- visibility: hidden;
743
- width: 14em;
744
- background-color: #000000b8;
745
- color: #fff;
746
- text-align: left;
747
- border-radius: 6px;
748
- padding: 7px 0px 8px 11px;
749
- position: absolute;
750
- z-index: 1;
751
- top: -2.6em;
752
- left: 93%;
753
- }
754
- .mo2fa_rba_tooltip_methodlist .mo2fa_methodlist::after {
755
- content: "";
756
- position: absolute;
757
- top: 50%;
758
- right: 100%;
759
- margin-top: -5px;
760
- border-width: 5px;
761
- border-style: solid;
762
- border-color: transparent black transparent transparent;
763
- }
764
- .mo2fa_rba_tooltip_methodlist:hover .mo2fa_methodlist {
765
- visibility: visible;
766
- }
767
- .mo2fa_ent_rba_tooltip_methodlist {
768
- position: relative;
769
- display: inline-block;
770
- }
771
- .mo2fa_ent_rba_tooltip_methodlist .mo2fa_methodlist {
772
- visibility: hidden;
773
- width: auto;
774
- min-width:10em;
775
- background-color: #000000b8;
776
- color: #fff;
777
- text-align: left;
778
- border-radius: 6px;
779
- padding: 11px 6px 11px 17px;
780
- position: absolute;
781
- z-index: 1;
782
- top: -37px;
783
- right: 108%;
784
- }
785
- .mo2fa_ent_rba_tooltip_methodlist .mo2fa_methodlist::after {
786
- content: "";
787
- position: absolute;
788
- top: 50%;
789
- left: 100%;
790
- margin-top: -5px;
791
- border-width: 5px;
792
- border-style: solid;
793
- border-color: transparent transparent transparent black;
794
- }
795
- .mo2fa_ent_rba_tooltip_methodlist:hover .mo2fa_methodlist {
796
- visibility: visible;
797
- }
798
- .mo2fa_redirect_tooltip_methodlist {
799
- position: relative;
800
- display: inline-block;
801
- }
802
- .mo2fa_redirect_tooltip_methodlist .mo2fa_methodlist {
803
- visibility: hidden;
804
- width: 17em;
805
- background-color: #000000b8;
806
- color: #fff;
807
- text-align: left;
808
- border-radius: 6px;
809
- padding: 10px 3px 10px 34px;
810
- position: absolute;
811
- z-index: 1;
812
- top: -2.1em;
813
- left: 93%;
814
- }
815
- .mo2fa_redirect_tooltip_methodlist .mo2fa_methodlist::after {
816
- content: "";
817
- position: absolute;
818
- top: 50%;
819
- right: 100%;
820
- margin-top: -5px;
821
- border-width: 5px;
822
- border-style: solid;
823
- border-color: transparent black transparent transparent;
824
- }
825
- .mo2fa_redirect_tooltip_methodlist:hover .mo2fa_methodlist {
826
- visibility: visible;
827
- }
828
- .mo2fa_ent_redirect_tooltip_methodlist {
829
- position: relative;
830
- display: inline-block;
831
- }
832
- .mo2fa_ent_redirect_tooltip_methodlist .mo2fa_methodlist {
833
- visibility: hidden;
834
- width: auto;
835
- min-width:20em;
836
- background-color: #000000b8;
837
- color: #fff;
838
- text-align: left;
839
- border-radius: 6px;
840
- padding: 11px 1px 11px 13px;
841
- position: absolute;
842
- z-index: 1;
843
- top: -28px;
844
- right: 105%;
845
- }
846
- .mo2fa_ent_redirect_tooltip_methodlist .mo2fa_methodlist::after {
847
- content: "";
848
- position: absolute;
849
- top: 50%;
850
- left: 100%;
851
- margin-top: -5px;
852
- border-width: 5px;
853
- border-style: solid;
854
- border-color: transparent transparent transparent black;
855
- }
856
- .mo2fa_ent_redirect_tooltip_methodlist:hover .mo2fa_methodlist {
857
- visibility: visible;
858
- }
859
- .mo2fa_role_tooltip_methodlist {
860
- position: relative;
861
- display: inline-block;
862
- }
863
- .mo2fa_role_tooltip_methodlist .mo2fa_methodlist {
864
- visibility: hidden;
865
- width: auto;
866
- min-width:10em;
867
- background-color: #000000b8;
868
- color: #fff;
869
- text-align: left;
870
- border-radius: 6px;
871
- padding: 6px 7px 8px 17px;
872
- position: absolute;
873
- z-index: 1;
874
- top: -1.1em;
875
- left: 90%;
876
- }
877
- .mo2fa_role_tooltip_methodlist .mo2fa_methodlist::after {
878
- content: "";
879
- position: absolute;
880
- top: 50%;
881
- right: 100%;
882
- margin-top: -5px;
883
- border-width: 5px;
884
- border-style: solid;
885
- border-color: transparent black transparent transparent;
886
- }
887
- .mo2fa_role_tooltip_methodlist:hover .mo2fa_methodlist {
888
- visibility: visible;
889
- }
890
- .mo2fa_ent_role_tooltip_methodlist {
891
- position: relative;
892
- display: inline-block;
893
- }
894
- .mo2fa_ent_role_tooltip_methodlist .mo2fa_methodlist {
895
- visibility: hidden;
896
- width: auto;
897
- min-width:10em;
898
- background-color: #000000b8;
899
- color: #fff;
900
- text-align: left;
901
- border-radius: 6px;
902
- padding: 6px 7px 8px 17px;
903
- position: absolute;
904
- z-index: 1;
905
- top: -17px;
906
- right: 110%;
907
- }
908
- .mo2fa_ent_role_tooltip_methodlist .mo2fa_methodlist::after {
909
- content: "";
910
- position: absolute;
911
- top: 50%;
912
- left: 100%;
913
- margin-top: -5px;
914
- border-width: 5px;
915
- border-style: solid;
916
- border-color: transparent transparent transparent black;
917
- }
918
- .mo2fa_ent_role_tooltip_methodlist:hover .mo2fa_methodlist {
919
- visibility: visible;
920
- }
921
- .mo2fa_custom_sms_tooltip_methodlist {
922
- position: relative;
923
- display: inline-block;
924
- }
925
- .mo2fa_custom_sms_tooltip_methodlist .mo2fa_methodlist {
926
- visibility: hidden;
927
- width: auto;
928
- min-width:16em;
929
- background-color: #000000b8;
930
- color: #fff;
931
- text-align: left;
932
- border-radius: 6px;
933
- padding: 7px 0px 8px 21px;
934
- position: absolute;
935
- z-index: 1;
936
- top: -1.1em;
937
- left: 107%;
938
- }
939
- .mo2fa_custom_sms_tooltip_methodlist .mo2fa_methodlist::after {
940
- content: "";
941
- position: absolute;
942
- top: 50%;
943
- right: 100%;
944
- margin-top: -5px;
945
- border-width: 5px;
946
- border-style: solid;
947
- border-color: transparent black transparent transparent;
948
- }
949
- .mo2fa_custom_sms_tooltip_methodlist:hover .mo2fa_methodlist {
950
- visibility: visible;
951
- }
952
- .mo2fa_ent_custom_sms_tooltip_methodlist {
953
- position: relative;
954
- display: inline-block;
955
- }
956
- .mo2fa_ent_custom_sms_tooltip_methodlist .mo2fa_methodlist {
957
- visibility: hidden;
958
- width: auto;
959
- min-width:16em;
960
- background-color: #000000b8;
961
- color: #fff;
962
- text-align: left;
963
- border-radius: 6px;
964
- padding: 7px 0px 8px 21px;
965
- position: absolute;
966
- z-index: 1;
967
- top: -17px;
968
- right: 106%;
969
- }
970
- .mo2fa_ent_custom_sms_tooltip_methodlist .mo2fa_methodlist::after {
971
- content: "";
972
- position: absolute;
973
- top: 50%;
974
- left: 100%;
975
- margin-top: -5px;
976
- border-width: 5px;
977
- border-style: solid;
978
- border-color: transparent transparent transparent black;
979
- }
980
- .mo2fa_ent_custom_sms_tooltip_methodlist:hover .mo2fa_methodlist {
981
- visibility: visible;
982
- }
983
- .mo2fa_enforce_2fa_tooltip_methodlist {
984
- position: relative;
985
- display: inline-block;
986
- }
987
- .mo2fa_enforce_2fa_tooltip_methodlist .mo2fa_methodlist {
988
- visibility: hidden;
989
- width: 14em;
990
- background-color: #000000b8;
991
- color: #fff;
992
- text-align: left;
993
- border-radius: 6px;
994
- padding: 8px 22px 8px 22px;
995
- position: absolute;
996
- z-index: 1;
997
- top: -1.1em;
998
- left: 94%;
999
- }
1000
- .mo2fa_enforce_2fa_tooltip_methodlist .mo2fa_methodlist::after {
1001
- content: "";
1002
- position: absolute;
1003
- top: 50%;
1004
- right: 100%;
1005
- margin-top: -5px;
1006
- border-width: 5px;
1007
- border-style: solid;
1008
- border-color: transparent black transparent transparent;
1009
- }
1010
- .mo2fa_enforce_2fa_tooltip_methodlist:hover .mo2fa_methodlist {
1011
- visibility: visible;
1012
- }
1013
- .mo2fa_ent_enforce_2fa_tooltip_methodlist {
1014
- position: relative;
1015
- display: inline-block;
1016
- }
1017
- .mo2fa_ent_enforce_2fa_tooltip_methodlist .mo2fa_methodlist {
1018
- visibility: hidden;
1019
- width: 18em;
1020
- background-color: #000000b8;
1021
- color: #fff;
1022
- text-align: left;
1023
- border-radius: 6px;
1024
- padding: 11px 1px 11px 43px;
1025
- position: absolute;
1026
- z-index: 1;
1027
- top: -26px;
1028
- right: 110%;
1029
- }
1030
- .mo2fa_ent_enforce_2fa_tooltip_methodlist .mo2fa_methodlist::after {
1031
- content: "";
1032
- position: absolute;
1033
- top: 50%;
1034
- left: 100%;
1035
- margin-top: -5px;
1036
- border-width: 5px;
1037
- border-style: solid;
1038
- border-color: transparent transparent transparent black;
1039
- }
1040
- .mo2fa_ent_enforce_2fa_tooltip_methodlist:hover .mo2fa_methodlist {
1041
- visibility: visible;
1042
- }
1043
  .mo2fa_enterprise_getting_started{
1044
  margin-top: -1em;
1045
  }
@@ -1073,7 +430,7 @@ table.mo2fa_table_features tr:last-child
1073
  .mo_2fa_card{
1074
  width: 98%;
1075
  }
1076
- .mo2f_upgrade_toggle_lable{
1077
  font-size: 1em;
1078
  width: 12em;
1079
  }
@@ -1084,41 +441,3 @@ table.mo2fa_table_features tr:last-child
1084
  display: grid;
1085
  }
1086
  }
1087
- @media only screen and (min-width: 768px) and (max-width: 1024px){
1088
- .mo2fa_pricing_head_blue{
1089
- background-color: #1f3668;
1090
- border-radius: 1em 1em 50% 50%;
1091
- padding: 1em 1em 2em 0em;
1092
- margin-top: -13%;
1093
- }
1094
- .mo2fa_pricing_head_sky{
1095
- background-color: #327a86;
1096
- border-radius: 1em 1em 50% 50%;
1097
- padding: 1em 1em 2em 0em;
1098
- margin-top: -14%;
1099
- height:15.5em;
1100
- }
1101
- .mo2fa_pricing_tabs_mo{
1102
- height: 95em;
1103
- }
1104
- .mo2fa_increase_my_limit{
1105
- width:6em;
1106
- }
1107
- .mo2fa_unltimate_feature{
1108
- height:2em;
1109
- }
1110
- .mo2f_upgrade_main_div{
1111
- Width:auto;
1112
- }
1113
- .mo2fa_upgrade_my_plan {
1114
- border: none;
1115
- color: white;
1116
- padding: 15px 32px;
1117
- width: auto;
1118
- min-width: 50%;
1119
- border-radius: 26px;
1120
- text-align: center;
1121
- text-decoration: none;
1122
- display: inline-block;
1123
- }
1124
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  .mo2fa_pricing_feature_collection_supporter{
2
  height: 32em;
3
  }
8
  }
9
  i.fa-check {
10
  color: black;
 
11
  margin-right: 17px;
12
  margin-top: 0.5em;
13
  margin-bottom: 0.5em;
14
  }
15
  i.fa-times {
16
  color: #b6abab;
 
17
  margin-right: 17px;
18
  margin-top: 0.5em;
19
  margin-bottom: 0.5em;
26
 
27
  }
28
  .mo2fa_pricing_feature_collection{
29
+ width: 24em;
30
  height: 31em;
31
+ margin-top: 13px;
32
+ padding-top: 18px;
33
+ margin-left: 21px;
34
+ margin-right: 28px;
35
  }
36
  .mo2fa_limit_pricing_feature_mo_2fa{
37
  color: #b6abab;
38
  font-weight: 500;
39
  }
40
  .mo2fa_unltimate_feature{
41
+ color: #00000;
42
+ font-weight: 500;
 
 
 
 
43
  }
44
  .mo2fa_sec{
45
  width: 27em;
49
  border: 1px solid #ccc;
50
  padding-top: 2em;
51
  }
52
+ .mo2fa_upgrade_my_plan{
53
  border: none;
54
+ top: 50%;
55
+ left: 50%;
56
  color: white;
57
  padding: 15px 32px;
58
  width: auto;
59
+ min-width: 70%;
60
  border-radius: 26px;
61
  text-align: center;
62
  text-decoration: none;
63
  display: inline-block;
64
+ background: #2a80ca;
65
  font-size: 16px;
66
  height: auto;
67
+ /*margin: 2px 18px 2px -27px;*/
68
  margin-top: 24px;
69
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70
  .mo2fa_upgrade_my_plan:hover{
71
  border: none;
72
  background: #8d86f5;
77
  .mo2fa_pricing_tabs_mo{
78
  width: auto;
79
  border-radius: 4px;
80
+ height: 85em;
81
  border: 1px solid #ccc;
82
  padding-top: 2em;
83
  }
99
  color: white;
100
  background: #8d86f5;
101
  }
 
 
 
102
  .mo2fa_pricing_head_mo_2fa{
103
+ font-size: 33px;
104
+ font-weight: bold;
105
+ color: black;
106
  margin-bottom: 3%;
107
+ /*margin-top: 10%;*/
108
  }
109
  .mo2fa_method-list-size{
110
  font-size: 11px;
113
  margin-left: 2em;
114
  font-weight: 450;
115
  }
116
+
117
  .mo2fa_method-list-mo-size-cross{
118
  font-size: 11px;
119
  color: #b6abab;
121
  list-style: none!important;
122
  margin-left: 2em;
123
  }
124
+
125
  .mo2fa_price_mo_2fa{
126
  font-size: 35px;
127
  font-weight: bold;
128
  color: black;
129
+
130
  }
131
  .mo2fa_purchase_user_limit_mo{
132
  margin-top: 22px!important;
133
  margin-bottom: 0px!important;
134
  color: black;
135
  }
136
+
137
  .mo2fa_purchase_otp_limit{
138
  margin-top: 10px!important;
139
  margin-bottom: 4px!important;
140
  color: black;
141
+
142
  }
143
  .mo2fa_increase_my_limit{
144
+ width:auto;
145
+ min-width: 85%;
146
  color: black;
147
  font-size: 11px;
148
  background: #c9dbdb75;
159
  .mo2fa_ul{
160
  font-size: 15px;
161
  }
 
 
 
 
 
 
 
 
162
  .mo2fa_more_details_p,.mo2fa_more_details_p1{
163
  font-size: 13px;
164
  margin-bottom: -10px;
173
  }
174
  .mo2fa_pricing{
175
  padding: 16px 55px 12px 41px;
176
+ margin-top: 9em;
177
+ height: 25em;
178
  }
179
  .mo2fa_pricing_p{
180
  font-size: 10px;
184
  font-size: 46px;
185
  font-weight: 600;
186
  padding: 5px 5px 5px 5px;
187
+ margin-top: 18px;
188
+ color:black;
189
  }
190
  .mo2fa_country{
191
  margin-top: 2px;
212
  .mo2fa_starting_from{
213
  font-size: 10px;
214
  margin-left: -24px;
215
+ /*margin-top: -17px;*/
216
  }
217
  .mo2fa_center{
218
  text-align: center;
222
  border: none!important;
223
  }
224
  .mo2fa_pricing_tabs_mo_premium{
225
+ height: 84em!important;
226
+ margin-top: -4em;
227
  background: ffffffad;
228
  border: none;
229
  box-shadow: 12px;
242
  background: #2a80caa6;
243
  color: white;
244
  height: 3em;
245
+ /* border-radius: 1px 25px 25px 0px; */
246
  margin-left: 0px;
247
  margin-top: -2em;
248
  font-size: 16px;
276
  height: 28px;
277
  width:auto;
278
  }
279
+ .category_feature_mo_2fa{
280
  font-size: 16px;
281
  font-weight: 600;
282
  padding-bottom: 0.3em;
287
  margin-top: 0.3em;
288
  margin-bottom: 0.3em;
289
  }
290
+ .bg_category_main_mo_2fa{
291
  font-size: 17px;
292
  border :0.5px solid #c1c1c1 ;
293
  background: #c9dbdb!important
294
  }
295
+ .description_mo_2fa{
296
  font-size: 13px!important;
297
  font-weight: 400;
298
  }
350
  top: 0px;
351
  left: 107%;
352
  }
353
+
354
  .mo2fa_tooltip_sms_info .mo2fa_sms_info::after {
355
  content: "";
356
  position: absolute;
364
  .mo2fa_tooltip_sms_info:hover .mo2fa_sms_info {
365
  visibility: visible;
366
  }
367
+
368
  .mo2fa_tooltip_methodlist {
369
  position: relative;
370
  display: inline-block;
371
  }
372
+
373
+ .mo2fa_tooltip_methodlist .methodlist {
374
  visibility: hidden;
375
  width: 14em;
376
  background-color: #000000b8;
377
  color: #fff;
378
  text-align: left;
379
  border-radius: 6px;
380
+ padding: 7px 0px 8px 61px;
381
  position: absolute;
382
  z-index: 1;
383
+ top: -11em;
384
+ left: 107%;
385
  }
386
+
387
+ .mo2fa_tooltip_methodlist .methodlist::after {
388
  content: "";
389
  position: absolute;
390
  top: 50%;
394
  border-style: solid;
395
  border-color: transparent black transparent transparent;
396
  }
397
+ .mo2fa_tooltip_methodlist:hover .methodlist {
398
  visibility: visible;
399
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
400
  .mo2fa_enterprise_getting_started{
401
  margin-top: -1em;
402
  }
430
  .mo_2fa_card{
431
  width: 98%;
432
  }
433
+ .mo_upgrade_toggle_2fa_lable{
434
  font-size: 1em;
435
  width: 12em;
436
  }
441
  display: grid;
442
  }
443
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/css/user-profile.css DELETED
@@ -1,179 +0,0 @@
1
- #mo2fa_form-table-user-profile th{
2
- padding:0px 0px 0px 0px !important;
3
- text-align: center;
4
-
5
- }
6
- .mo2fa_form-table td{
7
- padding:6px 10px;
8
- }
9
- .miniOrange-2FA-methods-table {
10
- background-color: #fff;
11
- border: 1px solid #e5e5e5;
12
- border-spacing: 0;
13
- }
14
-
15
- .miniOrange-2FA-methods-table thead,
16
- .miniOrange-2FA-methods-table tfoot {
17
- background: #fff;
18
- }
19
-
20
- .miniOrange-2FA-methods-table thead th {
21
- padding: 0.5em;
22
- }
23
-
24
- .miniOrange-2FA-methods-table .col-primary,
25
- .miniOrange-2FA-methods-table .col-enabled {
26
- width: 5%;
27
- }
28
-
29
- .miniOrange-2FA-methods-table .col-name {
30
- width: 90%;
31
- }
32
- .miniOrange-2FA-methods-
33
- .miniOrange-2FA-methods-table tbody th {
34
- text-align: center;
35
- }
36
-
37
- .miniOrange-2FA-methods-table tbody th,
38
- .miniOrange-2FA-methods-table tbody td {
39
- vertical-align: top;
40
- }
41
-
42
- .miniOrange-2FA-methods-table tbody tr:nth-child(odd) {
43
- background-color: #f9f9f9;
44
-
45
- /*background-color: nome;*/
46
- }
47
- #mo2f_configure_kba{
48
- border:1px solid;
49
- text-align: center;
50
- border: 1px solid #52523b;
51
- }
52
- .mo2f_kba_header thead th{
53
- border-bottom: 1px solid black;
54
- }
55
- .miniOrange-2FA-methods-table tbody th, .miniOrange-2FA-methods-table tbody td{
56
- /*text-align: center;*/
57
- }
58
- #mo2f_setup_sms{
59
- /*margin:0 auto;*/
60
- }
61
- #mo2f_setup_sms tr{
62
- background-color: transparent;
63
- }
64
- .mo2f_qr{
65
- margin-left: 5%;
66
- }
67
- .mcol-2{
68
- margin-left: 2%;
69
- }
70
- .mo2fa_popup_text
71
- {
72
- color:black;
73
- margin-top: 2%;
74
- font-weight: 600;
75
- font-size: 12px !important;;
76
-
77
- }
78
- .mo2fa_overlay_success {
79
- width: min-content;
80
- height: 40px;
81
- position: fixed;
82
- float: right;
83
- z-index: 1;
84
- top: 0;
85
- right: 0;
86
- margin-top: 7%;
87
- background-color:#bcffb4 !important ;
88
- /* overflow-x: hidden; */
89
- border-left: 4px solid #46b450;
90
- }
91
- .mo2fa_overlay_error {
92
- width: min-content;
93
- height: min-content;
94
- padding-bottom: 1%;
95
- position: fixed;
96
- float: right;
97
- z-index: 1;
98
- top: 0;
99
- right: 0;
100
- margin-top: 7%;
101
- background-color:bisque !important ;
102
- /* overflow-x: hidden; */
103
- border-left: 4px solid red;
104
- }
105
-
106
- * {box-sizing: border-box}
107
-
108
- /* Style the tab */
109
- .mo2fa_tab {
110
- float: left;
111
- border: 1px solid #ccc;
112
- background-color: #f1f1f1;
113
- width: 15%;
114
- height: 324px;
115
- min-height: 300px;
116
- /*margin-left: 210px;*/
117
- }
118
-
119
- /* Style the buttons that are used to open the tab content */
120
- .mo2fa_tab button {
121
- display: block;
122
- background-color: inherit;
123
- color: black;
124
- padding: 8px 20px;
125
- width: 100%;
126
- border: none;
127
- outline: none;
128
- text-align: left;
129
- cursor: pointer;
130
- transition: 0.3s;
131
- }
132
-
133
- /* Change background color of buttons on hover */
134
- .mo2fa_tab button:hover {
135
- background-color: #ddd;
136
- }
137
-
138
- /* Create an active/current "tab button" class */
139
- .mo2fa_tab button.active {
140
- background-color: #ccc;
141
- }
142
-
143
- /* Style the tab content */
144
- .mo2fa_tabcontent {
145
- float: left;
146
- padding: 0px 12px;
147
- border: 1px solid #ccc;
148
- width: 80%;
149
- border-left: none;
150
- /*height: autoffrom;*/
151
- height: 324px;
152
- }
153
-
154
- .mo2f_miniAuthApp {
155
- color: #2271b1;
156
- padding:0.5% 3%;
157
- /*font-size: 18px;*/
158
- /*font-weight: 600;*/
159
- /*width: 50%;*/
160
- /*height: 20%;*/
161
- margin:1px;
162
- border: 1px solid black;
163
- border-color: #2271b1;
164
- background-color:#f6f7f7;
165
- border-radius: 2px;
166
- }
167
- .mo2f_miniAuthApp:hover {
168
- /*background: #20b2aa9e;*/
169
- background: transparent;
170
- }
171
- input[name = 'miniOrangeAuthenticator'] {
172
- visibility:hidden;
173
- }
174
- input[name = 'miniOrangeAuthenticator']:checked + .mo2f_miniAuthApp{
175
- background: #e5e5ea;
176
- }
177
- .mo2fa_select_method{
178
- width: auto !important;
179
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/email-New-release.php CHANGED
@@ -1,567 +1,257 @@
1
  <?php
2
  function mail_tem()
3
  {
4
- return '
5
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional //EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
6
- <html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
7
  <head>
8
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
9
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
10
- <meta name="x-apple-disable-message-reformatting">
11
- <!--[if !mso]><!--><meta http-equiv="X-UA-Compatible" content="IE=edge"><!--<![endif]-->
12
- <title></title>
13
-
14
- <style type="text/css">
15
- table, td { color: #000000; } a { color: #0000ee; text-decoration: underline; }
16
- @media only screen and (min-width: 520px) {
17
- .u-row {
18
- width: 500px !important;
19
- }
20
- .u-row .u-col {
21
- vertical-align: top;
22
- }
23
-
24
- .u-row .u-col-50 {
25
- width: 250px !important;
26
- }
27
-
28
- .u-row .u-col-100 {
29
- width: 500px !important;
30
- }
31
-
32
- }
33
-
34
- @media (max-width: 520px) {
35
- .u-row-container {
36
- max-width: 100% !important;
37
- padding-left: 0px !important;
38
- padding-right: 0px !important;
39
- }
40
- .u-row .u-col {
41
- min-width: 320px !important;
42
- max-width: 100% !important;
43
- display: block !important;
44
- }
45
- .u-row {
46
- width: calc(100% - 40px) !important;
47
- }
48
- .u-col {
49
- width: 100% !important;
50
- }
51
- .u-col > div {
52
- margin: 0 auto;
53
- }
54
- }
55
- body {
56
- margin: 0;
57
- padding: 0;
58
- }
59
-
60
- table,
61
- tr,
62
- td {
63
- vertical-align: top;
64
- border-collapse: collapse;
65
- }
66
-
67
- p {
68
- margin: 0;
69
- }
70
-
71
- .ie-container table,
72
- .mso-container table {
73
- table-layout: fixed;
74
- }
75
-
76
- * {
77
- line-height: inherit;
78
- }
79
-
80
- a[x-apple-data-detectors=\'true\'] {
81
- color: inherit !important;
82
- text-decoration: none !important;
83
- }
84
-
85
- </style>
86
-
87
-
88
-
89
  </head>
90
-
91
- <body class="clean-body u_body" style="margin: 0;padding: 0;-webkit-text-size-adjust: 100%;background-color: #e7e7e7;color: #000000">
92
- <!--[if IE]><div class="ie-container"><![endif]-->
93
- <!--[if mso]><div class="mso-container"><![endif]-->
94
- <table style="border-collapse: collapse;table-layout: fixed;border-spacing: 0;mso-table-lspace: 0pt;mso-table-rspace: 0pt;vertical-align: top;min-width: 320px;Margin: 0 auto;background-color: #e7e7e7;width:100%" cellpadding="0" cellspacing="0">
95
- <tbody>
96
- <tr style="vertical-align: top">
97
- <td style="word-break: break-word;border-collapse: collapse !important;vertical-align: top">
98
- <!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td align="center" style="background-color: #e7e7e7;"><![endif]-->
99
-
100
-
101
- <div class="u-row-container" style="padding: 0px;background-color: #ffffff">
102
- <div class="u-row" style="Margin: 0 auto;min-width: 320px;max-width: 500px;overflow-wrap: break-word;word-wrap: break-word;word-break: break-word;background-color: transparent;">
103
- <div style="border-collapse: collapse;display: table;width: 100%;background-color: transparent;">
104
- <!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding: 0px;background-color: #ffffff;" align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:500px;"><tr style="background-color: transparent;"><![endif]-->
105
-
106
- <!--[if (mso)|(IE)]><td align="center" width="500" style="background-color: #20b2aa;width: 500px;padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;" valign="top"><![endif]-->
107
- <div class="u-col u-col-100" style="max-width: 320px;min-width: 500px;display: table-cell;vertical-align: top;">
108
- <div style="background-color: #20b2aa;width: 100% !important;">
109
- <!--[if (!mso)&(!IE)]><!--><div style="padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;"><!--<![endif]-->
110
-
111
- <table style="font-family:arial,helvetica,sans-serif;" role="presentation" cellpadding="0" cellspacing="0" width="100%" border="0">
112
- <tbody>
113
- <tr>
114
- <td style="overflow-wrap:break-word;word-break:break-word;padding:10px;font-family:arial,helvetica,sans-serif;" align="left">
115
-
116
- <table width="100%" cellpadding="0" cellspacing="0" border="0">
117
- <tr>
118
- <td style="padding-right: 0px;padding-left: 0px;" align="center">
119
-
120
- <img align="center" border="0" src="https://s3.amazonaws.com/Snowcovered_C_Images/40290_shield.png" alt="" title="" style="outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;clear: both;display: inline-block !important;border: none;height: auto;float: none;width: 34%;max-width: 163.2px;" width="163.2"/>
121
-
122
- </td>
123
- </tr>
124
- </table>
125
-
126
- </td>
127
- </tr>
128
- </tbody>
129
- </table>
130
-
131
- <table style="font-family:arial,helvetica,sans-serif;" role="presentation" cellpadding="0" cellspacing="0" width="100%" border="0">
132
- <tbody>
133
- <tr>
134
- <td style="overflow-wrap:break-word;word-break:break-word;padding:10px;font-family:arial,helvetica,sans-serif;" align="left">
135
-
136
- <h1 style="margin: 0px; color: #ffffff; line-height: 140%; text-align: center; word-wrap: break-word; font-weight: normal; font-family: arial,helvetica,sans-serif; font-size: 21px;">
137
- miniOrange 2FA Plugin List of Latest Features
138
- </h1>
139
-
140
- </td>
141
- </tr>
142
- </tbody>
143
- </table>
144
-
145
- <!--[if (!mso)&(!IE)]><!--></div><!--<![endif]-->
146
- </div>
147
- </div>
148
- <!--[if (mso)|(IE)]></td><![endif]-->
149
- <!--[if (mso)|(IE)]></tr></table></td></tr></table><![endif]-->
150
- </div>
151
- </div>
152
- </div>
153
-
154
-
155
-
156
- <div class="u-row-container" style="padding: 0px;background-color: #ffffff">
157
- <div class="u-row" style="Margin: 0 auto;min-width: 320px;max-width: 500px;overflow-wrap: break-word;word-wrap: break-word;word-break: break-word;background-color: #f5f3f3;">
158
- <div style="border-collapse: collapse;display: table;width: 100%;background-color: transparent;">
159
- <!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding: 0px;background-color: #ffffff;" align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:500px;"><tr style="background-color: #f5f3f3;"><![endif]-->
160
-
161
- <!--[if (mso)|(IE)]><td align="center" width="250" style="width: 250px;padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;" valign="top"><![endif]-->
162
- <div class="u-col u-col-50" style="max-width: 320px;min-width: 250px;display: table-cell;vertical-align: top;">
163
- <div style="width: 100% !important;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;">
164
- <!--[if (!mso)&(!IE)]><!--><div style="padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;"><!--<![endif]-->
165
-
166
- <table style="font-family:arial,helvetica,sans-serif;" role="presentation" cellpadding="0" cellspacing="0" width="100%" border="0">
167
- <tbody>
168
- <tr>
169
- <td style="overflow-wrap:break-word;word-break:break-word;padding:10px;font-family:arial,helvetica,sans-serif;" align="left">
170
-
171
- <div>
172
- <div class="mo_2fa_email_feature_details" style="background-color: white;text-align: center;min-height: 160px;color: black;font-family: inherit;border-radius: 15px;border: 1px solid #20b2aa;font-size: 12px;">
173
- <h2>Backup Codes</h2>
174
- <ul class="mo_2fa_feature_backup_codes" style="text-align: left;padding-left: 15%;margin-top: 1%;padding-right: 7%;">
175
- <li> Helps you to come out from locked out situation </li>
176
- <li> Provide five backup codes </li>
177
- <li> All are one time usable </li>
178
- </ul>
179
- </div>
180
- </div>
181
-
182
- </td>
183
- </tr>
184
- </tbody>
185
- </table>
186
-
187
- <!--[if (!mso)&(!IE)]><!--></div><!--<![endif]-->
188
- </div>
189
- </div>
190
- <!--[if (mso)|(IE)]></td><![endif]-->
191
- <!--[if (mso)|(IE)]><td align="center" width="250" style="width: 250px;padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;" valign="top"><![endif]-->
192
- <div class="u-col u-col-50" style="max-width: 320px;min-width: 250px;display: table-cell;vertical-align: top;">
193
- <div style="width: 100% !important;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;">
194
- <!--[if (!mso)&(!IE)]><!--><div style="padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;"><!--<![endif]-->
195
-
196
- <table style="font-family:arial,helvetica,sans-serif;" role="presentation" cellpadding="0" cellspacing="0" width="100%" border="0">
197
- <tbody>
198
- <tr>
199
- <td style="overflow-wrap:break-word;word-break:break-word;padding:10px;font-family:arial,helvetica,sans-serif;" align="left">
200
-
201
- <div>
202
- <div class="mo_2fa_email_feature_details" style="background-color: white;text-align: center;min-height: 160px;color: black;font-family: inherit;border-radius: 15px;border: 1px solid #20b2aa;font-size: 12px;">
203
- <h2 class="mo_2fa_email_feature_title" style="margin-top: 2%;text-align: center;padding: 0% 2%;">Microsoft Authenticator</h2>
204
- <ul class="mo_2fa_feature_MA" style="text-align: left;margin-top: -4%;padding-left: 15%;padding-right: 7%;">
205
- <li>Generates the OTP on every login</li>
206
- <li>Provides multifactor authentication with extra layer</li>
207
- <li> Very easy to use and secure access</li>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
208
  </ul>
209
- </div>
210
- </div>
211
-
212
- </td>
213
- </tr>
214
- </tbody>
215
- </table>
216
-
217
- <!--[if (!mso)&(!IE)]><!--></div><!--<![endif]-->
218
- </div>
219
- </div>
220
- <!--[if (mso)|(IE)]></td><![endif]-->
221
- <!--[if (mso)|(IE)]></tr></table></td></tr></table><![endif]-->
222
- </div>
223
- </div>
224
- </div>
225
-
226
-
227
-
228
- <div class="u-row-container" style="padding: 0px;background-color: #ffffff">
229
- <div class="u-row" style="Margin: 0 auto;min-width: 320px;max-width: 500px;overflow-wrap: break-word;word-wrap: break-word;word-break: break-word;background-color: #f5f3f3;">
230
- <div style="border-collapse: collapse;display: table;width: 100%;background-color: transparent;">
231
- <!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding: 0px;background-color: #ffffff;" align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:500px;"><tr style="background-color: #f5f3f3;"><![endif]-->
232
-
233
- <!--[if (mso)|(IE)]><td align="center" width="250" style="width: 250px;padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;" valign="top"><![endif]-->
234
- <div class="u-col u-col-50" style="max-width: 320px;min-width: 250px;display: table-cell;vertical-align: top;">
235
- <div style="width: 100% !important;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;">
236
- <!--[if (!mso)&(!IE)]><!--><div style="padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;"><!--<![endif]-->
237
-
238
- <table style="font-family:arial,helvetica,sans-serif;" role="presentation" cellpadding="0" cellspacing="0" width="100%" border="0">
239
- <tbody>
240
- <tr>
241
- <td style="overflow-wrap:break-word;word-break:break-word;padding:10px;font-family:arial,helvetica,sans-serif;" align="left">
242
-
243
- <div>
244
- <div class="mo_2fa_email_feature_details" style="background-color: white;text-align: center;min-height: 160px;color: black;font-family: inherit;border-radius: 15px;border: 1px solid #20b2aa;font-size: 12px;">
245
- <h2 class="mo_2fa_email_feature_title" style="margin-top: 10%;text-align: center;padding: 0% 2%;">Email Notification</h2>
246
- <ul class="mo_2fa_feature_EN" style="text-align: left;padding-left: 15%;margin-top: -4%;padding-right: 7%;">
247
- <li>Gives you important alerts via email</li>
248
- <li>Very helpful for the user to know about account acitivities</li>
249
-
250
  </ul>
251
- </div>
252
- </div>
253
-
254
- </td>
255
- </tr>
256
- </tbody>
257
- </table>
258
-
259
- <!--[if (!mso)&(!IE)]><!--></div><!--<![endif]-->
260
- </div>
261
- </div>
262
- <!--[if (mso)|(IE)]></td><![endif]-->
263
- <!--[if (mso)|(IE)]><td align="center" width="250" style="width: 250px;padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;" valign="top"><![endif]-->
264
- <div class="u-col u-col-50" style="max-width: 320px;min-width: 250px;display: table-cell;vertical-align: top;">
265
- <div style="width: 100% !important;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;">
266
- <!--[if (!mso)&(!IE)]><!--><div style="padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;"><!--<![endif]-->
267
-
268
- <table style="font-family:arial,helvetica,sans-serif;" role="presentation" cellpadding="0" cellspacing="0" width="100%" border="0">
269
- <tbody>
270
- <tr>
271
- <td style="overflow-wrap:break-word;word-break:break-word;padding:10px;font-family:arial,helvetica,sans-serif;" align="left">
272
-
273
- <div>
274
- <div class="mo_2fa_email_feature_details" style="background-color: white;text-align: center;min-height: 160px;color: black;font-family: inherit;border-radius: 15px;border: 1px solid #20b2aa;font-size: 12px;">
275
- <h2>MFA</h2>
276
- <ul class="mo_2fa_feature_MFA" style="text-align: left;padding-left: 15%;padding-right: 7%;">
277
- <li>Login with any of the configured methods: <br>Authenticator Apps, OTP over Email and SMS, KBA, etc. </li>
278
-
279
  </ul>
280
- </div>
281
- </div>
282
-
283
- </td>
284
- </tr>
285
- </tbody>
286
- </table>
287
-
288
- <!--[if (!mso)&(!IE)]><!--></div><!--<![endif]-->
289
- </div>
290
- </div>
291
- <!--[if (mso)|(IE)]></td><![endif]-->
292
- <!--[if (mso)|(IE)]></tr></table></td></tr></table><![endif]-->
293
- </div>
294
- </div>
295
- </div>
296
-
297
-
298
-
299
- <div class="u-row-container" style="padding: 0px;background-color: #ffffff">
300
- <div class="u-row" style="Margin: 0 auto;min-width: 320px;max-width: 500px;overflow-wrap: break-word;word-wrap: break-word;word-break: break-word;background-color: #f5f3f3;">
301
- <div style="border-collapse: collapse;display: table;width: 100%;background-color: transparent;">
302
- <!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding: 0px;background-color: #ffffff;" align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:500px;"><tr style="background-color: #f5f3f3;"><![endif]-->
303
-
304
- <!--[if (mso)|(IE)]><td align="center" width="500" style="width: 500px;padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;" valign="top"><![endif]-->
305
- <div class="u-col u-col-100" style="max-width: 320px;min-width: 500px;display: table-cell;vertical-align: top;">
306
- <div style="width: 100% !important;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;">
307
- <!--[if (!mso)&(!IE)]><!--><div style="padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;"><!--<![endif]-->
308
-
309
- <table style="font-family:arial,helvetica,sans-serif;" role="presentation" cellpadding="0" cellspacing="0" width="100%" border="0">
310
- <tbody>
311
- <tr>
312
- <td style="overflow-wrap:break-word;word-break:break-word;padding:10px;font-family:arial,helvetica,sans-serif;" align="left">
313
-
314
- <div align="center">
315
- <!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-spacing: 0; border-collapse: collapse; mso-table-lspace:0pt; mso-table-rspace:0pt;font-family:arial,helvetica,sans-serif;"><tr><td style="font-family:arial,helvetica,sans-serif;" align="center"><v:roundrect xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w="urn:schemas-microsoft-com:office:word" href="https://plugins.miniorange.com/2-factor-authentication-for-wordpress" style="height:37px; v-text-anchor:middle; width:168px;" arcsize="11%" stroke="f" fillcolor="#20b2aa"><w:anchorlock/><center style="color:#ffffff;font-family:arial,helvetica,sans-serif;"><![endif]-->
316
- <a href="https://plugins.miniorange.com/2-factor-authentication-for-wordpress" target="_blank" style="box-sizing: border-box;display: inline-block;font-family:arial,helvetica,sans-serif;text-decoration: none;-webkit-text-size-adjust: none;text-align: center;color: #ffffff; background-color: #20b2aa; border-radius: 4px;-webkit-border-radius: 4px; -moz-border-radius: 4px; width:auto; max-width:100%; overflow-wrap: break-word; word-break: break-word; word-wrap:break-word; mso-border-alt: none;">
317
- <span style="display:block;padding:10px 20px;line-height:120%;">More Feature details</span>
318
- </a>
319
- <!--[if mso]></center></v:roundrect></td></tr></table><![endif]-->
320
- </div>
321
-
322
- </td>
323
- </tr>
324
- </tbody>
325
- </table>
326
-
327
- <!--[if (!mso)&(!IE)]><!--></div><!--<![endif]-->
328
- </div>
329
- </div>
330
- <!--[if (mso)|(IE)]></td><![endif]-->
331
- <!--[if (mso)|(IE)]></tr></table></td></tr></table><![endif]-->
332
- </div>
333
- </div>
334
- </div>
335
-
336
-
337
-
338
- <div class="u-row-container" style="padding: 0px;background-color: #ffffff">
339
- <div class="u-row" style="Margin: 0 auto;min-width: 320px;max-width: 500px;overflow-wrap: break-word;word-wrap: break-word;word-break: break-word;background-color: #f5f3f3;">
340
- <div style="border-collapse: collapse;display: table;width: 100%;background-color: transparent;">
341
- <!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding: 0px;background-color: #ffffff;" align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:500px;"><tr style="background-color: #f5f3f3;"><![endif]-->
342
-
343
- <!--[if (mso)|(IE)]><td align="center" width="250" style="width: 250px;padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;" valign="top"><![endif]-->
344
- <div class="u-col u-col-50" style="max-width: 320px;min-width: 250px;display: table-cell;vertical-align: top;">
345
- <div style="width: 100% !important;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;">
346
- <!--[if (!mso)&(!IE)]><!--><div style="padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;"><!--<![endif]-->
347
-
348
- <table style="font-family:arial,helvetica,sans-serif;" role="presentation" cellpadding="0" cellspacing="0" width="100%" border="0">
349
- <tbody>
350
- <tr>
351
- <td style="overflow-wrap:break-word;word-break:break-word;padding:10px 10px 10px 26px;font-family:arial,helvetica,sans-serif;" align="left">
352
-
353
- <div>
354
- <div class="mo_2fa_email_template_details" style="background-color: white;border-top: 5px solid #20b2aa;min-height: 250px;text-align: center;overflow: hidden;font-size: 15px;">
355
- <i class="fa fa-globe mo_2fa_email_icon" style="display: inline-block;font: normal normal normal 14px/1 FontAwesome;font-size: 50px;text-rendering: auto;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;color: black;margin-top: 6%;"></i>
356
- <div style="min-height: 150px;">
357
- <h2 style="color: black;margin: 2%;">Website</h2>
358
- <p class="mo_2fa_feature_text" style="color: black;padding: 0px 27px;text-align: center;">miniOrange provides easy to use 2 Factor authentication for secure login to your WordPress site
359
- <br><a class="mo_2fa_ef_read_more" href="https://plugins.miniorange.com/" style="color: black;">...Know More</a></p>
360
- </div>
361
- </div>
362
- </div>
363
-
364
- </td>
365
- </tr>
366
- </tbody>
367
- </table>
368
-
369
- <!--[if (!mso)&(!IE)]><!--></div><!--<![endif]-->
370
- </div>
371
- </div>
372
- <!--[if (mso)|(IE)]></td><![endif]-->
373
- <!--[if (mso)|(IE)]><td align="center" width="250" style="width: 250px;padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;" valign="top"><![endif]-->
374
- <div class="u-col u-col-50" style="max-width: 320px;min-width: 250px;display: table-cell;vertical-align: top;">
375
- <div style="width: 100% !important;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;">
376
- <!--[if (!mso)&(!IE)]><!--><div style="padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;"><!--<![endif]-->
377
-
378
- <table style="font-family:arial,helvetica,sans-serif;" role="presentation" cellpadding="0" cellspacing="0" width="100%" border="0">
379
- <tbody>
380
- <tr>
381
- <td style="overflow-wrap:break-word;word-break:break-word;padding:10px 26px 10px 10px;font-family:arial,helvetica,sans-serif;" align="left">
382
-
383
- <div>
384
- <div class="mo_2fa_email_template_details" style="background-color: white;border-top: 5px solid #20b2aa;min-height: 250px;text-align: center;overflow: hidden;font-size: 15px;">
385
- <i class="fa fa-headphones mo_2fa_email_icon" style="display: inline-block;font: normal normal normal 14px/1 FontAwesome;font-size: 50px;text-rendering: auto;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;color: black;margin-top: 6%;"></i>
386
- <div style="min-height: 150px;">
387
- <h2 style="color: black;margin: 2%;">Documentation</h2>
388
- <p class="mo_2fa_feature_text" style="color: black;padding: 0px 27px;text-align: center;">miniOrange Two-Factor Authentication in which you have to provide two factors to gain the access <br>
389
- <br><a class="mo_2fa_ef_read_more" href="https://developers.miniorange.com/docs/security/wordpress/wp-security" style="color: black;">...Know More</a></p>
390
- </div>
391
- </div>
392
- </div>
393
-
394
- </td>
395
- </tr>
396
- </tbody>
397
- </table>
398
-
399
- <!--[if (!mso)&(!IE)]><!--></div><!--<![endif]-->
400
- </div>
401
  </div>
402
- <!--[if (mso)|(IE)]></td><![endif]-->
403
- <!--[if (mso)|(IE)]></tr></table></td></tr></table><![endif]-->
404
- </div>
405
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
406
  </div>
407
 
408
-
409
-
410
- <div class="u-row-container" style="padding: 0px;background-color: #ffffff">
411
- <div class="u-row" style="Margin: 0 auto;min-width: 320px;max-width: 500px;overflow-wrap: break-word;word-wrap: break-word;word-break: break-word;background-color: #f5f3f3;">
412
- <div style="border-collapse: collapse;display: table;width: 100%;background-color: transparent;">
413
- <!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding: 0px;background-color: #ffffff;" align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:500px;"><tr style="background-color: #f5f3f3;"><![endif]-->
414
-
415
- <!--[if (mso)|(IE)]><td align="center" width="250" style="width: 250px;padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;" valign="top"><![endif]-->
416
- <div class="u-col u-col-50" style="max-width: 320px;min-width: 250px;display: table-cell;vertical-align: top;">
417
- <div style="width: 100% !important;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;">
418
- <!--[if (!mso)&(!IE)]><!--><div style="padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;"><!--<![endif]-->
419
-
420
- <table style="font-family:arial,helvetica,sans-serif;" role="presentation" cellpadding="0" cellspacing="0" width="100%" border="0">
421
- <tbody>
422
- <tr>
423
- <td style="overflow-wrap:break-word;word-break:break-word;padding:10px 10px 10px 26px;font-family:arial,helvetica,sans-serif;" align="left">
424
-
425
- <div>
426
- <div class="mo_2fa_email_template_details" style="background-color: white;border-top: 5px solid #20b2aa;min-height: 250px;text-align: center;overflow: hidden;font-size: 15px;">
427
- <i class="fa fa-file-text mo_2fa_email_icon" style="display: inline-block;font: normal normal normal 14px/1 FontAwesome;font-size: 50px;text-rendering: auto;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;color: black;margin-top: 6%;"></i>
428
- <div style="min-height: 120px;">
429
- <h2 style="color: black;margin: 2%;">Support</h2>
430
- <p class="mo_2fa_feature_text" style="color: black;padding: 0px 27px;text-align: center;">You are not going to hit a ridiculously long phone menu when you call us or contact us.<br>
431
- <br><a class="mo_2fa_ef_read_more" href="https://www.miniorange.com/contact" style="color: black;">...Know More</a></p>
432
- </div>
433
- </div>
434
- </div>
435
-
436
- </td>
437
- </tr>
438
- </tbody>
439
- </table>
440
-
441
- <!--[if (!mso)&(!IE)]><!--></div><!--<![endif]-->
442
- </div>
443
- </div>
444
- <!--[if (mso)|(IE)]></td><![endif]-->
445
- <!--[if (mso)|(IE)]><td align="center" width="250" style="width: 250px;padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;" valign="top"><![endif]-->
446
- <div class="u-col u-col-50" style="max-width: 320px;min-width: 250px;display: table-cell;vertical-align: top;">
447
- <div style="width: 100% !important;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;">
448
- <!--[if (!mso)&(!IE)]><!--><div style="padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;"><!--<![endif]-->
449
-
450
- <table style="font-family:arial,helvetica,sans-serif;" role="presentation" cellpadding="0" cellspacing="0" width="100%" border="0">
451
- <tbody>
452
- <tr>
453
- <td style="overflow-wrap:break-word;word-break:break-word;padding:10px 26px 10px 10px;font-family:arial,helvetica,sans-serif;" align="left">
454
-
455
- <div>
456
- <div class="mo_2fa_email_template_details" style="background-color: white;border-top: 5px solid #20b2aa;min-height: 250px;text-align: center;overflow: hidden;font-size: 15px;">
457
- <i class="fa fa-shield mo_2fa_email_icon" style="display: inline-block;font: normal normal normal 14px/1 FontAwesome;font-size: 50px;text-rendering: auto;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;color: black;margin-top: 6%;"></i>
458
- <div style="min-height: 110px;">
459
- <h2 style="color: black;margin: 2%;">Security site</h2>
460
- <p class="mo_2fa_feature_text" style="color: black;padding: 0px 27px;text-align: center;">miniOrange combines Web Application Firewall (WAF), Malware Scanner, Encrypted Database and File backup<br>
461
- <a class="mo_2fa_ef_read_more" href="https://security.miniorange.com/" style="color: black;">...Know More</a></p>
462
- </div>
463
- </div>
464
- </div>
465
-
466
- </td>
467
- </tr>
468
- </tbody>
469
- </table>
470
-
471
- <!--[if (!mso)&(!IE)]><!--></div><!--<![endif]-->
472
- </div>
473
- </div>
474
- <!--[if (mso)|(IE)]></td><![endif]-->
475
- <!--[if (mso)|(IE)]></tr></table></td></tr></table><![endif]-->
476
- </div>
477
- </div>
478
- </div>
479
-
480
-
481
-
482
- <div class="u-row-container" style="padding: 0px;background-color: #ffffff">
483
- <div class="u-row" style="Margin: 0 auto;min-width: 320px;max-width: 500px;overflow-wrap: break-word;word-wrap: break-word;word-break: break-word;background-color: #20b2aa;">
484
- <div style="border-collapse: collapse;display: table;width: 100%;background-color: transparent;">
485
- <!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding: 0px;background-color: #ffffff;" align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:500px;"><tr style="background-color: #20b2aa;"><![endif]-->
486
-
487
- <!--[if (mso)|(IE)]><td align="center" width="500" style="width: 500px;padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;" valign="top"><![endif]-->
488
- <div class="u-col u-col-100" style="max-width: 320px;min-width: 500px;display: table-cell;vertical-align: top;">
489
- <div style="width: 100% !important;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;">
490
- <!--[if (!mso)&(!IE)]><!--><div style="padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;"><!--<![endif]-->
491
-
492
- <table style="font-family:arial,helvetica,sans-serif;" role="presentation" cellpadding="0" cellspacing="0" width="100%" border="0">
493
- <tbody>
494
- <tr>
495
- <td style="overflow-wrap:break-word;word-break:break-word;padding:10px;font-family:arial,helvetica,sans-serif;" align="left">
496
-
497
- <div style="line-height: 140%; text-align: center; word-wrap: break-word;">
498
- <p style="font-size: 14px; line-height: 140%;"><span style="color: #ffffff; font-size: 14px; line-height: 19.6px;">You are welcome to use our New Features</span></p>
499
- <p style="font-size: 14px; line-height: 140%;">&nbsp;</p>
500
- <p style="font-size: 14px; line-height: 140%;"><span style="color: #ffffff; font-size: 14px; line-height: 19.6px;">If you need any help we are just a mail away</span></p>
501
- </div>
502
-
503
- </td>
504
- </tr>
505
- </tbody>
506
- </table>
507
-
508
- <!--[if (!mso)&(!IE)]><!--></div><!--<![endif]-->
509
- </div>
510
- </div>
511
- <!--[if (mso)|(IE)]></td><![endif]-->
512
- <!--[if (mso)|(IE)]></tr></table></td></tr></table><![endif]-->
513
- </div>
514
- </div>
515
- </div>
516
-
517
-
518
-
519
- <div class="u-row-container" style="padding: 0px;background-color: #ffffff">
520
- <div class="u-row" style="Margin: 0 auto;min-width: 320px;max-width: 500px;overflow-wrap: break-word;word-wrap: break-word;word-break: break-word;background-color: #f5f3f3;">
521
- <div style="border-collapse: collapse;display: table;width: 100%;background-color: transparent;">
522
- <!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding: 0px;background-color: #ffffff;" align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:500px;"><tr style="background-color: #f5f3f3;"><![endif]-->
523
-
524
- <!--[if (mso)|(IE)]><td align="center" width="500" style="width: 500px;padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;" valign="top"><![endif]-->
525
- <div class="u-col u-col-100" style="max-width: 320px;min-width: 500px;display: table-cell;vertical-align: top;">
526
- <div style="width: 100% !important;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;">
527
- <!--[if (!mso)&(!IE)]><!--><div style="padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;"><!--<![endif]-->
528
-
529
- <table style="font-family:arial,helvetica,sans-serif;" role="presentation" cellpadding="0" cellspacing="0" width="100%" border="0">
530
- <tbody>
531
- <tr>
532
- <td style="overflow-wrap:break-word;word-break:break-word;padding:10px;font-family:arial,helvetica,sans-serif;" align="left">
533
-
534
- <div style="line-height: 140%; text-align: center; word-wrap: break-word;">
535
- <p style="font-size: 14px; line-height: 140%;">Contact us at :-&nbsp; <strong>info@xecurify.com / 2fasupport@xecurify.com</strong></p>
536
- </div>
537
-
538
- </td>
539
- </tr>
540
- </tbody>
541
- </table>
542
-
543
- <!--[if (!mso)&(!IE)]><!--></div><!--<![endif]-->
544
- </div>
545
- </div>
546
- <!--[if (mso)|(IE)]></td><![endif]-->
547
- <!--[if (mso)|(IE)]></tr></table></td></tr></table><![endif]-->
548
- </div>
549
- </div>
550
- </div>
551
-
552
-
553
- <!--[if (mso)|(IE)]></td></tr></table><![endif]-->
554
- </td>
555
- </tr>
556
- </tbody>
557
- </table>
558
- <!--[if mso]></div><![endif]-->
559
- <!--[if IE]></div><![endif]-->
560
  </body>
561
-
562
- </html>
563
-
564
-
565
- ';
566
  }
567
  ?>
1
  <?php
2
  function mail_tem()
3
  {
4
+ return '<!DOCTYPE html>
5
+ <html>
 
6
  <head>
7
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
8
+ <title></title>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
  </head>
10
+ <body style=background-color:#f6f4f4>
11
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
12
+ <style>
13
+ .mo_2fa_description
14
+ {
15
+ /*min-height: 400px;*/
16
+ /*background-color: yellow;*/
17
+ /*width: 40%;*/
18
+ margin: 0%;
19
+ /*float: left;*/
20
+ text-align: center;
21
+
22
+ }
23
+ .mo_2fa_feature
24
+ {
25
+ width: 100%;
26
+ /*margin: 2%;*/
27
+ float: left;
28
+ /*background-color: white;*/
29
+ /*border: 1px solid gray;*/
30
+ min-height: 400px;
31
+ overflow: hidden;
32
+ }
33
+ .mo_2fa_email_template_details
34
+ {
35
+ width: 40%;
36
+ margin: 1%;
37
+ float: left;
38
+ background-color: white;
39
+ border-top: 5px solid #20b2aa;
40
+ min-height: 320px;
41
+ text-align: center;
42
+ overflow: hidden;
43
+ font-size:23px;
44
+ }
45
+ .mo_2fa_email_template_details:hover
46
+ {
47
+ box-shadow: 0 0px 0px 0 #9894f6, 0 6px 10px 0 #837fea;
48
+ border-top: 4px solid black;
49
+ margin-top: -0.5%;
50
+ }
51
+ .mo_2fa_email_feature_details
52
+ {
53
+ width: 30%;
54
+ margin: 1%;
55
+ margin-bottom: 5%;
56
+ float: left;
57
+ background-color: white;
58
+ text-align: center;
59
+ min-height: 250px;
60
+ overflow: hidden;
61
+ color: black;
62
+ font-family: inherit;
63
+ border-radius: 15px;
64
+ box-shadow: 0 0px 0px 0 #b5b2f6, 0 6px 10px 0 #bcbaf4;
65
+ border: 1px solid #20b2aa;
66
+ font-size:17px;
67
+
68
+ }
69
+ .mo_2fa_email_feature_details:hover
70
+ {
71
+ color: #20b2aa;
72
+ box-shadow: 0 0px 0px 0 #9894f6, 0 6px 10px 0 #837fea;
73
+ }
74
+ .mo_2fa_ef_button:hover
75
+ {
76
+ box-shadow: 0 0px 0px 0 #ffa792, 0 6px 10px 0 grey;
77
+ }
78
+ .mo_2fa_feature_block
79
+ {
80
+ /*width: 91%;*/
81
+ margin-left: 3%;
82
+ display: flex;
83
+ color:white;
84
+ }
85
+ .mo_2fa_ef_h2
86
+ {
87
+ color: #ad2100;
88
+ font-family: cursive;
89
+ }
90
+ .mo_2fa_ef_h1
91
+ {
92
+ color: #100505;
93
+ font-size: 35px;
94
+ }
95
+ .mo_2fa_ef_button
96
+ {
97
+ font-size: x-large;
98
+ background-color:#20b2aa;
99
+ color: white;
100
+ padding: 17px 127px;
101
+ font-family: cursive;
102
+ margin-left: -42px;
103
+ }
104
+ .mo_2fa_ef_read_more
105
+ {
106
+ color: #20b2aa;
107
+ border: 2px solid #20b2aa;
108
+ padding: 17px 27px;
109
+ font-family: cursive;
110
+ }
111
+ .mo_2fa_ef_read_more:hover
112
+ {
113
+ /*font-size: x-large;*/
114
+ background-color: #20b2aa;
115
+ color: white;
116
+ border: 1px solid white;
117
+ padding: 17px 27px;
118
+ font-family: cursive;
119
+ }
120
+ .mo_2fa_ef_hr
121
+ {
122
+ border: 2px solid #100505;
123
+ margin: 0px 7%;
124
+ }
125
+ .myDiv
126
+ {
127
+
128
+ /*min-height: 300px;*/
129
+ background-color: #18272a;
130
+ /*width: 29%;*/
131
+ /*float: left;*/
132
+ text-align: center;
133
+ color: white;
134
+ padding: 2px 2px;
135
+ font-size:18px;
136
+ margin-top:14px;
137
+ }
138
+ </style>
139
+ <div style="border: 2px solid black;">
140
+ <center><img src="https://s3.amazonaws.com/Snowcovered_C_Images/40290_shield.png" alt="miniorange" width="350" height="175" ></center>
141
+ <div>
142
+ <div class="mo_2fa_description">
143
+ <h1 class="mo_2fa_ef_h1">miniOrange 2FA Plugin List of Latest Features</h1>
144
+ </div>
145
+ </div>
146
+
147
+ <div>
148
+ <div class="mo_2fa_feature_block">
149
+ <div class="mo_2fa_feature">
150
+ <div class="mo_2fa_email_feature_details">
151
+ <h2>Backup Codes</h2>
152
+ <ul style="text-align: left;">
153
+ <li> This will help you to come out from lockdown situation </li>
154
+ <li> We will provide five backup codes </li>
155
+ <li> All are one time usable </li>
156
  </ul>
157
+ </div>
158
+ <div class="mo_2fa_email_feature_details">
159
+ <h2>Microsoft Authenticator</h2>
160
+ <ul style="text-align: left;">
161
+ <li>It will genrate the otp on every login</li>
162
+ <li>It Provide multi-factor authentication with extra layer</li>
163
+ <li> It is very easy to use and secure access</li>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
164
  </ul>
165
+ </div>
166
+ <div class="mo_2fa_email_feature_details">
167
+ <h2>Email Notification</h2>
168
+ <ul style="text-align: left;">
169
+ <li>This feature will give important alert </li>
170
+ <li>Very helpful for the user to be used</li>
171
+ <li>Notification regarding important alerts</li>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
172
  </ul>
173
+ </div>
174
+ <div>
175
+ <br><br>
176
+ <center>
177
+ <a class="mo_2fa_ef_button" href="https://plugins.miniorange.com/2-factor-authentication-for-wordpress">Feature Details</a>
178
+ </center>
179
+ </div>
180
+ </div>
181
+ </div>
182
+ <!-- <br><br> -->
183
+ </div>
184
+ <!-- <hr class="mo_2fa_ef_hr"> -->
185
+ <br><br>
186
+ <div class="mo_2fa_feature_block" style="margin-left: 14%;">
187
+ <div class="mo_2fa_email_template_details">
188
+ <i class="fa fa-globe" style="font-size:50px;color: black;margin-top: 6%"></i>
189
+ <div style="min-height: 150px;">
190
+ <h2 style="color: black;">Website</h2>
191
+ <p style="color: black;padding: 0px 27px;text-align: justify;">miniOrange provides easy to use 2 Factor authentication for secure login to your WordPress site</p>
192
+ </div>
193
+ <div>
194
+ <br><br>
195
+ <center>
196
+ <a class="mo_2fa_ef_read_more" href="https://plugins.miniorange.com/">Read More</a>
197
+ </center>
198
+ </div>
199
+ </div>
200
+ <div class="mo_2fa_email_template_details">
201
+ <i class="fa fa-headphones" style="font-size:50px;color: black;margin-top: 6%"></i>
202
+ <div style="min-height: 150px;">
203
+ <h2 style="color: black;">Documentation</h2>
204
+ <p style="color: black;padding: 0px 27px;text-align: justify;">miniOrange Two-Factor Authentication in which you have to provide two factors to gain the access</p>
205
+ </div>
206
+ <div>
207
+ <br><br>
208
+ <center>
209
+ <a class="mo_2fa_ef_read_more" href="https://developers.miniorange.com/docs/security/wordpress/wp-security">Read More</a>
210
+ </center>
211
+ </div>
212
+ </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
213
  </div>
214
+ <div class="mo_2fa_feature_block" style="margin-left: 14%;">
215
+ <div class="mo_2fa_email_template_details">
216
+ <i class="fa fa-file-text" style="font-size:50px;color: black;margin-top: 6%"></i>
217
+ <div style="min-height: 150px;">
218
+ <h2 style="color: black;">Support</h2>
219
+ <p style="color: black;padding: 0px 27px;text-align: justify;">You are not going to hit a ridiculously long phone menu when you call us or contact us.</p>
220
+ </div>
221
+ <div>
222
+ <br><br>
223
+ <center>
224
+ <a class="mo_2fa_ef_read_more" href="https://www.miniorange.com/contact">Read More</a>
225
+ </center>
226
+ </div>
227
+ </div>
228
+ <div class="mo_2fa_email_template_details">
229
+ <i class="fa fa-shield" style="font-size:50px;color: black;margin-top: 6%"></i>
230
+ <div style="min-height: 150px;">
231
+ <h2 style="color: black;">Security site</h2>
232
+ <p style="color: black;padding: 0px 27px;text-align: justify;">miniOrange combines Web Application Firewall (WAF),Malware Scanner,Encrypted Database and File backup</p>
233
+ </div>
234
+ <div>
235
+ <br><br>
236
+ <center>
237
+ <a class="mo_2fa_ef_read_more" href="https://security.miniorange.com/">Read More</a>
238
+ </center>
239
+ </div>
240
+ </div>
241
+ </div>
242
+
243
+ <div class="myDiv">
244
+ <h2 style="margin-bottom: -36px;"><b>You are welcome to use our New Features</b></h2>.
245
+ <h2 style="margin-bottom: -36px;" > Thank you</h2><br>
246
+ <p style="margin-top: 26px;">If you need any help we are just a mail away <p> <br>
247
+ <p style="margin-top: -47px;"> Contact us at :- <b>info@xecurify.com /2fasupport@xecurify.com<b></p><br>
248
+ <p style="margin-top: -10px;"> If you want to disable this notification please turn of the toggle of email from Notification TAB
249
+ </p>
250
+
251
+ </div>
252
  </div>
253
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
254
  </body>
255
+ </html>';
 
 
 
 
256
  }
257
  ?>
includes/images/firebase.png DELETED
Binary file
includes/js/mo2fa_elementor.js DELETED
@@ -1,122 +0,0 @@
1
- jQuery(window).bind('load', function()
2
- {
3
- mo2fa_has_elementor_class = jQuery('.htmega-login-form-wrapper');
4
-
5
- if(mo2fa_has_elementor_class.length){
6
-
7
- var mo2fa_input = document.getElementsByTagName('input');
8
- var mo2fa_on_submit = mo2fa_input[3].getAttribute('id');
9
- mo2fa_on_submit = '#' +mo2fa_on_submit;
10
-
11
- var mo2fa_form_id = jQuery('form').attr('id');
12
- mo2fa_form_id = '#'+mo2fa_form_id ;
13
- jQuery(mo2fa_form_id).removeAttr('action');
14
- var mo2fa_log_user = document.getElementsByName('login_username');
15
- var mo2fa_log_pass = document.getElementsByName('login_password');
16
- mo2fa_log_user[0].setAttribute("name","mo2fa_user_name");
17
- mo2fa_log_pass[0].setAttribute("name","mo2fa_user_password");
18
-
19
- var mo2fa_pwd = document.getElementsByName("mo2fa_user_password");
20
- mo2fa_pwd = mo2fa_pwd[0];
21
- var mo2fa_pwd = document.getElementById(mo2fa_pwd.id);
22
- mo2fa_pwd.setAttribute("id","mo2fa_user_password");
23
-
24
- var mo2fa_user = document.getElementsByName("mo2fa_user_name");
25
- mo2fa_user = mo2fa_user[0];
26
- var element = document.getElementById(mo2fa_user.id);
27
- element.setAttribute("id","mo2fa_user_name");
28
-
29
- if(my_ajax_object.mo2f_login_option == '0'){
30
-
31
- jQuery(mo2fa_form_id).after('<form name="f" id="mo2f_show_loginform" method="post" action="" hidden>'+
32
- '<input type="text" name="mo2fa_username" id="mo2fa_username" hidden/>'+
33
- '<input type="hidden" name="miniorange_login_nonce" value="'+my_ajax_object.nonce+'"/>'+'</form>'+
34
- '<form name="f" id="mo2f_loginform" method="post" action="" hidden>'+
35
- '<input type="text" name="mo2fa_elementor_user_name" id="mo2fa_elementor_user_name" hidden/>'+
36
- '<input type="text" name="mo2fa_elementor_user_password" id="mo2fa_elementor_user_password" hidden/>'+
37
- '<input type="hidden" name="miniorange_elementor_login_nonce" value="'+my_ajax_object.nonce+'"/>'+'</form>');
38
-
39
- if(my_ajax_object.mo2f_enable_login_with_2nd_factor == '0'){
40
- jQuery(mo2fa_pwd).after('<h2 style="text-align: center;">or</h2><input type="text" name="mo2fa_usernamekey" id="mo2fa_usernamekey" autofocus="true" placeholder="Username"/>'+
41
- '<button style="padding:1px 4px 1px 4px; width:100%" name="miniorange_login_submit" id="miniorange_login_submit">Login with 2nd factor </button>');
42
- }else{
43
- jQuery("label[for='Password']").hide();
44
- jQuery("#mo2fa_user_password").hide();
45
- mo2fa_user = document.getElementsByName("mo2fa_user_name");
46
- mo2fa_user[0].setAttribute("name","mo2fa_usernamekey");
47
- mo2fa_log_user = document.getElementsByName("mo2fa_usernamekey");
48
- mo2fa_log_user[0].setAttribute("id","mo2fa_usernamekey");
49
- }
50
- }
51
- else{
52
- jQuery(mo2fa_form_id).after('<form name="f" id="mo2f_loginform" method="post" action="" hidden>'+
53
- '<input type="text" name="mo2fa_elementor_user_name" id="mo2fa_elementor_user_name" hidden/>'+
54
- '<input type="text" name="mo2fa_elementor_user_password" id="mo2fa_elementor_user_password" hidden/>'+
55
- '<input type="hidden" name="miniorange_elementor_login_nonce" value="'+my_ajax_object.nonce+'"/>'+'</form>');
56
- }
57
-
58
- jQuery('#mo2fa_user_password').keypress(function (e) {
59
- if (e.which == 13) {//Enter key pressed
60
- e.preventDefault();
61
- mo2fa_elementor();
62
- }
63
- });
64
- jQuery(mo2fa_on_submit).click(function(e){
65
- if (e.which == 1) {//Enter key pressed
66
- e.preventDefault();
67
- mo2fa_elementor();
68
- }
69
- });
70
- jQuery('#mo2fa_user_name').keypress(function (e){
71
- if (e.which == 13) {//Enter key pressed
72
- e.preventDefault();
73
- mo2fa_elementor();
74
- }
75
- });
76
- jQuery('#mo2fa_usernamekey').keypress(function (e) {
77
- if (e.which == 13) {//Enter key pressed
78
- e.preventDefault();
79
- var username = jQuery('#mo2fa_usernamekey').val();
80
- document.getElementById("mo2f_show_loginform").elements[0].value = username;
81
- jQuery('#mo2f_show_loginform').submit();
82
- }
83
-
84
- });
85
- jQuery('.htmega-login-form-wrapper' ).on( 'submit', mo2fa_form_id, function(e) {
86
- e.preventDefault();
87
- mo2f_login();
88
-
89
- });
90
- function mo2fa_elementor(){
91
- if(my_ajax_object.mo2f_login_option == '1' || (my_ajax_object.mo2f_login_option == '0' && my_ajax_object.mo2f_enable_login_with_2nd_factor == '0' )){
92
- mo2f_login();
93
- }
94
- else{
95
- var username = jQuery('#mo2fa_usernamekey').val();
96
- document.getElementById("mo2f_show_loginform").elements[0].value = username;
97
- jQuery('#mo2f_show_loginform').submit();
98
- }
99
- }
100
-
101
- jQuery('#miniorange_login_submit').click(function(e){
102
- e.preventDefault();
103
- var username = jQuery('#mo2fa_usernamekey').val();
104
-
105
- document.getElementById("mo2f_show_loginform").elements[0].value = username;
106
-
107
- jQuery('#mo2f_show_loginform').submit();
108
- });
109
-
110
- function mo2f_login(){
111
- var username = jQuery('#mo2fa_user_name').val();
112
- var password = jQuery('#mo2fa_user_password').val();
113
-
114
- document.getElementById("mo2f_loginform").elements[0].value = username;
115
- document.getElementById("mo2f_loginform").elements[1].value = password;
116
-
117
- jQuery('#mo2f_loginform').submit();
118
- }
119
-
120
- }
121
-
122
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/js/pointers.js CHANGED
@@ -399,13 +399,13 @@
399
  jQuery(data.anchor_id).css('position','');
400
  switch(data.anchor_id){
401
  case '#scan_status_table':
402
- document.getElementById("mo2f_scan_set").click();
403
  break;
404
  case '#mo2f_select_scanning_files':
405
- document.getElementById("mo2f_report_scan").click();
406
  break;
407
  case '#scan_report_table':
408
- document.getElementById("mo2f_malware_view").click();
409
  break;
410
  case '#mo2f_scan_dash':
411
  jQuery('#mo_2fa_upgrade_tour').css('z-index',1);
399
  jQuery(data.anchor_id).css('position','');
400
  switch(data.anchor_id){
401
  case '#scan_status_table':
402
+ document.getElementById("scan_set").click();
403
  break;
404
  case '#mo2f_select_scanning_files':
405
+ document.getElementById("report_scan").click();
406
  break;
407
  case '#scan_report_table':
408
+ document.getElementById("malware_view").click();
409
  break;
410
  case '#mo2f_scan_dash':
411
  jQuery('#mo_2fa_upgrade_tour').css('z-index',1);
includes/js/settings_page.js CHANGED
@@ -100,8 +100,7 @@ jQuery(document).ready(function () {
100
  $(".new_plugin_dismiss").click(function(){
101
  ajaxCall("dismissplugin",".plugin_warning_hide-notice",true);
102
  });
103
-
104
-
105
 
106
  $(".dismiss_website_backup_notice").click(function(){
107
  ajaxCall("dismissbackup",".plugin_warning_hide-notice",true);
@@ -123,10 +122,6 @@ jQuery(document).ready(function () {
123
  ajaxCall("plugin_warning_never_show_again",".plugin_warning_hide-notice",true);
124
  });
125
 
126
- $(".mo2f_banner_never_show_again").click(function(){
127
- ajaxCall("mo2f_banner_never_show_again",".mo2f_offer_main_div",true);
128
- });
129
-
130
  $(".wpns_premium_option :input").attr("disabled",true);
131
 
132
  $("#setuptwofa_redirect").click(function(e){
@@ -165,34 +160,6 @@ window.onload = nav_popup();
165
  }
166
 
167
  function nav_popup() {
168
- if(document.getElementById("notice_div") !== null){
169
- document.getElementById("notice_div").style.width = "40%";
170
- setTimeout(function(){ jQuery('#notice_div').fadeOut('slow'); }, 3000);
171
- }
172
- }
173
-
174
- // OFFER TIMER
175
- var countDownDate = new Date("Jan 15, 2022 23:59:59").getTime();
176
-
177
- var x = setInterval(function() {
178
-
179
- var now = new Date().getTime();
180
- var distance = countDownDate - now;
181
-
182
- var days = Math.floor(distance / (1000 * 60 * 60 * 24));
183
- var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
184
- var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
185
- var seconds = Math.floor((distance % (1000 * 60)) / 1000);
186
- if(document.getElementById("mo2f_offer_timer")!= null){
187
- document.getElementById("mo2f_offer_timer").innerHTML = days + "d " + hours + "h "
188
- + minutes + "m " + seconds + "s ";
189
- }
190
-
191
- if (distance < 0) {
192
- clearInterval(x);
193
- if(document.getElementById("mo2f_offer_timer")!= null){
194
- document.getElementById("mo2f_offer_timer").innerHTML = "EXPIRED";
195
- }
196
- }
197
- }, 1000);
198
- // -----OFFER TIMER
100
  $(".new_plugin_dismiss").click(function(){
101
  ajaxCall("dismissplugin",".plugin_warning_hide-notice",true);
102
  });
103
+
 
104
 
105
  $(".dismiss_website_backup_notice").click(function(){
106
  ajaxCall("dismissbackup",".plugin_warning_hide-notice",true);
122
  ajaxCall("plugin_warning_never_show_again",".plugin_warning_hide-notice",true);
123
  });
124
 
 
 
 
 
125
  $(".wpns_premium_option :input").attr("disabled",true);
126
 
127
  $("#setuptwofa_redirect").click(function(e){
160
  }
161
 
162
  function nav_popup() {
163
+ document.getElementById("notice_div").style.width = "40%";
164
+ setTimeout(function(){ jQuery('#notice_div').fadeOut('slow'); }, 3000);
165
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/js/setup-wizard-2fa.js CHANGED
@@ -105,13 +105,15 @@
105
  },
106
  "31f1": function(t, e, i) {
107
  var s = {
108
- "./googleAuthenticator.svg": "7de8",
109
- "./AuthyAuthenticator.svg": "ddc9",
110
- "./OTPOverSMS.svg": "776b",
111
- "./OTPOverEmail.svg": "2db4",
112
- "./KBA.svg": "b1c2",
113
- "./DuoPush.svg": "7f3e",
114
- "./OTPOverTelegram.svg": "5f30",
 
 
115
  };
116
 
117
  function a(t) {
105
  },
106
  "31f1": function(t, e, i) {
107
  var s = {
108
+ "./amazonses.svg": "7de8",
109
+ "./gmail.svg": "ddc9",
110
+ "./mailgun.svg": "776b",
111
+ "./outlook.svg": "2db4",
112
+ "./sendgrid.svg": "b1c2",
113
+ "./sendinblue.svg": "7f3e",
114
+ "./smtp.svg": "5f30",
115
+ "./smtpcom.svg": "78cb",
116
+ "./zoho.svg": "2bc2"
117
  };
118
 
119
  function a(t) {
includes/js/skip_tour.js DELETED
@@ -1,19 +0,0 @@
1
- jQuery(document).ready( function(){
2
-
3
- jQuery('#skip-plugin-tour').onclick(function(e) {
4
- e.preventDefault();
5
- var rml_post_id = jQuery(this).data( 'id' );
6
- jQuery.ajax({
7
- url : readmelater_ajax.ajax_url,
8
- type : 'post',
9
- data : {
10
- action : 'read_me_later',
11
- post_id : rml_post_id
12
- },
13
- success : function( response ) {
14
- jQuery('.rml_contents').html(response);
15
- }
16
- });
17
- jQuery(this).hide();
18
- });
19
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/js/user-profile-twofa.js DELETED
@@ -1,194 +0,0 @@
1
- function mo2fa_viewMethod(evt, selected_method)
2
- {
3
- var i, tabcontent, tablinks;
4
- var is_registered = jQuery('input[name=\'is_registered\']').val();
5
- var trimmed_method = selected_method.replace(/ /g,'');
6
- jQuery('#method').val(selected_method);
7
- tabcontent = document.getElementsByClassName("mo2fa_tabcontent");
8
- for (i = 0; i < tabcontent.length; i++) {
9
- tabcontent[i].style.display = "none";
10
- }
11
- tablinks = document.getElementsByClassName("mo2fa_tablinks");
12
- for (i = 0; i < tablinks.length; i++) {
13
- tablinks[i].className = tablinks[i].className.replace(" active", "");
14
- }
15
- mo2fa_viewMethod.calledTimes++;
16
- jQuery("#mo2fa_count").val(mo2fa_viewMethod.calledTimes);
17
- document.getElementById(selected_method).style.display = "block";
18
- evt.currentTarget.className += " active";
19
- var same_user = jQuery('input[name=\'same_user\']').val();
20
- var textbox_id = 'textbox-'+trimmed_method;
21
- var textbox_element = document.getElementById(textbox_id);
22
- if(selected_method == 'SecurityQuestions')
23
- document.getElementById("mo2f_kbaquestion_1").focus();
24
- else if(selected_method == 'OTPOverSMS' && is_registered)
25
- document.getElementById("textbox-OTPOverSMS").focus();
26
- else if(textbox_element !== null && same_user && (is_registered && ((trimmed_method!="EmailVerification" && trimmed_method !='OTPOverEmail')) || (!is_registered && (trimmed_method=="GoogleAuthenticator" || trimmed_method=="AuthyAuthenticator" || trimmed_method=='SecurityQuestions'))))
27
- document.getElementById(textbox_id).focus();
28
- var save_button_id = jQuery('#'+'save-'+trimmed_method);
29
- var form_id = jQuery('#'+'mo2f_verify_form-'+trimmed_method);
30
- jQuery(form_id).submit(function(e){
31
- e.preventDefault();
32
- jQuery(save_button_id).click();
33
- });
34
- var MO2F_IS_ONPREM = jQuery('input[name=\'MO2F_IS_ONPREM\']').val();
35
- var cloud_methods = ["miniOrangeQRCodeAuthentication", "miniOrangeSoftToken","miniOrangePushNotification","OTPOverSMS","miniOrangeAuthenticator"];
36
- if(MO2F_IS_ONPREM == 0 && !is_registered)
37
- {
38
- jQuery('#wpns_nav_message').empty();
39
- jQuery('#wpns_nav_message').append("<div id='notice_div' class='mo2fa_overlay_error'><div class='mo2fa_popup_text'>&nbsp; &nbsp; <b>Please register with miniOrange for using this method</b> </div></div>");
40
- window.onload = nav_popup();
41
- return;
42
- }
43
- for(method of cloud_methods)
44
- {
45
- if((selected_method==method && !is_registered) || !MO2F_IS_ONPREM)
46
- {
47
- jQuery('#wpns_nav_message').empty();
48
- jQuery('#wpns_nav_message').append("<div id='notice_div' class='mo2fa_overlay_error'><div class='mo2fa_popup_text'>&nbsp; &nbsp; <b>Please register with miniOrange for using this method</b> </div></div>");
49
- window.onload = nav_popup();
50
- }
51
- }
52
- }
53
-
54
- jQuery('#mo2f_qrcode').hide();
55
- jQuery('.mo2f_miniAuthApp').click(function(){
56
- jQuery('#mo2f_qrcode').show();
57
- jQuery('#mo2fa_display_mo_methods').hide();
58
- var method = jQuery('input[name="miniOrangeAuthenticator"]:checked').val();
59
- });
60
-
61
- jQuery('.mo2f_miniAuthApp').click(function(){
62
- var method = jQuery('input[name="miniOrangeAuthenticator"]:checked').val();
63
- });
64
-
65
- jQuery('#miniOrangeSoftTokenButton').click(function() {
66
- jQuery('#method').val('miniOrangeSoftToken');
67
- jQuery("#save-miniOrangeAuthenticator").click(function(e){
68
- set_mo_methods('miniOrangeSoftToken');
69
- });
70
- });
71
- jQuery('#miniOrangeQRCodeAuthenticationButton').click(function() {
72
- jQuery('#method').val('miniOrangeQRCodeAuthentication');
73
- jQuery("#save-miniOrangeAuthenticator").click(function(e){
74
- set_mo_methods('miniOrangeQRCodeAuthentication');
75
- });
76
- });
77
- jQuery('#miniOrangePushNotificationButton').click(function() {
78
- jQuery('#method').val('miniOrangePushNotification');
79
- jQuery("#save-miniOrangeAuthenticator").click(function(e){
80
- set_mo_methods('miniOrangePushNotification');
81
- });
82
- });
83
-
84
-
85
- function set_mo_methods(trimmed_method){
86
- var textbox_id_element = jQuery('#'+'textbox-'+trimmed_method);
87
- var code = jQuery('#textbox-miniOrangeAuthenticator').val();
88
- var nonce = jQuery('input[name=\'mo2f-update-mobile-nonce\']').val();
89
- var transient_id = jQuery('input[name=\'transient_id\']').val();
90
- var is_registered = jQuery('input[name=\'is_registered\']').val();
91
- if(!is_registered)
92
- {
93
- jQuery('#wpns_nav_message').empty();
94
- jQuery('#wpns_nav_message').append("<div id='notice_div' class='mo2fa_overlay_error'><div class='mo2fa_popup_text'>&nbsp; &nbsp; <b>Please register with miniOrange for using this method</b> </div></div>");
95
- window.onload = nav_popup();
96
- }
97
- else
98
- {
99
- var data = {
100
- 'action' : 'mo_two_factor_ajax',
101
- 'mo_2f_two_factor_ajax' : 'mo2f_set_miniorange_methods',
102
- 'nonce' : nonce,
103
- 'code' : code,
104
- 'transient_id' : transient_id,
105
- };
106
- jQuery.post(ajaxurl, data, function(response) {
107
- if(response['status'] == "SUCCESS")
108
- {
109
- $("#mo2f_configuration_status").val(response['status']);
110
- }
111
- jQuery('#wpns_nav_message').empty();
112
- jQuery('#wpns_nav_message').append("<div id='notice_div' class='"+(response['status']=="SUCCESS"?"mo2fa_overlay_success":"mo2fa_overlay_error")+"'><div class='mo2fa_popup_text'>&nbsp; &nbsp; <b>"+response['status']+"</b> : "+response['message']+"</div></div>");
113
- window.onload = nav_popup();
114
- });
115
- }
116
- }
117
- function mo2fa_set_ga(code){
118
- var nonce = jQuery('input[name=\'mo2f-update-mobile-nonce\']').val();
119
- var transient_id = jQuery('input[name=\'transient_id\']').val();
120
- var ga_secret = jQuery('input[name=\'ga_secret\']').val();
121
- var data = {
122
- 'action' : 'mo_two_factor_ajax',
123
- 'mo_2f_two_factor_ajax' : 'mo2f_set_GA',
124
- 'nonce' : nonce,
125
- 'code' : code,
126
- 'transient_id' : transient_id,
127
- 'ga_secret' : ga_secret
128
- };
129
- jQuery.post(ajaxurl, data, function(response) {
130
- jQuery('#wpns_nav_message').empty();
131
- if(response == "SUCCESS"){
132
- jQuery("#mo2f_configuration_status").val(response);
133
- jQuery('#wpns_nav_message').append("<div id='notice_div' class='mo2fa_overlay_success'><div class='mo2fa_popup_text'>&nbsp; &nbsp; <b>SUCCESS</b> : Entered Passcode is correct. Click on Update Profile.</div></div>");
134
- }else if(response == "UserIdNotFound"){
135
- jQuery('#wpns_nav_message').append("<div id='notice_div' class='mo2fa_overlay_error'><div class='mo2fa_popup_text'>&nbsp; &nbsp; Error occured validating the user. </div></div>");
136
- }else{
137
- jQuery('#wpns_nav_message').append("<div id='notice_div' class='mo2fa_overlay_error'><div class='mo2fa_popup_text'>&nbsp; &nbsp; <b>ERROR</b> : Entered Passcode is incorrect. </div></div>");
138
- }
139
- window.onload = nav_popup();
140
- });
141
- }
142
- var MO2F_IS_ONPREM = jQuery('input[name=\'MO2F_IS_ONPREM\']').val();
143
- if(MO2F_IS_ONPREM == 1){
144
- jQuery(document).ready(function() {
145
- jQuery('.mo2f_gauth').qrcode({
146
- 'render': 'image',
147
- size: 175,
148
- 'text': jQuery('.mo2f_gauth').data('qrcode')
149
- });
150
- });
151
- }
152
-
153
- jQuery("#save-GoogleAuthenticator").click(function(e){
154
- var code = jQuery('#textbox-GoogleAuthenticator').val();
155
- mo2fa_set_ga(code);
156
- });
157
- jQuery("#save-AuthyAuthenticator").click(function(e){
158
- var code = jQuery('#textbox-AuthyAuthenticator').val();
159
- mo2fa_set_ga(code);
160
- });
161
- jQuery("#save-OTPOverSMS").click(function(e){
162
- var nonce = jQuery('input[name=\'mo2f-update-mobile-nonce\']').val();
163
- var transient_id = jQuery('input[name=\'transient_id\']').val();
164
- var phone = jQuery("#textbox-OTPOverSMS").val();
165
- var is_registered = jQuery('input[name=\'is_registered\']').val();
166
- if(!is_registered){
167
- jQuery('#wpns_nav_message').empty();
168
- jQuery('#wpns_nav_message').append("<div id='notice_div' class='mo2fa_overlay_error'><div class='mo2fa_popup_text'>&nbsp; &nbsp; <b>Please register with miniOrange for using this method</b> </div></div>");
169
- window.onload = nav_popup();
170
- }
171
- else{
172
- var data = {
173
- 'action' : 'mo_two_factor_ajax',
174
- 'mo_2f_two_factor_ajax' : 'mo2f_set_otp_over_sms',
175
- 'nonce' : nonce,
176
- 'transient_id' : transient_id,
177
- 'phone' : phone
178
- };
179
- jQuery.post(ajaxurl, data, function(response) {
180
- jQuery('#wpns_nav_message').empty();
181
- if(response == "UserIdNotFound"){
182
- jQuery('#wpns_nav_message').append("<div id='notice_div' class='mo2fa_overlay_error'><div class='mo2fa_popup_text'>&nbsp; &nbsp; Error occured validating the user. </div></div>");
183
- }else if(response != "ERROR"){
184
- jQuery('#wpns_nav_message').append("<div id='notice_div' class='mo2fa_overlay_success'><div class='mo2fa_popup_text'>&nbsp; &nbsp; Phone no. has been saved. Click on Update Profile.</div></div>");
185
- }else{
186
- jQuery('#wpns_nav_message').append("<div id='notice_div' class='mo2fa_overlay_error'><div class='mo2fa_popup_text'>&nbsp; &nbsp; There was an error saving your phone no. </div></div>");
187
- }
188
- window.onload = nav_popup();
189
- });
190
- }
191
- })
192
- mo2fa_viewMethod.calledTimes = 0;
193
- document.getElementById("defaultOpen").click();
194
- jQuery("#textbox-OTPOverSMS").intlTelInput();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/lib/mo-2fa-options-enum.php ADDED
@@ -0,0 +1,435 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ include "Mo2FABasicEnum.php";
3
+
4
+ class mo_2fa_options_enum_pointers extends Mo2FABasicEnum{
5
+ public static
6
+ $DEFAULT = array(
7
+ 'custom_admin_pointers4_8_52_default-miniorange-sp-metadata-url',
8
+ 'custom_admin_pointers4_8_52_default-miniorange-2fa-select-authentication',
9
+
10
+ 'custom_admin_pointers4_8_52_default-miniorange-2fa-configure',
11
+ 'custom_admin_pointers4_8_52_default-miniorange-2fa-choose_app',
12
+ 'custom_admin_pointers4_8_52_default-miniorange-2fa-download_app',
13
+ 'custom_admin_pointers4_8_52_default-miniorange-2fa-choose_name_on_app',
14
+ 'custom_admin_pointers4_8_52_default-miniorange-2fa-scan-qrcode',
15
+ 'custom_admin_pointers4_8_52_default-miniorange-2fa-enter_code_manually',
16
+ 'custom_admin_pointers4_8_52_default-miniorange-2fa-enter-otp',
17
+ 'custom_admin_pointers4_8_52_default-miniorange-2fa-save-otp',
18
+ 'custom_admin_pointers4_8_52_default-miniorange-2fa-test',
19
+ 'custom_admin_pointers4_8_52_default-miniorange-2fa-customizations',
20
+ 'custom_admin_pointers4_8_52_default-miniorange-2fa-inline-registration',
21
+ 'custom_admin_pointers4_8_52_default-miniorange-2fa-integration',
22
+ 'custom_admin_pointers4_8_52_default-miniorange-2fa-premium-features',
23
+
24
+ 'custom_admin_pointers4_8_52_default-miniorange-2fa-upgrade',
25
+ 'custom_admin_pointers4_8_52_default-miniorange-2fa-support',
26
+ 'custom_admin_pointers4_8_52_default-miniorange-2fa-support_open',
27
+
28
+
29
+ 'custom_admin_pointers4_8_52_default-miniorange-firewall-level',
30
+ 'custom_admin_pointers4_8_52_default-miniorange-firewall-attacks',
31
+ 'custom_admin_pointers4_8_52_default-miniorange-firewall-attack-limit',
32
+ 'custom_admin_pointers4_8_52_default-miniorange-firewall-rate-limit',
33
+ 'custom_admin_pointers4_8_52_default-miniorange-firewall-check-attacks',
34
+ 'custom_admin_pointers4_8_52_default-miniorange-firewall-support',
35
+ 'custom_admin_pointers4_8_52_default-miniorange-firewall-support_open',
36
+
37
+
38
+ 'custom_admin_pointers4_8_52_default-miniorange-malware-scan-modes',
39
+ 'custom_admin_pointers4_8_52_default-miniorange-malware-custom-scan-files',
40
+ 'custom_admin_pointers4_8_52_default-miniorange-malware-scan-reports',
41
+ 'custom_admin_pointers4_8_52_default-miniorange-malware-scan-dashboard',
42
+ 'custom_admin_pointers4_8_52_default-miniorange-malware-support',
43
+ 'custom_admin_pointers4_8_52_default-miniorange-malware-support_open',
44
+
45
+
46
+ 'custom_admin_pointers4_8_52_default-miniorange-advance-blocking-IP-blocking',
47
+ 'custom_admin_pointers4_8_52_default-miniorange-advance-blocking-IP-whitelisting',
48
+ 'custom_admin_pointers4_8_52_default-miniorange-advance-blocking-IP-lookup',
49
+ 'custom_admin_pointers4_8_52_default-miniorange-advance-blocking-IP-range',
50
+ 'custom_admin_pointers4_8_52_default-miniorange-advance-blocking-htaccess-blocking',
51
+ 'custom_admin_pointers4_8_52_default-miniorange-advance-blocking-browser-blocking',
52
+ 'custom_admin_pointers4_8_52_default-miniorange-advance-blocking-country-blocking',
53
+ 'custom_admin_pointers4_8_52_default-miniorange-advance-blocking-support',
54
+ 'custom_admin_pointers4_8_52_default-miniorange-advance-blocking-support_open',
55
+
56
+
57
+ 'custom_admin_pointers4_8_52_default-miniorange-backup-manual-db',
58
+ 'custom_admin_pointers4_8_52_default-miniorange-backup-auto-db',
59
+ 'custom_admin_pointers4_8_52_default-miniorange-backup-file',
60
+ 'custom_admin_pointers4_8_52_default-miniorange-backup-report',
61
+ 'custom_admin_pointers4_8_52_default-miniorange-backup-support',
62
+ 'custom_admin_pointers4_8_52_default-miniorange-backup-support_open',
63
+
64
+
65
+
66
+ 'custom_admin_pointers4_8_52_default-miniorange-login-spam-bruteforce',
67
+ 'custom_admin_pointers4_8_52_default-miniorange-login-spam-recaptcha',
68
+ 'custom_admin_pointers4_8_52_default-miniorange-login-spam-strong-pass',
69
+ 'custom_admin_pointers4_8_52_default-miniorange-login-spam-fake-registration',
70
+ 'custom_admin_pointers4_8_52_default-miniorange-login-spam-content',
71
+ 'custom_admin_pointers4_8_52_default-miniorange-login-spam-block-spam',
72
+ 'custom_admin_pointers4_8_52_default-miniorange-login-spam-support',
73
+ 'custom_admin_pointers4_8_52_default-miniorange-login-spam-support_open'
74
+ );
75
+
76
+
77
+ }
78
+
79
+
80
+ class mo_2fa_time_zones {
81
+
82
+ public static $time_zones = array(
83
+ "(GMT-11:00) Niue Time" => "Pacific/Niue",
84
+ "(GMT-11:00) Samoa Standard Time" => "Pacific/Pago_Pago",
85
+ "(GMT-10:00) Cook Islands Standard Time" => "Pacific/Rarotonga",
86
+ "(GMT-10:00) Hawaii-Aleutian Standard Time" => "Pacific/Honolulu",
87
+ "(GMT-10:00) Tahiti Time" => "Pacific/Tahiti",
88
+ "(GMT-09:30) Marquesas Time" => "Pacific/Marquesas",
89
+ "(GMT-09:00) Gambier Time" => "Pacific/Gambier",
90
+ "(GMT-09:00) Hawaii-Aleutian Time (Adak)" => "America/Adak",
91
+ "(GMT-08:00) Alaska Time - Anchorage" => "America/Anchorage",
92
+ "(GMT-08:00) Alaska Time - Juneau" => "America/Juneau",
93
+ "(GMT-08:00) Alaska Time - Metlakatla" => "America/Metlakatla",
94
+ "(GMT-08:00) Alaska Time - Nome" => "America/Nome",
95
+ "(GMT-08:00) Alaska Time - Sitka" => "America/Sitka",
96
+ "(GMT-08:00) Alaska Time - Yakutat" => "America/Yakutat",
97
+ "(GMT-08:00) Pitcairn Time" => "Pacific/Pitcairn",
98
+ "(GMT-07:00) Mexican Pacific Standard Time" => "America/Hermosillo",
99
+ "(GMT-07:00) Mountain Standard Time - Creston" => "America/Creston",
100
+ "(GMT-07:00) Mountain Standard Time - Dawson" => "America/Dawson",
101
+ "(GMT-07:00) Mountain Standard Time - Dawson Creek" => "America/Dawson_Creek",
102
+ "(GMT-07:00) Mountain Standard Time - Fort Nelson" => "America/Fort_Nelson",
103
+ "(GMT-07:00) Mountain Standard Time - Phoenix" => "America/Phoenix",
104
+ "(GMT-07:00) Mountain Standard Time - Whitehorse" => "America/Whitehorse",
105
+ "(GMT-07:00) Pacific Time - Los Angeles" => "America/Los_Angeles",
106
+ "(GMT-07:00) Pacific Time - Tijuana" => "America/Tijuana",
107
+ "(GMT-07:00) Pacific Time - Vancouver" => "America/Vancouver",
108
+ "(GMT-06:00) Central Standard Time - Belize" => "America/Belize",
109
+ "(GMT-06:00) Central Standard Time - Costa Rica" => "America/Costa_Rica",
110
+ "(GMT-06:00) Central Standard Time - El Salvador" => "America/El_Salvador",
111
+ "(GMT-06:00) Central Standard Time - Guatemala" => "America/Guatemala",
112
+ "(GMT-06:00) Central Standard Time - Managua" => "America/Managua",
113
+ "(GMT-06:00) Central Standard Time - Regina" => "America/Regina",
114
+ "(GMT-06:00) Central Standard Time - Swift Current" => "America/Swift_Current",
115
+ "(GMT-06:00) Central Standard Time - Tegucigalpa" => "America/Tegucigalpa",
116
+ "(GMT-06:00) Easter Island Time" => "Pacific/Easter",
117
+ "(GMT-06:00) Galapagos Time" => "Pacific/Galapagos",
118
+ "(GMT-06:00) Mexican Pacific Time - Chihuahua" => "America/Chihuahua",
119
+ "(GMT-06:00) Mexican Pacific Time - Mazatlan" => "America/Mazatlan",
120
+ "(GMT-06:00) Mountain Time - Boise" => "America/Boise",
121
+ "(GMT-06:00) Mountain Time - Cambridge Bay" => "America/Cambridge_Bay",
122
+ "(GMT-06:00) Mountain Time - Denver" => "America/Denver",
123
+ "(GMT-06:00) Mountain Time - Edmonton" => "America/Edmonton",
124
+ "(GMT-06:00) Mountain Time - Inuvik" => "America/Inuvik",
125
+ "(GMT-06:00) Mountain Time - Ojinaga" => "America/Ojinaga",
126
+ "(GMT-06:00) Mountain Time - Yellowknife" => "America/Yellowknife",
127
+ "(GMT-05:00) Acre Standard Time - Eirunepe" => "America/Eirunepe",
128
+ "(GMT-05:00) Acre Standard Time - Rio Branco" => "America/Rio_Branco",
129
+ "(GMT-05:00) Central Time - Bahia Banderas" => "America/Bahia_Banderas",
130
+ "(GMT-05:00) Central Time - Beulah, North Dakota" => "America/North_Dakota/Beulah",
131
+ "(GMT-05:00) Central Time - Center, North Dakota" => "America/North_Dakota/Center",
132
+ "(GMT-05:00) Central Time - Chicago" => "America/Chicago",
133
+ "(GMT-05:00) Central Time - Knox, Indiana" => "America/Indiana/Knox",
134
+ "(GMT-05:00) Central Time - Matamoros" => "America/Matamoros",
135
+ "(GMT-05:00) Central Time - Menominee" => "America/Menominee",
136
+ "(GMT-05:00) Central Time - Merida" => "America/Merida",
137
+ "(GMT-05:00) Central Time - Mexico City" => "America/Mexico_City",
138
+ "(GMT-05:00) Central Time - Monterrey" => "America/Monterrey",
139
+ "(GMT-05:00) Central Time - New Salem, North Dakota" => "America/North_Dakota/New_Salem",
140
+ "(GMT-05:00) Central Time - Rainy River" => "America/Rainy_River",
141
+ "(GMT-05:00) Central Time - Rankin Inlet" => "America/Rankin_Inlet",
142
+ "(GMT-05:00) Central Time - Resolute" => "America/Resolute",
143
+ "(GMT-05:00) Central Time - Tell City, Indiana" => "America/Indiana/Tell_City",
144
+ "(GMT-05:00) Central Time - Winnipeg" => "America/Winnipeg",
145
+ "(GMT-05:00) Colombia Standard Time" => "America/Bogota",
146
+ "(GMT-05:00) Eastern Standard Time - Atikokan" => "America/Atikokan",
147
+ "(GMT-05:00) Eastern Standard Time - Cancun" => "America/Cancun",
148
+ "(GMT-05:00) Eastern Standard Time - Jamaica" => "America/Jamaica",
149
+ "(GMT-05:00) Eastern Standard Time - Panama" => "America/Panama",
150
+ "(GMT-05:00) Ecuador Time" => "America/Guayaquil",
151
+ "(GMT-05:00) Peru Standard Time" => "America/Lima",
152
+ "(GMT-04:00) Amazon Standard Time - Boa Vista" => "America/Boa_Vista",
153
+ "(GMT-04:00) Amazon Standard Time - Campo Grande" => "America/Campo_Grande",
154
+ "(GMT-04:00) Amazon Standard Time - Cuiaba" => "America/Cuiaba",
155
+ "(GMT-04:00) Amazon Standard Time - Manaus" => "America/Manaus",
156
+ "(GMT-04:00) Amazon Standard Time - Porto Velho" => "America/Porto_Velho",
157
+ "(GMT-04:00) Atlantic Standard Time - Barbados" => "America/Barbados",
158
+ "(GMT-04:00) Atlantic Standard Time - Blanc-Sablon" => "America/Blanc-Sablon",
159
+ "(GMT-04:00) Atlantic Standard Time - Cura�ao" => "America/Curacao",
160
+ "(GMT-04:00) Atlantic Standard Time - Martinique" => "America/Martinique",
161
+ "(GMT-04:00) Atlantic Standard Time - Port of Spain" => "America/Port_of_Spain",
162
+ "(GMT-04:00) Atlantic Standard Time - Puerto Rico" => "America/Puerto_Rico",
163
+ "(GMT-04:00) Atlantic Standard Time - Santo Domingo" => "America/Santo_Domingo",
164
+ "(GMT-04:00) Bolivia Time" => "America/La_Paz",
165
+ "(GMT-04:00) Chile Time" => "America/Santiago",
166
+ "(GMT-04:00) Cuba Time" => "America/Havana",
167
+ "(GMT-04:00) Eastern Time - Detroit" => "America/Detroit",
168
+ "(GMT-04:00) Eastern Time - Grand Turk" => "America/Grand_Turk",
169
+ "(GMT-04:00) Eastern Time - Indianapolis" => "America/Indiana/Indianapolis",
170
+ "(GMT-04:00) Eastern Time - Iqaluit" => "America/Iqaluit",
171
+ "(GMT-04:00) Eastern Time - Louisville" => "America/Kentucky/Louisville",
172
+ "(GMT-04:00) Eastern Time - Marengo, Indiana" => "America/Indiana/Marengo",
173
+ "(GMT-04:00) Eastern Time - Monticello, Kentucky" => "America/Kentucky/Monticello",
174
+ "(GMT-04:00) Eastern Time - Nassau" => "America/Nassau",
175
+ "(GMT-04:00) Eastern Time - New York" => "America/New_York",
176
+ "(GMT-04:00) Eastern Time - Nipigon" => "America/Nipigon",
177
+ "(GMT-04:00) Eastern Time - Pangnirtung" => "America/Pangnirtung",
178
+ "(GMT-04:00) Eastern Time - Petersburg, Indiana" => "America/Indiana/Petersburg",
179
+ "(GMT-04:00) Eastern Time - Port-au-Prince" => "America/Port-au-Prince",
180
+ "(GMT-04:00) Eastern Time - Thunder Bay" => "America/Thunder_Bay",
181
+ "(GMT-04:00) Eastern Time - Toronto" => "America/Toronto",
182
+ "(GMT-04:00) Eastern Time - Vevay, Indiana" => "America/Indiana/Vevay",
183
+ "(GMT-04:00) Eastern Time - Vincennes, Indiana" => "America/Indiana/Vincennes",
184
+ "(GMT-04:00) Eastern Time - Winamac, Indiana" => "America/Indiana/Winamac",
185
+ "(GMT-04:00) Guyana Time" => "America/Guyana",
186
+ "(GMT-04:00) Paraguay Time" => "America/Asuncion",
187
+ "(GMT-04:00) Venezuela Time" => "America/Caracas",
188
+ "(GMT-03:00) Argentina Standard Time - Buenos Aires" => "America/Argentina/Buenos_Aires",
189
+ "(GMT-03:00) Argentina Standard Time - Catamarca" => "America/Argentina/Catamarca",
190
+ "(GMT-03:00) Argentina Standard Time - Cordoba" => "America/Argentina/Cordoba",
191
+ "(GMT-03:00) Argentina Standard Time - Jujuy" => "America/Argentina/Jujuy",
192
+ "(GMT-03:00) Argentina Standard Time - La Rioja" => "America/Argentina/La_Rioja",
193
+ "(GMT-03:00) Argentina Standard Time - Mendoza" => "America/Argentina/Mendoza",
194
+ "(GMT-03:00) Argentina Standard Time - Rio Gallegos" => "America/Argentina/Rio_Gallegos",
195
+ "(GMT-03:00) Argentina Standard Time - Salta" => "America/Argentina/Salta",
196
+ "(GMT-03:00) Argentina Standard Time - San Juan" => "America/Argentina/San_Juan",
197
+ "(GMT-03:00) Argentina Standard Time - San Luis" => "America/Argentina/San_Luis",
198
+ "(GMT-03:00) Argentina Standard Time - Tucuman" => "America/Argentina/Tucuman",
199
+ "(GMT-03:00) Argentina Standard Time - Ushuaia" => "America/Argentina/Ushuaia",
200
+ "(GMT-03:00) Atlantic Time - Bermuda" => "Atlantic/Bermuda",
201
+ "(GMT-03:00) Atlantic Time - Glace Bay" => "America/Glace_Bay",
202
+ "(GMT-03:00) Atlantic Time - Goose Bay" => "America/Goose_Bay",
203
+ "(GMT-03:00) Atlantic Time - Halifax" => "America/Halifax",
204
+ "(GMT-03:00) Atlantic Time - Moncton" => "America/Moncton",
205
+ "(GMT-03:00) Atlantic Time - Thule" => "America/Thule",
206
+ "(GMT-03:00) Brasilia Standard Time - Araguaina" => "America/Araguaina",
207
+ "(GMT-03:00) Brasilia Standard Time - Bahia" => "America/Bahia",
208
+ "(GMT-03:00) Brasilia Standard Time - Belem" => "America/Belem",
209
+ "(GMT-03:00) Brasilia Standard Time - Fortaleza" => "America/Fortaleza",
210
+ "(GMT-03:00) Brasilia Standard Time - Maceio" => "America/Maceio",
211
+ "(GMT-03:00) Brasilia Standard Time - Recife" => "America/Recife",
212
+ "(GMT-03:00) Brasilia Standard Time - Santarem" => "America/Santarem",
213
+ "(GMT-03:00) Brasilia Standard Time - Sao Paulo" => "America/Sao_Paulo",
214
+ "(GMT-03:00) Chile Time" => "America/Santiago",
215
+ "(GMT-03:00) Falkland Islands Standard Time" => "Atlantic/Stanley",
216
+ "(GMT-03:00) French Guiana Time" => "America/Cayenne",
217
+ "(GMT-03:00) Palmer Time" => "Antarctica/Palmer",
218
+ "(GMT-03:00) Punta Arenas Time" => "America/Punta_Arenas",
219
+ "(GMT-03:00) Rothera Time" => "Antarctica/Rothera",
220
+ "(GMT-03:00) Suriname Time" => "America/Paramaribo",
221
+ "(GMT-03:00) Uruguay Standard Time" => "America/Montevideo",
222
+ "(GMT-02:30) Newfoundland Time" => "America/St_Johns",
223
+ "(GMT-02:00) Fernando de Noronha Standard Time" => "America/Noronha",
224
+ "(GMT-02:00) South Georgia Time" => "Atlantic/South_Georgia",
225
+ "(GMT-02:00) St. Pierre & Miquelon Time" => "America/Miquelon",
226
+ "(GMT-02:00) West Greenland Time" => "America/Nuuk",
227
+ "(GMT-01:00) Cape Verde Standard Time" => "Atlantic/Cape_Verde",
228
+ "(GMT+00:00) Azores Time" => "Atlantic/Azores",
229
+ "(GMT+00:00) Coordinated Universal Time" => "UTC",
230
+ "(GMT+00:00) East Greenland Time" => "America/Scoresbysund",
231
+ "(GMT+00:00) Greenwich Mean Time" => "Etc/GMT",
232
+ "(GMT+00:00) Greenwich Mean Time - Abidjan" => "Africa/Abidjan",
233
+ "(GMT+00:00) Greenwich Mean Time - Accra" => "Africa/Accra",
234
+ "(GMT+00:00) Greenwich Mean Time - Bissau" => "Africa/Bissau",
235
+ "(GMT+00:00) Greenwich Mean Time - Danmarkshavn" => "America/Danmarkshavn",
236
+ "(GMT+00:00) Greenwich Mean Time - Monrovia" => "Africa/Monrovia",
237
+ "(GMT+00:00) Greenwich Mean Time - Reykjavik" => "Atlantic/Reykjavik",
238
+ "(GMT+00:00) Greenwich Mean Time - S�o Tom�" => "Africa/Sao_Tome",
239
+ "(GMT+01:00) Central European Standard Time - Algiers" => "Africa/Algiers",
240
+ "(GMT+01:00) Central European Standard Time - Tunis" => "Africa/Tunis",
241
+ "(GMT+01:00) Ireland Time" => "Europe/Dublin",
242
+ "(GMT+01:00) Morocco Time" => "Africa/Casablanca",
243
+ "(GMT+01:00) United Kingdom Time" => "Europe/London",
244
+ "(GMT+01:00) West Africa Standard Time - Lagos" => "Africa/Lagos",
245
+ "(GMT+01:00) West Africa Standard Time - Ndjamena" => "Africa/Ndjamena",
246
+ "(GMT+01:00) Western European Time - Canary" => "Atlantic/Canary",
247
+ "(GMT+01:00) Western European Time - Faroe" => "Atlantic/Faroe",
248
+ "(GMT+01:00) Western European Time - Lisbon" => "Europe/Lisbon",
249
+ "(GMT+01:00) Western European Time - Madeira" => "Atlantic/Madeira",
250
+ "(GMT+01:00) Western Sahara Time" => "Africa/El_Aaiun",
251
+ "(GMT+02:00) Central Africa Time - Khartoum" => "Africa/Khartoum",
252
+ "(GMT+02:00) Central Africa Time - Maputo" => "Africa/Maputo",
253
+ "(GMT+02:00) Central Africa Time - Windhoek" => "Africa/Windhoek",
254
+ "(GMT+02:00) Central European Time - Amsterdam" => "Europe/Amsterdam",
255
+ "(GMT+02:00) Central European Time - Andorra" => "Europe/Andorra",
256
+ "(GMT+02:00) Central European Time - Belgrade" => "Europe/Belgrade",
257
+ "(GMT+02:00) Central European Time - Berlin" => "Europe/Berlin",
258
+ "(GMT+02:00) Central European Time - Brussels" => "Europe/Brussels",
259
+ "(GMT+02:00) Central European Time - Budapest" => "Europe/Budapest",
260
+ "(GMT+02:00) Central European Time - Ceuta" => "Africa/Ceuta",
261
+ "(GMT+02:00) Central European Time - Copenhagen" => "Europe/Copenhagen",
262
+ "(GMT+02:00) Central European Time - Gibraltar" => "Europe/Gibraltar",
263
+ "(GMT+02:00) Central European Time - Luxembourg" => "Europe/Luxembourg",
264
+ "(GMT+02:00) Central European Time - Madrid" => "Europe/Madrid",
265
+ "(GMT+02:00) Central European Time - Malta" => "Europe/Malta",
266
+ "(GMT+02:00) Central European Time - Monaco" => "Europe/Monaco",
267
+ "(GMT+02:00) Central European Time - Oslo" => "Europe/Oslo",
268
+ "(GMT+02:00) Central European Time - Paris" => "Europe/Paris",
269
+ "(GMT+02:00) Central European Time - Prague" => "Europe/Prague",
270
+ "(GMT+02:00) Central European Time - Rome" => "Europe/Rome",
271
+ "(GMT+02:00) Central European Time - Stockholm" => "Europe/Stockholm",
272
+ "(GMT+02:00) Central European Time - Tirane" => "Europe/Tirane",
273
+ "(GMT+02:00) Central European Time - Vienna" => "Europe/Vienna",
274
+ "(GMT+02:00) Central European Time - Warsaw" => "Europe/Warsaw",
275
+ "(GMT+02:00) Central European Time - Zurich" => "Europe/Zurich",
276
+ "(GMT+02:00) Eastern European Standard Time - Cairo" => "Africa/Cairo",
277
+ "(GMT+02:00) Eastern European Standard Time - Kaliningrad" => "Europe/Kaliningrad",
278
+ "(GMT+02:00) Eastern European Standard Time - Tripoli" => "Africa/Tripoli",
279
+ "(GMT+02:00) South Africa Standard Time" => "Africa/Johannesburg",
280
+ "(GMT+02:00) Troll Time" => "Antarctica/Troll",
281
+ "(GMT+03:00) Arabian Standard Time - Baghdad" => "Asia/Baghdad",
282
+ "(GMT+03:00) Arabian Standard Time - Qatar" => "Asia/Qatar",
283
+ "(GMT+03:00) Arabian Standard Time - Riyadh" => "Asia/Riyadh",
284
+ "(GMT+03:00) East Africa Time - Juba" => "Africa/Juba",
285
+ "(GMT+03:00) East Africa Time - Nairobi" => "Africa/Nairobi",
286
+ "(GMT+03:00) Eastern European Time - Amman" => "Asia/Amman",
287
+ "(GMT+03:00) Eastern European Time - Athens" => "Europe/Athens",
288
+ "(GMT+03:00) Eastern European Time - Beirut" => "Asia/Beirut",
289
+ "(GMT+03:00) Eastern European Time - Bucharest" => "Europe/Bucharest",
290
+ "(GMT+03:00) Eastern European Time - Chisinau" => "Europe/Chisinau",
291
+ "(GMT+03:00) Eastern European Time - Damascus" => "Asia/Damascus",
292
+ "(GMT+03:00) Eastern European Time - Gaza" => "Asia/Gaza",
293
+ "(GMT+03:00) Eastern European Time - Hebron" => "Asia/Hebron",
294
+ "(GMT+03:00) Eastern European Time - Helsinki" => "Europe/Helsinki",
295
+ "(GMT+03:00) Eastern European Time - Kiev" => "Europe/Kiev",
296
+ "(GMT+03:00) Eastern European Time - Nicosia" => "Asia/Nicosia",
297
+ "(GMT+03:00) Eastern European Time - Riga" => "Europe/Riga",
298
+ "(GMT+03:00) Eastern European Time - Sofia" => "Europe/Sofia",
299
+ "(GMT+03:00) Eastern European Time - Tallinn" => "Europe/Tallinn",
300
+ "(GMT+03:00) Eastern European Time - Uzhhorod" => "Europe/Uzhgorod",
301
+ "(GMT+03:00) Eastern European Time - Vilnius" => "Europe/Vilnius",
302
+ "(GMT+03:00) Eastern European Time - Zaporozhye" => "Europe/Zaporozhye",
303
+ "(GMT+03:00) Famagusta Time" => "Asia/Famagusta",
304
+ "(GMT+03:00) Israel Time" => "Asia/Jerusalem",
305
+ "(GMT+03:00) Kirov Time" => "Europe/Kirov",
306
+ "(GMT+03:00) Moscow Standard Time - Minsk" => "Europe/Minsk",
307
+ "(GMT+03:00) Moscow Standard Time - Moscow" => "Europe/Moscow",
308
+ "(GMT+03:00) Moscow Standard Time - Simferopol" => "Europe/Simferopol",
309
+ "(GMT+03:00) Syowa Time" => "Antarctica/Syowa",
310
+ "(GMT+03:00) Turkey Time" => "Europe/Istanbul",
311
+ "(GMT+04:00) Armenia Standard Time" => "Asia/Yerevan",
312
+ "(GMT+04:00) Astrakhan Time" => "Europe/Astrakhan",
313
+ "(GMT+04:00) Azerbaijan Standard Time" => "Asia/Baku",
314
+ "(GMT+04:00) Georgia Standard Time" => "Asia/Tbilisi",
315
+ "(GMT+04:00) Gulf Standard Time" => "Asia/Dubai",
316
+ "(GMT+04:00) Mauritius Standard Time" => "Indian/Mauritius",
317
+ "(GMT+04:00) R�union Time" => "Indian/Reunion",
318
+ "(GMT+04:00) Samara Standard Time" => "Europe/Samara",
319
+ "(GMT+04:00) Saratov Time" => "Europe/Saratov",
320
+ "(GMT+04:00) Seychelles Time" => "Indian/Mahe",
321
+ "(GMT+04:00) Ulyanovsk Time" => "Europe/Ulyanovsk",
322
+ "(GMT+04:00) Volgograd Standard Time" => "Europe/Volgograd",
323
+ "(GMT+04:30) Afghanistan Time" => "Asia/Kabul",
324
+ "(GMT+04:30) Iran Time" => "Asia/Tehran",
325
+ "(GMT+05:00) French Southern & Antarctic Time" => "Indian/Kerguelen",
326
+ "(GMT+05:00) Maldives Time" => "Indian/Maldives",
327
+ "(GMT+05:00) Mawson Time" => "Antarctica/Mawson",
328
+ "(GMT+05:00) Pakistan Standard Time" => "Asia/Karachi",
329
+ "(GMT+05:00) Tajikistan Time" => "Asia/Dushanbe",
330
+ "(GMT+05:00) Turkmenistan Standard Time" => "Asia/Ashgabat",
331
+ "(GMT+05:00) Uzbekistan Standard Time - Samarkand" => "Asia/Samarkand",
332
+ "(GMT+05:00) Uzbekistan Standard Time - Tashkent" => "Asia/Tashkent",
333
+ "(GMT+05:00) West Kazakhstan Time - Aqtau" => "Asia/Aqtau",
334
+ "(GMT+05:00) West Kazakhstan Time - Aqtobe" => "Asia/Aqtobe",
335
+ "(GMT+05:00) West Kazakhstan Time - Atyrau" => "Asia/Atyrau",
336
+ "(GMT+05:00) West Kazakhstan Time - Oral" => "Asia/Oral",
337
+ "(GMT+05:00) West Kazakhstan Time - Qyzylorda" => "Asia/Qyzylorda",
338
+ "(GMT+05:00) Yekaterinburg Standard Time" => "Asia/Yekaterinburg",
339
+ "(GMT+05:30) Indian Standard Time - Colombo" => "Asia/Colombo",
340
+ "(GMT+05:30) Indian Standard Time - Kolkata" => "Asia/Kolkata",
341
+ "(GMT+05:45) Nepal Time" => "Asia/Kathmandu",
342
+ "(GMT+06:00) Bangladesh Standard Time" => "Asia/Dhaka",
343
+ "(GMT+06:00) Bhutan Time" => "Asia/Thimphu",
344
+ "(GMT+06:00) East Kazakhstan Time - Almaty" => "Asia/Almaty",
345
+ "(GMT+06:00) East Kazakhstan Time - Kostanay" => "Asia/Qostanay",
346
+ "(GMT+06:00) Indian Ocean Time" => "Indian/Chagos",
347
+ "(GMT+06:00) Kyrgyzstan Time" => "Asia/Bishkek",
348
+ "(GMT+06:00) Omsk Standard Time" => "Asia/Omsk",
349
+ "(GMT+06:00) Urumqi Time" => "Asia/Urumqi",
350
+ "(GMT+06:00) Vostok Time" => "Antarctica/Vostok",
351
+ "(GMT+06:30) Cocos Islands Time" => "Indian/Cocos",
352
+ "(GMT+06:30) Myanmar Time" => "Asia/Yangon",
353
+ "(GMT+07:00) Barnaul Time" => "Asia/Barnaul",
354
+ "(GMT+07:00) Christmas Island Time" => "Indian/Christmas",
355
+ "(GMT+07:00) Davis Time" => "Antarctica/Davis",
356
+ "(GMT+07:00) Hovd Standard Time" => "Asia/Hovd",
357
+ "(GMT+07:00) Indochina Time - Bangkok" => "Asia/Bangkok",
358
+ "(GMT+07:00) Indochina Time - Ho Chi Minh City" => "Asia/Ho_Chi_Minh",
359
+ "(GMT+07:00) Krasnoyarsk Standard Time - Krasnoyarsk" => "Asia/Krasnoyarsk",
360
+ "(GMT+07:00) Krasnoyarsk Standard Time - Novokuznetsk" => "Asia/Novokuznetsk",
361
+ "(GMT+07:00) Novosibirsk Standard Time" => "Asia/Novosibirsk",
362
+ "(GMT+07:00) Tomsk Time" => "Asia/Tomsk",
363
+ "(GMT+07:00) Western Indonesia Time - Jakarta" => "Asia/Jakarta",
364
+ "(GMT+07:00) Western Indonesia Time - Pontianak" => "Asia/Pontianak",
365
+ "(GMT+08:00) Australian Western Standard Time - Casey" => "Antarctica/Casey",
366
+ "(GMT+08:00) Australian Western Standard Time - Perth" => "Australia/Perth",
367
+ "(GMT+08:00) Brunei Darussalam Time" => "Asia/Brunei",
368
+ "(GMT+08:00) Central Indonesia Time" => "Asia/Makassar",
369
+ "(GMT+08:00) China Standard Time - Macao" => "Asia/Macau",
370
+ "(GMT+08:00) China Standard Time - Shanghai" => "Asia/Shanghai",
371
+ "(GMT+08:00) Hong Kong Standard Time" => "Asia/Hong_Kong",
372
+ "(GMT+08:00) Irkutsk Standard Time" => "Asia/Irkutsk",
373
+ "(GMT+08:00) Malaysia Time - Kuala Lumpur" => "Asia/Kuala_Lumpur",
374
+ "(GMT+08:00) Malaysia Time - Kuching" => "Asia/Kuching",
375
+ "(GMT+08:00) Philippine Standard Time" => "Asia/Manila",
376
+ "(GMT+08:00) Singapore Standard Time" => "Asia/Singapore",
377
+ "(GMT+08:00) Taipei Standard Time" => "Asia/Taipei",
378
+ "(GMT+08:00) Ulaanbaatar Standard Time - Choibalsan" => "Asia/Choibalsan",
379
+ "(GMT+08:00) Ulaanbaatar Standard Time - Ulaanbaatar" => "Asia/Ulaanbaatar",
380
+ "(GMT+08:45) Australian Central Western Standard Time" => "Australia/Eucla",
381
+ "(GMT+09:00) East Timor Time" => "Asia/Dili",
382
+ "(GMT+09:00) Eastern Indonesia Time" => "Asia/Jayapura",
383
+ "(GMT+09:00) Japan Standard Time" => "Asia/Tokyo",
384
+ "(GMT+09:00) Korean Standard Time - Pyongyang" => "Asia/Pyongyang",
385
+ "(GMT+09:00) Korean Standard Time - Seoul" => "Asia/Seoul",
386
+ "(GMT+09:00) Palau Time" => "Pacific/Palau",
387
+ "(GMT+09:00) Yakutsk Standard Time - Chita" => "Asia/Chita",
388
+ "(GMT+09:00) Yakutsk Standard Time - Khandyga" => "Asia/Khandyga",
389
+ "(GMT+09:00) Yakutsk Standard Time - Yakutsk" => "Asia/Yakutsk",
390
+ "(GMT+09:30) Australian Central Standard Time" => "Australia/Darwin",
391
+ "(GMT+09:30) Central Australia Time - Adelaide" => "Australia/Adelaide",
392
+ "(GMT+09:30) Central Australia Time - Broken Hill" => "Australia/Broken_Hill",
393
+ "(GMT+10:00) Australian Eastern Standard Time - Brisbane" => "Australia/Brisbane",
394
+ "(GMT+10:00) Australian Eastern Standard Time - Lindeman" => "Australia/Lindeman",
395
+ "(GMT+10:00) Chamorro Standard Time" => "Pacific/Guam",
396
+ "(GMT+10:00) Chuuk Time" => "Pacific/Chuuk",
397
+ "(GMT+10:00) Dumont-d�Urville Time" => "Antarctica/DumontDUrville",
398
+ "(GMT+10:00) Eastern Australia Time - Currie" => "Australia/Currie",
399
+ "(GMT+10:00) Eastern Australia Time - Hobart" => "Australia/Hobart",
400
+ "(GMT+10:00) Eastern Australia Time - Melbourne" => "Australia/Melbourne",
401
+ "(GMT+10:00) Eastern Australia Time - Sydney" => "Australia/Sydney",
402
+ "(GMT+10:00) Papua New Guinea Time" => "Pacific/Port_Moresby",
403
+ "(GMT+10:00) Vladivostok Standard Time - Ust-Nera" => "Asia/Ust-Nera",
404
+ "(GMT+10:00) Vladivostok Standard Time - Vladivostok" => "Asia/Vladivostok",
405
+ "(GMT+10:30) Lord Howe Time" => "Australia/Lord_Howe",
406
+ "(GMT+11:00) Bougainville Time" => "Pacific/Bougainville",
407
+ "(GMT+11:00) Kosrae Time" => "Pacific/Kosrae",
408
+ "(GMT+11:00) Macquarie Island Time" => "Antarctica/Macquarie",
409
+ "(GMT+11:00) Magadan Standard Time" => "Asia/Magadan",
410
+ "(GMT+11:00) New Caledonia Standard Time" => "Pacific/Noumea",
411
+ "(GMT+11:00) Norfolk Island Time" => "Pacific/Norfolk",
412
+ "(GMT+11:00) Ponape Time" => "Pacific/Pohnpei",
413
+ "(GMT+11:00) Sakhalin Standard Time" => "Asia/Sakhalin",
414
+ "(GMT+11:00) Solomon Islands Time" => "Pacific/Guadalcanal",
415
+ "(GMT+11:00) Srednekolymsk Time" => "Asia/Srednekolymsk",
416
+ "(GMT+11:00) Vanuatu Standard Time" => "Pacific/Efate",
417
+ "(GMT+12:00) Anadyr Standard Time" => "Asia/Anadyr",
418
+ "(GMT+12:00) Fiji Time" => "Pacific/Fiji",
419
+ "(GMT+12:00) Gilbert Islands Time" => "Pacific/Tarawa",
420
+ "(GMT+12:00) Marshall Islands Time - Kwajalein" => "Pacific/Kwajalein",
421
+ "(GMT+12:00) Marshall Islands Time - Majuro" => "Pacific/Majuro",
422
+ "(GMT+12:00) Nauru Time" => "Pacific/Nauru",
423
+ "(GMT+12:00) New Zealand Time" => "Pacific/Auckland",
424
+ "(GMT+12:00) Petropavlovsk-Kamchatski Standard Time" => "Asia/Kamchatka",
425
+ "(GMT+12:00) Tuvalu Time" => "Pacific/Funafuti",
426
+ "(GMT+12:00) Wake Island Time" => "Pacific/Wake",
427
+ "(GMT+12:00) Wallis & Futuna Time" => "Pacific/Wallis",
428
+ "(GMT+12:45) Chatham Time" => "Pacific/Chatham",
429
+ "(GMT+13:00) Apia Time" => "Pacific/Apia",
430
+ "(GMT+13:00) Phoenix Islands Time" => "Pacific/Enderbury",
431
+ "(GMT+13:00) Tokelau Time" => "Pacific/Fakaofo",
432
+ "(GMT+13:00) Tonga Standard Time" => "Pacific/Tongatapu",
433
+ "(GMT+14:00) Line Islands Time" => "Pacific/Kiritimati"
434
+ );
435
+ }
miniorange_2_factor_settings.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: miniOrange 2 Factor Authentication
4
  * Plugin URI: https://miniorange.com
5
  * Description: This TFA plugin provides various two-factor authentication methods as an additional layer of security after the default wordpress login. We Support Google/Authy/LastPass Authenticator, QR Code, Push Notification, Soft Token and Security Questions(KBA) for 3 User in the free version of the plugin.
6
- * Version: 5.5.1
7
  * Author: miniOrange
8
  * Author URI: https://miniorange.com
9
  * Text Domain: miniorange-2-factor-authentication
@@ -14,8 +14,9 @@
14
  require dirname(__FILE__).DIRECTORY_SEPARATOR.'views'.DIRECTORY_SEPARATOR.'email-IPaddress.php';
15
 
16
  define( 'MO_HOST_NAME', 'https://login.xecurify.com' );
17
- define( 'MO2F_VERSION', '5.5.1' );
18
- define( 'MO2F_PLUGIN_URL', (plugin_dir_url(__FILE__)));
 
19
  define( 'MO2F_TEST_MODE', false );
20
  define( 'MO2F_IS_ONPREM', get_option('is_onprem'));
21
 
@@ -36,7 +37,7 @@
36
  add_action( 'admin_init' , array( $this, 'miniorange_reset_save_settings' ) );
37
  add_filter('manage_users_columns' , array( $this, 'mo2f_mapped_email_column' ) );
38
  add_action('manage_users_custom_column' , array( $this, 'mo2f_mapped_email_column_content'), 10, 3 );
39
- add_action('admin_notices' , array( $this, 'mo2f_notices' ) );
40
  $actions = add_filter('user_row_actions' , array( $this, 'miniorange_reset_users' ),10 , 2 );
41
  add_action( 'admin_footer' , array( $this, 'feedback_request' ) );
42
  add_action('admin_notices',array( $this, 'mo_wpns_malware_notices' ) );
@@ -50,7 +51,6 @@
50
  $customShort = new TwoFACustomRegFormShortcode();
51
  add_action('admin_init',array( $this, 'mo2f_enable_register_shortcode' ));
52
  add_action('admin_init',array( $customShort, 'mo_enqueue_shortcode' ));
53
- add_action( 'elementor/init', array($this, 'mo2fa_login_elementor_note'));
54
  add_shortcode('mo2f_enable_register',array($this,'mo2f_enable_register_shortcode'));
55
  if(defined("DIGIMEMBER_DIR"))
56
  {
@@ -59,44 +59,6 @@
59
 
60
  }
61
 
62
- function mo2f_notices(){
63
-
64
- global $Mo2fdbQueries, $mo2f_db_queries;
65
- $is_customer_registered = $Mo2fdbQueries->get_user_detail( 'user_registration_with_miniorange', wp_get_current_user()->ID ) == 'SUCCESS' ? true : false;
66
- if(strpos($_SERVER['REQUEST_URI'], 'mo_2fa_upgrade'))
67
- if(!get_site_option('mo2f_trial_query_sent') && !get_site_option('mo2f_donot_show_trial_notice_always') && current_user_can('administrator')){
68
-
69
- if(!$is_customer_registered)
70
- echo MoWpnsMessages::showMessage('FREE_TRIAL_MESSAGE_ACCOUNT_PAGE');
71
- else
72
- echo MoWpnsMessages::showMessage('FREE_TRIAL_MESSAGE_TRIAL_PAGE');
73
- }
74
-
75
- }
76
- function mo2f_get_dismiss_days($option_name){
77
- $one_day = 60*60*24;
78
- $days= (time()-get_site_option($option_name))/$one_day;
79
- return floor($days);
80
- }
81
-
82
- function mo2fa_login_elementor_note()
83
- {
84
- global $mainDir;
85
-
86
- if(!is_user_logged_in())
87
- {
88
- wp_enqueue_script( 'jquery' );
89
- wp_enqueue_script( 'mo2fa_elementor_script', $mainDir. 'includes/js/mo2fa_elementor.js' );
90
-
91
- wp_localize_script( 'mo2fa_elementor_script', 'my_ajax_object',
92
- array( 'ajax_url' => get_site_url() .'/login/' ,
93
- 'nonce' => wp_create_nonce( 'miniorange-2-factor-login-nonce' ),
94
- 'mo2f_login_option' => MoWpnsUtility::get_mo2f_db_option('mo2f_login_option', 'get_option'),
95
- 'mo2f_enable_login_with_2nd_factor' => get_option( 'mo2f_enable_login_with_2nd_factor' )) );
96
-
97
- }
98
- }
99
-
100
  public function mo2f_enable_register_shortcode()
101
  {
102
  $submitSelector = get_site_option('mo2f_custom_submit_selector');
@@ -160,7 +122,7 @@
160
  wp_enqueue_style( 'wp-pointer' );
161
  wp_enqueue_script( 'wp-pointer' );
162
  wp_enqueue_script( 'utils' );
163
- wp_enqueue_style( 'mo_wpns_admin_plugins_page_style', plugins_url( '/includes/css/style_settings.css?ver=5.5.1', __FILE__ ) );
164
 
165
  include $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'feedback_form.php';;
166
 
@@ -267,13 +229,8 @@
267
  add_submenu_page( $menu_slug ,'miniOrange 2-Factor' ,'Notifications' ,'administrator','mo_2fa_notifications' , array( $this, 'mo_wpns'),8);
268
  add_submenu_page( $menu_slug ,'miniOrange 2-Factor' ,'Offers' ,'administrator','mo_2fa_request_offer' , array( $this, 'mo_wpns'),14);
269
  $mo2fa_hook_page = add_users_page ('Reset 2nd Factor', null , 'manage_options', 'reset', array( $this, 'mo_reset_2fa_for_users_by_admin' ),66);
270
-
271
- global $Mo2fdbQueries;
272
- $is_customer_registered = $Mo2fdbQueries->get_user_detail( 'user_registration_with_miniorange', wp_get_current_user()->ID ) == 'SUCCESS' ? true : false;
273
- if(!$is_customer_registered)
274
- add_submenu_page($menu_slug, 'miniOrange 2-Factor', 'Request Trial' ,'administrator','mo_2fa_account', array( $this, 'mo_wpns'), 20);
275
- else
276
- add_submenu_page($menu_slug, 'miniOrange 2-Factor', 'Request Trial' ,'administrator','mo2f_trial', array( $this, 'mo_wpns'), 20);
277
  }
278
 
279
 
@@ -314,7 +271,6 @@
314
  add_action( 'mo_auth_show_success_message', array($this, 'mo_auth_show_success_message'), 10, 1 );
315
  add_action( 'mo_auth_show_error_message', array($this, 'mo_auth_show_error_message'), 10, 1 );
316
  add_option( 'mo2f_onprem_admin' , $userid );
317
- add_option('mo2f_nonce_enable_configured_methods' ,true);
318
  add_option( 'mo_wpns_last_scan_time', time());
319
  update_site_option('mo2f_mail_notify_new_release','on');
320
  add_site_option('mo2f_mail_notify','on');
@@ -359,6 +315,7 @@
359
  wp_enqueue_style( 'mo_wpns_admin_settings_datatable_style' , plugins_url('includes/css/jquery.dataTables.min.css', __FILE__));
360
  wp_enqueue_style( 'mo_wpns_button_settings_style' , plugins_url('includes/css/button_styles.css',__FILE__));
361
  wp_enqueue_style( 'mo_wpns_popup_settings_style' , plugins_url('includes/css/popup.css',__FILE__));
 
362
  $file = plugin_dir_path( __FILE__ ) .'controllers'.DIRECTORY_SEPARATOR. 'pointers.php';
363
 
364
  $tour_started=get_option('mo2f_tour_started',0);
@@ -397,7 +354,9 @@
397
  wp_enqueue_script( 'mo_wpns_min_qrcode_script', plugins_url( "/includes/jquery-qrcode/jquery-qrcode.min.js", __FILE__ ) );
398
  wp_enqueue_script('jquery-ui-core');
399
  wp_enqueue_script('jquery-ui-autocomplete');
 
400
  wp_enqueue_script('mo_2fa_select2_script', 'https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js');
 
401
  }
402
  }
403
 
@@ -520,9 +479,9 @@
520
  require('handler/security_features.php');
521
  require('handler/feedback_form.php');
522
  require('handler/recaptcha.php');
 
523
  require('handler/twofa/setup_twofa.php');
524
  require('handler/twofa/two_fa_settings.php');
525
- require('handler/login.php');
526
  require('handler/twofa/two_fa_utility.php');
527
  require('handler/twofa/two_fa_constants.php');
528
  require('handler/registration.php');
@@ -576,29 +535,26 @@
576
  function mo_reset_2fa_for_users_by_admin(){
577
  $nonce = wp_create_nonce('ResetTwoFnonce');
578
  if(isset($_GET['action']) && $_GET['action']== 'reset_edit'){
579
- $user_id = sanitize_text_field($_GET['user']);
580
- if(is_numeric($user_id))
581
- {
582
- $user_info = get_userdata($user_id);
583
- ?>
584
- <form method="post" name="reset2fa" id="reset2fa" action="<?php echo esc_url('users.php'); ?>">
585
-
586
- <div class="wrap">
587
- <h1>Reset 2nd Factor</h1>
588
 
589
  <p>You have specified this user for reset:</p>
590
 
591
  <ul>
592
  <li>ID #<?php echo $user_info->ID; ?>: <?php echo $user_info->user_login; ?></li>
593
  </ul>
594
- <input type="hidden" name="userid" value="<?php echo esc_attr($user_id); ?>">
595
  <input type="hidden" name="miniorange_reset_2fa_option" value="mo_reset_2fa">
596
  <input type="hidden" name="nonce" value="<?php echo $nonce;?>">
597
  <p class="submit"><input type="submit" name="submit" id="submit" class="button button-primary" value="Confirm Reset" ></p>
598
  </div>
599
  </form>
600
  <?php
601
- }
602
  }
603
  }
604
 
@@ -626,8 +582,6 @@
626
  }
627
  }
628
  }
629
- if(isset($_POST['mo2f_dismiss_trial']) && sanitize_text_field($_POST['mo2f_dismiss_trial'] == 'mo2f_dismiss_trial'))
630
- update_site_option('mo2f_donot_show_trial_notice_always', 1);
631
  }
632
 
633
  function mo2f_mapped_email_column_content($value, $column_name, $user_id) {
@@ -675,7 +629,7 @@
675
  {
676
 
677
 
678
- $subject = 'miniOrange 2FA V'. MO2F_VERSION.' | What\'s New?';
679
  $messages = mail_tem();
680
  $headers = array('Content-Type: text/html; charset=UTF-8');
681
  $email = get_option('admin_email');
3
  * Plugin Name: miniOrange 2 Factor Authentication
4
  * Plugin URI: https://miniorange.com
5
  * Description: This TFA plugin provides various two-factor authentication methods as an additional layer of security after the default wordpress login. We Support Google/Authy/LastPass Authenticator, QR Code, Push Notification, Soft Token and Security Questions(KBA) for 3 User in the free version of the plugin.
6
+ * Version: 5.4.34
7
  * Author: miniOrange
8
  * Author URI: https://miniorange.com
9
  * Text Domain: miniorange-2-factor-authentication
14
  require dirname(__FILE__).DIRECTORY_SEPARATOR.'views'.DIRECTORY_SEPARATOR.'email-IPaddress.php';
15
 
16
  define( 'MO_HOST_NAME', 'https://login.xecurify.com' );
17
+
18
+ define( 'MO2F_VERSION', '5.4.34' );
19
+ define('MO2F_PLUGIN_URL', (plugin_dir_url(__FILE__)));
20
  define( 'MO2F_TEST_MODE', false );
21
  define( 'MO2F_IS_ONPREM', get_option('is_onprem'));
22
 
37
  add_action( 'admin_init' , array( $this, 'miniorange_reset_save_settings' ) );
38
  add_filter('manage_users_columns' , array( $this, 'mo2f_mapped_email_column' ) );
39
  add_action('manage_users_custom_column' , array( $this, 'mo2f_mapped_email_column_content'), 10, 3 );
40
+
41
  $actions = add_filter('user_row_actions' , array( $this, 'miniorange_reset_users' ),10 , 2 );
42
  add_action( 'admin_footer' , array( $this, 'feedback_request' ) );
43
  add_action('admin_notices',array( $this, 'mo_wpns_malware_notices' ) );
51
  $customShort = new TwoFACustomRegFormShortcode();
52
  add_action('admin_init',array( $this, 'mo2f_enable_register_shortcode' ));
53
  add_action('admin_init',array( $customShort, 'mo_enqueue_shortcode' ));
 
54
  add_shortcode('mo2f_enable_register',array($this,'mo2f_enable_register_shortcode'));
55
  if(defined("DIGIMEMBER_DIR"))
56
  {
59
 
60
  }
61
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
62
  public function mo2f_enable_register_shortcode()
63
  {
64
  $submitSelector = get_site_option('mo2f_custom_submit_selector');
122
  wp_enqueue_style( 'wp-pointer' );
123
  wp_enqueue_script( 'wp-pointer' );
124
  wp_enqueue_script( 'utils' );
125
+ wp_enqueue_style( 'mo_wpns_admin_plugins_page_style', plugins_url( '/includes/css/style_settings.css?ver=4.8.60', __FILE__ ) );
126
 
127
  include $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'feedback_form.php';;
128
 
229
  add_submenu_page( $menu_slug ,'miniOrange 2-Factor' ,'Notifications' ,'administrator','mo_2fa_notifications' , array( $this, 'mo_wpns'),8);
230
  add_submenu_page( $menu_slug ,'miniOrange 2-Factor' ,'Offers' ,'administrator','mo_2fa_request_offer' , array( $this, 'mo_wpns'),14);
231
  $mo2fa_hook_page = add_users_page ('Reset 2nd Factor', null , 'manage_options', 'reset', array( $this, 'mo_reset_2fa_for_users_by_admin' ),66);
232
+
233
+
 
 
 
 
 
234
  }
235
 
236
 
271
  add_action( 'mo_auth_show_success_message', array($this, 'mo_auth_show_success_message'), 10, 1 );
272
  add_action( 'mo_auth_show_error_message', array($this, 'mo_auth_show_error_message'), 10, 1 );
273
  add_option( 'mo2f_onprem_admin' , $userid );
 
274
  add_option( 'mo_wpns_last_scan_time', time());
275
  update_site_option('mo2f_mail_notify_new_release','on');
276
  add_site_option('mo2f_mail_notify','on');
315
  wp_enqueue_style( 'mo_wpns_admin_settings_datatable_style' , plugins_url('includes/css/jquery.dataTables.min.css', __FILE__));
316
  wp_enqueue_style( 'mo_wpns_button_settings_style' , plugins_url('includes/css/button_styles.css',__FILE__));
317
  wp_enqueue_style( 'mo_wpns_popup_settings_style' , plugins_url('includes/css/popup.css',__FILE__));
318
+ wp_enqueue_style( 'mo_2fa_time_settings_style' , plugins_url('includes/css/datetime-style-settings.min.css', __FILE__));
319
  $file = plugin_dir_path( __FILE__ ) .'controllers'.DIRECTORY_SEPARATOR. 'pointers.php';
320
 
321
  $tour_started=get_option('mo2f_tour_started',0);
354
  wp_enqueue_script( 'mo_wpns_min_qrcode_script', plugins_url( "/includes/jquery-qrcode/jquery-qrcode.min.js", __FILE__ ) );
355
  wp_enqueue_script('jquery-ui-core');
356
  wp_enqueue_script('jquery-ui-autocomplete');
357
+ wp_enqueue_script('jquery-ui-datepicker');
358
  wp_enqueue_script('mo_2fa_select2_script', 'https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js');
359
+ wp_enqueue_script('mo_2fa_timepicker_script', 'https://cdnjs.cloudflare.com/ajax/libs/timepicker/1.3.5/jquery.timepicker.min.js');
360
  }
361
  }
362
 
479
  require('handler/security_features.php');
480
  require('handler/feedback_form.php');
481
  require('handler/recaptcha.php');
482
+ require('handler/login.php');
483
  require('handler/twofa/setup_twofa.php');
484
  require('handler/twofa/two_fa_settings.php');
 
485
  require('handler/twofa/two_fa_utility.php');
486
  require('handler/twofa/two_fa_constants.php');
487
  require('handler/registration.php');
535
  function mo_reset_2fa_for_users_by_admin(){
536
  $nonce = wp_create_nonce('ResetTwoFnonce');
537
  if(isset($_GET['action']) && $_GET['action']== 'reset_edit'){
538
+ $user_id = $_GET['user'];
539
+ $user_info = get_userdata($user_id);
540
+ ?>
541
+ <form method="post" name="reset2fa" id="reset2fa" action="<?php echo esc_url('users.php'); ?>">
542
+
543
+ <div class="wrap">
544
+ <h1>Reset 2nd Factor</h1>
 
 
545
 
546
  <p>You have specified this user for reset:</p>
547
 
548
  <ul>
549
  <li>ID #<?php echo $user_info->ID; ?>: <?php echo $user_info->user_login; ?></li>
550
  </ul>
551
+ <input type="hidden" name="userid" value="<?php echo $user_id; ?>">
552
  <input type="hidden" name="miniorange_reset_2fa_option" value="mo_reset_2fa">
553
  <input type="hidden" name="nonce" value="<?php echo $nonce;?>">
554
  <p class="submit"><input type="submit" name="submit" id="submit" class="button button-primary" value="Confirm Reset" ></p>
555
  </div>
556
  </form>
557
  <?php
 
558
  }
559
  }
560
 
582
  }
583
  }
584
  }
 
 
585
  }
586
 
587
  function mo2f_mapped_email_column_content($value, $column_name, $user_id) {
629
  {
630
 
631
 
632
+ $subject = 'Announce it via email on the New Release of 2FA Plugin';
633
  $messages = mail_tem();
634
  $headers = array('Content-Type: text/html; charset=UTF-8');
635
  $email = get_option('admin_email');
readme.txt CHANGED
@@ -1,370 +1,415 @@
1
- === miniOrange's Google Authenticator - WordPress Two Factor Authentication (2FA , Two Factor, OTP SMS and Email) | Passwordless login ===
2
 
3
- Contributors: twofactor, twofactorauthentication, hsn97,cyberlord92
4
- Tags: google authenticator,two factor,two factor authentication, 2FA, OTP , wp 2fa, 2-factor authentication, multi factor authentication , MFA ,two step verification, TFA, mobile verification, MFA, Remember Device, OTP Over Telegram, Mobile Authentication, 2 step authentication, passwordless login, QR Code Authentication, email verification, KBA, Security Questions, login with SMS, Authy, Authy two factor , FIDO, FIDO2, Webauthn, multi factor, wordfence, IP Blocking, IP Whitelisting, SMS login, OTP Over SMS and Email, login without password, Mobile verification, password free authentication, session restriction.
5
  Donate link: https://miniorange.com/
6
  Requires at least: 3.0.1
7
- Tested up to: 5.9.2
8
  Requires PHP: 5.3.0
9
- Stable tag: 5.5.1
10
  License: GPLv2 or later
11
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
12
 
13
- Google Authenticator-multi Factor(WP 2FA/OTP) - Supports TOTP-based methods like Duo/Google Authenticator along with OTP Over SMS/Email & more.
14
 
15
  == Description ==
16
 
17
- **Google Authenticator - Two Factor (WP 2FA/OTP)** - Provides *secure login* to WordPress. This plugin can be configured for any **TOTP-based** methods like Duo/Microsoft/Google Authenticator. It supports OTP-based 2fa methods.
18
-
19
- You can check out following video to configure google authenticator as a two factor:
20
-
21
- [youtube https://www.youtube.com/watch?v=BS6tY-Goa1Q]
22
-
23
- = Trial for Google authenticator Premium and Enterprise plugin =
24
- We do provide 7 days trial of our Google Authenticator Premium plugins. You can test all Premium features including 2fa methods such as google authenticator, OTP Over SMS/Email.
25
-
26
- = [Google Authenticator - Two step verification/ 2 Factor Authentication/ WP 2FA] FREE Plugin Features =
27
- * Simplified & easy user interface to set up **Google Authenticator** and other Two-Factor Authentication ( WP 2FA/TFA/OTP ) methods.
28
- * **3 Users** forever FREE!
29
- * QR Code authentication, Push Notification, Soft Token and Security Questions(KBA) are supported in the plugin for multi factor authentication(WP 2FA/TFA).
30
- * Includes Language Translation Support
31
- * **[User Profile 2fa](https://plugins.miniorange.com/how-to-set-up-2-factor-from-wordpress-user-profile-section):** Administrators can set up Two Factor (TFA)of users via WordPress users section
32
- * **Multi Factor Authentication(MFA):** This feature can be used to invoke any two factor method on login among multiple methods which were configured. You can configure multiple 2fa methods that can be used as a **backup 2fa method**
33
- * **Two-Factor Authentication** ( TFA/2FA ) for Ajax login forms like User Pro, login with ajax, Theme my login, etc with all authentication methods.
34
- * **Passwordless login** and login with phone number
35
- * **[Prevent account sharing](prevent account sharing between users by two factor authentication)** Google Authenticator(WP 2FA) restricts users from sharing WordPress login credentials which help to secure WordPress Websites. The Google authenticator plugin also adds a session control feature that limits user sessions based on WordPress User activities.
36
- * This plugin Supports standard TOTP
37
- * Two-Factor Authentication (WP 2FA/TFA) allows authentication on the login page itself for Google Authenticator & miniOrange Soft Token
38
- * **[Multiple Login Options](https://docs.miniorange.com/documentation/login-username-2nd-factor-2):** Username + password + two-factor (or) Username + two-factor i.e. Passwordless login /Login without password /Password free authentication
39
- * Recovery codes in case you are locked out for all Two-Factor Authentication (WP 2FA/TFA)
40
- * **Mobile verification - two step verification** (WP 2FA/TFA) using a user's mobile phone with authentication method like google authenticator, QR code authentication, etc.
41
-
42
- = Additional Features other than the basic Google Authenticator two-factor authentication =
43
-
44
- * Complete Web Security suite to protect wordpress from any attacks
45
- * Web Application Firewall (WAF): Wordpress Firewall to protect your site
46
- * OWASP TOP 10 Protection
47
- * Login Protection: Spam and Login Protection
48
- * Malware scanner: Detects any virus, malware and trojan
49
- * Backup: Taking Encrypted Backup with local storage and cloud storage
50
- * Limit Login Attempts to stop password guessing
51
- * Realtime Global IP Blocking
52
- * Limit Rate of Request: Protecting resources from any security hole exploit
53
- * Crawler Detection and blocking
54
- * Blocking IP and Attacks
55
- * Country Blocking and Browser Blocking
56
- * Brute Force Attacks prevention to stop password hack
57
- * Captcha for Bot Detection
58
- * Google Recaptcha
59
- * Login Form Protection
60
- * Registration Form Protection
61
- * Integration with different plugin - WooCommerce, Buddypress, Ultimate Member and others
62
- * Reporting
63
- * Audit Log
64
-
65
- = Apps Supported by the two-factor authentication (2FA/MFA) plugin =
66
- * Google Authenticator
67
- * miniOrange Authenticator
68
- * Duo Authenticator
69
- * Microsoft Authenticator
70
- * Authy 2 Factor Authenticator
71
- * LastPass Authenticator
72
- * FreeOTP Authenticator
73
-
74
- = User Identity Verification or multi-factor authentication with Google Authenticator =
75
- **Login and Registration:** Verify users on login with different two factor methods like OTP over SMS, OTP Over Email, OTP Over Telegram, Google Authenticator, SMS Verification, Email, Authy Authenticator, Duo Authenticator, Microsoft Authenticator, TOTP Based Authenticator, Security Questions, and many others.
76
- Users will receive an OTP at the time of registration which will be used to verify their identity. OTP can be received either via OTP Over email or via OTP over SMS.
77
-
78
- = Plugin Integrations and Support for all methods of two-factor authentication/two step verification ( WP 2FA/TFA/OTP ) =
79
- Our plugin is integrated with [popular Plugins](https://plugins.miniorange.com/2-factor-authentication-for-wordpress-wp-2fa#integrations) such as WooCommerce and Ultimate member.
80
-
81
- = Third Party Custom SMS Gateway for OTP Over SMS (two-factor authentication / 2FA ) =
82
- The premium plugin supports any third-party **custom SMS Gateway**. If you don't have your SMS gateway you can use miniOrange gateway and send SMS(OTP over SMS) all over the world.
83
- [Here](https://plugins.miniorange.com/supported-sms-email-gateways) are some famous gateways supported for two factor (WP 2FA/TFA/OTP).
84
- [Test your Gateway](https://login.xecurify.com/moas/login?redirectUrl=https://login.xecurify.com/moas/admin/customer/smsconfig)
85
-
86
- = Why do you need to register for Google Authenticator? =
87
-
88
- **Google authenticator** uses miniOrange APIs to communicate between your WP and miniOrange. To keep this communication secure, we ask you to register and assign API keys specific to your account. This way your account and users' calls can be only accessed by API keys assigned to you.
89
- Adding to this, you can also use the same account on multiple applications and your users do not have to maintain multiple accounts or WordPress 2FA like Google Authenticator if you are using our cloud solution. Single code generated in Google Authenticator will be enough to log in to all sites. With this, you can also achieve sync of **two-factor authentication on multiple sites**.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
90
 
91
- = Google Authenticator ( WP 2FA - two-factor authentication ) Premium Lite Plugin Features =
92
 
93
- * Google Authenticator - Two-Factor Authentication (WP 2FA/TFA) for all users and all user roles *( Site-based pricing )*
94
- * **Two-Factor Authentication Methods:** Google Authenticator, Authy Authenticator, Microsoft Authenticator, LastPass Authenticator, Security Questions(KBA), OTP Over Email, OTP Over SMS, Email Verification, Mobile Verification *( SMS credits need to be purchased as per the need)*
95
- * **[Multiple Login Options](https://docs.miniorange.com/documentation/login-username-2nd-factor-2):** Username + password + two-factor (or) Username + two-factor i.e. Passwordless login /Login without password /Password free authentication. With google authenticator plugin, the 2FA plugin user is authenticated directly with the second layer of security without entering the password. You can opt between a password and 2FA or only a second factor.
96
- * **Unlimited Email transactions:** miniOrange's google authenticator plugin provides unlimited Email transactions with your SMTP server
97
- * **Backup Method:** KBA(Security Questions), OTP Over Email, Backup codes if you are unable to validate two step verification
98
- * [User role based redirection after Login](https://docs.miniorange.com/documentation/custom-redirect-login-url)
99
- * [Customize account name in Google Authenticator app](https://docs.miniorange.com/documentation/google-authenticator-app-name)
100
- * [Custom Security Questions (KBA)](https://docs.miniorange.com/documentation/custom-security-questions)
101
- * [Role based 2 Factor](https://docs.miniorange.com/documentation/specific-set-authentication-methods-based-role)
102
- * [Force Two factor for users](https://docs.miniorange.com/documentation/enforce-2fa-users)
103
- * [Email notification to users asking them to set up Two-Factor Authentication (WP 2FA/TFA)](https://docs.miniorange.com/documentation/want-send-email-notification-users-setting-2-factor)
104
- * [Set Privacy Policy for users](https://docs.miniorange.com/documentation/privacy-policy-site)
105
- * [Remember Device to skip 2fa](https://docs.miniorange.com/documentation/remember-my-device)
106
- * **Customizable Login UI Popup:** Using google authenticator plugin you can customize the user interface of the login popup as per your preference.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
 
108
- = Google Authenticator ( WP 2FA/OTP ) Enterprise Plugin Features =
109
 
110
- * [Google Authenticator - Two-Factor Authentication](https://plugins.miniorange.com/2-factor-authentication-for-wordpress) - 2FA for Users as per the upgrade *( User-based pricing )*
111
  * **Available Authentication Methods:** Google Authenticator, Authy Authenticator, Microsoft Authenticator, LastPass Authenticator, QR Code, Push Notification, Soft Token, Security Questions(KBA), OTP Over Email, OTP Over SMS, OTP Over SMS and Email, Email Verification, Hardware Token. *( SMS and Email credits need to be purchased as per the need)*
112
- * **Multiple Login Options:** Username + password + two-factor Authentication (or) Username + two-factor authentication(2FA) i.e. Passwordless login /Login without password /Password free authentication.
 
113
  * **Backup Methods:** KBA(Security Questions), OTP Over Email, Backup Codes
114
- * **[Sync 2fa for multiple websites](https://plugins.miniorange.com/two-factor-authentication-2fa-for-multiple-wordpress-websites)**
115
- * **Multisite compatible** for all WordPress 2FA methods.
116
- * Email notification to users asking them to set up Google Authenticator - Two-Factor Authentication (WP 2FA/TFA).
117
- * User **role based redirection** after Login, Custom Security Questions (KBA), Customize account name in Google Authenticator app.
118
- * Enable Two-Factor Authentication (WP 2FA/OTP) for specific Users/User Roles
119
- * Choose specific two-factor authentication methods for Users
120
  * **Add-Ons Included:** RBA & Trusted Devices Management Add-on, Personalization Add-on and Short Codes Add-on
121
- * **Brute force attack prevention, IP Blocking & User login Monitoring**
122
  * File protection & strong password
123
- * Monitoring current Google Authenticator and other two-factor authentication (2 Factor) method of all the users in the plugin
124
- * Session restriction
125
-
126
- = Add Ons for two-factor authentication ( WP 2FA/OTP ) =
127
-
128
- * RBA & Trusted Devices Management Add-on Features for two-factor authentication ( WP 2FA/OTP )
129
- * **Remember Device** to skip the two-factor authentication ( 2 Factor ) from the **trusted devices**.
130
- * Set **Device Limit** for the users to login
131
-
132
- * Personalization Add-on Features to customize your two-factor authentication pages
133
- * Custom UI of Two-Factor Authentication (WP 2FA/TFA) pop-ups
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
134
  * Custom Email and SMS Templates
135
- * Customize 'Powered by' Logo on wp 2fa authentication page
136
  * Customize Plugin Icon
137
  * Customize Plugin Name
138
 
139
- * Short Codes Add-on Features for two-factor authentication ( 2FA/MFA )
140
- * Turn on/off 2 factor (two-factor authentication) by user
141
- * Reconfigure 2fa methods
142
- * 'Enable Remember Device' from a custom login form to skip 2 factor for trusted devices.
143
- * On-Demand ShortCodes for specific functionalities ( like for enabling WordPress 2FA (Two-Factor authentication) for specific pages)
144
 
145
- * [Device restriction with webauthn/ FIDO2](https://plugins.miniorange.com/passwordless-login-with-web-authentication-wordpress)
146
- Password free authentication is possible with WebAuthn.
147
-
148
- Check all the features other than two-factor authentication ( Two step verification ) here: [miniOrange Website](https://security.miniorange.com/)
 
 
 
 
149
 
150
- <h4>Useful blog posts about two-factor authentication ( 2FA/MFA ) plugin </h4>
151
- * [Beginner’s Guide: How to Add Two-Factor Authentication to WordPress](https://themeisle.com/blog/how-to-add-two-factor-authentication-to-wordpress/)
152
- * [How to Add WordPress Two-Factor Authentication (WP 2FA/TFA)](https://phppot.com/wordpress/how-to-add-wordpress-two-factor-authentication-2fa-using-google-authenticator-plugin/)
153
- * [How to translate WordPress Two-Factor Authentication (WP 2FA/TFA)](https://plugins.miniorange.com/the-plugin-translate-spanish-language-with-2-factor-wordpress)
154
 
155
- Customized solutions and Active support are available. Email us at info@xecurify.com or call us at +1 9786589387.
156
 
157
- **Note: The plugin is GDPR Compliant and supports a wide variety of Language Translation**
158
 
159
  == Installation ==
160
 
161
  = From your WordPress dashboard =
162
  1. Navigate to `Plugins > Add New` from your WP Admin dashboard.
163
- 2. Search for `miniOrange 2 Factor Authentication (2FA)`or `Google Authenticator.`
164
- 3. Install `miniOrange 2 Factor Authentication (2FA)` and activate the plugin.
165
 
166
  = From WordPress.org =
167
- 1. Search for `miniOrange 2 Factor Authentication (2FA)` and download it.
168
- 2. Unzip and upload the `miniorange-2-factor-authentication (2FA)` directory to your `/wp-content/plugins/` directory.
169
- 3. Activate miniOrange 2 Factor Authentication (2FA) from the Plugins tab of your admin dashboard.
170
 
171
- = Once Activated [Google Authenticator - Two Step Verification]=
172
  1. Select miniOrange 2-Factor ( 2 factor authentication ) from the left menu and follow the instructions.
173
- 2. Once, you complete your setup. Click on the Log Out button.
174
  3. Enter the username and password. After the initial validation, you will be prompted for the 2-factor method you had set up.
175
- 4. Validate yourself with the 2-factor authentication(WP 2FA/TFA) method you configured.
 
 
 
176
 
177
- **Video Guide** :
178
- [youtube https://www.youtube.com/watch?v=vVGXjedIaGs]
179
 
180
  == Frequently Asked Questions ==
181
 
182
- = How do I gain access to my website if I get locked out using the Google Authenticator? =
183
 
184
  You can obtain access to your website by one of the below options:
185
 
186
- 1. If you have an additional administrator account whose Two Factor (2FA) is not enabled yet, you can login with it.
187
- 2. If you had set up KBA questions earlier, you can use them as an alternate method to login to your website instead of 2FA.
188
- 3. Rename the plugin from FTP - this disables the Google Authenticator (WP 2FA/TFA) plugin and you will be able to login with your WordPress username and password.
189
 
190
- For detailed information, Please check on our website. <a href="https://faq.miniorange.com/knowledgebase/how-to-gain-access-to-my-website-if-i-get-locked-out/" target="_blank">Locked Out</a>.<br>
191
  You can also check our video Tutorial:
192
- [youtube https://www.youtube.com/watch?v=wLFKakQkpk8]
 
 
 
 
 
 
 
 
 
 
193
 
194
- = I want to enable Google Authenticator 2 Factor authentication (2FA) as the backup method? =
195
 
196
- You can use google authenticator as the backup method for your specific user or all users in the premium version of the two-factor authentication. [PREMIUM FEATURE]
197
 
198
- = I have enabled Two-Factor Authentication (2FA/TFA) for all users, what happens if an end-user tries to login but has not yet registered? =
199
 
200
- If a user has not set up Two-Factor yet, the user has to register by inline registration that will be invoked during the login.
201
 
202
- = I want to enable only one authentication method for my users. What should I do? =
203
 
204
- You can select the two-factor authentication methods under the Login Settings tab. The selected authentication methods will be shown to the user during inline registration for example if you select Google Authenticator it will be shown on login. [PREMIUM FEATURE]
205
 
206
- = I have a custom/front-end login page on my site and I want the look and feel to remain the same when I add 2 factor ? =
207
 
208
- If you have a custom login form other than wp-login.php then we will provide you the shortcode. Shortcode will work only for the customized login page created from WordPress plugins. We are not claiming that it will work with all the customized login pages. In such a case, custom work is needed to integrate two factor with your customized login page. You can submit a query in our <b>Support Section</b> in the plugin or you can contact us at info@xecurify.com for more details.
209
 
210
- = I have installed plugins that limit the login attempts like Limit Login Attempt, Loginizer, Wordfence, etc. Are there any incompatibilities with these kinds of plugins? =
211
 
212
- The limit login attempt kind of plugins limit the number of login attempts and block the IP temporarily. So if you are using 2 factor(WP 2fa/TFA) along with these kinds of plugins then you should increase the login attempts (minimum 5) so that you don't get locked out yourself.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
213
 
214
  = If you are using any Security Plugin in WordPress like Simple Security Firewall, All in One WP Security Plugin and you are not able to login with Two-Factor. =
215
 
216
- Our Two-Factor plugin is compatible with most of the security plugins, but if it is not working for you. Please submit a query in our Support Section in the plugin or you can contact us at info@xecurify.com.
217
 
218
- = If you are using any render-blocking javascript and CSS plugin like Async JS and CSS Plugin and you are not able to login with Two-Factor or your screen got blank. =
219
 
220
- If you are using Async JS and CSS Plugin. Please go to its settings and add jquery to the list of exceptions and save settings. It will work. If you are still not able to get it right, Please submit a query in our Support Section in the plugin or you can contact us at info@xecurify.com.
221
 
222
- = My phone has no internet connectivity and I am entering the one time passcode from miniOrange Authenticator App, it says Invalid OTP?
223
 
224
- Click on the <b>Settings Icon</b> on top right corner in <b>miniOrange Authenticator App</b> and then press <b>Sync button</b> under 'Time correction for codes' to sync your time with miniOrange Servers. If you still can't logged in then please email us at info@xecurify.com or <a href="https://miniorange.com/contact" target="_blank">Contact us</a>.Soft Token method is just like google authenticator method.
225
 
226
- = I am upgrading my phone. =
227
 
228
- You should go to <b>Setup Two Factor (2FA) </b> Tab and click on <b>Reconfigure</b> to reconfigure 2-Factor with your new phone.
229
 
230
- == Screenshots ==
231
 
232
- 1. Google Authenticator (WP 2FA/OTP) - Setup different 2 Factor methods
233
- 2. Google Authenticator (WP 2FA/OTP) - Test 2 factor configured
234
- 3. Google Authenticator (WP 2FA/OTP) - 2 Factor Authentication (2FA) methods available
235
- 4. Google Authenticator (WP 2FA/OTP) - Google Authenticator login
236
- 5. Google Authenticator (WP 2FA/OTP) - QR code 2 Factor (2FA) login
237
- 6. Google Authenticator (WP 2FA/OTP) - miniOrange Authenticator login
238
- 7. Google Authenticator (WP 2FA/OTP) - Push notification login
239
- 8. Google Authenticator (WP 2FA/OTP) - Remember device and personalization add-ons
240
 
241
- == Changelog ==
242
 
243
- = 5.5.1 =
244
- * Google Authenticator - Two factor Authentication (2FA, OTP) :
245
- * Updated Pricing page UI
246
 
247
- = 5.5 =
248
- * Google Authenticator - Two factor Authentication (2FA, OTP) :
249
- * Updated Network Security UI
250
 
251
- For older changelog entries, please see the [additional changelog.txt file](https://plugins.svn.wordpress.org/miniorange-2-factor-authentication/trunk/changelog.txt) provided with the plugin.
252
 
253
- == Upgrade Notice ==
254
 
255
- = 5.5.1 =
256
- * Google Authenticator - Two factor Authentication (2FA, OTP) :
257
- * Updated Pricing page UI
258
-
259
- = 5.5 =
260
- * Google Authenticator - Two factor Authentication (2FA, OTP) :
261
- * Updated Network Security UI
262
-
263
- = 5.4.52 =
264
- * Google Authenticator - Two factor Authentication (2FA, OTP) :
265
- * Updated Trial Request Form
266
-
267
- = 5.4.51 =
268
- * Google Authenticator - Two factor Authentication (2FA, OTP) :
269
- * Trial notification visibility issue fixed
270
-
271
- = 5.4.50 =
272
- * Google Authenticator - Two factor Authentication (2FA, OTP) :
273
- * Bug fix - Headers already sent
274
-
275
- = 5.4.49 =
276
- * Google Authenticator - Two factor Authentication (2FA, OTP) :
277
- * Trial Notification for Premium Plugins
278
- * CSRF Fix
279
-
280
- = 5.4.48 =
281
- * Google Authenticator - Two factor Authentication (2FA, OTP) :
282
- * Close button on offer banner
283
-
284
- = 5.4.47 =
285
- * Google Authenticator - Two factor Authentication (2FA, OTP) :
286
- * Christmas offer
287
-
288
- = 5.4.46 =
289
- * Google Authenticator - Two factor Authentication (2FA, OTP) :
290
- * Black friday offer
291
- * Get email notification on the plugin's new release
292
-
293
- = 5.4.45 =
294
- * Google Authenticator - Two factor Authentication (2FA, OTP) :
295
- * Added login with the any configured methods
296
- * Minor bug fix
297
-
298
- = 5.4.44 =
299
- * Google Authenticator - Two factor Authentication (2FA, OTP) :
300
- * Added link to WordPress forum in support form
301
- * Minor bug fix
302
-
303
- = 5.4.43 =
304
- * Google Authenticator - Two factor Authentication (2FA, OTP) :
305
- * Special offer - Special discount for limited time
306
-
307
- = 5.4.42 =
308
- * Google Authenticator - Two factor Authentication (2FA, OTP) :
309
- * Backup Code as a cloud service
310
-
311
- = 5.4.41 =
312
- * Google Authenticator - Two factor Authentication (2FA, OTP) :
313
- * Minor UI Changes and Bug Fixes
314
-
315
- = 5.4.40 =
316
- * Google Authenticator - Two factor Authentication (2FA, OTP) :
317
- * XSS Vulnerability fix
318
- * Added video link for miniOrange Authenticator
319
-
320
- = 5.4.39 =
321
- * Google Authenticator - Two factor Authentication (2FA, OTP) :
322
- * Added 2FA setup using user profile option
323
- * Support Form UI
324
- * 2FA Form support for login with ajax, Elementor Pro, UserPro login forms
325
- * Minor bug fixes
326
-
327
- = 5.4.38 =
328
- * Google Authenticator - Two factor Authentication (2FA, OTP) :
329
- * Added 2FA setup using user profile option
330
- * Setup Wizard for configuring 2FA
331
- * 2FA Form support for login with ajax, Elementor Pro, UserPro login forms
332
- * Minor bug fixes
333
-
334
- = 5.4.37 =
335
- * Google Authenticator - Two factor Authentication (2FA, OTP) :
336
- * Minor bug fixes
337
-
338
- = 5.4.36 =
339
- * Google Authenticator - Two Factor Authentication (2FA, OTP) :
340
- * Remove extra comma
341
 
342
- = 5.4.35 =
343
- * Google Authenticator - Two Factor Authentication (2FA, OTP) :
344
- * Minor bug fixes
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
345
 
346
- = 5.4.34 =
 
 
 
 
 
 
 
 
 
 
 
347
  * Google Authenticator - Two Factor Authentication (2FA, OTP) :
348
  * New User Interface for easy setup
349
  * Added developers logs
350
  * Minor fixes
351
 
352
- = 5.4.33 =
353
- * Google Authenticator Two Factor Authentication (2FA, TFA) :
354
- * New pricing page for two factor authentication
355
- * Added Duo Authenticator push notification method.
356
- * WooCommerce redirect issue fix.
357
 
358
- = 5.4.32 =
359
- * Google Authenticator Two Factor Authentication (2FA, TFA) :
360
- * Replaced sessions with transient.
361
 
362
- = 5.4.31 =
363
  * Google Authenticator - Two Factor Authentication (2FA, OTP) :
364
  * OTP over Email as two factor fix
365
  * Low Email transaction alert fix
366
 
367
- = 5.4.30 =
368
  * Google Authenticator - Two Factor Authentication (2FA, OTP) :
369
  * Feedback changes
370
 
@@ -407,7 +452,7 @@ For older changelog entries, please see the [additional changelog.txt file](http
407
  * Email and SMS transaction sync
408
  * Feedback form on network deactivate
409
  * Enable/Disable 2FA fix
410
- * 2FA added for super admin role
411
 
412
  = 5.4.22 =
413
  * Google Authenticator - Two Factor Authentication (2FA, OTP) :
@@ -422,7 +467,7 @@ For older changelog entries, please see the [additional changelog.txt file](http
422
  * Sanitization of some input values.
423
 
424
  = 5.4.20 =
425
- * Google Authenticator - Two Factor Authentication (2FA, SMS) :
426
  * Google Authenticator Qr code fix.
427
  * My theme login Login fix.
428
 
@@ -430,15 +475,15 @@ For older changelog entries, please see the [additional changelog.txt file](http
430
  * Google Authenticator - Two Factor Authentication (2FA, OTP) : Google Authenticator cloud fix.
431
 
432
  = 5.4.18 =
433
- * Google Authenticator - Two Factor Authentication (2FA, OTP) :
434
- * Added missing file
435
 
436
  = 5.4.17 =
437
- * Google Authenticator - Two Factor Authentication (2FA, OTP) :
438
  *Digimember Form Support
439
  *Memberpress Form Support
440
  *SMS Verification Support
441
- *OTP Verification on WooCommerce Registration
442
 
443
  = 5.4.16 =
444
  * Google Authenticator - Two Factor Authentication (2FA, OTP) : Quick form fix.
@@ -446,49 +491,48 @@ For older changelog entries, please see the [additional changelog.txt file](http
446
  = 5.4.15 =
447
  * Google Authenticator - Two Factor Authentication (2FA, OTP) :
448
  * Theme My Login plugin Support
449
- * Ultimate Member Registration Support
450
- * WooCommerce Registration Support
451
- * Ultimate Member Redirect
452
  * Restrict Content Pro Login and Registration
453
-
454
  = 5.4.14 =
455
- * Google Authenticator - Two Factor Authentication (2FA, MFA) : Performance improvement with fixes in Security Questions. And User Email verification and Phone Verification issues resolved.
456
 
457
  = 5.4.13 =
458
- * Google Authenticator - Two Factor Authentication (2FA, TFA) : Support Form Improvement.
459
 
460
  = 5.4.11 =
461
- * Google Authenticator - Two Factor Authentication (2FA, MFA) : Feedback Issue fix.
462
 
463
  = 5.4.9 =
464
- * Google Authenticator - Two Factor Authentication (2FA, TFA) : User Experience, new support form and Security disabled by default. Added New Methods for users to choose.
465
 
466
  = 5.4.8 =
467
- * Google Authenticator - Two Factor Authentication (2FA, OTP Verification) : Learning Management System support, Microsoft Authenticator and Duo Authenticator support and restrict account sharing add-on.
468
-
469
  = 5.4.7 =
470
- * Google Authenticator - Two Factor Authentication (2FA, SMS Verification) : Fixing warnings and adding minor changes in the plans.
471
 
472
  = 5.4.6 =
473
  * Google Authenticator - Two Factor Authentication (2FA) : Improving Google Authenticator and adding Payment options.
474
 
475
  = 5.4.5 =
476
- * Google Authenticator - Two Factor Authentication (2FA, OTP) : Security and MFA UI updates.
477
 
478
  = 5.4.4 =
479
- * Google Authenticator - Two Factor Authentication (2FA, TFA) : Two Factor : WooCommerce login page integration.
480
 
481
  = 5.4.3 =
482
- * Google Authenticator - Two Factor Authentication (2FA, MFA) : Session issue fix for customers using Two Factor.
483
 
484
  = 5.4.2 =
485
- * Google Authenticator - Two Factor Authentication (2FA, MFA) : Warning for cloud customer moving to on-premise Two factor
486
 
487
  = 5.4.1 =
488
  * Google Authenticator - Two Factor Authentication (2FA) : Headers sent issue is security firewall.
489
 
490
  = 5.4.0 =
491
- * Google Authenticator - Two Factor Authentication (2FA) : Two Factor FAQ Fix and OTP code convenience.
492
 
493
  = 5.3.26 =
494
  * Google Authenticator - Two Factor Authentication (2FA) : Two Factor On-premise FAQ update.
@@ -497,11 +541,11 @@ For older changelog entries, please see the [additional changelog.txt file](http
497
  * Google Authenticator - Two Factor Authentication (2FA) : Two Factor On-premise support form.
498
 
499
  = 5.3.24 =
500
- * Google Authenticator - Two Factor Authentication (2FA) : On-premise two factor released with multiple user support for some authentication methods.
501
 
502
  = 5.3.23 =
503
  * Google Authenticator - Two Factor Authentication (2FA) : Scanner : Timing and caching issue fix.
504
- * Disable 2fa on WooCommerce login.
505
  * Login with Username only fix.
506
 
507
  = 5.3.22 =
@@ -517,7 +561,7 @@ For older changelog entries, please see the [additional changelog.txt file](http
517
  * Google Authenticator - Two Factor Authentication (2FA) : Security : Giving users choice of two factor.
518
 
519
  = 5.3.18 =
520
- * Google Authenticator - Two Factor Authentication (2FA) : Antivirus and Firewall : Fix Scan.
521
 
522
  = 5.3.17 =
523
  * Google Authenticator - Two Factor Authentication (2FA) : Anti-Virus : Improved Stop Scan.
@@ -541,11 +585,12 @@ For older changelog entries, please see the [additional changelog.txt file](http
541
  * Google Authenticator - Two Factor Authentication (2FA) : Security : Limiting Firewall, Malware, backup and login security for users not needing it.
542
 
543
  = 5.3.10 =
544
- * Google Authenticator - Two Factor Authentication (2FA) : Security : Moved to Old WAF version minor issues..
545
 
546
  = 5.3.9 =
547
  * Google Authenticator - Two Factor Authentication (2FA) : Security : Web application Firewall Sql Injections report and monitoring.
548
 
 
549
  = 5.3.8 =
550
  * Google Authenticator - Two Factor Authentication (2FA) : Security : Malware Scanner Fix.
551
 
@@ -577,17 +622,17 @@ For older changelog entries, please see the [additional changelog.txt file](http
577
  * Google Authenticator - Two Factor Authentication (2FA) : Fixed conflict and filter issues.
578
 
579
  = 5.2.5 =
580
- * Google Authenticator - Two Factor Authentication (2FA) : Some warnings in remote posts.
581
 
582
  = 5.2.4 =
583
- * Google Authenticator - Two Factor Authentication (2FA) : Removed curl calls and unnecessary files.
584
 
585
  = 5.2.3 =
586
  * Google Authenticator - Two Factor Authentication (2FA) : Fix for some users facing issues in api calls.
587
 
588
  = 5.2.2 =
589
  * Google Authenticator - Two Factor Authentication (2FA) : Adding File Protection and Strong Password feature.
590
- :
591
  = 5.2.1 =
592
  * Google Authenticator - Two Factor Authentication (2FA) : UI changes for description.
593
 
@@ -604,7 +649,7 @@ For older changelog entries, please see the [additional changelog.txt file](http
604
  * Google Authenticator - Two Factor Authentication (2FA) : Minor Bug fix.
605
 
606
  = 5.1.19 =
607
- * Google Authenticator - Two Factor Authentication (2FA) : Adding basic Security Features Monitoring, IP blocking and login transaction report.
608
 
609
  = 5.1.18 =
610
  * Google Authenticator - Two Factor Authentication (2FA) : Object access error for lower PHP versions.
@@ -658,7 +703,7 @@ For older changelog entries, please see the [additional changelog.txt file](http
658
  * Google Authenticator - Two Factor Authentication (2FA) : Minor changes.
659
 
660
  = 5.1.0 =
661
- * Google Authenticator - Two Factor Authentication (2FA) : Added new user plans
662
 
663
  = 5.0.17 =
664
  * Google Authenticator - Two Factor Authentication (2FA) : Minor Bug fix.
@@ -670,7 +715,7 @@ For older changelog entries, please see the [additional changelog.txt file](http
670
  * Google Authenticator - Two Factor Authentication (2FA) : Added Google Authenticator option in the WP login page itself.
671
 
672
  = 5.0.14 =
673
- * Google Authenticator - Two Factor Authentication (2FA) : Bug Fixes.
674
 
675
  = 5.0.13 =
676
  * Google Authenticator - Two Factor Authentication (2FA) : Bug Fix and code optimization.
@@ -712,7 +757,7 @@ For older changelog entries, please see the [additional changelog.txt file](http
712
  * Google Authenticator - Two Factor Authentication (2FA) : Bug fix.
713
 
714
  = 5.0.0 =
715
- * Google Authenticator - Two Factor Authentication (2FA) : New UI Interface, 2-factor authentication for Unlimited Users.
716
  * This is a major release.
717
 
718
  = 4.6.2 =
@@ -725,19 +770,19 @@ For older changelog entries, please see the [additional changelog.txt file](http
725
  * Google Authenticator - Two Factor Authentication (2FA) : Bug fixes for customers who were getting redirected to the login page after the two factor authentication.
726
 
727
  = 4.5.8 =
728
- * Google Authenticator - Two Factor Authentication (2FA) : Tested up to 4.9.4 and Removed External links.
729
 
730
  = 4.5.7 =
731
  * Google Authenticator - Two Factor Authentication (2FA) : Minor bug fixes.
732
 
733
  = 4.5.6 =
734
- * Google Authenticator - Two Factor Authentication (2FA) : Tested up to Wordpress 4.9.
735
 
736
  = 4.5.5 =
737
  * Google Authenticator - Two Factor Authentication (2FA) : 404 bug fixes.
738
 
739
  = 4.5.4 =
740
- * Google Authenticator - Two Factor Authentication (2FA) : Better UI of Login Pages, Fixed Redirection issue. Fixed the error in the last version (4.5.3) for the customers who were getting undefined action errors.
741
 
742
  = 4.5.3 =
743
  * Google Authenticator - Two Factor Authentication (2FA) : Changed UI of the Login Pages, Redirect to Login Page bug fixes.
@@ -746,7 +791,7 @@ For older changelog entries, please see the [additional changelog.txt file](http
746
  * Google Authenticator - Two Factor Authentication (2FA) : Readme Update: Description Update
747
 
748
  = 4.5.1 =
749
- * Google Authenticator - Two Factor Authentication (2FA) : Updated the new Google Authenticator App's link and the 'How to Setup Tab' tab.
750
 
751
  = 4.5.0 =
752
  * Google Authenticator - Two Factor Authentication (2FA) : Fix Google Authenticator configuration issue.
@@ -763,6 +808,7 @@ For older changelog entries, please see the [additional changelog.txt file](http
763
  = 4.4.6 =
764
  * Google Authenticator - Two Factor Authentication (2FA) : Instructions for login in case user get locked out.
765
 
 
766
  = 4.4.5 =
767
  * Google Authenticator - Two Factor Authentication (2FA) : Fixed the issue of session variable on the login with username page.
768
 
@@ -774,7 +820,576 @@ For older changelog entries, please see the [additional changelog.txt file](http
774
 
775
  = 4.4 =
776
  * Google Authenticator - Two Factor Authentication (2FA):
777
- * Note: This is a very important update having altogether a new UI and compatibility with Limit Login Attempts. After updating, please do not logout from your admin dashboard. Try to login from another browser and if you face any issue , please contact us at info@xecurify.com
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
778
  * Compatibility with Limit Login Attempts.
779
  * New User Interface for login.
780
 
@@ -788,10 +1403,10 @@ For older changelog entries, please see the [additional changelog.txt file](http
788
  * Google Authenticator - Two Factor Authentication (2FA, MFA): Updated miniOrange APIs.
789
 
790
  = 4.2.9 =
791
- * Google Authenticator - Two Factor Authentication (2FA, MFA): Tested up to WordPress 4.6.
792
 
793
  = 4.2.7 =
794
- * Google Authenticator - Two Factor Authentication (2FA, MFA): Session Warning fix in the last version for some of the users.
795
 
796
  = 4.2.6 =
797
  * Google Authenticator - Two Factor Authentication (2FA, MFA): Compatible with wordpress caching.
@@ -820,7 +1435,7 @@ For older changelog entries, please see the [additional changelog.txt file](http
820
 
821
  = 4.1.8 =
822
  * Google Authenticator - Two Factor Authentication ( 2FA ):
823
- * Changed the location of images used for the demo. Now being loaded from the site having SSL certificate.
824
 
825
  = 4.1.7 =
826
  * Google Authenticator - Two Factor Authentication ( 2FA ):
@@ -843,13 +1458,13 @@ For older changelog entries, please see the [additional changelog.txt file](http
843
  = 4.1.3 =
844
  * Google Authenticator - Two Factor Authentication ( 2FA ):
845
  * Fixed CSS Conflict with the plugins in the admin dashboard.
846
- * More intuitive UI for WooCommerce login.
847
  * Tested front-end login with themes like wordpress default theme,
848
- customize theme,zerif-lite theme,accesspress store theme,ishop theme and many more.
849
 
850
  = 4.1.2 =
851
  * Google Authenticator - Two Factor Authentication ( 2FA ): Google Authenticator for Windows phone
852
- * Fixed CSS conflict with front-end of site if WooCommerce is not enabled.
853
 
854
  = 4.1.1 =
855
  * Google Authenticator - Two Factor Authentication ( 2FA ): Adding Validation in choosing Security Questions (KBA).
@@ -876,7 +1491,7 @@ For older changelog entries, please see the [additional changelog.txt file](http
876
  * Google Authenticator - Two Factor Authentication ( 2FA ): Features added.
877
  * KBA as backup method.
878
  * mobile browser support.
879
- * more intuitive UI for WooCommerce login.
880
 
881
  = 3.8 =
882
  * Google Authenticator - Two Factor Authentication ( 2 Factor ): Bug Fix for roles.
@@ -912,7 +1527,7 @@ More descriptive setup messages and UI changes.
912
  * Google Authenticator.
913
  * Device Id (Remember device).
914
  * Choice given to admin to enable specific authentication methods for users.
915
- * Two Factor support for WooCommerce theme.
916
  * Short Code for various customized fronted login.
917
  * More intuitive UI and descriptive instructions.
918
 
@@ -962,4 +1577,4 @@ More descriptive setup messages and UI changes.
962
  * Google Authenticator - Two Factor Authentication ( 2FA ): Added email ID verification during registration.
963
 
964
  = 1.0.0 =
965
- * First version of Google Authenticator - Two Factor Authentication ( 2FA ) plugin supported with mobile authentication for admins only.
1
+ === Google Authenticator - WordPress Two Factor Authentication (2FA , MFA) ===
2
 
3
+ Contributors: cyberlord92, twofactor, hsn97
4
+ Tags: google authenticator, two factor authentication, two factor, 2FA, two-step verification, mobile verification, OTP, mobile verification, two factor, Two step verification, TFA, MFA, 2 factor authentication, Remember Device, OTP,WordPress otp, two step authentication,Clef,SMS, email, signup security, two factor auth, Mobile Authentication, strong authentication, 2 step authentication, mobile verification,Multifactor authentication, passwordless login, one time passcode, soft token Authentication, QR Code Authentication, email verification, KBA, Security Questions,2FA, login OTP, login with SMS, mobile login, phone login, OTP login, mobile verification,knowledge based authentication,authy, authy two factor,yubico,Two-Factor Authentication,WordPress otp, security,user security, ​Twilio WordPress, SMS gateway, Solutions Infini, Clickatell, BulkSMS, MSG91, Nexmo, SMS Country, message, woocommerce, website security, login security, multi factor authentication, multi factor,wordfence, IP Blocking, IP Whitelisting, login Audits, woocommerce, SMS login, passwordless login, auth, login with OTP WordPress, OTP Over SMS and Email, two-step authentication, Mobile Authentication, passwordless login, login without password, passwordless authentication, secure login, temporary login, temporary access, one time passcode, email verification, security, website security, login security, multi-factor authentication, woocommerce, smartphone, WordPress otp, register with OTP, user OTP verification, SMS OTP, OTP Email, registration with OTP verification, registration verification,smartphone authentication
5
  Donate link: https://miniorange.com/
6
  Requires at least: 3.0.1
7
+ Tested up to: 5.6
8
  Requires PHP: 5.3.0
9
+ Stable tag: 5.4.34
10
  License: GPLv2 or later
11
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
12
 
13
+ Google Authenticator, Two Factor Authentication (2 Factor), OTP verificaion - SMS and Email, Apps like Microsoft, Duo, LastPass & more on login and Registration for all forms. Google AUthenticator also Supports QR Code, Push Notification and Security Questions along with the Google Authenticator itself.
14
 
15
  == Description ==
16
 
17
+ Google Authenticator - Two Factor Authentication (2FA) plugin provides a completely Secure login to your WordPress website. Google Authenticator- Two Factor Authentication (2FA) is a FREE, Simple & very easy to setup plugin. Google Authenticator provides two factor authentication (2FA, MFA) whenever login to your WordPress website ensuring no unauthorised access to your website. Google Authenticator can be configured for any TOTP based Authentication Method for providing addtional layer of security of Two Factor Authentication.
18
+
19
+ = User Identity Verification or OTP Verification =
20
+ Login and Registration: Verify users on login and Registration with different authentication methods like Google Authenticator, SMS Verification, Email, Authy Authenticator, Duo Authenticator, Microsoft Authenticator, TOTP Based Authenticator, Security Questions and many others. Easy OTP Verification with SMS Verification and Email Verification.
21
+
22
+ = Google Authenticator and other 2 Factor ( 2FA ) sync on multiple websites =
23
+ You would not need to configure Google Authenticator and other Two Factor Authentication ( 2FA ) methods from second site onword. Just login with miniOrange account and your 2FA will automatically get set. This is available for Google Authenticator, Duo Authenticator, Microsoft Authenticator, Securty Questions, LastPass, Authy, miniOrange methods, OTP over SMS, OTP over Email. It is supported only if you are using our cloud services of 2 Factor.
24
+
25
+ == Plugin Integrations and Support for all methods of two factor like Google Authenticator ==
26
+ * [Woocommerce](https://wordpress.org/plugins/woocommerce/) (Login Woocommerce using Google Authenticator - Two Factor Authentication (2FA))
27
+ * [BuddyPress form](https://wordpress.org/plugins/buddypress/) (Login BuddyPress using Google Authenticator - Two Factor Authentication (2FA))
28
+ * [bbpress form](https://wordpress.org/plugins/bbpress/) (Login bbpress using Google Authenticator - Two Factor Authentication (2FA))
29
+ * [Digimember](https://digimember.com/) (Login Digimember using Google Authenticator - Two Factor Authentication (2FA))
30
+ * [Paid Memberships Pro](https://wordpress.org/plugins/paid-memberships-pro/) (Login Paid Memberships Pro using Google Authenticator - Two Factor Authentication (2FA))
31
+ * [Memberpress Pro](https://memberpress.com/) (Login Memberpress Pro using Google Authenticator - Two Factor Authentication (2FA))
32
+ * [Ultimate Member User Profile & Membership Form](https://wordpress.org/plugins/ultimate-member/) (Login Ultimate Member User Profile & Membership using Google Authenticator - Two Factor Authentication (2FA))
33
+ * [LearnDash](https://www.learndash.com/) (Login LearnDash using Google Authenticator - Two Factor Authentication (2FA))
34
+ * [LearnPress](https://wordpress.org/plugins/learnpress/) (Login LearnPress using Google Authenticator - Two Factor Authentication (2FA))
35
+ * [LifterLMS](https://wordpress.org/plugins/lifterlms/) (Login LifterLMS using Google Authenticator - Two Factor Authentication (2FA))
36
+ * [Dokan](https://wordpress.org/plugins/dokan-lite/) (Login Dokan using Google Authenticator - Two Factor Authentication (2FA))
37
+ * And many more
38
+
39
+ == WordPress login and registration forms support and integration for all methods of two factor authentication like Google Authenticator ==
40
+ * [Restrict Content Pro Form](https://wordpress.org/plugins/restrict-content/) (Register and Login Restrict Content Pro using Google Authenticator - Two Factor Authentication (2FA))
41
+ * [My theme Login Form](https://wordpress.org/plugins/theme-my-login/) (Login My theme Login using Google Authenticator - Two Factor Authentication (2FA))
42
+ * [User Registration Custom Registration Form](https://wordpress.org/plugins/bbpress/) (Register and Login User Registration – Custom Registration using Google Authenticator - Two Factor Authentication (2FA))
43
+ * [Custom Login Page Customizer Form](https://wordpress.org/plugins/loginpress/) (Login Custom Login Page Customizer using Google Authenticator - Two Factor Authentication (2FA))
44
+ * [Admin Custom Login Form](https://wordpress.org/plugins/admin-custom-login/) (Login Admin Custom Login using Google Authenticator - Two Factor Authentication (2FA))
45
+ * [RegistrationMagic Custom Registration Forms](https://wordpress.org/plugins/custom-registration-form-builder-with-submission-manager/) (Register and Login RegistrationMagic Custom Registration using Google Authenticator - Two Factor Authentication (2FA))
46
+ * And many more
47
+
48
+ = Third Party Custom SMS Gateway =
49
+ Premium plugin supports any third party custom SMS Gateway. If you don't have your own SMS gateway you can use miniOrange gateway. Send SMS all over the world.
50
+ * Some Famous Gateways Supported:
51
+ * Twilio : [Twilio](https://www.twilio.com/)
52
+ * Clickatell : [Clickatell](https://www.clickatell.com/)
53
+ * ClickSend : [ClickSend](https://www.clicksend.com/)
54
+ * SendGrid : [SendGrid](https://sendgrid.com/)
55
+ * Plivo : [Plivo](https://www.plivo.com/)
56
+ * GatewayApi : [GatewayApi](https://gatewayapi.com/)
57
+
58
+ Others not listed gateway can be tested on our site, Test your Gateway: [Custom Gateway](https://login.xecurify.com/moas/login?redirectUrl=https://login.xecurify.com/moas/admin/customer/smsconfig)
59
+
60
+ = All Registartion Forms Supported =
61
+ Google Authenticator - Two factor authentication( 2 Factor ) is available for all Forms. You can enable OTP Verification on all Registration forms and Google Authenticator, Security Questions, Prevent Account Sharing, Push Notifications on all the Login forms to verify users. Use this shortcode for Registration([mo2f_enable_register]). Settings in <b>Two Factor -> Registration Forms</b>.
62
+
63
+
64
+ = FREE Plugin Features =
65
+ * Simplified & easy user interface to setup Google Authenticator and other Two Factor Authentication ( 2FA ) methods.
66
+ * Google Authenticator - Two Factor Authentication (2FA) for **3 User** forever FREE!
67
+ * **Variety of Two Factor Authentication Methods:** Any App supporting TOTP algorithm like Google Authenticator, Authy Authenticator, LastPass Authenticator, Microsoft Authenticator, QR Code, Push Notification, Soft Token and Security Questions(KBA)
68
+ * Includes Language Translation Support. Supports a wide variety of languages for all methods of 2 factor like Google Authenticator
69
+ * Passwordless login or login with phone number, supported for Google Authenticator and other 2 Factor authentication methods.
70
+ * This plugin Supports standard TOTP + HOTP protocols for Authentication Methods. Any TOTP protocol based authenticator app can be configured using Google Authenticator option in the plugin.
71
+ * Two Factor Authentication (2FA) allows authentication on login page itself for Google Authenticator & miniOrange Soft Token.
72
+ * Brute force attack prevention & IP Blocking.
73
+ * User login Monitorning with and without two-factor authentication(2FA)
74
+ * RCP Login and Registration Suppport with all login 2 factor methods like Google Authenticator, OTP Over SMS, QR code Authentication, login with Email for Login.
75
+ * OTP Verification of Ulimate Member Registartion form with methods like OTP Over SMS and Email, QR code Authentication.
76
+ * Recovery codes in case you are locked out for all Two Factor Authentication (TFA) methods like Google Authenticator, SMS verification,
77
+
78
+ = Standard Lite Plugin Features =
79
+
80
+ * Google Authenticator - Two Factor Authentication (2FA) for all users and all user roles *( Site-based pricing )*
81
+ * **Available Two Factor Authentication Methods:** Google Authenticator, Authy Authenticator, Microsoft Authenticator, LastPass Authenticator, Security Questions(KBA), OTP Over Email, OTP Over SMS, Email Verification. *( SMS credits need to be purchased as per the need)*
82
+ * Includes language Translation Support. Supports wide variety of languages.
83
+ * **Multiple Login Options:** Username + password + two-factor (or) Username + two-factor i.e. Passwordless login. [Guide](https://docs.miniorange.com/documentation/login-username-2nd-factor-2)
84
+ * **Unlimitted Email transactions:** Unlimitted Email transactions with your SMTP server.
85
+ * **Backup Method:** KBA(Security Questions) For all TFA methods like Google Authenticator, etc.
86
+ * Multisite compatible.
87
+ * User role based redirection after Login [Guide](https://docs.miniorange.com/documentation/custom-redirect-login-url), Customize account name in Google Authenticator app [Guide](https://docs.miniorange.com/documentation/google-authenticator-app-name)
88
+ * Custom Security Questions (KBA) [Guide](https://docs.miniorange.com/documentation/custom-security-questions)
89
+
90
+ = Premium Lite Plugin Features =
91
+
92
+ * Google Authenticator - Two Factor Authentication (2FA) for all users and all user roles *( Site-based pricing )*
93
+ * **Available Two Factor Authentication Methods:** Google Authenticator, Authy Authenticator, Microsoft Authenticator, LastPass Authenticator, Security Questions(KBA), OTP Over Email, OTP Over SMS, Email Verification, Mobile Verification. *( SMS credits need to be purchased as per the need)*
94
+ * Includes language Translation Support. Supports wide variety of languages.
95
+ * **Multiple Login Options:** Username + password + two-factor (or) Username + two-factor i.e. Passwordless login. [Guide](https://docs.miniorange.com/documentation/login-username-2nd-factor-2)
96
+ * **Unlimitted Email transactions:** Unlimitted Email transactions with your SMTP server.
97
+ * **Backup Method:** KBA(Security Questions) , OTP Over Email, Backup codes For all Two Factor Authentication ( TFA ) methods like Google Authenticator, etc.
98
+ * Multisite compatible.
99
+ * Two Factor Authentication ( TFA ) for Custom login forms like User Pro, login with ajax, Theme my login, etc with all authentication methods like Google Authenticator, mobile Verification with SMS, etc.
100
+ * User role based redirection after Login [Guide](https://docs.miniorange.com/documentation/custom-redirect-login-url), Customize account name in Google Authenticator app [Guide](https://docs.miniorange.com/documentation/google-authenticator-app-name)
101
+ * Custom Security Questions (KBA) [Guide](https://docs.miniorange.com/documentation/custom-security-questions)
102
+ * Role based 2 Factor - Different 2 factor like Google Authenticator, OTP Over SMS and Email, Authy Authenticator, etc based on your role [Guide](https://docs.miniorange.com/documentation/specific-set-authentication-methods-based-role)*
103
+ * Force Two factor for users [Guide](https://docs.miniorange.com/documentation/enforce-2fa-users)
104
+ * Email notification to users asking them to set up Two Factor Authentication (2FA) [Guide](https://docs.miniorange.com/documentation/want-send-email-notification-users-setting-2-factor)
105
+ * Set Privacy Policy for users [Guide](https://docs.miniorange.com/documentation/privacy-policy-site)
106
+ * App Specific Password to login from mobile Apps
107
+ * Remember Device for all methods like Google Authenticator, Mobile verification with SMS, etc [Guide](https://docs.miniorange.com/documentation/remember-my-device)
108
+ * **Add-Ons Included:** RBA & Trusted Devices Management Add-on, Personalization Add-on and Short Codes Add-on
109
 
 
110
 
111
+ = Standard Plugin Features =
112
+
113
+ * Google Authenticator - Two Factor Authentication (2FA) for Users as per the upgrade *( User-based pricing )*
114
+ * **Available Authentication Methods:** Google Authenticator, Authy Authenticator, Microsoft Authenticator, LastPass Authenticator, QR Code, Push Notification, Soft Token, Security Questions(KBA), OTP Over Email, OTP Over SMS, OTP Over SMS and Email, Email Verification. *( SMS credits need to be purchased as per the need)*
115
+ * Includes language Translation Support. Supports wide variety of languages.
116
+ * **Multiple Login Options:** Username + password + two-factor (or) Username + two-factor i.e. Passwordless login. [Guide](https://docs.miniorange.com/documentation/login-username-2nd-factor-2)
117
+ * **Backup Method:** KBA(Security Questions)
118
+ * Multisite compatible.
119
+ * User role based redirection after Login [Guide](https://docs.miniorange.com/documentation/custom-redirect-login-url), Customize account name in Google Authenticator app [Guide](https://docs.miniorange.com/documentation/google-authenticator-app-name)
120
+ * Custom Security Questions (KBA) [Guide](https://docs.miniorange.com/documentation/custom-security-questions)
121
+
122
+ = Premium Plugin Features =
123
+
124
+ * Google Authenticator - Two Factor Authentication (2FA) for Users as per the upgrade *( User-based pricing )*
125
+ * **Available Authentication Methods:** Google Authenticator, Authy Authenticator, Microsoft Authenticator, LastPass Authenticator, QR Code, Push Notification, Soft Token, Security Questions(KBA), OTP Over Email, OTP Over SMS, OTP Over SMS and Email, Email Verification, Hardware Token, Whatsapp based 2fa(Add-on), Telegram Based 2fa. *( SMS and Email credits need to be purchased as per the need)*
126
+ * Language Translation Support
127
+ * **Multiple Login Options:** Username + password + two-factor (or) Username + two-factor i.e. Passwordless login [Guide](https://docs.miniorange.com/documentation/login-username-2nd-factor-2)
128
+ * **Backup Methods:** KBA(Security Questions), OTP Over Email, Backup Codes [Guide](https://docs.miniorange.com/documentation/want-configure-backup-methods-users-can-configure-case-locked-site-not-able-log)
129
+ * Multisite compatible.
130
+ * Force Two factor authentication for users [Guide](https://docs.miniorange.com/documentation/enforce-2fa-users)
131
+ * Email notification to users asking them to set up Two Factor Authentication (2FA) [Guide](https://docs.miniorange.com/documentation/want-send-email-notification-users-setting-2-factor)
132
+ * User role based redirection after Login [Guide](https://docs.miniorange.com/documentation/custom-redirect-login-url), Custom Security Questions (KBA) [Guide](https://docs.miniorange.com/documentation/custom-security-questions), Customize account name in Google Authenticator app [Guide](https://docs.miniorange.com/documentation/google-authenticator-app-name).
133
+ * Enable Google Authenticator - Two Factor Authentication (2FA) for specific Users/User Roles [Guide](https://docs.miniorange.com/documentation/enable-two-factor-based-roles)
134
+ * Choose specific two factor authentication methods for Users [Guide](https://docs.miniorange.com/documentation/specific-set-authentication-methods-based-role)
135
+ * Set Privacy Policy for users [Guide](https://docs.miniorange.com/documentation/privacy-policy-site)
136
+ * App Specific Password to login from mobile Apps
137
+ * Remember Device to skip the two factor authentication( 2FA ) for trusted devices [Guide](https://docs.miniorange.com/documentation/remember-my-device)
138
+ * **Add-Ons Included:** RBA & Trusted Devices Management Add-on, Personalization Add-on and Short Codes Add-on
139
 
140
+ = Enterprise Plugin Features =
141
 
142
+ * Google Authenticator - Two Factor Authentication (2FA) for Users as per the upgrade *( User-based pricing )*
143
  * **Available Authentication Methods:** Google Authenticator, Authy Authenticator, Microsoft Authenticator, LastPass Authenticator, QR Code, Push Notification, Soft Token, Security Questions(KBA), OTP Over Email, OTP Over SMS, OTP Over SMS and Email, Email Verification, Hardware Token. *( SMS and Email credits need to be purchased as per the need)*
144
+ * Language Translation Support
145
+ * **Multiple Login Options:** Username + password + two factor Authentication (or) Username + two factor authentication i.e. Passwordless login.
146
  * **Backup Methods:** KBA(Security Questions), OTP Over Email, Backup Codes
147
+ * Multisite compatible.
148
+ * Email notification to users asking them to set up Google Authenticator - Two Factor Authentication (2FA).
149
+ * User role based redirection after Login, Custom Security Questions (KBA), Customize account name in Google Authenticator app.
150
+ * Enable Two Factor Authentication (2FA) for specific Users/User Roles
151
+ * Choose specific two factor authentication methods for Users
152
+ * App Specific Password to login from mobile Apps
153
  * **Add-Ons Included:** RBA & Trusted Devices Management Add-on, Personalization Add-on and Short Codes Add-on
154
+ * **Brute force attack prevention, IP Blocking & User login Monitorning. **
155
  * File protection & strong password
156
+ * Monitorning current two factor authentication (2 Factor) method of all the users in the plugin.
157
+ = PASSWORDLESS LOGIN =
158
+ Passwordless login is a new way of login in which you and your users can login without entering the password. The login can be done by username and 2 factor or only username which can be decided based on the user role. If a role is not allowed for passwordless login they will login with password and username.
159
+
160
+ == Prevent Account Sharing Between Users ==
161
+ Many video sharing and E-learning platforms want to prevent sharing of account between the users. This can be done using miniOrange Two factor plugin (TFA) with methods like QR code Authentication , Mobile Verification, etc. Also, e-learning portals can use this to their advantage. It can be used on any websites which create and sell courses. It can be integrated with plugins like Learndash.
162
+ Other sites like premium video content or any premium content where you want users not to share passwords between friends and Family then you can go for this solution. Multiple two factor authentication methods are supported to achieve prevent account sharing.
163
+
164
+ = Additional Features other than the two factor authentication ( 2FA ) =
165
+ * **Complete Web Security suite to protect wordpress from any attacks**
166
+ * **Web Application Firewall (WAF) : Wordpress Firewall to protect your site**
167
+ * **OWASP TOP 10 Protection**
168
+ * **Login Protection : Spam and Login Protection**
169
+ * **Malware scanner: Detects any virus, malware and trojan**
170
+ * **Backup: Taking Encrypted Backup with local storage and cloud storage**
171
+ * **Two Factor Authentication : 2FA and MFA**
172
+ * **Limit Login Attempts to stop password guessing**
173
+ * **Realtime Global IP Blocing**
174
+ * **Limit Rate of Request : Protecting resources from any security hole exploit**
175
+ * **Crawler Detection and blocking**
176
+ * **Blocking IP and Attacks**
177
+ * **Country Blocking and Browser Blocking**
178
+ * **Brute Force Attacks prevention to stop password hack**
179
+ * **Captcha for Bot Detection**
180
+ * **Google Recaptcha**
181
+ * **Login Form Protection**
182
+ * **Registration Form Protection**
183
+ * **Integration with different plugin - Woo commerce, buddypress, ultimate member and others**
184
+ * **Reporting**
185
+ * **Audit Log**
186
+
187
+ Check all the features here: [miniOrange Website](https://security.miniorange.com/)
188
+
189
+ = Why do you need to register? =
190
+
191
+ miniOrange Two factor authentication Plugin (TFA) uses miniOrange APIs to communicate between your WP and miniOrange. To keep this communication secure, we ask you to register and assign you API keys specific to your account. This way your account and users calls can be only accessed by API keys assigned to you.
192
+ Adding to this, you can also use the same account on multiple applications and your users do not have to maintain multiple accounts or 2 factor like Google Authenticator. Single code generated in Google Authenticator will be enough to login to all sites. With this you can also achieve sync of 2 factor authentication on multiple sites.
193
+
194
+
195
+ = Add Ons [Applicable for Free and Standard Plans, Inclusive in the Premium Plan] =
196
+
197
+ * RBA & Trusted Devices Management Add-on Features
198
+ * Remember Device to skip the two factor authentication ( 2 Factor ) from the trusted devices.
199
+ * Set Device Limit for the users to login
200
+ * IP Restriction: Limit users to login from specific IPs
201
+ * Personalization Add-on Features to customize your 2 factor authentication pages
202
+ * Custom UI of Two Factor Authentication (2FA) popups
203
  * Custom Email and SMS Templates
204
+ * Customize 'Powered by' Logo on two factor authentication page
205
  * Customize Plugin Icon
206
  * Customize Plugin Name
207
 
208
+ * Short Codes Add-on Features
209
+ * Option to turn on/off 2 factor (two factor authentication) by user
210
+ * Option to configure the Google Authenticator and Security Questions by user
211
+ * Option to 'Enable Remember Device' from a custom login form to skip 2 factor for trusted devices.
212
+ * On-Demand ShortCodes for specific functionalities ( like for enabling 2FA (2 Factor authentication) for specific pages)
213
 
214
+ = Apps Supported by the two factor authentication plugin =
215
+ * Google Authenticator
216
+ * miniOrange Authenticator
217
+ * Duo Authenticator
218
+ * Microsoft Authenticator
219
+ * Authy 2 Factor Authenticator
220
+ * LastPass Authenticator
221
+ * FreeOTP Authenticator
222
 
223
+ <h4>Useful blog posts about two factor authenticaion ( 2FA ) plugin </h4>
224
+ *[Beginner’s Guide: How to Add Two Factor Authentication to WordPress](https://themeisle.com/blog/how-to-add-two-factor-authentication-to-wordpress/)
225
+ *[How to Add WordPress Two Factor Authentication (2FA)](https://phppot.com/wordpress/how-to-add-wordpress-two-factor-authentication-2fa-using-google-authenticator-plugin/)
 
226
 
227
+ Customized solutions and Active support is available. Email us at info@xecurify.com or call us at +1 9786589387.
228
 
229
+ **Note: The plugin is GDPR Compliant and supports wide variety of Language Translation**
230
 
231
  == Installation ==
232
 
233
  = From your WordPress dashboard =
234
  1. Navigate to `Plugins > Add New` from your WP Admin dashboard.
235
+ 2. Search for `miniOrange 2 Factor Authentication`.
236
+ 3. Install `miniOrange 2 Factor Authentication` and Activate the plugin.
237
 
238
  = From WordPress.org =
239
+ 1. Search for `miniOrange 2 Factor Authentication` and download it.
240
+ 2. Unzip and upload the `miniorange-2-factor-authentication` directory to your `/wp-content/plugins/` directory.
241
+ 3. Activate miniOrange 2 Factor Authentication from the Plugins tab of your admin dashboard.
242
 
243
+ = Once Activated =
244
  1. Select miniOrange 2-Factor ( 2 factor authentication ) from the left menu and follow the instructions.
245
+ 2. Once, you complete your setup. Click on Log Out button.
246
  3. Enter the username and password. After the initial validation, you will be prompted for the 2-factor method you had set up.
247
+ 4. Validate yourself with the 2-factor authentication method you configured.
248
+
249
+ <b>Video Guide</b> :<br>
250
+ <iframe width="560" height="315" src="https://www.youtube.com/embed/vVGXjedIaGs" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
251
 
 
 
252
 
253
  == Frequently Asked Questions ==
254
 
255
+ = How do I gain access to my website if I get locked out? =
256
 
257
  You can obtain access to your website by one of the below options:
258
 
259
+ 1. If you have an additional administrator account whose Two Factor is not enabled yet, you can login with it.
260
+ 2. If you had setup KBA questions earlier, you can use them as an alternate method to login to your website.
261
+ 3. Rename the plugin from FTP - this disables the Two-Factor (2FA) plugin and you will be able to login with your Wordpress username and password.
262
 
263
+ For detailed information, Please check on our website. <a href="https://faq.miniorange.com/knowledgebase/i-am-locked-cant-access-my-account-what-do-i-do/" target="_blank">Locked Out</a>.<br>
264
  You can also check our video Tutorial:
265
+ <iframe width="560" height="315" src="https://www.youtube.com/embed/wLFKakQkpk8" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
266
+
267
+ = I want to enable Google Authenticator 2 Factor authentication as the backup method? =
268
+
269
+ You can use google authenticator as the backup method for your specific user or all users in the premium version of the two factor authentication. [PREMIUM FEATURE]
270
+
271
+ = I want to enable Two Factor Authentication (2FA) role wise ? =
272
+
273
+ You can select the roles under Login Settings tab to enable the plugin role wise. [PREMIUM FEATURE]
274
+
275
+ = I have enabled Two-Factor Authentication (2FA) for all users, what happens if an end user tries to login but has not yet registered ? =
276
 
277
+ If a user has not setup Two-Factor yet, user has to register by inline registration that will be invoked during the login.
278
 
279
+ = I want to enable only one authentication method for my users. What shloud I do? =
280
 
281
+ You can select the two factor authentication methods under Login Settings tab. The selected authentication methods will be shown to the user during inline registration for example if you select Google Authenticator it will be shown on login. [PREMIUM FEATURE]
282
 
283
+ = I am getting the fatal error of call to undefined function json_last_error(). What should I do? =
284
 
285
+ Please check your php version. The plugin is supported in php version 5.3.0 or above. You need to upgrade your php version to 5.3.0 or above to use the plugin.
286
 
287
+ = I did not recieve OTP while trying to register with miniOrange. What should I do? =
288
 
289
+ The OTP is sent to your email address with which you have registered with miniOrange. If you can't see the email from miniOrange in your mails, please make sure to check your SPAM folder. If you don't see an email even in SPAM folder, please submit a query in our Support Section in the plugin or you can contact us at info@xecurify.com.
290
 
291
+ = I want to configure 2nd factor by Google Authenticator. =
292
 
293
+ Select the radio button next to Google Authenticator/Authy App and select the phone type and then scan the QR Code by Google Authenticator App. Enter the 6 digit code in the textbox and click on Save and verify buuton.
294
 
295
+ = I want to configure 2nd factor by Authy 2-Factor Authentication App. =
296
+
297
+ Select the radio button next to Google Authenticator/Authy App and select the phone type and then scan the QR Code by Authy 2-Factor Authentication App. Enter the 6 digit code from the Authy App into the textbox available and click on Save and Verifiy button.
298
+
299
+ = I forgot the password of my miniOrange account. How can I reset it? =
300
+
301
+ There are two cases according to the page you see -<br>
302
+ 1. Login with miniOrange screen: You should click on forgot password link. You will get a new password on your email address with which you have registered with miniOrange . Now you can login with the new password.
303
+
304
+ 2. Register with miniOrange screen: Enter your email ID and any random password in password and confirm password input box. This will redirect you to Login with miniOrange screen. Now follow first step.
305
+
306
+ = I have a custom / front-end login page on my site and I want the look and feel to remain the same when I add 2 factor ? =
307
+
308
+ If you have a custom login form other than wp-login.php then we will provide you the shortcode. Shortcode will work only for the customized login page created from wordpress plugins. We are not claiming that it will work with all the customized login page. In such case, custom work is needed to integrate two factor with your customized login page. You can submit a query in our <b>Support Section</b> in the plugin or you can contact us at info@xecurify.com for more details.
309
+
310
+ = I have Woocommerce theme login page on my site. How can I enable Two Factor ? =
311
+
312
+ If you have Woocommerce theme login then go to Advanced Options Tab and check Enable Two-Factor for Woocommerce Front End Login. If you need any help setting up 2-Factor for your Woocommerce theme login form, please submit a query in our Support Section in the plugin or you can contact us at info@xecurify.com.
313
+
314
+ = I have installed plugins which limit the login attempts like Limit Login Attempt, Loginizer, Wordfence etc. Is there any incompatibilities with these kind of plugins? =
315
+
316
+ The limit login attempt kind of plugins limit the number of login attempts and block the IP temporarily. So if you are using 2 factor along with these kind of plugins then you should increase the login attempts (minimum 5) so that you dont get locked out yourself.
317
 
318
  = If you are using any Security Plugin in WordPress like Simple Security Firewall, All in One WP Security Plugin and you are not able to login with Two-Factor. =
319
 
320
+ Our Two-Factor plugin is compatible with most of the security plugins, but if it is not working for you. Please submit a query in our Support Section in the plugin or you can contact us at info@xecurify.com.
321
 
322
+ = If you are using any render blocking javascript and css plugin like Async JS and CSS Plugin and you are not able to login with Two-Factor or your screen got blank. =
323
 
324
+ If you are using Async JS and CSS Plugin. Please go to its settings and add jquery in the list of exceptions and save settings. It will work. If you are still not able to get it right, Please submit a query in our Support Section in the plugin or you can contact us at info@xecurify.com.
325
 
326
+ = My users have different types of phones. What phones are supported? =
327
 
328
+ We support all types of phones. Smart Phones, Basic Phones, Landlines, etc. Go to Setup Two-Factor Tab and select Two-Factor method of your choice from a range of 8 different options.
329
 
330
+ = What if a user does not have a smart phone? =
331
 
332
+ You can select OTP over SMS, Phone Call Verification or Email Verification as your Two-Factor method. All these methods are supported on basic phones.
333
 
334
+ = What if a user does not have any phone? =
335
 
336
+ You can select Email Verification or Security Questions (KBA) as your Two-Factor method.
 
 
 
 
 
 
 
337
 
338
+ = What if I am trying to login from my phone ? =
339
 
340
+ If your Security Questions (KBA) are configured then you will be asked to answer them when you are logging in from your phone.
 
 
341
 
342
+ = I want to hide default login form and just want to show login with phone? =
 
 
343
 
344
+ You should go to <b>Login Settings Tab</b> and check <b>Login with Phone Only</b> checkbox to hide the default login form.
345
 
 
346
 
347
+ = My phone has no internet connectivity and configured 2nd factor with miniOrange App, how can I login? =
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
348
 
349
+ You can login using our alternate login method. Please follow below steps to login:
350
+
351
+ * Enter your username and click on login with your phone.
352
+ * Click on <b>Phone is Offline?</b> button below QR Code.
353
+ * You will see a textbox to enter one time passcode.
354
+ * Open miniOrange Authenticator App and Go to Soft Token Tab.
355
+ * Enter the one time passcode shown in miniOrange Authenticator App in textbox, just like Google authenticator.
356
+ * Click on submit button to validate the otp.
357
+ * Once you are authenticated, you will be logged in.
358
+
359
+ = My phone is lost, stolen or discharged. How can I login? =
360
+
361
+ You can login using our alternate login method. Click on the Forgot Phone link and you will get 2 alternate methods to login. Select "Send a one time passcode to my registered email" to authenticate by OTP over EMAIL or Select "Answer your Security Questions (KBA)" to authenticate by knowledge based authenticaion.
362
+
363
+ = My phone has no internet connectivity and i am entering the one time passcode from miniOrange Authenticator App, it says Invalid OTP?
364
+
365
+ Click on the <b>Settings Icon</b> on top right corner in <b>miniOrange Authenticator App</b> and then press <b>Sync button</b> under 'Time correction for codes' to sync your time with miniOrange Servers. If you still can't logged in then please email us at info@xecurify.com or <a href="https://miniorange.com/contact" target="_blank">Contact us</a>.Soft Token method is just like google authenticator method.
366
+
367
+ = I want to go back to default login with password? =
368
+
369
+ You should go to <b>Login Settings Tab</b> and uncheck <b>Enable Two-Factor plugin</b> checkbox. This will disable 2-Factor and you can login using wordpress default login.
370
+
371
+ = I am upgrading my phone. =
372
+
373
+ You should go to <b>Setup Two Factor</b> Tab and click on <b>Reconfigure</b> to reconfigure 2-Factor with your new phone.
374
+
375
+ = What If I want to use any other second factor like OTP Over SMS, Security Questions, Device Id, etc ? =
376
+
377
+ miniOrange authentication service has 15+ authentication methods.One time passcodes (OTP) over SMS, OTP over Email, OTP over SMS and Email, Out of Band SMS, Out of Band Email, Soft Token, Push Notification, USB based Hardware token (yubico), Security Questions, Mobile Authentication (QR Code Authentication), Voice Authentication (Biometrics), Phone Verification, Device Identification, Location, Time of Access User Behavior. To know more about authentication methods, please visit <a href="https://miniorange.com/strong_auth" target="_blank">https://miniorange.com/strong_auth </a>. If you want to have any other 2-factor for your WordPress site, please email us at info@xecurify.com or <a href="https://miniorange.com/contact" target="_blank">Contact us</a>.
378
+
379
+ == Screenshots ==
380
 
381
+ 1. Google Authenticator (2FA) - Setup different 2 Factor methods
382
+ 2. Google Authenticator (2FA) - Test 2 factor configured
383
+ 3. Google Authenticator (2FA) - 2 Factor Authentication methods available
384
+ 4. Google Authenticator (2FA) - Google Authenticator login
385
+ 5. Google Authenticator (2FA) - QR code 2 Factor login
386
+ 6. Google Authenticator (2FA) - miniOrange Authenticator login
387
+ 7. Google Authenticator (2FA) - Push notification login
388
+ 8. Google Authenticator (2FA) - Remember device and personalization add-ons
389
+
390
+ == Changelog ==
391
+
392
+ = 5.4.34=
393
  * Google Authenticator - Two Factor Authentication (2FA, OTP) :
394
  * New User Interface for easy setup
395
  * Added developers logs
396
  * Minor fixes
397
 
398
+ = 5.4.33=
399
+ * Google Authenticator - Two Factor Authentication (2FA, OTP) :
400
+ * Duo Authenticator support
401
+ * Google reCaptcha v3 support
 
402
 
403
+ = 5.4.32=
404
+ * Google Authenticator - Two Factor Authentication (2FA, OTP) :
405
+ * Minor fixes
406
 
407
+ = 5.4.31=
408
  * Google Authenticator - Two Factor Authentication (2FA, OTP) :
409
  * OTP over Email as two factor fix
410
  * Low Email transaction alert fix
411
 
412
+ = 5.4.30=
413
  * Google Authenticator - Two Factor Authentication (2FA, OTP) :
414
  * Feedback changes
415
 
452
  * Email and SMS transaction sync
453
  * Feedback form on network deactivate
454
  * Enable/Disable 2FA fix
455
+ * 2FA added for superadmin role
456
 
457
  = 5.4.22 =
458
  * Google Authenticator - Two Factor Authentication (2FA, OTP) :
467
  * Sanitization of some input values.
468
 
469
  = 5.4.20 =
470
+ * Google Authenticator - Two Factor Authentication (2FA, SMS) :
471
  * Google Authenticator Qr code fix.
472
  * My theme login Login fix.
473
 
475
  * Google Authenticator - Two Factor Authentication (2FA, OTP) : Google Authenticator cloud fix.
476
 
477
  = 5.4.18 =
478
+ * Google Authenticator - Two Factor Authentication (2FA, OTP) :
479
+ *Added missing file
480
 
481
  = 5.4.17 =
482
+ * Google Authenticator - Two Factor Authentication (2FA, OTP) :
483
  *Digimember Form Support
484
  *Memberpress Form Support
485
  *SMS Verification Support
486
+ *OTP Verification on Woocommerce Registration
487
 
488
  = 5.4.16 =
489
  * Google Authenticator - Two Factor Authentication (2FA, OTP) : Quick form fix.
491
  = 5.4.15 =
492
  * Google Authenticator - Two Factor Authentication (2FA, OTP) :
493
  * Theme My Login plugin Support
494
+ * Ultimate Memember Registration Support
495
+ * Woocommerce Registration Support
496
+ * Ultimate Memember Redirect
497
  * Restrict Content Pro Login and Registration
498
+
499
  = 5.4.14 =
500
+ * Google Authenticator - Two Factor Authentication (2FA, OTP) : Performance improvement with fixes in Security Questions. And User Email verification and Phone Verification issues resolved.
501
 
502
  = 5.4.13 =
503
+ * Google Authenticator - Two Factor Authentication (2FA, MFA) : Support Form Improvement.
504
 
505
  = 5.4.11 =
506
+ * Google Authenticator - Two Factor Authentication (2FA, TFA) : Feedback Issue fix.
507
 
508
  = 5.4.9 =
509
+ * Google Authenticator - Two Factor Authentication (2FA, MFA) : User Experience, new support form and Security disabled by default. Added New Methods for users to choose.
510
 
511
  = 5.4.8 =
512
+ * Google Authenticator - Two Factor Authentication (2FA, TFA) : Learning Management System support, Microsoft Authenticator and Duo Authenticator support and restrict account sharing add-on.
 
513
  = 5.4.7 =
514
+ * Google Authenticator - Two Factor Authentication (2FA) : Fixing warnings and adding minor changes in the plans.
515
 
516
  = 5.4.6 =
517
  * Google Authenticator - Two Factor Authentication (2FA) : Improving Google Authenticator and adding Payment options.
518
 
519
  = 5.4.5 =
520
+ * Google Authenticator - Two Factor Authentication (2FA) : Security and MFA UI updates.
521
 
522
  = 5.4.4 =
523
+ * Google Authenticator - Two Factor Authentication (2FA) : Two Factor : Woocommerce login page integration.
524
 
525
  = 5.4.3 =
526
+ * Google Authenticator - Two Factor Authentication (2FA , Two Factor) : Session issue fix for customers using Two Factor.
527
 
528
  = 5.4.2 =
529
+ * Google Authenticator - Two Factor Authentication (2FA) : Warning for cloud customer moving to on-premise Two factor.
530
 
531
  = 5.4.1 =
532
  * Google Authenticator - Two Factor Authentication (2FA) : Headers sent issue is security firewall.
533
 
534
  = 5.4.0 =
535
+ * Google Authenticator - Two Factor Authentication (2FA) : Two Factor FAQ Fix and OTP code convinence.
536
 
537
  = 5.3.26 =
538
  * Google Authenticator - Two Factor Authentication (2FA) : Two Factor On-premise FAQ update.
541
  * Google Authenticator - Two Factor Authentication (2FA) : Two Factor On-premise support form.
542
 
543
  = 5.3.24 =
544
+ * Google Authenticator - Two Factor Authentication (2FA) : On-premise two factor released with multiple users support for some authentication methods.
545
 
546
  = 5.3.23 =
547
  * Google Authenticator - Two Factor Authentication (2FA) : Scanner : Timing and caching issue fix.
548
+ * Disable 2fa on Woocommerce login.
549
  * Login with Username only fix.
550
 
551
  = 5.3.22 =
561
  * Google Authenticator - Two Factor Authentication (2FA) : Security : Giving users choice of two factor.
562
 
563
  = 5.3.18 =
564
+ * Google Authenticator - Two Factor Authentication (2FA) : Anti-Virus and Firewall : Fix Scan.
565
 
566
  = 5.3.17 =
567
  * Google Authenticator - Two Factor Authentication (2FA) : Anti-Virus : Improved Stop Scan.
585
  * Google Authenticator - Two Factor Authentication (2FA) : Security : Limiting Firewall, Malware, backup and login security for users not needing it.
586
 
587
  = 5.3.10 =
588
+ * Google Authenticator - Two Factor Authentication (2FA) : Security : Moved to Old WAF version minor issues.
589
 
590
  = 5.3.9 =
591
  * Google Authenticator - Two Factor Authentication (2FA) : Security : Web application Firewall Sql Injections report and monitoring.
592
 
593
+
594
  = 5.3.8 =
595
  * Google Authenticator - Two Factor Authentication (2FA) : Security : Malware Scanner Fix.
596
 
622
  * Google Authenticator - Two Factor Authentication (2FA) : Fixed conflict and filter issues.
623
 
624
  = 5.2.5 =
625
+ * Google Authenticator - Two Factor Authentication (2FA) : Some warnings in remote post.
626
 
627
  = 5.2.4 =
628
+ * Google Authenticator - Two Factor Authentication (2FA) : Removed curl calls and unncessary files.
629
 
630
  = 5.2.3 =
631
  * Google Authenticator - Two Factor Authentication (2FA) : Fix for some users facing issues in api calls.
632
 
633
  = 5.2.2 =
634
  * Google Authenticator - Two Factor Authentication (2FA) : Adding File Protection and Strong Password feature.
635
+
636
  = 5.2.1 =
637
  * Google Authenticator - Two Factor Authentication (2FA) : UI changes for description.
638
 
649
  * Google Authenticator - Two Factor Authentication (2FA) : Minor Bug fix.
650
 
651
  = 5.1.19 =
652
+ * Google Authenticator - Two Factor Authentication (2FA) : Adding basic Security Features Monitorning, IP blocking and login transaction report.
653
 
654
  = 5.1.18 =
655
  * Google Authenticator - Two Factor Authentication (2FA) : Object access error for lower PHP versions.
703
  * Google Authenticator - Two Factor Authentication (2FA) : Minor changes.
704
 
705
  = 5.1.0 =
706
+ * Google Authenticator - Two Factor Authentication (2FA) : Added new user plans.
707
 
708
  = 5.0.17 =
709
  * Google Authenticator - Two Factor Authentication (2FA) : Minor Bug fix.
715
  * Google Authenticator - Two Factor Authentication (2FA) : Added Google Authenticator option in the WP login page itself.
716
 
717
  = 5.0.14 =
718
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug Fixs.
719
 
720
  = 5.0.13 =
721
  * Google Authenticator - Two Factor Authentication (2FA) : Bug Fix and code optimization.
757
  * Google Authenticator - Two Factor Authentication (2FA) : Bug fix.
758
 
759
  = 5.0.0 =
760
+ * Google Authenticator - Two Factor Authentication (2FA) : New UI Interface, 2 factor authentication for Unlimited Users.
761
  * This is a major release.
762
 
763
  = 4.6.2 =
770
  * Google Authenticator - Two Factor Authentication (2FA) : Bug fixes for customers who were getting redirected to the login page after the two factor authentication.
771
 
772
  = 4.5.8 =
773
+ * Google Authenticator - Two Factor Authentication (2FA) : Tested upto 4.9.4 and Removed External links.
774
 
775
  = 4.5.7 =
776
  * Google Authenticator - Two Factor Authentication (2FA) : Minor bug fixes.
777
 
778
  = 4.5.6 =
779
+ * Google Authenticator - Two Factor Authentication (2FA) : Tested upto Wordpress 4.9.
780
 
781
  = 4.5.5 =
782
  * Google Authenticator - Two Factor Authentication (2FA) : 404 bug fixes.
783
 
784
  = 4.5.4 =
785
+ * Google Authenticator - Two Factor Authentication (2FA) : Better UI of Login Pages, Fixed Redirection issue. Fixed the error in the last version (4.5.3) for the customers who were getting undefined action error.
786
 
787
  = 4.5.3 =
788
  * Google Authenticator - Two Factor Authentication (2FA) : Changed UI of the Login Pages, Redirect to Login Page bug fixes.
791
  * Google Authenticator - Two Factor Authentication (2FA) : Readme Update: Description Update
792
 
793
  = 4.5.1 =
794
+ * Google Authenticator - Two Factor Authentication (2FA) : Updated the new Authenticator App's link and the 'How to Setup Tab' tab.
795
 
796
  = 4.5.0 =
797
  * Google Authenticator - Two Factor Authentication (2FA) : Fix Google Authenticator configuration issue.
808
  = 4.4.6 =
809
  * Google Authenticator - Two Factor Authentication (2FA) : Instructions for login in case user get locked out.
810
 
811
+
812
  = 4.4.5 =
813
  * Google Authenticator - Two Factor Authentication (2FA) : Fixed the issue of session variable on the login with username page.
814
 
820
 
821
  = 4.4 =
822
  * Google Authenticator - Two Factor Authentication (2FA):
823
+ * Compatibility with Limit Login Attempts.
824
+ * New User Interface for login.
825
+
826
+ = 4.3.1 =
827
+ * Google Authenticator - Two Factor Authentication (2FA, MFA): Compatible upto 4.7
828
+
829
+ = 4.3.0 =
830
+ * Google Authenticator - Two Factor Authentication (2FA, MFA): Updated miniOrange APIs.
831
+
832
+ = 4.2.9 =
833
+ * Google Authenticator - Two Factor Authentication (2FA, MFA): Tested upto WordPress 4.6.
834
+
835
+ = 4.2.7 =
836
+ * Google Authenticator - Two Factor Authentication (2FA, MFA): Session Warnig fix in the last version for some of the users.
837
+
838
+ = 4.2.6 =
839
+ * Google Authenticator - Two Factor Authentication (2FA, MFA): Compatible with wordpress caching.
840
+
841
+ = 4.2.5 =
842
+ * Google Authenticator - Two Factor Authentication (2FA, MFA): Improved the session handler.
843
+
844
+ = 4.2.4 =
845
+ * Google Authenticator - Two Factor Authentication (2FA, MFA): Updated faq for limit login attempt type of plugins.
846
+
847
+ = 4.2.3 =
848
+ * Google Authenticator - Two Factor Authentication ( 2FA ):
849
+ * Improved Error handling during Account Creation.
850
+
851
+ = 4.2.2 =
852
+ * Google Authenticator - Two Factor Authentication ( 2FA ):
853
+ * Registration Flow fixes
854
+
855
+ = 4.2.1 =
856
+ * Google Authenticator - Two Factor Authentication ( 2FA ):
857
+ * Change of status during login with phone flow and tested with WP 4.5
858
+
859
+ = 4.2.0 =
860
+ * Google Authenticator - Two Factor Authentication ( 2FA ):
861
+ * Mark as tested on Wordpress 4.5
862
+
863
+ = 4.1.8 =
864
+ * Google Authenticator - Two Factor Authentication ( 2FA ):
865
+ * Changed the location of images used for demo. Now being loaded from the site having SSL certificate.
866
+
867
+ = 4.1.7 =
868
+ * Google Authenticator - Two Factor Authentication ( 2FA ):
869
+ * Improved Error Handling for Remember Device.
870
+
871
+ = 4.1.6 =
872
+ * Google Authenticator - Two Factor Authentication ( 2FA ):
873
+ * Licensing Plan Updated.
874
+
875
+ = 4.1.5 =
876
+ * Google Authenticator - Two Factor Authentication ( 2FA ):
877
+ * Added Forgot Password functionality for miniOrange customer admin.
878
+ * Added warning message for the users who are using lower version of php.
879
+ * Added functionlity to change the customer email.
880
+
881
+ = 4.1.4 =
882
+ * Google Authenticator - Two Factor Authentication ( 2FA ):
883
+ * Added an option for admin to enable or disable login for XML-RPC supported applications.
884
+
885
+ = 4.1.3 =
886
+ * Google Authenticator - Two Factor Authentication ( 2FA ):
887
+ * Fixed CSS Conflict with the plugins in the admin dashboard.
888
+ * More intuitive UI for woocommerce login.
889
+ * Tested front-end login with themes like wordpress default theme,
890
+ customizr theme,zerif-lite theme,accesspress store theme,ishop theme and many more.
891
+
892
+ = 4.1.2 =
893
+ * Google Authenticator - Two Factor Authentication ( 2FA ): Google Authenticator for Windows phone
894
+ * Fixed CSS conflict with front-end of site if woocommerce is not enabled.
895
+
896
+ = 4.1.1 =
897
+ * Google Authenticator - Two Factor Authentication ( 2FA ): Adding Validation in choosing Security Questions (KBA).
898
+
899
+ = 4.1.0 =
900
+ * Google Authenticator - Two Factor Authentication ( 2FA ): Features added.
901
+ multisite support
902
+ Custom login redirection
903
+ Authy 2-Factor Authentication as separate authentication method
904
+
905
+ = 4.0.5 = Google Authenticator - Two Factor Authentication ( 2 Factor) : Login into third party apps which support XML-RPC.
906
+
907
+ = 4.0.4 = Google Authenticator - Two Factor Authentication ( 2 Factor) : Added a check of KBA configuration from mobile login.
908
+
909
+ = 4.0.3 = Google Authenticator - Two Factor Authentication ( 2 Factor) : Added Support for Authy 2-Factor Authentication App.
910
+
911
+ = 4.0.2 = Google Authenticator - Two Factor Authentication ( 2 Factor) : Added a check for selection of unique questions during KBA setup.
912
+
913
+ = 4.0.1 = Bug Fix Google Authenticator - Two Factor Authentication ( 2 Factor)
914
+
915
+ = 4.0 =
916
+ * Google Authenticator - Two Factor Authentication ( 2FA ): Features added.
917
+ * KBA as backup method.
918
+ * mobile browser support.
919
+ * more intuitive UI for woocommerce login.
920
+
921
+ = 3.8 =
922
+ * Google Authenticator - Two Factor Authentication ( 2FA ): Bug Fix.
923
+
924
+ = 3.7 =
925
+ * Google Authenticator - Two Factor Authentication ( 2FA ): Activation of two factor role wise.
926
+
927
+ = 3.6 =
928
+ * Google Authenticator - Two Factor Authentication ( 2FA ): email verification in inline registration flow for all users.
929
+ More descriptive setup messages and UI changes.
930
+
931
+ = 3.5 =
932
+ * Google Authenticator - Two Factor Authentication ( 2FA ): Provided mobile login support.
933
+
934
+ = 3.4 =
935
+ * Google Authenticator - Two Factor Authentication ( 2FA ): Features added
936
+ * Inline registration flow for users.
937
+ * Security Questions (KBA) as additional method
938
+ * Alternate way of user identification in customer creation.
939
+ * premium customizable features.
940
+
941
+ = 3.3 =
942
+ * Google Authenticator - Two Factor Authentication ( 2FA ): Fix the issue of session for some versions of php.
943
+
944
+ = 3.2 =
945
+ * Google Authenticator - Two Factor Authentication ( 2FA ): Fix for device-id compatibility.
946
+
947
+ = 3.1 =
948
+ * Google Authenticator - Two Factor Authentication ( 2FA ): Fix for 2FA ShortCode.
949
+
950
+ = 3.0 =
951
+ * Google Authenticator - Two Factor Authentication ( 2FA ): Features added
952
+ * Google Authenticator.
953
+ * Device Id (Remember device).
954
+ * Choice given to admin to enable specific authentication methods for users.
955
+ * Two Factor support for woocommerce theme.
956
+ * Short Code for various customized frontend login.
957
+ * More intuitive UI and descriptive instructions.
958
+
959
+ = 2.6 =
960
+ * Google Authenticator - Two Factor Authentication ( 2FA ): Fix the compatibility issues of user session with other security plugins.
961
+
962
+ = 2.5 =
963
+ * Google Authenticator - Two Factor Authentication ( 2FA ): Fix the compatibility issues with All In One WP Security & Firewall plugin.
964
+
965
+ = 2.4 =
966
+ * Google Authenticator - Two Factor Authentication ( 2FA ): UI fixes for admin media library dashboard.
967
+
968
+ = 2.3 =
969
+ * Google Authenticator - Two Factor Authentication ( 2FA ): More descriptive setup messages, more intuitive UI.
970
+
971
+ = 2.2 =
972
+ * Google Authenticator - Two Factor Authentication ( 2FA ): Fixed css issues for existing users
973
+
974
+ = 2.1 =
975
+ * Google Authenticator - Two Factor Authentication ( 2FA ): Added support for multiple Two Factor Choices like OTP Over SMS, Phone Call Verification, Push Notification, Soft Token (like Google Authenticator Code), Email Verification, etc.
976
+
977
+ = 2.0 =
978
+ * Google Authenticator - Two Factor Authentication ( 2FA ): Added login with password plus second factor feature.
979
+
980
+ = 1.8 =
981
+ * Google Authenticator - Two Factor Authentication ( 2FA ): Added feature of different login form choice,test authentication and help for configuration and setup.
982
+
983
+ = 1.7 =
984
+ * Bug Fixes Google Authenticator - Two Factor Authentication ( 2FA ): Modifying login screen adaptable to user's login form
985
+
986
+ = 1.6 =
987
+ * Bug Fixes Google Authenticator - Two Factor Authentication ( 2FA ): fetching 2 factor configuration when activating the plugin after deactivating it.
988
+
989
+ = 1.5 =
990
+ * Bug Fixes Google Authenticator - Two Factor Authentication ( 2FA ): Login issues and password save issues resolved
991
+
992
+ = 1.4 =
993
+ * Bug Fixes Google Authenticator - Two Factor Authentication ( 2FA ): Authentication was not working on some version of php.
994
+
995
+ = 1.3 =
996
+ * Bug Fixes Google Authenticator - Two Factor Authentication ( 2 Factor )
997
+
998
+ = 1.2 =
999
+ * Google Authenticator - Two Factor Authentication ( 2FA ): Added 2 factor for all users along with forgot phone functionality.
1000
+
1001
+ = 1.1 =
1002
+ * Google Authenticator - Two Factor Authentication ( 2FA ): Added email ID verification during registration.
1003
+
1004
+ = 1.0.0 =
1005
+ * First version of Google Authenticator - Two Factor Authentication ( 2FA ) plugin supported with mobile auhthentication for admin only.
1006
+
1007
+ == Upgrade Notice ==
1008
+
1009
+ = 5.4.31=
1010
+ * Google Authenticator - Two Factor Authentication (2FA, OTP) :
1011
+ * OTP over Email as two factor fix
1012
+ * Low Email transaction alert fix
1013
+
1014
+ = 5.4.30=
1015
+ * Google Authenticator - Two Factor Authentication (2FA, OTP) :
1016
+ * Feedback changes
1017
+
1018
+ = 5.4.29 =
1019
+ * Google Authenticator - Two Factor Authentication (2FA, OTP) :
1020
+ * Session independent Google Authenticator
1021
+ * Session independent KBA
1022
+ * Feedback improvement for two factor authentication plugin
1023
+
1024
+ = 5.4.28 =
1025
+ * Google Authenticator - Two Factor Authentication (2FA, OTP) :
1026
+ * New year sale update
1027
+
1028
+ = 5.4.27 =
1029
+ * Google Authenticator - Two Factor Authentication (2FA, OTP) :
1030
+ * New year sale
1031
+ * WordPress 5.6 compatibility fix
1032
+ * WAF fixes
1033
+ * Real time IP blocking
1034
+ * IP based user login
1035
+ * New feature release notification
1036
+
1037
+ = 5.4.26 =
1038
+ * Google Authenticator - Two Factor Authentication (2FA, OTP) :
1039
+ * Christmas Offer
1040
+
1041
+ = 5.4.25 =
1042
+ * Google Authenticator - Two Factor Authentication (2FA, OTP) :
1043
+ * OTP over Telegram Fixes
1044
+
1045
+ = 5.4.24 =
1046
+ * Google Authenticator - Two Factor Authentication (2FA, OTP) :
1047
+ * OTP over Whatsapp
1048
+ * OTP over Telegram
1049
+ * Feedback form changes
1050
+
1051
+ = 5.4.23 =
1052
+ * Google Authenticator - Two Factor Authentication (2FA, OTP) :
1053
+ * Call support with technical team
1054
+ * Email and SMS transaction sync
1055
+ * Feedback form on network deactivate
1056
+ * Enable/Disable 2FA fix
1057
+ * 2FA added for superadmin role
1058
+
1059
+ = 5.4.22 =
1060
+ * Google Authenticator - Two Factor Authentication (2FA, OTP) :
1061
+ * Backup Codes
1062
+ * Sanitization and JS improvements
1063
+ * SMS and Email Sync
1064
+ * Whatsapp based Two factor in Premium plugin
1065
+ * Telegram based Two factor in Premium plugin
1066
+
1067
+ = 5.4.21 =
1068
+ * Google Authenticator - Two Factor Authentication (2FA, SMS) :
1069
+ * Sanitization of some input values.
1070
+
1071
+ = 5.4.20 =
1072
+ * Google Authenticator - Two Factor Authentication (2FA, SMS) :
1073
+ * Google Authenticator Qr code fix.
1074
+ * My theme login Login fix.
1075
+
1076
+ = 5.4.19 =
1077
+ * Google Authenticator - Two Factor Authentication (2FA, OTP) : Google Authenticator cloud fix.
1078
+
1079
+ = 5.4.18 =
1080
+ * Google Authenticator - Two Factor Authentication (2FA, OTP) :
1081
+ * Added missing file
1082
+
1083
+ = 5.4.17 =
1084
+ * Google Authenticator - Two Factor Authentication (2FA, OTP) :
1085
+ *Digimember Form Support
1086
+ *Memberpress Form Support
1087
+ *SMS Verification Support
1088
+ *OTP Verification on Woocommerce Registration
1089
+
1090
+ = 5.4.16 =
1091
+ * Google Authenticator - Two Factor Authentication (2FA, OTP) : Quick form fix.
1092
+
1093
+ = 5.4.15 =
1094
+ * Google Authenticator - Two Factor Authentication (2FA, OTP) :
1095
+ * Theme My Login plugin Support
1096
+ * Ultimate Memember Registration Support
1097
+ * Woocommerce Registration Support
1098
+ * Ultimate Memember Redirect
1099
+ * Restrict Content Pro Login and Registration
1100
+
1101
+ = 5.4.14 =
1102
+ * Google Authenticator - Two Factor Authentication (2FA, MFA) : Performance improvement with fixes in Security Questions. And User Email verification and Phone Verification issues resolved.
1103
+
1104
+ = 5.4.13 =
1105
+ * Google Authenticator - Two Factor Authentication (2FA, TFA) : Support Form Improvement.
1106
+
1107
+ = 5.4.11 =
1108
+ * Google Authenticator - Two Factor Authentication (2FA, MFA) : Feedback Issue fix.
1109
+
1110
+ = 5.4.9 =
1111
+ * Google Authenticator - Two Factor Authentication (2FA, TFA) : User Experience, new support form and Security disabled by default. Added New Methods for users to choose.
1112
+
1113
+ = 5.4.8 =
1114
+ * Google Authenticator - Two Factor Authentication (2FA, OTP Verification) : Learning Management System support, Microsoft Authenticator and Duo Authenticator support and restrict account sharing add-on.
1115
+
1116
+ = 5.4.7 =
1117
+ * Google Authenticator - Two Factor Authentication (2FA, SMS Verification) : Fixing warnings and adding minor changes in the plans.
1118
+
1119
+ = 5.4.6 =
1120
+ * Google Authenticator - Two Factor Authentication (2FA) : Improving Google Authenticator and adding Payment options.
1121
+
1122
+ = 5.4.5 =
1123
+ * Google Authenticator - Two Factor Authentication (2FA) : Security and MFA UI updates.
1124
+
1125
+ = 5.4.4 =
1126
+ * Google Authenticator - Two Factor Authentication (2FA) : Two Factor : Woocommerce login page integration.
1127
+
1128
+ = 5.4.3 =
1129
+ * Google Authenticator - Two Factor Authentication (2FA) : Session issue fix for customers using Two Factor.
1130
+
1131
+ = 5.4.2 =
1132
+ * Google Authenticator - Two Factor Authentication (2FA) : Warning for cloud customer moving to on-premise Two factor
1133
+
1134
+ = 5.4.0 =
1135
+ * Google Authenticator - Two Factor Authentication (2FA) : Two Factor FAQ Fix and OTP code convinence.
1136
+
1137
+ = 5.3.26 =
1138
+ * Google Authenticator - Two Factor Authentication (2FA) : Two Factor On-premise FAQ update.
1139
+
1140
+ = 5.3.25 =
1141
+ * Google Authenticator - Two Factor Authentication (2FA) : Two Factor On-premise support form.
1142
+
1143
+ = 5.3.24 =
1144
+ * Google Authenticator - Two Factor Authentication (2FA) : On-premise two factor released with multiple user support for some authentication methods.
1145
+
1146
+ = 5.3.23 =
1147
+ * Google Authenticator - Two Factor Authentication (2FA) : Scanner : Timing and caching issue fix.
1148
+ * Disable 2fa on Woocommerce login.
1149
+ * Login with Username only fix.
1150
+
1151
+ = 5.3.22 =
1152
+ * Google Authenticator - Two Factor Authentication (2FA) : Antivirus : Fixing Cache issues and adding nonce.
1153
+
1154
+ = 5.3.21 =
1155
+ * Google Authenticator - Two Factor Authentication (2FA) : Two Factor : Choice between Two factor and Security.
1156
+
1157
+ = 5.3.20 =
1158
+ * Google Authenticator - Two Factor Authentication (2FA) : Anti Malware : Fixing issue faced by users during scan.
1159
+
1160
+ = 5.3.19 =
1161
+ * Google Authenticator - Two Factor Authentication (2FA) : Security : Giving users choice of two factor.
1162
+
1163
+ = 5.3.18 =
1164
+ * Google Authenticator - Two Factor Authentication (2FA) : Anti-Virus and Firewall : Fix Scan.
1165
+
1166
+ = 5.3.17 =
1167
+ * Google Authenticator - Two Factor Authentication (2FA) : Anti-Virus : Improved Stop Scan.
1168
+
1169
+ = 5.3.16 =
1170
+ * Google Authenticator - Two Factor Authentication (2FA) : Anti-Virus : Stop Scan.
1171
+
1172
+ = 5.3.15 =
1173
+ * Google Authenticator - Two Factor Authentication (2FA) : Anti-Malware : schedule scan.
1174
+
1175
+ = 5.3.14 =
1176
+ * Google Authenticator - Two Factor Authentication (2FA) : Anti-Malware : Adding more signatures.
1177
+
1178
+ = 5.3.13 =
1179
+ * Google Authenticator - Two Factor Authentication (2FA) : Security : fix UI Issue and improving 2fa.
1180
+
1181
+ = 5.3.12 =
1182
+ * Google Authenticator - Two Factor Authentication (2FA) : Security : backup table fix.
1183
+
1184
+ = 5.3.11 =
1185
+ * Google Authenticator - Two Factor Authentication (2FA) : Security : Limiting Firewall, Malware, backup and login security for users not needing it.
1186
+
1187
+ = 5.3.10 =
1188
+ * Google Authenticator - Two Factor Authentication (2FA) : Security : Moved to Old WAF version minor issues..
1189
+
1190
+ = 5.3.9 =
1191
+ * Google Authenticator - Two Factor Authentication (2FA) : Security : Web application Firewall Sql Injections report and monitoring.
1192
+
1193
+
1194
+ = 5.3.8 =
1195
+ * Google Authenticator - Two Factor Authentication (2FA) : Security : Malware Scanner Fix.
1196
+
1197
+ = 5.3.7 =
1198
+ * Google Authenticator - Two Factor Authentication (2FA) : Security : Two factor login with username fix.
1199
+
1200
+ = 5.3.6 =
1201
+ * Google Authenticator - Two Factor Authentication (2FA) : Anti virus zip file fix.
1202
+
1203
+ = 5.3.5 =
1204
+ * Google Authenticator - Two Factor Authentication (2FA) : Backup URL Fix and space issue in google authenticator.
1205
+
1206
+ = 5.3.4 =
1207
+ * Google Authenticator - Two Factor Authentication (2FA) : CSS fix for Malware Scanner, Security and firewall.
1208
+
1209
+ = 5.3.3 =
1210
+ * Google Authenticator - Two Factor Authentication (2FA) : Minor Malware Scanner issues fix.
1211
+
1212
+ = 5.3.2 =
1213
+ * Google Authenticator - Two Factor Authentication (2FA) : File Changes.
1214
+
1215
+ = 5.3.1 =
1216
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug fix.
1217
+
1218
+ = 5.3.0 =
1219
+ * Google Authenticator - Two Factor Authentication (2FA) : Releasing Firewall with Two Factor.
1220
+
1221
+ = 5.2.6 =
1222
+ * Google Authenticator - Two Factor Authentication (2FA) : Fixed conflict and filter issues.
1223
+
1224
+ = 5.2.5 =
1225
+ * Google Authenticator - Two Factor Authentication (2FA) : Some warnings in remote post.
1226
+
1227
+ = 5.2.4 =
1228
+ * Google Authenticator - Two Factor Authentication (2FA) : Removed curl calls and unncessary files.
1229
+
1230
+ = 5.2.3 =
1231
+ * Google Authenticator - Two Factor Authentication (2FA) : Fix for some users facing issues in api calls.
1232
+
1233
+ = 5.2.2 =
1234
+ * Google Authenticator - Two Factor Authentication (2FA) : Adding File Protection and Strong Password feature.
1235
+
1236
+ = 5.2.1 =
1237
+ * Google Authenticator - Two Factor Authentication (2FA) : UI changes for description.
1238
+
1239
+ = 5.2.0 =
1240
+ * Google Authenticator - Two Factor Authentication (2FA) : UI changes with more description.
1241
+
1242
+ = 5.1.22 =
1243
+ * Google Authenticator - Two Factor Authentication (2FA) : UI Fixes.
1244
+
1245
+ = 5.1.21 =
1246
+ * Google Authenticator - Two Factor Authentication (2FA) : Login Redirect.
1247
+
1248
+ = 5.1.20 =
1249
+ * Google Authenticator - Two Factor Authentication (2FA) : Minor Bug fix.
1250
+
1251
+ = 5.1.19 =
1252
+ * Google Authenticator - Two Factor Authentication (2FA) : Adding basic Security Features Monitorning, IP blocking and login transaction report.
1253
+
1254
+ = 5.1.18 =
1255
+ * Google Authenticator - Two Factor Authentication (2FA) : Object access error for lower PHP versions.
1256
+
1257
+ = 5.1.17 =
1258
+ * Google Authenticator - Two Factor Authentication (2FA) : Minor Bug fix and Documentation changes.
1259
+
1260
+ = 5.1.16 =
1261
+ * Google Authenticator - Two Factor Authentication (2FA) : Login redirect fix.
1262
+
1263
+ = 5.1.15 =
1264
+ * Google Authenticator - Two Factor Authentication (2FA) : UI Fixes.
1265
+
1266
+ = 5.1.14 =
1267
+ * Google Authenticator - Two Factor Authentication (2FA) : Database Error Fix and Custom Redirect.
1268
+
1269
+ = 5.1.12 =
1270
+ * Google Authenticator - Two Factor Authentication (2FA) : Removing redundant code.
1271
+
1272
+ = 5.1.11 =
1273
+ * Google Authenticator - Two Factor Authentication (2FA) : Password Pattern Fix.
1274
+
1275
+ = 5.1.10 =
1276
+ * Google Authenticator - Two Factor Authentication (2FA) : Javascript Error fixes.
1277
+
1278
+ = 5.1.9 =
1279
+ * Google Authenticator - Two Factor Authentication (2FA) : Added visual tour and security fixes.
1280
+
1281
+ = 5.1.8 =
1282
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug fix for Validation.
1283
+
1284
+ = 5.1.7 =
1285
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug fix for DB error after Update.
1286
+
1287
+ = 5.1.6 =
1288
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug fix for DB error.
1289
+
1290
+ = 5.1.5 =
1291
+ * Google Authenticator - Two Factor Authentication (2FA) : UI changes.
1292
+
1293
+ = 5.1.4 =
1294
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug fixes for redirect to login page issues.
1295
+
1296
+ = 5.1.3 =
1297
+ * Google Authenticator - Two Factor Authentication (2FA) : Minor bug fixes.
1298
+
1299
+ = 5.1.2 =
1300
+ * Google Authenticator - Two Factor Authentication (2FA) : Changes in registration flow.
1301
+
1302
+ = 5.1.1 =
1303
+ * Google Authenticator - Two Factor Authentication (2FA) : Minor changes.
1304
+
1305
+ = 5.1.0 =
1306
+ * Google Authenticator - Two Factor Authentication (2FA) : Added new user plans
1307
+
1308
+ = 5.0.17 =
1309
+ * Google Authenticator - Two Factor Authentication (2FA) : Minor Bug fix.
1310
+
1311
+ = 5.0.16 =
1312
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug fixes.
1313
+
1314
+ = 5.0.15 =
1315
+ * Google Authenticator - Two Factor Authentication (2FA) : Added Google Authenticator option in the WP login page itself.
1316
+
1317
+ = 5.0.14 =
1318
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug Fixs.
1319
+
1320
+ = 5.0.13 =
1321
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug Fix and code optimization.
1322
+
1323
+ = 5.0.12 =
1324
+ * Google Authenticator - Two Factor Authentication (2FA) : Added GDPR Compliance.
1325
+
1326
+ = 5.0.11 =
1327
+ * Google Authenticator - Two Factor Authentication (2FA) : Readme Update.
1328
+
1329
+ = 5.0.10 =
1330
+ * Google Authenticator - Two Factor Authentication (2FA) : Added Proxy Setup feature.
1331
+
1332
+ = 5.0.9 =
1333
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug Fix for "The loopback request to your site failed." error.
1334
+
1335
+ = 5.0.8 =
1336
+ * Google Authenticator - Two Factor Authentication (2FA) : Changes for 2FA Free plugin for 1 user forever.
1337
+
1338
+ = 5.0.7 =
1339
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug Fix for User Registration and other plugin conflicts in Dashboard.
1340
+
1341
+ = 5.0.6 =
1342
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug Fix for existing customers who upgraded from 4.5.x version to versions between 5.0.0 and 5.0.4 and are facing issues with the Account Setup Tab.
1343
+
1344
+ = 5.0.5 =
1345
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug fix for user entry during plugin update.
1346
+
1347
+ = 5.0.4 =
1348
+ * Google Authenticator - Two Factor Authentication (2FA) : Workaround for errors during sending of OTP during registration.
1349
+
1350
+ = 5.0.3 =
1351
+ * Google Authenticator - Two Factor Authentication (2FA) : Minor fix for removing warings.
1352
+
1353
+ = 5.0.2 =
1354
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug fix.
1355
+
1356
+ = 5.0.1 =
1357
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug fix.
1358
+
1359
+ = 5.0.0 =
1360
+ * Google Authenticator - Two Factor Authentication (2FA) : New UI Interface, 2-factor authentication for Unlimited Users.
1361
+ * This is a major release.
1362
+
1363
+ = 4.6.2 =
1364
+ * Google Authenticator - Two Factor Authentication (2FA) : Plugin registration fixes and minor warning fixes.
1365
+
1366
+ = 4.6.1 =
1367
+ * Google Authenticator - Two Factor Authentication (2FA) : Login error fix. Please skip version 4.5.9 and update to version 4.6.1
1368
+
1369
+ = 4.5.9 =
1370
+ * Google Authenticator - Two Factor Authentication (2FA) : Bug fixes for customers who were getting redirected to the login page after the two factor authentication.
1371
+
1372
+ = 4.5.8 =
1373
+ * Google Authenticator - Two Factor Authentication (2FA) : Tested upto 4.9.4 and Removed External links.
1374
+
1375
+ = 4.5.7 =
1376
+ * Google Authenticator - Two Factor Authentication (2FA) : Minor bug fixes.
1377
+
1378
+ = 4.5.6 =
1379
+ * Google Authenticator - Two Factor Authentication (2FA) : Tested upto Wordpress 4.9.
1380
+
1381
+ = 4.5.5 =
1382
+ * Google Authenticator - Two Factor Authentication (2FA) : 404 bug fixes.
1383
+
1384
+ = 4.5.4 =
1385
+ * Google Authenticator - Two Factor Authentication (2FA) : Better UI of Login Pages, Fixed Redirection issue. Fixed the error in the last version (4.5.3) for the customers who were getting undefined action error.
1386
+
1387
+ = 4.4.3 =
1388
+ * Google Authenticator - Two Factor Authentication (2FA) : Fixed the login flow for third party Apps that supports XML-RPC.
1389
+
1390
+ = 4.4 =
1391
+ * Google Authenticator - Two Factor Authentication (2FA):
1392
+ * Note: This is very important update having altogether new UI and compatibility with Limit Login Attempts. After updating, please do not logout from your admin dashboard. Try to login from another browser and if you face any issue , please contact us at info@xecurify.com
1393
  * Compatibility with Limit Login Attempts.
1394
  * New User Interface for login.
1395
 
1403
  * Google Authenticator - Two Factor Authentication (2FA, MFA): Updated miniOrange APIs.
1404
 
1405
  = 4.2.9 =
1406
+ * Google Authenticator - Two Factor Authentication (2FA, MFA): Tested upto WordPress 4.6.
1407
 
1408
  = 4.2.7 =
1409
+ * Google Authenticator - Two Factor Authentication (2FA, MFA): Session Warnig fix in the last version for some of the users.
1410
 
1411
  = 4.2.6 =
1412
  * Google Authenticator - Two Factor Authentication (2FA, MFA): Compatible with wordpress caching.
1435
 
1436
  = 4.1.8 =
1437
  * Google Authenticator - Two Factor Authentication ( 2FA ):
1438
+ * Changed the location of images used for demo. Now being loaded from the site having SSL certificate.
1439
 
1440
  = 4.1.7 =
1441
  * Google Authenticator - Two Factor Authentication ( 2FA ):
1458
  = 4.1.3 =
1459
  * Google Authenticator - Two Factor Authentication ( 2FA ):
1460
  * Fixed CSS Conflict with the plugins in the admin dashboard.
1461
+ * More intuitive UI for woocommerce login.
1462
  * Tested front-end login with themes like wordpress default theme,
1463
+ customizr theme,zerif-lite theme,accesspress store theme,ishop theme and many more.
1464
 
1465
  = 4.1.2 =
1466
  * Google Authenticator - Two Factor Authentication ( 2FA ): Google Authenticator for Windows phone
1467
+ * Fixed CSS conflict with front-end of site if woocommerce is not enabled.
1468
 
1469
  = 4.1.1 =
1470
  * Google Authenticator - Two Factor Authentication ( 2FA ): Adding Validation in choosing Security Questions (KBA).
1491
  * Google Authenticator - Two Factor Authentication ( 2FA ): Features added.
1492
  * KBA as backup method.
1493
  * mobile browser support.
1494
+ * more intuitive UI for woocommerce login.
1495
 
1496
  = 3.8 =
1497
  * Google Authenticator - Two Factor Authentication ( 2 Factor ): Bug Fix for roles.
1527
  * Google Authenticator.
1528
  * Device Id (Remember device).
1529
  * Choice given to admin to enable specific authentication methods for users.
1530
+ * Two Factor support for woocommerce theme.
1531
  * Short Code for various customized fronted login.
1532
  * More intuitive UI and descriptive instructions.
1533
 
1577
  * Google Authenticator - Two Factor Authentication ( 2FA ): Added email ID verification during registration.
1578
 
1579
  = 1.0.0 =
1580
+ First version of Two Factor Authentication ( 2FA ) plugin.
uninstall.php CHANGED
@@ -8,11 +8,6 @@
8
  delete_option('mo2f_email');
9
  }
10
  update_option('mo2f_activate_plugin', 1);
11
-
12
- delete_option('mo2f_trial_dismiss');
13
- delete_option('mo2f_donot_show_trial_notice_always');
14
-
15
-
16
  delete_option('mo2f_customerKey');
17
  delete_option('mo2f_api_key');
18
  delete_option('mo2f_customer_token');
@@ -31,14 +26,7 @@
31
  delete_site_option('mo2f_added_ips_realtime');
32
  delete_site_option('mo2f_mail_notify_new_release');
33
  delete_site_option('mo2f_mail_notify');
34
- delete_site_option('mo2fa_free_plan_new_user_methods');
35
- delete_site_option('mo2fa_free_plan_existing_user_methods');
36
- delete_site_option("mo2f_banner_never_show_again");
37
- delete_option('mo2fa_reconfiguration_via_email');
38
- delete_option('mo2fa_userProfile_method');
39
  delete_site_option('mo2f_feature_vers');
40
- delete_site_option('mo2f_is_inline_used');
41
- delete_site_option('mo2f_login_with_mfa_use');
42
  delete_site_option('mo2f_user_IP');
43
  delete_option('mo_wpns_enable_brute_force');
44
  delete_option('mo_wpns_show_remaining_attempts');
@@ -68,9 +56,7 @@
68
  delete_option( 'mo_2f_switch_all');
69
  delete_option( 'mo2f_login_option');
70
  delete_option( 'mo_wpns_scan_initialize');
71
- delete_site_option( 'mo2f_planname');
72
- delete_site_option( 'mo_2fa_plan_type');
73
- delete_site_option( 'mo_2fa_addon_plan_type');
74
  delete_option( 'mo2f_activated_time');
75
  delete_option( 'mo2f_number_of_transactions');
76
  delete_option( 'mo2f_set_transactions');
@@ -164,12 +150,12 @@
164
  delete_site_option('mo_file_manual_backup_plugins');
165
  delete_site_option('mo_file_manual_backup_themes');
166
  delete_site_option('mo_schedule_database_backup');
167
- delete_site_option('mo2f_enable_debug_log');
168
  delete_site_option('duo_credentials_save_successfully');
 
169
  delete_site_option('mo2f_d_integration_key');
170
  delete_site_option('mo2f_d_secret_key');
171
  delete_site_option('mo2f_d_api_hostname');
172
- delete_site_option('mo2f_nonce_enable_configured_methods');
173
  if(get_option('is_onprem'))
174
  {
175
  $users = get_users( array() );
@@ -184,7 +170,8 @@
184
  delete_user_meta( $user->ID, 'kba_questions_user');
185
  delete_user_meta( $user->ID, 'Google Authenticator');
186
  delete_user_meta( $user->ID, 'mo2f_gauth_key');
187
- delete_user_meta( $user->ID, 'mo2f_get_auth_rnd_string');
 
188
  }
189
  }
190
 
8
  delete_option('mo2f_email');
9
  }
10
  update_option('mo2f_activate_plugin', 1);
 
 
 
 
 
11
  delete_option('mo2f_customerKey');
12
  delete_option('mo2f_api_key');
13
  delete_option('mo2f_customer_token');
26
  delete_site_option('mo2f_added_ips_realtime');
27
  delete_site_option('mo2f_mail_notify_new_release');
28
  delete_site_option('mo2f_mail_notify');
 
 
 
 
 
29
  delete_site_option('mo2f_feature_vers');
 
 
30
  delete_site_option('mo2f_user_IP');
31
  delete_option('mo_wpns_enable_brute_force');
32
  delete_option('mo_wpns_show_remaining_attempts');
56
  delete_option( 'mo_2f_switch_all');
57
  delete_option( 'mo2f_login_option');
58
  delete_option( 'mo_wpns_scan_initialize');
59
+ delete_option( 'mo2f_planname');
 
 
60
  delete_option( 'mo2f_activated_time');
61
  delete_option( 'mo2f_number_of_transactions');
62
  delete_option( 'mo2f_set_transactions');
150
  delete_site_option('mo_file_manual_backup_plugins');
151
  delete_site_option('mo_file_manual_backup_themes');
152
  delete_site_option('mo_schedule_database_backup');
153
+ delete_site_option('mo2f_enable_debug_log');
154
  delete_site_option('duo_credentials_save_successfully');
155
+
156
  delete_site_option('mo2f_d_integration_key');
157
  delete_site_option('mo2f_d_secret_key');
158
  delete_site_option('mo2f_d_api_hostname');
 
159
  if(get_option('is_onprem'))
160
  {
161
  $users = get_users( array() );
170
  delete_user_meta( $user->ID, 'kba_questions_user');
171
  delete_user_meta( $user->ID, 'Google Authenticator');
172
  delete_user_meta( $user->ID, 'mo2f_gauth_key');
173
+ delete_user_meta( $user->ID, 'mo2f_get_auth_rnd_string');
174
+
175
  }
176
  }
177
 
views/addons.php CHANGED
@@ -24,7 +24,7 @@
24
  <div>
25
 
26
  <center>
27
- <div style="width: 92%;background-color: white;padding: 10px;border-top: 4px solid #2271b1">
28
  <div style="float: left;">
29
  <?php echo '<a class="button button-primary button-large" href="'.$two_fa.'">Back</a>';?>
30
  </div>
@@ -34,7 +34,7 @@
34
  </div>
35
  <div class="mo_2fa_container">
36
  <div class="mo_2fa_card-deck">
37
- <div class="mo_2fa_card mo_2fa_animation" style="border-top: 4px solid #2271b1;
38
  background-color: white;width: 30%;margin: 10px;">
39
  <div class="mo_2fa_Card-header">
40
  <h3>Learning Management System / Online Courses</h3>
@@ -59,7 +59,7 @@
59
  </div><br>
60
  <?php echo mo2f_addon_contact_us();?>
61
  </div>
62
- <div class="mo_2fa_card mo_2fa_animation" style="border-top: 4px solid #2271b1;
63
  background-color: white;width: 30%;margin: 10px;">
64
  <div class="mo_2fa_Card-header">
65
  <h3>User Session Control</h3>
@@ -85,7 +85,7 @@
85
  <?php echo mo2f_addon_contact_us();?>
86
 
87
  </div>
88
- <div class="mo_2fa_card mo_2fa_animation" style="border-top: 4px solid #2271b1;background-color: white;width: 30%;margin: 10px;">
89
  <div class="mo_2fa_Card-header">
90
  <h3>Password-Less Login</h3>
91
  </div>
@@ -107,7 +107,7 @@
107
  </div><br>
108
  <?php echo mo2f_addon_contact_us();?>
109
  </div>
110
- <div class="mo_2fa_card mo_2fa_animation" style="border-top: 4px solid #2271b1;background-color: white;width: 30%;margin: 10px;">
111
  <div class="mo_2fa_Card-header">
112
  <h3>WooCommerce</h3>
113
  </div>
@@ -125,7 +125,7 @@
125
  </div><br>
126
  <?php echo mo2f_addon_contact_us();?>
127
  </div>
128
- <div class="mo_2fa_card mo_2fa_animation" style="border-top: 4px solid #2271b1;background-color: white;width: 30%;margin: 10px;">
129
  <div class="mo_2fa_Card-header">
130
  <h3>User Registration</h3>
131
  </div>
@@ -143,7 +143,7 @@
143
  </div><br>
144
  <?php echo mo2f_addon_contact_us();?>
145
  </div>
146
- <div class="mo_2fa_card mo_2fa_animation" style="border-top: 4px solid #2271b1;background-color: white;width: 30%;margin: 10px;">
147
  <div class="mo_2fa_Card-header">
148
  <h3>Ultimate Member</h3>
149
  </div>
@@ -162,13 +162,13 @@
162
  </div><br>
163
  <?php echo mo2f_addon_contact_us();?>
164
  </div>
165
- <div class="mo_2fa_card mo_2fa_animation" style="border-top: 4px solid #2271b1;
166
  background-color: white;width: 30%;margin: 10px">
167
  <div class="mo_2fa_Card-header">
168
  <h3>RBA & Trusted Devices Management</h3>
169
  </div>
170
  <hr>
171
- <h1 class="mo_wpns_upgrade_pade_pricing" style="color: #2271b1">$49</h1>
172
  <div class="mo_2fa_card-body" style="padding-bottom: 0%;">
173
  <h3>Features</h3>
174
  <h4>
@@ -194,13 +194,13 @@
194
  </div>
195
  <br>
196
  </div>
197
- <div class="mo_2fa_card mo_2fa_animation" style="border-top: 4px solid #2271b1;
198
  background-color: white;width: 30%;margin: 10px">
199
  <div class="mo_2fa_Card-header">
200
  <h3>Personalization Add-on Features</h3>
201
  </div>
202
  <hr>
203
- <h1 class="mo_wpns_upgrade_pade_pricing" style="color: #2271b1">$199</h1>
204
  <div class="mo_2fa_card-body" style="padding-bottom: 0%;">
205
  <h3>Features</h3>
206
  <h4>
@@ -225,13 +225,13 @@
225
  </div>
226
  <br>
227
  </div>
228
- <div class="mo_2fa_card mo_2fa_animation" style="border-top: 4px solid #2271b1;
229
  background-color: white;width: 30%;margin: 10px">
230
  <div class="mo_2fa_Card-header">
231
  <h3>Short Codes Add-on Features</h3>
232
  </div>
233
  <hr>
234
- <h1 class="mo_wpns_upgrade_pade_pricing" style="color: #2271b1">$99</h1>
235
  <div class="mo_2fa_card-body" style="padding-bottom: 0%;">
236
  <h3>Features</h3>
237
  <h4>
24
  <div>
25
 
26
  <center>
27
+ <div style="width: 92%;background-color: white;padding: 10px;border-top: 4px solid #20b2aa">
28
  <div style="float: left;">
29
  <?php echo '<a class="button button-primary button-large" href="'.$two_fa.'">Back</a>';?>
30
  </div>
34
  </div>
35
  <div class="mo_2fa_container">
36
  <div class="mo_2fa_card-deck">
37
+ <div class="mo_2fa_card mo_2fa_animation" style="border-top: 4px solid #20b2aa;
38
  background-color: white;width: 30%;margin: 10px;">
39
  <div class="mo_2fa_Card-header">
40
  <h3>Learning Management System / Online Courses</h3>
59
  </div><br>
60
  <?php echo mo2f_addon_contact_us();?>
61
  </div>
62
+ <div class="mo_2fa_card mo_2fa_animation" style="border-top: 4px solid #20b2aa;
63
  background-color: white;width: 30%;margin: 10px;">
64
  <div class="mo_2fa_Card-header">
65
  <h3>User Session Control</h3>
85
  <?php echo mo2f_addon_contact_us();?>
86
 
87
  </div>
88
+ <div class="mo_2fa_card mo_2fa_animation" style="border-top: 4px solid #20b2aa;background-color: white;width: 30%;margin: 10px;">
89
  <div class="mo_2fa_Card-header">
90
  <h3>Password-Less Login</h3>
91
  </div>
107
  </div><br>
108
  <?php echo mo2f_addon_contact_us();?>
109
  </div>
110
+ <div class="mo_2fa_card mo_2fa_animation" style="border-top: 4px solid #20b2aa;background-color: white;width: 30%;margin: 10px;">
111
  <div class="mo_2fa_Card-header">
112
  <h3>WooCommerce</h3>
113
  </div>
125
  </div><br>
126
  <?php echo mo2f_addon_contact_us();?>
127
  </div>
128
+ <div class="mo_2fa_card mo_2fa_animation" style="border-top: 4px solid #20b2aa;background-color: white;width: 30%;margin: 10px;">
129
  <div class="mo_2fa_Card-header">
130
  <h3>User Registration</h3>
131
  </div>
143
  </div><br>
144
  <?php echo mo2f_addon_contact_us();?>
145
  </div>
146
+ <div class="mo_2fa_card mo_2fa_animation" style="border-top: 4px solid #20b2aa;background-color: white;width: 30%;margin: 10px;">
147
  <div class="mo_2fa_Card-header">
148
  <h3>Ultimate Member</h3>
149
  </div>
162
  </div><br>
163
  <?php echo mo2f_addon_contact_us();?>
164
  </div>
165
+ <div class="mo_2fa_card mo_2fa_animation" style="border-top: 4px solid #20b2aa;
166
  background-color: white;width: 30%;margin: 10px">
167
  <div class="mo_2fa_Card-header">
168
  <h3>RBA & Trusted Devices Management</h3>
169
  </div>
170
  <hr>
171
+ <h1 class="mo_wpns_upgrade_pade_pricing" style="color: #20b2aa">$49</h1>
172
  <div class="mo_2fa_card-body" style="padding-bottom: 0%;">
173
  <h3>Features</h3>
174
  <h4>
194
  </div>
195
  <br>
196
  </div>
197
+ <div class="mo_2fa_card mo_2fa_animation" style="border-top: 4px solid #20b2aa;
198
  background-color: white;width: 30%;margin: 10px">
199
  <div class="mo_2fa_Card-header">
200
  <h3>Personalization Add-on Features</h3>
201
  </div>
202
  <hr>
203
+ <h1 class="mo_wpns_upgrade_pade_pricing" style="color: #20b2aa">$199</h1>
204
  <div class="mo_2fa_card-body" style="padding-bottom: 0%;">
205
  <h3>Features</h3>
206
  <h4>
225
  </div>
226
  <br>
227
  </div>
228
+ <div class="mo_2fa_card mo_2fa_animation" style="border-top: 4px solid #20b2aa;
229
  background-color: white;width: 30%;margin: 10px">
230
  <div class="mo_2fa_Card-header">
231
  <h3>Short Codes Add-on Features</h3>
232
  </div>
233
  <hr>
234
+ <h1 class="mo_wpns_upgrade_pade_pricing" style="color: #20b2aa">$99</h1>
235
  <div class="mo_2fa_card-body" style="padding-bottom: 0%;">
236
  <h3>Features</h3>
237
  <h4>
views/advanced-blocking.php CHANGED
@@ -1,7 +1,7 @@
1
  <div class="mo_wpns_divided_layout_tab">
2
- <div class="nav-tab-wrapper">
3
- <button class="nav-tab" onclick="mo2f_wpns_block_function(this)" id="mo2f_block_list">IP Black list</button>
4
- <button class="nav-tab" onclick="mo2f_wpns_block_function(this)" id="mo2f_adv_block">Advanced Blocking</button>
5
 
6
  </div>
7
  </div>
@@ -10,15 +10,16 @@ global $mo2f_dirName;
10
  $setup_dirName = $mo2f_dirName.'views'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'link_tracer.php';
11
  include $setup_dirName;
12
  ?>
13
- <div id="mo2f_block_list_div" class="tabcontent">
 
14
 
15
  <div class="mo_wpns_divided_layout">
16
  <div class="mo_wpns_setting_layout" id="mo2f_manual_ip_blocking">
17
- <h2>Manual IP Blocking <a href='<?php echo $two_factor_premium_doc['Manual IP Blocking'];?>' target="_blank"><span class="dashicons dashicons-text-page" style="font-size:30px;color:#413c69;float: right;"></span></a></h2>
18
 
19
  <h4 class="mo_wpns_setting_layout_inside">Manually block an IP address here:&emsp;&emsp;
20
  <input type="text" name="ManuallyBlockIP" id="ManuallyBlockIP" required placeholder='IP address'pattern="((^|\.)((25[0-5])|(2[0-4]\d)|(1\d\d)|([1-9]?\d))){4}" style="width: 35%; height: 41px" />&emsp;&emsp;
21
- <input type="button" name="BlockIP" id="BlockIP" value="Manual Block IP" class="button button-primary button-large" />
22
  </h4>
23
 
24
  <h3 class="mo_wpns_setting_layout_inside"><b>Blocked IPs</b>
@@ -52,10 +53,10 @@ echo "</td><td>".date("M j, Y, g:i:s a",$blockedip->created_timestamp)."</td>
52
  </h4>
53
  </div>
54
  <div class="mo_wpns_setting_layout" id="mo2f_ip_whitelisting">
55
- <h2>IP Whitelisting<a href="https://developers.miniorange.com/docs/security/wordpress/wp-security/IP-blocking-whitelisting-lookup#wp-ip-whitelisting" target="_blank"><span class="dashicons dashicons-text-page" style="font-size:30px;color:#413c69;float: right;"></span></a></h2>
56
  <h4 class="mo_wpns_setting_layout_inside">Add new IP address to whitelist:&emsp;&emsp;
57
  <input type="text" name="IPWhitelist" id="IPWhitelist" required placeholder='IP address'pattern="((^|\.)((25[0-5])|(2[0-4]\d)|(1\d\d)|([1-9]?\d))){4}" style="width: 40%; height: 41px"/>&emsp;&emsp;
58
- <input type="button" name="WhiteListIP" id="WhiteListIP" value="Whitelist IP" class="button button-primary button-large" />
59
 
60
  </h4>
61
  <h3 class="mo_wpns_setting_layout_inside">Whitelist IPs
@@ -82,10 +83,10 @@ echo' </tbody>
82
 
83
 
84
  <div class="mo_wpns_setting_layout" id="mo2f_ip_lookup">
85
- <h2>IP LookUp<a href='<?php echo $two_factor_premium_doc['IP LookUp'];?>' target="_blank"><span class="dashicons dashicons-text-page" style="font-size:30px;color:#413c69;float: right;"></span></a></h2>
86
  <h4 class="mo_wpns_setting_layout_inside">Enter IP address you Want to check:&emsp;&emsp;
87
  <input type="text" name="ipAddresslookup" id="ipAddresslookup" required placeholder='IP address'pattern="((^|\.)((25[0-5])|(2[0-4]\d)|(1\d\d)|([1-9]?\d))){4}" style="width: 40%; height: 41px"/>&emsp;&emsp;
88
- <input type="button" name="LookupIP" id="LookupIP" value="LookUp IP" class="button button-primary button-large" />
89
  </h4>
90
  <div class="ip_lookup_desc" hidden ></div>
91
 
@@ -97,11 +98,11 @@ echo' </tbody>
97
 
98
 
99
  <?php
100
- echo '<div id="mo2f_adv_block_div" class="tabcontent">';
101
  echo'<div class="mo_wpns_divided_layout">
102
  <div class="mo_wpns_setting_layout" id= "mo2f_ip_range_blocking">';
103
 
104
- echo' <h2>IP Address Range Blocking<a href='.$two_factor_premium_doc['IP Address Range Blocking'].' target="_blank"><span class="dashicons dashicons-text-page" style="font-size:23px;color:#413c69;float: right;"></span></a></h2>
105
  You can block range of IP addresses here ( Examples: 192.168.0.100 - 192.168.0.190 )
106
  <form name="f" method="post" action="" id="iprangeblockingform" >
107
  <input type="hidden" name="option" value="mo_wpns_block_ip_range" />
@@ -140,7 +141,7 @@ echo '
140
 
141
 
142
  <div class="mo_wpns_setting_layout" id="mo2f_browser_blocking">
143
- <h3>Browser Blocking<a href='.$two_factor_premium_doc['Browser Blocking'].' target="_blank"><span class="dashicons dashicons-text-page" style="font-size:30px;color:#413c69;float: right;"></span></a></h3>
144
  <!-- <div class="mo_wpns_subheading">This protects your site from robots and other automated scripts.</div> -->
145
  <form id="mo_wpns_enable_user_agent_blocking" method="post" action="">
146
  <input type="hidden" name="option" value="mo_wpns_enable_user_agent_blocking">
@@ -251,34 +252,53 @@ echo' </table><br>
251
 
252
  ?>
253
  <script type="text/javascript">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
254
 
255
- function mo2f_wpns_block_function(elmt){
256
- var tabname = elmt.id;
257
- var tabarray = ["mo2f_block_list","mo2f_adv_block"];
258
- for (var i = 0; i < tabarray.length; i++) {
259
- if(tabarray[i] == tabname){
260
- jQuery("#"+tabarray[i]).addClass("nav-tab-active");
261
- jQuery("#"+tabarray[i]+"_div").css("display", "block");
262
- }else{
263
- jQuery("#"+tabarray[i]).removeClass("nav-tab-active");
264
- jQuery("#"+tabarray[i]+"_div").css("display", "none");
265
- }
266
- }
267
- localStorage.setItem("ip_last_tab", tabname);
268
- }
269
-
270
- jQuery('#adv_block_tab').addClass('nav-tab-active');
271
 
272
- var tab = localStorage.getItem("ip_last_tab");
273
 
274
- if(tab)
275
- document.getElementById(tab).click();
276
- else{
277
- document.getElementById("mo2f_block_list").click();
278
- }
 
279
 
 
 
 
 
 
 
 
 
 
 
 
 
 
280
 
281
- jQuery('#BlockIP').click(function(){
282
 
283
  var ip = jQuery('#ManuallyBlockIP').val();
284
 
1
  <div class="mo_wpns_divided_layout_tab">
2
+ <div class="mo_wpns_tab">
3
+ <button class="tablinks" onclick="block_function(event, 'block_list')" id="defaultOpen">IP Black list</button>
4
+ <button class="tablinks" onclick="block_function(event, 'adv_block')" id="adv_block_subtab">Advanced Blocking</button>
5
 
6
  </div>
7
  </div>
10
  $setup_dirName = $mo2f_dirName.'views'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'link_tracer.php';
11
  include $setup_dirName;
12
  ?>
13
+
14
+ <div id="block_list" class="tabcontent">
15
 
16
  <div class="mo_wpns_divided_layout">
17
  <div class="mo_wpns_setting_layout" id="mo2f_manual_ip_blocking">
18
+ <h2>Manual IP Blocking <a href='<?php echo $two_factor_premium_doc['Manual IP Blocking'];?>' target="_blank"><span class="dashicons dashicons-text-page" style="font-size:30px;color:#269eb3;float: right;"></span></a></h2>
19
 
20
  <h4 class="mo_wpns_setting_layout_inside">Manually block an IP address here:&emsp;&emsp;
21
  <input type="text" name="ManuallyBlockIP" id="ManuallyBlockIP" required placeholder='IP address'pattern="((^|\.)((25[0-5])|(2[0-4]\d)|(1\d\d)|([1-9]?\d))){4}" style="width: 35%; height: 41px" />&emsp;&emsp;
22
+ <input type="button" name="BlockIP" id="BlockIP" value="Manual Block IP" class="mo_wpsn_button mo_wpsn_button1" />
23
  </h4>
24
 
25
  <h3 class="mo_wpns_setting_layout_inside"><b>Blocked IPs</b>
53
  </h4>
54
  </div>
55
  <div class="mo_wpns_setting_layout" id="mo2f_ip_whitelisting">
56
+ <h2>IP Whitelisting<a href="https://developers.miniorange.com/docs/security/wordpress/wp-security/IP-blocking-whitelisting-lookup#wp-ip-whitelisting" target="_blank"><span class="dashicons dashicons-text-page" style="font-size:30px;color:#269eb3;float: right;"></span></a></h2>
57
  <h4 class="mo_wpns_setting_layout_inside">Add new IP address to whitelist:&emsp;&emsp;
58
  <input type="text" name="IPWhitelist" id="IPWhitelist" required placeholder='IP address'pattern="((^|\.)((25[0-5])|(2[0-4]\d)|(1\d\d)|([1-9]?\d))){4}" style="width: 40%; height: 41px"/>&emsp;&emsp;
59
+ <input type="button" name="WhiteListIP" id="WhiteListIP" value="Whitelist IP" class="mo_wpsn_button mo_wpsn_button1" />
60
 
61
  </h4>
62
  <h3 class="mo_wpns_setting_layout_inside">Whitelist IPs
83
 
84
 
85
  <div class="mo_wpns_setting_layout" id="mo2f_ip_lookup">
86
+ <h2>IP LookUp<a href='<?php echo $two_factor_premium_doc['IP LookUp'];?>' target="_blank"><span class="dashicons dashicons-text-page" style="font-size:30px;color:#269eb3;float: right;"></span></a></h2>
87
  <h4 class="mo_wpns_setting_layout_inside">Enter IP address you Want to check:&emsp;&emsp;
88
  <input type="text" name="ipAddresslookup" id="ipAddresslookup" required placeholder='IP address'pattern="((^|\.)((25[0-5])|(2[0-4]\d)|(1\d\d)|([1-9]?\d))){4}" style="width: 40%; height: 41px"/>&emsp;&emsp;
89
+ <input type="button" name="LookupIP" id="LookupIP" value="LookUp IP" class="mo_wpsn_button mo_wpsn_button1" />
90
  </h4>
91
  <div class="ip_lookup_desc" hidden ></div>
92
 
98
 
99
 
100
  <?php
101
+ echo '<div id="adv_block" class="tabcontent">';
102
  echo'<div class="mo_wpns_divided_layout">
103
  <div class="mo_wpns_setting_layout" id= "mo2f_ip_range_blocking">';
104
 
105
+ echo' <h2>IP Address Range Blocking<a href='.$two_factor_premium_doc['IP Address Range Blocking'].' target="_blank"><span class="dashicons dashicons-text-page" style="font-size:23px;color:#269eb3;float: right;"></span></a></h2>
106
  You can block range of IP addresses here ( Examples: 192.168.0.100 - 192.168.0.190 )
107
  <form name="f" method="post" action="" id="iprangeblockingform" >
108
  <input type="hidden" name="option" value="mo_wpns_block_ip_range" />
141
 
142
 
143
  <div class="mo_wpns_setting_layout" id="mo2f_browser_blocking">
144
+ <h3>Browser Blocking<a href='.$two_factor_premium_doc['Browser Blocking'].' target="_blank"><span class="dashicons dashicons-text-page" style="font-size:30px;color:#269eb3;float: right;"></span></a></h3>
145
  <!-- <div class="mo_wpns_subheading">This protects your site from robots and other automated scripts.</div> -->
146
  <form id="mo_wpns_enable_user_agent_blocking" method="post" action="">
147
  <input type="hidden" name="option" value="mo_wpns_enable_user_agent_blocking">
252
 
253
  ?>
254
  <script type="text/javascript">
255
+ jQuery('#resultsIPLookup').empty();
256
+ function block_function(evt, cityName) {
257
+ var i, tabcontent, tablinks;
258
+ tabcontent = document.getElementsByClassName("tabcontent");
259
+ for (i = 0; i < tabcontent.length; i++) {
260
+ tabcontent[i].style.display = "none";
261
+ }
262
+ tablinks = document.getElementsByClassName("tablinks");
263
+ for (i = 0; i < tablinks.length; i++) {
264
+ tablinks[i].className = tablinks[i].className.replace(" active", "");
265
+ }
266
+
267
+ localStorage.setItem("last_tab",cityName);
268
+ evt.currentTarget.className += " active";
269
+
270
+ if(cityName == "defaultOpen")
271
+ {
272
+ jQuery("#defaultOpen").addClass(" active");
273
+ }
274
+ document.getElementById(cityName).style.display = "block";
275
 
276
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
277
 
278
+ var tab = localStorage.getItem("last_tab");
279
 
280
+ if(tab == "block_list")
281
+ {
282
+ document.getElementById("defaultOpen").click();
283
+ // document.getElementById("block_list").style.display = "block";
284
+ // document.getElementById("adv_block").style.display = "none";
285
+ // jQuery("#defaultOpen").addClass(" active");
286
 
287
+ }
288
+ else if(tab == "adv_block")
289
+ {
290
+ document.getElementById("adv_block_subtab").click();
291
+ // document.getElementById("adv_block").style.display = "block";
292
+ // document.getElementById("block_list").style.display = "none";
293
+ // jQuery("#adv_block_subtab").addClass(" active");
294
+ }
295
+ else
296
+ {
297
+ document.getElementById("defaultOpen").click();
298
+ // jQuery("#defaultOpen").addClass(" active");
299
+ }
300
 
301
+ jQuery('#BlockIP').click(function(){
302
 
303
  var ip = jQuery('#ManuallyBlockIP').val();
304
 
views/backup/backup.php CHANGED
@@ -1,12 +1,12 @@
1
 
2
- <div class="nav-tab-wrapper">
3
- <button class="nav-tab" onclick="mo2f_wpns_openTabbackup(this)" id="mo2f_setting_backup">Manual Backup</button>
4
- <button class="nav-tab" onclick="mo2f_wpns_openTabbackup(this)" id="mo2f_schedule_view">Scheduled Backup</button>
5
- <button class="nav-tab" onclick="mo2f_wpns_openTabbackup(this)" id="mo2f_report_view">Report</button>
6
 
7
  </div>
8
 
9
- <div class="tabcontent" id="mo2f_setting_backup_div">
10
  <div class="mo_wpns_divided_layout">
11
  <table style="width: 100%;">
12
  <tr>
@@ -16,7 +16,7 @@
16
  </table>
17
  </div>
18
  </div>
19
- <div class="tabcontent" id="mo2f_schedule_view_div">
20
  <div class="mo_wpns_divided_layout">
21
  <table style="width: 100%;">
22
  <tr>
@@ -26,7 +26,7 @@
26
  </table>
27
  </div>
28
  </div>
29
- <div class="tabcontent" id="mo2f_report_view_div">
30
  <div class="mo_wpns_divided_layout">
31
  <table style="width: 100%;">
32
  <tr>
@@ -37,30 +37,42 @@
37
  </div>
38
  </div>
39
 
 
 
40
  <script>
41
- jQuery('#backup_tab').addClass('nav-tab-active');
 
 
42
 
43
- function mo2f_wpns_openTabbackup(elmt){
44
- var tabname = elmt.id;
45
- var tabarray = ["mo2f_setting_backup","mo2f_schedule_view","mo2f_report_view"];
46
- for (var i = 0; i < tabarray.length; i++) {
47
- if(tabarray[i] == tabname){
48
- jQuery("#"+tabarray[i]).addClass("nav-tab-active");
49
- jQuery("#"+tabarray[i]+"_div").css("display", "block");
50
- }else{
51
- jQuery("#"+tabarray[i]).removeClass("nav-tab-active");
52
- jQuery("#"+tabarray[i]+"_div").css("display", "none");
53
- }
54
- }
55
-
56
- localStorage.setItem("backup_last_tab", tabname);
57
- }
58
 
59
- var tab = localStorage.getItem("backup_last_tab");
60
-
61
- if(tab)
62
- document.getElementById(tab).click();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
  else{
64
- document.getElementById("mo2f_setting_backup").click();
65
  }
66
  </script>
1
 
2
+ <div class="mo_wpns_tab">
3
+ <button class="tablinks" onclick="openTabbackup(event, 'setting_backup')" id="backup_set">Manual Backup</button>
4
+ <button class="tablinks" onclick="openTabbackup(event, 'schdule_view')" id="schdule">Scheduled Backup</button>
5
+ <button class="tablinks" onclick="openTabbackup(event, 'report_view')" id="report">Report</button>
6
 
7
  </div>
8
 
9
+ <div class="tabcontent" id="setting_backup">
10
  <div class="mo_wpns_divided_layout">
11
  <table style="width: 100%;">
12
  <tr>
16
  </table>
17
  </div>
18
  </div>
19
+ <div class="tabcontent" id="schdule_view">
20
  <div class="mo_wpns_divided_layout">
21
  <table style="width: 100%;">
22
  <tr>
26
  </table>
27
  </div>
28
  </div>
29
+ <div class="tabcontent" id="report_view">
30
  <div class="mo_wpns_divided_layout">
31
  <table style="width: 100%;">
32
  <tr>
37
  </div>
38
  </div>
39
 
40
+
41
+
42
  <script>
43
+ document.getElementById("setting_backup").style.display = "block";
44
+ document.getElementById("schdule_view").style.display = "none";
45
+ document.getElementById("report_view").style.display = "none";
46
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47
 
48
+ document.getElementById("backup_set").className += " active";
49
+ function openTabbackup(evt, tabname){
50
+ var i, tablinks, tabcontent;
51
+ tabcontent = document.getElementsByClassName("tabcontent");
52
+ for (i = 0; i < tabcontent.length; i++) {
53
+ tabcontent[i].style.display = "none";
54
+ }
55
+ tablinks = document.getElementsByClassName("tablinks");
56
+ for (i = 0; i < tablinks.length; i++) {
57
+ tablinks[i].className = tablinks[i].className.replace(" active", "");
58
+ }
59
+ document.getElementById(tabname).style.display = "block";
60
+ localStorage.setItem("last_tab", tabname);
61
+ evt.currentTarget.className += " active";
62
+ }
63
+ var tab = localStorage.getItem("last_tab");
64
+
65
+ if(tab == "setting_backup"){
66
+ document.getElementById("backup_set").click();
67
+ }
68
+ else if(tab == "schdule_view"){
69
+ document.getElementById("schdule").click();
70
+ }
71
+ else if(tab == "report_view"){
72
+ document.getElementById("report").click();
73
+ }
74
+
75
  else{
76
+ document.getElementById("backup_set").click();
77
  }
78
  </script>
views/backup/backup_created_report.php CHANGED
@@ -71,11 +71,8 @@ function backup_delete(elmt, file_path,file_name,id){
71
  });
72
 
73
  }
74
-
75
- jQuery("#reports_table").DataTable({
76
- "order": [[ 1, "desc" ]],
77
- retrieve: true,
78
- paging: false
79
- });
80
 
81
  </script>
71
  });
72
 
73
  }
74
+ jQuery("#reports_table").DataTable({
75
+ "order": [[ 1, "desc" ]]
76
+ });
 
 
 
77
 
78
  </script>
views/backup/backup_schdule.php CHANGED
@@ -12,7 +12,7 @@ add_action('admin_footer','mo_wpns_schedule_backup');
12
  <tr>
13
  <th>Scheduled file backup </th>
14
  <th>Scheduled database backup </th>
15
- <th><a href='<?php echo $two_factor_premium_doc['Scheduled database'];?>' target="_blank"><span class="dashicons dashicons-text-page" style="font-size:23px;color:#413c69;margin-top: 0.5em;float: right;"></span></a></th>
16
  </tr>
17
  <tr><td>&nbsp;</td><td></td></tr>
18
  <tr>
12
  <tr>
13
  <th>Scheduled file backup </th>
14
  <th>Scheduled database backup </th>
15
+ <th><a href='<?php echo $two_factor_premium_doc['Scheduled database'];?>' target="_blank"><span class="dashicons dashicons-text-page" style="font-size:23px;color:#269eb3;margin-top: 0.5em;float: right;"></span></a></th>
16
  </tr>
17
  <tr><td>&nbsp;</td><td></td></tr>
18
  <tr>
views/backup/backup_setting_view.php CHANGED
@@ -66,7 +66,7 @@ jQuery(document).ready(function(){
66
  setInterval(function(){ jQuery("#backupinprogress").fadeIn(700); }, 1000);
67
  document.getElementById("save_backup_settings").value = "Taking Backup...";
68
  jQuery('input[name="save_backup_settings"]').attr('disabled', true);
69
- document.getElementById('save_backup_settings').style.backgroundColor = '#2271b1';
70
 
71
  var data={
72
  'action':'mo_wpns_backup_redirect',
@@ -131,7 +131,7 @@ function barfw_response_handler(para1, para2){
131
  jQuery(".filebackupmessage").css("background-color","#1EC11E");
132
 
133
  jQuery('input[name="save_backup_settings"]').removeAttr('disabled');
134
- document.getElementById('save_backup_settings').style.backgroundColor = '#2271b1';
135
  document.getElementById("save_backup_settings").value = "Take Backup";
136
  }
137
 
66
  setInterval(function(){ jQuery("#backupinprogress").fadeIn(700); }, 1000);
67
  document.getElementById("save_backup_settings").value = "Taking Backup...";
68
  jQuery('input[name="save_backup_settings"]').attr('disabled', true);
69
+ document.getElementById('save_backup_settings').style.backgroundColor = '#20b2aa';
70
 
71
  var data={
72
  'action':'mo_wpns_backup_redirect',
131
  jQuery(".filebackupmessage").css("background-color","#1EC11E");
132
 
133
  jQuery('input[name="save_backup_settings"]').removeAttr('disabled');
134
+ document.getElementById('save_backup_settings').style.backgroundColor = '#20b2aa';
135
  document.getElementById("save_backup_settings").value = "Take Backup";
136
  }
137
 
views/dashboard.php CHANGED
@@ -10,10 +10,11 @@ $login_spam_on= get_site_option("mo_2f_switch_loginspam")?"checked":"";
10
  $backup_on= get_site_option("mo_2f_switch_backup")?"checked":"";
11
  $malware_on= get_site_option("mo_2f_switch_malware")?"checked":"";
12
  $adv_block_on= get_site_option("mo_2f_switch_adv_block")?"checked":"";
 
13
  echo '<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
14
- <div class="mo2f_table_layout_method">
15
 
16
- <div class="mo_wpns_dashboard_layout" >
17
  <center>
18
  <div class ="mo_wpns_inside_dashboard_layout "><p style="font-weight: bold;">Failed Login</p><p class ="wpns_font_size mo_wpns_dashboard_text" >'.$wpns_attacks_blocked.'</p>
19
  <a class="mo_wpns_button_info_tab" onclick="clear_Local_storage()" style="color:white;" href="admin.php?page=mo_2fa_reports&tab=default&view">Details</a>
@@ -46,8 +47,7 @@ echo '<meta name="viewport" content="width=device-width, initial-scale=1, maximu
46
  </h3>
47
  </form>
48
  </div>
49
- <div style="display:flex; flex-direction:column ">
50
- <div style="display:flex;justify-content:center">
51
  <div class="mo_wpns_small_layout">
52
  <form name="tab_2fa" id="tab_2fa" method="post">
53
  <h3>Two Factor Authentication ';
@@ -58,7 +58,7 @@ echo '<meta name="viewport" content="width=device-width, initial-scale=1, maximu
58
  <span class="mo_wpns_slider mo_wpns_round"></span>
59
  </label>';
60
  }else{
61
- echo ' <b style="color:#3dd23d;">(Enabled)</b>';
62
  }
63
  echo ' </h3>
64
  </form>
@@ -88,7 +88,6 @@ echo '<meta name="viewport" content="width=device-width, initial-scale=1, maximu
88
  <br><br>
89
  <a class="button button-primary button-large" href="'.$waf.'">Settings</a>
90
  </div>
91
-
92
  <div class="mo_wpns_small_layout">
93
  <form name="tab_login" id="tab_login" method="post">
94
  <h3 align="center">Login and Spam
@@ -108,8 +107,6 @@ echo '<meta name="viewport" content="width=device-width, initial-scale=1, maximu
108
  </div>
109
  <a class="button button-primary button-large" href="'.$login_and_spam.'">Settings</a>
110
  </div>
111
- </div>
112
- <div style="display:flex;justify-content:center">
113
  <div class="mo_wpns_small_layout">
114
  <form name="tab_backup" id="tab_backup" method="post">
115
  <h3>Encrypted Backup
@@ -144,7 +141,6 @@ echo '<meta name="viewport" content="width=device-width, initial-scale=1, maximu
144
  </div>
145
  <a class="button button-primary button-large" href="'.$scan_url.'">Settings</a>
146
  </div>
147
-
148
  <div class="mo_wpns_small_layout">
149
  <form name="tab_adv_block" id="tab_adv_block" method="post">
150
  <h3>IP Blocking
@@ -162,8 +158,6 @@ echo '<meta name="viewport" content="width=device-width, initial-scale=1, maximu
162
  </div>
163
  <a class="button button-primary button-large" href="'.$advance_block.'">Settings</a>
164
  </div>
165
- </div>
166
- <div style="display:flex;justify-content:center">
167
  <div class="mo_wpns_small_layout">
168
  <form name="tab_report" id="tab_report" method="post">
169
  <h3>Reports
@@ -190,8 +184,6 @@ echo '<meta name="viewport" content="width=device-width, initial-scale=1, maximu
190
  <a class="button button-primary button-large" href="'.$notif_url.'">Settings</a>
191
 
192
  </div>
193
- </div>
194
- </div>
195
 
196
  </div>
197
  <script>
@@ -206,9 +198,6 @@ function mo_2fa_dashboard_switch(){
206
  }
207
  ?>
208
  <script>
209
- jQuery('#mo_2fa_dashboard').addClass('nav-tab-active');
210
-
211
-
212
  jQuery(document).ready(function(){
213
  jQuery("#switch_2fa").click(function(){
214
  jQuery("#tab_2fa").submit();
10
  $backup_on= get_site_option("mo_2f_switch_backup")?"checked":"";
11
  $malware_on= get_site_option("mo_2f_switch_malware")?"checked":"";
12
  $adv_block_on= get_site_option("mo_2f_switch_adv_block")?"checked":"";
13
+ echo '<div id="mo_switch_message" style=" padding:8px"></div>';
14
  echo '<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
15
+ <div class="mo_wpns_divided_layout">
16
 
17
+ <div class="mo_wpns_dashboard_layout" style= "background-color: white;width: 94.5%;border: 2px solid #20b2aa;padding-bottom: 52px;">
18
  <center>
19
  <div class ="mo_wpns_inside_dashboard_layout "><p style="font-weight: bold;">Failed Login</p><p class ="wpns_font_size mo_wpns_dashboard_text" >'.$wpns_attacks_blocked.'</p>
20
  <a class="mo_wpns_button_info_tab" onclick="clear_Local_storage()" style="color:white;" href="admin.php?page=mo_2fa_reports&tab=default&view">Details</a>
47
  </h3>
48
  </form>
49
  </div>
50
+
 
51
  <div class="mo_wpns_small_layout">
52
  <form name="tab_2fa" id="tab_2fa" method="post">
53
  <h3>Two Factor Authentication ';
58
  <span class="mo_wpns_slider mo_wpns_round"></span>
59
  </label>';
60
  }else{
61
+ echo ' <b style="color:green;">(Enabled)</b>';
62
  }
63
  echo ' </h3>
64
  </form>
88
  <br><br>
89
  <a class="button button-primary button-large" href="'.$waf.'">Settings</a>
90
  </div>
 
91
  <div class="mo_wpns_small_layout">
92
  <form name="tab_login" id="tab_login" method="post">
93
  <h3 align="center">Login and Spam
107
  </div>
108
  <a class="button button-primary button-large" href="'.$login_and_spam.'">Settings</a>
109
  </div>
 
 
110
  <div class="mo_wpns_small_layout">
111
  <form name="tab_backup" id="tab_backup" method="post">
112
  <h3>Encrypted Backup
141
  </div>
142
  <a class="button button-primary button-large" href="'.$scan_url.'">Settings</a>
143
  </div>
 
144
  <div class="mo_wpns_small_layout">
145
  <form name="tab_adv_block" id="tab_adv_block" method="post">
146
  <h3>IP Blocking
158
  </div>
159
  <a class="button button-primary button-large" href="'.$advance_block.'">Settings</a>
160
  </div>
 
 
161
  <div class="mo_wpns_small_layout">
162
  <form name="tab_report" id="tab_report" method="post">
163
  <h3>Reports
184
  <a class="button button-primary button-large" href="'.$notif_url.'">Settings</a>
185
 
186
  </div>
 
 
187
 
188
  </div>
189
  <script>
198
  }
199
  ?>
200
  <script>
 
 
 
201
  jQuery(document).ready(function(){
202
  jQuery("#switch_2fa").click(function(){
203
  jQuery("#tab_2fa").submit();
views/email-IPaddress.php CHANGED
@@ -3,7 +3,6 @@ function mo_IP_template()
3
  {
4
  global $moWpnsUtility;
5
  $IPaddress = $moWpnsUtility->get_client_ip();
6
- $IPaddress = sanitize_text_field( $IPaddress );
7
  $result=@json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip=".$IPaddress),true);
8
  $ipLookUpTemplate = MoWpnsConstants::IP_LOOKUP_TEMPLATE;
9
  $hostname = get_site_url();
@@ -31,7 +30,7 @@ return '<!DOCTYPE html>
31
  width :91%;
32
  margin-left:3%;
33
  font-size:19px;
34
- border: 4px solid #2271b1;
35
 
36
  }
37
  .mo_2fa_feature
@@ -50,7 +49,7 @@ return '<!DOCTYPE html>
50
  margin: 1%;
51
  float: left;
52
  background-color: white;
53
- border-top: 5px solid #2271b1;
54
  min-height: 320px;
55
  text-align: center;
56
  overflow: hidden;
@@ -109,7 +108,7 @@ return '<!DOCTYPE html>
109
  .mo_2fa_ef_button
110
  {
111
  font-size: x-large;
112
- background-color:#2271b1;
113
  color: white;
114
  padding: 17px 127px;
115
  font-family: cursive;
@@ -117,8 +116,8 @@ return '<!DOCTYPE html>
117
  }
118
  .mo_2fa_ef_read_more
119
  {
120
- color: #2271b1;
121
- border: 2px solid #2271b1;
122
  padding: 17px 27px;
123
  font-family: cursive;
124
  }
@@ -126,7 +125,7 @@ return '<!DOCTYPE html>
126
  {
127
 
128
  /*font-size: x-large;*/
129
- background-color: #2271b1;
130
  color: white;
131
  border: 1px solid white;
132
  padding: 17px 27px;
3
  {
4
  global $moWpnsUtility;
5
  $IPaddress = $moWpnsUtility->get_client_ip();
 
6
  $result=@json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip=".$IPaddress),true);
7
  $ipLookUpTemplate = MoWpnsConstants::IP_LOOKUP_TEMPLATE;
8
  $hostname = get_site_url();
30
  width :91%;
31
  margin-left:3%;
32
  font-size:19px;
33
+ border: 4px solid #20b2aa;
34
 
35
  }
36
  .mo_2fa_feature
49
  margin: 1%;
50
  float: left;
51
  background-color: white;
52
+ border-top: 5px solid #20b2aa;
53
  min-height: 320px;
54
  text-align: center;
55
  overflow: hidden;
108
  .mo_2fa_ef_button
109
  {
110
  font-size: x-large;
111
+ background-color:#20b2aa;
112
  color: white;
113
  padding: 17px 127px;
114
  font-family: cursive;
116
  }
117
  .mo_2fa_ef_read_more
118
  {
119
+ color: #20b2aa;
120
+ border: 2px solid #20b2aa;
121
  padding: 17px 27px;
122
  font-family: cursive;
123
  }
125
  {
126
 
127
  /*font-size: x-large;*/
128
+ background-color: #20b2aa;
129
  color: white;
130
  border: 1px solid white;
131
  padding: 17px 27px;
views/feedback_footer.php CHANGED
@@ -1,5 +1,9 @@
1
  <?php
2
  global $mo2f_dirName;
 
 
 
 
3
 
4
  echo' <div class="mo_twofa_footer">
5
  <div class="mo-2fa-mail-button">
@@ -53,6 +57,55 @@ echo' <div class="mo_twofa_footer">
53
  </tr>
54
 
55
  </table>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
56
  </div>
57
  </div>
58
  <div class="mo2f-form-container">
@@ -77,7 +130,7 @@ echo' <div class="mo_twofa_footer">
77
  </tr>
78
  <tr>
79
  <td>
80
- <textarea id="query" name="query" class="mo2f_new_support_form_input" style="border-radius:25px ; border: 1px solid gray; resize: none;width:100%;" cols="52" rows="9" placeholder="Write your query here"></textarea>
81
  </td>
82
  </tr>
83
  <tr>
@@ -139,7 +192,71 @@ echo' <div class="mo_twofa_footer">
139
  function moLoginHeightValidate(e){
140
  var t=parseInt(e.value.trim());t>50?e.value=50:35>t&&(e.value=35)
141
  }
 
 
 
142
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
143
  function openForm() {
144
  document.getElementById("myForm").style.display = "block";
145
  document.getElementById("feedback_form_bg").style.display = "block";
@@ -150,15 +267,4 @@ function closeForm() {
150
  document.getElementById("feedback_form_bg").style.display = "none";
151
 
152
  }
153
-
154
- jQuery(document).ready(function () {
155
- jQuery( ".mo-2fa-mail-button" ).hover(
156
- function() {
157
- $('.mo-2fa-help-button-text').css('display','block');
158
- }, function() {
159
- $('.mo-2fa-help-button-text').css('display','none');
160
- }
161
- );
162
- });
163
-
164
  </script>
1
  <?php
2
  global $mo2f_dirName;
3
+ require_once $mo2f_dirName . DIRECTORY_SEPARATOR.'includes'. DIRECTORY_SEPARATOR.'lib'. DIRECTORY_SEPARATOR.'mo-2fa-options-enum.php';
4
+
5
+ $zones = mo_2fa_time_zones::$time_zones;
6
+
7
 
8
  echo' <div class="mo_twofa_footer">
9
  <div class="mo-2fa-mail-button">
57
  </tr>
58
 
59
  </table>
60
+ <?php
61
+
62
+ echo'
63
+ <div class="call-setup-div">
64
+ <h3 style="margin-top: 0px; margin-left: 5px;">Setup a Screen-share session</h3>
65
+ <label class="switch">
66
+ <input type="checkbox" id="2fa_setup_call" name="2fa_setup_call">
67
+ <span class="slider round"></span>
68
+ </label>
69
+ <span style="padding-left:5px; font-size: 15px;">
70
+ <br>
71
+ <b style="padding: 10px;"><label for="2fa_setup_call"></label>Enable this option to setup a call</b>
72
+ </span>
73
+ <br>
74
+ <div id="call_setup_dets" style="text-align:center; margin-left: 5px; margin-top: 15px;">
75
+ <div>
76
+ <div style="width: 100% !important; ">
77
+ <select id="js-timezone" name="mo_2fa_setup_call_timezone" style="width:93%;">
78
+ <option value="" selected disabled>--Select your Timezone--</option>';
79
+
80
+ foreach($zones as $zone=>$value) {
81
+ echo '<option value="'.$value.'">'. $zone.' </option>';
82
+ }
83
+
84
+ echo'
85
+
86
+ </select>
87
+ </div>
88
+ </div>
89
+ <br>
90
+ <div style="width: 100%; position: relative;">
91
+ <input type="text" id="datepicker" class="mo_2fa_table_textbox" placeholder="Select Date" autocomplete="off" name="mo_2fa_setup_call_date">
92
+ </div>
93
+ <br>
94
+ <div style="width: 100%; position: relative; z-index:999">
95
+ <input type="text" id="timepicker" placeholder="Select Time" class="mo_2fa_table_textbox" autocomplete="off" name="mo_2fa_setup_call_time">
96
+ </div>
97
+ <br><br><br>
98
+ <div>
99
+ <p style="margin-right: 20px; margin-bottom: 10px; margin-top: 15px; margin-left: 5px;">
100
+ <b><font color="#dc143c">Please verify the email before submitting your query.</font></b>
101
+ </p>
102
+ </div>
103
+ </div>
104
+ </div>';
105
+
106
+
107
+ ?>
108
+
109
  </div>
110
  </div>
111
  <div class="mo2f-form-container">
130
  </tr>
131
  <tr>
132
  <td>
133
+ <textarea id="query" name="query" class="mo2f_new_support_form_input" style="border-radius:25px ; border: 1px solid gray; resize: none;width:100%;" cols="52" rows="9" onkeyup="mo_wpns_valid(this)" onblur="mo_wpns_valid(this)" onkeypress="mo_wpns_valid(this)" placeholder="Write your query here"></textarea>
134
  </td>
135
  </tr>
136
  <tr>
192
  function moLoginHeightValidate(e){
193
  var t=parseInt(e.value.trim());t>50?e.value=50:35>t&&(e.value=35)
194
  }
195
+ var min_time = "00:00";
196
+
197
+ jQuery( function() {
198
 
199
+ jQuery("#call_setup_dets").hide();
200
+ jQuery("#2fa_setup_call").click(function() {
201
+ if(jQuery(this).is(":checked")) {
202
+ jQuery("#call_setup_dets").show();
203
+ document.getElementById("js-timezone").required = true;
204
+ document.getElementById("datepicker").required = true;
205
+ document.getElementById("timepicker").required = true;
206
+ document.getElementById("query").required = false;
207
+
208
+ var date = new Date();
209
+ var hrs = date.getHours();
210
+ var mins = date.getMinutes();
211
+ if(hrs == 23 && mins > 30){
212
+ jQuery("#datepicker").datepicker("option", "minDate", 1);
213
+ jQuery("#datepicker").datepicker("setDate", +1);
214
+ jQuery("#timepicker").timepicker("option", "minTime", "00:00");
215
+ } else{
216
+ jQuery("#datepicker").datepicker("option", "minDate", 0);
217
+ jQuery("#datepicker").datepicker("setDate", new Date());
218
+ }
219
+ } else {
220
+ jQuery("#call_setup_dets").hide();
221
+ document.getElementById("timepicker").required = false;
222
+ document.getElementById("datepicker").required = false;
223
+ document.getElementById("js-timezone").required = false;
224
+ document.getElementById("query").required = true;
225
+ }
226
+ });
227
+
228
+ jQuery( "#datepicker" ).datepicker({
229
+ minDate: 0,
230
+ dateFormat: "M dd, yy"
231
+ });
232
+
233
+
234
+ jQuery("#datepicker").datepicker().on("change", function (ev) {
235
+ var sel_date = jQuery(this).val();
236
+ var selected_date = new Date(sel_date);
237
+ var today_date = new Date();
238
+
239
+ if( (selected_date.getDate() == today_date.getDate()) && (selected_date.getMonth() == today_date.getMonth()) ){
240
+ jQuery("#timepicker").timepicker("option", "minTime", new Date());
241
+ }
242
+ else{
243
+ jQuery("#timepicker").timepicker("option", "minTime", "00:00");
244
+ }
245
+ });
246
+
247
+ jQuery("#timepicker").timepicker({
248
+ timeFormat: "HH:mm",
249
+ interval: 30,
250
+ minTime: new Date(),
251
+ disableTextInput: true,
252
+ dynamic: false,
253
+ dropdown: true,
254
+ scrollbar: true,
255
+ forceRoundTime: true
256
+ });
257
+ });
258
+
259
+ jQuery(function() { jQuery("#js-timezone").select2(); });
260
  function openForm() {
261
  document.getElementById("myForm").style.display = "block";
262
  document.getElementById("feedback_form_bg").style.display = "block";
267
  document.getElementById("feedback_form_bg").style.display = "none";
268
 
269
  }
 
 
 
 
 
 
 
 
 
 
 
270
  </script>
views/ip-blocking.php CHANGED
@@ -3,7 +3,7 @@
3
  echo'<div class="mo_wpns_divided_layout">
4
  <div class="mo_wpns_setting_layout">';
5
 
6
- echo' <h2>IP LookUP<a href="https://developers.miniorange.com/docs/security/wordpress/wp-security/IP-blocking-whitelisting-lookup#wp-ip-lookup" target="_blank"><span class="dashicons dashicons-text-page" style="font-size:30px;color:#413c69;float: right;"></span></a></h2>
7
  <form name="f" method="post" action="" id="iplookup">
8
  <input type="hidden" name="option" value="mo_wpns_ip_lookup" />
9
  <table style="width:100%;">
3
  echo'<div class="mo_wpns_divided_layout">
4
  <div class="mo_wpns_setting_layout">';
5
 
6
+ echo' <h2>IP LookUP<a href="https://developers.miniorange.com/docs/security/wordpress/wp-security/IP-blocking-whitelisting-lookup#wp-ip-lookup" target="_blank"><span class="dashicons dashicons-text-page" style="font-size:30px;color:#269eb3;float: right;"></span></a></h2>
7
  <form name="f" method="post" action="" id="iplookup">
8
  <input type="hidden" name="option" value="mo_wpns_ip_lookup" />
9
  <table style="width:100%;">
views/login-security.php CHANGED
@@ -10,7 +10,7 @@ echo '
10
  <div class="mo_wpns_setting_layout" id ="mo2f_bruteforce">';
11
 
12
 
13
- echo ' <h3>Brute Force Protection ( Login Protection )<a href='.$two_factor_premium_doc['Brute Force Protection'].' target="_blank"><span class="dashicons dashicons-text-page" style="font-size:23px;color:#413c69;float: right;"></span></a></h3>
14
  <div class="mo_wpns_subheading">This protects your site from attacks which tries to gain access / login to a site with random usernames and passwords.</div>
15
 
16
  <input id="mo_bf_button" type="checkbox" name="enable_brute_force_protection" '.$brute_force_enabled.'> Enable Brute force protection
@@ -58,7 +58,7 @@ echo' <form id="mo_wpns_enable_brute_force_form" method="post" action="">
58
  echo'
59
  </div>
60
  <div class="mo_wpns_setting_layout" id="mo2f_google_recaptcha">
61
- <h3>Google reCAPTCHA<a href='.$two_factor_premium_doc['Google reCAPTCHA'].' target="_blank"><span class="dashicons dashicons-text-page" style="font-size:23px;color:#413c69;float: right;"></span></a></h3>
62
  <div class="mo_wpns_subheading">Google reCAPTCHA protects your website from spam and abuse. reCAPTCHA uses an advanced risk analysis engine and adaptive CAPTCHAs to keep automated software from engaging in abusive activities on your site. It does this while letting your valid users pass through with ease.</div>
63
 
64
  <form id="mo_wpns_activate_recaptcha" method="post" action="">
@@ -132,7 +132,7 @@ echo '<br>
132
  </div>
133
 
134
  <div class="mo_wpns_setting_layout" id="mo2f_enforce_strong_password_div">
135
- <h3>Enforce Strong Passwords <a href='.$two_factor_premium_doc['Enforce Strong Passwords'].' target="_blank"><span class="dashicons dashicons-text-page" style="font-size:23px;color:#413c69;float: right;"></span></a></h3>
136
  <div class="mo_wpns_subheading">Checks the password strength of admin and other users to enhance login security</div>
137
 
138
  <form id="mo_wpns_enable_brute_force_form" method="post" action="">
10
  <div class="mo_wpns_setting_layout" id ="mo2f_bruteforce">';
11
 
12
 
13
+ echo ' <h3>Brute Force Protection ( Login Protection )<a href='.$two_factor_premium_doc['Brute Force Protection'].' target="_blank"><span class="dashicons dashicons-text-page" style="font-size:23px;color:#269eb3;float: right;"></span></a></h3>
14
  <div class="mo_wpns_subheading">This protects your site from attacks which tries to gain access / login to a site with random usernames and passwords.</div>
15
 
16
  <input id="mo_bf_button" type="checkbox" name="enable_brute_force_protection" '.$brute_force_enabled.'> Enable Brute force protection
58
  echo'
59
  </div>
60
  <div class="mo_wpns_setting_layout" id="mo2f_google_recaptcha">
61
+ <h3>Google reCAPTCHA<a href='.$two_factor_premium_doc['Google reCAPTCHA'].' target="_blank"><span class="dashicons dashicons-text-page" style="font-size:23px;color:#269eb3;float: right;"></span></a></h3>
62
  <div class="mo_wpns_subheading">Google reCAPTCHA protects your website from spam and abuse. reCAPTCHA uses an advanced risk analysis engine and adaptive CAPTCHAs to keep automated software from engaging in abusive activities on your site. It does this while letting your valid users pass through with ease.</div>
63
 
64
  <form id="mo_wpns_activate_recaptcha" method="post" action="">
132
  </div>
133
 
134
  <div class="mo_wpns_setting_layout" id="mo2f_enforce_strong_password_div">
135
+ <h3>Enforce Strong Passwords <a href='.$two_factor_premium_doc['Enforce Strong Passwords'].' target="_blank"><span class="dashicons dashicons-text-page" style="font-size:23px;color:#269eb3;float: right;"></span></a></h3>
136
  <div class="mo_wpns_subheading">Checks the password strength of admin and other users to enhance login security</div>
137
 
138
  <form id="mo_wpns_enable_brute_force_form" method="post" action="">
views/login_spam.php CHANGED
@@ -1,22 +1,22 @@
1
 
2
- <div class="nav-tab-wrapper">
3
- <button class="nav-tab" onclick="mo2f_wpns_login_span_openTab(this)" id="mo2f_login_sec">Login Security</button>
4
- <button class="nav-tab" onclick="mo2f_wpns_login_span_openTab(this)" id="mo2f_reg_sec">Registration Security</button>
5
- <button class="nav-tab" onclick="mo2f_wpns_login_span_openTab(this)" id="mo2f_spam_content">Content & Spam</button>
6
  </div>
7
  <br>
8
- <div class="tabcontent" id="mo2f_login_sec_div">
9
- <div class="mo_wpns_divided_layout">
10
- <table style="width:100%;">
11
- <tr>
12
- <td>
13
- <?php include_once $mo2f_dirName . 'controllers'.DIRECTORY_SEPARATOR.'login-security.php'; ?>
14
- </td>
15
- </tr>
16
- </table>
17
- </div>
18
  </div>
19
- <div class="tabcontent" id="mo2f_reg_sec_div">
 
20
  <div class="mo_wpns_divided_layout">
21
  <table style="width:100%;">
22
  <tr>
@@ -27,7 +27,7 @@
27
  </table>
28
  </div>
29
  </div>
30
- <div class="tabcontent" id="mo2f_spam_content_div">
31
  <div class="mo_wpns_divided_layout">
32
  <table style="width:100%;">
33
  <tr>
@@ -39,31 +39,39 @@
39
  </div>
40
  </div>
41
  <script>
42
-
43
- function mo2f_wpns_login_span_openTab(elmt){
44
- var tabname = elmt.id;
45
- var tabarray = ["mo2f_login_sec","mo2f_reg_sec","mo2f_spam_content"];
46
- for (var i = 0; i < tabarray.length; i++) {
47
- if(tabarray[i] == tabname){
48
- jQuery("#"+tabarray[i]).addClass("nav-tab-active");
49
- jQuery("#"+tabarray[i]+"_div").css("display", "block");
50
- }else{
51
- jQuery("#"+tabarray[i]).removeClass("nav-tab-active");
52
- jQuery("#"+tabarray[i]+"_div").css("display", "none");
53
- }
 
54
  }
55
-
56
- localStorage.setItem("login_spam_last_tab", tabname);
57
- }
58
-
59
- jQuery('#login_spam_tab').addClass('nav-tab-active');
60
-
61
- var tab = localStorage.getItem("login_spam_last_tab");
62
-
63
- if(tab)
64
- document.getElementById(tab).click();
 
 
 
 
 
 
 
 
65
  else{
66
- document.getElementById("mo2f_login_sec").click();
67
  }
68
-
69
  </script>
1
 
2
+ <div class="mo_wpns_tab">
3
+ <button class="tablinks" onclick="openTab(event, 'security_login')" id="login_sec">Login Security</button>
4
+ <button class="tablinks" onclick="openTab(event, 'security_registration')" id="reg_sec">Registration Security</button>
5
+ <button class="tablinks" onclick="openTab(event, 'content_spam')" id="spam_content">Content & Spam</button>
6
  </div>
7
  <br>
8
+ <div class="tabcontent" id="security_login">
9
+ <div class="mo_wpns_divided_layout">
10
+ <table style="width:100%;">
11
+ <tr>
12
+ <td>
13
+ <?php include_once $mo2f_dirName . 'controllers'.DIRECTORY_SEPARATOR.'login-security.php'; ?>
14
+ </td>
15
+ </tr>
16
+ </table>
 
17
  </div>
18
+ </div>
19
+ <div class="tabcontent" id="security_registration">
20
  <div class="mo_wpns_divided_layout">
21
  <table style="width:100%;">
22
  <tr>
27
  </table>
28
  </div>
29
  </div>
30
+ <div class="tabcontent" id="content_spam">
31
  <div class="mo_wpns_divided_layout">
32
  <table style="width:100%;">
33
  <tr>
39
  </div>
40
  </div>
41
  <script>
42
+ document.getElementById("security_login").style.display = "block";
43
+ document.getElementById("security_registration").style.display = "none";
44
+ document.getElementById("content_spam").style.display = "none";
45
+ document.getElementById("login_sec").className += " active";
46
+ function openTab(evt, tabname){
47
+ var i, tablinks, tabcontent;
48
+ tabcontent = document.getElementsByClassName("tabcontent");
49
+ for (i = 0; i < tabcontent.length; i++) {
50
+ tabcontent[i].style.display = "none";
51
+ }
52
+ tablinks = document.getElementsByClassName("tablinks");
53
+ for (i = 0; i < tablinks.length; i++) {
54
+ tablinks[i].className = tablinks[i].className.replace(" active", "");
55
  }
56
+ document.getElementById(tabname).style.display = "block";
57
+ localStorage.setItem("last_tab", tabname);
58
+ evt.currentTarget.className += " active";
59
+ }
60
+ var tour = '<?php echo get_option("mo2f_tour_loginSpam");?>';
61
+ if(tour != 1)
62
+ var tab = localStorage.getItem("last_tab");
63
+ else
64
+ var tab = '<?php echo get_option("mo2f_tour_tab");?>';
65
+ if(tab == "security_login"){
66
+ document.getElementById("login_sec").click();
67
+ }
68
+ else if(tab == "security_registration"){
69
+ document.getElementById("reg_sec").click();
70
+ }
71
+ else if(tab == "content_spam"){
72
+ document.getElementById("spam_content").click();
73
+ }
74
  else{
75
+ document.getElementById("login_sec").click();
76
  }
 
77
  </script>
views/malware_scanner/malware_scan.php CHANGED
@@ -7,35 +7,35 @@
7
  ?>
8
 
9
 
10
- <div class="nav-tab-wrapper">
11
- <button class="nav-tab" onclick="mo2f_wpns_openTabmalware(this)" id="mo2f_malware_view">Malware Scan Modes</button>
12
- <button class="nav-tab" onclick="mo2f_wpns_openTabmalware(this)" id="mo2f_scan_set">Custom Scan Settings</button>
13
- <button class="nav-tab" onclick="mo2f_wpns_openTabmalware(this)" id="mo2f_report_scan">Scan Reports</button>
14
  <input type = "hidden" id = "wpns_report_nonce" value="<?php echo wp_create_nonce('wpns-report-load') ?>" >
15
  </div>
16
 
17
- <div>
18
- <div class="tabcontent" id="mo2f_malware_view_div">
19
- <div class="mo_wpns_divided_layout">
20
- <table style="width: 100%;">
21
- <tr>
22
- <td style="width:100%;vertical-align:top;" id="configurationForm">
23
- <?php include_once $mo2f_dirName . 'controllers'.DIRECTORY_SEPARATOR.'malware_scanner'.DIRECTORY_SEPARATOR.'scan_malware_summary.php'; ?>
24
- </tr>
25
- </table>
26
- </div>
27
  </div>
28
- <div class="tabcontent" id="mo2f_scan_set_div">
29
- <div class="mo_wpns_divided_layout">
30
- <table style="width: 100%;">
31
- <tr>
32
- <td style="width:100%;vertical-align:top;" id="configurationForm">
33
- <?php include_once $mo2f_dirName . 'controllers'.DIRECTORY_SEPARATOR.'malware_scanner'.DIRECTORY_SEPARATOR.'scan_malware_settings.php'; ?>
34
- </tr>
35
- </table>
36
- </div>
37
  </div>
38
- <div class="tabcontent" id="mo2f_report_scan_div">
 
39
  <div class="mo_wpns_divided_layout">
40
  <table style="width: 100%;">
41
  <tr>
@@ -45,33 +45,50 @@
45
  </table>
46
  </div>
47
  </div>
48
- </div>
49
  <script>
50
-
51
- function mo2f_wpns_openTabmalware(elmt){
52
- var tabname = elmt.id;
53
- var tabarray = ["mo2f_malware_view","mo2f_scan_set","mo2f_report_scan"];
54
- for (var i = 0; i < tabarray.length; i++) {
55
- if(tabarray[i] == tabname){
56
- jQuery("#"+tabarray[i]).addClass("nav-tab-active");
57
- jQuery("#"+tabarray[i]+"_div").css("display", "block");
58
- }else{
59
- jQuery("#"+tabarray[i]).removeClass("nav-tab-active");
60
- jQuery("#"+tabarray[i]+"_div").css("display", "none");
61
- }
62
- }
63
- localStorage.setItem("malware_last_tab", tabname);
64
- }
65
-
66
- jQuery('#malware_tab').addClass('nav-tab-active');
67
-
68
- var tab = localStorage.getItem("malware_last_tab");
69
-
70
- if(tab)
71
- document.getElementById(tab).click();
72
- else{
73
- document.getElementById("mo2f_malware_view").click();
74
  }
75
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
76
 
77
  </script>
7
  ?>
8
 
9
 
10
+ <div class="mo_wpns_tab">
11
+ <button class="nav-tab" onclick="openTabmalware(event, 'scan_view')" id="malware_view">Malware Scan Modes</button>
12
+ <button class="tablinks" onclick="openTabmalware(event, 'settings_scan')" id="scan_set">Custom Scan Settings</button>
13
+ <button class="tablinks" onclick="openTabmalware(event, 'scan_report')" id="report_scan">Scan Reports</button>
14
  <input type = "hidden" id = "wpns_report_nonce" value="<?php echo wp_create_nonce('wpns-report-load') ?>" >
15
  </div>
16
 
17
+ <div id="mo_scan_message" style=" padding-top:8px"></div>
18
+ <div class="tabcontent" id="scan_view">
19
+ <div class="mo_wpns_divided_layout">
20
+ <table style="width: 100%;">
21
+ <tr>
22
+ <td style="width:100%;vertical-align:top;" id="configurationForm">
23
+ <?php include_once $mo2f_dirName . 'controllers'.DIRECTORY_SEPARATOR.'malware_scanner'.DIRECTORY_SEPARATOR.'scan_malware_summary.php'; ?>
24
+ </tr>
25
+ </table>
 
26
  </div>
27
+ </div>
28
+ <div class="tabcontent" id="settings_scan">
29
+ <div class="mo_wpns_divided_layout">
30
+ <table style="width: 100%;">
31
+ <tr>
32
+ <td style="width:100%;vertical-align:top;" id="configurationForm">
33
+ <?php include_once $mo2f_dirName . 'controllers'.DIRECTORY_SEPARATOR.'malware_scanner'.DIRECTORY_SEPARATOR.'scan_malware_settings.php'; ?>
34
+ </tr>
35
+ </table>
36
  </div>
37
+ </div>
38
+ <div class="tabcontent" id="scan_report">
39
  <div class="mo_wpns_divided_layout">
40
  <table style="width: 100%;">
41
  <tr>
45
  </table>
46
  </div>
47
  </div>
 
48
  <script>
49
+ function openTabmalware(evt, tabname){
50
+ jQuery('#mo_scan_message').hide();
51
+ var i, tablinks, tabcontent;
52
+ tabcontent = document.getElementsByClassName("tabcontent");
53
+ for (i = 0; i < tabcontent.length; i++) {
54
+ tabcontent[i].style.display = "none";
55
+ }
56
+ tablinks = document.getElementsByClassName("tablinks");
57
+ for (i = 0; i < tablinks.length; i++) {
58
+ tablinks[i].className = tablinks[i].className.replace(" active", "");
 
 
 
 
 
 
 
 
 
 
 
 
 
 
59
  }
60
+ document.getElementById(tabname).style.display = "block";
61
+ localStorage.setItem("last_tab", tabname);
62
+ evt.currentTarget.className += " active";
63
+ if(tabname == "scan_report"){
64
+ var data={
65
+ 'action':'mo_wpns_malware_redirect',
66
+ 'call_type':'malware_scan_last_result',
67
+ 'nonce':jQuery('#wpns_quick_scan_nonce').val()
68
+ };
69
+ jQuery.post(ajaxurl ,data, function(response){
70
+ jQuery("#reports_table tbody").html(response);
71
+ });
72
+ }else if(tabname == "settings_scan"){
73
+ document.getElementById("scan_set").click();
74
+ }
75
+ }
76
+ var tour = '<?php echo get_option("mo2f_tour_malware_scan");?>';
77
+ if(tour != 1)
78
+ var tab = localStorage.getItem("last_tab");
79
+ else
80
+ var tab = '<?php echo get_option("mo2f_tour_tab");?>';
81
+ if(tab == "scan_view"){
82
+ document.getElementById("malware_view").click();
83
+ }
84
+ else if(tab == "settings_scan"){
85
+ document.getElementById("scan_set").click();
86
+ }
87
+ else if(tab == "scan_report"){
88
+ document.getElementById("report_scan").click();
89
+ }
90
+ else{
91
+ document.getElementById("malware_view").click();
92
+ }
93
 
94
  </script>
views/malware_scanner/scan_report_view.php CHANGED
@@ -262,14 +262,10 @@ function show_scan_report($currenturl, $result){
262
  jQuery(document).ready(function() {
263
  jQuery('#reports_table').DataTable({
264
  <?php if(! isset($_GET['view'])){ ?>
265
- "order": [[ 3, "desc" ]],
266
- retrieve: true,
267
- paging: false
268
  <?php }
269
  else{ ?>
270
- "order": [[ 2, "desc" ]],
271
- retrieve: true,
272
- paging: false
273
  <?php } ?>
274
  });
275
  jQuery('#skip_table').DataTable({
262
  jQuery(document).ready(function() {
263
  jQuery('#reports_table').DataTable({
264
  <?php if(! isset($_GET['view'])){ ?>
265
+ "order": [[ 3, "desc" ]]
 
 
266
  <?php }
267
  else{ ?>
268
+ "order": [[ 2, "desc" ]]
 
 
269
  <?php } ?>
270
  });
271
  jQuery('#skip_table').DataTable({
views/malware_scanner/scan_settings_view.php CHANGED
@@ -4,7 +4,7 @@ $setup_dirName = $mo2f_dirName.'views'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEP
4
  include $setup_dirName; ?>
5
  <div class="mo_wpns_setting_layout" id= "mo2f_select_scanning_files">
6
  <div class="mo_wpns_subheading"></div>
7
- <h3>Custom Scan Settings<span style="text-align: right;"><a href='<?php echo $two_factor_premium_doc['Custom Scan Settings'];?>' target="_blank"><span class="dashicons dashicons-text-page" style="font-size:23px;color:#413c69;float: right;"></span></a></span></h3>
8
  <hr>
9
  <form id="" method="post" action="">
10
  <input type="hidden" name="option" value="mo_wpns_scan_configuration">
4
  include $setup_dirName; ?>
5
  <div class="mo_wpns_setting_layout" id= "mo2f_select_scanning_files">
6
  <div class="mo_wpns_subheading"></div>
7
+ <h3>Custom Scan Settings<span style="text-align: right;"><a href='<?php echo $two_factor_premium_doc['Custom Scan Settings'];?>' target="_blank"><span class="dashicons dashicons-text-page" style="font-size:23px;color:#269eb3;float: right;"></span></a></span></h3>
8
  <hr>
9
  <form id="" method="post" action="">
10
  <input type="hidden" name="option" value="mo_wpns_scan_configuration">
views/malware_scanner/scan_summary_view.php CHANGED
@@ -4,14 +4,14 @@ $setup_dirName = $mo2f_dirName.'views'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEP
4
  include $setup_dirName;
5
  add_action('admin_footer','mo_wpns_start_scan');
6
  ?>
7
- <div class="mo_wpns_setting_layout">
8
  <div class="malwaresummarydiv" id="mo2f_scan_dash">
9
  <?php show_summary(); ?>
10
  </div>
11
  </div>
12
  <div class="mo_wpns_setting_layout" id="scan_status_table">
13
  <div>
14
- <p class="hmdiv">Scan Modes<a href='<?php echo $two_factor_premium_doc['Scan Modes'];?>' target="_blank"><span class="dashicons dashicons-text-page" style="font-size:23px;color:#413c69;float: right;"></span></a></p>
15
  </div>
16
  <div style="float: left;">
17
  <p id="scanstatus"></p>
@@ -44,7 +44,7 @@ add_action('admin_footer','mo_wpns_start_scan');
44
  <hr class="line">
45
  <p class="mo_wpns_scan_desc">Custom Scan gives you an option to choose which files to scan and what to check for.</p>
46
  <input id="custom_scan_button" type="button" name="custom_scan_button" class="mo_wpns_scan_button" value="Custom Scan">
47
- <input type="button" name="configure_button" class="mo_wpns_scan_button" value="Configure" style="float: right;" id="mo2f_scan_set" onclick="mo2f_wpns_openTabmalware(this)" >
48
  </div>
49
  </div>
50
  </div>
@@ -99,7 +99,7 @@ function mo_wpns_start_scan(){
99
  <script>
100
  var progress_bar,scan_progress,stop_scan_progress;
101
  var disabled="#b0d2cf";
102
- var active_scan="#2271b1";
103
  var errorClass="notice notice-error is-dismissible";
104
  var successClass="notice notice-success is-dismissible";
105
  var removeClass = "notice-error notice-success";
4
  include $setup_dirName;
5
  add_action('admin_footer','mo_wpns_start_scan');
6
  ?>
7
+ <div class="mo_wpns_dashboard_layout">
8
  <div class="malwaresummarydiv" id="mo2f_scan_dash">
9
  <?php show_summary(); ?>
10
  </div>
11
  </div>
12
  <div class="mo_wpns_setting_layout" id="scan_status_table">
13
  <div>
14
+ <p class="hmdiv">Scan Modes<a href='<?php echo $two_factor_premium_doc['Scan Modes'];?>' target="_blank"><span class="dashicons dashicons-text-page" style="font-size:23px;color:#269eb3;float: right;"></span></a></p>
15
  </div>
16
  <div style="float: left;">
17
  <p id="scanstatus"></p>
44
  <hr class="line">
45
  <p class="mo_wpns_scan_desc">Custom Scan gives you an option to choose which files to scan and what to check for.</p>
46
  <input id="custom_scan_button" type="button" name="custom_scan_button" class="mo_wpns_scan_button" value="Custom Scan">
47
+ <input type="button" name="configure_button" class="mo_wpns_scan_button" value="Configure" style="float: right;" onclick="openTabmalware(event, 'settings_scan')" >
48
  </div>
49
  </div>
50
  </div>
99
  <script>
100
  var progress_bar,scan_progress,stop_scan_progress;
101
  var disabled="#b0d2cf";
102
+ var active_scan="#20b2aa";
103
  var errorClass="notice notice-error is-dismissible";
104
  var successClass="notice notice-success is-dismissible";
105
  var removeClass = "notice-error notice-success";
views/navbar.php CHANGED
@@ -1,5 +1,5 @@
1
  <?php
2
- global $mo2f_dirName;
3
  $security_features_nonce = wp_create_nonce('mo_2fa_security_features_nonce');
4
 
5
  $user = wp_get_current_user();
@@ -30,30 +30,37 @@ if( isset( $_GET[ 'page' ]) && $_GET['page'] != 'mo_2fa_upgrade')
30
  {
31
  echo'<div class="wrap">';
32
 
33
- $date1 = "2022-01-10";
34
  $dateTimestamp1 = strtotime($date1);
35
 
36
  $date2 = date("Y-m-d");
37
  $dateTimestamp2 = strtotime($date2);
38
 
39
- if($dateTimestamp2<=$dateTimestamp1 && ($userID == $onprem_admin) && !get_site_option("mo2f_banner_never_show_again"))
40
  {
41
  echo'<div class="mo2f_offer_main_div">
42
 
43
 
44
 
45
  <div class="mo2f_offer_first_section">
46
- <p class="mo2f_offer_christmas">CHRISTMAS</p>
47
- <h3 class= "mo2fa_hr_line"><span>&</span></h3>
48
- <p class="mo2f_offer_cyber">NEW YEAR&nbsp;<spn style="color:white;">SALE</span></p>
49
- </div>
50
 
51
  <div class="mo2f_offer_middle_section">
52
- <p class="mo2f_offer_get_upto"><span style="font-size: 30px;">GET UPTO <span style="color: white;font-size: larger; font-weight:bold">50%</span> OFF ON PREMIUM PLUGINS</p><br>
53
- <p class="mo2f_offer_valid">Offer valid for limited period only!</p>
 
 
 
 
 
54
  </div>
55
 
56
- <div id="mo2f_offer_last_section" class="mo2f_offer_last_section"><button class="mo2f_banner_never_show_again mo2f_close">CLOSE <span class=" mo2f_cross">X</span></button><a class="mo2f_offer_contact_us" href="'.$request_offer_url.'">Contact Us</a></p></div>
 
 
 
57
 
58
  </div><br><br>';
59
  }
@@ -89,29 +96,39 @@ if( isset( $_GET[ 'page' ]) && $_GET['page'] != 'mo_2fa_upgrade')
89
  ?>
90
 
91
 
92
- <?php
93
- if(MoWpnsUtility::get_mo2f_db_option('mo_wpns_2fa_with_network_security', 'get_option')){ ?>
94
- <?php if($_GET['page'] != 'mo_2fa_troubleshooting' && $_GET['page'] != 'mo_2fa_addons' && $_GET['page'] != 'mo_2fa_account'){ ?>
95
- <div class="nav-tab-wrapper">
96
- <?php
97
- echo '<a id="mo_2fa_dashboard" class="nav-tab" href="'.$dashboard_url.'" >Dashboard</a>';
98
-
99
- echo '<a id="mo_2fa_2fa" class="nav-tab" href="'.$two_fa.'" >Two Factor</a>';
100
-
101
- echo '<a id="mo_2fa_waf" class="nav-tab" href="'.$waf.'" >Firewall</a>';
102
-
103
- echo '<a id="login_spam_tab" class="nav-tab" href="'.$login_and_spam.'" >Login and Spam</a>';
104
-
105
- echo '<a id="backup_tab" class="nav-tab" href="'.$backup.'" >Encrypted Backup</a>';
106
-
107
- echo '<a id="malware_tab" class="nav-tab" href="'.$scan_url.'">Malware Scan</a>';
108
-
109
- echo '<a id="adv_block_tab" class="nav-tab" href="'.$advance_block.'">IP Blocking</a>';
110
- ?>
111
- </div>
112
- <?php
113
- }
114
- }
115
- }
116
- ?>
117
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  <?php
2
+
3
  $security_features_nonce = wp_create_nonce('mo_2fa_security_features_nonce');
4
 
5
  $user = wp_get_current_user();
30
  {
31
  echo'<div class="wrap">';
32
 
33
+ $date1 = "2021-01-20";
34
  $dateTimestamp1 = strtotime($date1);
35
 
36
  $date2 = date("Y-m-d");
37
  $dateTimestamp2 = strtotime($date2);
38
 
39
+ if($dateTimestamp2<=$dateTimestamp1)
40
  {
41
  echo'<div class="mo2f_offer_main_div">
42
 
43
 
44
 
45
  <div class="mo2f_offer_first_section">
46
+ <img style="height: 201px;width: 540px;" src="'.dirname(plugin_dir_url(__FILE__)).'/includes/images/new_year_offer.png">
47
+
48
+ </div>
 
49
 
50
  <div class="mo2f_offer_middle_section">
51
+ <p class="mo2f_offer_get_upto">Get Upto </p>
52
+ <p class="mo2f_offer_first_section_text">50% off</p>
53
+ <center><a class="mo2f_offer_contact_us" href="'.$request_offer_url.'">Contact Us</a></center>
54
+ </div>
55
+
56
+ <div class="mo2f_offer_last_section">
57
+ <img src="'.dirname(plugin_dir_url(__FILE__)).'/includes/images/new_year.gif">
58
  </div>
59
 
60
+
61
+
62
+
63
+
64
 
65
  </div><br><br>';
66
  }
96
  ?>
97
 
98
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
99
 
100
+ <div class="mo_flex-container">
101
+ <?php
102
+ if(MoWpnsUtility::get_mo2f_db_option('mo_wpns_2fa_with_network_security', 'get_option'))
103
+ {
104
+ echo '<a class="nav-tab '.($active_tab == 'mo_2fa_dashboard' ? 'nav-tab-active' : '').'" href="'.$dashboard_url .'">Dashboard</a>';
105
+ if($is_onprem){
106
+ if( ($flag) or ($userID == $onprem_admin) ){
107
+ echo '<a class="nav-tab '.($active_tab == 'mo_2fa_two_fa' ? 'nav-tab-active' : '').'" href="'.$two_fa .'">Two Factor</a>';
108
+ }
109
+ }
110
+ else{
111
+ echo '<a class="nav-tab '.($active_tab == 'mo_2fa_two_fa' ? 'nav-tab-active' : '').'" href="'.$two_fa .'">Two Factor</a>';
112
+ }
113
+
114
+ if(get_site_option('mo_2f_switch_waf')){
115
+ echo '<a id="mo_2fa_waf" class="nav-tab '.($active_tab == 'mo_2fa_waf' ? 'nav-tab-active' : '').'" href="'.$waf .'">Firewall</a>';
116
+ }
117
+ if(get_site_option('mo_2f_switch_loginspam')){
118
+ echo '<a id="login_spam_tab" class="nav-tab '.($active_tab == 'mo_2fa_login_and_spam' ? 'nav-tab-active' : '').'" href="'.$login_and_spam .'">Login and Spam</a>';
119
+ }
120
+ if(get_site_option('mo_2f_switch_backup')){
121
+ echo '<a id="backup_tab" class="nav-tab '.($active_tab == 'mo_2fa_backup' ? 'nav-tab-active' : '').'" href="'.$backup .'">Encrypted Backup</a>';
122
+ }
123
+ if(get_site_option('mo_2f_switch_malware')){
124
+ echo '<a id="malware_tab" class="nav-tab '.($active_tab == 'mo_2fa_malwarescan' ? 'nav-tab-active' : '').'" href="'.$scan_url .'">Malware Scan</a>';
125
+ }
126
+ if(get_site_option('mo_2f_switch_adv_block')){
127
+ echo '<a id="adv_block_tab" class="nav-tab '.($active_tab == 'mo_2fa_advancedblocking'? 'nav-tab-active' : '').'" href="'.$advance_block .'">IP Blocking</a>';
128
+ }
129
+
130
+ }
131
+ ?>
132
+ </div>
133
+ <?php
134
+ }
views/network_security_features.php CHANGED
@@ -11,7 +11,7 @@ if ( 'admin.php' == basename( $_SERVER['PHP_SELF'] ) )
11
  <div class="mo_wpns_divided_layout" style="margin-left: 13%;">
12
  <div class="mo_wpns_setting_layout" style="padding-bottom: 16px;">
13
 
14
- <h1 style="color: #2271b1; font-size: x-large; text-align: center;">What are you looking for?</h1>
15
 
16
  <form id="mo_wpns_2fa_with_network_security" method="post" action="">
17
  <div style="width: 100%;">
11
  <div class="mo_wpns_divided_layout" style="margin-left: 13%;">
12
  <div class="mo_wpns_setting_layout" style="padding-bottom: 16px;">
13
 
14
+ <h1 style="color: #20b2aa; font-size: x-large; text-align: center;">What are you looking for?</h1>
15
 
16
  <form id="mo_wpns_2fa_with_network_security" method="post" action="">
17
  <div style="width: 100%;">
views/request_christmas_offer.php DELETED
@@ -1,36 +0,0 @@
1
- <div class="mo_wpns_divided_layout">
2
- <div class="mo_wpns_setting_layout mo2f_christmas_contact_us_layout">
3
- <h3> Request For Christmas Offer : <div style="float: right;">
4
- <?php
5
- echo '<a class="mo_wpns_button mo_wpns_button1 mo2f_christmas_contact_us_button" href="'.$two_fa.'">Back</a>';
6
- ?>
7
- </div></h3>
8
- <form method="post">
9
- <input type="hidden" name="option" value="mo_2FA_christmas_request_form" />
10
- <input type="hidden" name="nonce" value="<?php echo wp_create_nonce('mo2f-Request-christmas')?>">
11
- <table cellpadding="4" cellspacing="4">
12
- <tr>
13
- <td><strong>Usecase : </strong></td>
14
- <td>
15
- <textarea type="text" name="mo_2FA_christmas_usecase" style="resize: vertical; width:350px; height:100px;" rows="4" placeholder="Write us about your usecase" required value=""></textarea>
16
- </td>
17
-
18
-
19
- </tr>
20
- <tr>
21
- <td>
22
- </td>
23
-
24
- </tr>
25
- <tr>
26
- <td><strong>Email ID : </strong></td>
27
- <td><input required type="email" name="mo_2FA_christmas_email" placeholder="Email id" value="" /></td>
28
- </tr>
29
-
30
- </table>
31
- <div style="padding-top: 10px;">
32
- <input type="submit" name="submit" value="Submit Request" class="mo_wpns_button mo_wpns_button1 mo2f_christmas_contact_us_button" />
33
- </div>
34
- </form>
35
- </div>
36
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
views/request_demo.php DELETED
@@ -1,47 +0,0 @@
1
- <div class="mo_wpns_divided_layout">
2
- <div class="mo_wpns_setting_layout">
3
- <h3> Demo Request Form : <div style="float: right;">
4
- <?php
5
- echo '<a class="mo_wpns_button mo_wpns_button1" href="'.$two_fa.'">Back</a>';
6
- ?>
7
- </div></h3>
8
- <form method="post">
9
- <input type="hidden" name="option" value="mo_2FA_demo_request_form" />
10
- <input type="hidden" name="nonce" value="<?php echo wp_create_nonce('mo2f-Request-demo')?>">
11
- <table cellpadding="4" cellspacing="4">
12
- <tr>
13
- <td><strong>Usecase : </strong></td>
14
- <td>
15
- <textarea type="text" minlength="15" name="mo_2FA_demo_usecase" style="resize: vertical; width:350px; height:100px;" rows="4" placeholder="Write us about your usecase" required value=""></textarea>
16
- </td>
17
- </tr>
18
- <tr>
19
- <td></td>
20
-
21
- </tr>
22
- <tr>
23
- <td><strong>Email ID : </strong></td>
24
- <td><input required type="email" name="mo_2FA_demo_email" placeholder="Email id" value="" /></td>
25
- </tr>
26
- <tr>
27
- <td><strong>Request a demo for : </strong></td>
28
- <td>
29
- <select required name="mo_2FA_demo_plan" id="mo_2FA_demo_plan_id">
30
- <option disabled selected>------------------ Select ------------------</option>
31
- <option value="2FA">Two Factor Authentication</option>
32
- <option value="WAF">Web Application Firewall (WAF) </option>
33
- <option value="malwareScanner">Malware Scanner</option>
34
- <option value="login_spam">Login Security</option>
35
- <option value="backup">Encrypted Backup </option>
36
- <option value="notSure">Not Sure/Multiple options</option>
37
- </select>
38
- </td>
39
- </tr>
40
-
41
- </table>
42
- <div style="padding-top: 10px;">
43
- <input type="submit" name="submit" value="Submit Demo Request" class="mo_wpns_button mo_wpns_button1" />
44
- </div>
45
- </form>
46
- </div>
47
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
views/request_offer.php CHANGED
@@ -1,16 +1,15 @@
1
  <div class="mo_wpns_divided_layout">
2
  <div class="mo_wpns_setting_layout mo2f_offer_contact_us_layout">
3
- <h3 > Request For Offer :<div style="float: right;">
4
  <?php
5
- echo '<a class="mo_wpns_button mo_wpns_button1 mo2f_offer_contact_us_button" href="'.$two_fa.'">Back</a>';
6
  ?>
7
- </div>
8
- </h3>
9
  <form method="post">
10
  <input type="hidden" name="option" value="mo_2FA_offer_request_form" />
11
  <input type="hidden" name="nonce" value="<?php echo wp_create_nonce('mo2f-Request-offer')?>">
12
- <table cellpadding="4" cellspacing="4">
13
- <tr>
14
  <td><strong>Usecase : </strong></td>
15
  <td>
16
  <textarea type="text" name="mo_2FA_offer_usecase" style="resize: vertical; width:350px; height:100px;" rows="4" placeholder="Write us about your usecase" required value=""></textarea>
@@ -25,12 +24,12 @@
25
  </tr>
26
  <tr>
27
  <td><strong>Email ID : </strong></td>
28
- <td><input required type="email" name="mo_2FA_offer_email" placeholder="Email id" value="<?php echo wp_get_current_user()->user_email; ?>" /></td>
29
  </tr>
30
 
31
  </table>
32
- <div style="padding-top: 10px">
33
- <input type="submit" name="submit" value="Submit Request" class="mo_wpns_button mo_wpns_button1 mo2f_offer_contact_us_button" />
34
  </div>
35
  </form>
36
  </div>
1
  <div class="mo_wpns_divided_layout">
2
  <div class="mo_wpns_setting_layout mo2f_offer_contact_us_layout">
3
+ <h3> Request For New Year Offer : <div style="float: right;">
4
  <?php
5
+ echo '<a class="button button-primary button-large mo2f_offer_contact_us_button" href="'.$two_fa.'">Back</a>';
6
  ?>
7
+ </div></h3>
 
8
  <form method="post">
9
  <input type="hidden" name="option" value="mo_2FA_offer_request_form" />
10
  <input type="hidden" name="nonce" value="<?php echo wp_create_nonce('mo2f-Request-offer')?>">
11
+ <table cellpadding="4" cellspacing="4">
12
+ <tr>
13
  <td><strong>Usecase : </strong></td>
14
  <td>
15
  <textarea type="text" name="mo_2FA_offer_usecase" style="resize: vertical; width:350px; height:100px;" rows="4" placeholder="Write us about your usecase" required value=""></textarea>
24
  </tr>
25
  <tr>
26
  <td><strong>Email ID : </strong></td>
27
+ <td><input required type="email" name="mo_2FA_offer_email" placeholder="Email id" value="" /></td>
28
  </tr>
29
 
30
  </table>
31
+ <div style="padding-top: 10px;">
32
+ <input type="submit" name="submit" value="Submit Request" class="button button-primary button-large mo2f_offer_contact_us_button" />
33
  </div>
34
  </form>
35
  </div>
views/support.php CHANGED
@@ -1,62 +1,102 @@
1
  <?php
2
  global $mo2f_dirName;
 
3
 
4
  echo '
5
-
6
  <meta charset="UTF-8">
7
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
8
- <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css" integrity="sha384-UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/" crossorigin="anonymous">
9
- <div class="mo2f_table_layout_support">
10
- <img src="'.dirname(plugin_dir_url(__FILE__)).'/includes/images/support3.png">
11
- <h1>Contact Us</h1>
 
 
12
  <p>Need any help? We are available any time, Just send us a query so we can help you.</p>
13
- <span style="border:black solid 2px; padding:3px;border-radius:50%;cursor:pointer;" id="mo2f-show-feedback-form" class="dashicons dashicons-arrow-down-alt2" title="Click here for submit query"></span>
14
- <div class="mp2f-form-div">
15
- <form name="f" method="post" action="">
16
- <input type="hidden" name="option" value="mo_wpns_send_query"/>
17
- <table class="mo_wpns_settings_table">
18
- <tr><td>
19
- <input type="email" class="mo_wpns_table_textbox" id="query_email" name="query_email" value="'.$email.'" placeholder="Enter your email" required />
20
- </td>
21
- </tr>
22
- <tr><td>
23
- <input type="phone" class="mo_wpns_table_textbox" name="query_phone" id="query_phone" value="'.$phone.'" placeholder="Enter your phone"/>
24
- </td>
25
- </tr>
26
- <tr>
27
- <td>
28
- <textarea id="query" name="query" class="mo_wpns_settings_textarea" style="resize: vertical;width:100%" cols="52" rows="7" placeholder="Write your query here"></textarea>
29
- </td>
30
- </tr>
31
- </table>
32
- <div id="mo_2fa_plugin_configuration">
33
- <input type="hidden" name="mo_2fa_plugin_configuration" value="mo2f_send_plugin_configuration"/>
34
- <input type="checkbox" id="mo2f_send_configuration"
35
- name="mo2f_send_configuration"
36
- value="1" checked
37
- <h3>Send plugin Configuration</h3>
38
- <br /><br />
39
- </div>
40
- <input type="submit" name="send_query" id="send_query" value="Submit Query" class="button button-primary button-large mo2f_send_query"/>
41
- <br>
42
- <a href="https://wordpress.org/support/plugin/miniorange-2-factor-authentication/" target="_blank" class="mo2f_raise_support_ticket button button-primary button-large" value="Raise a Support Ticket on WordPress"><i style="margin-left: -8px;" class="fab fa-wordpress"></i> Raise a Support Ticket on WordPress</a>
43
-
44
- </form>
45
- </div>
46
- </div>
47
- ';?>
48
- <div class='mo2f_firebase_adv_container'>
49
- <div class="mo2f_firebase_adv_img">
50
- <div><img src="<?php echo dirname(plugin_dir_url(__FILE__)).'/includes/images/firebase.png' ?>" height="40px" width="40px"></div>
51
- <div style="margin-left:5px"><span class='mo2f_firebase_adv_text'><h1>Firebase</h1></span></div>
52
- </div>
53
- <div class="mo2f_firebase_adv_content">
54
- <b>Use Firebase as your custom SMS gateway with <a href="https://firebase.google.com/pricing"target="_blank">10K free transactions</a> to send One Time Passcodes (OTP) for 2 Factor Authentication</b>
55
- </div>
56
- <div >
57
- <a href="mailto:2fasupport@xecurify.com?subject = Feedback&body = Message" target="_blank" class="mo2f_firebase_adv_button">Contact us</a>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
  </div>
59
- <div>
60
  <script>
61
  function moSharingSizeValidate(e){
62
  var t=parseInt(e.value.trim());t>60?e.value=60:10>t&&(e.value=10)
@@ -76,16 +116,70 @@ echo '
76
  function moLoginHeightValidate(e){
77
  var t=parseInt(e.value.trim());t>50?e.value=50:35>t&&(e.value=35)
78
  }
79
- jQuery("#mo2f-show-feedback-form").click(function(){
80
- jQuery(".mp2f-form-div").slideToggle(
81
- function(){
82
- if(jQuery("#mo2f-show-feedback-form").hasClass('dashicons-arrow-up-alt2'))
83
- jQuery("#mo2f-show-feedback-form").addClass('dashicons-arrow-down-alt2').removeClass('dashicons-arrow-up-alt2');
84
- else
85
- jQuery("#mo2f-show-feedback-form").addClass('dashicons-arrow-up-alt2').removeClass('dashicons-arrow-down-alt2');
86
- }
87
- );
88
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89
 
 
90
 
91
  </script>
1
  <?php
2
  global $mo2f_dirName;
3
+ require_once $mo2f_dirName . DIRECTORY_SEPARATOR.'includes'. DIRECTORY_SEPARATOR.'lib'. DIRECTORY_SEPARATOR.'mo-2fa-options-enum.php';
4
 
5
  echo '
 
6
  <meta charset="UTF-8">
7
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
8
+ <div class="mo_wpns_divided_layout_2">
9
+
10
+ <div class="mo_wpns_support_layout" id="mo_wpns_support_layout_tour">
11
+
12
+ <img src="'.dirname(plugin_dir_url(__FILE__)).'/includes/images/support3.png">
13
+ <h1>Support</h1>
14
  <p>Need any help? We are available any time, Just send us a query so we can help you.</p>
15
+ <form name="f" method="post" action="">
16
+ <input type="hidden" name="option" value="mo_wpns_send_query"/>
17
+ <table class="mo_wpns_settings_table">
18
+ <tr><td>
19
+ <input type="email" class="mo_wpns_table_textbox" id="query_email" name="query_email" value="'.$email.'" placeholder="Enter your email" required />
20
+ </td>
21
+ </tr>
22
+ <tr><td>
23
+ <input type="text" class="mo_wpns_table_textbox" name="query_phone" id="query_phone" value="'.$phone.'" placeholder="Enter your phone"/>
24
+ </td>
25
+ </tr>
26
+ <tr>
27
+ <td>
28
+ <textarea id="query" name="query" class="mo_wpns_settings_textarea" style="resize: vertical;width:100%" cols="52" rows="7" onkeyup="mo_wpns_valid(this)" onblur="mo_wpns_valid(this)" onkeypress="mo_wpns_valid(this)" placeholder="Write your query here"></textarea>
29
+ </td>
30
+ </tr>
31
+ </table>
32
+ <br />
33
+
34
+ <div class="call-setup-div">
35
+ <h3 style="margin-top: 0px; margin-left: 5px;">Setup a Call / Screen-share session with miniOrange Technical Team</h3>
36
+
37
+
38
+ <label class="switch">
39
+ <input type="checkbox" id="2fa_setup_call" name="2fa_setup_call">
40
+ <span class="slider round"></span>
41
+ </label>
42
+ <span style="padding-left:5px; font-size: 15px;">
43
+ <b><label for="2fa_setup_call"></label>Enable this option to setup a call</b><br><br>
44
+ </span>
45
+
46
+
47
+ <div id="call_setup_dets" style="margin-left: 5px; margin-top: 5px;">
48
+ <div>
49
+ <div style="width: 26%; float:left;"><strong>TimeZone<font color="#FF0000">*&nbsp</font>&nbsp; : &nbsp;</strong> </div>
50
+
51
+ <div style="width: 74% !important; float: left">
52
+ <select id="js-timezone" name="mo_2fa_setup_call_timezone" style="width:93%;">';
53
+ $zones = mo_2fa_time_zones::$time_zones;
54
+ echo ' <option value="" selected disabled>-------Select your timezone------</option>';
55
+ foreach($zones as $zone=>$value) {
56
+ echo '<option value="'.$value.'">'. $zone.' </option>';
57
+ }
58
+ echo '
59
+ </select>
60
+ </div>
61
+ </div>
62
+ <br><br><br>
63
+ <div style="width: 50%; float: left; position: relative;">
64
+ <strong> Date<font color="#FF0000">*</font>:</strong><br>
65
+ <input style="width: 90% !important;" type="text" id="datepicker" class="mo_2fa_table_textbox" placeholder="Select Meeting Date" autocomplete="off" name="mo_2fa_setup_call_date">
66
+ </div>
67
+ <div style="width: 50%; float: left; position: relative;">
68
+ <strong> Time (24-hour)<font color="#FF0000">*</font>:</strong><br>
69
+ <input style="width: 90% !important;" type="text" id="timepicker" placeholder="Select Meeting Time" class="mo_2fa_table_textbox" autocomplete="off" name="mo_2fa_setup_call_time">
70
+ </div>
71
+ <br><br><br>
72
+ <div>
73
+ <p style="margin-right: 20px; margin-bottom: 10px; margin-top: 15px; margin-left: 5px;">
74
+ <b><font color="#dc143c">Call and Meeting details will be sent to your email. Please verify the email before submitting your query. Check the spam folder for any email.</font></b>
75
+ </p>
76
+ </div>
77
+ </div>
78
+ </div>
79
+ <div id="mo_2fa_plugin_configuration">
80
+ <input type="hidden" name="mo_2fa_plugin_configuration" value="mo2f_send_plugin_configuration"/>
81
+ <input type="checkbox" id="mo2f_send_configuration"
82
+ name="mo2f_send_configuration"
83
+ value="1" checked
84
+ <h3>Send plugin Configuration</h3>
85
+ <br /><br />
86
+ </div>
87
+ <input type="submit" name="send_query" id="send_query" value="Submit Query" style="margin-bottom:3%;" class="button button-primary button-large" />
88
+ </form>
89
+ <br><br>
90
+ <hr style="border-top: 2px solid lightseagreen;">
91
+ <h3>Overview of Premium Features</h3>
92
+ <hr style="border-top: 2px solid lightseagreen;">
93
+ <p><iframe width="100%" src="https://www.youtube.com/embed/9H520HY3CxY" allowfullscreen="true">
94
+ </iframe></p>
95
+ <p>
96
+
97
+ <br />
98
  </div>
99
+ </div>';?>
100
  <script>
101
  function moSharingSizeValidate(e){
102
  var t=parseInt(e.value.trim());t>60?e.value=60:10>t&&(e.value=10)
116
  function moLoginHeightValidate(e){
117
  var t=parseInt(e.value.trim());t>50?e.value=50:35>t&&(e.value=35)
118
  }
119
+ var min_time = "00:00";
120
+
121
+ jQuery( function() {
122
+
123
+ jQuery("#call_setup_dets").hide();
124
+ jQuery("#2fa_setup_call").click(function() {
125
+ if(jQuery(this).is(":checked")) {
126
+ jQuery("#call_setup_dets").show();
127
+ document.getElementById("js-timezone").required = true;
128
+ document.getElementById("datepicker").required = true;
129
+ document.getElementById("timepicker").required = true;
130
+ document.getElementById("query").required = false;
131
+
132
+ var date = new Date();
133
+ var hrs = date.getHours();
134
+ var mins = date.getMinutes();
135
+ if(hrs == 23 && mins > 30){
136
+ jQuery("#datepicker").datepicker("option", "minDate", 1);
137
+ jQuery("#datepicker").datepicker("setDate", +1);
138
+ jQuery("#timepicker").timepicker("option", "minTime", "00:00");
139
+ } else{
140
+ jQuery("#datepicker").datepicker("option", "minDate", 0);
141
+ jQuery("#datepicker").datepicker("setDate", new Date());
142
+ }
143
+ } else {
144
+ jQuery("#call_setup_dets").hide();
145
+ document.getElementById("timepicker").required = false;
146
+ document.getElementById("datepicker").required = false;
147
+ document.getElementById("js-timezone").required = false;
148
+ document.getElementById("query").required = true;
149
+ }
150
+ });
151
+
152
+ jQuery( "#datepicker" ).datepicker({
153
+ minDate: 0,
154
+ dateFormat: "M dd, yy"
155
+ });
156
+
157
+
158
+ jQuery("#datepicker").datepicker().on("change", function (ev) {
159
+ var sel_date = jQuery(this).val();
160
+ var selected_date = new Date(sel_date);
161
+ var today_date = new Date();
162
+
163
+ if( (selected_date.getDate() == today_date.getDate()) && (selected_date.getMonth() == today_date.getMonth()) ){
164
+ jQuery("#timepicker").timepicker("option", "minTime", new Date());
165
+ }
166
+ else{
167
+ jQuery("#timepicker").timepicker("option", "minTime", "00:00");
168
+ }
169
+ });
170
+
171
+ jQuery("#timepicker").timepicker({
172
+ timeFormat: "HH:mm",
173
+ interval: 30,
174
+ minTime: new Date(),
175
+ disableTextInput: true,
176
+ dynamic: false,
177
+ dropdown: true,
178
+ scrollbar: true,
179
+ forceRoundTime: true
180
+ });
181
+ });
182
 
183
+ jQuery(function() { jQuery("#js-timezone").select2(); });
184
 
185
  </script>
views/tour-model.php DELETED
@@ -1,197 +0,0 @@
1
- <!-- The Modal -->
2
- <form name="f" method="post" id="show_pointers">
3
- <?php wp_nonce_field("clear_pointers");?>
4
- <input type="hidden" name="option" value="clear_pointers"/>
5
- <input type="hidden" name="button_name" id="button_name" />
6
- </form>
7
-
8
- <form name="f" method="post" id="restart-plugin-tour">
9
- <?php wp_nonce_field("restart_plugin_tour");?>
10
- <input type="hidden" name="option" value="restart_plugin_tour"/>
11
- <input type="hidden" name="page" value="mo_2fa_two_fa" id="page">
12
- </form>
13
-
14
- <form name="f" method="post" id="skip-plugin-tour">
15
- <?php wp_nonce_field("skip_plugin_tour");?>
16
- <input type="hidden" name="option" value="skip_plugin_tour"/>
17
- </form>
18
- <?php
19
- $tour_box_size = MoWpnsUtility::get_mo2f_db_option('mo_wpns_2fa_with_network_security', 'get_option');
20
- $tour_box_size = $tour_box_size == 1 ? '70%' : '50%';
21
- ?>
22
- <div id="getting-started" class="modal">
23
- <!-- Modal content -->
24
- <div class="modal-content" style="width: <?php echo $tour_box_size; ?>">
25
- <!-- <span class="close">&times;</span> -->
26
- <div class="modal-header">
27
- <h3 class="modal-title" style="text-align: center; font-size: 30px; color: #2980b9">Let's Get Started</h3><span id="tour-model" class="modal-span-close">X</span>
28
- </div>
29
- <div class="modal-body" style="height: 310px;">
30
- <?php
31
- echo $tour_body;
32
- ?>
33
- </div>
34
- <div class="modal-footer">
35
- <button type="button" class="mo_wpns_button mo_wpns_button1 modal-button modalhover" id="skip-plugin-tour" style="width: 40%;color: #111111; background: none;text-decoration: underline;font-weight: bold;border: 2px solid black;" onclick="skip_plugin_tour()" >Skip tour</button>
36
- <button type="button" class="mo_wpns_button mo_wpns_button1 modal-button logout" id="start-plugin-tour" style= "width: 40%;background-color:#2EB150;">Start tour</button>
37
-
38
- </div>
39
- </div>
40
- </div>
41
- <div class='overlay' id="overlay" hidden></div>
42
- <script type="text/javascript">
43
- var current_pointer = 0;
44
- var site_type = '';
45
- var site_elmt = '';
46
- var display = '<?php echo $display; ?>';
47
- var getting_started_modal = document.getElementById("getting-started");
48
-
49
- jQuery('#getting-started').css('display', display);
50
-
51
- jQuery('#start-plugin-tour').html('Start a tour');
52
- jQuery('.modal-footer a').css('display', 'inline-block');
53
-
54
- jQuery('#2fa').css("border", "5px solid #2271b1");
55
-
56
- jQuery('input[type=radio][name=mo2f_two_factor]').click(function(){
57
- var ele = document.getElementsByName("mo2f_two_factor");
58
- var selected = '';
59
-
60
- for(i = 0; i < ele.length; i++) {
61
- if(ele[i].checked)
62
- {
63
- selected = ele[i].value;
64
- }
65
- }
66
-
67
- jQuery('#2fa').css("border", "1px solid black");
68
- jQuery('#waf').css("border", "1px solid black");
69
- jQuery('#malware').css("border", "1px solid black");
70
- jQuery('#backup').css("border", "1px solid black");
71
- jQuery('#login').css("border", "1px solid black");
72
-
73
- jQuery('#'+selected).css("border", "5px solid #2271b1");
74
-
75
- });
76
-
77
- jQuery('#start-plugin-tour').click(function(){
78
-
79
- var ele = document.getElementsByName("mo2f_two_factor");
80
- var selected = '';
81
-
82
- for(i = 0; i < ele.length; i++) {
83
- if(ele[i].checked)
84
- {
85
- selected = ele[i].value;
86
- }
87
- }
88
-
89
-
90
- var pageurl = '';
91
- switch(selected){
92
- case '2fa':
93
- pageurl = 'mo_2fa_two_fa';
94
- break;
95
- case 'waf':
96
- pageurl = 'mo_2fa_waf';
97
- break;
98
- case 'malware':
99
- pageurl = 'mo_2fa_malwarescan';
100
- break;
101
- case 'login':
102
- pageurl = 'mo_2fa_login_and_spam';
103
- break;
104
- case 'backup':
105
- pageurl = 'mo_2fa_backup';
106
- break;
107
-
108
- }
109
- document.getElementById('page').value = pageurl;
110
- var data = {
111
- 'action' : 'mo_wpns_tour',
112
- 'call_type' : 'entire_plugin_tour_started',
113
- };
114
- jQuery.post(ajaxurl, data, function(response) {
115
- getting_started_modal.style.display = "none";
116
- });
117
-
118
- var url = '<?php echo $_REQUEST["page"]; ?>';
119
- switch(url){
120
- case 'mo_2fa_two_fa':
121
- document.getElementById("setup_2fa").click();
122
- break;
123
-
124
- case 'mo_2fa_waf':
125
- document.getElementById("settingsTab").click();
126
- break;
127
-
128
- case 'mo_2fa_login_and_spam':
129
- document.getElementById("login_sec").click();
130
- break;
131
-
132
- case 'mo_2fa_malwarescan':
133
- document.getElementById("mo2f_malware_view").click();
134
- break;
135
-
136
- case 'mo_2fa_backup':
137
- document.getElementById("backup_set").click();
138
- break;
139
- }
140
- jQuery('#restart-plugin-tour').submit();
141
-
142
- });
143
- function skip_plugin_tour(){
144
-
145
- var data = {
146
- 'action' : 'mo_wpns_tour',
147
- 'call_type' : 'skip_entire_plugin_tour',
148
- };
149
- jQuery.post(ajaxurl, data, function(response) {
150
- getting_started_modal.style.display = "none";
151
- });
152
- }
153
-
154
-
155
-
156
-
157
- jQuery('#restart-tour').click(function(){
158
- var data={
159
- 'action': 'mo_wpns_tour',
160
- 'call_type': 'wpns_enable_tour'
161
- };
162
- jQuery.post(ajaxurl, data, function(response){
163
-
164
- current_pointer = 0;
165
- jQuery('#start-plugin-tour').html('Start tour');
166
- jQuery('.modal-footer a').css('display', 'inline-block');
167
- jQuery('#getting-started').css('display', 'block');
168
- });
169
- });
170
-
171
- jQuery('.modal-footer a').click(function(){
172
- close_modal();
173
- });
174
- jQuery('#tour-model').click(function(){
175
- close_modal();
176
- });
177
- function close_modal(){
178
- var data = {
179
- 'action' : 'mo_wpns_tour',
180
- 'call_type' : 'skip_entire_plugin_tour',
181
- };
182
- jQuery.post(ajaxurl, data, function(response) {
183
- getting_started_modal.style.display = "none";
184
- });
185
- }
186
-
187
- function open_hide(gettag){
188
- if(gettag.text == '+'){
189
- gettag.text='-';
190
- jQuery('#div-'+gettag.id).css({'overflow': '', 'height': ''});
191
- } else {
192
- gettag.text='+';
193
- jQuery('#div-'+gettag.id).css({'overflow': 'hidden', 'height': '50px'});
194
- }
195
- }
196
-
197
- </script>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
views/trial.php DELETED
@@ -1,56 +0,0 @@
1
- <?php
2
- ?>
3
- <div class="mo_wpns_divided_layout mo2f_trial_box">
4
- <div class="mo_wpns_setting_layout" style="width: 110% !important;">
5
- <h3> Trial Request Form : <div style="float: right;">
6
- <?php
7
- echo '<a class="mo_wpns_button mo_wpns_button1 mo2f_offer_contact_us_button" href="'.$two_fa.'">Back</a>';
8
- ?>
9
- </div></h3>
10
- <form method="post">
11
- <input type="hidden" name="option" value="mo2f_trial_request_form" />
12
- <input type="hidden" name="nonce" value="<?php echo wp_create_nonce('mo2f_trial-nonce')?>">
13
- <table cellpadding="4" cellspacing="4">
14
- <tr>
15
- <td><strong>Email ID : </strong></td>
16
- <td><input required type="email" name="mo2f_trial_email" style="width: 100%;" value="<?php echo get_option('mo2f_email');?>" placeholder="Email id" /></td>
17
- </tr>
18
- <tr>
19
- <td><strong>Phone No. : </strong></td>
20
- <td><input required type="tel" name="mo2f_trial_phone" style="width: 100%;" id= "mo2f_phone" value="<?php echo $user_phone; ?>" /></td>
21
- </tr>
22
- <tr>
23
- <td valign=top ><strong>Request a Trial for : </strong></td>
24
- <td>
25
- <p style = "margin-top:0px">
26
- <input type= 'radio' name= 'mo2f_trial_plan' value="All Inclusive" required >All Inclusive (Unlimited Users + Advanced Features)<br>
27
- </p>
28
- <p><input type= 'radio' name= 'mo2f_trial_plan' value="Enterprise" required >Enterprise(Unlimited sites)<br></p>
29
- <p><input type= 'radio' name= 'mo2f_trial_plan' value="notSure" required >I am confused!!<br></p>
30
- <a href="<?php echo $upgrade_url; ?>" target="_blank">Checkout our Plans</a>
31
-
32
- </td>
33
- </tr>
34
- </table>
35
- <div style="padding-top: 10px;">
36
- <p ><b><i>NOTE: You will receive an email with your trial license key that allows you to use the premium plugin for 7 days. If you choose to purchase the plugin, you can use the license key you receive to convert the trial version into the fully functional version.
37
- You will not need to reinstall the plugin after you purchase a license.</i></b></p>
38
- <input type="submit" name="submit" value="Submit Trial Request" class="mo2f_trial_submit_button"/>
39
-
40
- </div>
41
- </form>
42
- </div>
43
- </div>
44
- <script>
45
- jQuery("#mo2f_phone").intlTelInput();
46
-
47
- jQuery(document).ready(function(){
48
- var mo2f_trial_query_sent = "<?php echo get_site_option('mo2f_trial_query_sent') ?>"
49
- if(mo2f_trial_query_sent == 1){
50
- jQuery(':input[type="submit"]').prop('disabled', true);
51
- jQuery(':input[type="submit"]').attr('title','You have already sent a trial request for premium plugin. We will get back to you on your email soon.' );
52
- jQuery(':input[type="submit"]').css('color', 'white');
53
- jQuery(':input[type="submit"]').css('box-shadow', 'none');
54
- }
55
- });
56
- </script>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
views/twofa/setup/setup_duo_authenticator.php CHANGED
@@ -379,15 +379,13 @@ function mo2f_inline_download_instruction_for_duo_mobile_app($mobile_registratio
379
  function mo2f_save_duo_configuration_credentials(){
380
 
381
  ?>
382
- <h3><?php echo mo2f_lt( 'Please enter required details' ); ?>
383
  </h3>
384
  <p style = "font-size: 17px;">
385
  <?php echo mo2f_lt( '1. If you do not have an account in duo, please'); ?> <a href="https://signup.duo.com/" target="_blank">Click Here </a><?php echo mo2f_lt( 'to create an account.'); ?>
386
-
387
  </p>
388
  <p style = "font-size: 17px;">
389
  <?php echo mo2f_lt( '2. Follow these steps( ') ?> <a href=" https://duo.com/docs/authapi#first-steps" target="_blank">Click Here </a> <?php echo mo2f_lt( ') to create AUTH API application on duo side. After creating auth API, you will get the all credentials which you need to enter below.'); ?>
390
-
391
  </p>
392
  <br>
393
  <div>
379
  function mo2f_save_duo_configuration_credentials(){
380
 
381
  ?>
382
+ <h3><?php echo mo2f_lt( 'Please enter required Details' ); ?>
383
  </h3>
384
  <p style = "font-size: 17px;">
385
  <?php echo mo2f_lt( '1. If you do not have an account in duo, please'); ?> <a href="https://signup.duo.com/" target="_blank">Click Here </a><?php echo mo2f_lt( 'to create an account.'); ?>
 
386
  </p>
387
  <p style = "font-size: 17px;">
388
  <?php echo mo2f_lt( '2. Follow these steps( ') ?> <a href=" https://duo.com/docs/authapi#first-steps" target="_blank">Click Here </a> <?php echo mo2f_lt( ') to create AUTH API application on duo side. After creating auth API, you will get the all credentials which you need to enter below.'); ?>
 
389
  </p>
390
  <br>
391
  <div>
views/twofa/setup/setup_google_authenticator.php CHANGED
@@ -8,12 +8,11 @@ function mo2f_configure_google_authenticator( $user ) {
8
  $gauth_name= get_option('mo2f_google_appname');
9
  $gauth_name = $gauth_name ? $gauth_name : 'miniOrangeAu';
10
  ?>
11
-
12
  <table>
13
  <tr>
14
  <td class="mo2f_google_authy_step2">
15
  <?php echo '<' . $h_size . '>' . mo2f_lt( 'Step-1: Set up Google/Authy/LastPass Authenticator' ) . '<span style="float:right">
16
- <a href="https://developers.miniorange.com/docs/security/wordpress/wp-security/google-authenticator" target="_blank"><span class="dashicons dashicons-text-page" style="font-size:26px;color:#413c69;float: right;"></span></a>
17
 
18
  <a href="https://www.youtube.com/watch?v=vVGXjedIaGs" target="_blank"><span class="dashicons dashicons-video-alt3" style="font-size:30px;color:red;float: right; margin-right: 16px;margin-top: -3px;"></span></a>
19
  </span></' . $h_size . '>'; ?>
8
  $gauth_name= get_option('mo2f_google_appname');
9
  $gauth_name = $gauth_name ? $gauth_name : 'miniOrangeAu';
10
  ?>
 
11
  <table>
12
  <tr>
13
  <td class="mo2f_google_authy_step2">
14
  <?php echo '<' . $h_size . '>' . mo2f_lt( 'Step-1: Set up Google/Authy/LastPass Authenticator' ) . '<span style="float:right">
15
+ <a href="https://developers.miniorange.com/docs/security/wordpress/wp-security/google-authenticator" target="_blank"><span class="dashicons dashicons-text-page" style="font-size:26px;color:#269eb3;float: right;"></span></a>
16
 
17
  <a href="https://www.youtube.com/watch?v=vVGXjedIaGs" target="_blank"><span class="dashicons dashicons-video-alt3" style="font-size:30px;color:red;float: right; margin-right: 16px;margin-top: -3px;"></span></a>
18
  </span></' . $h_size . '>'; ?>
views/twofa/setup/setup_google_authenticator_onpremise.php CHANGED
@@ -1,106 +1,5 @@
1
  <?php
2
 
3
- function mo2f_configure_google_authenticator_setupWizard($secret,$url,$otpcode, $session_id_encrypt)
4
- {
5
- $gauth_name = $_SERVER['SERVER_NAME'];
6
- echo "<b><h3>1. Please scan the QR code below in your Authenticator App</h3></b>
7
- <table>
8
- <tbody>
9
- <tr><td><li>Google Authenticator</li> </td>
10
- <td> <li>Microsoft Authenticator</li> </td></tr>
11
- <tr><td colspan='2'> <li> Authy Authenticator and other popular TOTP Authenticators</li></td></tr>
12
-
13
-
14
- </tbody>
15
- </table>
16
- ";
17
- ?>
18
- <div style="margin-left:40px;">
19
- <ol>
20
- <li><?php echo mo2f_lt( 'In the app, tap on Menu and select "Set up account".' ); ?></li>
21
- <li><?php echo mo2f_lt( 'Select "Scan a barcode".' ); ?></li>
22
- <br><br>
23
- <form name="f" id="login_settings_appname_form" method="post" action="">
24
- <input type="hidden" name="option" value="mo2f_google_appname" />
25
- <input type="hidden" name="mo2f_google_appname_nonce"
26
- value="<?php echo wp_create_nonce( "mo2f-google-appname-nonce" ) ?>"/>
27
- <div style="margin-left: 14%;">
28
- <div class="mo2f_gauth_column mo2f_gauth_left" >
29
-
30
- <div class="mo2f_gauth" style="background: white;" data-qrcode="<?php echo $url;?>" ></div>
31
- </div>
32
- </div>
33
-
34
-
35
- </form>
36
-
37
- </ol>
38
-
39
- <div><a data-toggle="collapse" href="#mo2f_scanbarcode_a"
40
- aria-expanded="false"><b><?php echo mo2f_lt( 'Can\'t scan the barcode? ' ); ?></b></a>
41
- </div>
42
- <div class="mo2f_collapse" id="mo2f_scanbarcode_a" style="background: white; display: none;">
43
- <ol class="mo2f_ol">
44
- <li><?php echo mo2f_lt( 'Tap on Menu and select' ); ?>
45
- <b> <?php echo mo2f_lt( ' Set up account ' ); ?></b>.
46
- </li>
47
- <li><?php echo mo2f_lt( 'Select' ); ?>
48
- <b> <?php echo mo2f_lt( ' Enter provided key ' ); ?></b>.
49
- </li>
50
- <li><?php echo mo2f_lt( 'For the' ); ?>
51
- <b> <?php echo mo2f_lt( ' Enter account name ' ); ?></b>
52
- <?php echo mo2f_lt( 'field, type your preferred account name' ); ?>.
53
- </li>
54
- <li><?php echo mo2f_lt( 'For the' ); ?>
55
- <b> <?php echo mo2f_lt( ' Enter your key ' ); ?></b>
56
- <?php echo mo2f_lt( 'field, type the below secret key' ); ?>:
57
- </li>
58
-
59
- <div class="mo2f_google_authy_secret_outer_div">
60
- <div class="mo2f_google_authy_secret_inner_div">
61
- <?php echo $secret; ?>
62
- </div>
63
- <div class="mo2f_google_authy_secret">
64
- <?php echo mo2f_lt( 'Spaces do not matter' ); ?>.
65
- </div>
66
- </div>
67
- <li><?php echo mo2f_lt( 'Key type: make sure' ); ?>
68
- <b> <?php echo mo2f_lt( ' Time-based ' ); ?></b>
69
- <?php echo mo2f_lt( ' is selected' ); ?>.
70
- </li>
71
-
72
- <li><?php echo mo2f_lt( 'Tap Add.' ); ?></li>
73
- </ol>
74
- </div>
75
- </div>
76
-
77
- <div id="mo2f_entergoogle_auth_code">
78
-
79
- <b><h3>2. Enter the code generated in your Authenticator app <input style="padding: 5px" class ='mo_input_text_box_size' type="text" id="mo2f_google_auth_code" name="mo2f_google_auth_code" placeholder="Enter OTP" /> </h3></b>
80
- <input type="hidden" name="mo2f_session_id" id="mo2f_session_id" value="<?php echo $session_id_encrypt ?>">
81
-
82
- </div>
83
- <script type="text/javascript">
84
- jQuery('a[href="#mo2f_scanbarcode_a"]').click(function(e){
85
-
86
- var element = document.getElementById('mo2f_scanbarcode_a');
87
- if(element.style.display === 'none')
88
- element.style.display = 'block';
89
-
90
- else
91
- element.style.display = "none";
92
- });
93
- jQuery(document).ready(function() {
94
- jQuery('.mo2f_gauth').qrcode({
95
- 'render': 'image',
96
- size: 175,
97
- 'text': jQuery('.mo2f_gauth').data('qrcode')
98
- });
99
- });
100
-
101
- </script>
102
- <?php
103
- }
104
  function mo2f_configure_google_authenticator_onprem( $secret,$url,$otpcode, $session_id_encrypt ) {
105
  $h_size = 'h3';
106
  $gauth_name= get_option('mo2f_google_appname');
@@ -111,7 +10,7 @@ function mo2f_configure_google_authenticator_onprem( $secret,$url,$otpcode, $ses
111
  <tr>
112
  <td class="mo2f_google_authy_step2">
113
  <?php echo '<' . $h_size . '>' . mo2f_lt( 'Step-1: Set up Google/Authy/LastPass Authenticator' ) . '<span style="float:right">
114
- <a href="https://developers.miniorange.com/docs/security/wordpress/wp-security/google-authenticator" target="_blank"><span class="dashicons dashicons-text-page" style="font-size:26px;color:#413c69;float: right;"></span></a>
115
 
116
  <a href="https://www.youtube.com/watch?v=vVGXjedIaGs" target="_blank"><span class="dashicons dashicons-video-alt3" style="font-size:30px;color:red;float: right; margin-right: 16px;margin-top: -3px;"></span></a>
117
  </span></' . $h_size . '>'; ?>
@@ -226,7 +125,7 @@ function mo2f_configure_google_authenticator_onprem( $secret,$url,$otpcode, $ses
226
  <form name="f" method="post" action="" id="mo2f_go_back_form">
227
  <input type="hidden" name="option" value="mo2f_go_back"/>
228
  <input style="margin-left: 5px;" type="submit" name="back" id="go_back" class="button button-primary button-large"
229
- value="<?php echo mo2f_lt( 'Back' ); ?>"/>
230
  <input type="hidden" name="mo2f_go_back_nonce"
231
  value="<?php echo wp_create_nonce( "mo2f-go-back-nonce" ) ?>"/>
232
  </form>
1
  <?php
2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  function mo2f_configure_google_authenticator_onprem( $secret,$url,$otpcode, $session_id_encrypt ) {
4
  $h_size = 'h3';
5
  $gauth_name= get_option('mo2f_google_appname');
10
  <tr>
11
  <td class="mo2f_google_authy_step2">
12
  <?php echo '<' . $h_size . '>' . mo2f_lt( 'Step-1: Set up Google/Authy/LastPass Authenticator' ) . '<span style="float:right">
13
+ <a href="https://developers.miniorange.com/docs/security/wordpress/wp-security/google-authenticator" target="_blank"><span class="dashicons dashicons-text-page" style="font-size:26px;color:#269eb3;float: right;"></span></a>
14
 
15
  <a href="https://www.youtube.com/watch?v=vVGXjedIaGs" target="_blank"><span class="dashicons dashicons-video-alt3" style="font-size:30px;color:red;float: right; margin-right: 16px;margin-top: -3px;"></span></a>
16
  </span></' . $h_size . '>'; ?>
125
  <form name="f" method="post" action="" id="mo2f_go_back_form">
126
  <input type="hidden" name="option" value="mo2f_go_back"/>
127
  <input style="margin-left: 5px;" type="submit" name="back" id="go_back" class="button button-primary button-large"
128
+ value="<?php echo mo2f_lt( 'Back' ); ?>"/>
129
  <input type="hidden" name="mo2f_go_back_nonce"
130
  value="<?php echo wp_create_nonce( "mo2f-go-back-nonce" ) ?>"/>
131
  </form>
views/twofa/setup/setup_kba_questions.php CHANGED
@@ -5,20 +5,18 @@ function mo2f_configure_kba_questions() { ?>
5
 
6
  <div class="mo2f_kba_header"><?php echo mo2f_lt( 'Please choose 3 questions' ); ?></div>
7
  <br>
8
- <table id="mo2f_configure_kba" cellspacing="10">
9
- <thead>
10
  <tr class="mo2f_kba_header">
11
- <th>
12
- <?php echo mo2f_lt( 'Sr. No.' ); ?>
13
- </th>
14
- <th class="mo2f_kba_tb_data">
15
- <?php echo mo2f_lt( 'Questions' ); ?>
16
- </th>
17
- <th>
18
- <?php echo mo2f_lt( 'Answers' ); ?>
19
- </th>
20
  </tr>
21
- </thead>
22
  <tr class="mo2f_kba_body">
23
  <td>
24
  <center>1.</center>
5
 
6
  <div class="mo2f_kba_header"><?php echo mo2f_lt( 'Please choose 3 questions' ); ?></div>
7
  <br>
8
+ <table cellspacing="10">
 
9
  <tr class="mo2f_kba_header">
10
+ <td>
11
+ <?php echo mo2f_lt( 'Sr. No.' ); ?>
12
+ </td>
13
+ <td class="mo2f_kba_tb_data">
14
+ <?php echo mo2f_lt( 'Questions' ); ?>
15
+ </td>
16
+ <td>
17
+ <?php echo mo2f_lt( 'Answers' ); ?>
18
+ </td>
19
  </tr>
 
20
  <tr class="mo2f_kba_body">
21
  <td>
22
  <center>1.</center>
views/twofa/setup/setup_miniorange_authenticator.php CHANGED
@@ -281,4 +281,4 @@ function initialize_mobile_registration($user,$session_id_encrypt = null) {
281
  }, 800);
282
  </script>
283
  <?php
284
- } ?>
281
  }, 800);
282
  </script>
283
  <?php
284
+ } ?>
views/twofa/setup_twofa.php CHANGED
@@ -156,8 +156,6 @@
156
  $free_plan_existing_user = $methods_of_users['existing_user'];
157
  $free_plan_new_user = $methods_of_users['new_user'];
158
  }
159
- update_site_option('mo2fa_free_plan_new_user_methods',$free_plan_new_user);
160
- update_site_option('mo2fa_free_plan_existing_user_methods',$free_plan_existing_user);
161
 
162
  $free_plan_methods_existing_user = array_chunk( $free_plan_existing_user, 3 );
163
  $free_plan_methods_new_user = array_chunk( $free_plan_new_user, 3 );
@@ -181,24 +179,16 @@
181
  }
182
  ?>
183
 
184
-
185
- <div class="mo2f_table_layout_method">
186
-
187
  <div class="test_auth_button">
188
- <?php
189
-
190
- if($mo2f_two_fa_method != '' and (!get_user_meta( $user->ID, 'mo_backup_code_generated', true) and !get_user_meta( $user->ID, 'mo_backup_code_downloaded', true))){
191
- ?>
192
- <button class="btn btn-primary btn-large" id="mo_2f_generate_codes">Download backup codes
193
- </button>
194
- <?php
195
- }
196
- ?>
197
  <button class="btn btn-primary btn-large " id="test" onclick="testAuthenticationMethod('<?php echo $selectedMethod; ?>');"
198
  <?php echo $is_customer_registered && ( $selectedMethod != 'NONE' ) ? "" : " disabled "; ?>>Test - <?php echo $selectedMethod; ?>
199
  </button>
200
  </div>
201
 
 
202
  <div>
203
  <a class="mo2f_view_free_plan_auth_methods" onclick="show_free_plan_auth_methods()">
204
  <img src="<?php echo plugins_url( 'includes/images/right-arrow.png"', dirname(dirname(__FILE__ ))); ?>"
@@ -208,6 +198,16 @@
208
  <span style="color:limegreen">( <?php echo mo2f_lt( 'Current Plan' ); ?> )</span>
209
  <?php } ?>
210
 
 
 
 
 
 
 
 
 
 
 
211
 
212
  </p>
213
  </a>
@@ -229,8 +229,9 @@
229
  echo mo2f_create_2fa_form( $user, "free_plan", $is_NC ? $free_plan_methods_new_user : $free_plan_methods_existing_user, $can_display_admin_features ); ?>
230
  </div>
231
 
 
232
  <?php if ( $can_display_admin_features ) { ?>
233
- <div >
234
  <span id="mo2f_premium_plan"> <a class="mo2f_view_premium_plan_auth_methods" onclick="show_premium_auth_methods()">
235
  <img src="<?php echo plugins_url( 'includes/images/right-arrow.png"', dirname(dirname(__FILE__))); ?>"
236
  class="mo2f_2factor_heading_images"/>
@@ -239,6 +240,7 @@
239
  <?php echo mo2f_create_2fa_form( $user, "premium_plan", $is_NC ? $premium_plan_methods_new_user : $premium_plan_methods_existing_user ); ?>
240
 
241
  </div>
 
242
  <br>
243
  <?php } ?>
244
  <form name="f" method="post" action="" id="mo2f_2factor_test_authentication_method_form">
@@ -261,13 +263,13 @@
261
  </form>
262
 
263
 
264
-
265
  <div id="EnterEmailCloudVerification" class="modal">
266
  <!-- Modal content -->
267
  <div class="modal-content">
268
  <!-- <span class="close">&times;</span> -->
269
  <div class="modal-header">
270
- <h3 class="modal-title" style="text-align: center; font-size: 20px; color: #2271b1">Email Address for miniOrange</h3><span id="closeEnterEmailCloud" class="modal-span-close">X</span>
271
  </div>
272
  <div class="modal-body" style="height: auto">
273
  <h2 style="color: red;">The email associated with your account is already registered in miniOrange. Please Choose another email.</h2>
@@ -283,7 +285,7 @@
283
  <div class="modal-content">
284
  <!-- <span class="close">&times;</span> -->
285
  <div class="modal-header">
286
- <h3 class="modal-title" style="text-align: center; font-size: 20px; color: #2271b1">Email Address for OTP</h3><span id="closeEnterEmail" class="modal-span-close">X</span>
287
  </div>
288
  <div class="modal-body" style="height: auto">
289
  <h2><i>Enter your Email:&nbsp;&nbsp;&nbsp; <input type ='email' id='emailEntered' name='emailEntered' size= '40' required value="<?php echo $email;?>"/></i></h2>
156
  $free_plan_existing_user = $methods_of_users['existing_user'];
157
  $free_plan_new_user = $methods_of_users['new_user'];
158
  }
 
 
159
 
160
  $free_plan_methods_existing_user = array_chunk( $free_plan_existing_user, 3 );
161
  $free_plan_methods_new_user = array_chunk( $free_plan_new_user, 3 );
179
  }
180
  ?>
181
 
182
+ <div>
183
+ <div>
 
184
  <div class="test_auth_button">
185
+ <br>
 
 
 
 
 
 
 
 
186
  <button class="btn btn-primary btn-large " id="test" onclick="testAuthenticationMethod('<?php echo $selectedMethod; ?>');"
187
  <?php echo $is_customer_registered && ( $selectedMethod != 'NONE' ) ? "" : " disabled "; ?>>Test - <?php echo $selectedMethod; ?>
188
  </button>
189
  </div>
190
 
191
+
192
  <div>
193
  <a class="mo2f_view_free_plan_auth_methods" onclick="show_free_plan_auth_methods()">
194
  <img src="<?php echo plugins_url( 'includes/images/right-arrow.png"', dirname(dirname(__FILE__ ))); ?>"
198
  <span style="color:limegreen">( <?php echo mo2f_lt( 'Current Plan' ); ?> )</span>
199
  <?php } ?>
200
 
201
+
202
+ <?php
203
+ if((!get_user_meta($user->ID, 'mo_backup_code_generated', true) || ($backup_codes_remaining == 5 && !get_user_meta($user->ID, 'mo_backup_code_downloaded', true))) && $mo2f_two_fa_method != ''){
204
+ ?>
205
+ <button class="btn btn-primary btn-large" id="mo_2f_generate_codes" style="float:right; margin-right: 3%; height: 36px;">Download backup codes
206
+ </button>
207
+ <?php
208
+ }
209
+ ?>
210
+
211
 
212
  </p>
213
  </a>
229
  echo mo2f_create_2fa_form( $user, "free_plan", $is_NC ? $free_plan_methods_new_user : $free_plan_methods_existing_user, $can_display_admin_features ); ?>
230
  </div>
231
 
232
+ <hr>
233
  <?php if ( $can_display_admin_features ) { ?>
234
+ <div>
235
  <span id="mo2f_premium_plan"> <a class="mo2f_view_premium_plan_auth_methods" onclick="show_premium_auth_methods()">
236
  <img src="<?php echo plugins_url( 'includes/images/right-arrow.png"', dirname(dirname(__FILE__))); ?>"
237
  class="mo2f_2factor_heading_images"/>
240
  <?php echo mo2f_create_2fa_form( $user, "premium_plan", $is_NC ? $premium_plan_methods_new_user : $premium_plan_methods_existing_user ); ?>
241
 
242
  </div>
243
+ <hr>
244
  <br>
245
  <?php } ?>
246
  <form name="f" method="post" action="" id="mo2f_2factor_test_authentication_method_form">
263
  </form>
264
 
265
 
266
+ </div>
267
  <div id="EnterEmailCloudVerification" class="modal">
268
  <!-- Modal content -->
269
  <div class="modal-content">
270
  <!-- <span class="close">&times;</span> -->
271
  <div class="modal-header">
272
+ <h3 class="modal-title" style="text-align: center; font-size: 20px; color: #20b2aa">Email Address for miniOrange</h3><span id="closeEnterEmailCloud" class="modal-span-close">X</span>
273
  </div>
274
  <div class="modal-body" style="height: auto">
275
  <h2 style="color: red;">The email associated with your account is already registered in miniOrange. Please Choose another email.</h2>
285
  <div class="modal-content">
286
  <!-- <span class="close">&times;</span> -->
287
  <div class="modal-header">
288
+ <h3 class="modal-title" style="text-align: center; font-size: 20px; color: #20b2aa">Email Address for OTP</h3><span id="closeEnterEmail" class="modal-span-close">X</span>
289
  </div>
290
  <div class="modal-body" style="height: auto">
291
  <h2><i>Enter your Email:&nbsp;&nbsp;&nbsp; <input type ='email' id='emailEntered' name='emailEntered' size= '40' required value="<?php echo $email;?>"/></i></h2>
views/twofa/two_fa.php CHANGED
@@ -2,7 +2,7 @@
2
  $mo_2fa_with_network_security = MoWpnsUtility::get_mo2f_db_option('mo_wpns_2fa_with_network_security', 'get_option');
3
  if ($mo_2fa_with_network_security) {
4
  ?>
5
- <div class="nav-tab-wrapper" >
6
  <?php
7
  }
8
  else
@@ -11,12 +11,12 @@ else
11
  }
12
  ?>
13
 
14
- <button class="nav-tab" onclick="mo2f_wpns_openTab2fa(this)" id="setup_2fa">Setup Two Factor</button>
15
  <?php
16
  if(current_user_can('administrator') )
17
  {
18
  ?>
19
- <button class="nav-tab" onclick="mo2f_wpns_openTab2fa(this)" id="unlimittedUser_2fa">Settings</button>
20
  <?php
21
  }
22
  if(current_user_can('administrator'))
@@ -26,16 +26,16 @@ else
26
  if( !MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option'))
27
  {
28
  ?>
29
- <button class="nav-tab" onclick="mo2f_wpns_openTab2fa(this)" id="custom_form_2fa">Custom Login Forms</button>
30
- <button class="nav-tab" onclick="mo2f_wpns_openTab2fa(this)" id="login_option_2fa">Login Option</button>
31
  <?php
32
  }
33
  else
34
  {
35
  ?>
36
- <button class="nav-tab" onclick="mo2f_wpns_openTab2fa(this)" id="custom_form_2fa">Custom Login Forms</button>
37
- <button class="nav-tab" onclick="mo2f_wpns_openTab2fa(this)" id="custom_login_2fa">Premium Features</button>
38
- <button class="nav-tab" onclick="mo2f_wpns_openTab2fa(this)" id="rba_2fa">AddOns</button>
39
  <?php
40
  }
41
  ?>
@@ -47,83 +47,68 @@ else
47
  if($mo_2fa_with_network_security == 0)
48
  {
49
  ?>
50
- <!-- <button class="nav-tab" onclick="mo2f_wpns_openTab2fa(this)" id="upgrade_2fa">Upgrade</button> -->
51
  <?php
52
  }
53
  ?>
54
 
55
  </div>
56
-
57
  <div id="mo_scan_message" style=" padding-top:8px"></div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
 
59
- <div class="mo2f_flexbox">
60
- <div class="mo2f_table_layout" style="padding-right: unset;" id="setup_2fa_div">
61
- <?php include_once $mo2f_dirName . 'controllers'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'setup_twofa.php'; ?>
62
- </div>
63
-
64
- <?php
65
- if(current_user_can('administrator')){?>
66
- <div class="mo2f_table_layout" id="rba_2fa_div">
67
- <?php
68
- if ( get_option( 'mo2f_rba_installed' ) )
69
- mo2f_rba_description($mo2f_user_email);
70
- else
71
- include_once $mo2f_dirName . 'controllers'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'two_fa_rba.php';
72
- ?>
73
- <?php
74
- if ( get_option( 'mo2f_personalization_installed' ) )
75
- mo2f_personalization_description($mo2f_user_email);
76
- else
77
- include_once $mo2f_dirName . 'controllers'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'two_fa_custom_login.php';
78
- ?>
79
- <?php
80
- if ( get_option( 'mo2f_shortcode_installed' ) )
81
- mo2f_shortcode_description($mo2f_user_email);
82
- else
83
- include_once $mo2f_dirName . 'controllers'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'two_fa_shortcode.php';
84
- ?>
85
- <?php
86
- include_once $mo2f_dirName . 'controllers'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'two_fa_session_control.php';
87
- ?>
88
- </div>
89
- <div class="mo2f_table_layout" id="custom_login_2fa_div">
90
- <?php
91
- if ( get_option( 'mo2f_personalization_installed' ) )
92
- mo2f_personalization_description($mo2f_user_email);
93
- else
94
- include_once $mo2f_dirName . 'controllers'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'two_fa_premium_feature.php';
95
- ?>
96
- </div>
97
-
98
- <div class="mo2f_table_layout" id="login_option_2fa_div">
99
- <?php include_once $mo2f_dirName . 'controllers'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'two_fa_login_option.php'; ?>
100
- </div>
101
- <div class="mo2f_table_layout" id="custom_form_2fa_div">
102
- <?php include_once $mo2f_dirName . 'controllers'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'two_fa_custom_form.php'; ?>
103
- </div>
104
-
105
-
106
- <div class="mo2f_table_layout" id="unlimittedUser_2fa_div">
107
- <?php include_once $mo2f_dirName . 'controllers'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'two_fa_unlimittedUser.php'; ?>
108
- </div>
109
- <?php
110
- if(!MoWpnsUtility::get_mo2f_db_option('mo_wpns_2fa_with_network_security', 'get_option')){
111
- ?>
112
- <div class="mo2f_support_flex">
113
- <?php include $controller . 'support.php'; ?>
114
- </div>
115
- <?php
116
- }
117
- }
118
- ?>
119
- </div>
120
-
121
 
122
  <script>
 
123
 
124
- jQuery('#mo_2fa_2fa').addClass('nav-tab-active');
 
 
 
125
 
126
- function mo2f_wpns_openTab2fa(elmt){
 
127
  var tabname = elmt.id;
128
  var tabarray = ["setup_2fa","rba_2fa","custom_login_2fa","login_option_2fa", "custom_form_2fa","unlimittedUser_2fa"];
129
  for (var i = 0; i < tabarray.length; i++) {
@@ -135,17 +120,36 @@ else
135
  jQuery("#"+tabarray[i]+"_div").css("display", "none");
136
  }
137
  }
138
- localStorage.setItem("2fa_last_tab", tabname);
 
139
  }
140
  var tour = '<?php echo MoWpnsUtility::get_mo2f_db_option('mo2f_two_factor_tour', 'get_option');?>';
141
 
142
  if(tour != 1)
143
- var tab = localStorage.getItem("2fa_last_tab");
144
  else
145
  var tab = '<?php echo get_option("mo2f_tour_tab");?>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
 
147
- if(tab)
148
- document.getElementById(tab).click();
149
  else{
150
  document.getElementById("setup_2fa").click();
151
  }
2
  $mo_2fa_with_network_security = MoWpnsUtility::get_mo2f_db_option('mo_wpns_2fa_with_network_security', 'get_option');
3
  if ($mo_2fa_with_network_security) {
4
  ?>
5
+ <div class="mo_wpns_tab" >
6
  <?php
7
  }
8
  else
11
  }
12
  ?>
13
 
14
+ <button class="nav-tab" onclick="openTab2fa(this)" id="setup_2fa">Setup Two Factor</button>
15
  <?php
16
  if(current_user_can('administrator') )
17
  {
18
  ?>
19
+ <button class="nav-tab" onclick="openTab2fa(this)" id="unlimittedUser_2fa">Settings</button>
20
  <?php
21
  }
22
  if(current_user_can('administrator'))
26
  if( !MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option'))
27
  {
28
  ?>
29
+ <button class="nav-tab" onclick="openTab2fa(this)" id="custom_form_2fa">Registration Forms</button>
30
+ <button class="nav-tab" onclick="openTab2fa(this)" id="login_option_2fa">Login Option</button>
31
  <?php
32
  }
33
  else
34
  {
35
  ?>
36
+ <button class="nav-tab" onclick="openTab2fa(this)" id="custom_form_2fa">Registration Forms</button>
37
+ <button class="nav-tab" onclick="openTab2fa(this)" id="custom_login_2fa">Premium Features</button>
38
+ <button class="nav-tab" onclick="openTab2fa(this)" id="rba_2fa">AddOns</button>
39
  <?php
40
  }
41
  ?>
47
  if($mo_2fa_with_network_security == 0)
48
  {
49
  ?>
50
+ <!-- <button class="nav-tab" onclick="openTab2fa(this)" id="upgrade_2fa">Upgrade</button> -->
51
  <?php
52
  }
53
  ?>
54
 
55
  </div>
 
56
  <div id="mo_scan_message" style=" padding-top:8px"></div>
57
+ <div class="mo2f_table_layout" id="setup_2fa_div">
58
+ <?php include_once $mo2f_dirName . 'controllers'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'setup_twofa.php'; ?>
59
+ </div>
60
+ <div class="mo2f_table_layout" id="rba_2fa_div">
61
+ <?php
62
+ if ( get_option( 'mo2f_rba_installed' ) )
63
+ mo2f_rba_description($mo2f_user_email);
64
+ else
65
+ include_once $mo2f_dirName . 'controllers'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'two_fa_rba.php';
66
+ ?>
67
+ <?php
68
+ if ( get_option( 'mo2f_personalization_installed' ) )
69
+ mo2f_personalization_description($mo2f_user_email);
70
+ else
71
+ include_once $mo2f_dirName . 'controllers'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'two_fa_custom_login.php';
72
+ ?>
73
+ <?php
74
+ if ( get_option( 'mo2f_shortcode_installed' ) )
75
+ mo2f_shortcode_description($mo2f_user_email);
76
+ else
77
+ include_once $mo2f_dirName . 'controllers'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'two_fa_shortcode.php';
78
+ ?>
79
+ <?php
80
+ include_once $mo2f_dirName . 'controllers'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'two_fa_session_control.php';
81
+ ?>
82
+ </div>
83
+ <div class="mo_wpns_divided_layout" id="custom_login_2fa_div">
84
+ <?php
85
+ if ( get_option( 'mo2f_personalization_installed' ) )
86
+ mo2f_personalization_description($mo2f_user_email);
87
+ else
88
+ include_once $mo2f_dirName . 'controllers'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'two_fa_premium_feature.php';
89
+ ?>
90
+ </div>
91
+ <div class="mo_wpns_divided_layout" id="login_option_2fa_div">
92
+ <?php include_once $mo2f_dirName . 'controllers'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'two_fa_login_option.php'; ?>
93
+ </div>
94
+ <div class="mo_wpns_divided_layout" id="custom_form_2fa_div">
95
+ <?php include_once $mo2f_dirName . 'controllers'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'two_fa_custom_form.php'; ?>
96
+ </div>
97
+ <div class="mo_wpns_divided_layout" id="unlimittedUser_2fa_div">
98
+ <?php include_once $mo2f_dirName . 'controllers'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'two_fa_unlimittedUser.php'; ?>
99
+ </div>
100
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
101
 
102
  <script>
103
+ jQuery("#setup_2fa_div").css("display", "block");
104
 
105
+ jQuery("#rba_2fa_div").css("display", "none");
106
+ jQuery("#custom_login_2fa_div").css("display", "none");
107
+ jQuery("#login_option_2fa_div").css("display", "none");
108
+ jQuery("#custom_form_2fa_div").css("display", "none");
109
 
110
+ jQuery("#setup_2fa").addClass("nav-tab-active");
111
+ function openTab2fa(elmt){
112
  var tabname = elmt.id;
113
  var tabarray = ["setup_2fa","rba_2fa","custom_login_2fa","login_option_2fa", "custom_form_2fa","unlimittedUser_2fa"];
114
  for (var i = 0; i < tabarray.length; i++) {
120
  jQuery("#"+tabarray[i]+"_div").css("display", "none");
121
  }
122
  }
123
+ localStorage.setItem("last_tab", tabname);
124
+
125
  }
126
  var tour = '<?php echo MoWpnsUtility::get_mo2f_db_option('mo2f_two_factor_tour', 'get_option');?>';
127
 
128
  if(tour != 1)
129
+ var tab = localStorage.getItem("last_tab");
130
  else
131
  var tab = '<?php echo get_option("mo2f_tour_tab");?>';
132
+ var is_onprem = '<?php echo MO2F_IS_ONPREM;?>';
133
+ if(tab == "setup_twofa"){
134
+ document.getElementById("setup_2fa").click();
135
+ }
136
+ else if(tab == "rba_2fa"){
137
+ document.getElementById("rba_2fa").click();
138
+ }
139
+ else if(tab == "custom_login_2fa"){
140
+ document.getElementById("custom_login_2fa").click();
141
+ }
142
+ else if(tab == "login_option_2fa"){
143
+ document.getElementById("login_option_2fa").click();
144
+ }
145
+ else if(tab == "custom_form_2fa"){
146
+ document.getElementById("custom_form_2fa").click();
147
+ }
148
+ else if(tab == "unlimittedUser_2fa")
149
+ {
150
+ document.getElementById("unlimittedUser_2fa").click();
151
+ }
152
 
 
 
153
  else{
154
  document.getElementById("setup_2fa").click();
155
  }
views/twofa/two_fa_addon.php CHANGED
@@ -1,9 +1,9 @@
1
  <div class="mo2f_table_layout">
2
  <div class="mo2f_vertical-submenu">
3
- <a id="defaultOpen" class="nav-tab" onclick="openPage('rba', this, '#2271b1')"
4
  ><?php echo __( 'Remember Device', 'miniorange-2-factor-authentication' ); ?></a>
5
- <a id="onclickOpen" class="nav-tab" onclick="openPage('personal', this, '#2271b1')" ><?php echo __( 'Customize login Popups', 'miniorange-2-factor-authentication' ); ?></a>
6
- <a id="onclick" class="nav-tab" onclick="openPage('shortcode', this, '#2271b1')" ><?php echo __( 'Shortcode', 'miniorange-2-factor-authentication' ); ?></a>
7
  </div>
8
  <br><br><br><br>
9
  <div class="mo2f_addon_spacing">
1
  <div class="mo2f_table_layout">
2
  <div class="mo2f_vertical-submenu">
3
+ <a id="defaultOpen" class="nav-tab" onclick="openPage('rba', this, '#20b2aa')"
4
  ><?php echo __( 'Remember Device', 'miniorange-2-factor-authentication' ); ?></a>
5
+ <a id="onclickOpen" class="nav-tab" onclick="openPage('personal', this, '#20b2aa')" ><?php echo __( 'Customize login Popups', 'miniorange-2-factor-authentication' ); ?></a>
6
+ <a id="onclick" class="nav-tab" onclick="openPage('shortcode', this, '#20b2aa')" ><?php echo __( 'Shortcode', 'miniorange-2-factor-authentication' ); ?></a>
7
  </div>
8
  <br><br><br><br>
9
  <div class="mo2f_addon_spacing">
views/twofa/two_fa_custom_form.php CHANGED
@@ -3,128 +3,7 @@ $setup_dirName = dirname(dirname(dirname(__FILE__))).DIRECTORY_SEPARATOR.'views'
3
  include $setup_dirName;
4
  ?>
5
 
6
- <div>
7
-
8
- <div>
9
- <h2>Custom Login Forms</h2>
10
- <p>We support most of the login forms present on the wordpress. And our plugin is tested with almost all the forms like Woocommerce, Ultimate Member, Restrict Content Pro and so on.</p>
11
- </div>
12
- <div>
13
- <div>
14
- <table class="customloginform" style="width: 95%">
15
- <tr>
16
- <th style="width: 65%">
17
- Custom Login form
18
- </th>
19
- <th style="width: 22%">
20
- Show 2FA prompt on Custom login
21
-
22
- </th>
23
- <th style="width: 13%">
24
- Documents
25
- </th>
26
- </tr>
27
- <tr>
28
- <td>
29
- <?php echo '<img style="width:30px; height:30px;display: inline;" src="'.dirname(plugin_dir_url(dirname(__FILE__))).'/includes/images/woocommerce.png">';?><h3 style="margin-left: 15px; font-size: large; display: inline; float: inherit; padding-right: 50px;">Woocommerce</h3>
30
- </td>
31
- <td style="align-items: right;">
32
- <form id="woocommerce_login_prompt_form" method="post">
33
- <div align="center">
34
- <input type="checkbox" name="woocommerce_login_prompt" onchange="document.getElementById('woocommerce_login_prompt_form').submit();" <?php if(get_site_option('mo2f_woocommerce_login_prompt')){?> checked <?php } ?> <?php if(!MoWpnsUtility::get_mo2f_db_option('mo2f_enable_2fa_prompt_on_login_page', 'site_option')){?> checked <?php } ?>/>
35
- </div>
36
- <input type="hidden" name="option" value="woocommerce_disable_login_prompt">
37
-
38
- </form>
39
- </td>
40
- <td>
41
- <div style="text-align: center;">
42
- <a href='<?php echo $two_factor_premium_doc['Woocommerce'];?>' target="blank"><span class="dashicons dashicons-text-page mo2f_doc_icon_style" style="font-size: 25px;color: #413c69"></span></a>
43
- </div>
44
- </td>
45
- </tr>
46
- <tr>
47
- <td>
48
- <?php echo '<img style="width:30px; height:30px;display: inline;" src="'.dirname(plugin_dir_url(dirname(__FILE__))).'/includes/images/ultimate_member.png">';?><h3 style="margin-left: 15px; font-size: large; display: inline; float: inherit;">Ultimate Member</h3>
49
- </td>
50
- <td style="text-align: center;">
51
- <input type="checkbox" name="" checked>
52
- </td>
53
- <td>
54
- </td>
55
- </tr>
56
- <tr>
57
- <td>
58
- <?php echo '<img style="width:30px; height:30px;display: inline;" src="'.dirname(plugin_dir_url(dirname(__FILE__))).'/includes/images/restrict_content_pro.png">';?><h3 style="margin-left: 15px; font-size: large; display: inline; float: inherit;">Restrict Content Pro</h3>
59
- </td>
60
- <td style="text-align: center;">
61
- <input type="checkbox" name="" checked>
62
- </td>
63
- <td>
64
- </td>
65
- </tr>
66
- <tr>
67
- <td >
68
- <?php echo '<img style="width:30px; height:30px;display: inline;" src="'.dirname(plugin_dir_url(dirname(__FILE__))).'/includes/images/theme_my_login.png">';?><h3 style="margin-left: 15px; font-size: large; display: inline; float: inherit;">My Theme Login</h3>
69
- </td>
70
- <td style="text-align: center;">
71
- <input type="checkbox" name="" checked>
72
- </td>
73
- <td>
74
- </td>
75
- </tr>
76
- <tr>
77
- <td>
78
- <?php echo '<img style="width:30px; height:30px;display: inline;" src="'.dirname(plugin_dir_url(dirname(__FILE__))).'/includes/images/user_registration.png">';?><h3 style="margin-left: 15px; font-size: large; display: inline; float: inherit;">User Registration</h3>
79
- </td>
80
- <td style="text-align: center;">
81
- <input type="checkbox" name="" checked>
82
- </td>
83
- <td>
84
- </td>
85
- </tr>
86
- <tr>
87
- <td>
88
- <?php echo '<img style="width:30px; height:30px;display: inline;" src="'.dirname(plugin_dir_url(dirname(__FILE__))).'/includes/images/Custom_Login_Page_Customizer_LoginPress.png">';?><h3 style="margin-left: 15px; font-size: large; display: inline; float: inherit;">Custom Login Page Customizer | LoginPress</h3>
89
- </td>
90
- <td style="text-align: center;">
91
- <input type="checkbox" name="" checked>
92
- </td>
93
- <td>
94
- </td>
95
- </tr>
96
- <tr>
97
- <td>
98
- <?php echo '<img style="width:30px; height:30px;display: inline;float: left;" src="'.dirname(plugin_dir_url(dirname(__FILE__))).'/includes/images/Admin_Custom_Login.png">';?><h3 style="margin-left: 15px; font-size: large; display: inline; float: inherit;">Admin Custom Login</h3>
99
- </td>
100
- <td style="text-align: center;">
101
- <input type="checkbox" name="" checked>
102
- </td>
103
- <td>
104
- </td>
105
- </tr>
106
- <tr>
107
- <td>
108
- <?php echo '<img style="width:30px; height:30px;display: inline;float: left;" src="'.dirname(plugin_dir_url(dirname(__FILE__))).'/includes/images/RegistrationMagic_Custom_Registration_Forms_and_User_Login.png">';?><h3 style="margin-left: 15px; font-size: large; display: inline; float: inherit;">RegistrationMagic – Custom Registration Forms and User Login</h3>
109
- </td>
110
- <td style="text-align: center; ">
111
- <input type="checkbox" name="" checked>
112
- </td>
113
- <td>
114
- </td>
115
- </tr>
116
-
117
- </table>
118
- <div style="text-align: center">
119
- <b style="color: red; " >**If you want to enable/disable 2FA prompt on other Custom login pages please Contact us.</b>
120
- <br>
121
- <b style="color: red;" >**This feature will only work when you enable 2FA prompt on wordpress login page.</li></b>
122
-
123
- <p style="font-size:15px">If there is any custom login form where Two Factor is not initiated for you, plese reach out to us by dropping a query in the <b>Support</b> section.</p>
124
- </div>
125
- </div>
126
-
127
- <hr>
128
 
129
  <form name="form_custom_form_config" method="post" action="" id="mo2f_custom_form_config">
130
  <h3> <?php echo 'Custom Registration Forms';?> </h3>
@@ -411,5 +290,124 @@ include $setup_dirName;
411
 
412
  </div>
413
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
414
  </div>
415
 
3
  include $setup_dirName;
4
  ?>
5
 
6
+ <div class="mo2f_table_layout">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
 
8
  <form name="form_custom_form_config" method="post" action="" id="mo2f_custom_form_config">
9
  <h3> <?php echo 'Custom Registration Forms';?> </h3>
290
 
291
  </div>
292
 
293
+
294
+ <div class="mo2f_table_layout">
295
+ <h2>Custom Login Forms</h2>
296
+ <p>We support most of the login forms present on the wordpress. And our plugin is tested with almost all the forms like Woocommerce, Ultimate Member, Restrict Content Pro and so on.</p>
297
+ </div>
298
+ <div class="mo2f_table_layout">
299
+ <div>
300
+ <table class="customloginform" style="width: 95%">
301
+ <tr>
302
+ <th style="width: 65%">
303
+ Custom Login form
304
+ </th>
305
+ <th style="width: 22%">
306
+ Show 2FA prompt on Custom login
307
+
308
+ </th>
309
+ <th style="width: 13%">
310
+ Documents
311
+ </th>
312
+ </tr>
313
+ <tr>
314
+ <td>
315
+ <?php echo '<img style="width:30px; height:30px;display: inline;" src="'.dirname(plugin_dir_url(dirname(__FILE__))).'/includes/images/woocommerce.png">';?><h3 style="margin-left: 15px; font-size: large; display: inline; float: inherit; padding-right: 50px;">Woocommerce</h3>
316
+ </td>
317
+ <td style="align-items: right;">
318
+ <form id="woocommerce_login_prompt_form" method="post">
319
+ <div align="center">
320
+ <input type="checkbox" name="woocommerce_login_prompt" onchange="document.getElementById('woocommerce_login_prompt_form').submit();" <?php if(get_site_option('mo2f_woocommerce_login_prompt')){?> checked <?php } ?> <?php if(!MoWpnsUtility::get_mo2f_db_option('mo2f_enable_2fa_prompt_on_login_page', 'site_option')){?> checked <?php } ?>/>
321
+ </div>
322
+ <input type="hidden" name="option" value="woocommerce_disable_login_prompt">
323
+
324
+ </form>
325
+ </td>
326
+ <td>
327
+ <div style="text-align: center;">
328
+ <a href='<?php echo $two_factor_premium_doc['Woocommerce'];?>' target="blank"><span class="dashicons dashicons-text-page mo2f_doc_icon_style" style="font-size: 25px;color: #413c69"></span></a>
329
+ </div>
330
+ </td>
331
+ </tr>
332
+ <tr>
333
+ <td>
334
+ <?php echo '<img style="width:30px; height:30px;display: inline;" src="'.dirname(plugin_dir_url(dirname(__FILE__))).'/includes/images/ultimate_member.png">';?><h3 style="margin-left: 15px; font-size: large; display: inline; float: inherit;">Ultimate Member</h3>
335
+ </td>
336
+ <td style="text-align: center;">
337
+ <input type="checkbox" name="" checked>
338
+ </td>
339
+ <td>
340
+ </td>
341
+ </tr>
342
+ <tr>
343
+ <td>
344
+ <?php echo '<img style="width:30px; height:30px;display: inline;" src="'.dirname(plugin_dir_url(dirname(__FILE__))).'/includes/images/restrict_content_pro.png">';?><h3 style="margin-left: 15px; font-size: large; display: inline; float: inherit;">Restrict Content Pro</h3>
345
+ </td>
346
+ <td style="text-align: center;">
347
+ <input type="checkbox" name="" checked>
348
+ </td>
349
+ <td>
350
+ </td>
351
+ </tr>
352
+ <tr>
353
+ <td >
354
+ <?php echo '<img style="width:30px; height:30px;display: inline;" src="'.dirname(plugin_dir_url(dirname(__FILE__))).'/includes/images/theme_my_login.png">';?><h3 style="margin-left: 15px; font-size: large; display: inline; float: inherit;">My Theme Login</h3>
355
+ </td>
356
+ <td style="text-align: center;">
357
+ <input type="checkbox" name="" checked>
358
+ </td>
359
+ <td>
360
+ </td>
361
+ </tr>
362
+ <tr>
363
+ <td>
364
+ <?php echo '<img style="width:30px; height:30px;display: inline;" src="'.dirname(plugin_dir_url(dirname(__FILE__))).'/includes/images/user_registration.png">';?><h3 style="margin-left: 15px; font-size: large; display: inline; float: inherit;">User Registration</h3>
365
+ </td>
366
+ <td style="text-align: center;">
367
+ <input type="checkbox" name="" checked>
368
+ </td>
369
+ <td>
370
+ </td>
371
+ </tr>
372
+ <tr>
373
+ <td>
374
+ <?php echo '<img style="width:30px; height:30px;display: inline;" src="'.dirname(plugin_dir_url(dirname(__FILE__))).'/includes/images/Custom_Login_Page_Customizer_LoginPress.png">';?><h3 style="margin-left: 15px; font-size: large; display: inline; float: inherit;">Custom Login Page Customizer | LoginPress</h3>
375
+ </td>
376
+ <td style="text-align: center;">
377
+ <input type="checkbox" name="" checked>
378
+ </td>
379
+ <td>
380
+ </td>
381
+ </tr>
382
+ <tr>
383
+ <td>
384
+ <?php echo '<img style="width:30px; height:30px;display: inline;float: left;" src="'.dirname(plugin_dir_url(dirname(__FILE__))).'/includes/images/Admin_Custom_Login.png">';?><h3 style="margin-left: 15px; font-size: large; display: inline; float: inherit;">Admin Custom Login</h3>
385
+ </td>
386
+ <td style="text-align: center;">
387
+ <input type="checkbox" name="" checked>
388
+ </td>
389
+ <td>
390
+ </td>
391
+ </tr>
392
+ <tr>
393
+ <td>
394
+ <?php echo '<img style="width:30px; height:30px;display: inline;float: left;" src="'.dirname(plugin_dir_url(dirname(__FILE__))).'/includes/images/RegistrationMagic_Custom_Registration_Forms_and_User_Login.png">';?><h3 style="margin-left: 15px; font-size: large; display: inline; float: inherit;">RegistrationMagic – Custom Registration Forms and User Login</h3>
395
+ </td>
396
+ <td style="text-align: center; ">
397
+ <input type="checkbox" name="" checked>
398
+ </td>
399
+ <td>
400
+ </td>
401
+ </tr>
402
+
403
+ </table>
404
+ <div style="text-align: center">
405
+ <b style="color: red; " >**If you want to enable/disable 2FA prompt on other Custom login pages please Contact us.</b>
406
+ <br>
407
+ <b style="color: red;" >**This feature will only work when you enable 2FA prompt on wordpress login page.</li></b>
408
+
409
+ <p style="font-size:15px">If there is any custom login form where Two Factor is not initiated for you, plese reach out to us by dropping a query in the <b>Support</b> section.</p>
410
+ </div>
411
+ </div>
412
  </div>
413
 
views/twofa/two_fa_custom_login.php CHANGED
@@ -5,7 +5,7 @@ $setup_dirName = dirname(dirname(dirname(__FILE__))).DIRECTORY_SEPARATOR.'views'
5
  $current_user = wp_get_current_user();
6
  global $Mo2fdbQueries;
7
  ?>
8
- <div class="mo2f_table_divide_border" id="mo2f_customization_tour">
9
  <form name="f" id="custom_css_form_add" method="post" action="">
10
  <input type="hidden" name="option" value="mo_auth_custom_options_save" />
11
 
@@ -22,7 +22,7 @@ $setup_dirName = dirname(dirname(dirname(__FILE__))).DIRECTORY_SEPARATOR.'views'
22
  <div id="mo2f_Personalization_Plugin_Icon" style="display: none;">
23
 
24
  <h3><?php echo mo2f_lt('Customize Plugin Icon');?><a href='<?php echo $two_factor_premium_doc['Custom plugin logo'];?>' target="_blank">
25
- <span class="dashicons dashicons-text-page" style="font-size:19px;color:#413c69;float: right;"></span>
26
 
27
  </a> </h3><br>
28
  <div>
@@ -36,7 +36,7 @@ $setup_dirName = dirname(dirname(dirname(__FILE__))).DIRECTORY_SEPARATOR.'views'
36
  </div>
37
  </div> </div><hr>
38
  <h3><?php echo mo2f_lt('Customize Plugin Name');?><a href='<?php echo $two_factor_premium_doc['Custom plugin name'];?>' target="_blank">
39
- <span class="dashicons dashicons-text-page" style="font-size:19px;color:#413c69;float: right;"></span>
40
 
41
  </a></h3>
42
  <div>
@@ -54,7 +54,7 @@ $setup_dirName = dirname(dirname(dirname(__FILE__))).DIRECTORY_SEPARATOR.'views'
54
  <div id="mo2f_Personalization_Plugin_Icon" style="display: none;">
55
 
56
  <h3><?php echo mo2f_lt('Custom Email and SMS Templates');?>
57
- <a href="https://developers.miniorange.com/docs/security/wordpress/wp-security/customize-email-template" target="_blank"><span class="dashicons dashicons-text-page" style="font-size:19px;color:#413c69;float: right;"></span> </a> </h3> <hr>
58
  <div>
59
  <div style="margin-left:2%">
60
  <p><?php echo mo2f_lt('You can change the templates for Email and SMS as per your requirement.');?></p>
@@ -101,12 +101,12 @@ $setup_dirName = dirname(dirname(dirname(__FILE__))).DIRECTORY_SEPARATOR.'views'
101
  <input type="hidden" name="option" value="mo_auth_custom_design_options_reset" />
102
 
103
  <h3><?php echo mo2f_lt('Customize UI of Login Pop up\'s');?><a href='<?php echo $two_factor_premium_doc['custom login popup'];?>' target="_blank">
104
- <span class="dashicons dashicons-text-page" style="font-size:19px;color:#413c69;float: right;"></span>
105
 
106
  </a> </h3>
107
 
108
  <div>
109
- <input type="submit" name="submit" value="Reset Settings" class="button button-primary button-large" style="float:right; background-color: #2271b1; color: white;box-shadow: none;"<?php
110
  echo 'disabled' ; ?> />
111
 
112
  </form>
5
  $current_user = wp_get_current_user();
6
  global $Mo2fdbQueries;
7
  ?>
8
+ <div class="mo2f_table_layout" id="mo2f_customization_tour">
9
  <form name="f" id="custom_css_form_add" method="post" action="">
10
  <input type="hidden" name="option" value="mo_auth_custom_options_save" />
11
 
22
  <div id="mo2f_Personalization_Plugin_Icon" style="display: none;">
23
 
24
  <h3><?php echo mo2f_lt('Customize Plugin Icon');?><a href='<?php echo $two_factor_premium_doc['Custom plugin logo'];?>' target="_blank">
25
+ <span class="dashicons dashicons-text-page" style="font-size:19px;color:#269eb3;float: right;"></span>
26
 
27
  </a> </h3><br>
28
  <div>
36
  </div>
37
  </div> </div><hr>
38
  <h3><?php echo mo2f_lt('Customize Plugin Name');?><a href='<?php echo $two_factor_premium_doc['Custom plugin name'];?>' target="_blank">
39
+ <span class="dashicons dashicons-text-page" style="font-size:19px;color:#269eb3;float: right;"></span>
40
 
41
  </a></h3>
42
  <div>
54
  <div id="mo2f_Personalization_Plugin_Icon" style="display: none;">
55
 
56
  <h3><?php echo mo2f_lt('Custom Email and SMS Templates');?>
57
+ <a href="https://developers.miniorange.com/docs/security/wordpress/wp-security/customize-email-template" target="_blank"><span class="dashicons dashicons-text-page" style="font-size:19px;color:#269eb3;float: right;"></span> </a> </h3> <hr>
58
  <div>
59
  <div style="margin-left:2%">
60
  <p><?php echo mo2f_lt('You can change the templates for Email and SMS as per your requirement.');?></p>
101
  <input type="hidden" name="option" value="mo_auth_custom_design_options_reset" />
102
 
103
  <h3><?php echo mo2f_lt('Customize UI of Login Pop up\'s');?><a href='<?php echo $two_factor_premium_doc['custom login popup'];?>' target="_blank">
104
+ <span class="dashicons dashicons-text-page" style="font-size:19px;color:#269eb3;float: right;"></span>
105
 
106
  </a> </h3>
107
 
108
  <div>
109
+ <input type="submit" name="submit" value="Reset Settings" class="button button-primary button-large" style="float:right; background-color: #20b2aa; color: white;box-shadow: none;"<?php
110
  echo 'disabled' ; ?> />
111
 
112
  </form>
views/twofa/two_fa_login_option.php CHANGED
@@ -1,7 +1,11 @@
1
  <?php
2
  global $Mo2fdbQueries;
3
  $roles = get_editable_roles();
4
-
 
 
 
 
5
  $mo_2factor_user_registration_status = $Mo2fdbQueries->get_user_detail( 'mo_2factor_user_registration_status', $user->ID );
6
  ?>
7
  <?php if ( !MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option') && MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option') ) { ?>
@@ -24,101 +28,47 @@ global $Mo2fdbQueries;
24
  <input type="hidden" name="mo_auth_login_settings_save_nonce"
25
  value="<?php echo wp_create_nonce( "mo-auth-login-settings-save-nonce" ) ?>"/>
26
  <div class="row">
27
- <h3 style="padding:10px;"><?php echo mo2f_lt( 'Select Login Screen Options' ); ?>
28
-
29
- </div>
30
- <hr>
31
- <br>
32
-
33
-
34
- <div style="margin-left: 2%;">
35
- <input type="radio" name="mo2f_login_option" value="1"
36
- <?php checked( MoWpnsUtility::get_mo2f_db_option('mo2f_login_option', 'get_option') );
37
- if ( $mo_2factor_user_registration_status == 'MO_2_FACTOR_PLUGIN_SETTINGS' or MO2F_IS_ONPREM) {
38
- } else {
39
- echo 'disabled';
40
- } ?> />
41
- <?php echo mo2f_lt( 'Login with password + 2nd Factor ' ); ?>
42
- <i>(<?php echo mo2f_lt( 'Default & Recommended' ); ?>)&nbsp;&nbsp;</i>
43
-
44
- <br><br>
45
-
46
- <div style="margin-left:6%;">
47
- <input type="checkbox" id="mo2f_remember_device" name="mo2f_remember_device"
48
- value="1" <?php checked( get_option( 'mo2f_remember_device' ) == 1 );
49
- if ( $mo_2factor_user_registration_status == 'MO_2_FACTOR_PLUGIN_SETTINGS' and MO2F_IS_ONPREM!=1) {
50
- } else {
51
- echo 'disabled';
52
- } ?> />Enable
53
- '<b><?php echo mo2f_lt( 'Remember device' ); ?></b>' <?php echo mo2f_lt( 'option ' ); ?><br>
54
-
55
- <div class="mo2f_advanced_options_note"><p style="padding:5px;">
56
- <i><?php echo mo2f_lt( ' Checking this option will display an option ' ); ?>
57
- '<b><?php echo mo2f_lt( 'Remember this device' ); ?></b>'<?php echo mo2f_lt( 'on 2nd factor screen. In the next login from the same device, user will bypass 2nd factor, i.e. user will be logged in through username + password only.' ); ?>
58
- </i></p></div>
59
- </div>
60
-
61
- <br>
62
-
63
- <input type="radio" name="mo2f_login_option" value="0"
64
- <?php checked( ! MoWpnsUtility::get_mo2f_db_option('mo2f_login_option', 'get_option') );
65
- if ( $mo_2factor_user_registration_status == 'MO_2_FACTOR_PLUGIN_SETTINGS' or MO2F_IS_ONPREM) {
66
- } else {
67
- echo 'disabled';
68
- } ?> />
69
- <?php echo mo2f_lt( 'Login with 2nd Factor only ' ); ?>
70
- <i>(<?php echo mo2f_lt( 'No password required.' ); ?>)</i> &nbsp;<a
71
  data-toggle="collapse"
72
- id="showLoginwith2ndFactoronly"
73
- href="#Loginwith2ndFactoronly"
74
  aria-expanded="false"><?php echo mo2f_lt( 'See preview' ); ?></a>
75
- <br>
76
- <div class="mo2f_collapse" id="Loginwith2ndFactoronly" style="height:300px; ">
77
  <center><br>
78
  <img style="height:300px;"
79
  src="https://login.xecurify.com/moas/images/help/login-help-1.png">
80
  </center>
81
  </div>
82
- <br>
83
- <br>
84
- <div class="mo2f_advanced_options_note"><p style="padding:5px;">
85
- <i><?php echo mo2f_lt( 'Checking this option will add login with your phone button below default login form. Click above link to see the preview.' ); ?></i>
86
- </p></div>
87
- <div id="loginphonediv" hidden><br>
88
- <input type="checkbox" id="mo2f_login_with_username_and_2factor"
89
- name="mo2f_login_with_username_and_2factor"
90
- value="1" <?php checked( get_option( 'mo2f_enable_login_with_2nd_factor' ) == 1 );
91
- if ( $mo_2factor_user_registration_status == 'MO_2_FACTOR_PLUGIN_SETTINGS' or MO2F_IS_ONPREM ){
92
- } else {
93
- echo 'disabled';
94
- } ?> />
95
- <?php echo mo2f_lt( ' I want to hide default login form.' ); ?> &nbsp;<a
96
- class=""
97
- data-toggle="collapse"
98
- href="#hideDefaultLoginForm"
99
- id = 'showhideDefaultLoginForm'
100
- aria-expanded="false"><?php echo mo2f_lt( 'See preview' ); ?></a>
101
- <br>
102
- <div class="mo2f_collapse" id="showhideDefaultLoginForm" style="height:300px;">
103
- <center><br>
104
- <img style="height:300px;"
105
- src="https://login.xecurify.com/moas/images/help/login-help-3.png">
106
- </center>
107
- </div>
108
-
109
- <br>
110
- <br>
111
- <div class="mo2f_advanced_options_note"><p style="padding:5px;">
112
- <i><?php echo mo2f_lt( 'Checking this option will hide default login form and just show login with your phone. Click above link to see the preview.' ); ?></i>
113
- </p></div>
114
- </div>
115
- <br>
116
  </div>
 
 
 
117
  <div>
118
- <h3 style="padding:10px;"><?php echo mo2f_lt( 'Backup Methods' ); ?></h3></div>
 
 
 
 
 
 
 
 
119
  <hr>
120
  <br>
121
- <div style="margin-left: 2%">
122
  <input type="checkbox" id="mo2f_forgotphone" name="mo2f_forgotphone"
123
  value="1" <?php checked( MoWpnsUtility::get_mo2f_db_option('mo2f_enable_forgotphone', 'get_option') == 1 );
124
  if ( $mo_2factor_user_registration_status == 'MO_2_FACTOR_PLUGIN_SETTINGS' ) {
@@ -134,10 +84,16 @@ global $Mo2fdbQueries;
134
 
135
  </div>
136
  <div>
137
- <h3 style="padding:10px;">XML-RPC <?php echo mo2f_lt( 'Settings' ); ?></h3></div>
138
- <hr>
139
- <br>
140
- <div style="margin-left: 2%">
 
 
 
 
 
 
141
  <input type="checkbox" id="mo2f_enable_xmlrpc" name="mo2f_enable_xmlrpc"
142
  value="1" <?php checked( MoWpnsUtility::get_mo2f_db_option('mo2f_enable_xmlrpc', 'get_option') == 1 );
143
  if ( $mo_2factor_user_registration_status == 'MO_2_FACTOR_PLUGIN_SETTINGS' ) {
@@ -162,7 +118,7 @@ global $Mo2fdbQueries;
162
  } else {
163
  ?>
164
  <input type="submit" name="submit" value="<?php echo mo2f_lt( 'Save Settings' ); ?>"
165
- class="mo_wpns_button" disabled style="background-color: #2271b1;padding: 11px 28px; text-align: center; text-decoration: none; display: inline-block; font-size: 16px; margin: 4px 2px;">
166
  <?php
167
  } ?>
168
  </center>
@@ -192,29 +148,42 @@ global $Mo2fdbQueries;
192
  });
193
 
194
 
195
- jQuery('#Loginwith2ndFactoronly').hide();
196
- jQuery('#showLoginwith2ndFactoronly').click(function(){
197
- jQuery('#Loginwith2ndFactoronly').slideToggle(700);
198
- });
199
- jQuery('#Loginwith2ndFactoronlyStandard').hide();
200
- jQuery('#showLoginwith2ndFactoronlyStandard').click(function(){
201
- jQuery('#Loginwith2ndFactoronlyStandard').slideToggle(700);
202
  });
203
- jQuery('#LoginWithUsernameOnlyStandard').hide();
204
- jQuery('#showLoginWithUsernameOnlyStandard').click(function(){
205
- jQuery('#LoginWithUsernameOnlyStandard').slideToggle(700);
 
 
 
 
 
 
 
 
 
 
 
 
206
  });
207
- jQuery('#Loginwith2ndFactoronlyPremium').hide();
208
- jQuery('#showLoginwith2ndFactoronlyPremium').click(function(){
209
- jQuery('#Loginwith2ndFactoronlyPremium').slideToggle(700);
210
  });
211
- jQuery('#LoginWithUsernameOnlyPremium').hide();
212
- jQuery('#showLoginWithUsernameOnlyPremium').click(function(){
213
- jQuery('#LoginWithUsernameOnlyPremium').slideToggle(700);
214
- });
215
- jQuery('#showhideDefaultLoginForm').hide();
216
- jQuery('#showhideDefaultLoginForm').click(function(){
217
- jQuery('#showhideDefaultLoginForm').slideToggle(700);
 
 
 
 
 
 
218
  });
219
 
220
 
@@ -344,10 +313,10 @@ function get_standard_premium_options( $user ) {
344
  <div>
345
  <ul style="margin-left:4%" class="mo2f_ol">
346
  <li><?php echo mo2f_lt( 'Login with Wordpress username/password and 2nd Factor' ); ?> <a
347
- class="" data-toggle="collapse" id="showLoginwith2ndFactoronlyStandard" href="#Loginwith2ndFactoronlyStandard"
348
  aria-expanded="false">[ <?php echo mo2f_lt( 'See Preview' ); ?>
349
  ]</a>
350
- <div class="mo2f_collapse" id="Loginwith2ndFactoronlyStandard" style="height:300px;">
351
  <center><br>
352
  <img style="height:300px;"
353
  src="https://login.xecurify.com/moas/images/help/login-help-1.png">
@@ -356,11 +325,11 @@ function get_standard_premium_options( $user ) {
356
 
357
  </li><br>
358
  <li><?php echo mo2f_lt( 'Login with Wordpress username and 2nd Factor only' ); ?> <a
359
- class="" data-toggle="collapse" id="showLoginWithUsernameOnlyStandard" href="#LoginWithUsernameOnlyStandard"
360
  aria-expanded="false">[ <?php echo mo2f_lt( 'See Preview' ); ?>
361
  ]</a>
362
  <br>
363
- <div class="mo2f_collapse" id="LoginWithUsernameOnlyStandard" style="height:300px;">
364
  <center><br>
365
  <img style="height:300px;"
366
  src="https://login.xecurify.com/moas/images/help/login-help-3.png">
@@ -417,10 +386,10 @@ function get_standard_premium_options( $user ) {
417
  <div>
418
  <ul style="margin-left:4%" class="mo2f_ol">
419
  <li><?php echo mo2f_lt( 'Login with Wordpress username/password and 2nd Factor' ); ?> <a
420
- data-toggle="collapse" id="showLoginwith2ndFactoronlyPremium" href="#Loginwith2ndFactoronlyPremium"
421
  aria-expanded="false">[ <?php echo mo2f_lt( 'See Preview' ); ?>
422
  ]</a>
423
- <div class="mo2f_collapse" id="Loginwith2ndFactoronlyPremium" style="height:300px;">
424
  <center><br>
425
  <img style="height:300px;"
426
  src="https://login.xecurify.com/moas/images/help/login-help-1.png">
@@ -429,11 +398,11 @@ function get_standard_premium_options( $user ) {
429
  </div>
430
  <br></li>
431
  <li><?php echo mo2f_lt( 'Login with Wordpress username and 2nd Factor only' ); ?> <a
432
- data-toggle="collapse" id="showLoginWithUsernameOnlyPremium" href="#LoginWithUsernameOnlyPremium"
433
  aria-expanded="false">[ <?php echo mo2f_lt( 'See Preview' ); ?>
434
  ]</a>
435
  <br>
436
- <div class="mo2f_collapse" id="LoginWithUsernameOnlyPremium" style="height:300px;">
437
  <center><br>
438
  <img style="height:300px;"
439
  src="https://login.xecurify.com/moas/images/help/login-help-3.png">
1
  <?php
2
  global $Mo2fdbQueries;
3
  $roles = get_editable_roles();
4
+ $login_option_tooltip_array = array(
5
+ 'By default 2nd Factor is enabled after password authentication. If you do not want to remember passwords anymore and just login with 2nd Factor, please select 2nd option.',
6
+ 'Users have an option to Login with Username and password or Login with just username + One Time Passcode',
7
+ 'This option will provide you an alternate way of logging in to your site in case you are unable to login with your primary authentication method.',
8
+ 'Users will be able to login through external applications which support XML-RPC without authenticating from miniOrange');
9
  $mo_2factor_user_registration_status = $Mo2fdbQueries->get_user_detail( 'mo_2factor_user_registration_status', $user->ID );
10
  ?>
11
  <?php if ( !MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option') && MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option') ) { ?>
28
  <input type="hidden" name="mo_auth_login_settings_save_nonce"
29
  value="<?php echo wp_create_nonce( "mo-auth-login-settings-save-nonce" ) ?>"/>
30
  <div class="row">
31
+ <h3>Select Login Screen Options
32
+ <a href='<?php echo $two_factor_premium_doc['Select login screen option'];?>' target="_blank">
33
+ <span class="dashicons dashicons-text-page" title="More Information" style="font-size:19px;color:#413c69;float: right;"></span>
34
+ </a></h3>
35
+
36
+ <input type="radio" class="option_for_auth" name="mo2f_all_users_method" value="1" checked="checked" disabled> Login with password + 2nd Factor <span style="color: red">(Recommended)</span>
37
+ <?php echo mo2f_tooltip_array($login_option_tooltip_array[0]); ?>
38
+
39
+ </br>
40
+ </br>
41
+ <input type="radio" class="option_for_auth" name="mo2f_all_users_method" value="0" disabled>
42
+ Login with 2nd Factor only <span style="color: red">(No password required)
43
+ <a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44
  data-toggle="collapse"
45
+ id="showpreview1"
46
+ href="#preview8"
47
  aria-expanded="false"><?php echo mo2f_lt( 'See preview' ); ?></a>
48
+ <?php echo mo2f_tooltip_array($login_option_tooltip_array[1]); ?>
49
+ <div class="mo2f_collapse" id="preview8" style="height:300px;">
50
  <center><br>
51
  <img style="height:300px;"
52
  src="https://login.xecurify.com/moas/images/help/login-help-1.png">
53
  </center>
54
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
  </div>
56
+ <br>
57
+ <hr>
58
+ <br>
59
  <div>
60
+ <h3 style="padding:10px;"><?php echo mo2f_lt( 'Backup Methods ' ); ?><span><a
61
+ class="mo2fa_see_preview"
62
+ data-toggle="collapse"
63
+ id="showpreview2"
64
+ href="#preview9"
65
+ aria-expanded="false"><?php echo mo2f_lt( 'See preview' ); ?></a>
66
+ <?php echo mo2f_tooltip_array($login_option_tooltip_array[2]); ?></span></h3>
67
+ </div>
68
+ <br>
69
  <hr>
70
  <br>
71
+ <div style="margin-left: 2%" id='preview9' hidden>
72
  <input type="checkbox" id="mo2f_forgotphone" name="mo2f_forgotphone"
73
  value="1" <?php checked( MoWpnsUtility::get_mo2f_db_option('mo2f_enable_forgotphone', 'get_option') == 1 );
74
  if ( $mo_2factor_user_registration_status == 'MO_2_FACTOR_PLUGIN_SETTINGS' ) {
84
 
85
  </div>
86
  <div>
87
+ <h3 style="padding:10px;">XML-RPC <?php echo mo2f_lt( 'Settings' ); ?>
88
+ <span><a
89
+ class="mo2fa_see_preview"
90
+ data-toggle="collapse"
91
+ id="showpreview3"
92
+ href="#preview10"
93
+ aria-expanded="false"><?php echo mo2f_lt( 'See preview' ); ?></a>
94
+ <?php echo mo2f_tooltip_array($login_option_tooltip_array[3]); ?></span></h3>
95
+ </div>
96
+ <div style="margin-left: 2%" id="preview10" hidden>
97
  <input type="checkbox" id="mo2f_enable_xmlrpc" name="mo2f_enable_xmlrpc"
98
  value="1" <?php checked( MoWpnsUtility::get_mo2f_db_option('mo2f_enable_xmlrpc', 'get_option') == 1 );
99
  if ( $mo_2factor_user_registration_status == 'MO_2_FACTOR_PLUGIN_SETTINGS' ) {
118
  } else {
119
  ?>
120
  <input type="submit" name="submit" value="<?php echo mo2f_lt( 'Save Settings' ); ?>"
121
+ class="mo_wpns_button" disabled style="background-color: #20b2aa;padding: 11px 28px; text-align: center; text-decoration: none; display: inline-block; font-size: 16px; margin: 4px 2px;">
122
  <?php
123
  } ?>
124
  </center>
148
  });
149
 
150
 
151
+ jQuery('#preview9').hide();
152
+ jQuery('#showpreview1').click(function(){
153
+ jQuery('#preview8').slideToggle(700);
 
 
 
 
154
  });
155
+
156
+ jQuery('#showpreview2').click(function(){
157
+ jQuery('#preview9').slideToggle(700);
158
+ });
159
+ jQuery('#showpreview3').click(function(){
160
+ jQuery('#preview10').slideToggle(700);
161
+ });
162
+ jQuery('#showpreview4').click(function(){
163
+ jQuery('#preview11').slideToggle(700);
164
+ });
165
+ jQuery('#showpreview5').click(function(){
166
+ jQuery('#preview12').slideToggle(700);
167
+ });
168
+ jQuery('#showpreview6').click(function(){
169
+ jQuery('#preview13').slideToggle(700);
170
  });
171
+ jQuery('#showpreview7').click(function(){
172
+ jQuery('#preview14').slideToggle(700);
 
173
  });
174
+ jQuery('#preview7').hide();
175
+ jQuery('#showpreview7').click(function(){
176
+ jQuery('#preview7').slideToggle(700);
177
+ });
178
+
179
+ jQuery('#preview6').hide();
180
+ jQuery('#showpreview6').click(function(){
181
+ jQuery('#preview6').slideToggle(700);
182
+ });
183
+
184
+ jQuery('#preview8').hide();
185
+ jQuery('#showpreview8').click(function(){
186
+ jQuery('#preview8').slideToggle(700);
187
  });
188
 
189
 
313
  <div>
314
  <ul style="margin-left:4%" class="mo2f_ol">
315
  <li><?php echo mo2f_lt( 'Login with Wordpress username/password and 2nd Factor' ); ?> <a
316
+ class="" data-toggle="collapse" id="showpreview4" href="#preview11"
317
  aria-expanded="false">[ <?php echo mo2f_lt( 'See Preview' ); ?>
318
  ]</a>
319
+ <div class="mo2f_collapse" id="preview11" style="height:300px;">
320
  <center><br>
321
  <img style="height:300px;"
322
  src="https://login.xecurify.com/moas/images/help/login-help-1.png">
325
 
326
  </li><br>
327
  <li><?php echo mo2f_lt( 'Login with Wordpress username and 2nd Factor only' ); ?> <a
328
+ class="" data-toggle="collapse" id="showpreview5" href="#preview12"
329
  aria-expanded="false">[ <?php echo mo2f_lt( 'See Preview' ); ?>
330
  ]</a>
331
  <br>
332
+ <div class="mo2f_collapse" id="preview12" style="height:300px;">
333
  <center><br>
334
  <img style="height:300px;"
335
  src="https://login.xecurify.com/moas/images/help/login-help-3.png">
386
  <div>
387
  <ul style="margin-left:4%" class="mo2f_ol">
388
  <li><?php echo mo2f_lt( 'Login with Wordpress username/password and 2nd Factor' ); ?> <a
389
+ data-toggle="collapse" id="showpreview6" href="#preview13"
390
  aria-expanded="false">[ <?php echo mo2f_lt( 'See Preview' ); ?>
391
  ]</a>
392
+ <div class="mo2f_collapse" id="preview13" style="height:300px;">
393
  <center><br>
394
  <img style="height:300px;"
395
  src="https://login.xecurify.com/moas/images/help/login-help-1.png">
398
  </div>
399
  <br></li>
400
  <li><?php echo mo2f_lt( 'Login with Wordpress username and 2nd Factor only' ); ?> <a
401
+ data-toggle="collapse" id="showpreview7" href="#preview14"
402
  aria-expanded="false">[ <?php echo mo2f_lt( 'See Preview' ); ?>
403
  ]</a>
404
  <br>
405
+ <div class="mo2f_collapse" id="preview14" style="height:300px;">
406
  <center><br>
407
  <img style="height:300px;"
408
  src="https://login.xecurify.com/moas/images/help/login-help-3.png">
views/twofa/two_fa_premium_feature.php CHANGED
@@ -10,7 +10,7 @@ $premium_feature_tooltip_array = array ('This option will provide users an alter
10
  'Checking this option will hide default login form');
11
  ?>
12
 
13
- <div id = "premium_feature_phone_lost">
14
  <h3>What happens if my phone is lost, discharged or not with me
15
  <?php echo mo2f_tooltip_array($premium_feature_tooltip_array[0]); ?>
16
  <a href='<?php echo $two_factor_premium_doc['What happens if my phone is lost, discharged or not with me'];?>' target="_blank">
@@ -236,7 +236,7 @@ $premium_feature_tooltip_array = array ('This option will provide users an alter
236
 
237
  <?php echo mo2f_tooltip_array($premium_feature_tooltip_array[6]); ?>
238
  <div id="mo2f_hide_login" style="display: none;">
239
- <?php
240
  echo '<div style="text-align:center;"><img style="margin-top:5px;" src="'.$hide_login_form_url.'"></div><br>';?>
241
  </div>
242
 
10
  'Checking this option will hide default login form');
11
  ?>
12
 
13
+ <div class="mo2f_table_layout" id = "premium_feature_phone_lost">
14
  <h3>What happens if my phone is lost, discharged or not with me
15
  <?php echo mo2f_tooltip_array($premium_feature_tooltip_array[0]); ?>
16
  <a href='<?php echo $two_factor_premium_doc['What happens if my phone is lost, discharged or not with me'];?>' target="_blank">
236
 
237
  <?php echo mo2f_tooltip_array($premium_feature_tooltip_array[6]); ?>
238
  <div id="mo2f_hide_login" style="display: none;">
239
+ <?php
240
  echo '<div style="text-align:center;"><img style="margin-top:5px;" src="'.$hide_login_form_url.'"></div><br>';?>
241
  </div>
242
 
views/twofa/two_fa_rba.php CHANGED
@@ -3,7 +3,7 @@ $setup_dirName = dirname(dirname(dirname(__FILE__))).DIRECTORY_SEPARATOR.'views'
3
  include $setup_dirName;
4
 
5
  ?>
6
- <div class="mo2f_table_divide_border">
7
  <form id="settings_from_addon" method="post" action="">
8
  <input type="hidden" name="option" value="mo_auth_addon_settings_save"/>
9
  <h2><?php echo mo2f_lt( '1. Remember Device' ); ?>
@@ -40,7 +40,7 @@ include $setup_dirName;
40
 
41
 
42
  </p>
43
- <div style="background-color: aliceblue; border:none;">
44
  <h3 style="display: inline;float: left">Device Configuration</h3><h3 style="color: red;"><b >&nbsp;&nbsp;&nbsp;&nbsp;
45
  </b></h3><hr>
46
  <label class="mo_wpns_switch">
@@ -77,7 +77,7 @@ include $setup_dirName;
77
  document.getElementById("set_device_limit_button").disabled = true;
78
  </script>
79
  </div>
80
- <div style="padding-top: 10px; padding-bottom: 10px">
81
  <h3><?php echo mo2f_lt( 'IP Restriction: Limit users to login from specific IPs' ); ?> <a class="mo2fa-addons-preview-alignment" onclick="mo2f_rba_functionality1()">&nbsp;&nbsp;See Preview</a> </h3>
82
  <hr>
83
  <p><?php echo mo2f_lt( 'The Admin can enable IP restrictions for the users. It will provide additional security to the accounts and perform different action to the accounts only from the listed IP Ranges. If user tries to access with a restricted IP, Admin can set three action: Allow, challenge or deny. Depending upon the action it will allow the user to login, challenge(prompt) for authentication or deny the access.' ); ?>
@@ -87,7 +87,7 @@ include $setup_dirName;
87
  <br><br>
88
 
89
  </p>
90
- <div style="background-color: aliceblue; border:none;">
91
  <h2 style="display: inline;float: left">IP Blocking Configuration </h2><h3 style="color: red;"></h3><hr>
92
  <label class="mo_wpns_switch">
93
  <input type="checkbox" id="pluginWAF" name="pluginWAF" <?php echo 'disabled'; ?>>
3
  include $setup_dirName;
4
 
5
  ?>
6
+ <div class="mo2f_table_layout">
7
  <form id="settings_from_addon" method="post" action="">
8
  <input type="hidden" name="option" value="mo_auth_addon_settings_save"/>
9
  <h2><?php echo mo2f_lt( '1. Remember Device' ); ?>
40
 
41
 
42
  </p>
43
+ <div class="mo2f_table_layout" style="background-color: aliceblue; border:none;">
44
  <h3 style="display: inline;float: left">Device Configuration</h3><h3 style="color: red;"><b >&nbsp;&nbsp;&nbsp;&nbsp;
45
  </b></h3><hr>
46
  <label class="mo_wpns_switch">
77
  document.getElementById("set_device_limit_button").disabled = true;
78
  </script>
79
  </div>
80
+ <div>
81
  <h3><?php echo mo2f_lt( 'IP Restriction: Limit users to login from specific IPs' ); ?> <a class="mo2fa-addons-preview-alignment" onclick="mo2f_rba_functionality1()">&nbsp;&nbsp;See Preview</a> </h3>
82
  <hr>
83
  <p><?php echo mo2f_lt( 'The Admin can enable IP restrictions for the users. It will provide additional security to the accounts and perform different action to the accounts only from the listed IP Ranges. If user tries to access with a restricted IP, Admin can set three action: Allow, challenge or deny. Depending upon the action it will allow the user to login, challenge(prompt) for authentication or deny the access.' ); ?>
87
  <br><br>
88
 
89
  </p>
90
+ <div class="mo2f_table_layout" style="background-color: aliceblue; border:none;">
91
  <h2 style="display: inline;float: left">IP Blocking Configuration </h2><h3 style="color: red;"></h3><hr>
92
  <label class="mo_wpns_switch">
93
  <input type="checkbox" id="pluginWAF" name="pluginWAF" <?php echo 'disabled'; ?>>
views/twofa/two_fa_session_control.php CHANGED
@@ -1,5 +1,5 @@
1
- <div>
2
- <div class="mo2f_table_divide_border">
3
  <h2>4. Session Control
4
  <span style="text-align: right;font-size: large;"><?php echo '<a href="'.$addons_url .'" style="color: red">'; ?>[ PREMIUM ]</a></span>
5
  </h2><hr>
@@ -33,7 +33,8 @@
33
  <input type="radio" name="mo2f_allow_access" id="mo2f_block_access" value="block">Block Access
34
  </div>
35
  </div>
36
- <div class="mo2f_table_divide_border">
 
37
  <table style="width:100%">
38
  <tr>
39
  <th align="left">
1
+ <div class="mo2f_table_layout">
2
+ <div>
3
  <h2>4. Session Control
4
  <span style="text-align: right;font-size: large;"><?php echo '<a href="'.$addons_url .'" style="color: red">'; ?>[ PREMIUM ]</a></span>
5
  </h2><hr>
33
  <input type="radio" name="mo2f_allow_access" id="mo2f_block_access" value="block">Block Access
34
  </div>
35
  </div>
36
+ <hr>
37
+ <div>
38
  <table style="width:100%">
39
  <tr>
40
  <th align="left">
views/twofa/two_fa_setup_notification.php CHANGED
@@ -27,7 +27,7 @@ function mo2f_display_test_2fa_notification( $user ) {
27
  <div class="modal-content" style="width:660px !important;">
28
  <center>
29
  <div class="modal-header">
30
- <h2 class="mo2f_modal-title" style="color: #2271b1;">2FA Setup Successful.</h2>
31
  <span type="button" id="test-methods" class="modal-span-close" data-dismiss="modal">&times;</span>
32
  </div>
33
  <div class="mo2f_modal-body">
27
  <div class="modal-content" style="width:660px !important;">
28
  <center>
29
  <div class="modal-header">
30
+ <h2 class="mo2f_modal-title" style="color: #20b2aa;">2FA Setup Successful.</h2>
31
  <span type="button" id="test-methods" class="modal-span-close" data-dismiss="modal">&times;</span>
32
  </div>
33
  <div class="mo2f_modal-body">
views/twofa/two_fa_shortcode.php CHANGED
@@ -4,7 +4,7 @@ $setup_dirName = dirname(dirname(dirname(__FILE__))).DIRECTORY_SEPARATOR.'views'
4
  $current_user = wp_get_current_user();
5
  ?>
6
 
7
- <div class="mo2f_table_divide_border">
8
 
9
 
10
  <div id="mo2f_hide_shortcode_content" >
@@ -45,7 +45,7 @@ $setup_dirName = dirname(dirname(dirname(__FILE__))).DIRECTORY_SEPARATOR.'views'
45
  ?> value="<?php echo get_option('mo2f_rba_loginform_id') ?>"/>
46
  <br><br>
47
  <input type="hidden" name="option" value="custom_login_form_save"/>
48
- <input type="submit" name="submit" value="Save Settings" style="background-color: #2271b1; color: white;" class="button button-primary button-large" <?php
49
 
50
  echo 'disabled';
51
  ?> />
4
  $current_user = wp_get_current_user();
5
  ?>
6
 
7
+ <div class="mo2f_table_layout">
8
 
9
 
10
  <div id="mo2f_hide_shortcode_content" >
45
  ?> value="<?php echo get_option('mo2f_rba_loginform_id') ?>"/>
46
  <br><br>
47
  <input type="hidden" name="option" value="custom_login_form_save"/>
48
+ <input type="submit" name="submit" value="Save Settings" style="background-color: #20b2aa; color: white;" class="button button-primary button-large" <?php
49
 
50
  echo 'disabled';
51
  ?> />
views/twofa/two_fa_unlimittedUser.php CHANGED
@@ -59,9 +59,8 @@ $imagepath=plugins_url( '/includes/images/', dirname(dirname(__FILE__ )));
59
  <?php
60
  if(current_user_can('administrator')){
61
  ?>
62
- <div id="disable_two_factor_tour">
63
-
64
 
 
65
  <h2>Enable 2FA for Users<?php echo mo2f_setting_tooltip_array($settings_tab_tooltip_array[0]); ?>
66
  <a href='<?php echo $two_factor_premium_doc['Enable/disable 2-factor Authentication'];?>' target="_blank">
67
  <span class="dashicons dashicons-text-page" title="More Information" style="font-size:19px;color:#4a47a3;float: right;"></span>
@@ -100,7 +99,7 @@ if(current_user_can('administrator')){
100
  <span class="mo_wpns_slider"></span>
101
  </label>
102
  </p>
103
-
104
  </form>
105
  </div>
106
  </br>
@@ -121,9 +120,9 @@ if(current_user_can('administrator')){
121
  <input type="hidden" id="mo2f_delete_logs" name="option"
122
  value="log_file_delete"/>
123
  </form>
124
- <?php } ?>
125
  </br><hr>
126
- </br>
127
  <h2>2FA Prompt on Wordpress Login Page
128
  <a class=" btn-link" data-toggle="collapse" id="showpreviewwploginpage" href="#previewwploginpage" aria-expanded="false"><?php echo __('See preview','miniorange-2-factor-authentication');?></a>
129
  <?php echo mo2f_setting_tooltip_array($settings_tab_tooltip_array[1]); ?>
@@ -153,7 +152,7 @@ if(current_user_can('administrator')){
153
  <h2>On the Fly 2FA Configuration
154
  <?php echo mo2f_setting_tooltip_array($settings_tab_tooltip_array[2]); ?>
155
  </h2>
156
-
157
  <div>
158
  <form name="f" method="post" action="" >
159
  <input type="hidden" id="mo2f_nonce_enable_inline" name="mo2f_nonce_enable_inline"
@@ -168,30 +167,15 @@ if(current_user_can('administrator')){
168
  </form>
169
  </div>
170
  </br><hr>
171
- <h2>Enable the login with all configured methods
172
- <?php echo mo2f_setting_tooltip_array($settings_tab_tooltip_array[2]); ?>
173
- </h2>
174
- <div>
175
- <form name="f" method="post" action="" >
176
- <label class="mo_wpns_switch" style="float: right;">
177
- <input type="checkbox" onChange="mo_toggle_configured_methods()" style="padding-top: 50px;float: right;" id="mo2f_nonce_enable_configured_methods"
178
- name="mo2f_nonce_enable_configured_methods"
179
- value="<?php MoWpnsUtility::get_mo2f_db_option('mo2f_nonce_enable_configured_methods', 'site_option') ?>" <?php checked( MoWpnsUtility::get_mo2f_db_option('mo2f_nonce_enable_configured_methods', 'site_option') == true);?>/>
180
- <span class="mo_wpns_slider"></span>
181
- </label>
182
- <p>It will help the user to login with any of the configured methods</p>
183
- </form>
184
- </div>
185
- </br><hr>
186
  <script type="text/javascript">
187
 
188
  jQuery('#mo2f_debug_delete_form').click(function(){
189
-
190
  var data = {
191
  'action' : 'mo_two_factor_ajax',
192
  'mo_2f_two_factor_ajax' : 'mo2f_delete_log_file',
193
  'mo2f_nonce_delete_log' : jQuery('#mo2f_delete_log').val(),
194
-
195
  };
196
  jQuery.post(ajaxurl, data, function(response) {
197
  var response = response.replace(/\s+/g,' ').trim();
@@ -201,9 +185,9 @@ if(current_user_can('administrator')){
201
  error_msg("Log file is not available.");
202
  }
203
  });
 
204
 
205
-
206
-
207
  });
208
 
209
  function mo_toggle_twofa(){
@@ -234,10 +218,10 @@ if(current_user_can('administrator')){
234
  var response = response.replace(/\s+/g,' ').trim();
235
  if (response == "true"){
236
  success_msg("Plugin log is now enabled.");
237
-
238
  }else{
239
  error_msg("Plugin log is now disabled.");
240
-
241
  }
242
  });
243
 
@@ -287,34 +271,12 @@ if(current_user_can('administrator')){
287
  }
288
  });
289
 
290
- }
291
- function mo_toggle_configured_methods(){
292
- var nonce = '<?php echo wp_create_nonce("WAFsettingNonce_configurd_methods");?>';
293
- var data = {
294
- 'action' : 'mo_two_factor_ajax',
295
- 'mo_2f_two_factor_ajax' : 'mo2f_enable_disable_configurd_methods',
296
- 'nonce' : nonce,
297
- 'mo2f_nonce_enable_configured_methods' : jQuery('#mo2f_nonce_enable_configured_methods').is(":checked")
298
- };
299
- jQuery.post(ajaxurl, data, function(response) {
300
- var response = response.replace(/\s+/g,' ').trim();
301
- if (response == "true"){
302
- success_msg('Login with the configured method is enabled');
303
- }
304
- else if (response == "error"){
305
- error_msg('Unknown error occured. Please try again!');
306
- }
307
- else{
308
- error_msg('Login with the configured method is disabled');
309
- }
310
- });
311
-
312
  }
313
  jQuery('#previewwploginpage').hide();
314
  jQuery('#showpreviewwploginpage').on('click', function() {
315
- if ( jQuery("#previewwploginpage").is(":visible") ) {
316
  jQuery('#previewwploginpage').hide();
317
- } else if ( jQuery("#previewwploginpage").is(":hidden") ) {
318
  jQuery('#previewwploginpage').show();
319
  }
320
  });
@@ -326,7 +288,7 @@ if(current_user_can('administrator')){
326
  if(current_user_can('administrator'))
327
  {
328
  ?>
329
-
330
  <input type="hidden" name="option" value="" />
331
  <span>
332
  <h2>Select User Roles to enable 2-Factor for <b style="font-size: 70%;color: red;">(Upto 3 users in Free version)</b>
@@ -334,9 +296,9 @@ if(current_user_can('administrator'))
334
  <a href= '<?php echo $two_factor_premium_doc['Enable 2FA Role Based'];?>' target="_blank">
335
  <span class="dashicons dashicons-text-page" title="More Information" style="font-size:19px;color:#4a47a3;float: right;"></span>
336
  </a></h2>
337
- </br>
338
  <span>
339
-
340
  <?php
341
  echo miniorange_2_factor_user_roles($current_user);
342
  ?>
@@ -346,8 +308,8 @@ if(current_user_can('administrator'))
346
  <br>
347
  </span>
348
  <br><br>
349
-
350
-
351
 
352
  <script>
353
  jQuery("#save_role_2FA").click(function(){
@@ -404,7 +366,7 @@ if(current_user_can('administrator'))
404
  jQuery('#mo2f_configured_2FA_method_free_plan').val('SecurityQuestions');
405
  jQuery('#mo2f_selected_action_free_plan').val('configure2factor');
406
  jQuery('#mo2f_save_free_plan_auth_methods_form').submit();
407
- mo2f_wpns_openTab2fa(setup_2fa);
408
  }
409
  else
410
  {
@@ -430,7 +392,7 @@ if(current_user_can('administrator'))
430
  jQuery('#mo2f_configured_2FA_method_free_plan').val('GoogleAuthenticator');
431
  jQuery('#mo2f_selected_action_free_plan').val('configure2factor');
432
  jQuery('#mo2f_save_free_plan_auth_methods_form').submit();
433
- mo2f_wpns_openTab2fa(setup_2fa);
434
  }
435
  else
436
  {
59
  <?php
60
  if(current_user_can('administrator')){
61
  ?>
 
 
62
 
63
+ <div class="mo2f_table_layout" id="disable_two_factor_tour">
64
  <h2>Enable 2FA for Users<?php echo mo2f_setting_tooltip_array($settings_tab_tooltip_array[0]); ?>
65
  <a href='<?php echo $two_factor_premium_doc['Enable/disable 2-factor Authentication'];?>' target="_blank">
66
  <span class="dashicons dashicons-text-page" title="More Information" style="font-size:19px;color:#4a47a3;float: right;"></span>
99
  <span class="mo_wpns_slider"></span>
100
  </label>
101
  </p>
102
+
103
  </form>
104
  </div>
105
  </br>
120
  <input type="hidden" id="mo2f_delete_logs" name="option"
121
  value="log_file_delete"/>
122
  </form>
123
+ <?php } ?>
124
  </br><hr>
125
+ </br>
126
  <h2>2FA Prompt on Wordpress Login Page
127
  <a class=" btn-link" data-toggle="collapse" id="showpreviewwploginpage" href="#previewwploginpage" aria-expanded="false"><?php echo __('See preview','miniorange-2-factor-authentication');?></a>
128
  <?php echo mo2f_setting_tooltip_array($settings_tab_tooltip_array[1]); ?>
152
  <h2>On the Fly 2FA Configuration
153
  <?php echo mo2f_setting_tooltip_array($settings_tab_tooltip_array[2]); ?>
154
  </h2>
155
+
156
  <div>
157
  <form name="f" method="post" action="" >
158
  <input type="hidden" id="mo2f_nonce_enable_inline" name="mo2f_nonce_enable_inline"
167
  </form>
168
  </div>
169
  </br><hr>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
170
  <script type="text/javascript">
171
 
172
  jQuery('#mo2f_debug_delete_form').click(function(){
173
+
174
  var data = {
175
  'action' : 'mo_two_factor_ajax',
176
  'mo_2f_two_factor_ajax' : 'mo2f_delete_log_file',
177
  'mo2f_nonce_delete_log' : jQuery('#mo2f_delete_log').val(),
178
+
179
  };
180
  jQuery.post(ajaxurl, data, function(response) {
181
  var response = response.replace(/\s+/g,' ').trim();
185
  error_msg("Log file is not available.");
186
  }
187
  });
188
+
189
 
190
+
 
191
  });
192
 
193
  function mo_toggle_twofa(){
218
  var response = response.replace(/\s+/g,' ').trim();
219
  if (response == "true"){
220
  success_msg("Plugin log is now enabled.");
221
+
222
  }else{
223
  error_msg("Plugin log is now disabled.");
224
+
225
  }
226
  });
227
 
271
  }
272
  });
273
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
274
  }
275
  jQuery('#previewwploginpage').hide();
276
  jQuery('#showpreviewwploginpage').on('click', function() {
277
+ if ( jQuery("#previewwploginpage").is(":visible") ) {
278
  jQuery('#previewwploginpage').hide();
279
+ } else if ( jQuery("#previewwploginpage").is(":hidden") ) {
280
  jQuery('#previewwploginpage').show();
281
  }
282
  });
288
  if(current_user_can('administrator'))
289
  {
290
  ?>
291
+
292
  <input type="hidden" name="option" value="" />
293
  <span>
294
  <h2>Select User Roles to enable 2-Factor for <b style="font-size: 70%;color: red;">(Upto 3 users in Free version)</b>
296
  <a href= '<?php echo $two_factor_premium_doc['Enable 2FA Role Based'];?>' target="_blank">
297
  <span class="dashicons dashicons-text-page" title="More Information" style="font-size:19px;color:#4a47a3;float: right;"></span>
298
  </a></h2>
299
+ </br>
300
  <span>
301
+
302
  <?php
303
  echo miniorange_2_factor_user_roles($current_user);
304
  ?>
308
  <br>
309
  </span>
310
  <br><br>
311
+
312
+
313
 
314
  <script>
315
  jQuery("#save_role_2FA").click(function(){
366
  jQuery('#mo2f_configured_2FA_method_free_plan').val('SecurityQuestions');
367
  jQuery('#mo2f_selected_action_free_plan').val('configure2factor');
368
  jQuery('#mo2f_save_free_plan_auth_methods_form').submit();
369
+ openTab2fa(setup_2fa);
370
  }
371
  else
372
  {
392
  jQuery('#mo2f_configured_2FA_method_free_plan').val('GoogleAuthenticator');
393
  jQuery('#mo2f_selected_action_free_plan').val('configure2factor');
394
  jQuery('#mo2f_save_free_plan_auth_methods_form').submit();
395
+ openTab2fa(setup_2fa);
396
  }
397
  else
398
  {
views/upgrade.php CHANGED
@@ -177,11 +177,11 @@ echo '
177
  <div class="mo_upgrade_toggle">
178
  <p class="mo_upgrade_toggle_2fa">
179
  <input type="radio" name="sitetype" value="Recharge" id="mo2f_2fa_plans" onclick="show_2fa_plans();" style="display: none;">
180
- <label for="mo2f_2fa_plans" class="mo2f_upgrade_toggle_lable" id="mo_2fa_lite_licensing_plans_title" style="display: none;">&nbsp;&nbsp;&nbsp;2-Factor Authentication</label>
181
- <label for="mo2f_2fa_plans" class="mo2f_upgrade_toggle_lable mo2f_active_plan" id="mo_2fa_lite_licensing_plans_title1" style="display: block;">&nbsp;&nbsp;&nbsp;2-Factor Authentication</label>
182
  <input type="radio" name="sitetype" value="Recharge" id="mo2f_ns_plans" onclick="mo_ns_show_plans();" style="display: none;">
183
- <label for="mo2f_ns_plans" class="mo2f_upgrade_toggle_lable" id="mo2f_ns_licensing_plans_title">Website Security</label>
184
- <label for="mo2f_ns_plans" class="mo2f_upgrade_toggle_lable mo2f_active_plan" id="mo_ns_licensing_plans_title1" style="display: none;">Website Security</label>
185
  </p>
186
  </div>
187
  <?php
@@ -196,114 +196,131 @@ echo '
196
  <div class="mo2f_upgrade_super_div" id="mo2f_twofa_plans">
197
  <div class="mo2f_upgrade_main_div">
198
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css" integrity="sha384-UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/" crossorigin="anonymous"/>
199
- <div id="mofa_pricing_tabs_mo" class="mo2fa_pricing_tabs_mo mo2fa_pricing_tabs_mo_premium_lite">
200
- <div class="mo2fa_pricing_head_blue">
201
- <div id="mo2fa_pricing_head" class="mo2fa_pricing_head_supporter"><center><h3 class="mo2fa_pricing_head_mo_2fa">Unlimited Users<br>&nbsp;&nbsp;&nbsp;Essestial 2FA <i class="mo2fa_tooltip fa fa-info-circle" aria-hidden="true"><span class="mo2fa_tooltiptext">
202
- Enforce 2FA for all users<br>
203
- Role-Based Authentication
204
- </span></i></h3></center></div><br><br>
205
-
206
- <div class="mo2fa_dollar"><center><span>$</span><span id="mo2fa_pricing_adder_site_based"></span><span class="mo2fa_per_year">/Year</span></center></div>
207
-
208
- <br>
209
- </div>
210
- <h3 class="mo2fa_plan-type"><b>PREMIUM LITE</b></h3>
211
- <div id="mo2fa_pricing_addons_site_based" class="mo2fa_pricing">
212
- <center>
213
- <div id="mo2fa_purchase_user_limit">
214
-
215
- <center>
216
- <select id="mo2fa_site_price" onchange="mo2fa_update_site_limit()" onclick="mo2fa_update_site_limit()" class="mo2fa_increase_my_limit">
217
- <option value="99">1 SITE</option>
218
- <option value="179">2 SITES</option>
219
- <option value="299">5 SITES </option>
220
- <option value="449">10 SITES</option>
221
- <option value="599">25 SITES</option>
222
-
223
- </select>
224
- </div>
225
 
226
- <div id="mo2fa_custom_my_plan_2fa_mo">
227
- <center>
228
- <?php if( isset($is_customer_registered) && $is_customer_registered) { ?>
229
- <a onclick="mo2f_upgradeform('wp_security_two_factor_premium_lite_plan','2fa_plan')" target="blank"><button class="mo2fa_upgrade_my_plan">Upgrade</button></a>
230
- <?php }else{ ?>
231
- <a onclick="mo2f_register_and_upgradeform('wp_security_two_factor_premium_lite_plan','2fa_plan')" target="blank"><button class="mo2fa_upgrade_my_plan">Upgrade</button></a>
232
- <?php }?>
233
- </center>
234
- </div>
235
  </center>
236
  </div>
237
 
238
- <div id="mo2fa_pricing_feature_collection_supporter" class="mo2fa_pricing_feature_collection_supporter">
239
- <div id="mo2fa_pricing_feature_collection" class="mo2fa_pricing_feature_collection">
240
  <ul class="mo2fa_ul">
241
- <center><p class="mo2fa_feature"><strong>Features</strong></p></center>
242
-
243
-
244
-
245
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><span class="mo2fa_on_per_tooltip_methodlist">
246
- On-Premise <i class="fa fa-info-circle fa-xs" aria-hidden="true"></i> <span class="mo2fa_methodlist"t>Users' data is stored on their end.</span></span>
247
- </li>
248
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature">Single Site Support</li>
249
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature">Unlimited Email Transactions</li>
250
-
251
  <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature">
252
- <span class="mo2fa_tooltip_methodlist">10+ Authentication Methods <i class="fa fa-info-circle fa-xs" aria-hidden="true"></i>
253
- <span class="mo2fa_methodlist"t>
 
254
  <ul class="methods-list-mo2fa" style="margin-left: -43px; ">
255
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">Google Authenticator</li>
256
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">OTP Over SMS</li>
257
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">OTP Over Email</li>
258
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">Email Verification</li>
259
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">Security Questions</li>
260
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">Authy Authenticator</li>
261
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">Microsoft Authenticator</li>
262
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">LastPass Authenticator</li>
263
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">FreeOTP Authenticator</li>
264
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">Duo Mobile Authenticator</li>
265
- <li class="feature_collect_mo-2fa mo2fa_method-list-mo-size-cross">miniOrange QR Code Authenticator</li>
266
- <li class="feature_collect_mo-2fa mo2fa_method-list-mo-size-cross">miniOrange Soft Token</li>
267
- <li class="feature_collect_mo-2fa mo2fa_method-list-mo-size-cross">miniOrange Push Notification</li>
268
- <li class="feature_collect_mo-2fa mo2fa_method-list-mo-size-cross">OTP Over SMS and Email</li>
269
- <li class="feature_collect_mo-2fa mo2fa_method-list-mo-size-cross">Hardware Token</li>
270
-
 
271
  </ul>
272
  </span>
273
  </span>
274
  </li>
275
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><span class="mo2fa_enforce_2fa_tooltip_methodlist">Enforce 2FA Set-up For Users <i class="fa fa-info-circle fa-xs" aria-hidden="true"></i><span class="mo2fa_methodlist"t>Enforce users to set their 2FA after installing the plugin</span></span> </li>
276
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"> 2+ Backup Login Methods</li>
277
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><span class="mo2fa_redirect_tooltip_methodlist"> Custom Redirection URL <i class="fa fa-info-circle fa-xs" aria-hidden="true"></i><span class="mo2fa_methodlist"t>Redirects users to the specific Url after login(can be configured according to user role)</span></span></li>
278
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><span class="mo2fa_role_tooltip_methodlist"> Role-Based 2FA <i class="fa fa-info-circle fa-xs" aria-hidden="true"></i> <span class="mo2fa_methodlist"t>You can enable 2FA for specific user role</span></span></li>
279
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><span class="mo2fa_rba_tooltip_methodlist"> Silently Remember Device <i class="fa fa-info-circle fa-xs" aria-hidden="true"></i><span class="mo2fa_methodlist"t>It allows option to silently remember your devices. 2FA will be skipped for trusted device. </span></span></li>
280
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"> <br></li>
281
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"> <br></li>
282
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"> <br></li>
283
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"> <br></li>
284
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"> <br></li>
285
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"> <br></li>
286
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"> <br></li>
287
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"> <br></li>
288
-
289
-
290
  </ul>
291
 
292
  </div>
293
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
294
 
 
 
 
 
 
 
 
 
 
 
 
295
  </div>
296
  <script>
297
  var base_price_site_based =0;
298
  var display_my_site_based_price = parseInt(base_price_site_based)+parseInt(0)+parseInt(0)+parseInt(0);
299
- document.getElementById("mo2fa_pricing_adder_site_based").innerHTML = + display_my_site_based_price;
300
- jQuery('#mo2fa_site_price').click();
301
- function mo2fa_update_site_limit() {
302
- var users = document.getElementById("mo2fa_site_price").value;
303
- var sms_user_selection= 0;
304
  var users_addion = parseInt(base_price_site_based)+parseInt(users)+parseInt(sms_user_selection);
305
 
306
- document.getElementById("mo2fa_pricing_adder_site_based").innerHTML = + users_addion;
 
 
 
 
 
 
 
 
 
 
307
 
308
  }
309
 
@@ -312,40 +329,100 @@ Role-Based Authentication
312
  </div>
313
 
314
 
315
- <div class="mo2f_upgrade_main_div" id="mo2f_upgrade_main_div">
316
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css" integrity="sha384-UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/" crossorigin="anonymous">
317
 
318
- <div id="mofa_pricing_tabs_mo" class="mo2fa_pricing_tabs_mo mo2fa_pricing_tabs_mo_premium">
319
- <div class="mo2fa_pricing_head_blue">
320
-
321
- <div id="mo2fa_pricing_head_all_inclusive" class="mo2fa_pricing_head_supporter"><center><h3 class="mo2fa_pricing_head_mo_2fa">Unlimited Users<br>&nbsp;&nbsp;&nbsp;&nbsp;Advanced 2FA <i class="mo2fa_tooltip fa fa-info-circle" aria-hidden="true"><span class="mo2fa_tooltiptext">
322
- Essential 2FA<br>
323
- Security Features<br>
324
- Addons
325
- </span></i><br>Website Security</h3></center></div><br><br>
326
-
327
- <div class="mo2fa_dollar"> <center><span>$</span><span id="mo2fa_display_my_all_inclusive_pricing"></span><span class="mo2fa_per_year">/Year</span></center></div>
328
- <br>
329
- </div>
330
- <h3 class="mo2fa_plan-type"><b>PREMIUM</b></h3>
 
331
 
332
- <div id="mo2fa_pricing_addons_all_inclusive" class="mo2fa_pricing">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
333
  <div id="purchase_user_limit_all_inclusive">
334
-
335
- <center>
336
- <select id="mo2fa_all_inclusive_price_mo" onclick="mo2fa_update_site_limit_all_inclusive()" onchange="mo2fa_update_site_limit_all_inclusive()" class="mo2fa_increase_my_limit">
337
- <option value="199">1 SITE</option>
338
- <option value="299">2 SITES</option>
339
- <option value="499">5 SITES</option>
340
- <option value="799">10 SITES</option>
341
- <option value="1099">25 SITES</option>
342
-
 
 
343
  </select>
344
  </center>
345
  </div>
346
-
347
-
348
- <div id="mo2fa_custom_my_plan_2fa_mo">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
349
  <center>
350
  <?php if( isset($is_customer_registered) && $is_customer_registered) { ?>
351
  <a onclick="mo2f_upgradeform('wp_security_two_factor_all_inclusive_plan','2fa_plan')" target="blank"><button class="mo2fa_upgrade_my_plan">Upgrade</button></a>
@@ -355,85 +432,28 @@ Addons
355
  </center>
356
  </div>
357
  </div>
358
-
359
- <div id="mo2fa_pricing_feature_collection_supporter_all_inclusive" class="mo2fa_pricing_feature_collection_supporter">
360
- <div id="mo2fa_pricing_feature_collection_all_inclusive" class="mo2fa_pricing_feature_collection">
361
- <ul class="mo2fa_ul">
362
- <center><p class="mo2fa_feature"><strong>Features</strong></p></center>
363
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><span class="mo2fa_on_per_tooltip_methodlist">On-Premise <i class="fa fa-info-circle fa-xs" aria-hidden="true"></i><span class="mo2fa_methodlist"t>Users' data is stored on their end.</span></span></li>
364
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature" title="Only 3 sub-sites supported">Multisite Support (Only 3 subsites)</li>
365
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature">Unlimited Email Transactions</li>
366
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><span class="mo2fa_tooltip_methodlist">10+ Authentication Methods <i class="fa fa-info-circle fa-xs" aria-hidden="true"></i>
367
- <span class="mo2fa_methodlist"t>
368
- <ul class="methods-list-mo2fa" style="margin-left: -43px;">
369
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">Google Authenticator</li>
370
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">OTP Over SMS</li>
371
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">OTP Over Email</li>
372
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">Email Verification</li>
373
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">Security Questions</li>
374
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">OTP Over Whatsapp</li>
375
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">Authy Authenticator</li>
376
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">Microsoft Authenticator</li>
377
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">LastPass Authenticator</li>
378
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">FreeOTP Authenticator</li>
379
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">Duo Mobile Authenticator</li>
380
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">OTP Over Telegram</li>
381
- <li class="feature_collect_mo-2fa mo2fa_method-list-mo-size-cross">miniOrange QR Code Authenticator</li>
382
- <li class="feature_collect_mo-2fa mo2fa_method-list-mo-size-cross">miniOrange Soft Token</li>
383
- <li class="feature_collect_mo-2fa mo2fa_method-list-mo-size-cross">miniOrange Push Notification</li>
384
- <li class="feature_collect_mo-2fa mo2fa_method-list-mo-size-cross">OTP Over SMS and Email</li>
385
- <li class="feature_collect_mo-2fa mo2fa_method-list-mo-size-cross">Hardware Token</li>
386
- </ul>
387
- </span>
388
- </span></li>
389
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><span class="mo2fa_enforce_2fa_tooltip_methodlist">Enforce 2FA Set-up For Users <i class="fa fa-info-circle fa-xs" aria-hidden="true"></i><span class="mo2fa_methodlist"t>Enforce users to set their 2FA after installing the plugin</span></span></li>
390
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"> 3+ Backup Login Methods</li>
391
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><span class="mo2fa_redirect_tooltip_methodlist">Custom Redirection URL <i class="fa fa-info-circle fa-xs" aria-hidden="true"></i><span class="mo2fa_methodlist"t>Redirects users to the specific Url after login(can be configured according to user role)</span></span></li>
392
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><span class="mo2fa_role_tooltip_methodlist">Role-Based 2FA <i class="fa fa-info-circle fa-xs" aria-hidden="true"></i><span class="mo2fa_methodlist"t>You can enable 2FA for specific user role</span></span></li>
393
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><span class="mo2fa_rba_tooltip_methodlist">Remember Device <i class="fa fa-info-circle fa-xs" aria-hidden="true"></i> <span class="mo2fa_methodlist"t> It give users the option to rememeber device.Skip 2FA for trusted device</span></span></li>
394
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature">Passwordless Login </li>
395
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><span class="mo2fa_custom_sms_tooltip_methodlist">Custom SMS Gateway <i class="fa fa-info-circle fa-xs" aria-hidden="true"></i><span class="mo2fa_methodlist"t>You can integrate your own SMS gateway with miniOrange</span></span></li>
396
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><span class="mo2fa_shortcode_tooltip_methodlist">Shortcode Addon <i class="fa fa-info-circle fa-xs" aria-hidden="true"></i> <span class="mo2fa_methodlist"t>
397
- 1. 2FA Shortcode - Use to add 2FA on any page.<br>
398
- 2. Reconfigure 2FA Addon - Add on to reconfiigure 2FA.
399
- </span></span></li>
400
- <li class="mo2fa_per_feature_collect_mo-2fa mo2fa_unltimate_feature">
401
- <span class="mo2fa_per_tooltip_methodlist">Personalisation Addon <i class="fa fa-info-circle fa-xs" aria-hidden="true"></i><span class="mo2fa_methodlist"t>
402
- <ul class="methods-list-mo2fa" style="margin-left: -43px;">
403
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">Customize 2FA Login Screen</li>
404
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">Customize Email Template</li>
405
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">Customize Security Questions </li>
406
- </ul>
407
- </span>
408
- </span>
409
- </li>
410
-
411
-
412
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature">Page Restriction Addon</li>
413
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><span class="mo2fa_fido_tooltip_methodlist">FIDO2/WebAuthn <i class="fa fa-info-circle fa-xs" aria-hidden="true"></i><span class="mo2fa_methodlist"t>Allows you to login to any site using device credentials.</span></span></li>
414
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature">Concurrent Session Restriction </li>
415
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature">Skip 2FA For Specified IP </li>
416
-
417
-
418
-
419
-
420
- </ul>
421
-
422
- </div>
423
- </div>
424
-
425
  </div>
426
  <script>
427
 
428
  var base_price_site_all_inclusive =0;
429
  var display_my_all_inclusive_price = parseInt(base_price_site_all_inclusive)+parseInt(0)+parseInt(0)+parseInt(0);
430
- document.getElementById("mo2fa_display_my_all_inclusive_pricing").innerHTML = + display_my_all_inclusive_price;
431
- jQuery('#mo2fa_all_inclusive_price_mo').click();
432
- function mo2fa_update_site_limit_all_inclusive() {
433
- var sites_all_inclusive = document.getElementById("mo2fa_all_inclusive_price_mo").value;
434
- var total_inclusive = parseInt(base_price_site_all_inclusive)+parseInt(sites_all_inclusive);
 
 
 
 
 
435
 
436
- document.getElementById("mo2fa_display_my_all_inclusive_pricing").innerHTML = + total_inclusive;
 
 
 
 
 
437
 
438
  }
439
 
@@ -443,124 +463,144 @@ Addons
443
  <div class="mo2f_upgrade_main_div">
444
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css" integrity="sha384-UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/" crossorigin="anonymous">
445
 
446
- <div id="mofa_pricing_tabs_mo" class="mo2fa_pricing_tabs_mo mo2fa_pricing_tabs_mo_enterprise">
447
- <div class="mo2fa_pricing_head_sky">
448
- <div id="mo2fa_pricing_head" class="mo2fa_pricing_head_supporter">
449
- <center><h3 class="mo2fa_pricing_head_mo_2fa">Unlimited Sites<br> <div class="mo2fa_web_sec">Website Security</div></h3> </center>
450
- </div><br><br>
451
- <div id="mo2fa_pricing_head_cost" class="mo2fa_pricing_head_supporter">
452
- <div class="mo2fa_dollar"> <center><span>$</span><span id="mo2fa_pricing_adder"></span><span class="mo2fa_per_year">/Year</span></center></div>
453
 
 
 
 
 
 
 
454
  </div>
455
- </div>
456
- <h3 class="mo2fa_plan-type"><b>ENTERPRISE</b></h3>
457
 
458
- <div id="mo2fa_pricing_addons" class="mo2fa_pricing">
459
  <center>
460
- <div id="mo2fa_purchase_user_limit">
461
-
462
- <center>
463
- <select id="mo2fa_user_price" onclick="mo2fa_update_user_limit()" onchange="mo2fa_update_user_limit()" class="mo2fa_increase_my_limit">
464
- <option value="59">5 USERS</option>
465
- <option value="128" selected>50 USERS</option>
466
- <option value="228">100 USERS</option>
467
- <option value="378">500 USERS</option>
468
- <option value="528">1K USERS</option>
469
- <option value="828">5K USERS</option>
470
- <option value="1028">10K USERS</option>
471
- <option value="1528">20K USERS</option>
472
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
473
  </select>
474
  </center>
475
  </div>
476
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
477
 
478
  <div id="details">
479
  <center>
480
  <?php if( isset($is_customer_registered) && $is_customer_registered) { ?>
481
- <a onclick="mo2f_upgradeform('wp_2fa_enterprise_plan','2fa_plan')" target="blank"><button class="mo2fa_upgrade_my_plan_ent">Upgrade</button></a>
482
  <?php }else{ ?>
483
- <a onclick="mo2f_register_and_upgradeform('wp_2fa_enterprise_plan','2fa_plan')" target="blank"><button class="mo2fa_upgrade_my_plan_ent">Upgrade</button></a>
484
  <?php }?>
485
  </center>
486
  </div>
487
  </center>
488
- </div>
489
-
490
-
491
- <div id="mo2fa_pricing_feature_collection_supporter" class="mo2fa_pricing_feature_collection_supporter">
492
-
493
-
494
- <div id="mo2fa_pricing_feature_collection" class="mo2fa_pricing_feature_collection">
495
- <ul class="mo2fa_ul">
496
- <center><p class="mo2fa_feature"><strong>Features</strong></p></center>
497
-
498
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><span class="mo2fa_cloud_per_tooltip_methodlist">Cloud <i class="fa fa-info-circle fa-xs" aria-hidden="true"></i><span class="mo2fa_methodlist"t>Users data is stored on the miniOrange Cloud</span></span></li>
499
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature">Multisite Support</li>
500
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature">Email Transactions Extra</li>
501
-
502
- <li class="mo2fa_ent_feature_collect_mo-2fa mo2fa_unltimate_feature"><span class="mo2fa_ent_tooltip_methodlist">15+ Authentication Methods <i class="fa fa-info-circle fa-xs" aria-hidden="true"></i>
503
- <span class="mo2fa_methodlist"t>
504
- <ul class="methods-list-mo2fa" style="margin-left: -43px;">
505
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">Google Authenticator</li>
506
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">OTP Over SMS</li>
507
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">OTP Over Email</li>
508
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">Email Verification</li>
509
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">OTP Over SMS and Email</li>
510
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">Security Questions</li>
511
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">Authy Authenticator</li>
512
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">Microsoft Authenticator</li>
513
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">LastPass Authenticator</li>
514
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">FreeOTP Authenticator</li>
515
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">Duo Mobile Authenticator</li>
516
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">miniOrange QR Code Authentication</li>
517
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">miniOrange Soft Token</li>
518
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">miniOrange Push Notification</li>
519
- <li class="feature_collect_mo-2fa mo2fa_method-list-size">Hardware Token</li>
520
- <li class="feature_collect_mo-2fa mo2fa_method-list-mo-size-cross">OTP Over Whatsapp</li>
521
- </ul>
522
- </span>
523
- </span></li>
524
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><span class="mo2fa_ent_enforce_2fa_tooltip_methodlist">Enforce 2FA Set-up For Users <i class="fa fa-info-circle fa-xs" aria-hidden="true"></i><span class="mo2fa_methodlist"t>Enforce users to set their 2FA after installing the plugin</span></span></li>
525
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"> 3+ Backup Login Methods</li>
526
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><span class="mo2fa_ent_redirect_tooltip_methodlist">Custom Redirection URL <i class="fa fa-info-circle fa-xs" aria-hidden="true"></i><span class="mo2fa_methodlist"t>Redirects users to the specific Url after login(can be configured according to user role)</span></span></li>
527
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><span class="mo2fa_ent_role_tooltip_methodlist">Role-Based 2FA <i class="fa fa-info-circle fa-xs" aria-hidden="true"></i><span class="mo2fa_methodlist"t>You can enable 2FA for specific user role</span></span></li>
528
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><span class="mo2fa_ent_rba_tooltip_methodlist">Remember Device <i class="fa fa-info-circle fa-xs" aria-hidden="true"></i><span class="mo2fa_methodlist"t> It give users the option to rememeber device.Skip 2FA for trusted device</span></span></li>
529
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature">Passwordless login </li>
530
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><span class="mo2fa_ent_custom_sms_tooltip_methodlist">Custom SMS Gateway <i class="fa fa-info-circle fa-xs" aria-hidden="true"></i><span class="mo2fa_methodlist"t>
531
- You can integrate your own SMS gateway with miniOrange</span><span></li>
532
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><span class="mo2fa_shortcode_ent_tooltip_methodlist">Shortcode Addon <i class="fa fa-info-circle fa-xs" aria-hidden="true"></i> <span class="mo2fa_methodlist"t>
533
- 1. 2FA Shortcode - Use to add 2FA on any page.<br>
534
- 2. Reconfigure 2FA Addon - Addon to reconfiigure 2FA.</span>
535
- </li>
536
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"> <br></li>
537
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"> <br></li>
538
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"> <br></li>
539
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"> <br></li>
540
- <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"> <br></li>
541
-
542
-
543
- </ul>
544
-
545
- </div>
546
  </div>
547
-
548
  </div>
549
 
550
  <script>
551
  var base_price =0;
552
  var display_me = parseInt(base_price)+parseInt(30)+parseInt(0)+parseInt(0);
553
- document.getElementById("mo2fa_pricing_adder").innerHTML = + display_me;
554
- jQuery('#mo2fa_user_price').click();
555
- function mo2fa_update_user_limit() {
556
- var users = document.getElementById("mo2fa_user_price").value;
557
-
558
- var users_addion = parseInt(base_price)+parseInt(users);
559
 
560
- document.getElementById("mo2fa_pricing_adder").innerHTML = + users_addion;
561
 
562
  }
563
 
 
 
 
 
 
 
 
 
 
564
 
565
  </script>
566
 
@@ -568,12 +608,11 @@ Addons
568
  </div>
569
  <div id="mo2fa_compare">
570
  <center>
571
- <div class=""><a href="#mo2fa_more_deails" onclick="mo2fa_show_details()"><button class="mo2fa_upgrade_my_plan mo2fa_compare1">Click here to Compare Features</button></a></div>
572
- <div><a href="#mo2fa_details" onclick="mo2fa_show_details()"><button style="display: none;" class="mo2fa_upgrade_my_plan mo2fa_compare1">Click here to Hide Comparison</button></a></div>
573
  </center>
574
  </div>
575
-
576
- <div id="mo2fa_ns_features_only" style="display: none;">
577
 
578
  <div class="mo_wpns_upgrade_security_title" >
579
  <div class="mo_wpns_upgrade_page_title_name">
@@ -746,10 +785,10 @@ Addons
746
  </div>
747
  <center>
748
  <br>
749
- <div id="mo2fa_more_deails" style="display:none;">
750
  <div class="mo2fa_table-scrollbar"></br></br>
751
  <table class="table mo2fa_table_features table-striped">
752
- <caption class="pricing_head_mo_2fa" id="mo2fa_details"><h1>Feature Details</h1></caption>
753
  <thead>
754
  <tr class="mo2fa_main_category_header" style="font-size: 20px;">
755
  <th scope="col">Features</th>
@@ -773,48 +812,48 @@ Addons
773
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
774
 
775
  </tr>
776
- <tr class="mo2fa_bg_category_main">
777
  <th scope="row">Authentication Methods</th>
778
  <td></td>
779
  <td></td>
780
  <td></td>
781
  </tr>
782
  <tr>
783
- <th scope="row" class="mo2fa_category_feature">Google Authenticator</th>
784
  <td><center><i class="fas fa-check"></i></center></td>
785
  <td><center><i class="fas fa-check"></i></center></td>
786
  <td><center><i class="fas fa-check"></i></center></td>
787
  </tr>
788
  <tr>
789
- <th scope="row" class="mo2fa_category_feature">Security Questions</th>
790
  <td><center><i class="fas fa-check"></i></center></td>
791
  <td><center><i class="fas fa-check"></i></center></td>
792
  <td><center><i class="fas fa-check"></i></center></td>
793
 
794
  </tr>
795
  <tr>
796
- <th scope="row" class="mo2fa_category_feature">TOTP Based Authenticator</th>
797
  <td><center><i class="fas fa-check"></i></center></td>
798
  <td><center><i class="fas fa-check"></i></center></td>
799
  <td><center><i class="fas fa-check"></i></center></td>
800
 
801
  </tr>
802
  <tr>
803
- <th scope="row" class="mo2fa_category_feature">Authy Authenticator</th>
804
  <td><center><i class="fas fa-check"></i></center></td>
805
  <td><center><i class="fas fa-check"></i></center></td>
806
  <td><center><i class="fas fa-check"></i></center></td>
807
 
808
  </tr>
809
  <tr>
810
- <th scope="row" class="mo2fa_category_feature">Email Verification</th>
811
  <td><center><i class="fas fa-check"></i></center></td>
812
  <td><center><i class="fas fa-check"></i></center></td>
813
  <td><center><i class="fas fa-check"></i></center></td>
814
 
815
  </tr>
816
  <tr>
817
- <th scope="row" class="mo2fa_category_feature">OTP Over Email (Email Charges apply)</th>
818
  <td><center><i class="fas fa-check"></i></center></td>
819
  <td><center><i class="fas fa-check"></i></center></td>
820
  <td><center><i class="fas fa-check"></i></center></td>
@@ -822,7 +861,7 @@ Addons
822
 
823
  </tr>
824
  <tr>
825
- <th scope="row" class="mo2fa_category_feature">OTP Over SMS (SMS Charges apply)</th>
826
  <td><center><i class="fas fa-check"></i></center></td>
827
  <td><center><i class="fas fa-check"></i></center></td>
828
  <td><center><i class="fas fa-check"></i></center></td>
@@ -830,74 +869,74 @@ Addons
830
  </tr>
831
 
832
  <tr>
833
- <th scope="row" class="mo2fa_category_feature">miniOrange QR Code Authentication</th>
834
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
835
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
836
  <td><center><i class="fas fa-check"></i></center></td>
837
  </tr>
838
  <tr>
839
- <th scope="row" class="mo2fa_category_feature">miniOrange Soft Token</th>
840
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
841
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
842
  <td><center><i class="fas fa-check"></i></center></td>
843
  </tr>
844
  <tr>
845
- <th scope="row" class="mo2fa_category_feature">miniOrange Push Notification</th>
846
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
847
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
848
  <td><center><i class="fas fa-check"></i></center></td>
849
  </tr>
850
  <tr>
851
- <th scope="row" class="mo2fa_category_feature">OTP Over SMS and Email (SMS and Email Charges apply)</th>
852
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
853
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
854
  <td><center><i class="fas fa-check"></i></center></td>
855
 
856
  </tr>
857
  <tr>
858
- <th scope="row" class="mo2fa_category_feature">Hardware Token</th>
859
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
860
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
861
  <td><center><i class="fas fa-check"></i></center></td>
862
 
863
  </tr>
864
  <tr>
865
- <th scope="row" class="mo2fa_category_feature">OTP Over Whatsapp (Add-on)</th>
866
- <td><center></center></td>
867
  <td><center><i class="fas fa-check"></i></center></td>
868
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
869
  </tr>
870
  <tr>
871
- <th scope="row" class="mo2fa_category_feature">OTP Over Telegram</th>
872
- <td><center></center></td>
 
873
  <td><center><i class="fas fa-check"></i></center></td>
874
- <td><center></center></td>
875
  </tr>
876
- <tr class="mo2fa_bg_category_main">
877
  <th scope="row">Backup Login Methods</th>
878
  <td></td>
879
  <td></td>
880
  <td></td>
881
  </tr>
882
  <tr>
883
- <th scope="row" class="mo2fa_category_feature">Security Questions (KBA)</th>
884
  <td><center><i class="fas fa-check"></i></center></td>
885
  <td><center><i class="fas fa-check"></i></center></td>
886
  <td><center><i class="fas fa-check"></i></center></td>
887
  </tr>
888
  <tr>
889
- <th scope="row" class="mo2fa_category_feature">OTP Over Email</th>
890
  <td><center><i class="fas fa-check"></i></center></td>
891
  <td><center><i class="fas fa-check"></i></center></td>
892
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
893
  </tr>
894
  <tr>
895
- <th scope="row" class="mo2fa_category_feature">Backup Codes</th>
896
  <td><center><i class="fas fa-check"></i></center></td>
897
  <td><center><i class="fas fa-check"></i></center></td>
898
  <td><center><i class="fas fa-check"></i></center></td>
899
  </tr>
900
- <tr class="mo2fa_bg_category_main">
901
  <th scope="row">Password Policy</th>
902
  <td></td>
903
  <td></td>
@@ -905,12 +944,18 @@ Addons
905
 
906
  </tr>
907
  <tr>
908
- <th scope="row" class="mo2fa_category_feature">Passwordless Login</th>
909
  <td><center><i class="fas fa-check"></i></center></td>
910
  <td><center><i class="fas fa-check"></i></center></td>
911
  <td><center><i class="fas fa-check"></i></center></td>
912
  </tr>
913
-
 
 
 
 
 
 
914
  <tr>
915
  <th scope="row">Custom Gateway</th>
916
  <td><center><i class="fas fa-check"></i></center></td>
@@ -918,7 +963,7 @@ Addons
918
  <td><center><i class="fas fa-check"></i></center></td>
919
 
920
  </tr>
921
- <tr class="mo2fa_bg_category_main">
922
  <th scope="row">Add-Ons</th>
923
  <td></td>
924
  <td></td>
@@ -926,31 +971,47 @@ Addons
926
 
927
  </tr>
928
  <tr>
929
- <th scope="row" class="mo2fa_category_feature">Remember Device Add-on</br><p class="mo2fa_description">You can save your device using the Remember device addon and you will get a two-factor authentication </br>prompt to check your identity if you try to login from different devices.</p></th>
930
- <td><center><b>Separate</b></center></td>
931
- <td><center><b>Included</b></center></td>
932
- <td><center><b>Included</b></center></td>
933
  </tr>
934
  <tr>
935
- <th scope="row" class="mo2fa_category_feature">Personalization Add-on<p class="mo2fa_description">You'll get many more customization options in Personalization, such as </br>ustom Email and SMS Template, Custom Login Popup, Custom Security Questions, and many more.</p></th>
936
- <td><center><b>Separate</b></center></td>
937
- <td><center><b>Included</b></center></td>
938
- <td><center><b>Included</b></center></td>
939
  </tr>
940
  <tr>
941
- <th scope="row" class="mo2fa_category_feature">Short Codes Add-on<p class="mo2fa_description">Shortcode Add-ons mostly include Allow 2fa shortcode (you can use this this to add 2fa on any page), </br>Reconfigure 2fa add-on (you can use this add-on to reconfigure your 2fa if you have lost your 2fa verification ability), remember device shortcode.</p></th>
942
- <td><center><b>Separate</b></center></td>
943
- <td><center><b>Included</b></center></td>
944
- <td><center><b>Included</b></center></td>
945
  </tr>
946
  <tr>
947
- <th scope="row" class="mo2fa_category_feature">Session Management<p class="mo2fa_description">Session Management prevents account sharing and limits number of simultaneous sessions. It also supports session control, login limit, idle session logout feature.</th>
948
-
 
 
 
 
 
 
 
 
 
949
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
950
  <td><center><i class="fas fa-check"></i></center></td>
951
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
952
  </tr>
953
- <tr class="mo2fa_bg_category_main">
 
 
 
 
 
 
 
954
  <th scope="row">Advance Wordpress Login Settings</th>
955
  <td></td>
956
  <td></td>
@@ -958,56 +1019,56 @@ Addons
958
 
959
  </tr>
960
  <tr>
961
- <th scope="row" class="mo2fa_category_feature">Force Two Factor for Users</th>
962
  <td><center><i class="fas fa-check"></i></center></td>
963
  <td><center><i class="fas fa-check"></i></center></td>
964
  <td><center><i class="fas fa-check"></i></center></td>
965
  </tr>
966
  <tr>
967
- <th scope="row" class="mo2fa_category_feature">Role Based and User Based Authentication settings</th>
968
  <td><center><i class="fas fa-check"></i></center></td>
969
  <td><center><i class="fas fa-check"></i></center></td>
970
  <td><center><i class="fas fa-check"></i></center></td>
971
  </tr>
972
  <tr>
973
- <th scope="row" class="mo2fa_category_feature">Email Verififcation during Two-Factor Registration</th>
974
  <td><center><i class="fas fa-check"></i></center></td>
975
  <td><center><i class="fas fa-check"></i></center></td>
976
  <td><center><i class="fas fa-check"></i></center></td>
977
 
978
  </tr>
979
  <tr>
980
- <th scope="row" class="mo2fa_category_feature">Custom Redirect URL</th>
981
  <td><center><i class="fas fa-check"></i></center></td>
982
  <td><center><i class="fas fa-check"></i></center></td>
983
  <td><center><i class="fas fa-check"></i></center></td>
984
 
985
  </tr><tr>
986
- <th scope="row" class="mo2fa_category_feature">Inline Registration</th>
987
  <td><center><i class="fas fa-check"></i></center></td>
988
  <td><center><i class="fas fa-check"></i></center></td>
989
  <td><center><i class="fas fa-check"></i></center></td>
990
 
991
  </tr><tr>
992
- <th scope="row" class="mo2fa_category_feature">Mobile Support</th>
993
  <td><center><i class="fas fa-check"></i></center></td>
994
  <td><center><i class="fas fa-check"></i></center></td>
995
  <td><center><i class="fas fa-check"></i></center></td>
996
 
997
  </tr><tr>
998
- <th scope="row" class="mo2fa_category_feature">Privacy Policy Settings</th>
999
  <td><center><i class="fas fa-check"></i></center></td>
1000
  <td><center><i class="fas fa-check"></i></center></td>
1001
  <td><center><i class="fas fa-check"></i></center></td>
1002
 
1003
  </tr><tr>
1004
- <th scope="row" class="mo2fa_category_feature">XML-RPC </th>
1005
  <td><center><i class="fas fa-check"></i></center></td>
1006
  <td><center><i class="fas fa-check"></i></center></td>
1007
  <td><center><i class="fas fa-check"></i></center></td>
1008
 
1009
  </tr>
1010
- <tr class="mo2fa_bg_category_main">
1011
  <th scope="row">Advance Security Features</th>
1012
  <td></td>
1013
  <td></td>
@@ -1015,69 +1076,69 @@ Addons
1015
 
1016
  </tr>
1017
  <tr>
1018
- <th scope="row" class="mo2fa_category_feature">Brute Force Protection</th>
1019
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
1020
  <td><center><i class="fas fa-check"></i></center></td>
1021
  <td><center><i class="fas fa-check"></i></center></td>
1022
 
1023
  </tr>
1024
  <tr>
1025
- <th scope="row" class="mo2fa_category_feature">IP Blocking </th>
1026
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
1027
  <td><center><i class="fas fa-check"></i></center></td>
1028
  <td><center><i class="fas fa-check"></i></center></td>
1029
 
1030
  </tr>
1031
  <tr>
1032
- <th scope="row" class="mo2fa_category_feature">Monitoring</th>
1033
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
1034
  <td><center><i class="fas fa-check"></i></center></td>
1035
  <td><center><i class="fas fa-check"></i></center></td>
1036
 
1037
  </tr> <tr>
1038
- <th scope="row" class="mo2fa_category_feature">File Protection</th>
1039
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
1040
  <td><center><i class="fas fa-check"></i></center></td>
1041
  <td><center><i class="fas fa-check"></i></center></td>
1042
 
1043
  </tr>
1044
  <tr>
1045
- <th scope="row" class="mo2fa_category_feature">Country Blocking </th>
1046
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
1047
  <td><center><i class="fas fa-check"></i></center></td>
1048
  <td><center><i class="fas fa-check"></i></center></td>
1049
 
1050
  </tr>
1051
  <tr>
1052
- <th scope="row" class="mo2fa_category_feature">HTACCESS Level Blocking </th>
1053
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
1054
  <td><center><i class="fas fa-check"></i></center></td>
1055
  <td><center><i class="fas fa-check"></i></center></td>
1056
 
1057
  </tr>
1058
  <tr>
1059
- <th scope="row" class="mo2fa_category_feature">Browser Blocking </th>
1060
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
1061
  <td><center><i class="fas fa-check"></i></center></td>
1062
  <td><center><i class="fas fa-check"></i></center></td>
1063
 
1064
  </tr>
1065
  <tr>
1066
- <th scope="row" class="mo2fa_category_feature">Block Global Blacklisted Email Domains</th>
1067
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
1068
  <td><center><i class="fas fa-check"></i></center></td>
1069
  <td><center><i class="fas fa-check"></i></center></td>
1070
 
1071
  </tr>
1072
  <tr>
1073
- <th scope="row" class="mo2fa_category_feature">Manual Block Email Domains</th>
1074
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
1075
  <td><center><i class="fas fa-check"></i></center></td>
1076
  <td><center><i class="fas fa-check"></i></center></td>
1077
 
1078
  </tr>
1079
  <tr>
1080
- <th scope="row" class="mo2fa_category_feature">DB Backup</th>
1081
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
1082
  <td><center><i class="fas fa-check"></i></center></td>
1083
  <td><center><i class="fas fa-check"></i></center></td>
@@ -1085,14 +1146,14 @@ Addons
1085
  </tr>
1086
  <tr>
1087
  <th scope="row">Multi-Site Support</th>
1088
- <td><center></center></td>
1089
- <td><center><i class="fas fa-check"></i></center></td>
1090
  <td><center><i class="fas fa-check"></i></center></td>
 
 
1091
  </tr><tr>
1092
  <th scope="row">Language Translation Support</th>
1093
- <td><center></center></td>
1094
  <td><center><i class="fas fa-check"></i></center></td>
1095
- <td><center></center></td>
 
1096
 
1097
  </tr><tr>
1098
  <th scope="row">Get online support with GoTo/Zoom meeting</th>
@@ -1106,7 +1167,7 @@ Addons
1106
  </div>
1107
  </div>
1108
  </center>
1109
- <div class="mo2f_table_layout" style="width: 90%">
1110
  <div>
1111
  <h2><?php echo mo2f_lt('Steps to upgrade to the Premium Plan :');?></h2>
1112
  <ol class="mo2f_licensing_plans_ol">
@@ -1124,7 +1185,6 @@ Addons
1124
  <div>
1125
  <h2><?php echo mo2f_lt('Note :');?></h2>
1126
  <ol class="mo2f_licensing_plans_ol">
1127
- <li><?php echo mo2f_lt( 'Purchasing licenses for <b>unlimited users will grant you upto 2000 users.</b> If you want to purchase more users, please contact us or drop an email at <a href="mailto:2fasupport@xecurify.com">2fasupport@xecurify.com.</a>' ); ?></li>
1128
  <li><?php echo mo2f_lt( 'The plugin works with many of the default custom login forms (like Woocommerce/Theme My Login/Login With Ajax/User Pro/Elementor), however if you face any issues with your custom login form, contact us and we will help you with it.' ); ?></li>
1129
  <li><?php echo mo2f_lt( 'The <b>license key </b>is required to activate the <b>Premium Lite/Premium</b> Plugins. You will have to login with the miniOrange Account you used to make the purchase then enter license key to activate plugin.' ); ?>
1130
 
@@ -1152,7 +1212,7 @@ Addons
1152
  <hr>
1153
  <br>
1154
  <div>
1155
- <?php echo mo2f_lt( '<b class="mo2fa_note">Privacy Policy : </b><a href="https://www.miniorange.com/2-factor-authentication-for-wordpress-gdpr" target="blank">Click Here</a>
1156
  to read our Privacy Policy.' ); ?>
1157
  </div>
1158
  <br>
@@ -1164,7 +1224,7 @@ Addons
1164
  </div>
1165
  </div>
1166
  </center>
1167
- <div id="mo2f_payment_option" class="mo2f_table_layout" style="width: 90%">
1168
  <div>
1169
  <h3>Supported Payment Methods</h3><hr>
1170
  <div class="mo_2fa_container">
@@ -1217,7 +1277,7 @@ Addons
1217
  function mo2f_waf_yearly_standard_pricing() {
1218
  ?>
1219
  <p class="mo2f_pricing_text mo_wpns_upgrade_page_starting_price"
1220
- id="mo2f_yearly_sub"><?php echo __( 'Yearly subscription fees', 'miniorange-2-factor-authentication' ); ?><br>
1221
 
1222
  <select id="mo2f_yearly" class="form-control mo2fa_form_control1">
1223
  <option> <?php echo mo2f_lt( '1 site - $50 per year' ); ?> </option>
@@ -1232,7 +1292,7 @@ function mo2f_waf_yearly_standard_pricing() {
1232
  function mo2f_login_yearly_standard_pricing() {
1233
  ?>
1234
  <p class="mo2f_pricing_text mo_wpns_upgrade_page_starting_price"
1235
- id="mo2f_yearly_sub"><?php echo __( 'Yearly subscription fees', 'miniorange-2-factor-authentication' ); ?><br>
1236
 
1237
  <select id="mo2f_yearly" class="form-control mo2fa_form_control1">
1238
  <option> <?php echo mo2f_lt( '1 site - $15 per year' ); ?> </option>
@@ -1247,7 +1307,7 @@ function mo2f_login_yearly_standard_pricing() {
1247
  function mo2f_backup_yearly_standard_pricing() {
1248
  ?>
1249
  <p class="mo2f_pricing_text mo_wpns_upgrade_page_starting_price"
1250
- id="mo2f_yearly_sub"><?php echo __( 'Yearly subscription fees', 'miniorange-2-factor-authentication' ); ?><br>
1251
 
1252
  <select id="mo2f_yearly" class="form-control mo2fa_form_control1">
1253
  <option> <?php echo mo2f_lt( '1 site - $30 per year' ); ?> </option>
@@ -1262,7 +1322,7 @@ function mo2f_backup_yearly_standard_pricing() {
1262
  function mo2f_scanner_yearly_standard_pricing() {
1263
  ?>
1264
  <p class="mo2f_pricing_text mo_wpns_upgrade_page_starting_price"
1265
- id="mo2f_yearly_sub"><?php echo __( 'Yearly subscription fees', 'miniorange-2-factor-authentication' ); ?><br>
1266
 
1267
  <select id="mo2f_yearly" class="form-control mo2fa_form_control1">
1268
  <option> <?php echo mo2f_lt( '1 site - $15 per year' ); ?> </option>
@@ -1278,9 +1338,9 @@ function mo2f_scanner_yearly_standard_pricing() {
1278
  function mo2f_get_binary_equivalent_2fa_lite( $mo2f_var ) {
1279
  switch ( $mo2f_var ) {
1280
  case 1:
1281
- return "<div style='color: #20b2aa;font-size: x-large;float:left;margin:0px 5px;'>🗸</div>";
1282
  case 0:
1283
- return "<div style='color: red;font-size: x-large;float:left;margin:0px 5px;'>×</div>";
1284
  default:
1285
  return $mo2f_var;
1286
  }
@@ -1339,21 +1399,21 @@ function mo2f_feature_on_hover_2fa_upgrade( $mo2f_var ) {
1339
  }
1340
  function show_2fa_plans()
1341
  {
1342
- document.getElementById('mo2fa_ns_features_only').style.display = "none";
1343
  document.getElementById('mo2f_twofa_plans').style.display = "flex";
1344
  document.getElementById('mo_2fa_lite_licensing_plans_title').style.display = "none";
1345
  document.getElementById('mo_2fa_lite_licensing_plans_title1').style.display = "block";
1346
- document.getElementById('mo2f_ns_licensing_plans_title').style.display = "block";
1347
  document.getElementById('mo_ns_licensing_plans_title1').style.display = "none";
1348
  document.getElementById('mo2fa_compare').style.display = "block";
1349
  }
1350
  function mo_ns_show_plans()
1351
  {
1352
- document.getElementById('mo2fa_ns_features_only').style.display = "block";
1353
  document.getElementById('mo2f_twofa_plans').style.display = "none";
1354
  document.getElementById('mo_2fa_lite_licensing_plans_title').style.display = "block";
1355
  document.getElementById('mo_2fa_lite_licensing_plans_title1').style.display = "none";
1356
- document.getElementById('mo2f_ns_licensing_plans_title').style.display = "none";
1357
  document.getElementById('mo_ns_licensing_plans_title1').style.display = "block";
1358
  document.getElementById('mo2fa_compare').style.display = "none";
1359
  }
@@ -1365,7 +1425,7 @@ function mo2f_feature_on_hover_2fa_upgrade( $mo2f_var ) {
1365
 
1366
  function mo2fa_show_details()
1367
  {
1368
- jQuery('#mo2fa_more_deails').toggle();
1369
  jQuery('.mo2fa_more_details_p1').toggle();
1370
  jQuery('.mo2fa_more_details_p').toggle();
1371
  jQuery('.mo2fa_compare1').toggle();
177
  <div class="mo_upgrade_toggle">
178
  <p class="mo_upgrade_toggle_2fa">
179
  <input type="radio" name="sitetype" value="Recharge" id="mo2f_2fa_plans" onclick="show_2fa_plans();" style="display: none;">
180
+ <label for="mo2f_2fa_plans" class="mo_upgrade_toggle_2fa_lable" id="mo_2fa_lite_licensing_plans_title" style="display: none;">&nbsp;&nbsp;&nbsp;2-Factor Authentication</label>
181
+ <label for="mo2f_2fa_plans" class="mo_upgrade_toggle_2fa_lable mo2f_active_plan" id="mo_2fa_lite_licensing_plans_title1" style="display: block;">&nbsp;&nbsp;&nbsp;2-Factor Authentication</label>
182
  <input type="radio" name="sitetype" value="Recharge" id="mo2f_ns_plans" onclick="mo_ns_show_plans();" style="display: none;">
183
+ <label for="mo2f_ns_plans" class="mo_upgrade_toggle_2fa_lable" id="mo_ns_licensing_plans_title">Website Security</label>
184
+ <label for="mo2f_ns_plans" class="mo_upgrade_toggle_2fa_lable mo2f_active_plan" id="mo_ns_licensing_plans_title1" style="display: none;">Website Security</label>
185
  </p>
186
  </div>
187
  <?php
196
  <div class="mo2f_upgrade_super_div" id="mo2f_twofa_plans">
197
  <div class="mo2f_upgrade_main_div">
198
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css" integrity="sha384-UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/" crossorigin="anonymous"/>
199
+ <div id="pricing_tabs_mo" class="mo2fa_pricing_tabs_mo mo2fa_pricing_tabs_mo_premium_lite">
200
+ <div id="pricing_head" class="mo2fa_pricing_head_supporter"><center><h3 class="mo2fa_pricing_head_mo_2fa">Premium Lite</h3></center></div>
201
+ <div id="pricing_head" class="mo2fa_pricing_head_supporter"><center><span class="mo2fa_pricing_head_mo_2fa">$99</span>/Year</center></div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
202
 
203
+ <div id="getting_started_2fa_mo">
204
+ <center>
205
+ <a href="#addon_site_based"><button class="mo2fa_make_my_plan_mo">Getting Started</button></a>
 
 
 
 
 
 
206
  </center>
207
  </div>
208
 
209
+ <div id="pricing_feature_collection_supporter" class="mo2fa_pricing_feature_collection_supporter">
210
+ <div id="pricing_feature_collection" class="mo2fa_pricing_feature_collection">
211
  <ul class="mo2fa_ul">
212
+ <p class="mo2fa_feature"><strong>Features</strong></p>
213
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_limit_pricing_feature_mo_2fa"><i class="fas fa-times"></i>Unlimited Sites</li>
214
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Unlimited Users</li>
 
 
 
 
 
 
 
215
  <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature">
216
+ <i class="fas fa-check"></i>
217
+ <span class="mo2fa_tooltip_methodlist">10+ Authentication Methods
218
+ <span class="methodlist">
219
  <ul class="methods-list-mo2fa" style="margin-left: -43px; ">
220
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>Google Authenticator</li>
221
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>Security Questions</li>
222
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>Authy Authenticator</li>
223
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>Microsoft Authenticator</li>
224
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>LastPass Authenticator</li>
225
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>FreeOTP Authenticator</li>
226
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>Duo Mobile Authenticator</li>
227
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>Email Verification</li>
228
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>OTP Over Email</li>
229
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>OTP Over SMS</li>
230
+ <li class="feature_collect_mo-2fa mo2fa_method-list-mo-size-cross"><i class="fas fa-times mo2fa_fa-times icon-mo2fa-methods"></i>miniOrange QR Code Authenticator</li>
231
+ <li class="feature_collect_mo-2fa mo2fa_method-list-mo-size-cross"><i class="fas fa-times mo2fa_fa-times icon-mo2fa-methods"></i>miniOrange Soft Token</li>
232
+ <li class="feature_collect_mo-2fa mo2fa_method-list-mo-size-cross"><i class="fas fa-times mo2fa_fa-times icon-mo2fa-methods"></i>miniOrange Push Notification</li>
233
+ <li class="feature_collect_mo-2fa mo2fa_method-list-mo-size-cross"><i class="fas fa-times mo2fa_fa-times icon-mo2fa-methods"></i>OTP Over SMS and Email</li>
234
+ <li class="feature_collect_mo-2fa mo2fa_method-list-mo-size-cross"><i class="fas fa-times mo2fa_fa-times icon-mo2fa-methods"></i>Hardware Token</li>
235
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>OTP Over Whatsapp</li>
236
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>OTP Over Telegram</li>
237
  </ul>
238
  </span>
239
  </span>
240
  </li>
241
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Force users to set-up 2FA</li>
242
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i> 3+ Backup Login Methods</li>
243
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Passwordless Login</li>
244
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_limit_pricing_feature_mo_2fa"><i class="fas fa-times"></i>Strong Password</li>
245
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Custom SMS Gateway </li>
246
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_limit_pricing_feature_mo_2fa"><i class="fas fa-times"></i>Add-Ons (Purchase Seperately)</li>
247
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Advance Login Settings</li>
248
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_limit_pricing_feature_mo_2fa"><i class="fas fa-times"></i>Advance Security Features</li>
249
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature" id="addon_site_based"><i class="fas fa-check"></i>Multi-Site Support</li>
250
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Language Translation Support</li>
251
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Get Online Support Via GoTo/Zoom </li>
 
 
 
 
252
  </ul>
253
 
254
  </div>
255
  </div>
256
+ <div id="pricing_addons_site_based" class="mo2fa_pricing">
257
+ <center>
258
+ <div id="purchase_user_limit">
259
+ <p class="mo2fa_more_details_p mo2fa_class"><a href="#details" onclick="mo2fa_show_details()">Click here to compare all plans</a></p>
260
+ <p class="mo2fa_more_details_p1 mo2fa_hide1"><a href="#details" onclick="mo2fa_show_details()">Click here to hide comparison</a></p>
261
+ <center><h3 class="mo2fa_purchase_user_limit_mo mo2fa_purchase_limit_mo">Choose No. of Sites</h3>
262
+ <p class="mo2fa_pricing_p">(Yearly Subscription Fees*)</p>
263
+ <select id="site_price_mo" onchange="update_site_limit()" onclick="update_site_limit()" class="mo2fa_increase_my_limit">
264
+ <option value="99">1 Site - free with the plan</option>
265
+ <option value="179">2 Sites - $179 per year</option>
266
+ <option value="299">Upto 5 Sites - $299 per year</option>
267
+ <option value="449">Upto 10 Sites - $449 per year</option>
268
+ <option value="599">Upto 25 Sites - $599per year</option>
269
+ <option value="0"> Above 25 - Contact us</option>
270
+ </select>
271
+ </div>
272
+ <div id="purchase_sms_limit" class="mo2fa_tooltip_sms_info">
273
+ <center><h3 class="mo2fa_purchase_otp_limit mo2fa_purchase_limit_mo">No. of SMS Transactions</h3>
274
+ <p class="mo2fa_country">(Only applicable if you will use OTP over SMS as authentication method.)</p>
275
+ <select id="sms_price_site_based_mo" onchange="update_sms_limit_site_based_mo()" class="mo2fa_increase_my_limit">
276
+ <option value="0">0 Transaction - $0</option>
277
+ <option value="5">$5 per 100 OTP + SMS Delivery Charges</option>
278
+ <option value="15">$15 per 500 OTP + SMS Delivery Charges</option>
279
+ <option value="22">$22 per 1K OTP + SMS Delivery Charges</option>
280
+ <option value="30">$30 per 5K OTP + SMS Delivery Charges</option>
281
+ <option value="40">$40 per 10K OTP + SMS Delivery Charges</option>
282
+ <option value="90">$90 per 50K OTP + SMS Delivery Charges</option>
283
+ </select>
284
+ <span class="mo2fa_sms_info">
285
+ <p class="mo2fa_country">Transaction prices & SMS delivery charges depend on country.</p>
286
+ </span>
287
+ </center>
288
+ </div>
289
+ <div class="mo2fa_dollar"> <center><span>$</span><span id="mo_pricing_adder_site_based"></span></center></div>
290
 
291
+ <div id="custom_my_plan_2fa_mo">
292
+ <center>
293
+ <?php if( isset($is_customer_registered) && $is_customer_registered) { ?>
294
+ <a onclick="mo2f_upgradeform('wp_security_two_factor_premium_lite_plan','2fa_plan')" target="blank"><button class="mo2fa_upgrade_my_plan">Upgrade</button></a>
295
+ <?php }else{ ?>
296
+ <a onclick="mo2f_register_and_upgradeform('wp_security_two_factor_premium_lite_plan','2fa_plan')" target="blank"><button class="mo2fa_upgrade_my_plan">Upgrade</button></a>
297
+ <?php }?>
298
+ </center>
299
+ </div>
300
+ </center>
301
+ </div>
302
  </div>
303
  <script>
304
  var base_price_site_based =0;
305
  var display_my_site_based_price = parseInt(base_price_site_based)+parseInt(0)+parseInt(0)+parseInt(0);
306
+ document.getElementById("mo_pricing_adder_site_based").innerHTML = + display_my_site_based_price;
307
+ jQuery('#site_price_mo').click();
308
+ function update_site_limit() {
309
+ var users = document.getElementById("site_price_mo").value;
310
+ var sms_user_selection= document.getElementById("sms_price_site_based_mo").value;
311
  var users_addion = parseInt(base_price_site_based)+parseInt(users)+parseInt(sms_user_selection);
312
 
313
+ document.getElementById("mo_pricing_adder_site_based").innerHTML = + users_addion;
314
+
315
+ }
316
+
317
+ function update_sms_limit_site_based_mo() {
318
+ var sms = document.getElementById("sms_price_site_based_mo").value;
319
+ var users_sms_selection = document.getElementById("site_price_mo").value;
320
+
321
+ var sms_addion = parseInt(base_price_site_based)+parseInt(sms)+parseInt(users_sms_selection );
322
+
323
+ document.getElementById("mo_pricing_adder_site_based").innerHTML = + sms_addion;
324
 
325
  }
326
 
329
  </div>
330
 
331
 
332
+ <div class="mo2f_upgrade_main_div">
333
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css" integrity="sha384-UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/" crossorigin="anonymous">
334
 
335
+ <div id="pricing_tabs_mo" class="mo2fa_pricing_tabs_mo mo2fa_pricing_tabs_mo_premium">
336
+ <div class="mo2fa_recommended"><center><h4 class="mo2fa_h4">Recommended</h4></center> </div>
337
+ <div id="pricing_head_all_inclusive" class="mo2fa_pricing_head_supporter"><center><h3 class="mo2fa_pricing_head_mo_2fa">Premium</h3></center></div>
338
+ <div id="pricing_head_all_inclusive" class="mo2fa_pricing_head_supporter"><center><span class="mo2fa_pricing_head_mo_2fa">$199</span>/Year</center></div>
339
+ <div id="getting_started_2fa_mo_all_inclusive">
340
+ <center>
341
+ <a href="#addon_all_inclusive"><button class="mo2fa_make_my_plan_mo">Getting Started</button></a>
342
+ </center>
343
+ </div>
344
+
345
+ <div id="pricing_feature_collection_supporter_all_inclusive" class="mo2fa_pricing_feature_collection_supporter">
346
+ <div id="pricing_feature_collection_all_inclusive" class="mo2fa_pricing_feature_collection">
347
+ <ul class="mo2fa_ul">
348
+ <p class="mo2fa_feature"><strong>Features</strong></p>
349
 
350
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_limit_pricing_feature_mo_2fa"><i class="fas fa-times"></i>Unlimited Sites</li>
351
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Unlimited Users</li>
352
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i><span class="mo2fa_tooltip_methodlist">10+ Authentication Methods
353
+ <span class="methodlist">
354
+ <ul class="methods-list-mo2fa" style="margin-left: -43px; ">
355
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>Google Authenticator</li>
356
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>Security Questions</li>
357
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>Authy Authenticator</li>
358
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>Microsoft Authenticator</li>
359
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>LastPass Authenticator</li>
360
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>FreeOTP Authenticator</li>
361
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>Duo Mobile Authenticator</li>
362
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>Email Verification</li>
363
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>OTP Over Email</li>
364
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>OTP Over SMS</li>
365
+ <li class="feature_collect_mo-2fa mo2fa_method-list-mo-size-cross"><i class="fas fa-times mo2fa_fa-times icon-mo2fa-methods"></i>miniOrange QR Code Authenticator</li>
366
+ <li class="feature_collect_mo-2fa mo2fa_method-list-mo-size-cross"><i class="fas fa-times mo2fa_fa-times icon-mo2fa-methods"></i>miniOrange Soft Token</li>
367
+ <li class="feature_collect_mo-2fa mo2fa_method-list-mo-size-cross"><i class="fas fa-times mo2fa_fa-times icon-mo2fa-methods"></i>miniOrange Push Notification</li>
368
+ <li class="feature_collect_mo-2fa mo2fa_method-list-mo-size-cross"><i class="fas fa-times mo2fa_fa-times icon-mo2fa-methods"></i>OTP Over SMS and Email</li>
369
+ <li class="feature_collect_mo-2fa mo2fa_method-list-mo-size-cross"><i class="fas fa-times mo2fa_fa-times icon-mo2fa-methods"></i>Hardware Token</li>
370
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>OTP Over Whatsapp</li>
371
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>OTP Over Telegram</li>
372
+ </ul>
373
+ </span>
374
+ </span></li>
375
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Force users to set-up 2FA</li>
376
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i> 3+ Backup Login Methods</li>
377
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Passwordless Login</li>
378
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Strong Password</li>
379
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Custom SMS Gateway </li>
380
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Add-Ons (Included)</li>
381
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Advance Login Settings</li>
382
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Advance Security Features</li>
383
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature" id="addon_all_inclusive"><i class="fas fa-check"></i>Multi-Site Support</li>
384
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Language Translation Support</li>
385
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Get Online Support Via GoTo/Zoom </li>
386
+ </ul>
387
+
388
+ </div>
389
+ </div>
390
+ <div id="pricing_addons_all_inclusive" class="mo2fa_pricing">
391
  <div id="purchase_user_limit_all_inclusive">
392
+ <p class="mo2fa_more_details_p mo2fa_class"><a href="#details" onclick="mo2fa_show_details()">Click here to compare all plans</a></p>
393
+ <p class="mo2fa_more_details_p1 mo2fa_hide1"><a href="#details" onclick="mo2fa_show_details()">Click here to hide comparison</a></p>
394
+ <center><h3 class="mo2fa_purchase_user_limit_mo mo2fa_purchase_limit_mo">Choose No. of Sites</h3>
395
+ <p class="mo2fa_pricing_p">(Yearly Subscription Fees*)</p>
396
+ <select id="all_inclusive_price_mo" onclick="update_site_limit_all_inclusive()" onchange="update_site_limit_all_inclusive()" class="mo2fa_increase_my_limit">
397
+ <option value="199">1 Site - free with the plan</option>
398
+ <option value="299">2 Sites - $299 per year</option>
399
+ <option value="499">Upto 5 Sites - $499 per year</option>
400
+ <option value="799">Upto 10 Sites - $799 per year</option>
401
+ <option value="1099">Upto 25 Sites - $1099 per year</option>
402
+ <option value="0">Above 25 - Contact us</option>
403
  </select>
404
  </center>
405
  </div>
406
+ <div id="purchase_sms_limit_all_inclusive" class="mo2fa_tooltip_sms_info">
407
+ <center><h3 class="mo2fa_purchase_otp_limit mo2fa_purchase_limit_mo">No. of SMS Transactions </h3>
408
+ <p class="mo2fa_country">(Only applicable if you will use OTP over SMS as authentication method.)</p>
409
+ <select id="sms_price_all_inclusive_mo" onchange="update_sms_limit_all_inclusive()" class="mo2fa_increase_my_limit">
410
+ <option value="0">0 Transaction - $0</option>
411
+ <option value="5">$5 per 100 OTP + SMS Delivery Charges</option>
412
+ <option value="15">$15 per 500 OTP + SMS Delivery Charges</option>
413
+ <option value="22">$22 per 1K OTP + SMS Delivery Charges</option>
414
+ <option value="30">$30 per 5K OTP + SMS Delivery Charges</option>
415
+ <option value="40">$40 per 10K OTP + SMS Delivery Charges</option>
416
+ <option value="90">$90 per 50K OTP + SMS Delivery Charges</option>
417
+ </select>
418
+ <span class="mo2fa_sms_info">
419
+ <p class="mo2fa_country">Transaction prices & SMS delivery charges depend on country.</p>
420
+ </span>
421
+ </center>
422
+ </div>
423
+ <div class="mo2fa_dollar"> <center><span>$</span><span id="display_my_all_inclusive_pricing"></span></center></div>
424
+
425
+ <div id="custom_my_plan_2fa_mo">
426
  <center>
427
  <?php if( isset($is_customer_registered) && $is_customer_registered) { ?>
428
  <a onclick="mo2f_upgradeform('wp_security_two_factor_all_inclusive_plan','2fa_plan')" target="blank"><button class="mo2fa_upgrade_my_plan">Upgrade</button></a>
432
  </center>
433
  </div>
434
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
435
  </div>
436
  <script>
437
 
438
  var base_price_site_all_inclusive =0;
439
  var display_my_all_inclusive_price = parseInt(base_price_site_all_inclusive)+parseInt(0)+parseInt(0)+parseInt(0);
440
+ document.getElementById("display_my_all_inclusive_pricing").innerHTML = + display_my_all_inclusive_price;
441
+ jQuery('#all_inclusive_price_mo').click();
442
+ function update_site_limit_all_inclusive() {
443
+ var sites_all_inclusive = document.getElementById("all_inclusive_price_mo").value;
444
+ var sms_user_selection_all_inclusive= document.getElementById("sms_price_all_inclusive_mo").value;
445
+ var total_inclusive = parseInt(base_price_site_all_inclusive)+parseInt(sites_all_inclusive)+parseInt(sms_user_selection_all_inclusive);
446
+
447
+ document.getElementById("display_my_all_inclusive_pricing").innerHTML = + total_inclusive;
448
+
449
+ }
450
 
451
+ function update_sms_limit_all_inclusive() {
452
+ var sms = document.getElementById("sms_price_all_inclusive_mo").value;
453
+ var sms_site_selection = document.getElementById("all_inclusive_price_mo").value;
454
+ var sms_all_inclusive_mo_2fa= parseInt(base_price_site_all_inclusive)+parseInt(sms)+parseInt(sms_site_selection);
455
+
456
+ document.getElementById("display_my_all_inclusive_pricing").innerHTML = + sms_all_inclusive_mo_2fa;
457
 
458
  }
459
 
463
  <div class="mo2f_upgrade_main_div">
464
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css" integrity="sha384-UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/" crossorigin="anonymous">
465
 
466
+ <div id="pricing_tabs_mo" class="mo2fa_pricing_tabs_mo mo2fa_pricing_tabs_mo_enterprise">
 
 
 
 
 
 
467
 
468
+ <div id="pricing_head" style="text-align: center;">
469
+ <h3 class="mo2fa_pricing_head_mo_2fa">Enterprise</h3>
470
+ <h5 class="mo2fa_pricing_head_h5">Starting From </h5>
471
+ </div>
472
+ <div id="pricing_head_cost" class="mo2fa_pricing_head_supporter">
473
+ <center><span class="mo2fa_pricing_head_mo_2fa">$59</span>/Year</center>
474
  </div>
 
 
475
 
476
+ <div id="getting_started_2fa_mo">
477
  <center>
478
+ <a href="#addon"><button class="mo2fa_make_my_plan_mo mo2fa_enterprise_getting_started">Getting Started</button></a>
479
+ </center>
480
+ </div>
481
+
482
+ <div id="pricing_feature_collection_supporter" class="mo2fa_pricing_feature_collection_supporter">
483
+ <!--<div id="priceing_plan" style="background: #c9dbdbfa;width: 21%;margin-left: 11em;height: 4em;border-radius: 8px;margin-bottom: -30px;padding: 5px 5px 5px 5px;"><center><h3 class="mo2fa_price_mo_2fa">$59</h3>/year</br><p class="mo2fa_starting_from">Starting From</p></center></div>-->
484
+
485
+ <div id="pricing_feature_collection" class="mo2fa_pricing_feature_collection">
486
+ <ul class="mo2fa_ul">
487
+ <p class="mo2fa_feature"><strong>Features</strong></p>
488
+
489
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Unlimited Sites</li>
490
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_limit_pricing_feature_mo_2fa"><i class="fas fa-times"></i>Unlimited Users</li>
491
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i><span class="mo2fa_tooltip_methodlist">15+ Authentication Methods
492
+ <span class="methodlist">
493
+ <ul class="methods-list-mo2fa" style="margin-left: -43px; ">
494
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>Google Authenticator</li>
495
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>Security Questions</li>
496
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>Authy Authenticator</li>
497
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>Microsoft Authenticator</li>
498
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>LastPass Authenticator</li>
499
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>FreeOTP Authenticator</li>
500
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>Duo Mobile Authenticator</li>
501
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>Email Verification</li>
502
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>OTP Over Email</li>
503
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>OTP Over SMS</li>
504
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>miniOrange QR Code Authentication</li>
505
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>miniOrange Soft Token</li>
506
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>miniOrange Push Notification</li>
507
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>OTP Over SMS and Email</li>
508
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>Hardware Token</li>
509
+ <li class="feature_collect_mo-2fa mo2fa_method-list-mo-size-cross"><i class="fas fa-times mo2fa_fa-times icon-mo2fa-methods"></i>OTP Over Whatsapp</li>
510
+ <li class="feature_collect_mo-2fa mo2fa_method-list-size"><i class="fas fa-check mo2fa_fa-check icon-mo2fa-methods"></i>OTP Over Telegram</li>
511
+ </ul>
512
+ </span>
513
+ </span></li>
514
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Force users to set-up 2FA</li>
515
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i> 3+ Backup Login Methods</li>
516
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Passwordless Login </li>
517
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Strong Password</li>
518
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Custom SMS Gateway </li>
519
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Add-Ons (Limited)</li>
520
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Advance Login Settings</li>
521
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Advance Security Features</li>
522
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature" id="addon"><i class="fas fa-check" id="addon"></i>Multi-Site Support</li>
523
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Language Translation Support</li>
524
+ <li class="mo2fa_feature_collect_mo-2fa mo2fa_unltimate_feature"><i class="fas fa-check"></i>Get Online Support Via GoTo/Zoom </li>
525
+ </ul>
526
+
527
+ </div>
528
+ </div>
529
+ <div id="pricing_addons" class="mo2fa_pricing">
530
+ <center>
531
+ <div id="purchase_user_limit">
532
+ <p class="mo2fa_more_details_p mo2fa_class"><a href="#details" onclick="mo2fa_show_details()">Click here to compare all plans</a></p>
533
+ <p class="mo2fa_more_details_p1 mo2fa_hide1"><a href="#details" onclick="mo2fa_show_details()">Click here to hide comparison</a></p>
534
+ <center><h3 class="mo2fa_purchase_user_limit_mo mo2fa_purchase_limit_mo">Choose No. of Users </h3>
535
+ <p class="mo2fa_pricing_p">(Yearly Subscription Fees*)</p>
536
+ <select id="user_price" onclick="update_user_limit()" onchange="update_user_limit()" class="mo2fa_increase_my_limit">
537
+ <option value="59">Upto-5 users - $59 per year</option>
538
+ <option value="128">Upto-50 users - $128 per year</option>
539
+ <option value="228">Upto-100 users - $228 per year</option>
540
+ <option value="378">Upto-500 users - $378 per year</option>
541
+ <option value="528">Upto-1000 users - $528 per year</option>
542
+ <option value="828">Upto-5000 users - $828 per year</option>
543
+ <option value="1028">Upto-10000 users - $1028 per year</option>
544
+ <option value="1528">Upto-20000 users - $1528 per year</option>
545
+ <option value="0">Unlimited Users - Contact Us</option>
546
  </select>
547
  </center>
548
  </div>
549
+ <div id="purchase_sms_limit" class="mo2fa_tooltip_sms_info">
550
+ <center><h3 class="mo2fa_purchase_otp_limit mo2fa_purchase_limit_mo">No. of SMS Transactions </h3>
551
+ <p class="mo2fa_country">(Only applicable if you will use OTP over SMS as authentication method.)</p>
552
+ <select id="sms_price" onchange="update_sms_limit()" class="mo2fa_increase_my_limit">
553
+ <option value="0">0 Transaction - $0</option>
554
+ <option value="5">$5 per 100 OTP + SMS Delivery Charges</option>
555
+ <option value="15">$15 per 500 OTP + SMS Delivery Charges</option>
556
+ <option value="22">$22 per 1K OTP + SMS Delivery Charges</option>
557
+ <option value="30">$30 per 5K OTP + SMS Delivery Charges</option>
558
+ <option value="40">$40 per 10K OTP + SMS Delivery Charges</option>
559
+ <option value="90">$90 per 50K OTP + SMS Delivery Charges</option>
560
+ </select>
561
+ <span class="mo2fa_sms_info">
562
+ <p class="mo2fa_country">Transaction prices & SMS delivery charges depend on country.</p>
563
+ </span>
564
+ </center>
565
+ </div>
566
+ <div class="mo2fa_dollar"> <center><span>$</span><span id="mo_pricing_adder"></span></center></div>
567
 
568
  <div id="details">
569
  <center>
570
  <?php if( isset($is_customer_registered) && $is_customer_registered) { ?>
571
+ <a onclick="mo2f_upgradeform('wp_2fa_enterprise_plan','2fa_plan')" target="blank"><button class="mo2fa_upgrade_my_plan">Upgrade</button></a>
572
  <?php }else{ ?>
573
+ <a onclick="mo2f_register_and_upgradeform('wp_2fa_enterprise_plan','2fa_plan')" target="blank"><button class="mo2fa_upgrade_my_plan">Upgrade</button></a>
574
  <?php }?>
575
  </center>
576
  </div>
577
  </center>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
578
  </div>
 
579
  </div>
580
 
581
  <script>
582
  var base_price =0;
583
  var display_me = parseInt(base_price)+parseInt(30)+parseInt(0)+parseInt(0);
584
+ document.getElementById("mo_pricing_adder").innerHTML = + display_me;
585
+ jQuery('#user_price').click();
586
+ function update_user_limit() {
587
+ var users = document.getElementById("user_price").value;
588
+ var sms_user_selection= document.getElementById("sms_price").value;
589
+ var users_addion = parseInt(base_price)+parseInt(users)+parseInt(sms_user_selection);
590
 
591
+ document.getElementById("mo_pricing_adder").innerHTML = + users_addion;
592
 
593
  }
594
 
595
+ function update_sms_limit() {
596
+ var sms = document.getElementById("sms_price").value;
597
+ var users_sms_selection = document.getElementById("user_price").value;
598
+
599
+ var sms_addion = parseInt(base_price)+parseInt(sms)+parseInt(users_sms_selection );
600
+
601
+ document.getElementById("mo_pricing_adder").innerHTML = + sms_addion;
602
+
603
+ }
604
 
605
  </script>
606
 
608
  </div>
609
  <div id="mo2fa_compare">
610
  <center>
611
+ <div class=""><a href="#details" onclick="mo2fa_show_details()"><button class="mo2fa_upgrade_my_plan mo2fa_compare1">Click here to Compare Features</button></a></div>
612
+ <div><a href="#details" onclick="mo2fa_show_details()"><button style="display: none;" class="mo2fa_upgrade_my_plan mo2fa_compare1">Click here to Hide Comparison</button></a></div>
613
  </center>
614
  </div>
615
+ <div id="mo_ns_features_only" style="display: none;">
 
616
 
617
  <div class="mo_wpns_upgrade_security_title" >
618
  <div class="mo_wpns_upgrade_page_title_name">
785
  </div>
786
  <center>
787
  <br>
788
+ <div id="more_details" style="display:none;">
789
  <div class="mo2fa_table-scrollbar"></br></br>
790
  <table class="table mo2fa_table_features table-striped">
791
+ <caption class="pricing_head_mo_2fa"><h1>Feature Details</h1></caption>
792
  <thead>
793
  <tr class="mo2fa_main_category_header" style="font-size: 20px;">
794
  <th scope="col">Features</th>
812
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
813
 
814
  </tr>
815
+ <tr class="bg_category_main_mo_2fa">
816
  <th scope="row">Authentication Methods</th>
817
  <td></td>
818
  <td></td>
819
  <td></td>
820
  </tr>
821
  <tr>
822
+ <th scope="row" class="category_feature_mo_2fa">Google Authenticator</th>
823
  <td><center><i class="fas fa-check"></i></center></td>
824
  <td><center><i class="fas fa-check"></i></center></td>
825
  <td><center><i class="fas fa-check"></i></center></td>
826
  </tr>
827
  <tr>
828
+ <th scope="row" class="category_feature_mo_2fa">Security Questions</th>
829
  <td><center><i class="fas fa-check"></i></center></td>
830
  <td><center><i class="fas fa-check"></i></center></td>
831
  <td><center><i class="fas fa-check"></i></center></td>
832
 
833
  </tr>
834
  <tr>
835
+ <th scope="row" class="category_feature_mo_2fa">TOTP Based Authenticator</th>
836
  <td><center><i class="fas fa-check"></i></center></td>
837
  <td><center><i class="fas fa-check"></i></center></td>
838
  <td><center><i class="fas fa-check"></i></center></td>
839
 
840
  </tr>
841
  <tr>
842
+ <th scope="row" class="category_feature_mo_2fa">Authy Authenticator</th>
843
  <td><center><i class="fas fa-check"></i></center></td>
844
  <td><center><i class="fas fa-check"></i></center></td>
845
  <td><center><i class="fas fa-check"></i></center></td>
846
 
847
  </tr>
848
  <tr>
849
+ <th scope="row" class="category_feature_mo_2fa">Email Verification</th>
850
  <td><center><i class="fas fa-check"></i></center></td>
851
  <td><center><i class="fas fa-check"></i></center></td>
852
  <td><center><i class="fas fa-check"></i></center></td>
853
 
854
  </tr>
855
  <tr>
856
+ <th scope="row" class="category_feature_mo_2fa">OTP Over Email (Email Charges apply)</th>
857
  <td><center><i class="fas fa-check"></i></center></td>
858
  <td><center><i class="fas fa-check"></i></center></td>
859
  <td><center><i class="fas fa-check"></i></center></td>
861
 
862
  </tr>
863
  <tr>
864
+ <th scope="row" class="category_feature_mo_2fa">OTP Over SMS (SMS Charges apply)</th>
865
  <td><center><i class="fas fa-check"></i></center></td>
866
  <td><center><i class="fas fa-check"></i></center></td>
867
  <td><center><i class="fas fa-check"></i></center></td>
869
  </tr>
870
 
871
  <tr>
872
+ <th scope="row" class="category_feature_mo_2fa">miniOrange QR Code Authentication</th>
873
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
874
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
875
  <td><center><i class="fas fa-check"></i></center></td>
876
  </tr>
877
  <tr>
878
+ <th scope="row" class="category_feature_mo_2fa">miniOrange Soft Token</th>
879
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
880
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
881
  <td><center><i class="fas fa-check"></i></center></td>
882
  </tr>
883
  <tr>
884
+ <th scope="row" class="category_feature_mo_2fa">miniOrange Push Notification</th>
885
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
886
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
887
  <td><center><i class="fas fa-check"></i></center></td>
888
  </tr>
889
  <tr>
890
+ <th scope="row" class="category_feature_mo_2fa">OTP Over SMS and Email (SMS and Email Charges apply)</th>
891
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
892
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
893
  <td><center><i class="fas fa-check"></i></center></td>
894
 
895
  </tr>
896
  <tr>
897
+ <th scope="row" class="category_feature_mo_2fa">Hardware Token</th>
898
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
899
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
900
  <td><center><i class="fas fa-check"></i></center></td>
901
 
902
  </tr>
903
  <tr>
904
+ <th scope="row" class="category_feature_mo_2fa">OTP Over Whatsapp (Add-on)</th>
905
+ <td><center><i class="fas fa-check"></i></center></td>
906
  <td><center><i class="fas fa-check"></i></center></td>
907
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
908
  </tr>
909
  <tr>
910
+ <th scope="row" class="category_feature_mo_2fa">OTP Over Telegram</th>
911
+ <td><center><i class="fas fa-check"></i></center></td>
912
+ <td><center><i class="fas fa-check"></i></center></td>
913
  <td><center><i class="fas fa-check"></i></center></td>
 
914
  </tr>
915
+ <tr class="bg_category_main_mo_2fa">
916
  <th scope="row">Backup Login Methods</th>
917
  <td></td>
918
  <td></td>
919
  <td></td>
920
  </tr>
921
  <tr>
922
+ <th scope="row" class="category_feature_mo_2fa">Security Questions (KBA)</th>
923
  <td><center><i class="fas fa-check"></i></center></td>
924
  <td><center><i class="fas fa-check"></i></center></td>
925
  <td><center><i class="fas fa-check"></i></center></td>
926
  </tr>
927
  <tr>
928
+ <th scope="row" class="category_feature_mo_2fa">OTP Over Email</th>
929
  <td><center><i class="fas fa-check"></i></center></td>
930
  <td><center><i class="fas fa-check"></i></center></td>
931
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
932
  </tr>
933
  <tr>
934
+ <th scope="row" class="category_feature_mo_2fa">Backup Codes</th>
935
  <td><center><i class="fas fa-check"></i></center></td>
936
  <td><center><i class="fas fa-check"></i></center></td>
937
  <td><center><i class="fas fa-check"></i></center></td>
938
  </tr>
939
+ <tr class="bg_category_main_mo_2fa">
940
  <th scope="row">Password Policy</th>
941
  <td></td>
942
  <td></td>
944
 
945
  </tr>
946
  <tr>
947
+ <th scope="row" class="category_feature_mo_2fa">Passwordless Login</th>
948
  <td><center><i class="fas fa-check"></i></center></td>
949
  <td><center><i class="fas fa-check"></i></center></td>
950
  <td><center><i class="fas fa-check"></i></center></td>
951
  </tr>
952
+ <tr>
953
+ <th scope="row" class="category_feature_mo_2fa">Strong Password</th>
954
+ <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
955
+ <td><center><i class="fas fa-check"></i></center></td>
956
+ <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
957
+
958
+ </tr>
959
  <tr>
960
  <th scope="row">Custom Gateway</th>
961
  <td><center><i class="fas fa-check"></i></center></td>
963
  <td><center><i class="fas fa-check"></i></center></td>
964
 
965
  </tr>
966
+ <tr class="bg_category_main_mo_2fa">
967
  <th scope="row">Add-Ons</th>
968
  <td></td>
969
  <td></td>
971
 
972
  </tr>
973
  <tr>
974
+ <th scope="row" class="category_feature_mo_2fa">Remember Device Add-on</br><p class="description_mo_2fa">You can save your device using the Remember device addon and you will get a two-factor authentication </br>prompt to check your identity if you try to login from different devices.</p></th>
975
+ <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
976
+ <td><center><i class="fas fa-check"></i></center></td>
977
+ <td><center><i class="fas fa-check"></i></center></td>
978
  </tr>
979
  <tr>
980
+ <th scope="row" class="category_feature_mo_2fa">Personalization Add-on<p class="description_mo_2fa">You'll get many more customization options in Personalization, such as </br>ustom Email and SMS Template, Custom Login Popup, Custom Security Questions, and many more.</p></th>
981
+ <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
982
+ <td><center><i class="fas fa-check"></i></center></td>
983
+ <td><center><i class="fas fa-check"></i></center></td>
984
  </tr>
985
  <tr>
986
+ <th scope="row" class="category_feature_mo_2fa">Short Codes Add-on<p class="description_mo_2fa">Shortcode Add-ons mostly include Allow 2fa shortcode (you can use this this to add 2fa on any page), </br>Reconfigure 2fa add-on (you can use this add-on to reconfigure your 2fa if you have lost your 2fa verification ability), remember device shortcode.</p></th>
987
+ <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
988
+ <td><center><i class="fas fa-check"></i></center></td>
989
+ <td><center><i class="fas fa-check"></i></center></td>
990
  </tr>
991
  <tr>
992
+ <th scope="row" class="category_feature_mo_2fa">Session Management</th>
993
+ <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
994
+ <td><center><i class="fas fa-check"></i></center></td>
995
+ <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
996
+ </tr><tr>
997
+ <th scope="row" class="category_feature_mo_2fa">Page Restriction Add-On</th>
998
+ <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
999
+ <td><center><i class="fas fa-check"></i></center></td>
1000
+ <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
1001
+ </tr><tr>
1002
+ <th scope="row" class="category_feature_mo_2fa">Attribute Based Redirection</th>
1003
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
1004
  <td><center><i class="fas fa-check"></i></center></td>
1005
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
1006
  </tr>
1007
+ <th scope="row" class="category_feature_mo_2fa">SCIM-User Provisioning</th>
1008
+ <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
1009
+ <td><center><i class="fas fa-check"></i></center></td>
1010
+ <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
1011
+ </tr>
1012
+
1013
+
1014
+ <tr class="bg_category_main_mo_2fa">
1015
  <th scope="row">Advance Wordpress Login Settings</th>
1016
  <td></td>
1017
  <td></td>
1019
 
1020
  </tr>
1021
  <tr>
1022
+ <th scope="row" class="category_feature_mo_2fa">Force Two Factor for Users</th>
1023
  <td><center><i class="fas fa-check"></i></center></td>
1024
  <td><center><i class="fas fa-check"></i></center></td>
1025
  <td><center><i class="fas fa-check"></i></center></td>
1026
  </tr>
1027
  <tr>
1028
+ <th scope="row" class="category_feature_mo_2fa">Role Based and User Based Authentication settings</th>
1029
  <td><center><i class="fas fa-check"></i></center></td>
1030
  <td><center><i class="fas fa-check"></i></center></td>
1031
  <td><center><i class="fas fa-check"></i></center></td>
1032
  </tr>
1033
  <tr>
1034
+ <th scope="row" class="category_feature_mo_2fa">Email Verififcation during Two-Factor Registration</th>
1035
  <td><center><i class="fas fa-check"></i></center></td>
1036
  <td><center><i class="fas fa-check"></i></center></td>
1037
  <td><center><i class="fas fa-check"></i></center></td>
1038
 
1039
  </tr>
1040
  <tr>
1041
+ <th scope="row" class="category_feature_mo_2fa">Custom Redirect URL</th>
1042
  <td><center><i class="fas fa-check"></i></center></td>
1043
  <td><center><i class="fas fa-check"></i></center></td>
1044
  <td><center><i class="fas fa-check"></i></center></td>
1045
 
1046
  </tr><tr>
1047
+ <th scope="row" class="category_feature_mo_2fa">Inline Registration</th>
1048
  <td><center><i class="fas fa-check"></i></center></td>
1049
  <td><center><i class="fas fa-check"></i></center></td>
1050
  <td><center><i class="fas fa-check"></i></center></td>
1051
 
1052
  </tr><tr>
1053
+ <th scope="row" class="category_feature_mo_2fa">Mobile Support</th>
1054
  <td><center><i class="fas fa-check"></i></center></td>
1055
  <td><center><i class="fas fa-check"></i></center></td>
1056
  <td><center><i class="fas fa-check"></i></center></td>
1057
 
1058
  </tr><tr>
1059
+ <th scope="row" class="category_feature_mo_2fa">Privacy Policy Settings</th>
1060
  <td><center><i class="fas fa-check"></i></center></td>
1061
  <td><center><i class="fas fa-check"></i></center></td>
1062
  <td><center><i class="fas fa-check"></i></center></td>
1063
 
1064
  </tr><tr>
1065
+ <th scope="row" class="category_feature_mo_2fa">XML-RPC </th>
1066
  <td><center><i class="fas fa-check"></i></center></td>
1067
  <td><center><i class="fas fa-check"></i></center></td>
1068
  <td><center><i class="fas fa-check"></i></center></td>
1069
 
1070
  </tr>
1071
+ <tr class="bg_category_main_mo_2fa">
1072
  <th scope="row">Advance Security Features</th>
1073
  <td></td>
1074
  <td></td>
1076
 
1077
  </tr>
1078
  <tr>
1079
+ <th scope="row" class="category_feature_mo_2fa">Brute Force Protection</th>
1080
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
1081
  <td><center><i class="fas fa-check"></i></center></td>
1082
  <td><center><i class="fas fa-check"></i></center></td>
1083
 
1084
  </tr>
1085
  <tr>
1086
+ <th scope="row" class="category_feature_mo_2fa">IP Blocking </th>
1087
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
1088
  <td><center><i class="fas fa-check"></i></center></td>
1089
  <td><center><i class="fas fa-check"></i></center></td>
1090
 
1091
  </tr>
1092
  <tr>
1093
+ <th scope="row" class="category_feature_mo_2fa">Monitoring</th>
1094
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
1095
  <td><center><i class="fas fa-check"></i></center></td>
1096
  <td><center><i class="fas fa-check"></i></center></td>
1097
 
1098
  </tr> <tr>
1099
+ <th scope="row" class="category_feature_mo_2fa">File Protection</th>
1100
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
1101
  <td><center><i class="fas fa-check"></i></center></td>
1102
  <td><center><i class="fas fa-check"></i></center></td>
1103
 
1104
  </tr>
1105
  <tr>
1106
+ <th scope="row" class="category_feature_mo_2fa">Country Blocking </th>
1107
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
1108
  <td><center><i class="fas fa-check"></i></center></td>
1109
  <td><center><i class="fas fa-check"></i></center></td>
1110
 
1111
  </tr>
1112
  <tr>
1113
+ <th scope="row" class="category_feature_mo_2fa">HTACCESS Level Blocking </th>
1114
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
1115
  <td><center><i class="fas fa-check"></i></center></td>
1116
  <td><center><i class="fas fa-check"></i></center></td>
1117
 
1118
  </tr>
1119
  <tr>
1120
+ <th scope="row" class="category_feature_mo_2fa">Browser Blocking </th>
1121
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
1122
  <td><center><i class="fas fa-check"></i></center></td>
1123
  <td><center><i class="fas fa-check"></i></center></td>
1124
 
1125
  </tr>
1126
  <tr>
1127
+ <th scope="row" class="category_feature_mo_2fa">Block Global Blacklisted Email Domains</th>
1128
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
1129
  <td><center><i class="fas fa-check"></i></center></td>
1130
  <td><center><i class="fas fa-check"></i></center></td>
1131
 
1132
  </tr>
1133
  <tr>
1134
+ <th scope="row" class="category_feature_mo_2fa">Manual Block Email Domains</th>
1135
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
1136
  <td><center><i class="fas fa-check"></i></center></td>
1137
  <td><center><i class="fas fa-check"></i></center></td>
1138
 
1139
  </tr>
1140
  <tr>
1141
+ <th scope="row" class="category_feature_mo_2fa">DB Backup</th>
1142
  <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
1143
  <td><center><i class="fas fa-check"></i></center></td>
1144
  <td><center><i class="fas fa-check"></i></center></td>
1146
  </tr>
1147
  <tr>
1148
  <th scope="row">Multi-Site Support</th>
 
 
1149
  <td><center><i class="fas fa-check"></i></center></td>
1150
+ <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
1151
+ <td><center><i class="fas fa-times mo2fa_hide"></i></center></td>
1152
  </tr><tr>
1153
  <th scope="row">Language Translation Support</th>
 
1154
  <td><center><i class="fas fa-check"></i></center></td>
1155
+ <td><center><i class="fas fa-check"></i></center></td>
1156
+ <td><center><i class="fas fa-check"></i></center></td>
1157
 
1158
  </tr><tr>
1159
  <th scope="row">Get online support with GoTo/Zoom meeting</th>
1167
  </div>
1168
  </div>
1169
  </center>
1170
+ <div class="mo_wpns_setting_layout mo2fa_setting_layout">
1171
  <div>
1172
  <h2><?php echo mo2f_lt('Steps to upgrade to the Premium Plan :');?></h2>
1173
  <ol class="mo2f_licensing_plans_ol">
1185
  <div>
1186
  <h2><?php echo mo2f_lt('Note :');?></h2>
1187
  <ol class="mo2f_licensing_plans_ol">
 
1188
  <li><?php echo mo2f_lt( 'The plugin works with many of the default custom login forms (like Woocommerce/Theme My Login/Login With Ajax/User Pro/Elementor), however if you face any issues with your custom login form, contact us and we will help you with it.' ); ?></li>
1189
  <li><?php echo mo2f_lt( 'The <b>license key </b>is required to activate the <b>Premium Lite/Premium</b> Plugins. You will have to login with the miniOrange Account you used to make the purchase then enter license key to activate plugin.' ); ?>
1190
 
1212
  <hr>
1213
  <br>
1214
  <div>
1215
+ <?php echo mo2f_lt( '<b class="mo2fa_note">Privacy Policy : </b><a href="https://www.miniorange.com/2-factor-authentication-for-wordpress-gdpr">Click Here</a>
1216
  to read our Privacy Policy.' ); ?>
1217
  </div>
1218
  <br>
1224
  </div>
1225
  </div>
1226
  </center>
1227
+ <div id="mo2f_payment_option" class="mo_wpns_setting_layout mo2fa_setting_layout">
1228
  <div>
1229
  <h3>Supported Payment Methods</h3><hr>
1230
  <div class="mo_2fa_container">
1277
  function mo2f_waf_yearly_standard_pricing() {
1278
  ?>
1279
  <p class="mo2f_pricing_text mo_wpns_upgrade_page_starting_price"
1280
+ id="mo2f_yearly_sub"><?php echo __( 'Yearly Subscription Fees', 'miniorange-2-factor-authentication' ); ?><br>
1281
 
1282
  <select id="mo2f_yearly" class="form-control mo2fa_form_control1">
1283
  <option> <?php echo mo2f_lt( '1 site - $50 per year' ); ?> </option>
1292
  function mo2f_login_yearly_standard_pricing() {
1293
  ?>
1294
  <p class="mo2f_pricing_text mo_wpns_upgrade_page_starting_price"
1295
+ id="mo2f_yearly_sub"><?php echo __( 'Yearly Subscription Fees', 'miniorange-2-factor-authentication' ); ?><br>
1296
 
1297
  <select id="mo2f_yearly" class="form-control mo2fa_form_control1">
1298
  <option> <?php echo mo2f_lt( '1 site - $15 per year' ); ?> </option>
1307
  function mo2f_backup_yearly_standard_pricing() {
1308
  ?>
1309
  <p class="mo2f_pricing_text mo_wpns_upgrade_page_starting_price"
1310
+ id="mo2f_yearly_sub"><?php echo __( 'Yearly Subscription Fees', 'miniorange-2-factor-authentication' ); ?><br>
1311
 
1312
  <select id="mo2f_yearly" class="form-control mo2fa_form_control1">
1313
  <option> <?php echo mo2f_lt( '1 site - $30 per year' ); ?> </option>
1322
  function mo2f_scanner_yearly_standard_pricing() {
1323
  ?>
1324
  <p class="mo2f_pricing_text mo_wpns_upgrade_page_starting_price"
1325
+ id="mo2f_yearly_sub"><?php echo __( 'Yearly Subscription Fees', 'miniorange-2-factor-authentication' ); ?><br>
1326
 
1327
  <select id="mo2f_yearly" class="form-control mo2fa_form_control1">
1328
  <option> <?php echo mo2f_lt( '1 site - $15 per year' ); ?> </option>
1338
  function mo2f_get_binary_equivalent_2fa_lite( $mo2f_var ) {
1339
  switch ( $mo2f_var ) {
1340
  case 1:
1341
+ return "<div style='color: #20b2aa;font-size: x-large;float:left;margin:0px 5px;'>🗸</div>";
1342
  case 0:
1343
+ return "<div style='color: red;font-size: x-large;float:left;margin:0px 5px;'>×</div>";
1344
  default:
1345
  return $mo2f_var;
1346
  }
1399
  }
1400
  function show_2fa_plans()
1401
  {
1402
+ document.getElementById('mo_ns_features_only').style.display = "none";
1403
  document.getElementById('mo2f_twofa_plans').style.display = "flex";
1404
  document.getElementById('mo_2fa_lite_licensing_plans_title').style.display = "none";
1405
  document.getElementById('mo_2fa_lite_licensing_plans_title1').style.display = "block";
1406
+ document.getElementById('mo_ns_licensing_plans_title').style.display = "block";
1407
  document.getElementById('mo_ns_licensing_plans_title1').style.display = "none";
1408
  document.getElementById('mo2fa_compare').style.display = "block";
1409
  }
1410
  function mo_ns_show_plans()
1411
  {
1412
+ document.getElementById('mo_ns_features_only').style.display = "block";
1413
  document.getElementById('mo2f_twofa_plans').style.display = "none";
1414
  document.getElementById('mo_2fa_lite_licensing_plans_title').style.display = "block";
1415
  document.getElementById('mo_2fa_lite_licensing_plans_title1').style.display = "none";
1416
+ document.getElementById('mo_ns_licensing_plans_title').style.display = "none";
1417
  document.getElementById('mo_ns_licensing_plans_title1').style.display = "block";
1418
  document.getElementById('mo2fa_compare').style.display = "none";
1419
  }
1425
 
1426
  function mo2fa_show_details()
1427
  {
1428
+ jQuery('#more_details').toggle();
1429
  jQuery('.mo2fa_more_details_p1').toggle();
1430
  jQuery('.mo2fa_more_details_p').toggle();
1431
  jQuery('.mo2fa_compare1').toggle();
views/upgrade_2fa_lite.php CHANGED
@@ -628,7 +628,7 @@ function mo2f_create_li_2fa_lite( $mo2f_array ) {
628
  function mo2f_get_binary_equivalent_2fa_lite( $mo2f_var ) {
629
  switch ( $mo2f_var ) {
630
  case 1:
631
- return "<div style='color: #2271b1;font-size: x-large;float:left;margin:0px 5px;'>🗸</div>";
632
  case 0:
633
  return "<div style='color: red;font-size: x-large;float:left;margin:0px 5px;'>×</div>";
634
  default:
628
  function mo2f_get_binary_equivalent_2fa_lite( $mo2f_var ) {
629
  switch ( $mo2f_var ) {
630
  case 1:
631
+ return "<div style='color: #20b2aa;font-size: x-large;float:left;margin:0px 5px;'>🗸</div>";
632
  case 0:
633
  return "<div style='color: red;font-size: x-large;float:left;margin:0px 5px;'>×</div>";
634
  default:
views/waf.php CHANGED
@@ -4,22 +4,21 @@ $setup_dirName = $mo2f_dirName.'views'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEP
4
  include $setup_dirName;
5
  include_once $mo2f_dirName.'handler'.DIRECTORY_SEPARATOR.'WAF'.DIRECTORY_SEPARATOR.'database'.DIRECTORY_SEPARATOR.'mo-waf-db-common.php';
6
  ?>
7
- <div class="mo_wpns_divided_layout_method">
8
- <div class="nav-tab-wrapper">
9
- <button class="nav-tab" onclick="mo2f_wpns_waf_function(this)" id="mo2f_firewall_attack_dash">Firewall Dashboard</button>
10
- <button class="nav-tab" onclick="mo2f_wpns_waf_function(this)" id="mo2f_settings_tab">Settings</button>
11
- <button class="nav-tab" onclick="mo2f_wpns_waf_function(this)" id="mo2f_real_time">Real Time Blocking</button>
12
- <button class="nav-tab" onclick="mo2f_wpns_waf_function(this)" id="mo2f_rate_limiting">Rate Limiting</button>
13
- <button class="nav-tab" onclick="mo2f_wpns_waf_function(this)" id="mo2f_waf_report">Report</button>
14
  </div>
15
  </div>
16
  <br>
17
- <div>
18
- <div id="mo2f_firewall_attack_dash_div" class="tabcontent">
19
  <div class="mo_wpns_divided_layout">
20
- <div class="mo_wpns_waf_divided_layout_tab" id ="mo2f_firewall_attack_dash_div">
21
  <div class="mo_wpns_small_2_layout">
22
- <div class ="mo_wpns_sub_dashboards_layout">Attacks Blocked<hr><div class="wpns_font_shown" ><?php echo $totalAttacks; ?></div></div>
23
  <div class="mo_wpns_small_3_layout">
24
  <div class ="mo_wpns_sub_sub_dashboard_layout">Injections<hr class="line"><?php echo $sqlC; ?></></div>
25
  <div class ="mo_wpns_sub_sub_dashboard_layout">RCE<hr class="line"><?php echo $rceC; ?></div>
@@ -28,12 +27,13 @@ $setup_dirName = $mo2f_dirName.'views'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEP
28
  </div>
29
  </div>
30
  <div class="mo_wpns_small_2_layout">
31
- <div class ="mo_wpns_sub_dashboards_layout">Blocked IPs<hr class="line"><div class="wpns_font_shown"><?php echo $totalIPBlocked; ?></div></div>
 
32
  <div class="mo_wpns_small_3_layout">
33
- <div class ="mo_wpns_sub_sub_dashboard_layout">Manual<hr class="line"><?php echo $manualBlocks; ?></div>
34
- <div class ="mo_wpns_sub_sub_dashboard_layout">Real Time<hr class="line"><?php echo $realTime; ?></div>
35
- <div class ="mo_wpns_sub_sub_dashboard_layout">Country Blocked<hr class="line"><?php echo $countryBlocked; ?></div>
36
- <div class ="mo_wpns_sub_sub_dashboard_layout">IP Blocked by WAF<hr class="line"><?php echo $IPblockedByWAF ?></div>
37
  </div>
38
  </div>
39
  </div>
@@ -42,7 +42,7 @@ $setup_dirName = $mo2f_dirName.'views'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEP
42
  <p><i class="mo_wpns_not_bold">
43
  This contains settings of your <b>Website Application Firewall</b> with settings of <b>SQL Injecton, Cross Site Scripting, Local File Inclusion, Remote File Inclusion, Remote Code Inclusion,</b> etc.<br><br><br><br>
44
  </i></p>
45
- <input type="button" name="SettingPage" id="SettingPage" value="Settings" class="button button-primary button-large" />
46
 
47
  </div>
48
  <div class="mo_wpns_small_layout">
@@ -50,7 +50,7 @@ $setup_dirName = $mo2f_dirName.'views'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEP
50
  <p><i class="mo_wpns_not_bold">
51
  Real Time Blocking is <b>blocking IPs in real time</b> by miniOrange IP dataset. If any IP is found malicious then that IP will be added to the <b>miniOrange IP dataset</b> which is <b>maintained in real time.</b> By enabling this feature, if any IP is found malicious on <b>any miniOrange customer's site</b> then that IP will be <b>automatically blocked from your site as well.</b> <br><br>
52
  </i></p>
53
- <input type="button" name="RTBPage" id="RTBPage" value="Real Time Blocking" class="button button-primary button-large" />
54
 
55
  </div>
56
  <div class="mo_wpns_small_layout">
@@ -58,18 +58,18 @@ $setup_dirName = $mo2f_dirName.'views'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEP
58
  <p><i class="mo_wpns_not_bold">
59
  Rate Limiting is used for <b>controlling the amount of incoming requests</b> from a <b>specific IP</b> to a service(Website). In this feature you can decide the <b>number of requests</b> a user can make to your website. If this is not enabled, an attacker can send <b>any number of requests</b> to a service that can lead to a <b>denial of service</b> by which legitimate users of the website will not be able to access the website.
60
  </i></p>
61
- <input type="button" name="RLPage" id="RLPage" value="Rate limiting" class="button button-primary button-large" />
62
 
63
 
64
  </div>
65
 
66
- </div>
67
 
68
 
69
 
70
  </div>
71
 
72
- <div id="mo2f_waf_report_div" class="tabcontent">
73
  <div class="mo_wpns_divided_layout">
74
  <div class="mo_wpns_setting_layout">
75
  <h2>Blocked attacks Report</h2>
@@ -98,7 +98,7 @@ echo "<td>".date("M j, Y, g:i:s a",$blockedattack->time)."</td><td>".$blocked
98
  </div>
99
  </div>
100
 
101
- <div id="mo2f_real_time_div" class="tabcontent">
102
  <div class="mo_wpns_divided_layout">
103
  <div class="mo_wpns_setting_layout">
104
 
@@ -121,14 +121,14 @@ echo "<td>".date("M j, Y, g:i:s a",$blockedattack->time)."</td><td>".$blocked
121
  </div>
122
  </div>
123
 
124
- <div id="mo2f_rate_limiting_div" class="tabcontent">
125
  <div class="mo_wpns_divided_layout">
126
- <div class="mo_wpns_setting_layout" id='mo2f_ratelimiting_div'>
127
  <div id="RL" name="RL">
128
  <table style="width:100%">
129
  <tr>
130
  <th align="left">
131
- <h3>Rate Limiting : <a href='<?php echo $two_factor_premium_doc['Rate Limiting'];?>' target="_blank"><span class=" dashicons dashicons-text-page" style="font-size:23px;color:#413c69;"></span></a>
132
  <br>
133
  <p><i class="mo_wpns_not_bold">This will protect your Website from Dos attack and block request after a limit exceed.</i></p>
134
  </th>
@@ -163,7 +163,7 @@ echo "<td>".date("M j, Y, g:i:s a",$blockedattack->time)."</td><td>".$blocked
163
  </th></tr>
164
  <tr><th></th>
165
  <th align="center">
166
- <br><input type="button" name="saveRateL" id="saveRateL" value="Save" class="button button-primary button-large">
167
  </th>
168
  </tr>
169
  </table>
@@ -205,7 +205,7 @@ echo "<td>".date("M j, Y, g:i:s a",$blockedattack->time)."</td><td>".$blocked
205
  </th></tr>
206
  <tr><th></th>
207
  <th align="center">
208
- <br><input type="button" name="saveRateLCrawler" id="saveRateLCrawler" value="Save" class="button button-primary button-large">
209
  </th>
210
  </tr>
211
  </table>
@@ -371,7 +371,7 @@ echo "<td>".date("M j, Y, g:i:s a",$blockedattack->time)."</td><td>".$blocked
371
 
372
  </div>
373
 
374
- <div id="mo2f_settings_tab_div" class="tabcontent">
375
 
376
 
377
  <?php
@@ -384,11 +384,11 @@ echo "<td>".date("M j, Y, g:i:s a",$blockedattack->time)."</td><td>".$blocked
384
 
385
  ?>
386
  <div class="mo_wpns_divided_layout">
387
- <div class="mo_wpns_setting_layout" id= 'mo2f_settings_tab_div'>
388
  <table style="width:100%">
389
  <tr><th align="left">
390
  <h3>Website Firewall on Plugin Level : <a href='<?php echo $two_factor_premium_doc['Plugin level waf'];?>' target="_blank">
391
- <span class=" dashicons dashicons-text-page" style="font-size:23px;color:#413c69;"></span></a>
392
  <br>
393
  <p><i class="mo_wpns_not_bold">This will activate WAF after the WordPress load. This will block illegitimate requests after making connection to WordPress. This will check Every Request in plugin itself.</i></p>
394
  </th><th align="right">
@@ -399,8 +399,8 @@ echo "<td>".date("M j, Y, g:i:s a",$blockedattack->time)."</td><td>".$blocked
399
  </tr></th>
400
  </h3>
401
  <tr><th align="left">
402
- <h3>Website Firewall on .htaccess Level <strong style="color: #2271b1">[Recommended] </strong>: <a href='<?php echo $two_factor_premium_doc['htaccess level waf'];?>' target="_blank">
403
- <span class="dashicons dashicons-text-page" style="font-size:23px;color:#413c69;"></span></a>
404
  <p><i class="mo_wpns_not_bold">This will activate WAF before the WordPress load. This will block illegitimate request before any connection to WordPress. This level doesnot allow illegal requests to before any page gets loaded.</i></p>
405
  </th><th align="right">
406
  <label class='mo_wpns_switch'>
@@ -416,10 +416,10 @@ echo "<td>".date("M j, Y, g:i:s a",$blockedattack->time)."</td><td>".$blocked
416
  </i></p>
417
  <?php
418
  echo "<a href='". $url."' download='".$nameDownload."'>";?>
419
- <input type='button' name='CDhtaccess' id='CDhtaccess' value='Confirm & Download' class="button button-primary button-large" />
420
  </a>
421
 
422
- <input type='button' name='cnclDH' id='cnclDH' value='Cancel' class="button button-primary button-large"/>
423
  </div>
424
  </div>
425
  <div name = 'AttackTypes' id ='AttackTypes'>
@@ -433,13 +433,13 @@ echo "<a href='". $url."' download='".$nameDownload."'>";?>
433
 
434
  </tr>
435
  </table>
436
- <hr color = "#2271b1"/>
437
  <table style="width:100%">
438
  <tr>
439
 
440
- <th align="left"><h2> SQL Injection Protection <strong style="color: #2271b1">[Basic Level Protection] </strong>::
441
 
442
- <p><i class="mo_wpns_not_bold">SQL Injection attacks are used for attack on database. This option will block all illegal requests which tries to access your database. <a href="admin.php?page=mo_2fa_upgrade"><strong style="color: #2271b1">Advance Signatures</strong></a></i></p>
443
  </th>
444
  <th align="right">
445
  <label class='mo_wpns_switch'>
@@ -452,9 +452,9 @@ echo "<a href='". $url."' download='".$nameDownload."'>";?>
452
 
453
  </tr>
454
  <tr>
455
- <th align="left"><h2> Cross Site scripting Protection <strong style="color: #2271b1">[Basic Level Protection] </strong>::
456
  <br>
457
- <p><i class="mo_wpns_not_bold">cross site scripting is used for script attacks. This will block illegal scripting on website. <a href="admin.php?page=mo_2fa_upgrade"><strong style="color: #2271b1">Advance Signatures</strong></a></i></p>
458
  </th>
459
  <th align="right">
460
  <label class='mo_wpns_switch'>
@@ -464,9 +464,9 @@ echo "<a href='". $url."' download='".$nameDownload."'>";?>
464
  </th>
465
  </h2></tr>
466
  <tr>
467
- <th align="left"><h2> Local File Inclusion Protection <strong style="color: #2271b1">[Basic Level Protection] </strong>::
468
  <br>
469
- <p><i class="mo_wpns_not_bold">Local File inclusion is used for making changes to the local files of the server. This option will block Local File Inclusion. <a href="admin.php?page=mo_2fa_upgrade"><strong style="color: #2271b1">Advance Signatures</strong></a></i></p>
470
  </th>
471
  <th align="right">
472
  <label class='mo_wpns_switch'>
@@ -503,7 +503,7 @@ echo "<a href='". $url."' download='".$nameDownload."'>";?>
503
  </h2>
504
  </tr>
505
  <tr>
506
- <th align="left"><h2> SQL Injection Protection <strong style="color: #2271b1">[Advance Level Protection]</strong> <strong style="color: red"><a href="admin.php?page=mo_2fa_upgrade"> [Premium Feature] </a></strong>::
507
  <br>
508
  <p><i class="mo_wpns_not_bold">Advance Level Protection includes advance signatures to detect SQL injection. It is the recommended protection for all websites. </i></p>
509
  </th>
@@ -516,7 +516,7 @@ echo "<a href='". $url."' download='".$nameDownload."'>";?>
516
  </h2>
517
  </tr>
518
  <tr>
519
- <th align="left"><h2> Cross Site scripting Protection<strong style="color: #2271b1"> [Advance Level Protection]</strong> <strong style="color: red"><a href="admin.php?page=mo_2fa_upgrade"> [Premium Feature] </a></strong>::
520
  <br>
521
  <p><i class="mo_wpns_not_bold">Advance Level Protection includes advance signatures to detect Cross Site Scripting attacks.</i></p>
522
  </th>
@@ -529,7 +529,7 @@ echo "<a href='". $url."' download='".$nameDownload."'>";?>
529
  </h2>
530
  </tr>
531
  <tr>
532
- <th align="left"><h2> Local File Inclusion Protection Protection<strong style="color: #2271b1"> [Advance Level Protection]</strong> <strong style="color: red"><a href="admin.php?page=mo_2fa_upgrade"> [Premium Feature] </a></strong>::
533
  <br>
534
  <p><i class="mo_wpns_not_bold">Advance Level Protection includes advance signatures to detect LFI attacks on your website. Advance protection covers all files of your server to get protected from any kind of LFI attack.</i></p>
535
  </th>
@@ -548,12 +548,12 @@ echo "<a href='". $url."' download='".$nameDownload."'>";?>
548
  <div class="mo_wpns_setting_layout" id="mo2f_waf_block_after">
549
  <table style="width: 100%">
550
  <tr>
551
- <th align="left"><h2>Block After <strong style="color: #2271b1">[Recommended : 10] </strong>:
552
  <p><i class="mo_wpns_not_bold">Option for blocking the IP if the limit of the attacks has been exceeds.</i></p>
553
  </th>
554
  <th align="right"><input type ="number" name ="limitAttack" id = "limitAttack" required min="5"/></th>
555
  <th><h2 align="left"> attacks</h2></th>
556
- <th align="right"><input type="button" name="saveLimitAttacks" id="saveLimitAttacks" value="Save" class="button button-primary button-large" /></th>
557
  </h2>
558
  </tr>
559
  </table>
@@ -563,7 +563,7 @@ echo "<a href='". $url."' download='".$nameDownload."'>";?>
563
 
564
 
565
  </div>
566
- </div>
567
 
568
 
569
  <script type="text/javascript">
@@ -1186,32 +1186,62 @@ jQuery('#waf_report').click(function(){
1186
  document.getElementById("ReportTab").click();
1187
  });
1188
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1189
 
1190
- function mo2f_wpns_waf_function(elmt){
1191
- var tabname = elmt.id;
1192
- var tabarray = ["mo2f_firewall_attack_dash","mo2f_settings_tab","mo2f_rate_limiting","mo2f_real_time","mo2f_waf_report"];
1193
- for (var i = 0; i < tabarray.length; i++) {
1194
- if(tabarray[i] == tabname){
1195
- jQuery("#"+tabarray[i]).addClass("nav-tab-active");
1196
- jQuery("#"+tabarray[i]+"_div").css("display", "block");
1197
- }else{
1198
- jQuery("#"+tabarray[i]).removeClass("nav-tab-active");
1199
- jQuery("#"+tabarray[i]+"_div").css("display", "none");
1200
- }
1201
- }
1202
-
1203
- localStorage.setItem("waf_last_tab", tabname);
1204
- }
1205
-
1206
- jQuery('#mo_2fa_waf').addClass('nav-tab-active');
1207
-
1208
- var tab = localStorage.getItem("waf_last_tab");
1209
 
1210
- if(tab)
1211
- document.getElementById(tab).click();
1212
- else{
1213
- document.getElementById("mo2f_firewall_attack_dash").click();
 
 
 
1214
  }
1215
 
1216
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1217
  </script>
4
  include $setup_dirName;
5
  include_once $mo2f_dirName.'handler'.DIRECTORY_SEPARATOR.'WAF'.DIRECTORY_SEPARATOR.'database'.DIRECTORY_SEPARATOR.'mo-waf-db-common.php';
6
  ?>
7
+ <div class="mo_wpns_divided_layout_tab">
8
+ <div class="mo_wpns_tab">
9
+ <button class="tablinks" onclick="waf_function(event, 'waf_dash')" id="defaultOpen">Firewall Dashboard</button>
10
+ <button class="tablinks" onclick="waf_function(event, 'settings')" id="settingsTab">Settings</button>
11
+ <button class="tablinks" onclick="waf_function(event, 'real_time')" id="RealTimeTab">Real Time Blocking</button>
12
+ <button class="tablinks" onclick="waf_function(event, 'rate_limiting')" id="RateLimitTab">Rate Limiting</button>
13
+ <button class="tablinks" onclick="waf_function(event, 'waf_report')" id="ReportTab">Report</button>
14
  </div>
15
  </div>
16
  <br>
17
+ <div id="waf_dash" class="tabcontent">
 
18
  <div class="mo_wpns_divided_layout">
19
+ <div class="mo_wpns_divided_layout_tab" id ="mo2f_firewall_attack_dash">
20
  <div class="mo_wpns_small_2_layout">
21
+ <div class ="mo_wpns_sub_dashboards_layout">Attacks Blocked<hr class="line"><p class="wpns_font_shown" ><?php echo $totalAttacks; ?></p></div>
22
  <div class="mo_wpns_small_3_layout">
23
  <div class ="mo_wpns_sub_sub_dashboard_layout">Injections<hr class="line"><?php echo $sqlC; ?></></div>
24
  <div class ="mo_wpns_sub_sub_dashboard_layout">RCE<hr class="line"><?php echo $rceC; ?></div>
27
  </div>
28
  </div>
29
  <div class="mo_wpns_small_2_layout">
30
+
31
+ <div class ="mo_wpns_sub_dashboards_layout">Blocked IPs<hr class="line"><p class="wpns_font_shown"><?php echo $totalIPBlocked; ?></p></div>
32
  <div class="mo_wpns_small_3_layout">
33
+ <div class ="mo_wpns_sub_sub_dashboard_layout">Manual<hr class="line"><?php echo $manualBlocks; ?></div>
34
+ <div class ="mo_wpns_sub_sub_dashboard_layout">Real Time<hr class="line"><?php echo $realTime; ?></div>
35
+ <div class ="mo_wpns_sub_sub_dashboard_layout">Country Blocked<hr class="line"><?php echo $countryBlocked; ?></div>
36
+ <div class ="mo_wpns_sub_sub_dashboard_layout">IP Blocked by WAF<hr class="line"><?php echo $IPblockedByWAF ?></div>
37
  </div>
38
  </div>
39
  </div>
42
  <p><i class="mo_wpns_not_bold">
43
  This contains settings of your <b>Website Application Firewall</b> with settings of <b>SQL Injecton, Cross Site Scripting, Local File Inclusion, Remote File Inclusion, Remote Code Inclusion,</b> etc.<br><br><br><br>
44
  </i></p>
45
+ <input type="button" name="SettingPage" id="SettingPage" value="Settings" class="mo_wpsn_button mo_wpsn_button1" />
46
 
47
  </div>
48
  <div class="mo_wpns_small_layout">
50
  <p><i class="mo_wpns_not_bold">
51
  Real Time Blocking is <b>blocking IPs in real time</b> by miniOrange IP dataset. If any IP is found malicious then that IP will be added to the <b>miniOrange IP dataset</b> which is <b>maintained in real time.</b> By enabling this feature, if any IP is found malicious on <b>any miniOrange customer's site</b> then that IP will be <b>automatically blocked from your site as well.</b> <br><br>
52
  </i></p>
53
+ <input type="button" name="RTBPage" id="RTBPage" value="Real Time Blocking" class="mo_wpsn_button mo_wpsn_button1" />
54
 
55
  </div>
56
  <div class="mo_wpns_small_layout">
58
  <p><i class="mo_wpns_not_bold">
59
  Rate Limiting is used for <b>controlling the amount of incoming requests</b> from a <b>specific IP</b> to a service(Website). In this feature you can decide the <b>number of requests</b> a user can make to your website. If this is not enabled, an attacker can send <b>any number of requests</b> to a service that can lead to a <b>denial of service</b> by which legitimate users of the website will not be able to access the website.
60
  </i></p>
61
+ <input type="button" name="RLPage" id="RLPage" value="Rate limiting" class="mo_wpsn_button mo_wpsn_button1" />
62
 
63
 
64
  </div>
65
 
66
+ </div>
67
 
68
 
69
 
70
  </div>
71
 
72
+ <div id="waf_report" class="tabcontent">
73
  <div class="mo_wpns_divided_layout">
74
  <div class="mo_wpns_setting_layout">
75
  <h2>Blocked attacks Report</h2>
98
  </div>
99
  </div>
100
 
101
+ <div id="real_time" class="tabcontent">
102
  <div class="mo_wpns_divided_layout">
103
  <div class="mo_wpns_setting_layout">
104
 
121
  </div>
122
  </div>
123
 
124
+ <div id="rate_limiting" class="tabcontent">
125
  <div class="mo_wpns_divided_layout">
126
+ <div class="mo_wpns_setting_layout" id='mo2f_ratelimiting'>
127
  <div id="RL" name="RL">
128
  <table style="width:100%">
129
  <tr>
130
  <th align="left">
131
+ <h3>Rate Limiting : <a href='<?php echo $two_factor_premium_doc['Rate Limiting'];?>' target="_blank"><span class=" dashicons dashicons-text-page" style="font-size:23px;color:#269eb3;"></span></a>
132
  <br>
133
  <p><i class="mo_wpns_not_bold">This will protect your Website from Dos attack and block request after a limit exceed.</i></p>
134
  </th>
163
  </th></tr>
164
  <tr><th></th>
165
  <th align="center">
166
+ <br><input type="button" name="saveRateL" id="saveRateL" value="Save" class="mo_wpsn_button mo_wpsn_button1">
167
  </th>
168
  </tr>
169
  </table>
205
  </th></tr>
206
  <tr><th></th>
207
  <th align="center">
208
+ <br><input type="button" name="saveRateLCrawler" id="saveRateLCrawler" value="Save" class="mo_wpsn_button mo_wpsn_button1">
209
  </th>
210
  </tr>
211
  </table>
371
 
372
  </div>
373
 
374
+ <div id="settings" class="tabcontent">
375
 
376
 
377
  <?php
384
 
385
  ?>
386
  <div class="mo_wpns_divided_layout">
387
+ <div class="mo_wpns_setting_layout" id= 'mo_waf_options_tour'>
388
  <table style="width:100%">
389
  <tr><th align="left">
390
  <h3>Website Firewall on Plugin Level : <a href='<?php echo $two_factor_premium_doc['Plugin level waf'];?>' target="_blank">
391
+ <span class=" dashicons dashicons-text-page" style="font-size:23px;color:#269eb3;"></span></a>
392
  <br>
393
  <p><i class="mo_wpns_not_bold">This will activate WAF after the WordPress load. This will block illegitimate requests after making connection to WordPress. This will check Every Request in plugin itself.</i></p>
394
  </th><th align="right">
399
  </tr></th>
400
  </h3>
401
  <tr><th align="left">
402
+ <h3>Website Firewall on .htaccess Level <strong style="color: #20b2aa">[Recommended] </strong>: <a href='<?php echo $two_factor_premium_doc['htaccess level waf'];?>' target="_blank">
403
+ <span class="dashicons dashicons-text-page" style="font-size:23px;color:#269eb3;"></span></a>
404
  <p><i class="mo_wpns_not_bold">This will activate WAF before the WordPress load. This will block illegitimate request before any connection to WordPress. This level doesnot allow illegal requests to before any page gets loaded.</i></p>
405
  </th><th align="right">
406
  <label class='mo_wpns_switch'>
416
  </i></p>
417
  <?php
418
  echo "<a href='". $url."' download='".$nameDownload."'>";?>
419
+ <input type='button' name='CDhtaccess' id='CDhtaccess' value='Confirm & Download' class="mo_wpsn_button mo_wpsn_button1" />
420
  </a>
421
 
422
+ <input type='button' name='cnclDH' id='cnclDH' value='Cancel' class="mo_wpsn_button mo_wpsn_button1"/>
423
  </div>
424
  </div>
425
  <div name = 'AttackTypes' id ='AttackTypes'>
433
 
434
  </tr>
435
  </table>
436
+ <hr color = "#20b2aa"/>
437
  <table style="width:100%">
438
  <tr>
439
 
440
+ <th align="left"><h2> SQL Injection Protection <strong style="color: #20b2aa">[Basic Level Protection] </strong>::
441
 
442
+ <p><i class="mo_wpns_not_bold">SQL Injection attacks are used for attack on database. This option will block all illegal requests which tries to access your database. <a href="admin.php?page=mo_2fa_upgrade"><strong style="color: #20b2aa">Advance Signatures</strong></a></i></p>
443
  </th>
444
  <th align="right">
445
  <label class='mo_wpns_switch'>
452
 
453
  </tr>
454
  <tr>
455
+ <th align="left"><h2> Cross Site scripting Protection <strong style="color: #20b2aa">[Basic Level Protection] </strong>::
456
  <br>
457
+ <p><i class="mo_wpns_not_bold">cross site scripting is used for script attacks. This will block illegal scripting on website. <a href="admin.php?page=mo_2fa_upgrade"><strong style="color: #20b2aa">Advance Signatures</strong></a></i></p>
458
  </th>
459
  <th align="right">
460
  <label class='mo_wpns_switch'>
464
  </th>
465
  </h2></tr>
466
  <tr>
467
+ <th align="left"><h2> Local File Inclusion Protection <strong style="color: #20b2aa">[Basic Level Protection] </strong>::
468
  <br>
469
+ <p><i class="mo_wpns_not_bold">Local File inclusion is used for making changes to the local files of the server. This option will block Local File Inclusion. <a href="admin.php?page=mo_2fa_upgrade"><strong style="color: #20b2aa">Advance Signatures</strong></a></i></p>
470
  </th>
471
  <th align="right">
472
  <label class='mo_wpns_switch'>
503
  </h2>
504
  </tr>
505
  <tr>
506
+ <th align="left"><h2> SQL Injection Protection <strong style="color: #20b2aa">[Advance Level Protection]</strong> <strong style="color: red"><a href="admin.php?page=mo_2fa_upgrade"> [Premium Feature] </a></strong>::
507
  <br>
508
  <p><i class="mo_wpns_not_bold">Advance Level Protection includes advance signatures to detect SQL injection. It is the recommended protection for all websites. </i></p>
509
  </th>
516
  </h2>
517
  </tr>
518
  <tr>
519
+ <th align="left"><h2> Cross Site scripting Protection<strong style="color: #20b2aa"> [Advance Level Protection]</strong> <strong style="color: red"><a href="admin.php?page=mo_2fa_upgrade"> [Premium Feature] </a></strong>::
520
  <br>
521
  <p><i class="mo_wpns_not_bold">Advance Level Protection includes advance signatures to detect Cross Site Scripting attacks.</i></p>
522
  </th>
529
  </h2>
530
  </tr>
531
  <tr>
532
+ <th align="left"><h2> Local File Inclusion Protection Protection<strong style="color: #20b2aa"> [Advance Level Protection]</strong> <strong style="color: red"><a href="admin.php?page=mo_2fa_upgrade"> [Premium Feature] </a></strong>::
533
  <br>
534
  <p><i class="mo_wpns_not_bold">Advance Level Protection includes advance signatures to detect LFI attacks on your website. Advance protection covers all files of your server to get protected from any kind of LFI attack.</i></p>
535
  </th>
548
  <div class="mo_wpns_setting_layout" id="mo2f_waf_block_after">
549
  <table style="width: 100%">
550
  <tr>
551
+ <th align="left"><h2>Block After <strong style="color: #20b2aa">[Recommended : 10] </strong>:
552
  <p><i class="mo_wpns_not_bold">Option for blocking the IP if the limit of the attacks has been exceeds.</i></p>
553
  </th>
554
  <th align="right"><input type ="number" name ="limitAttack" id = "limitAttack" required min="5"/></th>
555
  <th><h2 align="left"> attacks</h2></th>
556
+ <th align="right"><input type="button" name="saveLimitAttacks" id="saveLimitAttacks" value="Save" class="mo_wpsn_button mo_wpsn_button1" /></th>
557
  </h2>
558
  </tr>
559
  </table>
563
 
564
 
565
  </div>
566
+
567
 
568
 
569
  <script type="text/javascript">
1186
  document.getElementById("ReportTab").click();
1187
  });
1188
 
1189
+ function waf_function(evt, cityName) {
1190
+ var i, tabcontent, tablinks;
1191
+ tabcontent = document.getElementsByClassName("tabcontent");
1192
+ for (i = 0; i < tabcontent.length; i++) {
1193
+ tabcontent[i].style.display = "none";
1194
+ }
1195
+ tablinks = document.getElementsByClassName("tablinks");
1196
+ for (i = 0; i < tablinks.length; i++) {
1197
+ tablinks[i].className = tablinks[i].className.replace(" active", "");
1198
+ }
1199
+ document.getElementById(cityName).style.display = "block";
1200
+
1201
+ localStorage.setItem("last_tab",cityName);
1202
+ evt.currentTarget.className += " active";
1203
+ if(cityName == "settings")
1204
+ {
1205
+ jQuery("#settingsTab").addClass(" active");
1206
+ }
1207
+ document.getElementById(cityName).style.display = "block";
1208
+
1209
+ }
1210
 
1211
+
1212
+ var tour = '<?php echo get_option("mo2f_tour_firewall");?>';
1213
+
1214
+ if(tour != 1)
1215
+ var tab = localStorage.getItem("last_tab");
1216
+ else
1217
+ var tab = '<?php echo get_option("mo2f_tour_tab");?>';
1218
+
 
 
 
 
 
 
 
 
 
 
 
1219
 
1220
+ if(tab == "waf_dash")
1221
+ {
1222
+ document.getElementById("defaultOpen").click();
1223
+ }
1224
+ else if(tab == "settings")
1225
+ {
1226
+ document.getElementById("settingsTab").click();
1227
  }
1228
 
1229
 
1230
+ else if(tab == "real_time")
1231
+ {
1232
+ document.getElementById("RealTimeTab").click();
1233
+ }
1234
+
1235
+ else if(tab == "rate_limiting")
1236
+ {
1237
+ document.getElementById("RateLimitTab").click();
1238
+ }
1239
+ else if(tab == "waf_report")
1240
+ {
1241
+ document.getElementById("ReportTab").click();
1242
+ }
1243
+ else
1244
+ {
1245
+ document.getElementById("settingsTab").click();
1246
+ }
1247
  </script>