Version Description
- Google Authenticator-Two Factor Authentication (2FA, OTP) : *Digimember Form Support *Memberpress Form Support *SMS Verification Support *OTP Verification on Woocommerce Registration
Download this release
Release Info
Developer | cyberlord92 |
Plugin | Google Authenticator – WordPress Two Factor Authentication (2FA) |
Version | 5.4.17 |
Comparing to | |
See all releases |
Code changes from version 5.4.12 to 5.4.17
- api/Mo2f_OnPremRedirect.php +17 -6
- api/class-customer-common-setup.php +6 -6
- api/class-customer-onprem-setup.php +72 -72
- api/class-rba-attributes.php +177 -177
- api/class-two-factor-setup.php +1 -1
- api/mo2f_api.php +71 -70
- controllers/PointersManager.php +53 -53
- controllers/account.php +5 -4
- controllers/advanced-blocking.php +186 -186
- controllers/backup/backup.php +1 -1
- controllers/backup/backup_ajax.php +156 -156
- controllers/backup/backup_schdule.php +6 -6
- controllers/content-protection.php +93 -93
- controllers/dashboard_ajax.php +210 -210
- controllers/feedback_footer.php +46 -46
- controllers/licensing.php +49 -49
- controllers/login-security.php +4 -4
- controllers/main_controller.php +111 -111
- controllers/malware_scanner/malware_scan_ajax.php +396 -396
- controllers/malware_scanner/scan_malware.php +9 -10
- controllers/malware_scanner/scan_malware_report.php +4 -4
- controllers/malware_scanner/scan_malware_settings.php +2 -4
- controllers/navbar.php +1 -1
- controllers/newtork_security_features.php +1 -1
- controllers/notification-settings.php +2 -2
- controllers/pointers.php +2 -1
- controllers/support.php +50 -50
- controllers/tour-model.php +1 -1
- controllers/tour/tour_ajax.php +145 -145
- controllers/two-fa-intro.php +222 -222
- controllers/twofa/mo2fa_common_login.php +132 -20
- controllers/twofa/mo2fa_inline_registration.php +16 -12
- controllers/twofa/setup_twofa.php +38 -35
- controllers/twofa/two_fa_custom_form.php +9 -2
- controllers/twofa/two_fa_premium_feature.php +2 -2
- controllers/twofa/two_fa_rba.php +2 -2
- controllers/twofa/two_fa_unlimittedUser.php +3 -3
- controllers/twofa/two_fa_unlimittedUser_ajax.php +46 -46
- controllers/twofa/two_factor_ajax.php +121 -28
- controllers/waf.php +48 -48
- controllers/wpns-loginsecurity-ajax.php +38 -0
- database/database_functions.php +819 -813
- database/database_functions_2fa.php +4 -2
- database/mo2f_db_options.php +37 -0
- handler/WAF/database/mo-waf-db-common.php +25 -0
- handler/WAF/database/mo-waf-db.php +1 -1
- handler/WAF/database/mo-waf-plugin-db.php +90 -87
- handler/WAF/mo-waf-plugin.php +2 -1
- handler/WAF/mo-waf.php +1 -1
- handler/ajax.php +136 -136
- handler/backup.php +321 -319
- handler/feedback_form.php +1 -1
- handler/logger.php +36 -36
- handler/login.php +354 -354
- handler/mo-block.html +9 -9
- handler/mo-waf-plugin.php +409 -409
- handler/recaptcha.php +1 -1
- handler/security_features.php +47 -47
- handler/signature/APXSS.php +6 -6
- handler/spam.php +41 -41
- handler/twofa/class_miniorange_2fa_strong_password.php +6 -9
- handler/twofa/setup_twofa.php +58 -17
- handler/twofa/two_fa_constants.php +1 -1
- handler/twofa/two_fa_get_details.php +23 -25
- handler/twofa/two_fa_login.php +11 -5
- handler/twofa/two_fa_pass2login.php +201 -63
- handler/twofa/two_fa_settings.php +83 -67
- handler/twofa/two_fa_short_call.php +43 -0
- handler/twofa/two_fa_short_custom.php +80 -0
- handler/twofa/two_fa_short_gateway.php +67 -0
- handler/twofa/two_fa_utility.php +17 -3
- helper/curl.php +285 -284
- helper/dashboard_security_notification.php +23 -17
- helper/mo_twofa_sessions.php +53 -0
- helper/pluginUtility.php +6 -1
- helper/plugins.php +102 -102
- helper/utility.php +22 -8
- includes/css/bootstrap.min.css +5734 -5734
- includes/css/button_styles.css +110 -110
- includes/css/front_end_login.css +618 -618
- includes/css/hide-login.css +317 -317
- includes/css/phone.css +35 -0
- includes/css/popup.css +82 -82
- includes/css/style_settings.css +131 -52
- includes/jquery-qrcode/jquery-qrcode.min.js +1 -1
- includes/js/bootstrap.min.js +6 -6
- includes/js/custom-ajax-mepr.js +278 -0
- includes/js/custom-ajax-rcp.js +268 -0
- includes/js/custom-form-ajax.js +487 -0
- includes/js/custom-form.js +407 -0
- includes/js/dmajax.js +58 -0
- includes/js/phone.js +8 -8
- includes/js/pointers.js +2 -2
- includes/js/rba/js/jquery-1.9.1.js +41 -181
api/Mo2f_OnPremRedirect.php
CHANGED
@@ -108,7 +108,6 @@ class Mo2f_OnPremRedirect {
|
|
108 |
function OnpremSendOTPEMail($current_user,$tokenName,$timeName,$email=null)
|
109 |
{
|
110 |
global $Mo2fdbQueries;
|
111 |
-
|
112 |
if(!isset($current_user) or is_null($current_user))
|
113 |
{
|
114 |
if(is_user_logged_in()){
|
@@ -117,10 +116,21 @@ class Mo2f_OnPremRedirect {
|
|
117 |
$current_user = unserialize($_SESSION['mo2f_current_user']);
|
118 |
}
|
119 |
}
|
120 |
-
//$email = get_user_meta($current_user->ID,'email',true);
|
121 |
|
122 |
if(is_null($email) or empty($email) or $email == '' or !isset($email) )
|
|
|
123 |
$email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $current_user->ID );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
124 |
$subject = '2-Factor Authentication';
|
125 |
$headers = array('Content-Type: text/html; charset=UTF-8');
|
126 |
$otpToken = '';
|
@@ -131,7 +141,6 @@ class Mo2f_OnPremRedirect {
|
|
131 |
update_user_meta($current_user->ID,$tokenName,$otpToken);
|
132 |
update_user_meta($current_user->ID,$timeName,time());
|
133 |
update_user_meta($current_user->ID,'tempRegEmail',$email);
|
134 |
-
//update_site_option('otpTokenEmailV',$otpTokenH);
|
135 |
$message = '<table cellpadding="25" style="margin:0px auto">
|
136 |
<tbody>
|
137 |
<tr>
|
@@ -218,11 +227,14 @@ class Mo2f_OnPremRedirect {
|
|
218 |
{
|
219 |
$arr = array('status' => 'SUCCESS','message'=>'Successfully validated.');
|
220 |
delete_user_meta( $user_id, $dtoken );
|
221 |
-
if($dtoken == 'mo2f_email_check_code')
|
222 |
{
|
223 |
$tempRegEmail = get_user_meta($user_id,'tempRegEmail',true);
|
224 |
if($tempRegEmail != '' or !is_null($tempRegEmail) or !$tempRegEmail)
|
225 |
-
$Mo2fdbQueries->update_user_details($user_id,array(
|
|
|
|
|
|
|
226 |
}
|
227 |
delete_user_meta( $user_id,'tempRegEmail');
|
228 |
}
|
@@ -231,7 +243,6 @@ class Mo2f_OnPremRedirect {
|
|
231 |
$arr = array('status' => 'FAILED','message'=>'TEST FAILED.');
|
232 |
}
|
233 |
|
234 |
-
//exit;
|
235 |
$content = json_encode($arr);
|
236 |
return $content;
|
237 |
|
108 |
function OnpremSendOTPEMail($current_user,$tokenName,$timeName,$email=null)
|
109 |
{
|
110 |
global $Mo2fdbQueries;
|
|
|
111 |
if(!isset($current_user) or is_null($current_user))
|
112 |
{
|
113 |
if(is_user_logged_in()){
|
116 |
$current_user = unserialize($_SESSION['mo2f_current_user']);
|
117 |
}
|
118 |
}
|
|
|
119 |
|
120 |
if(is_null($email) or empty($email) or $email == '' or !isset($email) )
|
121 |
+
{
|
122 |
$email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $current_user->ID );
|
123 |
+
if($email == '' or empty($email))
|
124 |
+
{
|
125 |
+
$email = get_user_meta($current_user->ID,'tempEmail',true);
|
126 |
+
|
127 |
+
}
|
128 |
+
|
129 |
+
}
|
130 |
+
if(is_null($email) or empty($email) or $email == '' or !isset($email) )
|
131 |
+
$email = $current_user->user_email;
|
132 |
+
|
133 |
+
delete_user_meta($current_user->ID,'tempEmail');
|
134 |
$subject = '2-Factor Authentication';
|
135 |
$headers = array('Content-Type: text/html; charset=UTF-8');
|
136 |
$otpToken = '';
|
141 |
update_user_meta($current_user->ID,$tokenName,$otpToken);
|
142 |
update_user_meta($current_user->ID,$timeName,time());
|
143 |
update_user_meta($current_user->ID,'tempRegEmail',$email);
|
|
|
144 |
$message = '<table cellpadding="25" style="margin:0px auto">
|
145 |
<tbody>
|
146 |
<tr>
|
227 |
{
|
228 |
$arr = array('status' => 'SUCCESS','message'=>'Successfully validated.');
|
229 |
delete_user_meta( $user_id, $dtoken );
|
230 |
+
if($dtoken == 'mo2f_email_check_code' or $dtoken == 'mo2f_otp_email_code')
|
231 |
{
|
232 |
$tempRegEmail = get_user_meta($user_id,'tempRegEmail',true);
|
233 |
if($tempRegEmail != '' or !is_null($tempRegEmail) or !$tempRegEmail)
|
234 |
+
$Mo2fdbQueries->update_user_details($user_id,array(
|
235 |
+
'mo2f_configured_2FA_method' => 'OTP Over Email',
|
236 |
+
'mo_2factor_user_registration_status' =>'MO_2_FACTOR_PLUGIN_SETTINGS',
|
237 |
+
'mo2f_user_email'=> $tempRegEmail));
|
238 |
}
|
239 |
delete_user_meta( $user_id,'tempRegEmail');
|
240 |
}
|
243 |
$arr = array('status' => 'FAILED','message'=>'TEST FAILED.');
|
244 |
}
|
245 |
|
|
|
246 |
$content = json_encode($arr);
|
247 |
return $content;
|
248 |
|
api/class-customer-common-setup.php
CHANGED
@@ -104,8 +104,8 @@ class Customer_Cloud_Setup {
|
|
104 |
|
105 |
global $user;
|
106 |
$user = wp_get_current_user();
|
107 |
-
$is_nc_with_1_user =
|
108 |
-
$is_ec_with_1_user = !
|
109 |
|
110 |
|
111 |
$customer_feature = "";
|
@@ -255,7 +255,7 @@ class Customer_Cloud_Setup {
|
|
255 |
$field_string = json_encode( $fields );
|
256 |
|
257 |
$content = $mo2fApi->make_curl_call( $url, $field_string, $headers );
|
258 |
-
|
259 |
return $content;
|
260 |
}
|
261 |
|
@@ -346,7 +346,7 @@ class Customer_Cloud_Setup {
|
|
346 |
}
|
347 |
$field_string = json_encode( $fields );
|
348 |
|
349 |
-
|
350 |
$content = $mo2fApi->make_curl_call( $url, $field_string, $headers );
|
351 |
|
352 |
return $content;
|
@@ -362,8 +362,8 @@ class Customer_Cloud_Setup {
|
|
362 |
$url = MO_HOST_NAME . "/moas/rest/customer/contact-us";
|
363 |
global $user;
|
364 |
$user = wp_get_current_user();
|
365 |
-
$is_nc_with_1_user =
|
366 |
-
$is_ec_with_1_user = !
|
367 |
|
368 |
$mo2fApi= new Mo2f_Api();
|
369 |
$customer_feature = "";
|
104 |
|
105 |
global $user;
|
106 |
$user = wp_get_current_user();
|
107 |
+
$is_nc_with_1_user = MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option') && MoWpnsUtility::get_mo2f_db_option('mo2f_is_NNC', 'get_option');
|
108 |
+
$is_ec_with_1_user = ! MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option');
|
109 |
|
110 |
|
111 |
$customer_feature = "";
|
255 |
$field_string = json_encode( $fields );
|
256 |
|
257 |
$content = $mo2fApi->make_curl_call( $url, $field_string, $headers );
|
258 |
+
|
259 |
return $content;
|
260 |
}
|
261 |
|
346 |
}
|
347 |
$field_string = json_encode( $fields );
|
348 |
|
349 |
+
|
350 |
$content = $mo2fApi->make_curl_call( $url, $field_string, $headers );
|
351 |
|
352 |
return $content;
|
362 |
$url = MO_HOST_NAME . "/moas/rest/customer/contact-us";
|
363 |
global $user;
|
364 |
$user = wp_get_current_user();
|
365 |
+
$is_nc_with_1_user = MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option') && MoWpnsUtility::get_mo2f_db_option('mo2f_is_NNC', 'get_option');
|
366 |
+
$is_ec_with_1_user = ! MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option');
|
367 |
|
368 |
$mo2fApi= new Mo2f_Api();
|
369 |
$customer_feature = "";
|
api/class-customer-onprem-setup.php
CHANGED
@@ -1,73 +1,73 @@
|
|
1 |
-
<?php
|
2 |
-
/** miniOrange enables user to log in through mobile authentication as an additional layer of security over password.
|
3 |
-
* Copyright (C) 2015 miniOrange
|
4 |
-
*
|
5 |
-
* This program is free software: you can redistribute it and/or modify
|
6 |
-
* it under the terms of the GNU General Public License as published by
|
7 |
-
* the Free Software Foundation, either version 3 of the License, or
|
8 |
-
* (at your option) any later version.
|
9 |
-
*
|
10 |
-
* This program is distributed in the hope that it will be useful,
|
11 |
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12 |
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13 |
-
* GNU General Public License for more details.
|
14 |
-
*
|
15 |
-
* You should have received a copy of the GNU General Public License
|
16 |
-
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
17 |
-
* @package miniOrange OAuth
|
18 |
-
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
|
19 |
-
*/
|
20 |
-
|
21 |
-
/**
|
22 |
-
* This library is miniOrange Authentication Service.
|
23 |
-
* Contains Request Calls to Customer service.
|
24 |
-
**/
|
25 |
-
|
26 |
-
include_once dirname( __FILE__ ) . DIRECTORY_SEPARATOR.'mo2f_api.php';
|
27 |
-
|
28 |
-
class Customer_Setup extends Customer_Cloud_Setup {
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
function send_otp_token( $uKey, $authType, $cKey, $apiKey,$currentuser=null ) {
|
33 |
-
|
34 |
-
$cloud_methods = array('MOBILE AUTHENTICATION','PUSH NOTIFICATIONS','SMS');
|
35 |
-
if(MO2F_IS_ONPREM and !in_array($authType, $cloud_methods)){
|
36 |
-
include_once dirname(__FILE__).DIRECTORY_SEPARATOR.'Mo2f_OnPremRedirect.php';
|
37 |
-
$mo2fOnPremRedirect = new Mo2f_OnPremRedirect();
|
38 |
-
if(is_null($currentuser) or !isset($currentuser))
|
39 |
-
$currentuser = wp_get_current_user();
|
40 |
-
$content = $mo2fOnPremRedirect->OnpremSendRedirect($uKey,$authType,$currentuser);//change parameters as per your requirement but make sure other methods are not affected.
|
41 |
-
|
42 |
-
}else {
|
43 |
-
|
44 |
-
$content= parent::send_otp_token($uKey, $authType, $cKey, $apiKey,$currentuser=null);
|
45 |
-
|
46 |
-
}
|
47 |
-
|
48 |
-
return $content;
|
49 |
-
}
|
50 |
-
|
51 |
-
|
52 |
-
function validate_otp_token( $authType, $username, $transactionId, $otpToken, $cKey, $customerApiKey, $current_user =null) {
|
53 |
-
$content='';
|
54 |
-
if(MO2F_IS_ONPREM and $authType != 'SOFT TOKEN' and $authType !='OTP Over Email' and $authType != 'SMS' and $authType != 'OTP Over SMS'){
|
55 |
-
include_once dirname(__FILE__).DIRECTORY_SEPARATOR.'Mo2f_OnPremRedirect.php';
|
56 |
-
$mo2fOnPremRedirect = new Mo2f_OnPremRedirect();
|
57 |
-
if(!isset($current_user) or is_null($current_user) )
|
58 |
-
$current_user = wp_get_current_user();
|
59 |
-
$content = $mo2fOnPremRedirect->OnpremValidateRedirect($authType, $otpToken,$current_user );
|
60 |
-
//change parameters as per your requirement but make sure other methods are not affected.
|
61 |
-
|
62 |
-
}else{
|
63 |
-
|
64 |
-
$content= parent::validate_otp_token( $authType, $username, $transactionId, $otpToken, $cKey, $customerApiKey, $current_user =null);
|
65 |
-
|
66 |
-
}
|
67 |
-
return $content;
|
68 |
-
}
|
69 |
-
|
70 |
-
|
71 |
-
}
|
72 |
-
|
73 |
?>
|
1 |
+
<?php
|
2 |
+
/** miniOrange enables user to log in through mobile authentication as an additional layer of security over password.
|
3 |
+
* Copyright (C) 2015 miniOrange
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the GNU General Public License as published by
|
7 |
+
* the Free Software Foundation, either version 3 of the License, or
|
8 |
+
* (at your option) any later version.
|
9 |
+
*
|
10 |
+
* This program is distributed in the hope that it will be useful,
|
11 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13 |
+
* GNU General Public License for more details.
|
14 |
+
*
|
15 |
+
* You should have received a copy of the GNU General Public License
|
16 |
+
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
17 |
+
* @package miniOrange OAuth
|
18 |
+
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
|
19 |
+
*/
|
20 |
+
|
21 |
+
/**
|
22 |
+
* This library is miniOrange Authentication Service.
|
23 |
+
* Contains Request Calls to Customer service.
|
24 |
+
**/
|
25 |
+
|
26 |
+
include_once dirname( __FILE__ ) . DIRECTORY_SEPARATOR.'mo2f_api.php';
|
27 |
+
|
28 |
+
class Customer_Setup extends Customer_Cloud_Setup {
|
29 |
+
|
30 |
+
|
31 |
+
|
32 |
+
function send_otp_token( $uKey, $authType, $cKey, $apiKey,$currentuser=null ) {
|
33 |
+
|
34 |
+
$cloud_methods = array('MOBILE AUTHENTICATION','PUSH NOTIFICATIONS','SMS');
|
35 |
+
if(MO2F_IS_ONPREM and !in_array($authType, $cloud_methods)){
|
36 |
+
include_once dirname(__FILE__).DIRECTORY_SEPARATOR.'Mo2f_OnPremRedirect.php';
|
37 |
+
$mo2fOnPremRedirect = new Mo2f_OnPremRedirect();
|
38 |
+
if(is_null($currentuser) or !isset($currentuser))
|
39 |
+
$currentuser = wp_get_current_user();
|
40 |
+
$content = $mo2fOnPremRedirect->OnpremSendRedirect($uKey,$authType,$currentuser);//change parameters as per your requirement but make sure other methods are not affected.
|
41 |
+
|
42 |
+
}else {
|
43 |
+
|
44 |
+
$content= parent::send_otp_token($uKey, $authType, $cKey, $apiKey,$currentuser=null);
|
45 |
+
|
46 |
+
}
|
47 |
+
|
48 |
+
return $content;
|
49 |
+
}
|
50 |
+
|
51 |
+
|
52 |
+
function validate_otp_token( $authType, $username, $transactionId, $otpToken, $cKey, $customerApiKey, $current_user =null) {
|
53 |
+
$content='';
|
54 |
+
if(MO2F_IS_ONPREM and $authType != 'SOFT TOKEN' and $authType !='OTP Over Email' and $authType != 'SMS' and $authType != 'OTP Over SMS'){
|
55 |
+
include_once dirname(__FILE__).DIRECTORY_SEPARATOR.'Mo2f_OnPremRedirect.php';
|
56 |
+
$mo2fOnPremRedirect = new Mo2f_OnPremRedirect();
|
57 |
+
if(!isset($current_user) or is_null($current_user) )
|
58 |
+
$current_user = wp_get_current_user();
|
59 |
+
$content = $mo2fOnPremRedirect->OnpremValidateRedirect($authType, $otpToken,$current_user );
|
60 |
+
//change parameters as per your requirement but make sure other methods are not affected.
|
61 |
+
|
62 |
+
}else{
|
63 |
+
|
64 |
+
$content= parent::validate_otp_token( $authType, $username, $transactionId, $otpToken, $cKey, $customerApiKey, $current_user =null);
|
65 |
+
|
66 |
+
}
|
67 |
+
return $content;
|
68 |
+
}
|
69 |
+
|
70 |
+
|
71 |
+
}
|
72 |
+
|
73 |
?>
|
api/class-rba-attributes.php
CHANGED
@@ -1,178 +1,178 @@
|
|
1 |
-
<?php
|
2 |
-
/** miniOrange enables user to log in through mobile authentication as an additional layer of security over password.
|
3 |
-
* Copyright (C) 2015 miniOrange
|
4 |
-
*
|
5 |
-
* This program is free software: you can redistribute it and/or modify
|
6 |
-
* it under the terms of the GNU General Public License as published by
|
7 |
-
* the Free Software Foundation, either version 3 of the License, or
|
8 |
-
* (at your option) any later version.
|
9 |
-
*
|
10 |
-
* This program is distributed in the hope that it will be useful,
|
11 |
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12 |
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13 |
-
* GNU General Public License for more details.
|
14 |
-
*
|
15 |
-
* You should have received a copy of the GNU General Public License
|
16 |
-
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
17 |
-
* @package miniOrange OAuth
|
18 |
-
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
|
19 |
-
*/
|
20 |
-
|
21 |
-
/**
|
22 |
-
* This library is miniOrange Authentication Service.
|
23 |
-
* Contains Request Calls to Customer service.
|
24 |
-
**/
|
25 |
-
|
26 |
-
include_once dirname( __FILE__ ) . DIRECTORY_SEPARATOR.'mo2f_api.php';
|
27 |
-
|
28 |
-
class Miniorange_Rba_Attributes {
|
29 |
-
|
30 |
-
private $auth_mode = 2; // miniorange test or not
|
31 |
-
private $https_mode = false; // website http or https
|
32 |
-
|
33 |
-
function mo2f_collect_attributes( $useremail, $rba_attributes ) {
|
34 |
-
|
35 |
-
if ( ! MO2f_Utility::is_curl_installed() ) {
|
36 |
-
return $this->get_curl_error_message();
|
37 |
-
}
|
38 |
-
|
39 |
-
$url = MO_HOST_NAME . '/moas/rest/rba/acs';
|
40 |
-
$customerKey = get_option( 'mo2f_customerKey' );
|
41 |
-
$field_string = "{\"customerKey\":\"" . $customerKey . "\",\"userKey\":\"" . $useremail . "\",\"attributes\":" . $rba_attributes . "}";
|
42 |
-
$mo2fApi= new Mo2f_Api();
|
43 |
-
$http_header_array = $mo2fApi->get_http_header_array();
|
44 |
-
|
45 |
-
return $mo2fApi->make_curl_call( $url, $field_string, $http_header_array );
|
46 |
-
}
|
47 |
-
|
48 |
-
function get_curl_error_message() {
|
49 |
-
$message = mo2f_lt( 'Please enable curl extension.' ) .
|
50 |
-
' <a href="admin.php?page=mo_2fa_troubleshooting">' .
|
51 |
-
mo2f_lt( 'Click here' ) .
|
52 |
-
' </a> ' .
|
53 |
-
mo2f_lt( 'for the steps to enable curl.' );
|
54 |
-
|
55 |
-
return json_encode( array( "status" => 'ERROR', "message" => $message ) );
|
56 |
-
}
|
57 |
-
|
58 |
-
function mo2f_evaluate_risk( $useremail, $sessionUuid ) {
|
59 |
-
|
60 |
-
if ( ! MO2f_Utility::is_curl_installed() ) {
|
61 |
-
return $this->get_curl_error_message();
|
62 |
-
}
|
63 |
-
|
64 |
-
$url = MO_HOST_NAME . '/moas/rest/rba/evaluate-risk';
|
65 |
-
$customerKey = get_option( 'mo2f_customerKey' );
|
66 |
-
$field_string = array(
|
67 |
-
'customerKey' => $customerKey,
|
68 |
-
'appSecret' => get_option( 'mo2f_app_secret' ),
|
69 |
-
'userKey' => $useremail,
|
70 |
-
'sessionUuid' => $sessionUuid
|
71 |
-
);
|
72 |
-
$mo2fApi= new Mo2f_Api();
|
73 |
-
|
74 |
-
$http_header_array = $mo2fApi->get_http_header_array();
|
75 |
-
|
76 |
-
return $mo2fApi->make_curl_call( $url, $field_string, $http_header_array );
|
77 |
-
}
|
78 |
-
|
79 |
-
function mo2f_register_rba_profile( $useremail, $sessionUuid ) {
|
80 |
-
|
81 |
-
if ( ! MO2f_Utility::is_curl_installed() ) {
|
82 |
-
return $this->get_curl_error_message();
|
83 |
-
}
|
84 |
-
|
85 |
-
$url = MO_HOST_NAME . '/moas/rest/rba/register-profile';
|
86 |
-
$customerKey = get_option( 'mo2f_customerKey' );
|
87 |
-
$field_string = array(
|
88 |
-
'customerKey' => $customerKey,
|
89 |
-
'userKey' => $useremail,
|
90 |
-
'sessionUuid' => $sessionUuid
|
91 |
-
);
|
92 |
-
$mo2fApi= new Mo2f_Api();
|
93 |
-
$http_header_array = $mo2fApi->get_http_header_array();
|
94 |
-
|
95 |
-
return $mo2fApi->make_curl_call( $url, $field_string, $http_header_array );
|
96 |
-
}
|
97 |
-
|
98 |
-
function mo2f_get_app_secret() {
|
99 |
-
|
100 |
-
if ( ! MO2f_Utility::is_curl_installed() ) {
|
101 |
-
return $this->get_curl_error_message();
|
102 |
-
}
|
103 |
-
|
104 |
-
$mo2fApi= new Mo2f_Api();
|
105 |
-
|
106 |
-
$url = MO_HOST_NAME . '/moas/rest/customer/getapp-secret';
|
107 |
-
$customerKey = get_option( 'mo2f_customerKey' );
|
108 |
-
$field_string = array(
|
109 |
-
'customerId' => $customerKey
|
110 |
-
);
|
111 |
-
|
112 |
-
$http_header_array = $mo2fApi->get_http_header_array();
|
113 |
-
|
114 |
-
return $mo2fApi->make_curl_call( $url, $field_string, $http_header_array );
|
115 |
-
}
|
116 |
-
|
117 |
-
function mo2f_google_auth_service( $useremail, $googleAuthenticatorName="" ) {
|
118 |
-
|
119 |
-
if ( ! MO2f_Utility::is_curl_installed() ) {
|
120 |
-
return $this->get_curl_error_message();
|
121 |
-
}
|
122 |
-
$mo2fApi= new Mo2f_Api();
|
123 |
-
$url = MO_HOST_NAME . '/moas/api/auth/google-auth-secret';
|
124 |
-
$customerKey = get_option( 'mo2f_customerKey' );
|
125 |
-
$field_string = array(
|
126 |
-
'customerKey' => $customerKey,
|
127 |
-
'username' => $useremail,
|
128 |
-
'googleAuthenticatorName' => $googleAuthenticatorName
|
129 |
-
);
|
130 |
-
|
131 |
-
$http_header_array = $mo2fApi->get_http_header_array();
|
132 |
-
|
133 |
-
return $mo2fApi->make_curl_call( $url, $field_string, $http_header_array );
|
134 |
-
}
|
135 |
-
|
136 |
-
function mo2f_validate_google_auth( $useremail, $otptoken, $secret ) {
|
137 |
-
if(MO2F_IS_ONPREM){
|
138 |
-
include_once dirname(dirname( __FILE__ )) . DIRECTORY_SEPARATOR. 'handler'.DIRECTORY_SEPARATOR. 'twofa' . DIRECTORY_SEPARATOR . 'gaonprem.php';
|
139 |
-
$gauth_obj= new Google_auth_onpremise();
|
140 |
-
$secret = isset($_SESSION['secret_ga'])? $_SESSION['secret_ga'] : $secret;
|
141 |
-
$content=$gauth_obj->verifyCode($secret , $otptoken );
|
142 |
-
$value = json_decode($content,true);
|
143 |
-
if($value['status'] == 'SUCCESS'){
|
144 |
-
$user = wp_get_current_user();
|
145 |
-
$user_id = $user->ID;
|
146 |
-
$gauth_obj->mo_GAuth_set_secret($user_id, $secret);
|
147 |
-
update_user_meta($user_id,'mo2f_2FA_method_to_configure','Google Authenticator');
|
148 |
-
update_user_meta( $user_id, 'mo2f_external_app_type', "Google Authenticator" );
|
149 |
-
global $Mo2fdbQueries;//might not need this
|
150 |
-
$Mo2fdbQueries->update_user_details( $user_id, array('mo2f_configured_2FA_method' =>'Google Authenticator') );
|
151 |
-
}
|
152 |
-
}else{
|
153 |
-
if ( ! MO2f_Utility::is_curl_installed() ) {
|
154 |
-
return $this->get_curl_error_message();
|
155 |
-
}
|
156 |
-
|
157 |
-
|
158 |
-
$url = MO_HOST_NAME . '/moas/api/auth/validate-google-auth-secret';
|
159 |
-
$mo2fApi= new Mo2f_Api();
|
160 |
-
|
161 |
-
$customerKey = get_option( 'mo2f_customerKey' );
|
162 |
-
$field_string = array(
|
163 |
-
'customerKey' => $customerKey,
|
164 |
-
'username' => $useremail,
|
165 |
-
'secret' => $secret,
|
166 |
-
'otpToken' => $otptoken
|
167 |
-
);
|
168 |
-
|
169 |
-
$http_header_array = $mo2fApi->get_http_header_array();
|
170 |
-
$content = $mo2fApi->make_curl_call( $url, $field_string, $http_header_array );
|
171 |
-
}
|
172 |
-
|
173 |
-
return $content;
|
174 |
-
}
|
175 |
-
|
176 |
-
}
|
177 |
-
|
178 |
?>
|
1 |
+
<?php
|
2 |
+
/** miniOrange enables user to log in through mobile authentication as an additional layer of security over password.
|
3 |
+
* Copyright (C) 2015 miniOrange
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the GNU General Public License as published by
|
7 |
+
* the Free Software Foundation, either version 3 of the License, or
|
8 |
+
* (at your option) any later version.
|
9 |
+
*
|
10 |
+
* This program is distributed in the hope that it will be useful,
|
11 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13 |
+
* GNU General Public License for more details.
|
14 |
+
*
|
15 |
+
* You should have received a copy of the GNU General Public License
|
16 |
+
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
17 |
+
* @package miniOrange OAuth
|
18 |
+
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
|
19 |
+
*/
|
20 |
+
|
21 |
+
/**
|
22 |
+
* This library is miniOrange Authentication Service.
|
23 |
+
* Contains Request Calls to Customer service.
|
24 |
+
**/
|
25 |
+
|
26 |
+
include_once dirname( __FILE__ ) . DIRECTORY_SEPARATOR.'mo2f_api.php';
|
27 |
+
|
28 |
+
class Miniorange_Rba_Attributes {
|
29 |
+
|
30 |
+
private $auth_mode = 2; // miniorange test or not
|
31 |
+
private $https_mode = false; // website http or https
|
32 |
+
|
33 |
+
function mo2f_collect_attributes( $useremail, $rba_attributes ) {
|
34 |
+
|
35 |
+
if ( ! MO2f_Utility::is_curl_installed() ) {
|
36 |
+
return $this->get_curl_error_message();
|
37 |
+
}
|
38 |
+
|
39 |
+
$url = MO_HOST_NAME . '/moas/rest/rba/acs';
|
40 |
+
$customerKey = get_option( 'mo2f_customerKey' );
|
41 |
+
$field_string = "{\"customerKey\":\"" . $customerKey . "\",\"userKey\":\"" . $useremail . "\",\"attributes\":" . $rba_attributes . "}";
|
42 |
+
$mo2fApi= new Mo2f_Api();
|
43 |
+
$http_header_array = $mo2fApi->get_http_header_array();
|
44 |
+
|
45 |
+
return $mo2fApi->make_curl_call( $url, $field_string, $http_header_array );
|
46 |
+
}
|
47 |
+
|
48 |
+
function get_curl_error_message() {
|
49 |
+
$message = mo2f_lt( 'Please enable curl extension.' ) .
|
50 |
+
' <a href="admin.php?page=mo_2fa_troubleshooting">' .
|
51 |
+
mo2f_lt( 'Click here' ) .
|
52 |
+
' </a> ' .
|
53 |
+
mo2f_lt( 'for the steps to enable curl.' );
|
54 |
+
|
55 |
+
return json_encode( array( "status" => 'ERROR', "message" => $message ) );
|
56 |
+
}
|
57 |
+
|
58 |
+
function mo2f_evaluate_risk( $useremail, $sessionUuid ) {
|
59 |
+
|
60 |
+
if ( ! MO2f_Utility::is_curl_installed() ) {
|
61 |
+
return $this->get_curl_error_message();
|
62 |
+
}
|
63 |
+
|
64 |
+
$url = MO_HOST_NAME . '/moas/rest/rba/evaluate-risk';
|
65 |
+
$customerKey = get_option( 'mo2f_customerKey' );
|
66 |
+
$field_string = array(
|
67 |
+
'customerKey' => $customerKey,
|
68 |
+
'appSecret' => get_option( 'mo2f_app_secret' ),
|
69 |
+
'userKey' => $useremail,
|
70 |
+
'sessionUuid' => $sessionUuid
|
71 |
+
);
|
72 |
+
$mo2fApi= new Mo2f_Api();
|
73 |
+
|
74 |
+
$http_header_array = $mo2fApi->get_http_header_array();
|
75 |
+
|
76 |
+
return $mo2fApi->make_curl_call( $url, $field_string, $http_header_array );
|
77 |
+
}
|
78 |
+
|
79 |
+
function mo2f_register_rba_profile( $useremail, $sessionUuid ) {
|
80 |
+
|
81 |
+
if ( ! MO2f_Utility::is_curl_installed() ) {
|
82 |
+
return $this->get_curl_error_message();
|
83 |
+
}
|
84 |
+
|
85 |
+
$url = MO_HOST_NAME . '/moas/rest/rba/register-profile';
|
86 |
+
$customerKey = get_option( 'mo2f_customerKey' );
|
87 |
+
$field_string = array(
|
88 |
+
'customerKey' => $customerKey,
|
89 |
+
'userKey' => $useremail,
|
90 |
+
'sessionUuid' => $sessionUuid
|
91 |
+
);
|
92 |
+
$mo2fApi= new Mo2f_Api();
|
93 |
+
$http_header_array = $mo2fApi->get_http_header_array();
|
94 |
+
|
95 |
+
return $mo2fApi->make_curl_call( $url, $field_string, $http_header_array );
|
96 |
+
}
|
97 |
+
|
98 |
+
function mo2f_get_app_secret() {
|
99 |
+
|
100 |
+
if ( ! MO2f_Utility::is_curl_installed() ) {
|
101 |
+
return $this->get_curl_error_message();
|
102 |
+
}
|
103 |
+
|
104 |
+
$mo2fApi= new Mo2f_Api();
|
105 |
+
|
106 |
+
$url = MO_HOST_NAME . '/moas/rest/customer/getapp-secret';
|
107 |
+
$customerKey = get_option( 'mo2f_customerKey' );
|
108 |
+
$field_string = array(
|
109 |
+
'customerId' => $customerKey
|
110 |
+
);
|
111 |
+
|
112 |
+
$http_header_array = $mo2fApi->get_http_header_array();
|
113 |
+
|
114 |
+
return $mo2fApi->make_curl_call( $url, $field_string, $http_header_array );
|
115 |
+
}
|
116 |
+
|
117 |
+
function mo2f_google_auth_service( $useremail, $googleAuthenticatorName="" ) {
|
118 |
+
|
119 |
+
if ( ! MO2f_Utility::is_curl_installed() ) {
|
120 |
+
return $this->get_curl_error_message();
|
121 |
+
}
|
122 |
+
$mo2fApi= new Mo2f_Api();
|
123 |
+
$url = MO_HOST_NAME . '/moas/api/auth/google-auth-secret';
|
124 |
+
$customerKey = get_option( 'mo2f_customerKey' );
|
125 |
+
$field_string = array(
|
126 |
+
'customerKey' => $customerKey,
|
127 |
+
'username' => $useremail,
|
128 |
+
'googleAuthenticatorName' => $googleAuthenticatorName
|
129 |
+
);
|
130 |
+
|
131 |
+
$http_header_array = $mo2fApi->get_http_header_array();
|
132 |
+
|
133 |
+
return $mo2fApi->make_curl_call( $url, $field_string, $http_header_array );
|
134 |
+
}
|
135 |
+
|
136 |
+
function mo2f_validate_google_auth( $useremail, $otptoken, $secret ) {
|
137 |
+
if(MO2F_IS_ONPREM){
|
138 |
+
include_once dirname(dirname( __FILE__ )) . DIRECTORY_SEPARATOR. 'handler'.DIRECTORY_SEPARATOR. 'twofa' . DIRECTORY_SEPARATOR . 'gaonprem.php';
|
139 |
+
$gauth_obj= new Google_auth_onpremise();
|
140 |
+
$secret = isset($_SESSION['secret_ga'])? $_SESSION['secret_ga'] : $secret;
|
141 |
+
$content=$gauth_obj->verifyCode($secret , $otptoken );
|
142 |
+
$value = json_decode($content,true);
|
143 |
+
if($value['status'] == 'SUCCESS'){
|
144 |
+
$user = wp_get_current_user();
|
145 |
+
$user_id = $user->ID;
|
146 |
+
$gauth_obj->mo_GAuth_set_secret($user_id, $secret);
|
147 |
+
update_user_meta($user_id,'mo2f_2FA_method_to_configure','Google Authenticator');
|
148 |
+
update_user_meta( $user_id, 'mo2f_external_app_type', "Google Authenticator" );
|
149 |
+
global $Mo2fdbQueries;//might not need this
|
150 |
+
$Mo2fdbQueries->update_user_details( $user_id, array('mo2f_configured_2FA_method' =>'Google Authenticator') );
|
151 |
+
}
|
152 |
+
}else{
|
153 |
+
if ( ! MO2f_Utility::is_curl_installed() ) {
|
154 |
+
return $this->get_curl_error_message();
|
155 |
+
}
|
156 |
+
|
157 |
+
|
158 |
+
$url = MO_HOST_NAME . '/moas/api/auth/validate-google-auth-secret';
|
159 |
+
$mo2fApi= new Mo2f_Api();
|
160 |
+
|
161 |
+
$customerKey = get_option( 'mo2f_customerKey' );
|
162 |
+
$field_string = array(
|
163 |
+
'customerKey' => $customerKey,
|
164 |
+
'username' => $useremail,
|
165 |
+
'secret' => $secret,
|
166 |
+
'otpToken' => $otptoken
|
167 |
+
);
|
168 |
+
|
169 |
+
$http_header_array = $mo2fApi->get_http_header_array();
|
170 |
+
$content = $mo2fApi->make_curl_call( $url, $field_string, $http_header_array );
|
171 |
+
}
|
172 |
+
|
173 |
+
return $content;
|
174 |
+
}
|
175 |
+
|
176 |
+
}
|
177 |
+
|
178 |
?>
|
api/class-two-factor-setup.php
CHANGED
@@ -159,7 +159,7 @@ class Two_Factor_Setup {
|
|
159 |
|
160 |
$http_header_array = $mo2fApi->get_http_header_array();
|
161 |
|
162 |
-
$response= $mo2fApi->make_curl_call( $url, $fields, $http_header_array );
|
163 |
}
|
164 |
return $response;
|
165 |
}
|
159 |
|
160 |
$http_header_array = $mo2fApi->get_http_header_array();
|
161 |
|
162 |
+
$response = $mo2fApi->make_curl_call( $url, $fields, $http_header_array );
|
163 |
}
|
164 |
return $response;
|
165 |
}
|
api/mo2f_api.php
CHANGED
@@ -1,71 +1,72 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Mo2f_Api
|
4 |
-
{
|
5 |
-
|
6 |
-
public function mo2f_wp_remote_post($url, $args = array()){
|
7 |
-
$response = wp_remote_post($url, $args);
|
8 |
-
if(!is_wp_error($response)){
|
9 |
-
return $response['body'];
|
10 |
-
} else {
|
11 |
-
$message = 'Please enable curl extension. <a href="admin.php?page=mo_2fa_troubleshooting">Click here</a> for the steps to enable curl.';
|
12 |
-
|
13 |
-
return json_encode( array( "status" => 'ERROR', "message" => $message ) );
|
14 |
-
}
|
15 |
-
}
|
16 |
-
|
17 |
-
function get_timestamp() {
|
18 |
-
|
19 |
-
$currentTimeInMillis = round( microtime( true ) * 1000 );
|
20 |
-
$currentTimeInMillis = number_format( $currentTimeInMillis, 0, '', '' );
|
21 |
-
|
22 |
-
return $currentTimeInMillis ;
|
23 |
-
}
|
24 |
-
|
25 |
-
function make_curl_call( $url, $fields, $http_header_array =array("Content-Type"=>"application/json","charset"=>"UTF-8","Authorization"=>"Basic")) {
|
26 |
-
|
27 |
-
if ( gettype( $fields ) !== 'string' ) {
|
28 |
-
$fields = json_encode( $fields );
|
29 |
-
}
|
30 |
-
|
31 |
-
$args = array(
|
32 |
-
'method' => 'POST',
|
33 |
-
'body' => $fields,
|
34 |
-
'timeout' => '5',
|
35 |
-
'redirection' => '5',
|
36 |
-
'
|
37 |
-
'
|
38 |
-
'
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
//
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
$
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
$
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
"
|
64 |
-
"
|
65 |
-
"
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
|
|
71 |
}
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Mo2f_Api
|
4 |
+
{
|
5 |
+
|
6 |
+
public function mo2f_wp_remote_post($url, $args = array()){
|
7 |
+
$response = wp_remote_post($url, $args);
|
8 |
+
if(!is_wp_error($response)){
|
9 |
+
return $response['body'];
|
10 |
+
} else {
|
11 |
+
$message = 'Please enable curl extension. <a href="admin.php?page=mo_2fa_troubleshooting">Click here</a> for the steps to enable curl.';
|
12 |
+
|
13 |
+
return json_encode( array( "status" => 'ERROR', "message" => $message ) );
|
14 |
+
}
|
15 |
+
}
|
16 |
+
|
17 |
+
function get_timestamp() {
|
18 |
+
|
19 |
+
$currentTimeInMillis = round( microtime( true ) * 1000 );
|
20 |
+
$currentTimeInMillis = number_format( $currentTimeInMillis, 0, '', '' );
|
21 |
+
|
22 |
+
return $currentTimeInMillis ;
|
23 |
+
}
|
24 |
+
|
25 |
+
function make_curl_call( $url, $fields, $http_header_array =array("Content-Type"=>"application/json","charset"=>"UTF-8","Authorization"=>"Basic")) {
|
26 |
+
|
27 |
+
if ( gettype( $fields ) !== 'string' ) {
|
28 |
+
$fields = json_encode( $fields );
|
29 |
+
}
|
30 |
+
|
31 |
+
$args = array(
|
32 |
+
'method' => 'POST',
|
33 |
+
'body' => $fields,
|
34 |
+
'timeout' => '5',
|
35 |
+
'redirection' => '5',
|
36 |
+
'sslverify' =>true,
|
37 |
+
'httpversion' => '1.0',
|
38 |
+
'blocking' => true,
|
39 |
+
'headers' => $http_header_array
|
40 |
+
);
|
41 |
+
|
42 |
+
// 'sslverify' => true,//MO_TEST_MODE ? false: true
|
43 |
+
//wp_remote_retrieve_body
|
44 |
+
|
45 |
+
$response = Mo2f_Api::mo2f_wp_remote_post($url, $args);
|
46 |
+
return $response;
|
47 |
+
|
48 |
+
}
|
49 |
+
|
50 |
+
function get_http_header_array() {
|
51 |
+
|
52 |
+
$customerKey = get_option( 'mo2f_customerKey' );
|
53 |
+
$apiKey = get_option( 'mo2f_api_key' );
|
54 |
+
|
55 |
+
/* Current time in milliseconds since midnight, January 1, 1970 UTC. */
|
56 |
+
$currentTimeInMillis = Mo2f_Api::get_timestamp();
|
57 |
+
|
58 |
+
/* Creating the Hash using SHA-512 algorithm */
|
59 |
+
$stringToHash = $customerKey . $currentTimeInMillis . $apiKey;;
|
60 |
+
$hashValue = hash( "sha512", $stringToHash );
|
61 |
+
|
62 |
+
$headers = array(
|
63 |
+
"Content-Type" => "application/json",
|
64 |
+
"Customer-Key" => $customerKey,
|
65 |
+
"Timestamp" => $currentTimeInMillis,
|
66 |
+
"Authorization" => $hashValue
|
67 |
+
);
|
68 |
+
|
69 |
+
return $headers;
|
70 |
+
}
|
71 |
+
|
72 |
}
|
controllers/PointersManager.php
CHANGED
@@ -1,54 +1,54 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Mo2FAPointersManager {
|
4 |
-
|
5 |
-
private $pfile;
|
6 |
-
private $version;
|
7 |
-
private $prefix;
|
8 |
-
private $pointers = array();
|
9 |
-
|
10 |
-
public function __construct( $file, $version, $prefix ) {
|
11 |
-
$this->pfile = file_exists( $file ) ? $file : FALSE;
|
12 |
-
$this->version = str_replace( '.', '_', $version );
|
13 |
-
$this->prefix = $prefix;
|
14 |
-
}
|
15 |
-
|
16 |
-
public function parse() {
|
17 |
-
if ( empty( $this->pfile ) ) return;
|
18 |
-
$pointers = (array) require_once $this->pfile;
|
19 |
-
if ( empty($pointers) ) return;
|
20 |
-
foreach ( $pointers as $i => $pointer ) {
|
21 |
-
if(is_array($pointer)){
|
22 |
-
$pointer['id'] = "{$this->prefix}{$this->version}_{$i}";
|
23 |
-
$this->pointers[$pointer['id']] = (object) $pointer;
|
24 |
-
}
|
25 |
-
}
|
26 |
-
}
|
27 |
-
|
28 |
-
public function filter( $page ) {
|
29 |
-
if ( empty( $this->pointers ) ) return array();
|
30 |
-
$uid = get_current_user_id();
|
31 |
-
$visited = explode( ',', (string) get_user_meta( $uid, 'mo2f_visited_pointers', TRUE ) );
|
32 |
-
|
33 |
-
$active_ids = array_diff( array_keys( $this->pointers ), $visited );
|
34 |
-
|
35 |
-
|
36 |
-
$good = array();
|
37 |
-
|
38 |
-
foreach( $this->pointers as $i => $pointer ) {
|
39 |
-
if (
|
40 |
-
in_array( $i, $active_ids, TRUE ) // is active
|
41 |
-
&& isset( $pointer->where ) // has where
|
42 |
-
&& in_array( $page, (array) $pointer->where, TRUE ) // current page is in where
|
43 |
-
) {
|
44 |
-
$good[] = $pointer;
|
45 |
-
}
|
46 |
-
}
|
47 |
-
$count = count( $good );
|
48 |
-
if ( $good === 0 ) return array();
|
49 |
-
foreach( array_values( $good ) as $i => $pointer ) {
|
50 |
-
$good[$i]->next = $i+1 < $count ? $good[$i+1]->id : '';
|
51 |
-
}
|
52 |
-
return $good;
|
53 |
-
}
|
54 |
}
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Mo2FAPointersManager {
|
4 |
+
|
5 |
+
private $pfile;
|
6 |
+
private $version;
|
7 |
+
private $prefix;
|
8 |
+
private $pointers = array();
|
9 |
+
|
10 |
+
public function __construct( $file, $version, $prefix ) {
|
11 |
+
$this->pfile = file_exists( $file ) ? $file : FALSE;
|
12 |
+
$this->version = str_replace( '.', '_', $version );
|
13 |
+
$this->prefix = $prefix;
|
14 |
+
}
|
15 |
+
|
16 |
+
public function parse() {
|
17 |
+
if ( empty( $this->pfile ) ) return;
|
18 |
+
$pointers = (array) require_once $this->pfile;
|
19 |
+
if ( empty($pointers) ) return;
|
20 |
+
foreach ( $pointers as $i => $pointer ) {
|
21 |
+
if(is_array($pointer)){
|
22 |
+
$pointer['id'] = "{$this->prefix}{$this->version}_{$i}";
|
23 |
+
$this->pointers[$pointer['id']] = (object) $pointer;
|
24 |
+
}
|
25 |
+
}
|
26 |
+
}
|
27 |
+
|
28 |
+
public function filter( $page ) {
|
29 |
+
if ( empty( $this->pointers ) ) return array();
|
30 |
+
$uid = get_current_user_id();
|
31 |
+
$visited = explode( ',', (string) get_user_meta( $uid, 'mo2f_visited_pointers', TRUE ) );
|
32 |
+
|
33 |
+
$active_ids = array_diff( array_keys( $this->pointers ), $visited );
|
34 |
+
|
35 |
+
|
36 |
+
$good = array();
|
37 |
+
|
38 |
+
foreach( $this->pointers as $i => $pointer ) {
|
39 |
+
if (
|
40 |
+
in_array( $i, $active_ids, TRUE ) // is active
|
41 |
+
&& isset( $pointer->where ) // has where
|
42 |
+
&& in_array( $page, (array) $pointer->where, TRUE ) // current page is in where
|
43 |
+
) {
|
44 |
+
$good[] = $pointer;
|
45 |
+
}
|
46 |
+
}
|
47 |
+
$count = count( $good );
|
48 |
+
if ( $good === 0 ) return array();
|
49 |
+
foreach( array_values( $good ) as $i => $pointer ) {
|
50 |
+
$good[$i]->next = $i+1 < $count ? $good[$i+1]->id : '';
|
51 |
+
}
|
52 |
+
return $good;
|
53 |
+
}
|
54 |
}
|
controllers/account.php
CHANGED
@@ -48,7 +48,8 @@
|
|
48 |
$key = get_option('mo2f_customerKey');
|
49 |
$api = get_option('mo2f_api_key');
|
50 |
$token = get_option('mo2f_customer_token');
|
51 |
-
$EmailTransactions
|
|
|
52 |
$SMSTransactions = get_site_option('cmVtYWluaW5nT1RQVHJhbnNhY3Rpb25z')?get_site_option('cmVtYWluaW5nT1RQVHJhbnNhY3Rpb25z'):0;
|
53 |
include $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'account'.DIRECTORY_SEPARATOR.'profile.php';
|
54 |
}
|
@@ -231,7 +232,7 @@
|
|
231 |
$configured_2FA_method = 'NONE';
|
232 |
}else if ( $mo2f_second_factor != 'NONE' ) {
|
233 |
$configured_2FA_method = MO2f_Utility::mo2f_decode_2_factor( $mo2f_second_factor, "servertowpdb" );
|
234 |
-
if (
|
235 |
$auth_method_abr = str_replace( ' ', '', $configured_2FA_method );
|
236 |
} else {
|
237 |
if ( in_array( $configured_2FA_method, array(
|
@@ -245,7 +246,7 @@
|
|
245 |
}
|
246 |
|
247 |
$mo2f_message = Mo2fConstants:: langTranslate( "ACCOUNT_RETRIEVED_SUCCESSFULLY" );
|
248 |
-
if ( $configured_2FA_method != 'NONE' &&
|
249 |
$mo2f_message .= ' <b>' . $configured_2FA_method . '</b> ' . Mo2fConstants:: langTranslate( "DEFAULT_2ND_FACTOR" ) . '. ';
|
250 |
}
|
251 |
$mo2f_message .= '<a href=\"admin.php?page=mo_2fa_two_fa\" >' . Mo2fConstants:: langTranslate( "CLICK_HERE" ) . '</a> ' . Mo2fConstants:: langTranslate( "CONFIGURE_2FA" );
|
@@ -256,7 +257,7 @@
|
|
256 |
if ( ! empty( $mo2f_customer_selected_plan ) ) {
|
257 |
delete_option( 'mo2f_customer_selected_plan' );
|
258 |
|
259 |
-
if (
|
260 |
{
|
261 |
?><script>window.location.href="admin.php?page=mo_2fa_addons";</script><?php
|
262 |
}
|
48 |
$key = get_option('mo2f_customerKey');
|
49 |
$api = get_option('mo2f_api_key');
|
50 |
$token = get_option('mo2f_customer_token');
|
51 |
+
$EmailTransactions = MoWpnsUtility::get_mo2f_db_option('cmVtYWluaW5nT1RQ', 'site_option');
|
52 |
+
$EmailTransactions = $EmailTransactions? $EmailTransactions : 0;
|
53 |
$SMSTransactions = get_site_option('cmVtYWluaW5nT1RQVHJhbnNhY3Rpb25z')?get_site_option('cmVtYWluaW5nT1RQVHJhbnNhY3Rpb25z'):0;
|
54 |
include $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'account'.DIRECTORY_SEPARATOR.'profile.php';
|
55 |
}
|
232 |
$configured_2FA_method = 'NONE';
|
233 |
}else if ( $mo2f_second_factor != 'NONE' ) {
|
234 |
$configured_2FA_method = MO2f_Utility::mo2f_decode_2_factor( $mo2f_second_factor, "servertowpdb" );
|
235 |
+
if ( MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option') == 0 ) {
|
236 |
$auth_method_abr = str_replace( ' ', '', $configured_2FA_method );
|
237 |
} else {
|
238 |
if ( in_array( $configured_2FA_method, array(
|
246 |
}
|
247 |
|
248 |
$mo2f_message = Mo2fConstants:: langTranslate( "ACCOUNT_RETRIEVED_SUCCESSFULLY" );
|
249 |
+
if ( $configured_2FA_method != 'NONE' && MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option') == 0 ) {
|
250 |
$mo2f_message .= ' <b>' . $configured_2FA_method . '</b> ' . Mo2fConstants:: langTranslate( "DEFAULT_2ND_FACTOR" ) . '. ';
|
251 |
}
|
252 |
$mo2f_message .= '<a href=\"admin.php?page=mo_2fa_two_fa\" >' . Mo2fConstants:: langTranslate( "CLICK_HERE" ) . '</a> ' . Mo2fConstants:: langTranslate( "CONFIGURE_2FA" );
|
257 |
if ( ! empty( $mo2f_customer_selected_plan ) ) {
|
258 |
delete_option( 'mo2f_customer_selected_plan' );
|
259 |
|
260 |
+
if (MoWpnsUtility::get_mo2f_db_option('mo2f_planname', 'get_option') == 'addon_plan')
|
261 |
{
|
262 |
?><script>window.location.href="admin.php?page=mo_2fa_addons";</script><?php
|
263 |
}
|
controllers/advanced-blocking.php
CHANGED
@@ -1,186 +1,186 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
global $moWpnsUtility,$mo2f_dirName;
|
4 |
-
|
5 |
-
if(current_user_can( 'manage_options' ) && isset($_POST['option']) )
|
6 |
-
{
|
7 |
-
switch($_POST['option'])
|
8 |
-
{
|
9 |
-
case "mo_wpns_block_ip_range":
|
10 |
-
wpns_handle_range_blocking($_POST); break;
|
11 |
-
case "mo_wpns_browser_blocking":
|
12 |
-
wpns_handle_browser_blocking($_POST); break;
|
13 |
-
case "mo_wpns_enable_htaccess_blocking":
|
14 |
-
wpns_handle_htaccess_blocking($_POST); break;
|
15 |
-
case "mo_wpns_enable_user_agent_blocking":
|
16 |
-
wpns_handle_user_agent_blocking($_POST); break;
|
17 |
-
case "mo_wpns_block_countries":
|
18 |
-
wpns_handle_country_block($_POST); break;
|
19 |
-
case "mo_wpns_block_referrer":
|
20 |
-
wpns_handle_block_referrer($_POST); break;
|
21 |
-
|
22 |
-
}
|
23 |
-
}
|
24 |
-
|
25 |
-
$range_count = is_numeric(get_option('mo_wpns_iprange_count'))
|
26 |
-
&& intval(get_option('mo_wpns_iprange_count')) !=0 ? intval(get_option('mo_wpns_iprange_count')) : 1;
|
27 |
-
$htaccess_block = get_option('mo_wpns_enable_htaccess_blocking') ? "checked" : "";
|
28 |
-
$user_agent = get_option('mo_wpns_enable_user_agent_blocking') ? "checked" : "";
|
29 |
-
$block_chrome = get_option('mo_wpns_block_chrome') ? "checked" : "";
|
30 |
-
$block_ie = get_option('mo_wpns_block_ie') ? "checked" : "";
|
31 |
-
$block_firefox = get_option('mo_wpns_block_firefox') ? "checked" : "";
|
32 |
-
$block_safari = get_option('mo_wpns_block_safari') ? "checked" : "";
|
33 |
-
$block_opera = get_option('mo_wpns_block_opera') ? "checked" : "";
|
34 |
-
$block_edge = get_option('mo_wpns_block_edge') ? "checked" : "";
|
35 |
-
$country = MoWpnsConstants::$country;
|
36 |
-
$codes = get_option( "mo_wpns_countrycodes");
|
37 |
-
$referrers = get_option( 'mo_wpns_referrers');
|
38 |
-
$referrers = explode(";",$referrers);
|
39 |
-
$current_browser= $moWpnsUtility->getCurrentBrowser();
|
40 |
-
$start = array();
|
41 |
-
$end = array();
|
42 |
-
for($i = 1 ; $i <= $range_count ; $i++){
|
43 |
-
$ip_range = get_option("mo_wpns_iprange_range_".$i);
|
44 |
-
if($ip_range){
|
45 |
-
$a = explode('-', $ip_range);
|
46 |
-
|
47 |
-
$start[$i] = $a[0];
|
48 |
-
$end[$i] = $a[1];
|
49 |
-
}
|
50 |
-
|
51 |
-
}
|
52 |
-
if(!isset($start[1])){
|
53 |
-
$start[1] = '';
|
54 |
-
}
|
55 |
-
if(!isset($end[1])){
|
56 |
-
$end[1] = '';
|
57 |
-
}
|
58 |
-
|
59 |
-
switch($current_browser)
|
60 |
-
{
|
61 |
-
case "chrome":
|
62 |
-
$block_chrome = 'disabled'; break;
|
63 |
-
case "ie":
|
64 |
-
$block_ie = 'disabled'; break;
|
65 |
-
case "firefox":
|
66 |
-
$block_firefox= 'disabled'; break;
|
67 |
-
case "safari":
|
68 |
-
$block_safari = 'disabled'; break;
|
69 |
-
case "edge":
|
70 |
-
$block_edge = 'disabled'; break;
|
71 |
-
case "opera":
|
72 |
-
$block_opera = 'disabled'; break;
|
73 |
-
}
|
74 |
-
|
75 |
-
include $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'advanced-blocking.php';
|
76 |
-
|
77 |
-
|
78 |
-
/* ADVANCD BLOCKING FUNCTIONS */
|
79 |
-
|
80 |
-
//Function to save range of ips
|
81 |
-
function wpns_handle_range_blocking($postedValue)
|
82 |
-
{
|
83 |
-
$flag=0;
|
84 |
-
$max_allowed_ranges = 100;
|
85 |
-
$added_mappings_ranges = 0 ;
|
86 |
-
for($i=1;$i<=$max_allowed_ranges;$i++){
|
87 |
-
if(isset($postedValue['start_'.$i]) && isset($postedValue['end_'.$i]) && !empty($postedValue['start_'.$i]) && !empty($postedValue['end_'.$i])){
|
88 |
-
|
89 |
-
$postedValue['start_'.$i] = sanitize_text_field($postedValue['start_'.$i]);
|
90 |
-
$postedValue['end_'.$i] = sanitize_text_field($postedValue['end_'.$i]);
|
91 |
-
|
92 |
-
if(filter_var($postedValue['start_'.$i] , FILTER_VALIDATE_IP ) && filter_var($postedValue['end_'.$i] , FILTER_VALIDATE_IP ) && (ip2long($postedValue['end_'.$i]) > ip2long($postedValue['start_'.$i])) ){
|
93 |
-
$range = '';
|
94 |
-
$range = $postedValue['start_'.$i];
|
95 |
-
$range .= '-';
|
96 |
-
$range .= $postedValue['end_'.$i];
|
97 |
-
$added_mappings_ranges++;
|
98 |
-
update_option( 'mo_wpns_iprange_range_'.$added_mappings_ranges, $range );
|
99 |
-
|
100 |
-
}
|
101 |
-
else{
|
102 |
-
$flag = 1;
|
103 |
-
do_action('wpns_show_message',MoWpnsMessages::showMessage('INVALID_IP'),'ERROR');
|
104 |
-
return;
|
105 |
-
}
|
106 |
-
}
|
107 |
-
}
|
108 |
-
|
109 |
-
|
110 |
-
if($added_mappings_ranges==0)
|
111 |
-
update_option( 'mo_wpns_iprange_range_1','');
|
112 |
-
update_option( 'mo_wpns_iprange_count', $added_mappings_ranges);
|
113 |
-
if($flag == 0){
|
114 |
-
do_action('wpns_show_message',MoWpnsMessages::showMessage('IP_PERMANENTLY_BLOCKED'),'SUCCESS');
|
115 |
-
}
|
116 |
-
}
|
117 |
-
|
118 |
-
//Function to handle browser blocking
|
119 |
-
function wpns_handle_browser_blocking($postedValue)
|
120 |
-
{
|
121 |
-
isset($postedValue['mo_wpns_block_chrome']) ? update_option( 'mo_wpns_block_chrome' , $postedValue['mo_wpns_block_chrome'] ) : update_option( 'mo_wpns_block_chrome' , false );
|
122 |
-
isset($postedValue['mo_wpns_block_firefox']) ? update_option( 'mo_wpns_block_firefox' , $postedValue['mo_wpns_block_firefox'] ) : update_option( 'mo_wpns_block_firefox' , false );
|
123 |
-
isset($postedValue['mo_wpns_block_ie']) ? update_option( 'mo_wpns_block_ie' , $postedValue['mo_wpns_block_ie'] ) : update_option( 'mo_wpns_block_ie' , false );
|
124 |
-
isset($postedValue['mo_wpns_block_safari']) ? update_option( 'mo_wpns_block_safari' , $postedValue['mo_wpns_block_safari'] ) : update_option( 'mo_wpns_block_safari' , false );
|
125 |
-
isset($postedValue['mo_wpns_block_opera']) ? update_option( 'mo_wpns_block_opera' , $postedValue['mo_wpns_block_opera'] ) : update_option( 'mo_wpns_block_opera' , false );
|
126 |
-
isset($postedValue['mo_wpns_block_edge']) ? update_option( 'mo_wpns_block_edge' , $postedValue['mo_wpns_block_edge'] ) : update_option( 'mo_wpns_block_edge' , false );
|
127 |
-
do_action('wpns_show_message',MoWpnsMessages::showMessage('CONFIG_SAVED'),'SUCCESS');
|
128 |
-
}
|
129 |
-
|
130 |
-
|
131 |
-
//Function to handle Htaccess blocking
|
132 |
-
function wpns_handle_htaccess_blocking($postdata)
|
133 |
-
{
|
134 |
-
$htaccess = isset($postdata['mo_wpns_enable_htaccess_blocking']) ? true : false;
|
135 |
-
update_option( 'mo_wpns_enable_htaccess_blocking', $htaccess);
|
136 |
-
$mo_wpns_config = new MoWpnsHandler();
|
137 |
-
if($htaccess)
|
138 |
-
{
|
139 |
-
$mo_wpns_config->add_htaccess_ips();
|
140 |
-
do_action('wpns_show_message',MoWpnsMessages::showMessage('HTACCESS_ENABLED'),'SUCCESS');
|
141 |
-
}
|
142 |
-
else
|
143 |
-
{
|
144 |
-
$mo_wpns_config->remove_htaccess_ips();
|
145 |
-
do_action('wpns_show_message',MoWpnsMessages::showMessage('HTACCESS_DISABLED'),'ERROR');
|
146 |
-
}
|
147 |
-
}
|
148 |
-
|
149 |
-
|
150 |
-
//Function to handle user agent blocking
|
151 |
-
function wpns_handle_user_agent_blocking($postvalue)
|
152 |
-
{
|
153 |
-
$user_agent = isset($postvalue['mo_wpns_enable_user_agent_blocking']) ? true : false;
|
154 |
-
update_option( 'mo_wpns_enable_user_agent_blocking', $user_agent);
|
155 |
-
if($user_agent)
|
156 |
-
do_action('wpns_show_message',MoWpnsMessages::showMessage('USER_AGENT_BLOCK_ENABLED'),'SUCCESS');
|
157 |
-
else
|
158 |
-
do_action('wpns_show_message',MoWpnsMessages::showMessage('USER_AGENT_BLOCK_DISABLED'),'ERROR');
|
159 |
-
}
|
160 |
-
|
161 |
-
|
162 |
-
//Function to handle country block
|
163 |
-
function wpns_handle_country_block($post)
|
164 |
-
{
|
165 |
-
$countrycodes = "";
|
166 |
-
foreach($post as $countrycode=>$value){
|
167 |
-
if($countrycode!="option")
|
168 |
-
$countrycodes .= $countrycode.";";
|
169 |
-
}
|
170 |
-
update_option( 'mo_wpns_countrycodes', $countrycodes);
|
171 |
-
do_action('wpns_show_message',MoWpnsMessages::showMessage('CONFIG_SAVED'),'SUCCESS');
|
172 |
-
}
|
173 |
-
|
174 |
-
|
175 |
-
//Function to handle block referrer
|
176 |
-
function wpns_handle_block_referrer($post)
|
177 |
-
{
|
178 |
-
$referrers = "";
|
179 |
-
foreach($post as $key => $value)
|
180 |
-
{
|
181 |
-
if(strpos($key, 'referrer_') !== false)
|
182 |
-
if(!empty($value))
|
183 |
-
$referrers .= $value.";";
|
184 |
-
}
|
185 |
-
update_option( 'mo_wpns_referrers', $referrers);
|
186 |
-
}
|
1 |
+
<?php
|
2 |
+
|
3 |
+
global $moWpnsUtility,$mo2f_dirName;
|
4 |
+
|
5 |
+
if(current_user_can( 'manage_options' ) && isset($_POST['option']) )
|
6 |
+
{
|
7 |
+
switch($_POST['option'])
|
8 |
+
{
|
9 |
+
case "mo_wpns_block_ip_range":
|
10 |
+
wpns_handle_range_blocking($_POST); break;
|
11 |
+
case "mo_wpns_browser_blocking":
|
12 |
+
wpns_handle_browser_blocking($_POST); break;
|
13 |
+
case "mo_wpns_enable_htaccess_blocking":
|
14 |
+
wpns_handle_htaccess_blocking($_POST); break;
|
15 |
+
case "mo_wpns_enable_user_agent_blocking":
|
16 |
+
wpns_handle_user_agent_blocking($_POST); break;
|
17 |
+
case "mo_wpns_block_countries":
|
18 |
+
wpns_handle_country_block($_POST); break;
|
19 |
+
case "mo_wpns_block_referrer":
|
20 |
+
wpns_handle_block_referrer($_POST); break;
|
21 |
+
|
22 |
+
}
|
23 |
+
}
|
24 |
+
|
25 |
+
$range_count = is_numeric(get_option('mo_wpns_iprange_count'))
|
26 |
+
&& intval(get_option('mo_wpns_iprange_count')) !=0 ? intval(get_option('mo_wpns_iprange_count')) : 1;
|
27 |
+
$htaccess_block = get_option('mo_wpns_enable_htaccess_blocking') ? "checked" : "";
|
28 |
+
$user_agent = get_option('mo_wpns_enable_user_agent_blocking') ? "checked" : "";
|
29 |
+
$block_chrome = get_option('mo_wpns_block_chrome') ? "checked" : "";
|
30 |
+
$block_ie = get_option('mo_wpns_block_ie') ? "checked" : "";
|
31 |
+
$block_firefox = get_option('mo_wpns_block_firefox') ? "checked" : "";
|
32 |
+
$block_safari = get_option('mo_wpns_block_safari') ? "checked" : "";
|
33 |
+
$block_opera = get_option('mo_wpns_block_opera') ? "checked" : "";
|
34 |
+
$block_edge = get_option('mo_wpns_block_edge') ? "checked" : "";
|
35 |
+
$country = MoWpnsConstants::$country;
|
36 |
+
$codes = get_option( "mo_wpns_countrycodes");
|
37 |
+
$referrers = get_option( 'mo_wpns_referrers');
|
38 |
+
$referrers = explode(";",$referrers);
|
39 |
+
$current_browser= $moWpnsUtility->getCurrentBrowser();
|
40 |
+
$start = array();
|
41 |
+
$end = array();
|
42 |
+
for($i = 1 ; $i <= $range_count ; $i++){
|
43 |
+
$ip_range = get_option("mo_wpns_iprange_range_".$i);
|
44 |
+
if($ip_range){
|
45 |
+
$a = explode('-', $ip_range);
|
46 |
+
|
47 |
+
$start[$i] = $a[0];
|
48 |
+
$end[$i] = $a[1];
|
49 |
+
}
|
50 |
+
|
51 |
+
}
|
52 |
+
if(!isset($start[1])){
|
53 |
+
$start[1] = '';
|
54 |
+
}
|
55 |
+
if(!isset($end[1])){
|
56 |
+
$end[1] = '';
|
57 |
+
}
|
58 |
+
|
59 |
+
switch($current_browser)
|
60 |
+
{
|
61 |
+
case "chrome":
|
62 |
+
$block_chrome = 'disabled'; break;
|
63 |
+
case "ie":
|
64 |
+
$block_ie = 'disabled'; break;
|
65 |
+
case "firefox":
|
66 |
+
$block_firefox= 'disabled'; break;
|
67 |
+
case "safari":
|
68 |
+
$block_safari = 'disabled'; break;
|
69 |
+
case "edge":
|
70 |
+
$block_edge = 'disabled'; break;
|
71 |
+
case "opera":
|
72 |
+
$block_opera = 'disabled'; break;
|
73 |
+
}
|
74 |
+
|
75 |
+
include $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'advanced-blocking.php';
|
76 |
+
|
77 |
+
|
78 |
+
/* ADVANCD BLOCKING FUNCTIONS */
|
79 |
+
|
80 |
+
//Function to save range of ips
|
81 |
+
function wpns_handle_range_blocking($postedValue)
|
82 |
+
{
|
83 |
+
$flag=0;
|
84 |
+
$max_allowed_ranges = 100;
|
85 |
+
$added_mappings_ranges = 0 ;
|
86 |
+
for($i=1;$i<=$max_allowed_ranges;$i++){
|
87 |
+
if(isset($postedValue['start_'.$i]) && isset($postedValue['end_'.$i]) && !empty($postedValue['start_'.$i]) && !empty($postedValue['end_'.$i])){
|
88 |
+
|
89 |
+
$postedValue['start_'.$i] = sanitize_text_field($postedValue['start_'.$i]);
|
90 |
+
$postedValue['end_'.$i] = sanitize_text_field($postedValue['end_'.$i]);
|
91 |
+
|
92 |
+
if(filter_var($postedValue['start_'.$i] , FILTER_VALIDATE_IP ) && filter_var($postedValue['end_'.$i] , FILTER_VALIDATE_IP ) && (ip2long($postedValue['end_'.$i]) > ip2long($postedValue['start_'.$i])) ){
|
93 |
+
$range = '';
|
94 |
+
$range = $postedValue['start_'.$i];
|
95 |
+
$range .= '-';
|
96 |
+
$range .= $postedValue['end_'.$i];
|
97 |
+
$added_mappings_ranges++;
|
98 |
+
update_option( 'mo_wpns_iprange_range_'.$added_mappings_ranges, $range );
|
99 |
+
|
100 |
+
}
|
101 |
+
else{
|
102 |
+
$flag = 1;
|
103 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('INVALID_IP'),'ERROR');
|
104 |
+
return;
|
105 |
+
}
|
106 |
+
}
|
107 |
+
}
|
108 |
+
|
109 |
+
|
110 |
+
if($added_mappings_ranges==0)
|
111 |
+
update_option( 'mo_wpns_iprange_range_1','');
|
112 |
+
update_option( 'mo_wpns_iprange_count', $added_mappings_ranges);
|
113 |
+
if($flag == 0){
|
114 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('IP_PERMANENTLY_BLOCKED'),'SUCCESS');
|
115 |
+
}
|
116 |
+
}
|
117 |
+
|
118 |
+
//Function to handle browser blocking
|
119 |
+
function wpns_handle_browser_blocking($postedValue)
|
120 |
+
{
|
121 |
+
isset($postedValue['mo_wpns_block_chrome']) ? update_option( 'mo_wpns_block_chrome' , $postedValue['mo_wpns_block_chrome'] ) : update_option( 'mo_wpns_block_chrome' , false );
|
122 |
+
isset($postedValue['mo_wpns_block_firefox']) ? update_option( 'mo_wpns_block_firefox' , $postedValue['mo_wpns_block_firefox'] ) : update_option( 'mo_wpns_block_firefox' , false );
|
123 |
+
isset($postedValue['mo_wpns_block_ie']) ? update_option( 'mo_wpns_block_ie' , $postedValue['mo_wpns_block_ie'] ) : update_option( 'mo_wpns_block_ie' , false );
|
124 |
+
isset($postedValue['mo_wpns_block_safari']) ? update_option( 'mo_wpns_block_safari' , $postedValue['mo_wpns_block_safari'] ) : update_option( 'mo_wpns_block_safari' , false );
|
125 |
+
isset($postedValue['mo_wpns_block_opera']) ? update_option( 'mo_wpns_block_opera' , $postedValue['mo_wpns_block_opera'] ) : update_option( 'mo_wpns_block_opera' , false );
|
126 |
+
isset($postedValue['mo_wpns_block_edge']) ? update_option( 'mo_wpns_block_edge' , $postedValue['mo_wpns_block_edge'] ) : update_option( 'mo_wpns_block_edge' , false );
|
127 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('CONFIG_SAVED'),'SUCCESS');
|
128 |
+
}
|
129 |
+
|
130 |
+
|
131 |
+
//Function to handle Htaccess blocking
|
132 |
+
function wpns_handle_htaccess_blocking($postdata)
|
133 |
+
{
|
134 |
+
$htaccess = isset($postdata['mo_wpns_enable_htaccess_blocking']) ? true : false;
|
135 |
+
update_option( 'mo_wpns_enable_htaccess_blocking', $htaccess);
|
136 |
+
$mo_wpns_config = new MoWpnsHandler();
|
137 |
+
if($htaccess)
|
138 |
+
{
|
139 |
+
$mo_wpns_config->add_htaccess_ips();
|
140 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('HTACCESS_ENABLED'),'SUCCESS');
|
141 |
+
}
|
142 |
+
else
|
143 |
+
{
|
144 |
+
$mo_wpns_config->remove_htaccess_ips();
|
145 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('HTACCESS_DISABLED'),'ERROR');
|
146 |
+
}
|
147 |
+
}
|
148 |
+
|
149 |
+
|
150 |
+
//Function to handle user agent blocking
|
151 |
+
function wpns_handle_user_agent_blocking($postvalue)
|
152 |
+
{
|
153 |
+
$user_agent = isset($postvalue['mo_wpns_enable_user_agent_blocking']) ? true : false;
|
154 |
+
update_option( 'mo_wpns_enable_user_agent_blocking', $user_agent);
|
155 |
+
if($user_agent)
|
156 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('USER_AGENT_BLOCK_ENABLED'),'SUCCESS');
|
157 |
+
else
|
158 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('USER_AGENT_BLOCK_DISABLED'),'ERROR');
|
159 |
+
}
|
160 |
+
|
161 |
+
|
162 |
+
//Function to handle country block
|
163 |
+
function wpns_handle_country_block($post)
|
164 |
+
{
|
165 |
+
$countrycodes = "";
|
166 |
+
foreach($post as $countrycode=>$value){
|
167 |
+
if($countrycode!="option")
|
168 |
+
$countrycodes .= $countrycode.";";
|
169 |
+
}
|
170 |
+
update_option( 'mo_wpns_countrycodes', $countrycodes);
|
171 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('CONFIG_SAVED'),'SUCCESS');
|
172 |
+
}
|
173 |
+
|
174 |
+
|
175 |
+
//Function to handle block referrer
|
176 |
+
function wpns_handle_block_referrer($post)
|
177 |
+
{
|
178 |
+
$referrers = "";
|
179 |
+
foreach($post as $key => $value)
|
180 |
+
{
|
181 |
+
if(strpos($key, 'referrer_') !== false)
|
182 |
+
if(!empty($value))
|
183 |
+
$referrers .= $value.";";
|
184 |
+
}
|
185 |
+
update_option( 'mo_wpns_referrers', $referrers);
|
186 |
+
}
|
controllers/backup/backup.php
CHANGED
@@ -1,2 +1,2 @@
|
|
1 |
-
<?php
|
2 |
include $mo2f_dirName. 'views'.DIRECTORY_SEPARATOR.'backup'.DIRECTORY_SEPARATOR.'backup.php';
|
1 |
+
<?php
|
2 |
include $mo2f_dirName. 'views'.DIRECTORY_SEPARATOR.'backup'.DIRECTORY_SEPARATOR.'backup.php';
|
controllers/backup/backup_ajax.php
CHANGED
@@ -1,157 +1,157 @@
|
|
1 |
-
<?php
|
2 |
-
class Mo_wpns_file_db_backup{
|
3 |
-
|
4 |
-
function __construct(){
|
5 |
-
add_action( 'admin_init' , array( $this, 'mo_wpns_file_db_backup_functions' ) );
|
6 |
-
}
|
7 |
-
|
8 |
-
public function mo_wpns_file_db_backup_functions(){
|
9 |
-
add_action('wp_ajax_mo_wpns_backup_redirect', array( $this, 'mo_wpns_backup_redirect' ));
|
10 |
-
}
|
11 |
-
|
12 |
-
public function mo_wpns_backup_redirect(){
|
13 |
-
|
14 |
-
switch($_POST['call_type'])
|
15 |
-
{
|
16 |
-
case "submit_backup_settings_form":
|
17 |
-
$this->mo_wpns_save_backup_config_form($_POST);
|
18 |
-
break;
|
19 |
-
case "submit_schedule_settings_form":
|
20 |
-
$this->mo_wpns_save_schedule_backup_config_form($_POST);
|
21 |
-
break;
|
22 |
-
case "delete_backup":
|
23 |
-
$this->delete_backup($_POST);
|
24 |
-
break;
|
25 |
-
}
|
26 |
-
}
|
27 |
-
|
28 |
-
public function mo_wpns_save_backup_config_form($postData){
|
29 |
-
$nonce = $postData['nonce'];
|
30 |
-
if ( ! wp_verify_nonce( $nonce, 'wpns-backup-settings' ) ){
|
31 |
-
wp_send_json('ERROR');
|
32 |
-
}
|
33 |
-
|
34 |
-
if(! isset($postData['backup_plugin']) && ! isset($postData['backup_themes']) && ! isset($postData['backup_wp_files']) && ! isset($postData['database'])){
|
35 |
-
wp_send_json('folder_error');
|
36 |
-
}
|
37 |
-
|
38 |
-
isset($postData['backup_plugin']) ? update_site_option( 'mo_file_manual_backup_plugins', sanitize_text_field($postData['backup_plugin'])) : update_site_option( 'mo_file_manual_backup_plugins', 0);
|
39 |
-
|
40 |
-
isset($postData['backup_themes']) ? update_site_option( 'mo_file_manual_backup_themes', sanitize_text_field($postData['backup_themes'])) : update_site_option( 'mo_file_manual_backup_themes', 0);
|
41 |
-
|
42 |
-
isset($postData['backup_wp_files']) ? update_site_option( 'mo_file_manual_backup_wp_files', sanitize_text_field($postData['backup_wp_files'])) : update_site_option( 'mo_file_manual_backup_wp_files', 0);
|
43 |
-
|
44 |
-
isset($postData['database']) ? update_site_option( 'mo_database_backup', sanitize_text_field($postData['database'])) : update_site_option( 'mo_database_backup', 0);
|
45 |
-
|
46 |
-
if(isset($postData['backup_plugin']) || isset($postData['backup_themes']) || isset($postData['backup_wp_files'])){
|
47 |
-
$handler_obj = new MoBackupSite();
|
48 |
-
update_site_option('file_backup_created_time',date("l").' , '.date("d-m-Y") .' '.date("h:i"));
|
49 |
-
$handler_obj->file_manual_backup();
|
50 |
-
}
|
51 |
-
if(isset($postData['database'])) {
|
52 |
-
$handler_obj = new MoBackupSite();
|
53 |
-
update_site_option('db_backup_created_time',date("l").' , '.date("d-m-Y") .' '.date("h:i"));
|
54 |
-
$handler_obj->backupDB();
|
55 |
-
}
|
56 |
-
wp_send_json('created_backup');
|
57 |
-
}
|
58 |
-
|
59 |
-
function mo_wpns_save_schedule_backup_config_form($postData){
|
60 |
-
$nonce = $postData['nonce'];
|
61 |
-
if ( ! wp_verify_nonce( $nonce, 'wpns-schedule-backup' ) ){
|
62 |
-
wp_send_json('ERROR');
|
63 |
-
|
64 |
-
}
|
65 |
-
|
66 |
-
$handler_obj = new MoBackupSite;
|
67 |
-
if(!isset($postData['backup_plugin']) && ! isset($postData['backup_themes']) && ! isset($postData['backup_wp_files']) && ! isset($postData['database']))
|
68 |
-
{
|
69 |
-
wp_send_json('folder_error');
|
70 |
-
|
71 |
-
}
|
72 |
-
|
73 |
-
isset($postData['backup_plugin']) ? update_site_option( 'mo_file_backup_plugins', sanitize_text_field($postData['backup_plugin'])) : update_site_option( 'mo_file_backup_plugins', 0);
|
74 |
-
|
75 |
-
isset($postData['backup_themes']) ? update_site_option( 'mo_file_backup_themes', sanitize_text_field($postData['backup_themes'])) : update_site_option( 'mo_file_backup_themes', 0);
|
76 |
-
|
77 |
-
isset($postData['backup_wp_files']) ? update_site_option( 'mo_file_backup_wp_files', sanitize_text_field($postData['backup_wp_files'])) : update_site_option( 'mo_file_backup_wp_files', 0);
|
78 |
-
|
79 |
-
isset($postData['database']) ? update_site_option( 'mo_schedule_database_backup', sanitize_text_field($postData['database'])) : update_site_option( 'mo_schedule_database_backup', 0);
|
80 |
-
|
81 |
-
if($postData['backup_time']==='12'||$postData['backup_time']==='24'||$postData['backup_time']==='168'||$postData['backup_time']==='360'||$postData['backup_time']==='720')
|
82 |
-
{
|
83 |
-
isset($postData['backup_time']) ? update_site_option( 'mo_wpns_backup_time', sanitize_text_field($postData['backup_time'])) : update_site_option( 'mo_wpns_backup_time', 0);
|
84 |
-
}else{
|
85 |
-
wp_send_json('invalid_hours');
|
86 |
-
|
87 |
-
}
|
88 |
-
|
89 |
-
isset($postData['enable_backup_schedule']) ? update_site_option( 'enable_backup_schedule', sanitize_text_field($postData['enable_backup_schedule'])) : update_site_option( 'enable_backup_schedule', 0);
|
90 |
-
|
91 |
-
isset($postData['local_storage']) ? update_site_option( 'storage_type', sanitize_text_field($postData['local_storage'])) : update_site_option( 'storage_type', 0);
|
92 |
-
|
93 |
-
if(get_site_option('enable_backup_schedule') === '1'){
|
94 |
-
|
95 |
-
if(isset($postData['backup_plugin']) || isset($postData['backup_themes']) || isset($postData['backup_wp_files'])){
|
96 |
-
$handler_obj-> file_backup_deactivate();
|
97 |
-
if (!wp_next_scheduled( 'mo_eb_file_cron_hook')) {
|
98 |
-
wp_schedule_event( time(), 'file_eb_backup_time', 'mo_eb_file_cron_hook' );
|
99 |
-
}
|
100 |
-
update_site_option('file_backup_created_time',date("l").' , '.date("d-m-Y") .' '.date("h:i"));
|
101 |
-
update_site_option('scheduled_file_backup',1);
|
102 |
-
}
|
103 |
-
else
|
104 |
-
$handler_obj-> file_backup_deactivate();
|
105 |
-
|
106 |
-
if(
|
107 |
-
$handler_obj->bl_deactivate();
|
108 |
-
if ( ! wp_next_scheduled( 'mo_eb_bl_cron_hook' ) ) {
|
109 |
-
wp_schedule_event( time(), 'db_eb_backup_time', 'mo_eb_bl_cron_hook' );
|
110 |
-
}
|
111 |
-
update_site_option('db_backup_created_time',date("l").' , '.date("d-m-Y") .' '.date("h:i"));
|
112 |
-
update_site_option('scheduled_db_backup',1);
|
113 |
-
}
|
114 |
-
else
|
115 |
-
$handler_obj->bl_deactivate();
|
116 |
-
|
117 |
-
wp_send_json('success');
|
118 |
-
|
119 |
-
}else{
|
120 |
-
$handler_obj-> file_backup_deactivate();
|
121 |
-
$handler_obj->bl_deactivate();
|
122 |
-
update_site_option('scheduled_db_backup',0);
|
123 |
-
update_site_option('scheduled_file_backup',0);
|
124 |
-
wp_send_json('disable');
|
125 |
-
|
126 |
-
}
|
127 |
-
}
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
function delete_backup($postData){
|
132 |
-
|
133 |
-
$nonce = $postData['nonce'];
|
134 |
-
if ( ! wp_verify_nonce( $nonce, 'delete_entry' ) ){
|
135 |
-
wp_send_json('ERROR');
|
136 |
-
|
137 |
-
}
|
138 |
-
|
139 |
-
if(current_user_can('administrator')){
|
140 |
-
global $wpnsDbQueries;
|
141 |
-
$id = $postData['id'];
|
142 |
-
$row_exist = (int)$wpnsDbQueries->row_exist($id);
|
143 |
-
$status = file_exists($postData["folder_name"].DIRECTORY_SEPARATOR. $postData['file_name']);
|
144 |
-
if($status){
|
145 |
-
unlink($postData["folder_name"].DIRECTORY_SEPARATOR. $postData['file_name']);
|
146 |
-
if($row_exist)
|
147 |
-
$wpnsDbQueries->delete_file($id);
|
148 |
-
wp_send_json('success');
|
149 |
-
|
150 |
-
}else{
|
151 |
-
$wpnsDbQueries->delete_file($id);
|
152 |
-
wp_send_json('notexist');
|
153 |
-
}
|
154 |
-
}
|
155 |
-
}
|
156 |
-
}new Mo_wpns_file_db_backup();
|
157 |
?>
|
1 |
+
<?php
|
2 |
+
class Mo_wpns_file_db_backup{
|
3 |
+
|
4 |
+
function __construct(){
|
5 |
+
add_action( 'admin_init' , array( $this, 'mo_wpns_file_db_backup_functions' ) );
|
6 |
+
}
|
7 |
+
|
8 |
+
public function mo_wpns_file_db_backup_functions(){
|
9 |
+
add_action('wp_ajax_mo_wpns_backup_redirect', array( $this, 'mo_wpns_backup_redirect' ));
|
10 |
+
}
|
11 |
+
|
12 |
+
public function mo_wpns_backup_redirect(){
|
13 |
+
|
14 |
+
switch($_POST['call_type'])
|
15 |
+
{
|
16 |
+
case "submit_backup_settings_form":
|
17 |
+
$this->mo_wpns_save_backup_config_form($_POST);
|
18 |
+
break;
|
19 |
+
case "submit_schedule_settings_form":
|
20 |
+
$this->mo_wpns_save_schedule_backup_config_form($_POST);
|
21 |
+
break;
|
22 |
+
case "delete_backup":
|
23 |
+
$this->delete_backup($_POST);
|
24 |
+
break;
|
25 |
+
}
|
26 |
+
}
|
27 |
+
|
28 |
+
public function mo_wpns_save_backup_config_form($postData){
|
29 |
+
$nonce = $postData['nonce'];
|
30 |
+
if ( ! wp_verify_nonce( $nonce, 'wpns-backup-settings' ) ){
|
31 |
+
wp_send_json('ERROR');
|
32 |
+
}
|
33 |
+
|
34 |
+
if(! isset($postData['backup_plugin']) && ! isset($postData['backup_themes']) && ! isset($postData['backup_wp_files']) && ! isset($postData['database'])){
|
35 |
+
wp_send_json('folder_error');
|
36 |
+
}
|
37 |
+
|
38 |
+
isset($postData['backup_plugin']) ? update_site_option( 'mo_file_manual_backup_plugins', sanitize_text_field($postData['backup_plugin'])) : update_site_option( 'mo_file_manual_backup_plugins', 0);
|
39 |
+
|
40 |
+
isset($postData['backup_themes']) ? update_site_option( 'mo_file_manual_backup_themes', sanitize_text_field($postData['backup_themes'])) : update_site_option( 'mo_file_manual_backup_themes', 0);
|
41 |
+
|
42 |
+
isset($postData['backup_wp_files']) ? update_site_option( 'mo_file_manual_backup_wp_files', sanitize_text_field($postData['backup_wp_files'])) : update_site_option( 'mo_file_manual_backup_wp_files', 0);
|
43 |
+
|
44 |
+
isset($postData['database']) ? update_site_option( 'mo_database_backup', sanitize_text_field($postData['database'])) : update_site_option( 'mo_database_backup', 0);
|
45 |
+
|
46 |
+
if(isset($postData['backup_plugin']) || isset($postData['backup_themes']) || isset($postData['backup_wp_files'])){
|
47 |
+
$handler_obj = new MoBackupSite();
|
48 |
+
update_site_option('file_backup_created_time',date("l").' , '.date("d-m-Y") .' '.date("h:i"));
|
49 |
+
$handler_obj->file_manual_backup();
|
50 |
+
}
|
51 |
+
if(isset($postData['database'])) {
|
52 |
+
$handler_obj = new MoBackupSite();
|
53 |
+
update_site_option('db_backup_created_time',date("l").' , '.date("d-m-Y") .' '.date("h:i"));
|
54 |
+
$handler_obj->backupDB();
|
55 |
+
}
|
56 |
+
wp_send_json('created_backup');
|
57 |
+
}
|
58 |
+
|
59 |
+
function mo_wpns_save_schedule_backup_config_form($postData){
|
60 |
+
$nonce = $postData['nonce'];
|
61 |
+
if ( ! wp_verify_nonce( $nonce, 'wpns-schedule-backup' ) ){
|
62 |
+
wp_send_json('ERROR');
|
63 |
+
|
64 |
+
}
|
65 |
+
|
66 |
+
$handler_obj = new MoBackupSite;
|
67 |
+
if(!isset($postData['backup_plugin']) && ! isset($postData['backup_themes']) && ! isset($postData['backup_wp_files']) && ! isset($postData['database']))
|
68 |
+
{
|
69 |
+
wp_send_json('folder_error');
|
70 |
+
|
71 |
+
}
|
72 |
+
|
73 |
+
isset($postData['backup_plugin']) ? update_site_option( 'mo_file_backup_plugins', sanitize_text_field($postData['backup_plugin'])) : update_site_option( 'mo_file_backup_plugins', 0);
|
74 |
+
|
75 |
+
isset($postData['backup_themes']) ? update_site_option( 'mo_file_backup_themes', sanitize_text_field($postData['backup_themes'])) : update_site_option( 'mo_file_backup_themes', 0);
|
76 |
+
|
77 |
+
isset($postData['backup_wp_files']) ? update_site_option( 'mo_file_backup_wp_files', sanitize_text_field($postData['backup_wp_files'])) : update_site_option( 'mo_file_backup_wp_files', 0);
|
78 |
+
|
79 |
+
isset($postData['database']) ? update_site_option( 'mo_schedule_database_backup', sanitize_text_field($postData['database'])) : update_site_option( 'mo_schedule_database_backup', 0);
|
80 |
+
|
81 |
+
if($postData['backup_time']==='12'||$postData['backup_time']==='24'||$postData['backup_time']==='168'||$postData['backup_time']==='360'||$postData['backup_time']==='720')
|
82 |
+
{
|
83 |
+
isset($postData['backup_time']) ? update_site_option( 'mo_wpns_backup_time', sanitize_text_field($postData['backup_time'])) : update_site_option( 'mo_wpns_backup_time', 0);
|
84 |
+
}else{
|
85 |
+
wp_send_json('invalid_hours');
|
86 |
+
|
87 |
+
}
|
88 |
+
|
89 |
+
isset($postData['enable_backup_schedule']) ? update_site_option( 'enable_backup_schedule', sanitize_text_field($postData['enable_backup_schedule'])) : update_site_option( 'enable_backup_schedule', 0);
|
90 |
+
|
91 |
+
isset($postData['local_storage']) ? update_site_option( 'storage_type', sanitize_text_field($postData['local_storage'])) : update_site_option( 'storage_type', 0);
|
92 |
+
|
93 |
+
if(get_site_option('enable_backup_schedule') === '1'){
|
94 |
+
|
95 |
+
if(isset($postData['backup_plugin']) || isset($postData['backup_themes']) || isset($postData['backup_wp_files'])){
|
96 |
+
$handler_obj-> file_backup_deactivate();
|
97 |
+
if (!wp_next_scheduled( 'mo_eb_file_cron_hook')) {
|
98 |
+
wp_schedule_event( time(), 'file_eb_backup_time', 'mo_eb_file_cron_hook' );
|
99 |
+
}
|
100 |
+
update_site_option('file_backup_created_time',date("l").' , '.date("d-m-Y") .' '.date("h:i"));
|
101 |
+
update_site_option('scheduled_file_backup',1);
|
102 |
+
}
|
103 |
+
else
|
104 |
+
$handler_obj-> file_backup_deactivate();
|
105 |
+
|
106 |
+
if(MoWpnsUtility::get_mo2f_db_option('mo_schedule_database_backup', 'site_option') === '1'){
|
107 |
+
$handler_obj->bl_deactivate();
|
108 |
+
if ( ! wp_next_scheduled( 'mo_eb_bl_cron_hook' ) ) {
|
109 |
+
wp_schedule_event( time(), 'db_eb_backup_time', 'mo_eb_bl_cron_hook' );
|
110 |
+
}
|
111 |
+
update_site_option('db_backup_created_time',date("l").' , '.date("d-m-Y") .' '.date("h:i"));
|
112 |
+
update_site_option('scheduled_db_backup',1);
|
113 |
+
}
|
114 |
+
else
|
115 |
+
$handler_obj->bl_deactivate();
|
116 |
+
|
117 |
+
wp_send_json('success');
|
118 |
+
|
119 |
+
}else{
|
120 |
+
$handler_obj-> file_backup_deactivate();
|
121 |
+
$handler_obj->bl_deactivate();
|
122 |
+
update_site_option('scheduled_db_backup',0);
|
123 |
+
update_site_option('scheduled_file_backup',0);
|
124 |
+
wp_send_json('disable');
|
125 |
+
|
126 |
+
}
|
127 |
+
}
|
128 |
+
|
129 |
+
|
130 |
+
|
131 |
+
function delete_backup($postData){
|
132 |
+
|
133 |
+
$nonce = $postData['nonce'];
|
134 |
+
if ( ! wp_verify_nonce( $nonce, 'delete_entry' ) ){
|
135 |
+
wp_send_json('ERROR');
|
136 |
+
|
137 |
+
}
|
138 |
+
|
139 |
+
if(current_user_can('administrator')){
|
140 |
+
global $wpnsDbQueries;
|
141 |
+
$id = $postData['id'];
|
142 |
+
$row_exist = (int)$wpnsDbQueries->row_exist($id);
|
143 |
+
$status = file_exists($postData["folder_name"].DIRECTORY_SEPARATOR. $postData['file_name']);
|
144 |
+
if($status){
|
145 |
+
unlink($postData["folder_name"].DIRECTORY_SEPARATOR. $postData['file_name']);
|
146 |
+
if($row_exist)
|
147 |
+
$wpnsDbQueries->delete_file($id);
|
148 |
+
wp_send_json('success');
|
149 |
+
|
150 |
+
}else{
|
151 |
+
$wpnsDbQueries->delete_file($id);
|
152 |
+
wp_send_json('notexist');
|
153 |
+
}
|
154 |
+
}
|
155 |
+
}
|
156 |
+
}new Mo_wpns_file_db_backup();
|
157 |
?>
|
controllers/backup/backup_schdule.php
CHANGED
@@ -1,11 +1,11 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
$file_backup_time =
|
4 |
-
$db_eb_backup_time =
|
5 |
-
$file_schedule_status =
|
6 |
-
$db_backup_status =
|
7 |
-
$next_file_backup_hours =
|
8 |
-
$next_db_backup_hours =
|
9 |
$img_loader_url = plugins_url('backup-wordpress'.DIRECTORY_SEPARATOR .'includes'.DIRECTORY_SEPARATOR .'images'.DIRECTORY_SEPARATOR .'loader.gif');
|
10 |
$page_url = "";
|
11 |
$file_next_backup_timestamp = wp_next_scheduled( 'mo_eb_file_cron_hook' );
|
1 |
<?php
|
2 |
|
3 |
+
$file_backup_time = MoWpnsUtility::get_mo2f_db_option('file_backup_created_time', 'site_option');
|
4 |
+
$db_eb_backup_time = MoWpnsUtility::get_mo2f_db_option('db_backup_created_time', 'site_option');
|
5 |
+
$file_schedule_status = MoWpnsUtility::get_mo2f_db_option('scheduled_file_backup', 'site_option');
|
6 |
+
$db_backup_status = MoWpnsUtility::get_mo2f_db_option('scheduled_db_backup', 'site_option');
|
7 |
+
$next_file_backup_hours = MoWpnsUtility::get_mo2f_db_option('mo_wpns_backup_time', 'site_option');
|
8 |
+
$next_db_backup_hours = MoWpnsUtility::get_mo2f_db_option('mo_wpns_backup_time', 'site_option');
|
9 |
$img_loader_url = plugins_url('backup-wordpress'.DIRECTORY_SEPARATOR .'includes'.DIRECTORY_SEPARATOR .'images'.DIRECTORY_SEPARATOR .'loader.gif');
|
10 |
$page_url = "";
|
11 |
$file_next_backup_timestamp = wp_next_scheduled( 'mo_eb_file_cron_hook' );
|
controllers/content-protection.php
CHANGED
@@ -1,94 +1,94 @@
|
|
1 |
-
<?php
|
2 |
-
global $moWpnsUtility,$mo2f_dirName;
|
3 |
-
|
4 |
-
if(current_user_can( 'manage_options' ) && isset($_POST['option']))
|
5 |
-
{
|
6 |
-
switch($_POST['option'])
|
7 |
-
{
|
8 |
-
case "mo_wpns_content_protection":
|
9 |
-
wpns_handle_content_protection($_POST); break;
|
10 |
-
case "mo_wpns_enable_comment_spam_blocking":
|
11 |
-
wpns_handle_comment_spam_blocking($_POST); break;
|
12 |
-
case "mo_wpns_enable_comment_recaptcha":
|
13 |
-
wpns_handle_comment_recaptcha($_POST); break;
|
14 |
-
case "mo_wpns_comment_recaptcha_settings":
|
15 |
-
wpns_save_comment_recaptcha($_POST); break;
|
16 |
-
}
|
17 |
-
}
|
18 |
-
|
19 |
-
|
20 |
-
$protect_wp_config = get_option('mo2f_protect_wp_config') ? "checked" : "";
|
21 |
-
$protect_wp_uploads = get_option('mo2f_prevent_directory_browsing') ? "checked" : "";
|
22 |
-
$disable_file_editing = get_option('mo2f_disable_file_editing') ? "checked" : "";
|
23 |
-
$comment_spam_protect = get_option('mo_wpns_enable_comment_spam_blocking') ? "checked" : "";
|
24 |
-
$enable_recaptcha = get_option('mo_wpns_enable_comment_recaptcha') ? "checked" : "";
|
25 |
-
$htaccess_file = get_option('mo2f_htaccess_file') ? "checked" : "";
|
26 |
-
$restAPI = get_site_option('mo2f_restrict_restAPI') ? "checked" : "";
|
27 |
-
$test_recaptcha_url = "";
|
28 |
-
$wp_config = site_url().'/wp-config.php';
|
29 |
-
$wp_uploads = get_site_url().'/wp-content/uploads';
|
30 |
-
$plugin_editor = get_site_url().'/wp-admin/plugin-editor.php';
|
31 |
-
$restAPI_link = rest_url().'wp'.DIRECTORY_SEPARATOR.'v2'.DIRECTORY_SEPARATOR.'users';
|
32 |
-
$restApiPlugin = 'https:'.DIRECTORY_SEPARATOR.DIRECTORY_SEPARATOR.'www.wordpress.org'.DIRECTORY_SEPARATOR.'plugins'.DIRECTORY_SEPARATOR.'wp-rest-api-authentication';
|
33 |
-
if($enable_recaptcha)
|
34 |
-
{
|
35 |
-
$test_recaptcha_url = add_query_arg( array('option'=>'testrecaptchaconfig'), $_SERVER['REQUEST_URI'] );
|
36 |
-
$captcha_site_key = get_option('mo_wpns_recaptcha_site_key' );
|
37 |
-
$captcha_secret_key = get_option('mo_wpns_recaptcha_secret_key');
|
38 |
-
}
|
39 |
-
|
40 |
-
include $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'content-protection.php';
|
41 |
-
|
42 |
-
/* CONTENT PROTECTION FUNCTIONS */
|
43 |
-
|
44 |
-
//Function to save content protection settings
|
45 |
-
function wpns_handle_content_protection()
|
46 |
-
{
|
47 |
-
isset($_POST['protect_wp_config']) ? update_option('mo2f_protect_wp_config' , $_POST['protect_wp_config']) : update_option('mo2f_protect_wp_config' ,0);
|
48 |
-
isset($_POST['prevent_directory_browsing']) ? update_option('mo2f_prevent_directory_browsing', $_POST['prevent_directory_browsing']): update_option('mo2f_prevent_directory_browsing',0);
|
49 |
-
isset($_POST['disable_file_editing']) ? update_option('mo2f_disable_file_editing' , $_POST['disable_file_editing']) : update_option('mo2f_disable_file_editing' ,0);
|
50 |
-
isset($_POST['mo2f_htaccess_file']) ? update_option('mo2f_htaccess_file' , $_POST['mo2f_htaccess_file']) : update_option('mo2f_htaccess_file',0);
|
51 |
-
if(isset($_POST['restrictAPI'])){
|
52 |
-
update_site_option('mo2f_restrict_restAPI', 1);
|
53 |
-
}
|
54 |
-
else{
|
55 |
-
update_site_option('mo2f_restrict_restAPI',0);
|
56 |
-
}
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
$mo_wpns_htaccess_handler = new MoWpnsHandler();
|
62 |
-
$mo_wpns_htaccess_handler->update_htaccess_configuration();
|
63 |
-
do_action('wpns_show_message',MoWpnsMessages::showMessage('CONTENT_PROTECTION_ENABLED'),'SUCCESS');
|
64 |
-
}
|
65 |
-
|
66 |
-
|
67 |
-
//Function to handle comment spam blocking
|
68 |
-
function wpns_handle_comment_spam_blocking($postvalue)
|
69 |
-
{
|
70 |
-
$enable = isset($postvalue['mo_wpns_enable_comment_spam_blocking']) ? true : false;
|
71 |
-
update_option('mo_wpns_enable_comment_spam_blocking', $enable);
|
72 |
-
if($enable)
|
73 |
-
do_action('wpns_show_message',MoWpnsMessages::showMessage('CONTENT_SPAM_BLOCKING'),'SUCCESS');
|
74 |
-
else
|
75 |
-
do_action('wpns_show_message',MoWpnsMessages::showMessage('CONTENT_SPAM_BLOCKING_DISABLED'),'ERROR');
|
76 |
-
}
|
77 |
-
|
78 |
-
|
79 |
-
//Function to handle reCAPTCHA for comments
|
80 |
-
function wpns_handle_comment_recaptcha($postvalue)
|
81 |
-
{
|
82 |
-
$enable = isset($postvalue['mo_wpns_enable_comment_recaptcha']) ? true : false;
|
83 |
-
update_option('mo_wpns_enable_comment_recaptcha', $enable);
|
84 |
-
if($enable)
|
85 |
-
do_action('wpns_show_message',MoWpnsMessages::showMessage('CONTENT_RECAPTCHA'),'SUCCESS');
|
86 |
-
else
|
87 |
-
do_action('wpns_show_message',MoWpnsMessages::showMessage('CONTENT_RECAPTCHA_DISABLED'),'ERROR');
|
88 |
-
}
|
89 |
-
|
90 |
-
function wpns_save_comment_recaptcha($postvalue){
|
91 |
-
update_option('mo_wpns_recaptcha_site_key', $postvalue['mo_wpns_recaptcha_site_key']);
|
92 |
-
update_option('mo_wpns_recaptcha_secret_key', $postvalue['mo_wpns_recaptcha_secret_key']);
|
93 |
-
do_action('wpns_show_message',MoWpnsMessages::showMessage('RECAPTCHA_ENABLED'),'SUCCESS');
|
94 |
}
|
1 |
+
<?php
|
2 |
+
global $moWpnsUtility,$mo2f_dirName;
|
3 |
+
|
4 |
+
if(current_user_can( 'manage_options' ) && isset($_POST['option']))
|
5 |
+
{
|
6 |
+
switch($_POST['option'])
|
7 |
+
{
|
8 |
+
case "mo_wpns_content_protection":
|
9 |
+
wpns_handle_content_protection($_POST); break;
|
10 |
+
case "mo_wpns_enable_comment_spam_blocking":
|
11 |
+
wpns_handle_comment_spam_blocking($_POST); break;
|
12 |
+
case "mo_wpns_enable_comment_recaptcha":
|
13 |
+
wpns_handle_comment_recaptcha($_POST); break;
|
14 |
+
case "mo_wpns_comment_recaptcha_settings":
|
15 |
+
wpns_save_comment_recaptcha($_POST); break;
|
16 |
+
}
|
17 |
+
}
|
18 |
+
|
19 |
+
|
20 |
+
$protect_wp_config = get_option('mo2f_protect_wp_config') ? "checked" : "";
|
21 |
+
$protect_wp_uploads = get_option('mo2f_prevent_directory_browsing') ? "checked" : "";
|
22 |
+
$disable_file_editing = get_option('mo2f_disable_file_editing') ? "checked" : "";
|
23 |
+
$comment_spam_protect = get_option('mo_wpns_enable_comment_spam_blocking') ? "checked" : "";
|
24 |
+
$enable_recaptcha = get_option('mo_wpns_enable_comment_recaptcha') ? "checked" : "";
|
25 |
+
$htaccess_file = get_option('mo2f_htaccess_file') ? "checked" : "";
|
26 |
+
$restAPI = get_site_option('mo2f_restrict_restAPI') ? "checked" : "";
|
27 |
+
$test_recaptcha_url = "";
|
28 |
+
$wp_config = site_url().'/wp-config.php';
|
29 |
+
$wp_uploads = get_site_url().'/wp-content/uploads';
|
30 |
+
$plugin_editor = get_site_url().'/wp-admin/plugin-editor.php';
|
31 |
+
$restAPI_link = rest_url().'wp'.DIRECTORY_SEPARATOR.'v2'.DIRECTORY_SEPARATOR.'users';
|
32 |
+
$restApiPlugin = 'https:'.DIRECTORY_SEPARATOR.DIRECTORY_SEPARATOR.'www.wordpress.org'.DIRECTORY_SEPARATOR.'plugins'.DIRECTORY_SEPARATOR.'wp-rest-api-authentication';
|
33 |
+
if($enable_recaptcha)
|
34 |
+
{
|
35 |
+
$test_recaptcha_url = add_query_arg( array('option'=>'testrecaptchaconfig'), $_SERVER['REQUEST_URI'] );
|
36 |
+
$captcha_site_key = get_option('mo_wpns_recaptcha_site_key' );
|
37 |
+
$captcha_secret_key = get_option('mo_wpns_recaptcha_secret_key');
|
38 |
+
}
|
39 |
+
|
40 |
+
include $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'content-protection.php';
|
41 |
+
|
42 |
+
/* CONTENT PROTECTION FUNCTIONS */
|
43 |
+
|
44 |
+
//Function to save content protection settings
|
45 |
+
function wpns_handle_content_protection()
|
46 |
+
{
|
47 |
+
isset($_POST['protect_wp_config']) ? update_option('mo2f_protect_wp_config' , $_POST['protect_wp_config']) : update_option('mo2f_protect_wp_config' ,0);
|
48 |
+
isset($_POST['prevent_directory_browsing']) ? update_option('mo2f_prevent_directory_browsing', $_POST['prevent_directory_browsing']): update_option('mo2f_prevent_directory_browsing',0);
|
49 |
+
isset($_POST['disable_file_editing']) ? update_option('mo2f_disable_file_editing' , $_POST['disable_file_editing']) : update_option('mo2f_disable_file_editing' ,0);
|
50 |
+
isset($_POST['mo2f_htaccess_file']) ? update_option('mo2f_htaccess_file' , $_POST['mo2f_htaccess_file']) : update_option('mo2f_htaccess_file',0);
|
51 |
+
if(isset($_POST['restrictAPI'])){
|
52 |
+
update_site_option('mo2f_restrict_restAPI', 1);
|
53 |
+
}
|
54 |
+
else{
|
55 |
+
update_site_option('mo2f_restrict_restAPI',0);
|
56 |
+
}
|
57 |
+
|
58 |
+
|
59 |
+
|
60 |
+
|
61 |
+
$mo_wpns_htaccess_handler = new MoWpnsHandler();
|
62 |
+
$mo_wpns_htaccess_handler->update_htaccess_configuration();
|
63 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('CONTENT_PROTECTION_ENABLED'),'SUCCESS');
|
64 |
+
}
|
65 |
+
|
66 |
+
|
67 |
+
//Function to handle comment spam blocking
|
68 |
+
function wpns_handle_comment_spam_blocking($postvalue)
|
69 |
+
{
|
70 |
+
$enable = isset($postvalue['mo_wpns_enable_comment_spam_blocking']) ? true : false;
|
71 |
+
update_option('mo_wpns_enable_comment_spam_blocking', $enable);
|
72 |
+
if($enable)
|
73 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('CONTENT_SPAM_BLOCKING'),'SUCCESS');
|
74 |
+
else
|
75 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('CONTENT_SPAM_BLOCKING_DISABLED'),'ERROR');
|
76 |
+
}
|
77 |
+
|
78 |
+
|
79 |
+
//Function to handle reCAPTCHA for comments
|
80 |
+
function wpns_handle_comment_recaptcha($postvalue)
|
81 |
+
{
|
82 |
+
$enable = isset($postvalue['mo_wpns_enable_comment_recaptcha']) ? true : false;
|
83 |
+
update_option('mo_wpns_enable_comment_recaptcha', $enable);
|
84 |
+
if($enable)
|
85 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('CONTENT_RECAPTCHA'),'SUCCESS');
|
86 |
+
else
|
87 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('CONTENT_RECAPTCHA_DISABLED'),'ERROR');
|
88 |
+
}
|
89 |
+
|
90 |
+
function wpns_save_comment_recaptcha($postvalue){
|
91 |
+
update_option('mo_wpns_recaptcha_site_key', $postvalue['mo_wpns_recaptcha_site_key']);
|
92 |
+
update_option('mo_wpns_recaptcha_secret_key', $postvalue['mo_wpns_recaptcha_secret_key']);
|
93 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('RECAPTCHA_ENABLED'),'SUCCESS');
|
94 |
}
|
controllers/dashboard_ajax.php
CHANGED
@@ -1,211 +1,211 @@
|
|
1 |
-
<?php
|
2 |
-
class Mo2f_ajax_dashboard
|
3 |
-
{
|
4 |
-
function __construct(){
|
5 |
-
add_action( 'admin_init' , array( $this, 'mo2f_switch_functions' ) );
|
6 |
-
}
|
7 |
-
|
8 |
-
public function mo2f_switch_functions(){
|
9 |
-
if(isset($_POST) && isset($_POST['option'])){
|
10 |
-
$tab_count= get_site_option('mo2f_tab_count', 0);
|
11 |
-
if($tab_count == 5)
|
12 |
-
update_site_option('mo_2f_switch_all', 1);
|
13 |
-
else if($tab_count == 0)
|
14 |
-
update_site_option('mo_2f_switch_all', 0);
|
15 |
-
$santizied_post=isset($_POST['switch_val'])? sanitize_text_field($_POST['switch_val']):null;
|
16 |
-
switch($_POST['option'])
|
17 |
-
{
|
18 |
-
case "tab_all_switch":
|
19 |
-
$this->mo2f_handle_all_enable($santizied_post);
|
20 |
-
break;
|
21 |
-
case "tab_2fa_switch":
|
22 |
-
$this->mo2f_handle_2fa_enable($santizied_post);
|
23 |
-
break;
|
24 |
-
case "tab_waf_switch":
|
25 |
-
$this->mo2f_handle_waf_enable($santizied_post);
|
26 |
-
break;
|
27 |
-
case "tab_login_switch":
|
28 |
-
$this->mo2f_handle_login_enable($santizied_post);
|
29 |
-
break;
|
30 |
-
case "tab_backup_switch":
|
31 |
-
$this->mo2f_handle_backup_enable($santizied_post);
|
32 |
-
break;
|
33 |
-
case "tab_malware_switch":
|
34 |
-
$this->mo2f_handle_malware_enable($santizied_post);
|
35 |
-
break;
|
36 |
-
case "tab_block_switch":
|
37 |
-
$this->mo2f_handle_block_enable($santizied_post);
|
38 |
-
break;
|
39 |
-
|
40 |
-
}
|
41 |
-
}
|
42 |
-
}
|
43 |
-
|
44 |
-
public function mo2f_handle_all_enable($POSTED){
|
45 |
-
$this->mo2f_handle_waf_enable($POSTED);
|
46 |
-
$this->mo2f_handle_login_enable($POSTED);
|
47 |
-
$this->mo2f_handle_backup_enable($POSTED);
|
48 |
-
$this->mo2f_handle_malware_enable($POSTED);
|
49 |
-
$this->mo2f_handle_block_enable($POSTED);
|
50 |
-
if($POSTED){
|
51 |
-
update_option('mo_2f_switch_all',1);
|
52 |
-
update_site_option('mo2f_tab_count', 5);
|
53 |
-
do_action('wpns_show_message',MoWpnsMessages::showMessage('ALL_ENABLED'),'SUCCESS');
|
54 |
-
}
|
55 |
-
else{
|
56 |
-
update_option('mo_2f_switch_all', 0);
|
57 |
-
update_site_option('mo2f_tab_count', 0);
|
58 |
-
do_action('wpns_show_message',MoWpnsMessages::showMessage('ALL_DISABLED'),'ERROR');
|
59 |
-
}
|
60 |
-
}
|
61 |
-
|
62 |
-
public function mo2f_handle_2fa_enable($POSTED){
|
63 |
-
global $Mo2fdbQueries;
|
64 |
-
$user= wp_get_current_user();
|
65 |
-
$user_id= $user->user_ID;
|
66 |
-
if($POSTED){
|
67 |
-
$Mo2fdbQueries->update_user_deails($user_id, array('mo_2factor_user_registration_status', 'MO_2_FACTOR_PLUGIN_SETTINGS'));
|
68 |
-
if($_POST['tab_2fa_switch'])
|
69 |
-
do_action('wpns_show_message',MoWpnsMessages::showMessage('TWO_FACTOR_ENABLE'),'SUCCESS');
|
70 |
-
}
|
71 |
-
else{
|
72 |
-
$Mo2fdbQueries->update_user_deails($user_id, array('mo_2factor_user_registration_status', 0));
|
73 |
-
if($_POST['tab_2fa_switch'])
|
74 |
-
do_action('wpns_show_message',MoWpnsMessages::showMessage('TWO_FACTOR_DISABLE'),'ERROR');
|
75 |
-
}
|
76 |
-
}
|
77 |
-
|
78 |
-
public function mo2f_handle_waf_enable($POSTED){
|
79 |
-
if($POSTED){
|
80 |
-
update_site_option('mo_2f_switch_waf', 1);
|
81 |
-
update_site_option('mo2f_tab_count', get_site_option('mo2f_tab_count')+1);
|
82 |
-
if (isset($_POST['option'] ))
|
83 |
-
{
|
84 |
-
if($_POST['option'] == 'tab_waf_switch')
|
85 |
-
{
|
86 |
-
do_action('wpns_show_message',MoWpnsMessages::showMessage('WAF_ENABLE'),'SUCCESS');
|
87 |
-
}
|
88 |
-
}
|
89 |
-
}
|
90 |
-
else{
|
91 |
-
update_site_option('mo_2f_switch_waf', 0);
|
92 |
-
update_site_option('mo2f_tab_count', get_site_option('mo2f_tab_count')-1);
|
93 |
-
update_site_option('WAFEnabled', 0);
|
94 |
-
update_site_option('WAF','wafDisable');
|
95 |
-
update_site_option('Rate_limiting', 0);
|
96 |
-
$dir_name = dirname(dirname(dirname(dirname(dirname(__FILE__)))));
|
97 |
-
$dir_name1 = $dir_name.DIRECTORY_SEPARATOR.'.htaccess';
|
98 |
-
$filePath = $dir_name.DIRECTORY_SEPARATOR.'mo-check.php';
|
99 |
-
$filePath = str_replace('\\', '/', $filePath);
|
100 |
-
$file = file_get_contents($dir_name1);
|
101 |
-
$cont = PHP_EOL.'# BEGIN miniOrange WAF'.PHP_EOL;
|
102 |
-
$cont .= 'php_value auto_prepend_file '.$filePath.PHP_EOL;
|
103 |
-
$cont .= '# END miniOrange WAF'.PHP_EOL;
|
104 |
-
$file =str_replace($cont,'',$file);
|
105 |
-
file_put_contents($dir_name1, $file);
|
106 |
-
if($_POST['option'] == 'tab_waf_switch')
|
107 |
-
do_action('wpns_show_message',MoWpnsMessages::showMessage('WAF_DISABLE'),'ERROR');
|
108 |
-
}
|
109 |
-
}
|
110 |
-
|
111 |
-
public function mo2f_handle_login_enable($POSTED){
|
112 |
-
if($POSTED){
|
113 |
-
update_site_option('mo_2f_switch_loginspam', 1);
|
114 |
-
update_site_option('mo2f_tab_count', get_site_option('mo2f_tab_count')+1);
|
115 |
-
if (isset($_POST['option'] ))
|
116 |
-
{
|
117 |
-
if($_POST['option'] == 'tab_login_switch')
|
118 |
-
do_action('wpns_show_message',MoWpnsMessages::showMessage('LOGIN_ENABLE'),'SUCCESS');
|
119 |
-
}
|
120 |
-
}
|
121 |
-
else{
|
122 |
-
update_site_option('mo_2f_switch_loginspam', 0);
|
123 |
-
update_site_option('mo2f_tab_count', get_site_option('mo2f_tab_count')-1);
|
124 |
-
update_site_option('mo2f_enable_brute_force', false);
|
125 |
-
update_site_option('mo_wpns_activate_recaptcha', false);
|
126 |
-
update_site_option('mo_wpns_activate_recaptcha_for_login', false);
|
127 |
-
update_site_option('mo_wpns_activate_recaptcha_for_woocommerce_login', false);
|
128 |
-
update_site_option('mo_wpns_activate_recaptcha_for_registration', false);
|
129 |
-
update_site_option('mo_wpns_activate_recaptcha_for_woocommerce_registration', false);
|
130 |
-
update_site_option('mo2f_enforce_strong_passswords', 0);
|
131 |
-
update_site_option('mo_wpns_enable_fake_domain_blocking', false);
|
132 |
-
update_site_option('mo_wpns_enable_advanced_user_verification', false);
|
133 |
-
update_site_option('mo_wpns_enable_social_integration', false);
|
134 |
-
update_site_option('mo2f_protect_wp_config', 0);
|
135 |
-
update_site_option('mo2f_prevent_directory_browsing', 0);
|
136 |
-
update_site_option('mo2f_disable_file_editing', 0);
|
137 |
-
update_site_option('mo_wpns_enable_comment_spam_blocking', false);
|
138 |
-
update_site_option('mo_wpns_enable_comment_recaptcha', false);
|
139 |
-
update_site_option('mo2f_htaccess_file', 0);
|
140 |
-
if($_POST['option'] == 'tab_login_switch')
|
141 |
-
do_action('wpns_show_message',MoWpnsMessages::showMessage('LOGIN_DISABLE'),'ERROR');
|
142 |
-
}
|
143 |
-
}
|
144 |
-
|
145 |
-
public function mo2f_handle_backup_enable($POSTED){
|
146 |
-
if($POSTED){
|
147 |
-
update_site_option('mo_2f_switch_backup', 1);
|
148 |
-
update_site_option('mo2f_tab_count', get_site_option('mo2f_tab_count')+1);
|
149 |
-
if (isset($_POST['option'] ))
|
150 |
-
{
|
151 |
-
if($_POST['option'] == 'tab_backup_switch')
|
152 |
-
do_action('wpns_show_message',MoWpnsMessages::showMessage('BACKUP_ENABLE'),'SUCCESS');
|
153 |
-
}
|
154 |
-
}
|
155 |
-
else{
|
156 |
-
update_site_option('mo_2f_switch_backup', 0);
|
157 |
-
update_site_option('mo2f_tab_count', get_site_option('mo2f_tab_count')-1);
|
158 |
-
$handler_obj = new MoBackupSite;
|
159 |
-
$handler_obj->bl_deactivate();
|
160 |
-
update_site_option('mo2f_enable_cron_backup', 0);
|
161 |
-
$handler_obj->file_backup_deactivate();
|
162 |
-
update_site_option('mo2f_enable_cron_file_backup', 0);
|
163 |
-
if($_POST['option'] == 'tab_backup_switch')
|
164 |
-
do_action('wpns_show_message',MoWpnsMessages::showMessage('BACKUP_DISABLE'),'ERROR');
|
165 |
-
}
|
166 |
-
}
|
167 |
-
|
168 |
-
public function mo2f_handle_malware_enable($POSTED){
|
169 |
-
if($POSTED){
|
170 |
-
update_site_option('mo_2f_switch_malware', 1);
|
171 |
-
update_site_option('mo2f_tab_count', get_site_option('mo2f_tab_count')+1);
|
172 |
-
if (isset($_POST['option'] ))
|
173 |
-
{
|
174 |
-
if($_POST['option'] == 'tab_malware_switch')
|
175 |
-
do_action('wpns_show_message',MoWpnsMessages::showMessage('MALWARE_ENABLE'),'SUCCESS');
|
176 |
-
}
|
177 |
-
}else{
|
178 |
-
update_site_option('mo_2f_switch_malware', 0);
|
179 |
-
update_site_option('mo2f_tab_count', get_site_option('mo2f_tab_count')-1);
|
180 |
-
if($_POST['option'] == 'tab_malware_switch')
|
181 |
-
do_action('wpns_show_message',MoWpnsMessages::showMessage('MALWARE_DISABLE'),'ERROR');
|
182 |
-
}
|
183 |
-
}
|
184 |
-
|
185 |
-
public function mo2f_handle_block_enable($POSTED){
|
186 |
-
if($POSTED){
|
187 |
-
update_site_option('mo_2f_switch_adv_block', 1);
|
188 |
-
update_site_option('mo2f_tab_count', get_site_option('mo2f_tab_count')+1);
|
189 |
-
if (isset($_POST['option'] ))
|
190 |
-
{
|
191 |
-
if($_POST['option'] == 'tab_block_switch')
|
192 |
-
do_action('wpns_show_message',MoWpnsMessages::showMessage('ADV_BLOCK_ENABLE'),'SUCCESS');
|
193 |
-
}
|
194 |
-
}
|
195 |
-
else{
|
196 |
-
update_site_option('mo_2f_switch_adv_block', 0);
|
197 |
-
update_site_option('mo2f_tab_count', get_site_option('mo2f_tab_count')-1);
|
198 |
-
update_site_option('mo_wpns_iprange_count', 0);
|
199 |
-
update_site_option('mo_wpns_enable_htaccess_blocking', 0);
|
200 |
-
update_site_option('mo_wpns_enable_user_agent_blocking', 0);
|
201 |
-
update_site_option('mo_wpns_referrers', false);
|
202 |
-
update_site_option('mo_wpns_countrycodes', false);
|
203 |
-
if($_POST['option'] == 'tab_block_switch')
|
204 |
-
do_action('wpns_show_message',MoWpnsMessages::showMessage('ADV_BLOCK_DISABLE'),'ERROR');
|
205 |
-
}
|
206 |
-
}
|
207 |
-
|
208 |
-
|
209 |
-
}
|
210 |
-
new Mo2f_ajax_dashboard();
|
211 |
?>
|
1 |
+
<?php
|
2 |
+
class Mo2f_ajax_dashboard
|
3 |
+
{
|
4 |
+
function __construct(){
|
5 |
+
add_action( 'admin_init' , array( $this, 'mo2f_switch_functions' ) );
|
6 |
+
}
|
7 |
+
|
8 |
+
public function mo2f_switch_functions(){
|
9 |
+
if(isset($_POST) && isset($_POST['option'])){
|
10 |
+
$tab_count= get_site_option('mo2f_tab_count', 0);
|
11 |
+
if($tab_count == 5)
|
12 |
+
update_site_option('mo_2f_switch_all', 1);
|
13 |
+
else if($tab_count == 0)
|
14 |
+
update_site_option('mo_2f_switch_all', 0);
|
15 |
+
$santizied_post=isset($_POST['switch_val'])? sanitize_text_field($_POST['switch_val']):null;
|
16 |
+
switch($_POST['option'])
|
17 |
+
{
|
18 |
+
case "tab_all_switch":
|
19 |
+
$this->mo2f_handle_all_enable($santizied_post);
|
20 |
+
break;
|
21 |
+
case "tab_2fa_switch":
|
22 |
+
$this->mo2f_handle_2fa_enable($santizied_post);
|
23 |
+
break;
|
24 |
+
case "tab_waf_switch":
|
25 |
+
$this->mo2f_handle_waf_enable($santizied_post);
|
26 |
+
break;
|
27 |
+
case "tab_login_switch":
|
28 |
+
$this->mo2f_handle_login_enable($santizied_post);
|
29 |
+
break;
|
30 |
+
case "tab_backup_switch":
|
31 |
+
$this->mo2f_handle_backup_enable($santizied_post);
|
32 |
+
break;
|
33 |
+
case "tab_malware_switch":
|
34 |
+
$this->mo2f_handle_malware_enable($santizied_post);
|
35 |
+
break;
|
36 |
+
case "tab_block_switch":
|
37 |
+
$this->mo2f_handle_block_enable($santizied_post);
|
38 |
+
break;
|
39 |
+
|
40 |
+
}
|
41 |
+
}
|
42 |
+
}
|
43 |
+
|
44 |
+
public function mo2f_handle_all_enable($POSTED){
|
45 |
+
$this->mo2f_handle_waf_enable($POSTED);
|
46 |
+
$this->mo2f_handle_login_enable($POSTED);
|
47 |
+
$this->mo2f_handle_backup_enable($POSTED);
|
48 |
+
$this->mo2f_handle_malware_enable($POSTED);
|
49 |
+
$this->mo2f_handle_block_enable($POSTED);
|
50 |
+
if($POSTED){
|
51 |
+
update_option('mo_2f_switch_all',1);
|
52 |
+
update_site_option('mo2f_tab_count', 5);
|
53 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('ALL_ENABLED'),'SUCCESS');
|
54 |
+
}
|
55 |
+
else{
|
56 |
+
update_option('mo_2f_switch_all', 0);
|
57 |
+
update_site_option('mo2f_tab_count', 0);
|
58 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('ALL_DISABLED'),'ERROR');
|
59 |
+
}
|
60 |
+
}
|
61 |
+
|
62 |
+
public function mo2f_handle_2fa_enable($POSTED){
|
63 |
+
global $Mo2fdbQueries;
|
64 |
+
$user= wp_get_current_user();
|
65 |
+
$user_id= $user->user_ID;
|
66 |
+
if($POSTED){
|
67 |
+
$Mo2fdbQueries->update_user_deails($user_id, array('mo_2factor_user_registration_status', 'MO_2_FACTOR_PLUGIN_SETTINGS'));
|
68 |
+
if($_POST['tab_2fa_switch'])
|
69 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('TWO_FACTOR_ENABLE'),'SUCCESS');
|
70 |
+
}
|
71 |
+
else{
|
72 |
+
$Mo2fdbQueries->update_user_deails($user_id, array('mo_2factor_user_registration_status', 0));
|
73 |
+
if($_POST['tab_2fa_switch'])
|
74 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('TWO_FACTOR_DISABLE'),'ERROR');
|
75 |
+
}
|
76 |
+
}
|
77 |
+
|
78 |
+
public function mo2f_handle_waf_enable($POSTED){
|
79 |
+
if($POSTED){
|
80 |
+
update_site_option('mo_2f_switch_waf', 1);
|
81 |
+
update_site_option('mo2f_tab_count', get_site_option('mo2f_tab_count')+1);
|
82 |
+
if (isset($_POST['option'] ))
|
83 |
+
{
|
84 |
+
if($_POST['option'] == 'tab_waf_switch')
|
85 |
+
{
|
86 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('WAF_ENABLE'),'SUCCESS');
|
87 |
+
}
|
88 |
+
}
|
89 |
+
}
|
90 |
+
else{
|
91 |
+
update_site_option('mo_2f_switch_waf', 0);
|
92 |
+
update_site_option('mo2f_tab_count', get_site_option('mo2f_tab_count')-1);
|
93 |
+
update_site_option('WAFEnabled', 0);
|
94 |
+
update_site_option('WAF','wafDisable');
|
95 |
+
update_site_option('Rate_limiting', 0);
|
96 |
+
$dir_name = dirname(dirname(dirname(dirname(dirname(__FILE__)))));
|
97 |
+
$dir_name1 = $dir_name.DIRECTORY_SEPARATOR.'.htaccess';
|
98 |
+
$filePath = $dir_name.DIRECTORY_SEPARATOR.'mo-check.php';
|
99 |
+
$filePath = str_replace('\\', '/', $filePath);
|
100 |
+
$file = file_get_contents($dir_name1);
|
101 |
+
$cont = PHP_EOL.'# BEGIN miniOrange WAF'.PHP_EOL;
|
102 |
+
$cont .= 'php_value auto_prepend_file '.$filePath.PHP_EOL;
|
103 |
+
$cont .= '# END miniOrange WAF'.PHP_EOL;
|
104 |
+
$file =str_replace($cont,'',$file);
|
105 |
+
file_put_contents($dir_name1, $file);
|
106 |
+
if($_POST['option'] == 'tab_waf_switch')
|
107 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('WAF_DISABLE'),'ERROR');
|
108 |
+
}
|
109 |
+
}
|
110 |
+
|
111 |
+
public function mo2f_handle_login_enable($POSTED){
|
112 |
+
if($POSTED){
|
113 |
+
update_site_option('mo_2f_switch_loginspam', 1);
|
114 |
+
update_site_option('mo2f_tab_count', get_site_option('mo2f_tab_count')+1);
|
115 |
+
if (isset($_POST['option'] ))
|
116 |
+
{
|
117 |
+
if($_POST['option'] == 'tab_login_switch')
|
118 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('LOGIN_ENABLE'),'SUCCESS');
|
119 |
+
}
|
120 |
+
}
|
121 |
+
else{
|
122 |
+
update_site_option('mo_2f_switch_loginspam', 0);
|
123 |
+
update_site_option('mo2f_tab_count', get_site_option('mo2f_tab_count')-1);
|
124 |
+
update_site_option('mo2f_enable_brute_force', false);
|
125 |
+
update_site_option('mo_wpns_activate_recaptcha', false);
|
126 |
+
update_site_option('mo_wpns_activate_recaptcha_for_login', false);
|
127 |
+
update_site_option('mo_wpns_activate_recaptcha_for_woocommerce_login', false);
|
128 |
+
update_site_option('mo_wpns_activate_recaptcha_for_registration', false);
|
129 |
+
update_site_option('mo_wpns_activate_recaptcha_for_woocommerce_registration', false);
|
130 |
+
update_site_option('mo2f_enforce_strong_passswords', 0);
|
131 |
+
update_site_option('mo_wpns_enable_fake_domain_blocking', false);
|
132 |
+
update_site_option('mo_wpns_enable_advanced_user_verification', false);
|
133 |
+
update_site_option('mo_wpns_enable_social_integration', false);
|
134 |
+
update_site_option('mo2f_protect_wp_config', 0);
|
135 |
+
update_site_option('mo2f_prevent_directory_browsing', 0);
|
136 |
+
update_site_option('mo2f_disable_file_editing', 0);
|
137 |
+
update_site_option('mo_wpns_enable_comment_spam_blocking', false);
|
138 |
+
update_site_option('mo_wpns_enable_comment_recaptcha', false);
|
139 |
+
update_site_option('mo2f_htaccess_file', 0);
|
140 |
+
if($_POST['option'] == 'tab_login_switch')
|
141 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('LOGIN_DISABLE'),'ERROR');
|
142 |
+
}
|
143 |
+
}
|
144 |
+
|
145 |
+
public function mo2f_handle_backup_enable($POSTED){
|
146 |
+
if($POSTED){
|
147 |
+
update_site_option('mo_2f_switch_backup', 1);
|
148 |
+
update_site_option('mo2f_tab_count', get_site_option('mo2f_tab_count')+1);
|
149 |
+
if (isset($_POST['option'] ))
|
150 |
+
{
|
151 |
+
if($_POST['option'] == 'tab_backup_switch')
|
152 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('BACKUP_ENABLE'),'SUCCESS');
|
153 |
+
}
|
154 |
+
}
|
155 |
+
else{
|
156 |
+
update_site_option('mo_2f_switch_backup', 0);
|
157 |
+
update_site_option('mo2f_tab_count', get_site_option('mo2f_tab_count')-1);
|
158 |
+
$handler_obj = new MoBackupSite;
|
159 |
+
$handler_obj->bl_deactivate();
|
160 |
+
update_site_option('mo2f_enable_cron_backup', 0);
|
161 |
+
$handler_obj->file_backup_deactivate();
|
162 |
+
update_site_option('mo2f_enable_cron_file_backup', 0);
|
163 |
+
if($_POST['option'] == 'tab_backup_switch')
|
164 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('BACKUP_DISABLE'),'ERROR');
|
165 |
+
}
|
166 |
+
}
|
167 |
+
|
168 |
+
public function mo2f_handle_malware_enable($POSTED){
|
169 |
+
if($POSTED){
|
170 |
+
update_site_option('mo_2f_switch_malware', 1);
|
171 |
+
update_site_option('mo2f_tab_count', get_site_option('mo2f_tab_count')+1);
|
172 |
+
if (isset($_POST['option'] ))
|
173 |
+
{
|
174 |
+
if($_POST['option'] == 'tab_malware_switch')
|
175 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('MALWARE_ENABLE'),'SUCCESS');
|
176 |
+
}
|
177 |
+
}else{
|
178 |
+
update_site_option('mo_2f_switch_malware', 0);
|
179 |
+
update_site_option('mo2f_tab_count', get_site_option('mo2f_tab_count')-1);
|
180 |
+
if($_POST['option'] == 'tab_malware_switch')
|
181 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('MALWARE_DISABLE'),'ERROR');
|
182 |
+
}
|
183 |
+
}
|
184 |
+
|
185 |
+
public function mo2f_handle_block_enable($POSTED){
|
186 |
+
if($POSTED){
|
187 |
+
update_site_option('mo_2f_switch_adv_block', 1);
|
188 |
+
update_site_option('mo2f_tab_count', get_site_option('mo2f_tab_count')+1);
|
189 |
+
if (isset($_POST['option'] ))
|
190 |
+
{
|
191 |
+
if($_POST['option'] == 'tab_block_switch')
|
192 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('ADV_BLOCK_ENABLE'),'SUCCESS');
|
193 |
+
}
|
194 |
+
}
|
195 |
+
else{
|
196 |
+
update_site_option('mo_2f_switch_adv_block', 0);
|
197 |
+
update_site_option('mo2f_tab_count', get_site_option('mo2f_tab_count')-1);
|
198 |
+
update_site_option('mo_wpns_iprange_count', 0);
|
199 |
+
update_site_option('mo_wpns_enable_htaccess_blocking', 0);
|
200 |
+
update_site_option('mo_wpns_enable_user_agent_blocking', 0);
|
201 |
+
update_site_option('mo_wpns_referrers', false);
|
202 |
+
update_site_option('mo_wpns_countrycodes', false);
|
203 |
+
if($_POST['option'] == 'tab_block_switch')
|
204 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('ADV_BLOCK_DISABLE'),'ERROR');
|
205 |
+
}
|
206 |
+
}
|
207 |
+
|
208 |
+
|
209 |
+
}
|
210 |
+
new Mo2f_ajax_dashboard();
|
211 |
?>
|
controllers/feedback_footer.php
CHANGED
@@ -1,47 +1,47 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
global $moWpnsUtility,$mo2f_dirName;
|
4 |
-
|
5 |
-
if(current_user_can( 'manage_options' ) && isset($_POST['option']))
|
6 |
-
{
|
7 |
-
switch($_POST['option'])
|
8 |
-
{
|
9 |
-
case "mo_wpns_send_query":
|
10 |
-
wpns_handle_feedback_footer_form($_POST['query_email'],$_POST['query'],$_POST['query_phone']); break;
|
11 |
-
}
|
12 |
-
}
|
13 |
-
|
14 |
-
$current_user = wp_get_current_user();
|
15 |
-
$email = get_option("mo2f_email");
|
16 |
-
$phone = get_option("mo_wpns_admin_phone");
|
17 |
-
|
18 |
-
|
19 |
-
/* SUPPORT FORM RELATED FUNCTIONS */
|
20 |
-
|
21 |
-
//Function to handle support form submit
|
22 |
-
function wpns_handle_feedback_footer_form($email,$query,$phone)
|
23 |
-
{
|
24 |
-
|
25 |
-
if( empty($email) || empty($query) )
|
26 |
-
{
|
27 |
-
do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_VALUES'),'SUCCESS');
|
28 |
-
return;
|
29 |
-
}
|
30 |
-
|
31 |
-
|
32 |
-
$query = sanitize_text_field( $query );
|
33 |
-
$email = sanitize_text_field( $email );
|
34 |
-
$phone = sanitize_text_field( $phone );
|
35 |
-
$contact_us = new MocURL();
|
36 |
-
$submited = json_decode($contact_us->submit_contact_us($email, $phone, $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 |
-
|
44 |
-
do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_ERROR'),'ERROR');
|
45 |
-
}
|
46 |
-
|
47 |
include $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'feedback_footer.php';
|
1 |
+
<?php
|
2 |
+
|
3 |
+
global $moWpnsUtility,$mo2f_dirName;
|
4 |
+
|
5 |
+
if(current_user_can( 'manage_options' ) && isset($_POST['option']))
|
6 |
+
{
|
7 |
+
switch($_POST['option'])
|
8 |
+
{
|
9 |
+
case "mo_wpns_send_query":
|
10 |
+
wpns_handle_feedback_footer_form($_POST['query_email'],$_POST['query'],$_POST['query_phone']); break;
|
11 |
+
}
|
12 |
+
}
|
13 |
+
|
14 |
+
$current_user = wp_get_current_user();
|
15 |
+
$email = get_option("mo2f_email");
|
16 |
+
$phone = get_option("mo_wpns_admin_phone");
|
17 |
+
|
18 |
+
|
19 |
+
/* SUPPORT FORM RELATED FUNCTIONS */
|
20 |
+
|
21 |
+
//Function to handle support form submit
|
22 |
+
function wpns_handle_feedback_footer_form($email,$query,$phone)
|
23 |
+
{
|
24 |
+
|
25 |
+
if( empty($email) || empty($query) )
|
26 |
+
{
|
27 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_VALUES'),'SUCCESS');
|
28 |
+
return;
|
29 |
+
}
|
30 |
+
|
31 |
+
|
32 |
+
$query = sanitize_text_field( $query );
|
33 |
+
$email = sanitize_text_field( $email );
|
34 |
+
$phone = sanitize_text_field( $phone );
|
35 |
+
$contact_us = new MocURL();
|
36 |
+
$submited = json_decode($contact_us->submit_contact_us($email, $phone, $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 |
+
|
44 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_ERROR'),'ERROR');
|
45 |
+
}
|
46 |
+
|
47 |
include $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'feedback_footer.php';
|
controllers/licensing.php
CHANGED
@@ -1,50 +1,50 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
global $moWpnsUtility,$mo2f_dirName;
|
4 |
-
|
5 |
-
$default_url = add_query_arg( array('page' => 'default' ), $_SERVER['REQUEST_URI'] );
|
6 |
-
$form_action = MoWpnsConstants::HOST_NAME.'/moas/login';
|
7 |
-
$admin_email = get_option('mo2f_email');
|
8 |
-
$redirect_url = MoWpnsConstants::HOST_NAME .'/moas/initializepayment';
|
9 |
-
|
10 |
-
$basic_plan_price = '$9 / year';
|
11 |
-
$premium_plan_price = '$9 / year + One Time Setup Fees';
|
12 |
-
|
13 |
-
|
14 |
-
$basic_plan_features= array(
|
15 |
-
"Brute Force Protection ( Login Security and Monitoring - Limit Login Attempts and track user logins. )",
|
16 |
-
"User Registration Security - Disallow Disposable / Fake email addresses",
|
17 |
-
"IP Blocking:(manual and automatic) [Blaclisting and whitelisting included",
|
18 |
-
"Advanced Blocking based on: IP range",
|
19 |
-
"Protection for WP files",
|
20 |
-
"Security Log - Logs Blocked IPs, Spammers, Bots, HTTP 404,403 and 400 logging",
|
21 |
-
"Database Backup",
|
22 |
-
"Google reCAPTCHA",
|
23 |
-
"Password protection - Enforce Strong Password : Check Password strength for all users",
|
24 |
-
"Mobile authentication based on QR code, OTP over SMS and email, Push, Soft token (15+ methods to choose from)<br>For Unlimited Users",
|
25 |
-
"Advanced activity logs auditing and reporting",
|
26 |
-
"Risk based access - Contextual authentication based on device, location, time of access and user behavior",
|
27 |
-
"Advanced User Verification",
|
28 |
-
"Social Login Integration",
|
29 |
-
""
|
30 |
-
);
|
31 |
-
|
32 |
-
$premium_plan_features= array(
|
33 |
-
"Brute Force Protection ( Login Security and Monitoring - Limit Login Attempts and track user logins. )",
|
34 |
-
"User Registration Security - Disallow Disposable / Fake email addresses",
|
35 |
-
"IP Blocking:(manual and automatic) [Blaclisting and whitelisting included",
|
36 |
-
"Advanced Blocking based on: IP range",
|
37 |
-
"Protection for WP files",
|
38 |
-
"Security Log - Logs Blocked IPs, Spammers, Bots, HTTP 404,403 and 400 logging",
|
39 |
-
"Database Backup",
|
40 |
-
"Google reCAPTCHA",
|
41 |
-
"Password protection - Enforce Strong Password : Check Password strength for all users",
|
42 |
-
"Mobile authentication based on QR code, OTP over SMS and email, Push, Soft token (15+ methods to choose from)<br>For Unlimited Users",
|
43 |
-
"Advanced activity logs auditing and reporting",
|
44 |
-
"Risk based access - Contextual authentication based on device, location, time of access and user behavior",
|
45 |
-
"Advanced User Verification",
|
46 |
-
"Social Login Integration",
|
47 |
-
'End to End Integration Support'
|
48 |
-
);
|
49 |
-
|
50 |
include $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'licensing.php';
|
1 |
+
<?php
|
2 |
+
|
3 |
+
global $moWpnsUtility,$mo2f_dirName;
|
4 |
+
|
5 |
+
$default_url = add_query_arg( array('page' => 'default' ), $_SERVER['REQUEST_URI'] );
|
6 |
+
$form_action = MoWpnsConstants::HOST_NAME.'/moas/login';
|
7 |
+
$admin_email = get_option('mo2f_email');
|
8 |
+
$redirect_url = MoWpnsConstants::HOST_NAME .'/moas/initializepayment';
|
9 |
+
|
10 |
+
$basic_plan_price = '$9 / year';
|
11 |
+
$premium_plan_price = '$9 / year + One Time Setup Fees';
|
12 |
+
|
13 |
+
|
14 |
+
$basic_plan_features= array(
|
15 |
+
"Brute Force Protection ( Login Security and Monitoring - Limit Login Attempts and track user logins. )",
|
16 |
+
"User Registration Security - Disallow Disposable / Fake email addresses",
|
17 |
+
"IP Blocking:(manual and automatic) [Blaclisting and whitelisting included",
|
18 |
+
"Advanced Blocking based on: IP range",
|
19 |
+
"Protection for WP files",
|
20 |
+
"Security Log - Logs Blocked IPs, Spammers, Bots, HTTP 404,403 and 400 logging",
|
21 |
+
"Database Backup",
|
22 |
+
"Google reCAPTCHA",
|
23 |
+
"Password protection - Enforce Strong Password : Check Password strength for all users",
|
24 |
+
"Mobile authentication based on QR code, OTP over SMS and email, Push, Soft token (15+ methods to choose from)<br>For Unlimited Users",
|
25 |
+
"Advanced activity logs auditing and reporting",
|
26 |
+
"Risk based access - Contextual authentication based on device, location, time of access and user behavior",
|
27 |
+
"Advanced User Verification",
|
28 |
+
"Social Login Integration",
|
29 |
+
""
|
30 |
+
);
|
31 |
+
|
32 |
+
$premium_plan_features= array(
|
33 |
+
"Brute Force Protection ( Login Security and Monitoring - Limit Login Attempts and track user logins. )",
|
34 |
+
"User Registration Security - Disallow Disposable / Fake email addresses",
|
35 |
+
"IP Blocking:(manual and automatic) [Blaclisting and whitelisting included",
|
36 |
+
"Advanced Blocking based on: IP range",
|
37 |
+
"Protection for WP files",
|
38 |
+
"Security Log - Logs Blocked IPs, Spammers, Bots, HTTP 404,403 and 400 logging",
|
39 |
+
"Database Backup",
|
40 |
+
"Google reCAPTCHA",
|
41 |
+
"Password protection - Enforce Strong Password : Check Password strength for all users",
|
42 |
+
"Mobile authentication based on QR code, OTP over SMS and email, Push, Soft token (15+ methods to choose from)<br>For Unlimited Users",
|
43 |
+
"Advanced activity logs auditing and reporting",
|
44 |
+
"Risk based access - Contextual authentication based on device, location, time of access and user behavior",
|
45 |
+
"Advanced User Verification",
|
46 |
+
"Social Login Integration",
|
47 |
+
'End to End Integration Support'
|
48 |
+
);
|
49 |
+
|
50 |
include $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'licensing.php';
|
controllers/login-security.php
CHANGED
@@ -41,12 +41,12 @@
|
|
41 |
$allwed_login_attempts = get_option('mo2f_allwed_login_attempts') ? get_option('mo2f_allwed_login_attempts') : 10;
|
42 |
$time_of_blocking_type = get_option('mo2f_time_of_blocking_type') ? get_option('mo2f_time_of_blocking_type') : "permanent";
|
43 |
$time_of_blocking_val = get_option('mo2f_time_of_blocking_val') ? get_option('mo2f_time_of_blocking_val') : 3;
|
44 |
-
$brute_force_enabled =
|
45 |
-
$remaining_attempts =
|
46 |
$slow_down_attacks = get_option('mo_wpns_slow_down_attacks') ? "checked" : "";
|
47 |
$enable_2fa = get_option('mo_wpns_enable_2fa') ? "checked" : "";
|
48 |
|
49 |
-
$enforce_strong_password=
|
50 |
$attack_delay = get_option('mo_wpns_slow_down_attacks_delay') ? get_option('mo_wpns_slow_down_attacks_delay'): 2 ;
|
51 |
$google_recaptcha = get_option('mo_wpns_activate_recaptcha') ? "checked" : "";
|
52 |
$test_recaptcha_url = "";
|
@@ -58,7 +58,7 @@
|
|
58 |
$captcha_reg = get_option('mo_wpns_activate_recaptcha_for_registration') ? "checked" : "";
|
59 |
|
60 |
|
61 |
-
$strong_password_account=
|
62 |
|
63 |
|
64 |
$mo2FAPlugin = new TwoFAPlugin();
|
41 |
$allwed_login_attempts = get_option('mo2f_allwed_login_attempts') ? get_option('mo2f_allwed_login_attempts') : 10;
|
42 |
$time_of_blocking_type = get_option('mo2f_time_of_blocking_type') ? get_option('mo2f_time_of_blocking_type') : "permanent";
|
43 |
$time_of_blocking_val = get_option('mo2f_time_of_blocking_val') ? get_option('mo2f_time_of_blocking_val') : 3;
|
44 |
+
$brute_force_enabled = MoWpnsUtility::get_mo2f_db_option('mo2f_enable_brute_force', 'get_option') ? "checked" : "";
|
45 |
+
$remaining_attempts = MoWpnsUtility::get_mo2f_db_option('mo2f_show_remaining_attempts', 'get_option') ? "checked" : "";
|
46 |
$slow_down_attacks = get_option('mo_wpns_slow_down_attacks') ? "checked" : "";
|
47 |
$enable_2fa = get_option('mo_wpns_enable_2fa') ? "checked" : "";
|
48 |
|
49 |
+
$enforce_strong_password= MoWpnsUtility::get_mo2f_db_option('mo2f_enforce_strong_passswords', 'get_option') ? "checked" : "";
|
50 |
$attack_delay = get_option('mo_wpns_slow_down_attacks_delay') ? get_option('mo_wpns_slow_down_attacks_delay'): 2 ;
|
51 |
$google_recaptcha = get_option('mo_wpns_activate_recaptcha') ? "checked" : "";
|
52 |
$test_recaptcha_url = "";
|
58 |
$captcha_reg = get_option('mo_wpns_activate_recaptcha_for_registration') ? "checked" : "";
|
59 |
|
60 |
|
61 |
+
$strong_password_account= MoWpnsUtility::get_mo2f_db_option('mo2f_enforce_strong_passswords_for_accounts', 'get_option') ? MoWpnsUtility::get_mo2f_db_option('mo2f_enforce_strong_passswords_for_accounts', 'get_option') : "all";
|
62 |
|
63 |
|
64 |
$mo2FAPlugin = new TwoFAPlugin();
|
controllers/main_controller.php
CHANGED
@@ -1,111 +1,111 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
global $moWpnsUtility,$mo2f_dirName;
|
4 |
-
|
5 |
-
$controller = $mo2f_dirName . 'controllers'.DIRECTORY_SEPARATOR;
|
6 |
-
|
7 |
-
|
8 |
-
if(current_user_can('administrator'))
|
9 |
-
{
|
10 |
-
include $controller . 'navbar.php';
|
11 |
-
include $controller . 'newtork_security_features.php';
|
12 |
-
|
13 |
-
$tour_started=get_option('mo2f_tour_started',0);
|
14 |
-
|
15 |
-
|
16 |
-
if($tour_started<1)
|
17 |
-
include $controller . 'two-fa-intro.php';
|
18 |
-
else if($tour_started != 0)
|
19 |
-
include $controller . 'tour-model.php';
|
20 |
-
|
21 |
-
if( isset( $_GET[ 'page' ]))
|
22 |
-
{
|
23 |
-
switch($_GET['page'])
|
24 |
-
{
|
25 |
-
case 'mo_2fa_dashboard':
|
26 |
-
include $controller . 'dashboard.php'; break;
|
27 |
-
case 'mo_2fa_login_and_spam':
|
28 |
-
include $controller . 'login-spam.php'; break;
|
29 |
-
case 'default':
|
30 |
-
include $controller . 'login-security.php'; break;
|
31 |
-
case 'mo_2fa_account':
|
32 |
-
include $controller . 'account.php'; break;
|
33 |
-
case 'mo_2fa_backup':
|
34 |
-
include $controller . 'backup'.DIRECTORY_SEPARATOR.'backup.php'; break;
|
35 |
-
case 'mo_2fa_upgrade':
|
36 |
-
include $controller . 'upgrade.php'; break;
|
37 |
-
case 'mo_2fa_waf':
|
38 |
-
include $controller . 'waf.php'; break;
|
39 |
-
case 'mo_2fa_blockedips':
|
40 |
-
include $controller . 'ip-blocking.php'; break;
|
41 |
-
case 'mo_2fa_advancedblocking':
|
42 |
-
include $controller . 'advanced-blocking.php'; break;
|
43 |
-
case 'mo_2fa_notifications':
|
44 |
-
include $controller . 'notification-settings.php'; break;
|
45 |
-
case 'mo_2fa_reports':
|
46 |
-
include $controller . 'reports.php'; break;
|
47 |
-
case 'mo_2fa_licensing':
|
48 |
-
include $controller . 'licensing.php'; break;
|
49 |
-
case 'mo_2fa_troubleshooting':
|
50 |
-
include $controller . 'troubleshooting.php'; break;
|
51 |
-
case 'mo_2fa_addons':
|
52 |
-
include $controller . 'addons.php'; break;
|
53 |
-
case 'mo_2fa_malwarescan':
|
54 |
-
include $controller . 'malware_scanner'.DIRECTORY_SEPARATOR.'scan_malware.php'; break;
|
55 |
-
case 'mo_2fa_two_fa':
|
56 |
-
include $controller .'twofa'.DIRECTORY_SEPARATOR. 'two_fa.php'; break;
|
57 |
-
case 'mo_2fa_request_demo':
|
58 |
-
include $controller . 'request_demo.php';
|
59 |
-
}
|
60 |
-
}
|
61 |
-
|
62 |
-
}
|
63 |
-
else
|
64 |
-
{
|
65 |
-
if( isset( $_GET[ 'page' ]))
|
66 |
-
{
|
67 |
-
switch($_GET['page'])
|
68 |
-
{
|
69 |
-
case 'mo_2fa_two_fa':
|
70 |
-
include $controller .'twofa'.DIRECTORY_SEPARATOR. 'two_fa.php'; break;
|
71 |
-
|
72 |
-
}
|
73 |
-
|
74 |
-
}
|
75 |
-
|
76 |
-
}
|
77 |
-
if (isset( $_GET[ 'page' ])) {
|
78 |
-
|
79 |
-
if ($_GET[ 'page' ] == "mo_2fa_upgrade" || $_GET[ 'page' ] == "mo_2fa_addons")
|
80 |
-
{
|
81 |
-
include $controller . 'feedback_footer.php';
|
82 |
-
}
|
83 |
-
else
|
84 |
-
{
|
85 |
-
include $controller . 'support.php';
|
86 |
-
}
|
87 |
-
}
|
88 |
-
?>
|
89 |
-
|
90 |
-
<!-- <script>
|
91 |
-
jQuery(document).ready(function(){
|
92 |
-
var nonce = "<?php //echo wp_create_nonce('wpns-quick-scan');?>";
|
93 |
-
var data={
|
94 |
-
'action':'mo_wpns_malware_redirect',
|
95 |
-
'call_type':'malware_scan_initiate',
|
96 |
-
'scan':'scan_start',
|
97 |
-
'scantype':'quick_scan',
|
98 |
-
'nonce': nonce
|
99 |
-
};
|
100 |
-
jQuery.post(ajaxurl, data, function(response){
|
101 |
-
jQuery('input[name="quick_scan_button"]').removeAttr('disabled');
|
102 |
-
document.getElementById('quick_scan_button').style.backgroundColor = '#20b2aa';
|
103 |
-
jQuery('input[name="standard_scan_button"]').removeAttr('disabled');
|
104 |
-
document.getElementById('standard_scan_button').style.backgroundColor = '#20b2aa';
|
105 |
-
jQuery('input[name="custom_scan_button"]').removeAttr('disabled');
|
106 |
-
document.getElementById('custom_scan_button').style.backgroundColor = '#20b2aa';
|
107 |
-
document.getElementById("quick_scan_button").value = "Quick Scan";
|
108 |
-
});
|
109 |
-
});
|
110 |
-
</script> -->
|
111 |
-
|
1 |
+
<?php
|
2 |
+
|
3 |
+
global $moWpnsUtility,$mo2f_dirName;
|
4 |
+
|
5 |
+
$controller = $mo2f_dirName . 'controllers'.DIRECTORY_SEPARATOR;
|
6 |
+
|
7 |
+
|
8 |
+
if(current_user_can('administrator'))
|
9 |
+
{
|
10 |
+
include $controller . 'navbar.php';
|
11 |
+
include $controller . 'newtork_security_features.php';
|
12 |
+
|
13 |
+
$tour_started=get_option('mo2f_tour_started',0);
|
14 |
+
|
15 |
+
|
16 |
+
if($tour_started<1)
|
17 |
+
include $controller . 'two-fa-intro.php';
|
18 |
+
else if($tour_started != 0)
|
19 |
+
include $controller . 'tour-model.php';
|
20 |
+
|
21 |
+
if( isset( $_GET[ 'page' ]))
|
22 |
+
{
|
23 |
+
switch($_GET['page'])
|
24 |
+
{
|
25 |
+
case 'mo_2fa_dashboard':
|
26 |
+
include $controller . 'dashboard.php'; break;
|
27 |
+
case 'mo_2fa_login_and_spam':
|
28 |
+
include $controller . 'login-spam.php'; break;
|
29 |
+
case 'default':
|
30 |
+
include $controller . 'login-security.php'; break;
|
31 |
+
case 'mo_2fa_account':
|
32 |
+
include $controller . 'account.php'; break;
|
33 |
+
case 'mo_2fa_backup':
|
34 |
+
include $controller . 'backup'.DIRECTORY_SEPARATOR.'backup.php'; break;
|
35 |
+
case 'mo_2fa_upgrade':
|
36 |
+
include $controller . 'upgrade.php'; break;
|
37 |
+
case 'mo_2fa_waf':
|
38 |
+
include $controller . 'waf.php'; break;
|
39 |
+
case 'mo_2fa_blockedips':
|
40 |
+
include $controller . 'ip-blocking.php'; break;
|
41 |
+
case 'mo_2fa_advancedblocking':
|
42 |
+
include $controller . 'advanced-blocking.php'; break;
|
43 |
+
case 'mo_2fa_notifications':
|
44 |
+
include $controller . 'notification-settings.php'; break;
|
45 |
+
case 'mo_2fa_reports':
|
46 |
+
include $controller . 'reports.php'; break;
|
47 |
+
case 'mo_2fa_licensing':
|
48 |
+
include $controller . 'licensing.php'; break;
|
49 |
+
case 'mo_2fa_troubleshooting':
|
50 |
+
include $controller . 'troubleshooting.php'; break;
|
51 |
+
case 'mo_2fa_addons':
|
52 |
+
include $controller . 'addons.php'; break;
|
53 |
+
case 'mo_2fa_malwarescan':
|
54 |
+
include $controller . 'malware_scanner'.DIRECTORY_SEPARATOR.'scan_malware.php'; break;
|
55 |
+
case 'mo_2fa_two_fa':
|
56 |
+
include $controller .'twofa'.DIRECTORY_SEPARATOR. 'two_fa.php'; break;
|
57 |
+
case 'mo_2fa_request_demo':
|
58 |
+
include $controller . 'request_demo.php';
|
59 |
+
}
|
60 |
+
}
|
61 |
+
|
62 |
+
}
|
63 |
+
else
|
64 |
+
{
|
65 |
+
if( isset( $_GET[ 'page' ]))
|
66 |
+
{
|
67 |
+
switch($_GET['page'])
|
68 |
+
{
|
69 |
+
case 'mo_2fa_two_fa':
|
70 |
+
include $controller .'twofa'.DIRECTORY_SEPARATOR. 'two_fa.php'; break;
|
71 |
+
|
72 |
+
}
|
73 |
+
|
74 |
+
}
|
75 |
+
|
76 |
+
}
|
77 |
+
if (isset( $_GET[ 'page' ])) {
|
78 |
+
|
79 |
+
if ($_GET[ 'page' ] == "mo_2fa_upgrade" || $_GET[ 'page' ] == "mo_2fa_addons")
|
80 |
+
{
|
81 |
+
include $controller . 'feedback_footer.php';
|
82 |
+
}
|
83 |
+
else
|
84 |
+
{
|
85 |
+
include $controller . 'support.php';
|
86 |
+
}
|
87 |
+
}
|
88 |
+
?>
|
89 |
+
|
90 |
+
<!-- <script>
|
91 |
+
jQuery(document).ready(function(){
|
92 |
+
var nonce = "<?php //echo wp_create_nonce('wpns-quick-scan');?>";
|
93 |
+
var data={
|
94 |
+
'action':'mo_wpns_malware_redirect',
|
95 |
+
'call_type':'malware_scan_initiate',
|
96 |
+
'scan':'scan_start',
|
97 |
+
'scantype':'quick_scan',
|
98 |
+
'nonce': nonce
|
99 |
+
};
|
100 |
+
jQuery.post(ajaxurl, data, function(response){
|
101 |
+
jQuery('input[name="quick_scan_button"]').removeAttr('disabled');
|
102 |
+
document.getElementById('quick_scan_button').style.backgroundColor = '#20b2aa';
|
103 |
+
jQuery('input[name="standard_scan_button"]').removeAttr('disabled');
|
104 |
+
document.getElementById('standard_scan_button').style.backgroundColor = '#20b2aa';
|
105 |
+
jQuery('input[name="custom_scan_button"]').removeAttr('disabled');
|
106 |
+
document.getElementById('custom_scan_button').style.backgroundColor = '#20b2aa';
|
107 |
+
document.getElementById("quick_scan_button").value = "Quick Scan";
|
108 |
+
});
|
109 |
+
});
|
110 |
+
</script> -->
|
111 |
+
|
controllers/malware_scanner/malware_scan_ajax.php
CHANGED
@@ -1,396 +1,396 @@
|
|
1 |
-
<?php
|
2 |
-
class Mo_wpns_scan_malware
|
3 |
-
{
|
4 |
-
function __construct(){
|
5 |
-
add_action( 'admin_init' , array( $this, 'mo_wpns_malware_scanner_functions' ) );
|
6 |
-
|
7 |
-
}
|
8 |
-
|
9 |
-
public function mo_wpns_malware_scanner_functions(){
|
10 |
-
add_action('wp_ajax_mo_wpns_malware_redirect', array( $this, 'mo_wpns_malware_redirect' ));
|
11 |
-
}
|
12 |
-
|
13 |
-
public function mo_wpns_malware_redirect(){
|
14 |
-
switch($_POST['call_type'])
|
15 |
-
{
|
16 |
-
case "submit_malware_settings_form":
|
17 |
-
$this->mo_wpns_save_malware_config_form($_POST);
|
18 |
-
break;
|
19 |
-
case "malware_scan_initiate":
|
20 |
-
$this->mo_wpns_start_malware_scan($_POST);
|
21 |
-
break;
|
22 |
-
case "wpns_enable_tour":
|
23 |
-
update_option('skip_tour', 0);
|
24 |
-
break;
|
25 |
-
case "wpns_disable_tour":
|
26 |
-
update_option('skip_tour', 1);
|
27 |
-
break;
|
28 |
-
case "malware_progress_bar":
|
29 |
-
$this->mo_wpns_get_progress();
|
30 |
-
break;
|
31 |
-
case "malware_scan_last_result":
|
32 |
-
$this->mo_wpns_get_scan_result();
|
33 |
-
break;
|
34 |
-
case "malware_scan_terminate":
|
35 |
-
$this->mo_wpns_stop_scan();
|
36 |
-
break;
|
37 |
-
}
|
38 |
-
}
|
39 |
-
|
40 |
-
public function mo_wpns_save_malware_config_form($POSTED){
|
41 |
-
$nonce = $POSTED['nonce'];
|
42 |
-
if ( ! wp_verify_nonce( $nonce, 'mo-wpns-scan-settings' ) ){
|
43 |
-
wp_send_json('ERROR');
|
44 |
-
return;
|
45 |
-
}
|
46 |
-
if(! isset($POSTED['scan_plugin']) && ! isset($POSTED['scan_themes']) && ! isset($POSTED['scan_core'])){
|
47 |
-
wp_send_json('folder_error');
|
48 |
-
}elseif (! isset($POSTED['vulnerable_check']) && ! isset($POSTED['sql_check']) && ! isset($POSTED['rfi_check']) && ! isset($POSTED['ext_link']) && ! isset($POSTED['repo_check'])) {
|
49 |
-
wp_send_json('level_error');
|
50 |
-
}
|
51 |
-
else{
|
52 |
-
$mo_wpns_scan_plugins=isset($POSTED['scan_plugin']) ? sanitize_text_field($POSTED['scan_plugin']) : 0;
|
53 |
-
$mo_wpns_scan_themes=isset($POSTED['scan_themes']) ? sanitize_text_field($POSTED['scan_themes']) : 0;
|
54 |
-
$mo_wpns_scan_wp_files= isset($POSTED['scan_core']) ? sanitize_text_field($POSTED['scan_core']) : 0;
|
55 |
-
$mo_wpns_scan_files_extensions= sanitize_text_field($POSTED['file_type']);
|
56 |
-
$mo_wpns_check_vulnerable_code=isset($POSTED['vulnerable_check']) ? sanitize_text_field($POSTED['vulnerable_check']) : 0;
|
57 |
-
$mo_wpns_check_sql_injection=isset($POSTED['sql_check']) ? sanitize_text_field($POSTED['sql_check']) : 0;
|
58 |
-
$mo_wpns_check_external_link=isset($POSTED['ext_link']) ? sanitize_text_field($POSTED['ext_link']) : 0;
|
59 |
-
$mo_wpns_scan_files_with_repo=isset($POSTED['repo_check']) ? sanitize_text_field($POSTED['repo_check']) : 0;
|
60 |
-
$folders_to_skip= sanitize_text_field($POSTED['skip_path']);
|
61 |
-
$folders_to_skip = str_replace('\\\\', '/', $folders_to_skip);
|
62 |
-
$str="";
|
63 |
-
|
64 |
-
$mo_wpns_skip_folders="";
|
65 |
-
if(!empty($folders_to_skip)){
|
66 |
-
$folders_to_skip_array=explode(";",$folders_to_skip);
|
67 |
-
for($i=0; $i< count($folders_to_skip_array); $i++){
|
68 |
-
if(is_dir($folders_to_skip_array[$i])){
|
69 |
-
$str.= $folders_to_skip_array[$i];
|
70 |
-
if($i!= count($folders_to_skip_array)-1){
|
71 |
-
$str.=";";
|
72 |
-
}
|
73 |
-
}elseif($folders_to_skip_array[$i] == ''){
|
74 |
-
$str.= $folders_to_skip_array[$i];
|
75 |
-
}
|
76 |
-
else{
|
77 |
-
wp_send_json('path_error');
|
78 |
-
}
|
79 |
-
}
|
80 |
-
$mo_wpns_skip_folders=$str;
|
81 |
-
}else{
|
82 |
-
$mo_wpns_skip_folders=$folders_to_skip;
|
83 |
-
}
|
84 |
-
|
85 |
-
$scan_configuration = array(
|
86 |
-
'plugin_scan' => $mo_wpns_scan_plugins,
|
87 |
-
'theme_scan' => $mo_wpns_scan_themes,
|
88 |
-
'core_scan' => $mo_wpns_scan_wp_files,
|
89 |
-
'file_extension' => $mo_wpns_scan_files_extensions,
|
90 |
-
'check_vulnerable' => $mo_wpns_check_vulnerable_code,
|
91 |
-
'check_sql' => $mo_wpns_check_sql_injection,
|
92 |
-
'ext_link_check' => $mo_wpns_check_external_link,
|
93 |
-
'check_repo' => $mo_wpns_scan_files_with_repo,
|
94 |
-
'path_skip' => $mo_wpns_skip_folders,
|
95 |
-
'type_scan' => "",
|
96 |
-
);
|
97 |
-
|
98 |
-
$encoded_scan_configuration=json_encode($scan_configuration);
|
99 |
-
update_option("mo_wpns_scan_configuration",$encoded_scan_configuration);
|
100 |
-
wp_send_json('save_success');
|
101 |
-
}
|
102 |
-
}
|
103 |
-
|
104 |
-
public function mo_wpns_start_malware_scan($POSTED){
|
105 |
-
$decoded_scan_configuration=json_decode(get_option('mo_wpns_scan_status'));
|
106 |
-
if(isset($decoded_scan_configuration)){
|
107 |
-
$status = $decoded_scan_configuration->scan_progress;
|
108 |
-
}else{
|
109 |
-
$status=false;
|
110 |
-
$scan_mode=false;
|
111 |
-
}
|
112 |
-
if($status == "IN PROGRESS"){
|
113 |
-
wp_send_json('scanning_already');
|
114 |
-
}
|
115 |
-
global $moWpnsUtility, $mo2f_dirName;
|
116 |
-
|
117 |
-
$mo_wpns_scan_handler = new Mo_wpns_Scan_Handler_Cron();
|
118 |
-
$mo2f_malware_db_handler = new MoWpnsDB();
|
119 |
-
|
120 |
-
$current_time= time();
|
121 |
-
update_option('mo_wpns_last_scan_time', $current_time);
|
122 |
-
$plugin_current= get_plugins();
|
123 |
-
update_option('mo_wpns_last_plugins', $plugin_current);
|
124 |
-
$args=array();
|
125 |
-
$theme_current= wp_get_themes($args);
|
126 |
-
update_option('mo_wpns_last_themes', $theme_current);
|
127 |
-
|
128 |
-
update_option('mo2f_scan_initialize', 0);
|
129 |
-
update_option('mo_wpns_hide_malware_popup', 1);
|
130 |
-
|
131 |
-
$mo_wpns_malware_scan_in_progress="IN PROGRESS";
|
132 |
-
$mo_wpns_files_scanned=0;
|
133 |
-
$mo_wpns_infected_files=0;
|
134 |
-
$mo_wpns_warning_files=0;
|
135 |
-
$wordpress_download_status=false;
|
136 |
-
|
137 |
-
update_option('mo_wpns_infected_files',0);
|
138 |
-
update_option('mo_wpns_warning_files',0);
|
139 |
-
|
140 |
-
|
141 |
-
$scan_status = array(
|
142 |
-
'scan_progress' => $mo_wpns_malware_scan_in_progress,
|
143 |
-
'files_scanned' => $mo_wpns_files_scanned,
|
144 |
-
'infected_files' => $mo_wpns_infected_files,
|
145 |
-
'warning_files' => $mo_wpns_warning_files,
|
146 |
-
'total_files' => 0,
|
147 |
-
'check_with_repo' => 0,
|
148 |
-
'extlink_check' => 0,
|
149 |
-
'scan_mode' => "",
|
150 |
-
'average_time_each_file' => 0,
|
151 |
-
'total_files_processed' => 0,
|
152 |
-
'status_download_time' => $wordpress_download_status
|
153 |
-
);
|
154 |
-
|
155 |
-
$encoded_scan_status=json_encode($scan_status);
|
156 |
-
update_option("mo_wpns_scan_status",$encoded_scan_status);
|
157 |
-
|
158 |
-
|
159 |
-
$mo2f_malware_db_handler->delete_files_parts();
|
160 |
-
|
161 |
-
if(isset($POSTED['scan']) && $POSTED['scan']=='scan_start'){
|
162 |
-
$scan_configuration = array();
|
163 |
-
switch($POSTED['scantype'])
|
164 |
-
{
|
165 |
-
case "quick_scan":
|
166 |
-
$nonce = $POSTED['nonce'];
|
167 |
-
if ( ! wp_verify_nonce( $nonce, 'wpns-scan-nonce' ) ){
|
168 |
-
wp_send_json('ERROR');
|
169 |
-
return;
|
170 |
-
}
|
171 |
-
$scan_configuration = MoWpnsConstants::$quick_scan_configuration;
|
172 |
-
update_option('mo_wpns_scan_mode','quick_scan');
|
173 |
-
$scan_status = array(
|
174 |
-
'scan_progress' => $mo_wpns_malware_scan_in_progress,
|
175 |
-
'files_scanned' => $mo_wpns_files_scanned,
|
176 |
-
'infected_files' => $mo_wpns_infected_files,
|
177 |
-
'warning_files' => $mo_wpns_warning_files,
|
178 |
-
'total_files' => 0,
|
179 |
-
'check_with_repo' => 0,
|
180 |
-
'extlink_check' => 0,
|
181 |
-
'average_time_each_file' => 0,
|
182 |
-
'total_files_processed' => 0,
|
183 |
-
'scan_mode' => "quick_scan",
|
184 |
-
'status_download_time' => $wordpress_download_status
|
185 |
-
);
|
186 |
-
|
187 |
-
$encoded_scan_status=json_encode($scan_status);
|
188 |
-
update_option("mo_wpns_scan_status",$encoded_scan_status);
|
189 |
-
$mo_wpns_scan_handler->mo2f_scan_all_files($scan_configuration, $current_time); //recheck
|
190 |
-
break;
|
191 |
-
case "standard_scan":
|
192 |
-
$nonce = $POSTED['nonce'];
|
193 |
-
if ( ! wp_verify_nonce( $nonce, 'wpns-scan-nonce' ) ){
|
194 |
-
wp_send_json('ERROR');
|
195 |
-
return;
|
196 |
-
}
|
197 |
-
$scan_configuration = MoWpnsConstants::$standard_scan_configuration;
|
198 |
-
update_option('mo_wpns_scan_mode','standard_scan');
|
199 |
-
$scan_status = array(
|
200 |
-
'scan_progress' => $mo_wpns_malware_scan_in_progress,
|
201 |
-
'files_scanned' => $mo_wpns_files_scanned,
|
202 |
-
'infected_files' => $mo_wpns_infected_files,
|
203 |
-
'warning_files' => $mo_wpns_warning_files,
|
204 |
-
'total_files' => 0,
|
205 |
-
'check_with_repo' => 1,
|
206 |
-
'extlink_check' => 1,
|
207 |
-
'total_files_processed' => 0,
|
208 |
-
'average_time_each_file' => 0,
|
209 |
-
'scan_mode' => "standard_scan",
|
210 |
-
'status_download_time' => $wordpress_download_status
|
211 |
-
);
|
212 |
-
|
213 |
-
$encoded_scan_status=json_encode($scan_status);
|
214 |
-
update_option("mo_wpns_scan_status",$encoded_scan_status);
|
215 |
-
$mo_wpns_scan_handler->mo2f_scan_all_files($scan_configuration, $current_time); //recheck
|
216 |
-
break;
|
217 |
-
case "custom_scan":
|
218 |
-
$nonce = $POSTED['nonce'];
|
219 |
-
if ( ! wp_verify_nonce( $nonce, 'wpns-scan-nonce' ) ){
|
220 |
-
wp_send_json('ERROR');
|
221 |
-
return;
|
222 |
-
}
|
223 |
-
$decode_scan_configuration=json_decode(get_option("mo_wpns_scan_configuration"));
|
224 |
-
if(is_null($decode_scan_configuration))
|
225 |
-
{
|
226 |
-
delete_option("mo_wpns_scan_status",$encoded_scan_status);
|
227 |
-
wp_send_json("RECONFIGURE");
|
228 |
-
}
|
229 |
-
|
230 |
-
$scan_configuration = array('plugin_scan' => $decode_scan_configuration->plugin_scan,
|
231 |
-
'theme_scan' => $decode_scan_configuration->theme_scan,
|
232 |
-
'core_scan' => $decode_scan_configuration->core_scan,
|
233 |
-
'file_extension' => $decode_scan_configuration->file_extension,
|
234 |
-
'check_vulnerable' => $decode_scan_configuration->check_vulnerable,
|
235 |
-
'check_sql' => $decode_scan_configuration->check_sql,
|
236 |
-
'ext_link_check' => $decode_scan_configuration->ext_link_check,
|
237 |
-
'check_repo' => $decode_scan_configuration->check_repo,
|
238 |
-
'path_skip' => $decode_scan_configuration->path_skip,
|
239 |
-
'type_scan' => "Custom Scan"
|
240 |
-
);
|
241 |
-
|
242 |
-
|
243 |
-
$scan_status = array(
|
244 |
-
'scan_progress' => $mo_wpns_malware_scan_in_progress,
|
245 |
-
'files_scanned' => $mo_wpns_files_scanned,
|
246 |
-
'infected_files' => $mo_wpns_infected_files,
|
247 |
-
'warning_files' => $mo_wpns_warning_files,
|
248 |
-
'total_files' => 0,
|
249 |
-
'extlink_check' => $decode_scan_configuration->ext_link_check,
|
250 |
-
'check_with_repo' => $decode_scan_configuration->check_repo,
|
251 |
-
'average_time_each_file' => 0,
|
252 |
-
'total_files_processed' => 0,
|
253 |
-
'scan_mode' => "custom_scan",
|
254 |
-
'status_download_time' => $wordpress_download_status
|
255 |
-
);
|
256 |
-
|
257 |
-
$encoded_scan_status=json_encode($scan_status);
|
258 |
-
update_option("mo_wpns_scan_status",$encoded_scan_status);
|
259 |
-
update_option('mo_wpns_scan_mode','custom_scan');
|
260 |
-
update_option('mo2f_custom_scan_config', $scan_configuration);
|
261 |
-
$mo_wpns_scan_handler->mo2f_scan_all_files($scan_configuration, $current_time); //recheck
|
262 |
-
break;
|
263 |
-
}
|
264 |
-
}
|
265 |
-
}
|
266 |
-
|
267 |
-
|
268 |
-
public function mo_wpns_get_progress(){
|
269 |
-
|
270 |
-
$decoded_scan_status=json_decode(get_option('mo_wpns_scan_status'));
|
271 |
-
$status= $decoded_scan_status->scan_progress;;
|
272 |
-
$files_scanned= $decoded_scan_status->files_scanned;
|
273 |
-
$total_files = $decoded_scan_status->total_files;
|
274 |
-
$check_repo = $decoded_scan_status->check_with_repo;
|
275 |
-
$extlink_check = $decoded_scan_status->extlink_check;
|
276 |
-
$scan_mode= $decoded_scan_status->scan_mode;
|
277 |
-
$status_download= $decoded_scan_status->status_download_time;
|
278 |
-
$averageFileScanTime= $decoded_scan_status->average_time_each_file;
|
279 |
-
$total_files_processed= $decoded_scan_status->total_files_processed;
|
280 |
-
if($status_download != false && $status == "IN PROGRESS"){
|
281 |
-
$time_spent_in_downloading= time()-$status_download;
|
282 |
-
|
283 |
-
if($time_spent_in_downloading > 600){
|
284 |
-
$mo2f_malware_db_handler = new MoWpnsDB();
|
285 |
-
$reportid= get_option('mo2f_report_id');
|
286 |
-
$last_report = $mo2f_malware_db_handler->get_report_with_id($reportid);
|
287 |
-
if(!empty($last_report)){
|
288 |
-
$response['file_count']= $last_report[0]->scanned_files;
|
289 |
-
$response['malware_count'] = $last_report[0]->malware_count;
|
290 |
-
$response['repo_issues'] = -96;
|
291 |
-
$response['malicious_link'] = $last_report[0]->malicious_links;
|
292 |
-
|
293 |
-
$mo2f_malware_db_handler->scan_report_complete($reportid, $response['file_count'], $response['malware_count'], $response['repo_issues'], $response['malicious_link']);
|
294 |
-
}
|
295 |
-
|
296 |
-
$scan_handler_obj = new mo2f_scanner_parts;
|
297 |
-
$scan_handler_obj->mo2f_end_scan();
|
298 |
-
}
|
299 |
-
}
|
300 |
-
$repo_scan=0;
|
301 |
-
if($scan_mode == "standard_scan" || ($scan_mode == "custom_scan" && $check_repo == 1)){
|
302 |
-
$repo_scan=1;
|
303 |
-
}
|
304 |
-
if($status == "IN PROGRESS"){
|
305 |
-
$result=array("status"=>$status, "scanned"=>$files_scanned, "total"=>$total_files, "repo_scan"=> $repo_scan,"extlink_check"=> $extlink_check,"AverageFileTime"=>$averageFileScanTime,"total_files_processed"=>$total_files_processed);
|
306 |
-
wp_send_json($result);
|
307 |
-
}
|
308 |
-
else{
|
309 |
-
//stop scan check
|
310 |
-
$stop_scan=get_option('mo_stop_scan');
|
311 |
-
|
312 |
-
$mo_wpns_db_handler = new MoWpnsDB();
|
313 |
-
$total_scan=$mo_wpns_db_handler->count_files();
|
314 |
-
$total_malicious=$mo_wpns_db_handler->count_malicious_files();
|
315 |
-
$last_id=$mo_wpns_db_handler->get_last_id();
|
316 |
-
$send_id=$last_id[0]->max;
|
317 |
-
$last_scan=$mo_wpns_db_handler->count_files_last_scan($send_id);
|
318 |
-
$malicious_last_scan= get_option('mo_wpns_infected_files');
|
319 |
-
$warning_last_scan = get_option('mo_wpns_warning_files');
|
320 |
-
if($total_scan > 999){
|
321 |
-
$total_scan=($total_scan/1000);
|
322 |
-
$total_scan= round($total_scan,1)."k";
|
323 |
-
}
|
324 |
-
if($total_malicious > 999){
|
325 |
-
$total_malicious=($total_malicious/1000);
|
326 |
-
$total_malicious= round($total_malicious,1)."k";
|
327 |
-
}
|
328 |
-
if($last_scan > 999){
|
329 |
-
$last_scan = ($last_scan/1000);
|
330 |
-
$last_scan = round($last_scan,1)."k";
|
331 |
-
}
|
332 |
-
if($stop_scan){
|
333 |
-
$status="ABORTED";
|
334 |
-
$result = array("status"=>$status, 'total_files'=>$total_scan,"AverageFileTime"=>$averageFileScanTime, 'total_mal'=>$total_malicious, 'scan_files'=>$last_scan, 'mal_files'=>$malicious_last_scan, 'warnings'=>$warning_last_scan,"total_files_processed"=>$total_files_processed);
|
335 |
-
wp_send_json($result);
|
336 |
-
}
|
337 |
-
$result = array("status"=>$status, 'total_files'=>$total_scan, 'total_mal'=>$total_malicious,"AverageFileTime"=>$averageFileScanTime, 'scan_files'=>$total_files, 'mal_files'=>$malicious_last_scan, 'warnings'=>$warning_last_scan,"total_files_processed"=>$total_files_processed);
|
338 |
-
wp_send_json($result);
|
339 |
-
}
|
340 |
-
}
|
341 |
-
|
342 |
-
function mo_wpns_stop_scan(){
|
343 |
-
update_option('mo_stop_scan','1');
|
344 |
-
$mo2f_malware_db_handler = new MoWpnsDB();
|
345 |
-
$mo2f_malware_db_handler->delete_files_parts();
|
346 |
-
wp_send_json('success');
|
347 |
-
}
|
348 |
-
|
349 |
-
function mo_wpns_get_scan_result(){
|
350 |
-
$decoded_scan_configuration=json_decode(get_option('mo_wpns_scan_status'));
|
351 |
-
$status=$decoded_scan_configuration->scan_progress;
|
352 |
-
$mo_wpns_db_handler = new MoWpnsDB();
|
353 |
-
$result = $mo_wpns_db_handler->get_report();
|
354 |
-
$str1= $_SERVER['REQUEST_URI'];
|
355 |
-
$str1= str_replace("admin-ajax.php", "admin.php?page=mo_2fa_malwarescan", $str1);
|
356 |
-
$currenturl = remove_query_arg('delete',$str1);
|
357 |
-
$currenturl = remove_query_arg('view',$currenturl);
|
358 |
-
$currenturl = remove_query_arg('trust',$currenturl);
|
359 |
-
$currenturl = remove_query_arg('trustchanged',$currenturl);
|
360 |
-
$htmldata = "";
|
361 |
-
if(!empty($result)){
|
362 |
-
foreach($result as $report){
|
363 |
-
if(empty($report->scan_mode)){
|
364 |
-
$report->scan_mode="Custom Scan";
|
365 |
-
}
|
366 |
-
$repo_count = $report->repo_issues >= 0 ? $report->repo_issues : 0;
|
367 |
-
$htmldata .= "<tr><td style=text-align:center>".$report->scan_mode."</td>";
|
368 |
-
$htmldata .= "<td style=text-align:center>";
|
369 |
-
if(!empty($report->scanned_folders)){
|
370 |
-
foreach(explode(";",$report->scanned_folders) as $folder){
|
371 |
-
if(!empty($folder)){
|
372 |
-
$htmldata .= $folder."<br>";
|
373 |
-
}
|
374 |
-
}
|
375 |
-
}
|
376 |
-
$htmldata .= "</td><td style=text-align:center>";
|
377 |
-
$htmldata .= "<span style=color:green id=scan_files>".$report->scanned_files." files scanned<br></span>";
|
378 |
-
$htmldata .= "<span style=color:red id=malicious_files>".$report->malware_count." malware found<br></span>";
|
379 |
-
if($report->repo_issues < 0){
|
380 |
-
$htmldata .= "<span style=color:orange id=malicious_files>Issues with repository check<br></span>";
|
381 |
-
}
|
382 |
-
$htmldata .= "<span style=color:orange id=warning_files>".($repo_count+$report->malicious_links)." warnings found</span>";
|
383 |
-
$htmldata .= "</td><td style=text-align:center id=start_time>".date("M j, Y, g:i:s a",$report->start_timestamp)."</td>";
|
384 |
-
$htmldata .= "<td><a href='".add_query_arg( array('tab' => 'default', 'view' => $report->id), $currenturl )."'>View Details</a> <a href='".add_query_arg( array('tab' => 'default', 'delete' => $report->id), $currenturl )."'>Delete</a></td>";
|
385 |
-
$htmldata .= "</tr>";
|
386 |
-
|
387 |
-
}
|
388 |
-
}else{
|
389 |
-
$htmldata .= '<tr class="odd"><td valign="top" colspan="5" class="dataTables_empty">No data available in table</td></tr>';
|
390 |
-
}
|
391 |
-
wp_send_json($htmldata);
|
392 |
-
|
393 |
-
}
|
394 |
-
}
|
395 |
-
new Mo_wpns_scan_malware();
|
396 |
-
?>
|
1 |
+
<?php
|
2 |
+
class Mo_wpns_scan_malware
|
3 |
+
{
|
4 |
+
function __construct(){
|
5 |
+
add_action( 'admin_init' , array( $this, 'mo_wpns_malware_scanner_functions' ) );
|
6 |
+
|
7 |
+
}
|
8 |
+
|
9 |
+
public function mo_wpns_malware_scanner_functions(){
|
10 |
+
add_action('wp_ajax_mo_wpns_malware_redirect', array( $this, 'mo_wpns_malware_redirect' ));
|
11 |
+
}
|
12 |
+
|
13 |
+
public function mo_wpns_malware_redirect(){
|
14 |
+
switch($_POST['call_type'])
|
15 |
+
{
|
16 |
+
case "submit_malware_settings_form":
|
17 |
+
$this->mo_wpns_save_malware_config_form($_POST);
|
18 |
+
break;
|
19 |
+
case "malware_scan_initiate":
|
20 |
+
$this->mo_wpns_start_malware_scan($_POST);
|
21 |
+
break;
|
22 |
+
case "wpns_enable_tour":
|
23 |
+
update_option('skip_tour', 0);
|
24 |
+
break;
|
25 |
+
case "wpns_disable_tour":
|
26 |
+
update_option('skip_tour', 1);
|
27 |
+
break;
|
28 |
+
case "malware_progress_bar":
|
29 |
+
$this->mo_wpns_get_progress();
|
30 |
+
break;
|
31 |
+
case "malware_scan_last_result":
|
32 |
+
$this->mo_wpns_get_scan_result();
|
33 |
+
break;
|
34 |
+
case "malware_scan_terminate":
|
35 |
+
$this->mo_wpns_stop_scan();
|
36 |
+
break;
|
37 |
+
}
|
38 |
+
}
|
39 |
+
|
40 |
+
public function mo_wpns_save_malware_config_form($POSTED){
|
41 |
+
$nonce = $POSTED['nonce'];
|
42 |
+
if ( ! wp_verify_nonce( $nonce, 'mo-wpns-scan-settings' ) ){
|
43 |
+
wp_send_json('ERROR');
|
44 |
+
return;
|
45 |
+
}
|
46 |
+
if(! isset($POSTED['scan_plugin']) && ! isset($POSTED['scan_themes']) && ! isset($POSTED['scan_core'])){
|
47 |
+
wp_send_json('folder_error');
|
48 |
+
}elseif (! isset($POSTED['vulnerable_check']) && ! isset($POSTED['sql_check']) && ! isset($POSTED['rfi_check']) && ! isset($POSTED['ext_link']) && ! isset($POSTED['repo_check'])) {
|
49 |
+
wp_send_json('level_error');
|
50 |
+
}
|
51 |
+
else{
|
52 |
+
$mo_wpns_scan_plugins=isset($POSTED['scan_plugin']) ? sanitize_text_field($POSTED['scan_plugin']) : 0;
|
53 |
+
$mo_wpns_scan_themes=isset($POSTED['scan_themes']) ? sanitize_text_field($POSTED['scan_themes']) : 0;
|
54 |
+
$mo_wpns_scan_wp_files= isset($POSTED['scan_core']) ? sanitize_text_field($POSTED['scan_core']) : 0;
|
55 |
+
$mo_wpns_scan_files_extensions= sanitize_text_field($POSTED['file_type']);
|
56 |
+
$mo_wpns_check_vulnerable_code=isset($POSTED['vulnerable_check']) ? sanitize_text_field($POSTED['vulnerable_check']) : 0;
|
57 |
+
$mo_wpns_check_sql_injection=isset($POSTED['sql_check']) ? sanitize_text_field($POSTED['sql_check']) : 0;
|
58 |
+
$mo_wpns_check_external_link=isset($POSTED['ext_link']) ? sanitize_text_field($POSTED['ext_link']) : 0;
|
59 |
+
$mo_wpns_scan_files_with_repo=isset($POSTED['repo_check']) ? sanitize_text_field($POSTED['repo_check']) : 0;
|
60 |
+
$folders_to_skip= sanitize_text_field($POSTED['skip_path']);
|
61 |
+
$folders_to_skip = str_replace('\\\\', '/', $folders_to_skip);
|
62 |
+
$str="";
|
63 |
+
|
64 |
+
$mo_wpns_skip_folders="";
|
65 |
+
if(!empty($folders_to_skip)){
|
66 |
+
$folders_to_skip_array=explode(";",$folders_to_skip);
|
67 |
+
for($i=0; $i< count($folders_to_skip_array); $i++){
|
68 |
+
if(is_dir($folders_to_skip_array[$i])){
|
69 |
+
$str.= $folders_to_skip_array[$i];
|
70 |
+
if($i!= count($folders_to_skip_array)-1){
|
71 |
+
$str.=";";
|
72 |
+
}
|
73 |
+
}elseif($folders_to_skip_array[$i] == ''){
|
74 |
+
$str.= $folders_to_skip_array[$i];
|
75 |
+
}
|
76 |
+
else{
|
77 |
+
wp_send_json('path_error');
|
78 |
+
}
|
79 |
+
}
|
80 |
+
$mo_wpns_skip_folders=$str;
|
81 |
+
}else{
|
82 |
+
$mo_wpns_skip_folders=$folders_to_skip;
|
83 |
+
}
|
84 |
+
|
85 |
+
$scan_configuration = array(
|
86 |
+
'plugin_scan' => $mo_wpns_scan_plugins,
|
87 |
+
'theme_scan' => $mo_wpns_scan_themes,
|
88 |
+
'core_scan' => $mo_wpns_scan_wp_files,
|
89 |
+
'file_extension' => $mo_wpns_scan_files_extensions,
|
90 |
+
'check_vulnerable' => $mo_wpns_check_vulnerable_code,
|
91 |
+
'check_sql' => $mo_wpns_check_sql_injection,
|
92 |
+
'ext_link_check' => $mo_wpns_check_external_link,
|
93 |
+
'check_repo' => $mo_wpns_scan_files_with_repo,
|
94 |
+
'path_skip' => $mo_wpns_skip_folders,
|
95 |
+
'type_scan' => "",
|
96 |
+
);
|
97 |
+
|
98 |
+
$encoded_scan_configuration=json_encode($scan_configuration);
|
99 |
+
update_option("mo_wpns_scan_configuration",$encoded_scan_configuration);
|
100 |
+
wp_send_json('save_success');
|
101 |
+
}
|
102 |
+
}
|
103 |
+
|
104 |
+
public function mo_wpns_start_malware_scan($POSTED){
|
105 |
+
$decoded_scan_configuration=json_decode(get_option('mo_wpns_scan_status'));
|
106 |
+
if(isset($decoded_scan_configuration)){
|
107 |
+
$status = $decoded_scan_configuration->scan_progress;
|
108 |
+
}else{
|
109 |
+
$status=false;
|
110 |
+
$scan_mode=false;
|
111 |
+
}
|
112 |
+
if($status == "IN PROGRESS"){
|
113 |
+
wp_send_json('scanning_already');
|
114 |
+
}
|
115 |
+
global $moWpnsUtility, $mo2f_dirName;
|
116 |
+
|
117 |
+
$mo_wpns_scan_handler = new Mo_wpns_Scan_Handler_Cron();
|
118 |
+
$mo2f_malware_db_handler = new MoWpnsDB();
|
119 |
+
|
120 |
+
$current_time= time();
|
121 |
+
update_option('mo_wpns_last_scan_time', $current_time);
|
122 |
+
$plugin_current= get_plugins();
|
123 |
+
update_option('mo_wpns_last_plugins', $plugin_current);
|
124 |
+
$args=array();
|
125 |
+
$theme_current= wp_get_themes($args);
|
126 |
+
update_option('mo_wpns_last_themes', $theme_current);
|
127 |
+
|
128 |
+
update_option('mo2f_scan_initialize', 0);
|
129 |
+
update_option('mo_wpns_hide_malware_popup', 1);
|
130 |
+
|
131 |
+
$mo_wpns_malware_scan_in_progress="IN PROGRESS";
|
132 |
+
$mo_wpns_files_scanned=0;
|
133 |
+
$mo_wpns_infected_files=0;
|
134 |
+
$mo_wpns_warning_files=0;
|
135 |
+
$wordpress_download_status=false;
|
136 |
+
|
137 |
+
update_option('mo_wpns_infected_files',0);
|
138 |
+
update_option('mo_wpns_warning_files',0);
|
139 |
+
|
140 |
+
|
141 |
+
$scan_status = array(
|
142 |
+
'scan_progress' => $mo_wpns_malware_scan_in_progress,
|
143 |
+
'files_scanned' => $mo_wpns_files_scanned,
|
144 |
+
'infected_files' => $mo_wpns_infected_files,
|
145 |
+
'warning_files' => $mo_wpns_warning_files,
|
146 |
+
'total_files' => 0,
|
147 |
+
'check_with_repo' => 0,
|
148 |
+
'extlink_check' => 0,
|
149 |
+
'scan_mode' => "",
|
150 |
+
'average_time_each_file' => 0,
|
151 |
+
'total_files_processed' => 0,
|
152 |
+
'status_download_time' => $wordpress_download_status
|
153 |
+
);
|
154 |
+
|
155 |
+
$encoded_scan_status=json_encode($scan_status);
|
156 |
+
update_option("mo_wpns_scan_status",$encoded_scan_status);
|
157 |
+
|
158 |
+
|
159 |
+
$mo2f_malware_db_handler->delete_files_parts();
|
160 |
+
|
161 |
+
if(isset($POSTED['scan']) && $POSTED['scan']=='scan_start'){
|
162 |
+
$scan_configuration = array();
|
163 |
+
switch($POSTED['scantype'])
|
164 |
+
{
|
165 |
+
case "quick_scan":
|
166 |
+
$nonce = $POSTED['nonce'];
|
167 |
+
if ( ! wp_verify_nonce( $nonce, 'wpns-scan-nonce' ) ){
|
168 |
+
wp_send_json('ERROR');
|
169 |
+
return;
|
170 |
+
}
|
171 |
+
$scan_configuration = MoWpnsConstants::$quick_scan_configuration;
|
172 |
+
update_option('mo_wpns_scan_mode','quick_scan');
|
173 |
+
$scan_status = array(
|
174 |
+
'scan_progress' => $mo_wpns_malware_scan_in_progress,
|
175 |
+
'files_scanned' => $mo_wpns_files_scanned,
|
176 |
+
'infected_files' => $mo_wpns_infected_files,
|
177 |
+
'warning_files' => $mo_wpns_warning_files,
|
178 |
+
'total_files' => 0,
|
179 |
+
'check_with_repo' => 0,
|
180 |
+
'extlink_check' => 0,
|
181 |
+
'average_time_each_file' => 0,
|
182 |
+
'total_files_processed' => 0,
|
183 |
+
'scan_mode' => "quick_scan",
|
184 |
+
'status_download_time' => $wordpress_download_status
|
185 |
+
);
|
186 |
+
|
187 |
+
$encoded_scan_status=json_encode($scan_status);
|
188 |
+
update_option("mo_wpns_scan_status",$encoded_scan_status);
|
189 |
+
$mo_wpns_scan_handler->mo2f_scan_all_files($scan_configuration, $current_time); //recheck
|
190 |
+
break;
|
191 |
+
case "standard_scan":
|
192 |
+
$nonce = $POSTED['nonce'];
|
193 |
+
if ( ! wp_verify_nonce( $nonce, 'wpns-scan-nonce' ) ){
|
194 |
+
wp_send_json('ERROR');
|
195 |
+
return;
|
196 |
+
}
|
197 |
+
$scan_configuration = MoWpnsConstants::$standard_scan_configuration;
|
198 |
+
update_option('mo_wpns_scan_mode','standard_scan');
|
199 |
+
$scan_status = array(
|
200 |
+
'scan_progress' => $mo_wpns_malware_scan_in_progress,
|
201 |
+
'files_scanned' => $mo_wpns_files_scanned,
|
202 |
+
'infected_files' => $mo_wpns_infected_files,
|
203 |
+
'warning_files' => $mo_wpns_warning_files,
|
204 |
+
'total_files' => 0,
|
205 |
+
'check_with_repo' => 1,
|
206 |
+
'extlink_check' => 1,
|
207 |
+
'total_files_processed' => 0,
|
208 |
+
'average_time_each_file' => 0,
|
209 |
+
'scan_mode' => "standard_scan",
|
210 |
+
'status_download_time' => $wordpress_download_status
|
211 |
+
);
|
212 |
+
|
213 |
+
$encoded_scan_status=json_encode($scan_status);
|
214 |
+
update_option("mo_wpns_scan_status",$encoded_scan_status);
|
215 |
+
$mo_wpns_scan_handler->mo2f_scan_all_files($scan_configuration, $current_time); //recheck
|
216 |
+
break;
|
217 |
+
case "custom_scan":
|
218 |
+
$nonce = $POSTED['nonce'];
|
219 |
+
if ( ! wp_verify_nonce( $nonce, 'wpns-scan-nonce' ) ){
|
220 |
+
wp_send_json('ERROR');
|
221 |
+
return;
|
222 |
+
}
|
223 |
+
$decode_scan_configuration=json_decode(get_option("mo_wpns_scan_configuration"));
|
224 |
+
if(is_null($decode_scan_configuration))
|
225 |
+
{
|
226 |
+
delete_option("mo_wpns_scan_status",$encoded_scan_status);
|
227 |
+
wp_send_json("RECONFIGURE");
|
228 |
+
}
|
229 |
+
|
230 |
+
$scan_configuration = array('plugin_scan' => $decode_scan_configuration->plugin_scan,
|
231 |
+
'theme_scan' => $decode_scan_configuration->theme_scan,
|
232 |
+
'core_scan' => $decode_scan_configuration->core_scan,
|
233 |
+
'file_extension' => $decode_scan_configuration->file_extension,
|
234 |
+
'check_vulnerable' => $decode_scan_configuration->check_vulnerable,
|
235 |
+
'check_sql' => $decode_scan_configuration->check_sql,
|
236 |
+
'ext_link_check' => $decode_scan_configuration->ext_link_check,
|
237 |
+
'check_repo' => $decode_scan_configuration->check_repo,
|
238 |
+
'path_skip' => $decode_scan_configuration->path_skip,
|
239 |
+
'type_scan' => "Custom Scan"
|
240 |
+
);
|
241 |
+
|
242 |
+
|
243 |
+
$scan_status = array(
|
244 |
+
'scan_progress' => $mo_wpns_malware_scan_in_progress,
|
245 |
+
'files_scanned' => $mo_wpns_files_scanned,
|
246 |
+
'infected_files' => $mo_wpns_infected_files,
|
247 |
+
'warning_files' => $mo_wpns_warning_files,
|
248 |
+
'total_files' => 0,
|
249 |
+
'extlink_check' => $decode_scan_configuration->ext_link_check,
|
250 |
+
'check_with_repo' => $decode_scan_configuration->check_repo,
|
251 |
+
'average_time_each_file' => 0,
|
252 |
+
'total_files_processed' => 0,
|
253 |
+
'scan_mode' => "custom_scan",
|
254 |
+
'status_download_time' => $wordpress_download_status
|
255 |
+
);
|
256 |
+
|
257 |
+
$encoded_scan_status=json_encode($scan_status);
|
258 |
+
update_option("mo_wpns_scan_status",$encoded_scan_status);
|
259 |
+
update_option('mo_wpns_scan_mode','custom_scan');
|
260 |
+
update_option('mo2f_custom_scan_config', $scan_configuration);
|
261 |
+
$mo_wpns_scan_handler->mo2f_scan_all_files($scan_configuration, $current_time); //recheck
|
262 |
+
break;
|
263 |
+
}
|
264 |
+
}
|
265 |
+
}
|
266 |
+
|
267 |
+
|
268 |
+
public function mo_wpns_get_progress(){
|
269 |
+
|
270 |
+
$decoded_scan_status=json_decode(get_option('mo_wpns_scan_status'));
|
271 |
+
$status= $decoded_scan_status->scan_progress;;
|
272 |
+
$files_scanned= $decoded_scan_status->files_scanned;
|
273 |
+
$total_files = $decoded_scan_status->total_files;
|
274 |
+
$check_repo = $decoded_scan_status->check_with_repo;
|
275 |
+
$extlink_check = $decoded_scan_status->extlink_check;
|
276 |
+
$scan_mode= $decoded_scan_status->scan_mode;
|
277 |
+
$status_download= $decoded_scan_status->status_download_time;
|
278 |
+
$averageFileScanTime= $decoded_scan_status->average_time_each_file;
|
279 |
+
$total_files_processed= $decoded_scan_status->total_files_processed;
|
280 |
+
if($status_download != false && $status == "IN PROGRESS"){
|
281 |
+
$time_spent_in_downloading= time()-$status_download;
|
282 |
+
|
283 |
+
if($time_spent_in_downloading > 600){
|
284 |
+
$mo2f_malware_db_handler = new MoWpnsDB();
|
285 |
+
$reportid= get_option('mo2f_report_id');
|
286 |
+
$last_report = $mo2f_malware_db_handler->get_report_with_id($reportid);
|
287 |
+
if(!empty($last_report)){
|
288 |
+
$response['file_count']= $last_report[0]->scanned_files;
|
289 |
+
$response['malware_count'] = $last_report[0]->malware_count;
|
290 |
+
$response['repo_issues'] = -96;
|
291 |
+
$response['malicious_link'] = $last_report[0]->malicious_links;
|
292 |
+
|
293 |
+
$mo2f_malware_db_handler->scan_report_complete($reportid, $response['file_count'], $response['malware_count'], $response['repo_issues'], $response['malicious_link']);
|
294 |
+
}
|
295 |
+
|
296 |
+
$scan_handler_obj = new mo2f_scanner_parts;
|
297 |
+
$scan_handler_obj->mo2f_end_scan();
|
298 |
+
}
|
299 |
+
}
|
300 |
+
$repo_scan=0;
|
301 |
+
if($scan_mode == "standard_scan" || ($scan_mode == "custom_scan" && $check_repo == 1)){
|
302 |
+
$repo_scan=1;
|
303 |
+
}
|
304 |
+
if($status == "IN PROGRESS"){
|
305 |
+
$result=array("status"=>$status, "scanned"=>$files_scanned, "total"=>$total_files, "repo_scan"=> $repo_scan,"extlink_check"=> $extlink_check,"AverageFileTime"=>$averageFileScanTime,"total_files_processed"=>$total_files_processed);
|
306 |
+
wp_send_json($result);
|
307 |
+
}
|
308 |
+
else{
|
309 |
+
//stop scan check
|
310 |
+
$stop_scan=get_option('mo_stop_scan');
|
311 |
+
|
312 |
+
$mo_wpns_db_handler = new MoWpnsDB();
|
313 |
+
$total_scan=$mo_wpns_db_handler->count_files();
|
314 |
+
$total_malicious=$mo_wpns_db_handler->count_malicious_files();
|
315 |
+
$last_id=$mo_wpns_db_handler->get_last_id();
|
316 |
+
$send_id=$last_id[0]->max;
|
317 |
+
$last_scan=$mo_wpns_db_handler->count_files_last_scan($send_id);
|
318 |
+
$malicious_last_scan= get_option('mo_wpns_infected_files');
|
319 |
+
$warning_last_scan = get_option('mo_wpns_warning_files');
|
320 |
+
if($total_scan > 999){
|
321 |
+
$total_scan=($total_scan/1000);
|
322 |
+
$total_scan= round($total_scan,1)."k";
|
323 |
+
}
|
324 |
+
if($total_malicious > 999){
|
325 |
+
$total_malicious=($total_malicious/1000);
|
326 |
+
$total_malicious= round($total_malicious,1)."k";
|
327 |
+
}
|
328 |
+
if($last_scan > 999){
|
329 |
+
$last_scan = ($last_scan/1000);
|
330 |
+
$last_scan = round($last_scan,1)."k";
|
331 |
+
}
|
332 |
+
if($stop_scan){
|
333 |
+
$status="ABORTED";
|
334 |
+
$result = array("status"=>$status, 'total_files'=>$total_scan,"AverageFileTime"=>$averageFileScanTime, 'total_mal'=>$total_malicious, 'scan_files'=>$last_scan, 'mal_files'=>$malicious_last_scan, 'warnings'=>$warning_last_scan,"total_files_processed"=>$total_files_processed);
|
335 |
+
wp_send_json($result);
|
336 |
+
}
|
337 |
+
$result = array("status"=>$status, 'total_files'=>$total_scan, 'total_mal'=>$total_malicious,"AverageFileTime"=>$averageFileScanTime, 'scan_files'=>$total_files, 'mal_files'=>$malicious_last_scan, 'warnings'=>$warning_last_scan,"total_files_processed"=>$total_files_processed);
|
338 |
+
wp_send_json($result);
|
339 |
+
}
|
340 |
+
}
|
341 |
+
|
342 |
+
function mo_wpns_stop_scan(){
|
343 |
+
update_option('mo_stop_scan','1');
|
344 |
+
$mo2f_malware_db_handler = new MoWpnsDB();
|
345 |
+
$mo2f_malware_db_handler->delete_files_parts();
|
346 |
+
wp_send_json('success');
|
347 |
+
}
|
348 |
+
|
349 |
+
function mo_wpns_get_scan_result(){
|
350 |
+
$decoded_scan_configuration=json_decode(get_option('mo_wpns_scan_status'));
|
351 |
+
$status=$decoded_scan_configuration->scan_progress;
|
352 |
+
$mo_wpns_db_handler = new MoWpnsDB();
|
353 |
+
$result = $mo_wpns_db_handler->get_report();
|
354 |
+
$str1= $_SERVER['REQUEST_URI'];
|
355 |
+
$str1= str_replace("admin-ajax.php", "admin.php?page=mo_2fa_malwarescan", $str1);
|
356 |
+
$currenturl = remove_query_arg('delete',$str1);
|
357 |
+
$currenturl = remove_query_arg('view',$currenturl);
|
358 |
+
$currenturl = remove_query_arg('trust',$currenturl);
|
359 |
+
$currenturl = remove_query_arg('trustchanged',$currenturl);
|
360 |
+
$htmldata = "";
|
361 |
+
if(!empty($result)){
|
362 |
+
foreach($result as $report){
|
363 |
+
if(empty($report->scan_mode)){
|
364 |
+
$report->scan_mode="Custom Scan";
|
365 |
+
}
|
366 |
+
$repo_count = $report->repo_issues >= 0 ? $report->repo_issues : 0;
|
367 |
+
$htmldata .= "<tr><td style=text-align:center>".$report->scan_mode."</td>";
|
368 |
+
$htmldata .= "<td style=text-align:center>";
|
369 |
+
if(!empty($report->scanned_folders)){
|
370 |
+
foreach(explode(";",$report->scanned_folders) as $folder){
|
371 |
+
if(!empty($folder)){
|
372 |
+
$htmldata .= $folder."<br>";
|
373 |
+
}
|
374 |
+
}
|
375 |
+
}
|
376 |
+
$htmldata .= "</td><td style=text-align:center>";
|
377 |
+
$htmldata .= "<span style=color:green id=scan_files>".$report->scanned_files." files scanned<br></span>";
|
378 |
+
$htmldata .= "<span style=color:red id=malicious_files>".$report->malware_count." malware found<br></span>";
|
379 |
+
if($report->repo_issues < 0){
|
380 |
+
$htmldata .= "<span style=color:orange id=malicious_files>Issues with repository check<br></span>";
|
381 |
+
}
|
382 |
+
$htmldata .= "<span style=color:orange id=warning_files>".($repo_count+$report->malicious_links)." warnings found</span>";
|
383 |
+
$htmldata .= "</td><td style=text-align:center id=start_time>".date("M j, Y, g:i:s a",$report->start_timestamp)."</td>";
|
384 |
+
$htmldata .= "<td><a href='".add_query_arg( array('tab' => 'default', 'view' => $report->id), $currenturl )."'>View Details</a> <a href='".add_query_arg( array('tab' => 'default', 'delete' => $report->id), $currenturl )."'>Delete</a></td>";
|
385 |
+
$htmldata .= "</tr>";
|
386 |
+
|
387 |
+
}
|
388 |
+
}else{
|
389 |
+
$htmldata .= '<tr class="odd"><td valign="top" colspan="5" class="dataTables_empty">No data available in table</td></tr>';
|
390 |
+
}
|
391 |
+
wp_send_json($htmldata);
|
392 |
+
|
393 |
+
}
|
394 |
+
}
|
395 |
+
new Mo_wpns_scan_malware();
|
396 |
+
?>
|
controllers/malware_scanner/scan_malware.php
CHANGED
@@ -1,10 +1,9 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
global $moWpnsUtility,$mo2f_dirName;
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
1 |
+
<?php
|
2 |
+
|
3 |
+
global $moWpnsUtility,$mo2f_dirName;
|
4 |
+
|
5 |
+
update_site_option('mo2f_visit_malware',true);
|
6 |
+
|
7 |
+
include_once $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'malware_scanner'.DIRECTORY_SEPARATOR.'malware_scan.php';
|
8 |
+
?>
|
9 |
+
|
|
controllers/malware_scanner/scan_malware_report.php
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
include_once $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'malware_scanner'.DIRECTORY_SEPARATOR.'scan_report_view.php';
|
4 |
-
|
5 |
?>
|
1 |
+
<?php
|
2 |
+
|
3 |
+
include_once $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'malware_scanner'.DIRECTORY_SEPARATOR.'scan_report_view.php';
|
4 |
+
|
5 |
?>
|
controllers/malware_scanner/scan_malware_settings.php
CHANGED
@@ -24,23 +24,21 @@ if(is_null($scan_configuration)){
|
|
24 |
$mo_wpns_check_extl = $scan_configuration->ext_link_check;
|
25 |
$mo_wpns_check_repo = $scan_configuration->check_repo;
|
26 |
}
|
27 |
-
//$mo_wpns_scan_files_extensions = get_option('mo_wpns_scan_files_extensions');
|
28 |
$mo_wpns_check_rfi = 0;
|
29 |
$mo_wpns_adv_sign = 0;
|
30 |
$mo_wpns_check_domain = 0;
|
31 |
$mo_wpns_check_trojan = 0;
|
32 |
$mo_wpns_check_backdoor = 0;
|
33 |
-
//$mo_wpns_skip_folders = get_option('mo_wpns_skip_folders');
|
34 |
$mo_wpns_skip_folders_array = array();
|
35 |
if(!empty($mo_wpns_skip_folders)){
|
36 |
$mo_wpns_skip_folders_array = explode(";",$mo_wpns_skip_folders);
|
37 |
}
|
38 |
-
$mo_wpns_white_url = ""
|
39 |
$mo_wpns_white_urls_array = array();
|
40 |
if(!empty($mo_wpns_white_url)){
|
41 |
$mo_wpns_white_urls_array = explode(";",$mo_wpns_white_url);
|
42 |
}
|
43 |
-
$mo_wpns_custom_sign = ""
|
44 |
$mo_wpns_custom_sign_array = array();
|
45 |
if(!empty($mo_wpns_custom_sign)){
|
46 |
$mo_wpns_custom_sign_array = explode(";",$mo_wpns_custom_sign);
|
24 |
$mo_wpns_check_extl = $scan_configuration->ext_link_check;
|
25 |
$mo_wpns_check_repo = $scan_configuration->check_repo;
|
26 |
}
|
|
|
27 |
$mo_wpns_check_rfi = 0;
|
28 |
$mo_wpns_adv_sign = 0;
|
29 |
$mo_wpns_check_domain = 0;
|
30 |
$mo_wpns_check_trojan = 0;
|
31 |
$mo_wpns_check_backdoor = 0;
|
|
|
32 |
$mo_wpns_skip_folders_array = array();
|
33 |
if(!empty($mo_wpns_skip_folders)){
|
34 |
$mo_wpns_skip_folders_array = explode(";",$mo_wpns_skip_folders);
|
35 |
}
|
36 |
+
$mo_wpns_white_url = "";
|
37 |
$mo_wpns_white_urls_array = array();
|
38 |
if(!empty($mo_wpns_white_url)){
|
39 |
$mo_wpns_white_urls_array = explode(";",$mo_wpns_white_url);
|
40 |
}
|
41 |
+
$mo_wpns_custom_sign = "";
|
42 |
$mo_wpns_custom_sign_array = array();
|
43 |
if(!empty($mo_wpns_custom_sign)){
|
44 |
$mo_wpns_custom_sign_array = explode(";",$mo_wpns_custom_sign);
|
controllers/navbar.php
CHANGED
@@ -10,7 +10,7 @@
|
|
10 |
$security_features->wpns_2fa_with_network_security($_POST); break;
|
11 |
}
|
12 |
}
|
13 |
-
$network_security_features=
|
14 |
|
15 |
if( isset( $_GET[ 'page' ])){
|
16 |
$tab_count= get_site_option('mo2f_tab_count', 0);
|
10 |
$security_features->wpns_2fa_with_network_security($_POST); break;
|
11 |
}
|
12 |
}
|
13 |
+
$network_security_features= MoWpnsUtility::get_mo2f_db_option('mo_wpns_2fa_with_network_security', 'get_option') ? "checked" : "";
|
14 |
|
15 |
if( isset( $_GET[ 'page' ])){
|
16 |
$tab_count= get_site_option('mo2f_tab_count', 0);
|
controllers/newtork_security_features.php
CHANGED
@@ -17,7 +17,7 @@
|
|
17 |
}
|
18 |
|
19 |
|
20 |
-
$network_security_features=
|
21 |
|
22 |
|
23 |
|
17 |
}
|
18 |
|
19 |
|
20 |
+
$network_security_features= MoWpnsUtility::get_mo2f_db_option('mo_wpns_2fa_with_network_security', 'get_option') ? "checked" : "";
|
21 |
|
22 |
|
23 |
|
controllers/notification-settings.php
CHANGED
@@ -23,9 +23,9 @@
|
|
23 |
}
|
24 |
if(!get_option("admin_email_address_status")|| get_option("admin_email_address") ==''){
|
25 |
update_option('mo_wpns_enable_ip_blocked_email_to_admin','0');
|
26 |
-
$notify_admin_on_ip_block =
|
27 |
}
|
28 |
-
$notify_admin_on_ip_block =
|
29 |
$notify_admin_unusual_activity = get_option('mo_wpns_enable_unusual_activity_email_to_user') ? "checked" : "";
|
30 |
|
31 |
$template1 = get_option('custom_admin_template') ? get_option('custom_admin_template') : $template1;
|
23 |
}
|
24 |
if(!get_option("admin_email_address_status")|| get_option("admin_email_address") ==''){
|
25 |
update_option('mo_wpns_enable_ip_blocked_email_to_admin','0');
|
26 |
+
$notify_admin_on_ip_block = MoWpnsUtility::get_mo2f_db_option('mo_wpns_enable_ip_blocked_email_to_admin', 'get_option') ? "" : "unchacked";
|
27 |
}
|
28 |
+
$notify_admin_on_ip_block = MoWpnsUtility::get_mo2f_db_option('mo_wpns_enable_ip_blocked_email_to_admin', 'get_option') ? "checked" : "";
|
29 |
$notify_admin_unusual_activity = get_option('mo_wpns_enable_unusual_activity_email_to_user') ? "checked" : "";
|
30 |
|
31 |
$template1 = get_option('custom_admin_template') ? get_option('custom_admin_template') : $template1;
|
controllers/pointers.php
CHANGED
@@ -5,7 +5,8 @@ $tab= 'default';
|
|
5 |
if(array_key_exists('tab',$_GET))
|
6 |
$tab = $_GET['tab'];
|
7 |
|
8 |
-
if(
|
|
|
9 |
{
|
10 |
$pointers['default-miniorange-2fa-select-authentication'] = array(
|
11 |
'title' => sprintf( '<h3>%s</h3>', esc_html__( 'Select Authentication Method (Step 1 out of 9)' ) ),
|
5 |
if(array_key_exists('tab',$_GET))
|
6 |
$tab = $_GET['tab'];
|
7 |
|
8 |
+
if(MoWpnsUtility::get_mo2f_db_option('mo2f_two_factor_tour', 'get_option') ==1)
|
9 |
+
|
10 |
{
|
11 |
$pointers['default-miniorange-2fa-select-authentication'] = array(
|
12 |
'title' => sprintf( '<h3>%s</h3>', esc_html__( 'Select Authentication Method (Step 1 out of 9)' ) ),
|
controllers/support.php
CHANGED
@@ -1,51 +1,51 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
global $mo2f_dirName;
|
4 |
-
|
5 |
-
if(current_user_can( 'manage_options' ) && isset($_POST['option']))
|
6 |
-
{
|
7 |
-
switch($_POST['option'])
|
8 |
-
{
|
9 |
-
case "mo_wpns_send_query":
|
10 |
-
wpns_handle_support_form($_POST['query_email'],$_POST['query'],$_POST['query_phone']); break;
|
11 |
-
}
|
12 |
-
}
|
13 |
-
|
14 |
-
$current_user = wp_get_current_user();
|
15 |
-
$email = get_option("mo2f_email");
|
16 |
-
$phone = get_option("mo_wpns_admin_phone");
|
17 |
-
|
18 |
-
|
19 |
-
if(empty($email))
|
20 |
-
$email = $current_user->user_email;
|
21 |
-
|
22 |
-
include $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'support.php';
|
23 |
-
|
24 |
-
|
25 |
-
/* SUPPORT FORM RELATED FUNCTIONS */
|
26 |
-
|
27 |
-
//Function to handle support form submit
|
28 |
-
function wpns_handle_support_form($email,$query,$phone)
|
29 |
-
{
|
30 |
-
|
31 |
-
if( empty($email) || empty($query) )
|
32 |
-
{
|
33 |
-
do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_VALUES'),'SUCCESS');
|
34 |
-
return;
|
35 |
-
}
|
36 |
-
|
37 |
-
|
38 |
-
$query = sanitize_text_field( $query );
|
39 |
-
$email = sanitize_text_field( $email );
|
40 |
-
$phone = sanitize_text_field( $phone );
|
41 |
-
$contact_us = new MocURL();
|
42 |
-
$submited = json_decode($contact_us->submit_contact_us($email, $phone, $query),true);
|
43 |
-
|
44 |
-
if(json_last_error() == JSON_ERROR_NONE && $submited)
|
45 |
-
{
|
46 |
-
do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_SENT'),'SUCCESS');
|
47 |
-
return;
|
48 |
-
}
|
49 |
-
|
50 |
-
do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_ERROR'),'ERROR');
|
51 |
}
|
1 |
+
<?php
|
2 |
+
|
3 |
+
global $mo2f_dirName;
|
4 |
+
|
5 |
+
if(current_user_can( 'manage_options' ) && isset($_POST['option']))
|
6 |
+
{
|
7 |
+
switch($_POST['option'])
|
8 |
+
{
|
9 |
+
case "mo_wpns_send_query":
|
10 |
+
wpns_handle_support_form($_POST['query_email'],$_POST['query'],$_POST['query_phone']); break;
|
11 |
+
}
|
12 |
+
}
|
13 |
+
|
14 |
+
$current_user = wp_get_current_user();
|
15 |
+
$email = get_option("mo2f_email");
|
16 |
+
$phone = get_option("mo_wpns_admin_phone");
|
17 |
+
|
18 |
+
|
19 |
+
if(empty($email))
|
20 |
+
$email = $current_user->user_email;
|
21 |
+
|
22 |
+
include $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'support.php';
|
23 |
+
|
24 |
+
|
25 |
+
/* SUPPORT FORM RELATED FUNCTIONS */
|
26 |
+
|
27 |
+
//Function to handle support form submit
|
28 |
+
function wpns_handle_support_form($email,$query,$phone)
|
29 |
+
{
|
30 |
+
|
31 |
+
if( empty($email) || empty($query) )
|
32 |
+
{
|
33 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_VALUES'),'SUCCESS');
|
34 |
+
return;
|
35 |
+
}
|
36 |
+
|
37 |
+
|
38 |
+
$query = sanitize_text_field( $query );
|
39 |
+
$email = sanitize_text_field( $email );
|
40 |
+
$phone = sanitize_text_field( $phone );
|
41 |
+
$contact_us = new MocURL();
|
42 |
+
$submited = json_decode($contact_us->submit_contact_us($email, $phone, $query),true);
|
43 |
+
|
44 |
+
if(json_last_error() == JSON_ERROR_NONE && $submited)
|
45 |
+
{
|
46 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_SENT'),'SUCCESS');
|
47 |
+
return;
|
48 |
+
}
|
49 |
+
|
50 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('SUPPORT_FORM_ERROR'),'ERROR');
|
51 |
}
|
controllers/tour-model.php
CHANGED
@@ -5,7 +5,7 @@
|
|
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 =
|
9 |
if(empty($email))
|
10 |
$email = $current_user->user_email;
|
11 |
$counter = 0;
|
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;
|
controllers/tour/tour_ajax.php
CHANGED
@@ -1,146 +1,146 @@
|
|
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(!
|
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 |
?>
|
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/two-fa-intro.php
CHANGED
@@ -1,222 +1,222 @@
|
|
1 |
-
|
2 |
-
<div id="mo2f_2fa_intro" class = "modal" style="display: block;">
|
3 |
-
<div id="mo2f_2fa_intro_modal" class="modal-content" style="width: 40%;overflow: hidden;padding:50px;" >
|
4 |
-
|
5 |
-
<div class="modal-header" style="border-bottom: none;">
|
6 |
-
<h2 class="modal-title" style="text-align: center; font-size: 20px; color: #2980b9">
|
7 |
-
<span id="closeintromodal" class="close modal-span-close" onclick="skipintro();">X</span>
|
8 |
-
</h2>
|
9 |
-
</div>
|
10 |
-
|
11 |
-
<div class="modal-body" style="height: auto;">
|
12 |
-
<center>
|
13 |
-
<div class="checkmark-circle" >
|
14 |
-
<div class="background"></div>
|
15 |
-
<div class="checkmark draw"></div>
|
16 |
-
</div>
|
17 |
-
<h1>Awesome!!</h1>
|
18 |
-
<h2 style="color: black;font-size: 20px;">You are ready to use Two Factor.</h2>
|
19 |
-
</center>
|
20 |
-
<div >
|
21 |
-
<h3 style="color: black;display:none;" ><span style="color:red;">Logout</span> : You can logout and get the same experience as your users. </h3>
|
22 |
-
|
23 |
-
</div>
|
24 |
-
</div>
|
25 |
-
|
26 |
-
<div class="modal-footer" style="border: 0px;">
|
27 |
-
<button type="button" class="mo_wpns_button mo_wpns_button1 modal-button readytogo mo2f_advance_setting" onclick="skipintro();">Advance Settings</button>
|
28 |
-
<button type="button" class="mo_wpns_button mo_wpns_button1 modal-button " style="margin-left: 5%;width: 40%;background-color:#2EB150;float: left;min-height: 54px;border: 2px solid black;" title="Logout and check the user experience" onclick="mo2f_userlogout()">Logout and Configure</button>
|
29 |
-
<div class="mo2f_tooltip_addon logout mo_wpns_button mo_wpns_button1 modal-button " style="float: left;border: 2px solid black;border-left:none;width: 6%;box-shadow: none;text-decoration:none;background-color: #2EB150;margin-left: -5px;min-height: 50px;">
|
30 |
-
<span class="dashicons dashicons-info mo2f_info_tab" style="color: white;font-size: 27px;margin-top: 14px;margin-left: -12px;"></span>
|
31 |
-
<span class="mo2f_tooltiptext_addon mo2f_logout_and_configure_info" style="font-size: 20px;font-family: auto; text-align: justify;font-weight: lighter;background-color: #2EB150; font-size: 20px;">
|
32 |
-
<ul style="list-style-type:square;margin: 10px 18px 10px 18px;"><li>This will logout you and will ask you to set your 2FA on next login.</li><li> New and existing users can set their 2FA on next login.</li></ul>
|
33 |
-
</span>
|
34 |
-
<span class="mo2f_tooltiptext_addon" style="color: #2EB150;background: none; margin-left: -200px; margin-top: -38px;">
|
35 |
-
<span class="dashicons dashicons-arrow-down" style="font-size: 300%;"></span>
|
36 |
-
</span>
|
37 |
-
</div>
|
38 |
-
|
39 |
-
</div>
|
40 |
-
</div>
|
41 |
-
</div>
|
42 |
-
<form name="f" id="mo2f_skiploginform" method="post" action="">
|
43 |
-
<input type="hidden" name="mo2f_skiplogin_nonce" value="<?php echo wp_create_nonce( 'miniorange-2-factor-skiplogin-failed-nonce' ); ?>"/>
|
44 |
-
<input type="hidden" name="option" value="mo2f_skiplogin"/>
|
45 |
-
</form>
|
46 |
-
<form name="f" id="mo2f_userlogoutform" method="post" action="">
|
47 |
-
<input type="hidden" name="mo2f_userlogout_nonce" value="<?php echo wp_create_nonce( 'miniorange-2-factor-userlogout-failed-nonce' ); ?>"/>
|
48 |
-
<input type="hidden" name="option" value="mo2f_userlogout"/>
|
49 |
-
</form>
|
50 |
-
|
51 |
-
<script>
|
52 |
-
function mo2f_userlogout() {
|
53 |
-
jQuery("#mo2f_userlogoutform").submit();
|
54 |
-
}
|
55 |
-
|
56 |
-
function skipintro() {
|
57 |
-
jQuery("#mo2f_skiploginform").submit();
|
58 |
-
}
|
59 |
-
</script>
|
60 |
-
|
61 |
-
<style>
|
62 |
-
|
63 |
-
.modalhover:hover{
|
64 |
-
border:2px solid #2EB150;
|
65 |
-
background: #2EB150 !important;
|
66 |
-
color:white !important;
|
67 |
-
}
|
68 |
-
.checkmark-circle {
|
69 |
-
width: 150px;
|
70 |
-
height: 150px;
|
71 |
-
position: relative;
|
72 |
-
display: inline-block;
|
73 |
-
vertical-align: top;
|
74 |
-
}
|
75 |
-
.checkmark-circle .background {
|
76 |
-
width: 150px;
|
77 |
-
height: 150px;
|
78 |
-
border-radius: 50%;
|
79 |
-
background: #2EB150;
|
80 |
-
position: absolute;
|
81 |
-
}
|
82 |
-
.checkmark-circle .checkmark {
|
83 |
-
border-radius: 5px;
|
84 |
-
}
|
85 |
-
.checkmark-circle .checkmark.draw:after {
|
86 |
-
-webkit-animation-delay: 100ms;
|
87 |
-
-moz-animation-delay: 100ms;
|
88 |
-
animation-delay: 100ms;
|
89 |
-
-webkit-animation-duration: 1s;
|
90 |
-
-moz-animation-duration: 1s;
|
91 |
-
animation-duration: 1s;
|
92 |
-
-webkit-animation-timing-function: ease;
|
93 |
-
-moz-animation-timing-function: ease;
|
94 |
-
animation-timing-function: ease;
|
95 |
-
-webkit-animation-name: checkmark;
|
96 |
-
-moz-animation-name: checkmark;
|
97 |
-
animation-name: checkmark;
|
98 |
-
-webkit-transform: scaleX(-1) rotate(130deg);
|
99 |
-
-moz-transform: scaleX(-1) rotate(130deg);
|
100 |
-
-ms-transform: scaleX(-1) rotate(130deg);
|
101 |
-
-o-transform: scaleX(-1) rotate(130deg);
|
102 |
-
transform: scaleX(-1) rotate(130deg);
|
103 |
-
-webkit-animation-fill-mode: forwards;
|
104 |
-
-moz-animation-fill-mode: forwards;
|
105 |
-
animation-fill-mode: forwards;
|
106 |
-
}
|
107 |
-
.checkmark-circle .checkmark:after {
|
108 |
-
opacity: 1;
|
109 |
-
height: 75px;
|
110 |
-
width: 37.5px;
|
111 |
-
-webkit-transform-origin: left top;
|
112 |
-
-moz-transform-origin: left top;
|
113 |
-
-ms-transform-origin: left top;
|
114 |
-
-o-transform-origin: left top;
|
115 |
-
transform-origin: left top;
|
116 |
-
border-right: 15px solid white;
|
117 |
-
border-top: 15px solid white;
|
118 |
-
border-radius: 2.5px !important;
|
119 |
-
content: '';
|
120 |
-
left: 25px;
|
121 |
-
top: 75px;
|
122 |
-
position: absolute;
|
123 |
-
}
|
124 |
-
|
125 |
-
@-webkit-keyframes checkmark {
|
126 |
-
0% {
|
127 |
-
height: 0;
|
128 |
-
width: 0;
|
129 |
-
opacity: 1;
|
130 |
-
}
|
131 |
-
20% {
|
132 |
-
height: 0;
|
133 |
-
width: 37.5px;
|
134 |
-
opacity: 1;
|
135 |
-
}
|
136 |
-
40% {
|
137 |
-
height: 75px;
|
138 |
-
width: 37.5px;
|
139 |
-
opacity: 1;
|
140 |
-
}
|
141 |
-
100% {
|
142 |
-
height: 75px;
|
143 |
-
width: 37.5px;
|
144 |
-
opacity: 1;
|
145 |
-
}
|
146 |
-
}
|
147 |
-
@-moz-keyframes checkmark {
|
148 |
-
0% {
|
149 |
-
height: 0;
|
150 |
-
width: 0;
|
151 |
-
opacity: 1;
|
152 |
-
}
|
153 |
-
20% {
|
154 |
-
height: 0;
|
155 |
-
width: 37.5px;
|
156 |
-
opacity: 1;
|
157 |
-
}
|
158 |
-
40% {
|
159 |
-
height: 75px;
|
160 |
-
width: 37.5px;
|
161 |
-
opacity: 1;
|
162 |
-
}
|
163 |
-
100% {
|
164 |
-
height: 75px;
|
165 |
-
width: 37.5px;
|
166 |
-
opacity: 1;
|
167 |
-
}
|
168 |
-
}
|
169 |
-
@keyframes checkmark {
|
170 |
-
0% {
|
171 |
-
height: 0;
|
172 |
-
width: 0;
|
173 |
-
opacity: 1;
|
174 |
-
}
|
175 |
-
20% {
|
176 |
-
height: 0;
|
177 |
-
width: 37.5px;
|
178 |
-
opacity: 1;
|
179 |
-
}
|
180 |
-
40% {
|
181 |
-
height: 75px;
|
182 |
-
width: 37.5px;
|
183 |
-
opacity: 1;
|
184 |
-
}
|
185 |
-
100% {
|
186 |
-
height: 75px;
|
187 |
-
width: 37.5px;
|
188 |
-
opacity: 1;
|
189 |
-
}
|
190 |
-
}
|
191 |
-
body{
|
192 |
-
background-color: #e6e6e6;
|
193 |
-
width: 100%;
|
194 |
-
height: 100%;
|
195 |
-
}
|
196 |
-
#success_tic .page-body{
|
197 |
-
max-width:300px;
|
198 |
-
background-color:#FFFFFF;
|
199 |
-
margin:10% auto;
|
200 |
-
}
|
201 |
-
#success_tic .page-body .head{
|
202 |
-
text-align:center;
|
203 |
-
}
|
204 |
-
/* #success_tic .tic{
|
205 |
-
font-size:186px;
|
206 |
-
} */
|
207 |
-
.close{
|
208 |
-
opacity: 1;
|
209 |
-
position: absolute;
|
210 |
-
right: 0px;
|
211 |
-
font-size: 30px;
|
212 |
-
padding: 3px 15px;
|
213 |
-
margin-bottom: 10px;
|
214 |
-
float: right;
|
215 |
-
font-size: 21px;
|
216 |
-
font-weight: 700;
|
217 |
-
line-height: 1;
|
218 |
-
color: #000;
|
219 |
-
text-shadow: 0 1px 0 #fff;
|
220 |
-
}
|
221 |
-
|
222 |
-
</style>
|
1 |
+
|
2 |
+
<div id="mo2f_2fa_intro" class = "modal" style="display: block;">
|
3 |
+
<div id="mo2f_2fa_intro_modal" class="modal-content" style="width: 40%;overflow: hidden;padding:50px;" >
|
4 |
+
|
5 |
+
<div class="modal-header" style="border-bottom: none;">
|
6 |
+
<h2 class="modal-title" style="text-align: center; font-size: 20px; color: #2980b9">
|
7 |
+
<span id="closeintromodal" class="close modal-span-close" onclick="skipintro();">X</span>
|
8 |
+
</h2>
|
9 |
+
</div>
|
10 |
+
|
11 |
+
<div class="modal-body" style="height: auto;">
|
12 |
+
<center>
|
13 |
+
<div class="checkmark-circle" >
|
14 |
+
<div class="background"></div>
|
15 |
+
<div class="checkmark draw"></div>
|
16 |
+
</div>
|
17 |
+
<h1>Awesome!!</h1>
|
18 |
+
<h2 style="color: black;font-size: 20px;">You are ready to use Two Factor.</h2>
|
19 |
+
</center>
|
20 |
+
<div >
|
21 |
+
<h3 style="color: black;display:none;" ><span style="color:red;">Logout</span> : You can logout and get the same experience as your users. </h3>
|
22 |
+
|
23 |
+
</div>
|
24 |
+
</div>
|
25 |
+
|
26 |
+
<div class="modal-footer" style="border: 0px;">
|
27 |
+
<button type="button" class="mo_wpns_button mo_wpns_button1 modal-button readytogo mo2f_advance_setting" onclick="skipintro();">Advance Settings</button>
|
28 |
+
<button type="button" class="mo_wpns_button mo_wpns_button1 modal-button " style="margin-left: 5%;width: 40%;background-color:#2EB150;float: left;min-height: 54px;border: 2px solid black;" title="Logout and check the user experience" onclick="mo2f_userlogout()">Logout and Configure</button>
|
29 |
+
<div class="mo2f_tooltip_addon logout mo_wpns_button mo_wpns_button1 modal-button " style="float: left;border: 2px solid black;border-left:none;width: 6%;box-shadow: none;text-decoration:none;background-color: #2EB150;margin-left: -5px;min-height: 50px;">
|
30 |
+
<span class="dashicons dashicons-info mo2f_info_tab" style="color: white;font-size: 27px;margin-top: 14px;margin-left: -12px;"></span>
|
31 |
+
<span class="mo2f_tooltiptext_addon mo2f_logout_and_configure_info" style="font-size: 20px;font-family: auto; text-align: justify;font-weight: lighter;background-color: #2EB150; font-size: 20px;">
|
32 |
+
<ul style="list-style-type:square;margin: 10px 18px 10px 18px;"><li>This will logout you and will ask you to set your 2FA on next login.</li><li> New and existing users can set their 2FA on next login.</li></ul>
|
33 |
+
</span>
|
34 |
+
<span class="mo2f_tooltiptext_addon" style="color: #2EB150;background: none; margin-left: -200px; margin-top: -38px;">
|
35 |
+
<span class="dashicons dashicons-arrow-down" style="font-size: 300%;"></span>
|
36 |
+
</span>
|
37 |
+
</div>
|
38 |
+
|
39 |
+
</div>
|
40 |
+
</div>
|
41 |
+
</div>
|
42 |
+
<form name="f" id="mo2f_skiploginform" method="post" action="">
|
43 |
+
<input type="hidden" name="mo2f_skiplogin_nonce" value="<?php echo wp_create_nonce( 'miniorange-2-factor-skiplogin-failed-nonce' ); ?>"/>
|
44 |
+
<input type="hidden" name="option" value="mo2f_skiplogin"/>
|
45 |
+
</form>
|
46 |
+
<form name="f" id="mo2f_userlogoutform" method="post" action="">
|
47 |
+
<input type="hidden" name="mo2f_userlogout_nonce" value="<?php echo wp_create_nonce( 'miniorange-2-factor-userlogout-failed-nonce' ); ?>"/>
|
48 |
+
<input type="hidden" name="option" value="mo2f_userlogout"/>
|
49 |
+
</form>
|
50 |
+
|
51 |
+
<script>
|
52 |
+
function mo2f_userlogout() {
|
53 |
+
jQuery("#mo2f_userlogoutform").submit();
|
54 |
+
}
|
55 |
+
|
56 |
+
function skipintro() {
|
57 |
+
jQuery("#mo2f_skiploginform").submit();
|
58 |
+
}
|
59 |
+
</script>
|
60 |
+
|
61 |
+
<style>
|
62 |
+
|
63 |
+
.modalhover:hover{
|
64 |
+
border:2px solid #2EB150;
|
65 |
+
background: #2EB150 !important;
|
66 |
+
color:white !important;
|
67 |
+
}
|
68 |
+
.checkmark-circle {
|
69 |
+
width: 150px;
|
70 |
+
height: 150px;
|
71 |
+
position: relative;
|
72 |
+
display: inline-block;
|
73 |
+
vertical-align: top;
|
74 |
+
}
|
75 |
+
.checkmark-circle .background {
|
76 |
+
width: 150px;
|
77 |
+
height: 150px;
|
78 |
+
border-radius: 50%;
|
79 |
+
background: #2EB150;
|
80 |
+
position: absolute;
|
81 |
+
}
|
82 |
+
.checkmark-circle .checkmark {
|
83 |
+
border-radius: 5px;
|
84 |
+
}
|
85 |
+
.checkmark-circle .checkmark.draw:after {
|
86 |
+
-webkit-animation-delay: 100ms;
|
87 |
+
-moz-animation-delay: 100ms;
|
88 |
+
animation-delay: 100ms;
|
89 |
+
-webkit-animation-duration: 1s;
|
90 |
+
-moz-animation-duration: 1s;
|
91 |
+
animation-duration: 1s;
|
92 |
+
-webkit-animation-timing-function: ease;
|
93 |
+
-moz-animation-timing-function: ease;
|
94 |
+
animation-timing-function: ease;
|
95 |
+
-webkit-animation-name: checkmark;
|
96 |
+
-moz-animation-name: checkmark;
|
97 |
+
animation-name: checkmark;
|
98 |
+
-webkit-transform: scaleX(-1) rotate(130deg);
|
99 |
+
-moz-transform: scaleX(-1) rotate(130deg);
|
100 |
+
-ms-transform: scaleX(-1) rotate(130deg);
|
101 |
+
-o-transform: scaleX(-1) rotate(130deg);
|
102 |
+
transform: scaleX(-1) rotate(130deg);
|
103 |
+
-webkit-animation-fill-mode: forwards;
|
104 |
+
-moz-animation-fill-mode: forwards;
|
105 |
+
animation-fill-mode: forwards;
|
106 |
+
}
|
107 |
+
.checkmark-circle .checkmark:after {
|
108 |
+
opacity: 1;
|
109 |
+
height: 75px;
|
110 |
+
width: 37.5px;
|
111 |
+
-webkit-transform-origin: left top;
|
112 |
+
-moz-transform-origin: left top;
|
113 |
+
-ms-transform-origin: left top;
|
114 |
+
-o-transform-origin: left top;
|
115 |
+
transform-origin: left top;
|
116 |
+
border-right: 15px solid white;
|
117 |
+
border-top: 15px solid white;
|
118 |
+
border-radius: 2.5px !important;
|
119 |
+
content: '';
|
120 |
+
left: 25px;
|
121 |
+
top: 75px;
|
122 |
+
position: absolute;
|
123 |
+
}
|
124 |
+
|
125 |
+
@-webkit-keyframes checkmark {
|
126 |
+
0% {
|
127 |
+
height: 0;
|
128 |
+
width: 0;
|
129 |
+
opacity: 1;
|
130 |
+
}
|
131 |
+
20% {
|
132 |
+
height: 0;
|
133 |
+
width: 37.5px;
|
134 |
+
opacity: 1;
|
135 |
+
}
|
136 |
+
40% {
|
137 |
+
height: 75px;
|
138 |
+
width: 37.5px;
|
139 |
+
opacity: 1;
|
140 |
+
}
|
141 |
+
100% {
|
142 |
+
height: 75px;
|
143 |
+
width: 37.5px;
|
144 |
+
opacity: 1;
|
145 |
+
}
|
146 |
+
}
|
147 |
+
@-moz-keyframes checkmark {
|
148 |
+
0% {
|
149 |
+
height: 0;
|
150 |
+
width: 0;
|
151 |
+
opacity: 1;
|
152 |
+
}
|
153 |
+
20% {
|
154 |
+
height: 0;
|
155 |
+
width: 37.5px;
|
156 |
+
opacity: 1;
|
157 |
+
}
|
158 |
+
40% {
|
159 |
+
height: 75px;
|
160 |
+
width: 37.5px;
|
161 |
+
opacity: 1;
|
162 |
+
}
|
163 |
+
100% {
|
164 |
+
height: 75px;
|
165 |
+
width: 37.5px;
|
166 |
+
opacity: 1;
|
167 |
+
}
|
168 |
+
}
|
169 |
+
@keyframes checkmark {
|
170 |
+
0% {
|
171 |
+
height: 0;
|
172 |
+
width: 0;
|
173 |
+
opacity: 1;
|
174 |
+
}
|
175 |
+
20% {
|
176 |
+
height: 0;
|
177 |
+
width: 37.5px;
|
178 |
+
opacity: 1;
|
179 |
+
}
|
180 |
+
40% {
|
181 |
+
height: 75px;
|
182 |
+
width: 37.5px;
|
183 |
+
opacity: 1;
|
184 |
+
}
|
185 |
+
100% {
|
186 |
+
height: 75px;
|
187 |
+
width: 37.5px;
|
188 |
+
opacity: 1;
|
189 |
+
}
|
190 |
+
}
|
191 |
+
body{
|
192 |
+
background-color: #e6e6e6;
|
193 |
+
width: 100%;
|
194 |
+
height: 100%;
|
195 |
+
}
|
196 |
+
#success_tic .page-body{
|
197 |
+
max-width:300px;
|
198 |
+
background-color:#FFFFFF;
|
199 |
+
margin:10% auto;
|
200 |
+
}
|
201 |
+
#success_tic .page-body .head{
|
202 |
+
text-align:center;
|
203 |
+
}
|
204 |
+
/* #success_tic .tic{
|
205 |
+
font-size:186px;
|
206 |
+
} */
|
207 |
+
.close{
|
208 |
+
opacity: 1;
|
209 |
+
position: absolute;
|
210 |
+
right: 0px;
|
211 |
+
font-size: 30px;
|
212 |
+
padding: 3px 15px;
|
213 |
+
margin-bottom: 10px;
|
214 |
+
float: right;
|
215 |
+
font-size: 21px;
|
216 |
+
font-weight: 700;
|
217 |
+
line-height: 1;
|
218 |
+
color: #000;
|
219 |
+
text-shadow: 0 1px 0 #fff;
|
220 |
+
}
|
221 |
+
|
222 |
+
</style>
|
controllers/twofa/mo2fa_common_login.php
CHANGED
@@ -51,13 +51,21 @@ function redirect_user_to( $user, $redirect_to ) {
|
|
51 |
$redirectUrl = isset( $redirect_to ) && ! empty( $redirect_to ) ? $redirect_to : null;
|
52 |
if ( $current_role == 'administrator' ) {
|
53 |
$redirectUrl = empty( $redirectUrl ) ? admin_url() : $redirectUrl;
|
54 |
-
wp_redirect( $redirectUrl );
|
55 |
} else {
|
56 |
$redirectUrl = empty( $redirectUrl ) ? home_url() : $redirectUrl;
|
57 |
-
wp_redirect( $redirectUrl );
|
58 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
59 |
}
|
60 |
|
|
|
61 |
// used in shortcode addon
|
62 |
|
63 |
function miniorange_check_if_2fa_enabled_for_roles( $current_roles ) {
|
@@ -163,7 +171,7 @@ function mo2f_get_user_2ndfactor( $user ) {
|
|
163 |
}
|
164 |
|
165 |
function mo2f_get_forgotphone_form( $login_status, $login_message, $redirect_to, $session_id_encrypt ) {
|
166 |
-
$mo2f_forgotphone_enabled =
|
167 |
$mo2f_email_as_backup_enabled = get_option( 'mo2f_enable_forgotphone_email' );
|
168 |
$mo2f_kba_as_backup_enabled = get_option( 'mo2f_enable_forgotphone_kba' );
|
169 |
?>
|
@@ -249,8 +257,7 @@ function mo2f_get_forgotphone_form( $login_status, $login_message, $redirect_to,
|
|
249 |
|
250 |
function mo2f_get_kba_authentication_prompt( $login_message, $redirect_to, $session_id_encrypt , $cookievalue) {
|
251 |
$mo_wpns_config = new MoWpnsHandler();
|
252 |
-
|
253 |
-
$mo2f_login_option = get_option( 'mo2f_login_option' );
|
254 |
$mo2f_remember_device_enabled = get_option( 'mo2f_remember_device' );
|
255 |
?>
|
256 |
<html>
|
@@ -342,6 +349,48 @@ function mo2f_get_kba_authentication_prompt( $login_message, $redirect_to, $sess
|
|
342 |
function mologinback() {
|
343 |
jQuery('#mo2f_backto_mo_loginform').submit();
|
344 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
345 |
</script>
|
346 |
</body>
|
347 |
|
@@ -353,9 +402,9 @@ function mo2f_get_push_notification_oobemail_prompt( $id, $login_status, $login_
|
|
353 |
$mo_wpns_config = new MoWpnsHandler();
|
354 |
|
355 |
global $Mo2fdbQueries,$txid;
|
356 |
-
$mo2f_enable_forgotphone =
|
357 |
$mo2f_KBA_config_status = $Mo2fdbQueries->get_user_detail( 'mo2f_SecurityQuestions_config_status', $id );
|
358 |
-
$mo2f_is_new_customer =
|
359 |
$mo2f_EV_txid = get_user_meta($id,'mo2f_EV_txid',true);
|
360 |
if(!MO2F_IS_ONPREM)
|
361 |
$mo2f_EV_txid = $_SESSION['mo2f_transactionId'];
|
@@ -478,8 +527,9 @@ function mo2f_get_push_notification_oobemail_prompt( $id, $login_status, $login_
|
|
478 |
var timeout;
|
479 |
var login_status = '<?php echo $login_status;?>';
|
480 |
var calls = 0;
|
481 |
-
|
482 |
-
|
|
|
483 |
{
|
484 |
pollPushValidation();
|
485 |
function pollPushValidation()
|
@@ -565,9 +615,9 @@ function mo2f_get_push_notification_oobemail_prompt( $id, $login_status, $login_
|
|
565 |
}
|
566 |
|
567 |
function mo2f_get_qrcode_authentication_prompt( $login_status, $login_message, $redirect_to, $qrCode, $session_id_encrypt , $cookievalue) {
|
568 |
-
$mo2f_enable_forgotphone =
|
569 |
$mo_wpns_config = new MoWpnsHandler();
|
570 |
-
$mo2f_is_new_customer =
|
571 |
?>
|
572 |
<html>
|
573 |
<head>
|
@@ -712,10 +762,10 @@ function mo2f_get_qrcode_authentication_prompt( $login_status, $login_message, $
|
|
712 |
<?php
|
713 |
}
|
714 |
|
715 |
-
function mo2f_get_otp_authentication_prompt( $login_status, $login_message, $redirect_to,$session_id_encrypt,$user_id ) {
|
716 |
-
$mo2f_enable_forgotphone =
|
717 |
$mo_wpns_config = new MoWpnsHandler();
|
718 |
-
$mo2f_is_new_customer =
|
719 |
$attempts = get_option('mo2f_attempts_before_redirect', 3);
|
720 |
?>
|
721 |
<html>
|
@@ -765,6 +815,17 @@ function mo2f_get_otp_authentication_prompt( $login_status, $login_message, $red
|
|
765 |
<input type="submit" name="miniorange_otp_token_submit" id="miniorange_otp_token_submit"
|
766 |
class="miniorange_otp_token_submit"
|
767 |
value="<?php echo mo2f_lt( 'Validate' ); ?>"/>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
768 |
<input type="hidden" name="request_origin_method" value="<?php echo $login_status; ?>"/>
|
769 |
<input type="hidden" name="miniorange_soft_token_nonce"
|
770 |
value="<?php echo wp_create_nonce( 'miniorange-2-factor-soft-token-nonce' ); ?>"/>
|
@@ -772,7 +833,7 @@ function mo2f_get_otp_authentication_prompt( $login_status, $login_message, $red
|
|
772 |
<input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
|
773 |
<input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
|
774 |
</form>
|
775 |
-
|
776 |
$Kbaset = get_user_meta( $user_id ,'Security Questions' );
|
777 |
if ( ! $mo2f_is_new_customer ) { ?>
|
778 |
<?php if ( $mo2f_enable_forgotphone && isset( $login_status ) && $login_status != 'MO_2_FACTOR_CHALLENGE_OTP_OVER_EMAIL' && (sizeof($Kbaset) != 0 ) ) { ?>
|
@@ -792,13 +853,24 @@ function mo2f_get_otp_authentication_prompt( $login_status, $login_message, $red
|
|
792 |
</div>
|
793 |
</div>
|
794 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
795 |
<form name="f" id="mo2f_backto_mo_loginform" method="post" action="<?php echo wp_login_url(); ?>"
|
796 |
class="mo2f_display_none_forms">
|
797 |
<input type="hidden" name="miniorange_mobile_validation_failed_nonce"
|
798 |
value="<?php echo wp_create_nonce( 'miniorange-2-factor-mobile-validation-failed-nonce' ); ?>"/>
|
799 |
<input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
|
800 |
</form>
|
801 |
-
<?php if (
|
802 |
<form name="f" id="mo2f_show_forgotphone_loginform" method="post" action="" class="mo2f_display_none_forms">
|
803 |
<input type="hidden" name="request_origin_method" value="<?php echo $login_status; ?>"/>
|
804 |
<input type="hidden" name="miniorange_forgotphone"
|
@@ -807,9 +879,14 @@ function mo2f_get_otp_authentication_prompt( $login_status, $login_message, $red
|
|
807 |
<input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
|
808 |
<input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
|
809 |
</form>
|
|
|
810 |
<?php } ?>
|
811 |
|
812 |
<script>
|
|
|
|
|
|
|
|
|
813 |
function mologinback() {
|
814 |
jQuery('#mo2f_backto_mo_loginform').submit();
|
815 |
}
|
@@ -817,6 +894,41 @@ function mo2f_get_otp_authentication_prompt( $login_status, $login_message, $red
|
|
817 |
function mologinforgotphone() {
|
818 |
jQuery('#mo2f_show_forgotphone_loginform').submit();
|
819 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
820 |
</script>
|
821 |
</body>
|
822 |
</html>
|
@@ -901,14 +1013,14 @@ function mo2f_get_device_form( $redirect_to, $session_id_encrypt ) {
|
|
901 |
}
|
902 |
|
903 |
function mo_check_device_confirm() {
|
904 |
-
jQuery('#mo2f_device_content').
|
905 |
-
jQuery('#showLoadingBar').
|
906 |
jQuery('#mo2f_trust_device_confirm_form').submit();
|
907 |
}
|
908 |
|
909 |
function mo_check_device_cancel() {
|
910 |
-
jQuery('#mo2f_device_content').
|
911 |
-
jQuery('#showLoadingBar').
|
912 |
jQuery('#mo2f_trust_device_cancel_form').submit();
|
913 |
}
|
914 |
</script>
|
51 |
$redirectUrl = isset( $redirect_to ) && ! empty( $redirect_to ) ? $redirect_to : null;
|
52 |
if ( $current_role == 'administrator' ) {
|
53 |
$redirectUrl = empty( $redirectUrl ) ? admin_url() : $redirectUrl;
|
|
|
54 |
} else {
|
55 |
$redirectUrl = empty( $redirectUrl ) ? home_url() : $redirectUrl;
|
|
|
56 |
}
|
57 |
+
if(MO2f_Utility::get_index_value('GLOBALS','mo2f_is_ajax_request')){
|
58 |
+
$redirect = array(
|
59 |
+
'redirect' => $redirectUrl,
|
60 |
+
) ;
|
61 |
+
|
62 |
+
wp_send_json_success($redirect);
|
63 |
+
}
|
64 |
+
else
|
65 |
+
wp_redirect( $redirectUrl );
|
66 |
}
|
67 |
|
68 |
+
|
69 |
// used in shortcode addon
|
70 |
|
71 |
function miniorange_check_if_2fa_enabled_for_roles( $current_roles ) {
|
171 |
}
|
172 |
|
173 |
function mo2f_get_forgotphone_form( $login_status, $login_message, $redirect_to, $session_id_encrypt ) {
|
174 |
+
$mo2f_forgotphone_enabled = MoWpnsUtility::get_mo2f_db_option('mo2f_enable_forgotphone', 'get_option');
|
175 |
$mo2f_email_as_backup_enabled = get_option( 'mo2f_enable_forgotphone_email' );
|
176 |
$mo2f_kba_as_backup_enabled = get_option( 'mo2f_enable_forgotphone_kba' );
|
177 |
?>
|
257 |
|
258 |
function mo2f_get_kba_authentication_prompt( $login_message, $redirect_to, $session_id_encrypt , $cookievalue) {
|
259 |
$mo_wpns_config = new MoWpnsHandler();
|
260 |
+
$mo2f_login_option = MoWpnsUtility::get_mo2f_db_option('mo2f_login_option', 'get_option');
|
|
|
261 |
$mo2f_remember_device_enabled = get_option( 'mo2f_remember_device' );
|
262 |
?>
|
263 |
<html>
|
349 |
function mologinback() {
|
350 |
jQuery('#mo2f_backto_mo_loginform').submit();
|
351 |
}
|
352 |
+
var is_ajax = "<?php echo MO2f_Utility::get_index_value('GLOBALS','mo2f_is_ajax_request');?>";
|
353 |
+
if(is_ajax){
|
354 |
+
jQuery('#mo2f_answer_1').keypress(function (e) {
|
355 |
+
if (e.which == 13) {//Enter key pressed
|
356 |
+
e.preventDefault();
|
357 |
+
mo2f_kba_ajax();
|
358 |
+
}
|
359 |
+
});
|
360 |
+
jQuery('#mo2f_answer_2').keypress(function (e) {
|
361 |
+
if (e.which == 13) {//Enter key pressed
|
362 |
+
e.preventDefault();
|
363 |
+
mo2f_kba_ajax();
|
364 |
+
}
|
365 |
+
});
|
366 |
+
jQuery("#miniorange_kba_validate").click(function(e){
|
367 |
+
e.preventDefault();
|
368 |
+
mo2f_kba_ajax();
|
369 |
+
});
|
370 |
+
|
371 |
+
function mo2f_kba_ajax(){
|
372 |
+
jQuery('#mo2f_answer_1').prop('disabled','true');
|
373 |
+
jQuery('#mo2f_answer_2').prop('disabled','true');
|
374 |
+
jQuery('#miniorange_kba_validate').prop('disabled','true');
|
375 |
+
var data = {
|
376 |
+
"action" : "mo2f_ajax",
|
377 |
+
"mo2f_ajax_option" : "mo2f_ajax_kba",
|
378 |
+
"mo2f_answer_1" : jQuery( "input[name=\'mo2f_answer_1\']" ).val(),
|
379 |
+
"mo2f_answer_2" : jQuery( "input[name=\'mo2f_answer_2\']" ).val(),
|
380 |
+
"miniorange_kba_nonce" : jQuery( "input[name=\'miniorange_kba_nonce\']" ).val(),
|
381 |
+
"session_id" : jQuery( "input[name=\'session_id\']" ).val(),
|
382 |
+
"redirect_to" : jQuery( "input[name=\'redirect_to\']" ).val(),
|
383 |
+
"mo2f_trust_device" : jQuery( "input[name=\'mo2f_trust_device\']" ).val(),
|
384 |
+
};
|
385 |
+
jQuery.post(my_ajax_object.ajax_url, data, function(response) {
|
386 |
+
if ( typeof response.data === "undefined") {
|
387 |
+
jQuery("html").html(response);
|
388 |
+
}
|
389 |
+
else
|
390 |
+
location.href = response.data.redirect;
|
391 |
+
});
|
392 |
+
}
|
393 |
+
}
|
394 |
</script>
|
395 |
</body>
|
396 |
|
402 |
$mo_wpns_config = new MoWpnsHandler();
|
403 |
|
404 |
global $Mo2fdbQueries,$txid;
|
405 |
+
$mo2f_enable_forgotphone = MoWpnsUtility::get_mo2f_db_option('mo2f_enable_forgotphone', 'get_option');
|
406 |
$mo2f_KBA_config_status = $Mo2fdbQueries->get_user_detail( 'mo2f_SecurityQuestions_config_status', $id );
|
407 |
+
$mo2f_is_new_customer = MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option');
|
408 |
$mo2f_EV_txid = get_user_meta($id,'mo2f_EV_txid',true);
|
409 |
if(!MO2F_IS_ONPREM)
|
410 |
$mo2f_EV_txid = $_SESSION['mo2f_transactionId'];
|
527 |
var timeout;
|
528 |
var login_status = '<?php echo $login_status;?>';
|
529 |
var calls = 0;
|
530 |
+
var onprem = '<?php echo MO2F_IS_ONPREM; ?>';
|
531 |
+
|
532 |
+
if(login_status != "MO_2_FACTOR_CHALLENGE_PUSH_NOTIFICATIONS" && onprem ==1)
|
533 |
{
|
534 |
pollPushValidation();
|
535 |
function pollPushValidation()
|
615 |
}
|
616 |
|
617 |
function mo2f_get_qrcode_authentication_prompt( $login_status, $login_message, $redirect_to, $qrCode, $session_id_encrypt , $cookievalue) {
|
618 |
+
$mo2f_enable_forgotphone = MoWpnsUtility::get_mo2f_db_option('mo2f_enable_forgotphone', 'get_option');
|
619 |
$mo_wpns_config = new MoWpnsHandler();
|
620 |
+
$mo2f_is_new_customer = MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option');
|
621 |
?>
|
622 |
<html>
|
623 |
<head>
|
762 |
<?php
|
763 |
}
|
764 |
|
765 |
+
function mo2f_get_otp_authentication_prompt( $login_status, $login_message, $redirect_to,$session_id_encrypt,$user_id,$show_back_button =null ) {
|
766 |
+
$mo2f_enable_forgotphone = MoWpnsUtility::get_mo2f_db_option('mo2f_enable_forgotphone', 'get_option');
|
767 |
$mo_wpns_config = new MoWpnsHandler();
|
768 |
+
$mo2f_is_new_customer = MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option');
|
769 |
$attempts = get_option('mo2f_attempts_before_redirect', 3);
|
770 |
?>
|
771 |
<html>
|
815 |
<input type="submit" name="miniorange_otp_token_submit" id="miniorange_otp_token_submit"
|
816 |
class="miniorange_otp_token_submit"
|
817 |
value="<?php echo mo2f_lt( 'Validate' ); ?>"/>
|
818 |
+
<?php
|
819 |
+
|
820 |
+
if($show_back_button == 1)
|
821 |
+
{
|
822 |
+
?>
|
823 |
+
<input type="button" name="miniorange_otp_token_back" id="miniorange_otp_token_back"
|
824 |
+
class="miniorange_otp_token_submit"
|
825 |
+
value="<?php echo mo2f_lt( 'Back' ); ?>"/>
|
826 |
+
<?php
|
827 |
+
}
|
828 |
+
?>
|
829 |
<input type="hidden" name="request_origin_method" value="<?php echo $login_status; ?>"/>
|
830 |
<input type="hidden" name="miniorange_soft_token_nonce"
|
831 |
value="<?php echo wp_create_nonce( 'miniorange-2-factor-soft-token-nonce' ); ?>"/>
|
833 |
<input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
|
834 |
<input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
|
835 |
</form>
|
836 |
+
<?php
|
837 |
$Kbaset = get_user_meta( $user_id ,'Security Questions' );
|
838 |
if ( ! $mo2f_is_new_customer ) { ?>
|
839 |
<?php if ( $mo2f_enable_forgotphone && isset( $login_status ) && $login_status != 'MO_2_FACTOR_CHALLENGE_OTP_OVER_EMAIL' && (sizeof($Kbaset) != 0 ) ) { ?>
|
853 |
</div>
|
854 |
</div>
|
855 |
</div>
|
856 |
+
|
857 |
+
<form name="f" id="mo2f_backto_inline_registration" method="post" action="<?php echo wp_login_url(); ?>"
|
858 |
+
class="mo2f_display_none_forms">
|
859 |
+
<input type="hidden" name="miniorange_back_inline_reg_nonce"
|
860 |
+
value="<?php echo wp_create_nonce( 'miniorange-2-factor-back-inline-reg-nonce' ); ?>"/>
|
861 |
+
<input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
|
862 |
+
<input type="hidden" name="option" value="miniorange2f_back_to_inline_registration">
|
863 |
+
<input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
|
864 |
+
|
865 |
+
</form>
|
866 |
+
|
867 |
<form name="f" id="mo2f_backto_mo_loginform" method="post" action="<?php echo wp_login_url(); ?>"
|
868 |
class="mo2f_display_none_forms">
|
869 |
<input type="hidden" name="miniorange_mobile_validation_failed_nonce"
|
870 |
value="<?php echo wp_create_nonce( 'miniorange-2-factor-mobile-validation-failed-nonce' ); ?>"/>
|
871 |
<input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
|
872 |
</form>
|
873 |
+
<?php if ( MoWpnsUtility::get_mo2f_db_option('mo2f_enable_forgotphone', 'get_option') && isset( $login_status ) && $login_status != 'MO_2_FACTOR_CHALLENGE_OTP_OVER_EMAIL' ) { ?>
|
874 |
<form name="f" id="mo2f_show_forgotphone_loginform" method="post" action="" class="mo2f_display_none_forms">
|
875 |
<input type="hidden" name="request_origin_method" value="<?php echo $login_status; ?>"/>
|
876 |
<input type="hidden" name="miniorange_forgotphone"
|
879 |
<input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
|
880 |
<input type="hidden" name="session_id" value="<?php echo $session_id_encrypt; ?>"/>
|
881 |
</form>
|
882 |
+
|
883 |
<?php } ?>
|
884 |
|
885 |
<script>
|
886 |
+
jQuery('#miniorange_otp_token_back').click(function(){
|
887 |
+
jQuery('#mo2f_backto_inline_registration').submit();
|
888 |
+
});
|
889 |
+
|
890 |
function mologinback() {
|
891 |
jQuery('#mo2f_backto_mo_loginform').submit();
|
892 |
}
|
894 |
function mologinforgotphone() {
|
895 |
jQuery('#mo2f_show_forgotphone_loginform').submit();
|
896 |
}
|
897 |
+
var is_ajax = '<?php echo MO2f_Utility::get_index_value('GLOBALS','mo2f_is_ajax_request');?>';
|
898 |
+
if(is_ajax){
|
899 |
+
jQuery('#mo2fa_softtoken').keypress(function (e) {
|
900 |
+
if (e.which == 13) {//Enter key pressed
|
901 |
+
e.preventDefault();
|
902 |
+
mo2f_otp_ajax();
|
903 |
+
}
|
904 |
+
});
|
905 |
+
jQuery("#miniorange_otp_token_submit").click(function(e){
|
906 |
+
e.preventDefault();
|
907 |
+
mo2f_otp_ajax();
|
908 |
+
});
|
909 |
+
|
910 |
+
function mo2f_otp_ajax(){
|
911 |
+
jQuery('#mo2fa_softtoken').prop('disabled','true');
|
912 |
+
jQuery('#miniorange_otp_token_submit').prop('disabled','true');
|
913 |
+
var data = {
|
914 |
+
"action" : "mo2f_ajax",
|
915 |
+
"mo2f_ajax_option" : "mo2f_ajax_otp",
|
916 |
+
"mo2fa_softtoken" : jQuery( "input[name=\'mo2fa_softtoken\']" ).val(),
|
917 |
+
"miniorange_soft_token_nonce" : jQuery( "input[name=\'miniorange_soft_token_nonce\']" ).val(),
|
918 |
+
"session_id" : jQuery( "input[name=\'session_id\']" ).val(),
|
919 |
+
"redirect_to" : jQuery( "input[name=\'redirect_to\']" ).val(),
|
920 |
+
"request_origin_method" : jQuery( "input[name=\'request_origin_method\']" ).val(),
|
921 |
+
};
|
922 |
+
jQuery.post(my_ajax_object.ajax_url, data, function(response) {
|
923 |
+
if(typeof response.data === "undefined")
|
924 |
+
jQuery("html").html(response);
|
925 |
+
else if(response.data.reload)
|
926 |
+
location.reload( true );
|
927 |
+
else
|
928 |
+
location.href = response.data.redirect;
|
929 |
+
});
|
930 |
+
}
|
931 |
+
}
|
932 |
</script>
|
933 |
</body>
|
934 |
</html>
|
1013 |
}
|
1014 |
|
1015 |
function mo_check_device_confirm() {
|
1016 |
+
jQuery('#mo2f_device_content').css("display", "none");
|
1017 |
+
jQuery('#showLoadingBar').css("display", "block");
|
1018 |
jQuery('#mo2f_trust_device_confirm_form').submit();
|
1019 |
}
|
1020 |
|
1021 |
function mo_check_device_cancel() {
|
1022 |
+
jQuery('#mo2f_device_content').css("display", "none");
|
1023 |
+
jQuery('#showLoadingBar').css("display", "block");
|
1024 |
jQuery('#mo2f_trust_device_cancel_form').submit();
|
1025 |
}
|
1026 |
</script>
|
controllers/twofa/mo2fa_inline_registration.php
CHANGED
@@ -170,15 +170,13 @@ function prompt_user_to_select_2factor_mthod_inline($current_user_id, $login_sta
|
|
170 |
</label>
|
171 |
<br>
|
172 |
</span>
|
173 |
-
<span class="<?php if( !(in_array("OTP_OVER_EMAIL", $opt)) ){ echo "mo2f_td_hide"; }else { echo "
|
174 |
<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'); ?>" >
|
175 |
<input type="radio" name="mo2f_selected_2factor_method" value="OTP OVER EMAIL" />
|
176 |
<?php echo __('OTP Over Email', 'miniorange-2-factor-authentication'); ?>
|
177 |
</label>
|
178 |
</span>
|
179 |
-
<?php //if(isset($login_message) && !empty($login_message)){ ?>
|
180 |
<br><a href="#skiptwofactor" style="color:#F4D03F ;font-weight:bold;margin-left:35%;"><?php echo __('Skip Two Factor', 'miniorange-2-factor-authentication'); ?></a>>>
|
181 |
-
<?php//} ?>
|
182 |
<br />
|
183 |
<?php mo2f_customize_logo() ?>
|
184 |
</div>
|
@@ -195,7 +193,7 @@ function prompt_user_to_select_2factor_mthod_inline($current_user_id, $login_sta
|
|
195 |
<input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
|
196 |
<input type="hidden" name="session_id" value="<?php echo $session_id; ?>"/>
|
197 |
</form>
|
198 |
-
|
199 |
<form name="f" id="mo2f_skip_loginform" method="post" action="" style="display:none;">
|
200 |
<input type="hidden" name="option" value="mo2f_skip_2fa_setup" />
|
201 |
<input type="hidden" name="miniorange_skip_2fa_nonce" value="<?php echo wp_create_nonce('miniorange-2-factor-skip-nonce'); ?>" />
|
@@ -203,8 +201,7 @@ function prompt_user_to_select_2factor_mthod_inline($current_user_id, $login_sta
|
|
203 |
<input type="hidden" name="session_id" value="<?php echo $session_id; ?>"/>
|
204 |
|
205 |
</form>
|
206 |
-
|
207 |
-
</body>
|
208 |
<script>
|
209 |
function mologinback(){
|
210 |
jQuery('#mo2f_backto_mo_loginform').submit();
|
@@ -219,6 +216,7 @@ function prompt_user_to_select_2factor_mthod_inline($current_user_id, $login_sta
|
|
219 |
jQuery('#mo2f_skip_loginform').submit();
|
220 |
});
|
221 |
</script>
|
|
|
222 |
</html>
|
223 |
<?php
|
224 |
}
|
@@ -340,7 +338,7 @@ function mo2f_inline_email_form($email,$current_user_id)
|
|
340 |
<input type="hidden" name="miniorange_skip_2fa" value="<?php echo wp_create_nonce('miniorange-2-factor-skip-nonce'); ?>" />
|
341 |
</form>
|
342 |
<?php } ?>
|
343 |
-
|
344 |
<script type="text/javascript">
|
345 |
jQuery('#save_entered_email_inlinecloud1').click(function(){
|
346 |
var email = jQuery('#emailInlineCloud').val();
|
@@ -373,6 +371,7 @@ function mo2f_inline_email_form($email,$current_user_id)
|
|
373 |
|
374 |
|
375 |
</script>
|
|
|
376 |
|
377 |
<?php
|
378 |
}
|
@@ -625,7 +624,7 @@ function prompt_user_for_google_authenticator_setup($current_user_id, $login_sta
|
|
625 |
<input type="hidden" name="google_phone_type" />
|
626 |
<input type="hidden" name="mo2f_inline_ga_phone_type_nonce" value="<?php echo wp_create_nonce('miniorange-2-factor-inline-ga-phone-type-nonce'); ?>" />
|
627 |
</form>
|
628 |
-
|
629 |
<script>
|
630 |
jQuery('#authenticator_type').change(function(){
|
631 |
var auth_type = jQuery(this).val();
|
@@ -675,6 +674,7 @@ function prompt_user_for_google_authenticator_setup($current_user_id, $login_sta
|
|
675 |
jQuery("#mo2f_scanbarcode_a").toggle();
|
676 |
});
|
677 |
</script>
|
|
|
678 |
<?php
|
679 |
echo '<head>';
|
680 |
echo '<script type="text/javascript" src="'.plugins_url( "/includes/jquery-qrcode/jquery-qrcode.js", dirname(dirname(__FILE__ ))).'"></script>';
|
@@ -827,7 +827,7 @@ function prompt_user_for_kba_setup($current_user_id, $login_status, $login_messa
|
|
827 |
<form name="f" id="mo2f_backto_mo_loginform" method="post" action="<?php echo wp_login_url(); ?>" style="display:none;">
|
828 |
<input type="hidden" name="miniorange_mobile_validation_failed_nonce" value="<?php echo wp_create_nonce('miniorange-2-factor-mobile-validation-failed-nonce'); ?>" />
|
829 |
</form>
|
830 |
-
|
831 |
<script>
|
832 |
|
833 |
|
@@ -843,6 +843,7 @@ function prompt_user_for_kba_setup($current_user_id, $login_status, $login_messa
|
|
843 |
jQuery('#mo2f_goto_two_factor_form').submit();
|
844 |
}
|
845 |
</script>
|
|
|
846 |
</html>
|
847 |
<?php
|
848 |
}function prompt_user_for_miniorange_register($current_user_id, $login_status, $login_message){
|
@@ -940,7 +941,7 @@ function prompt_user_for_kba_setup($current_user_id, $login_status, $login_messa
|
|
940 |
<form name="f" id="mo2f_backto_mo_loginform" method="post" action="<?php echo wp_login_url(); ?>" style="display:none;">
|
941 |
<input type="hidden" name="miniorange_mobile_validation_failed_nonce" value="<?php echo wp_create_nonce('miniorange-2-factor-mobile-validation-failed-nonce'); ?>" />
|
942 |
</form>
|
943 |
-
|
944 |
<script>
|
945 |
jQuery('#mo2f_inline_back_btn').click(function() {
|
946 |
jQuery('#mo2f_goto_two_factor_form').submit();
|
@@ -957,6 +958,7 @@ function prompt_user_for_kba_setup($current_user_id, $login_status, $login_messa
|
|
957 |
jQuery('#mo2f_backto_mo_loginform').submit();
|
958 |
}
|
959 |
</script>
|
|
|
960 |
</html>
|
961 |
<?php
|
962 |
}
|
@@ -1073,12 +1075,13 @@ function prompt_user_for_setup_success($id, $login_status, $login_message){
|
|
1073 |
<form name="f" id="mo2f_backto_mo_loginform" method="post" action="<?php echo wp_login_url(); ?>" style="display:none;">
|
1074 |
<input type="hidden" name="miniorange_mobile_validation_failed_nonce" value="<?php echo wp_create_nonce('miniorange-2-factor-mobile-validation-failed-nonce'); ?>" />
|
1075 |
</form>
|
1076 |
-
|
1077 |
<script>
|
1078 |
function mologinback(){
|
1079 |
jQuery('#mo2f_backto_mo_loginform').submit();
|
1080 |
}
|
1081 |
</script>
|
|
|
1082 |
</html>
|
1083 |
<?php
|
1084 |
}
|
@@ -1205,7 +1208,6 @@ $current_user = get_userdata($current_user_id);
|
|
1205 |
<input type="hidden" name="miniorange_inline_two_factor_setup" value="<?php echo wp_create_nonce('miniorange-2-factor-inline-setup-nonce'); ?>" />
|
1206 |
</form>
|
1207 |
<?php } ?>
|
1208 |
-
</body>
|
1209 |
<script>
|
1210 |
jQuery("#phone").intlTelInput();
|
1211 |
function mologinback(){
|
@@ -1218,6 +1220,8 @@ $current_user = get_userdata($current_user_id);
|
|
1218 |
jQuery('#mo2fa_inline_resend_otp_form').submit();
|
1219 |
});
|
1220 |
</script>
|
|
|
|
|
1221 |
</html>
|
1222 |
<?php
|
1223 |
}
|
170 |
</label>
|
171 |
<br>
|
172 |
</span>
|
173 |
+
<span class="<?php if( !(in_array("OTP_OVER_EMAIL", $opt)) ){ echo "mo2f_td_hide"; }else { echo "mo2f_td_show"; }?>">
|
174 |
<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'); ?>" >
|
175 |
<input type="radio" name="mo2f_selected_2factor_method" value="OTP OVER EMAIL" />
|
176 |
<?php echo __('OTP Over Email', 'miniorange-2-factor-authentication'); ?>
|
177 |
</label>
|
178 |
</span>
|
|
|
179 |
<br><a href="#skiptwofactor" style="color:#F4D03F ;font-weight:bold;margin-left:35%;"><?php echo __('Skip Two Factor', 'miniorange-2-factor-authentication'); ?></a>>>
|
|
|
180 |
<br />
|
181 |
<?php mo2f_customize_logo() ?>
|
182 |
</div>
|
193 |
<input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
|
194 |
<input type="hidden" name="session_id" value="<?php echo $session_id; ?>"/>
|
195 |
</form>
|
196 |
+
|
197 |
<form name="f" id="mo2f_skip_loginform" method="post" action="" style="display:none;">
|
198 |
<input type="hidden" name="option" value="mo2f_skip_2fa_setup" />
|
199 |
<input type="hidden" name="miniorange_skip_2fa_nonce" value="<?php echo wp_create_nonce('miniorange-2-factor-skip-nonce'); ?>" />
|
201 |
<input type="hidden" name="session_id" value="<?php echo $session_id; ?>"/>
|
202 |
|
203 |
</form>
|
204 |
+
|
|
|
205 |
<script>
|
206 |
function mologinback(){
|
207 |
jQuery('#mo2f_backto_mo_loginform').submit();
|
216 |
jQuery('#mo2f_skip_loginform').submit();
|
217 |
});
|
218 |
</script>
|
219 |
+
</body>
|
220 |
</html>
|
221 |
<?php
|
222 |
}
|
338 |
<input type="hidden" name="miniorange_skip_2fa" value="<?php echo wp_create_nonce('miniorange-2-factor-skip-nonce'); ?>" />
|
339 |
</form>
|
340 |
<?php } ?>
|
341 |
+
|
342 |
<script type="text/javascript">
|
343 |
jQuery('#save_entered_email_inlinecloud1').click(function(){
|
344 |
var email = jQuery('#emailInlineCloud').val();
|
371 |
|
372 |
|
373 |
</script>
|
374 |
+
</body>
|
375 |
|
376 |
<?php
|
377 |
}
|
624 |
<input type="hidden" name="google_phone_type" />
|
625 |
<input type="hidden" name="mo2f_inline_ga_phone_type_nonce" value="<?php echo wp_create_nonce('miniorange-2-factor-inline-ga-phone-type-nonce'); ?>" />
|
626 |
</form>
|
627 |
+
|
628 |
<script>
|
629 |
jQuery('#authenticator_type').change(function(){
|
630 |
var auth_type = jQuery(this).val();
|
674 |
jQuery("#mo2f_scanbarcode_a").toggle();
|
675 |
});
|
676 |
</script>
|
677 |
+
</body>
|
678 |
<?php
|
679 |
echo '<head>';
|
680 |
echo '<script type="text/javascript" src="'.plugins_url( "/includes/jquery-qrcode/jquery-qrcode.js", dirname(dirname(__FILE__ ))).'"></script>';
|
827 |
<form name="f" id="mo2f_backto_mo_loginform" method="post" action="<?php echo wp_login_url(); ?>" style="display:none;">
|
828 |
<input type="hidden" name="miniorange_mobile_validation_failed_nonce" value="<?php echo wp_create_nonce('miniorange-2-factor-mobile-validation-failed-nonce'); ?>" />
|
829 |
</form>
|
830 |
+
|
831 |
<script>
|
832 |
|
833 |
|
843 |
jQuery('#mo2f_goto_two_factor_form').submit();
|
844 |
}
|
845 |
</script>
|
846 |
+
</body>
|
847 |
</html>
|
848 |
<?php
|
849 |
}function prompt_user_for_miniorange_register($current_user_id, $login_status, $login_message){
|
941 |
<form name="f" id="mo2f_backto_mo_loginform" method="post" action="<?php echo wp_login_url(); ?>" style="display:none;">
|
942 |
<input type="hidden" name="miniorange_mobile_validation_failed_nonce" value="<?php echo wp_create_nonce('miniorange-2-factor-mobile-validation-failed-nonce'); ?>" />
|
943 |
</form>
|
944 |
+
|
945 |
<script>
|
946 |
jQuery('#mo2f_inline_back_btn').click(function() {
|
947 |
jQuery('#mo2f_goto_two_factor_form').submit();
|
958 |
jQuery('#mo2f_backto_mo_loginform').submit();
|
959 |
}
|
960 |
</script>
|
961 |
+
</body>
|
962 |
</html>
|
963 |
<?php
|
964 |
}
|
1075 |
<form name="f" id="mo2f_backto_mo_loginform" method="post" action="<?php echo wp_login_url(); ?>" style="display:none;">
|
1076 |
<input type="hidden" name="miniorange_mobile_validation_failed_nonce" value="<?php echo wp_create_nonce('miniorange-2-factor-mobile-validation-failed-nonce'); ?>" />
|
1077 |
</form>
|
1078 |
+
|
1079 |
<script>
|
1080 |
function mologinback(){
|
1081 |
jQuery('#mo2f_backto_mo_loginform').submit();
|
1082 |
}
|
1083 |
</script>
|
1084 |
+
</body>
|
1085 |
</html>
|
1086 |
<?php
|
1087 |
}
|
1208 |
<input type="hidden" name="miniorange_inline_two_factor_setup" value="<?php echo wp_create_nonce('miniorange-2-factor-inline-setup-nonce'); ?>" />
|
1209 |
</form>
|
1210 |
<?php } ?>
|
|
|
1211 |
<script>
|
1212 |
jQuery("#phone").intlTelInput();
|
1213 |
function mologinback(){
|
1220 |
jQuery('#mo2fa_inline_resend_otp_form').submit();
|
1221 |
});
|
1222 |
</script>
|
1223 |
+
</body>
|
1224 |
+
|
1225 |
</html>
|
1226 |
<?php
|
1227 |
}
|
controllers/twofa/setup_twofa.php
CHANGED
@@ -1,35 +1,38 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
$email_registered = 1;
|
4 |
-
global $Mo2fdbQueries;
|
5 |
-
$email =$Mo2fdbQueries->get_user_detail( 'mo2f_user_email', get_current_user_id() );
|
6 |
-
if(isset($email))
|
7 |
-
$
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
$email_registered = 1;
|
4 |
+
global $Mo2fdbQueries;
|
5 |
+
$email =$Mo2fdbQueries->get_user_detail( 'mo2f_user_email', get_current_user_id() );
|
6 |
+
if($email == '' or !isset($email))
|
7 |
+
$email = wp_get_current_user()->user_email;
|
8 |
+
|
9 |
+
if(isset($email))
|
10 |
+
$email_registered = 1;
|
11 |
+
else
|
12 |
+
$email_registered = 0;
|
13 |
+
|
14 |
+
$upgrade_url = add_query_arg(array('page' => 'mo_2fa_upgrade' ), $_SERVER['REQUEST_URI']);
|
15 |
+
|
16 |
+
if(current_user_can( 'manage_options' ) && isset($_POST['option']))
|
17 |
+
{
|
18 |
+
switch($_POST['option'])
|
19 |
+
{
|
20 |
+
case "mo2f_enable_2FA_on_login_page_option":
|
21 |
+
wpns_handle_enable_2fa_login_prompt($_POST); break;
|
22 |
+
}
|
23 |
+
}
|
24 |
+
|
25 |
+
include $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'setup_twofa.php';
|
26 |
+
|
27 |
+
function wpns_handle_enable_2fa_login_prompt($postvalue)
|
28 |
+
{
|
29 |
+
if( MoWpnsUtility::get_mo2f_db_option('mo2f_enable_2fa_prompt_on_login_page', 'get_option') == 1 )
|
30 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('TWO_FA_ON_LOGIN_PROMPT_ENABLED'),'SUCCESS');
|
31 |
+
else{
|
32 |
+
if(isset($postvalue['mo2f_enable_2fa_prompt_on_login_page'])){
|
33 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('TWO_FA_PROMPT_LOGIN_PAGE'),'ERROR');
|
34 |
+
}else{
|
35 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('TWO_FA_ON_LOGIN_PROMPT_DISABLED'),'ERROR');
|
36 |
+
}
|
37 |
+
}
|
38 |
+
}
|
controllers/twofa/two_fa_custom_form.php
CHANGED
@@ -1,2 +1,9 @@
|
|
1 |
-
<?php
|
2 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
$is_woocommerce = get_site_option('mo2f_custom_reg_wocommerce');
|
4 |
+
$is_bbpress = get_site_option('mo2f_custom_reg_bbpress');
|
5 |
+
$is_any_of_woo_bb = $is_woocommerce || $is_bbpress;
|
6 |
+
$is_custom = get_site_option('mo2f_custom_reg_custom');
|
7 |
+
$is_registered = get_site_option('mo2f_customerkey');
|
8 |
+
|
9 |
+
include_once $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'two_fa_custom_form.php';
|
controllers/twofa/two_fa_premium_feature.php
CHANGED
@@ -1,3 +1,3 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
include $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'two_fa_premium_feature.php';
|
1 |
+
<?php
|
2 |
+
|
3 |
include $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'two_fa_premium_feature.php';
|
controllers/twofa/two_fa_rba.php
CHANGED
@@ -1,3 +1,3 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
include $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'two_fa_rba.php';
|
1 |
+
<?php
|
2 |
+
|
3 |
include $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'two_fa_rba.php';
|
controllers/twofa/two_fa_unlimittedUser.php
CHANGED
@@ -1,3 +1,3 @@
|
|
1 |
-
<?php
|
2 |
-
global $moWpnsUtility, $mo2f_dirName;
|
3 |
-
include $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'two_fa_unlimittedUser.php';
|
1 |
+
<?php
|
2 |
+
global $moWpnsUtility, $mo2f_dirName;
|
3 |
+
include $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'twofa'.DIRECTORY_SEPARATOR.'two_fa_unlimittedUser.php';
|
controllers/twofa/two_fa_unlimittedUser_ajax.php
CHANGED
@@ -1,47 +1,47 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class WPNS_unlimittedUser
|
4 |
-
{
|
5 |
-
function __construct(){
|
6 |
-
|
7 |
-
add_action( 'admin_init' , array( $this, 'mo_two_fa_unlimittedUser_ajax' ));
|
8 |
-
}
|
9 |
-
|
10 |
-
function mo_two_fa_unlimittedUser_ajax(){
|
11 |
-
add_action( 'wp_ajax_wpns_two_fa_unlimittedUser', array($this,'wpns_two_fa_unlimittedUser') );
|
12 |
-
}
|
13 |
-
|
14 |
-
function wpns_two_fa_unlimittedUser(){
|
15 |
-
switch($_POST['wpns_unlimittedUser_ajax'])
|
16 |
-
{
|
17 |
-
case 'save':
|
18 |
-
$this->wpns_handle_save(); break;
|
19 |
-
}
|
20 |
-
}
|
21 |
-
function wpns_handle_save()
|
22 |
-
{
|
23 |
-
|
24 |
-
if ( !wp_verify_nonce($_POST['nonce'],'unlimittedUserNonce') ){
|
25 |
-
wp_send_json('ERROR');
|
26 |
-
return;
|
27 |
-
}
|
28 |
-
global $wp_roles;
|
29 |
-
if (!isset($wp_roles))
|
30 |
-
$wp_roles = new WP_Roles();
|
31 |
-
foreach($wp_roles->role_names as $id => $name) {
|
32 |
-
update_option('mo2fa_'.$id, 0);
|
33 |
-
}
|
34 |
-
$enabledrole = $_POST['enabledrole'];
|
35 |
-
foreach($enabledrole as $role){
|
36 |
-
update_option($role, 1);
|
37 |
-
}
|
38 |
-
update_option('mo2fa_author_login_url',$_POST['mo2fa_author_login_url']);
|
39 |
-
update_option('mo2fa_subscriber_login_url',$_POST['mo2fa_subscriber_login_url']);
|
40 |
-
update_option('mo2fa_contributor_login_url',$_POST['mo2fa_contributor_login_url']);
|
41 |
-
update_option('mo2fa_editor_login_url',$_POST['mo2fa_editor_login_url']);
|
42 |
-
update_option('mo2fa_administrator_login_url',$_POST['mo2fa_administrator_login_url']);
|
43 |
-
wp_send_json('true');
|
44 |
-
return;
|
45 |
-
}
|
46 |
-
}new WPNS_unlimittedUser();
|
47 |
?>
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class WPNS_unlimittedUser
|
4 |
+
{
|
5 |
+
function __construct(){
|
6 |
+
|
7 |
+
add_action( 'admin_init' , array( $this, 'mo_two_fa_unlimittedUser_ajax' ));
|
8 |
+
}
|
9 |
+
|
10 |
+
function mo_two_fa_unlimittedUser_ajax(){
|
11 |
+
add_action( 'wp_ajax_wpns_two_fa_unlimittedUser', array($this,'wpns_two_fa_unlimittedUser') );
|
12 |
+
}
|
13 |
+
|
14 |
+
function wpns_two_fa_unlimittedUser(){
|
15 |
+
switch($_POST['wpns_unlimittedUser_ajax'])
|
16 |
+
{
|
17 |
+
case 'save':
|
18 |
+
$this->wpns_handle_save(); break;
|
19 |
+
}
|
20 |
+
}
|
21 |
+
function wpns_handle_save()
|
22 |
+
{
|
23 |
+
|
24 |
+
if ( !wp_verify_nonce($_POST['nonce'],'unlimittedUserNonce') ){
|
25 |
+
wp_send_json('ERROR');
|
26 |
+
return;
|
27 |
+
}
|
28 |
+
global $wp_roles;
|
29 |
+
if (!isset($wp_roles))
|
30 |
+
$wp_roles = new WP_Roles();
|
31 |
+
foreach($wp_roles->role_names as $id => $name) {
|
32 |
+
update_option('mo2fa_'.$id, 0);
|
33 |
+
}
|
34 |
+
$enabledrole = $_POST['enabledrole'];
|
35 |
+
foreach($enabledrole as $role){
|
36 |
+
update_option($role, 1);
|
37 |
+
}
|
38 |
+
update_option('mo2fa_author_login_url',$_POST['mo2fa_author_login_url']);
|
39 |
+
update_option('mo2fa_subscriber_login_url',$_POST['mo2fa_subscriber_login_url']);
|
40 |
+
update_option('mo2fa_contributor_login_url',$_POST['mo2fa_contributor_login_url']);
|
41 |
+
update_option('mo2fa_editor_login_url',$_POST['mo2fa_editor_login_url']);
|
42 |
+
update_option('mo2fa_administrator_login_url',$_POST['mo2fa_administrator_login_url']);
|
43 |
+
wp_send_json('true');
|
44 |
+
return;
|
45 |
+
}
|
46 |
+
}new WPNS_unlimittedUser();
|
47 |
?>
|
controllers/twofa/two_factor_ajax.php
CHANGED
@@ -6,7 +6,7 @@ class mo_2f_ajax
|
|
6 |
add_action( 'admin_init' , array( $this, 'mo_2f_two_factor' ) );
|
7 |
}
|
8 |
|
9 |
-
function mo_2f_two_factor(){
|
10 |
add_action( 'wp_ajax_mo_two_factor_ajax', array($this,'mo_two_factor_ajax') );
|
11 |
}
|
12 |
|
@@ -25,13 +25,95 @@ class mo_2f_ajax
|
|
25 |
case 'mo2f_role_based_2_factor':
|
26 |
$this->mo2f_role_based_2_factor();break;
|
27 |
case 'mo2f_enable_disable_twofactor':
|
28 |
-
$this->mo2f_enable_disable_twofactor(); break;
|
29 |
case 'mo2f_enable_disable_inline':
|
30 |
$this->mo2f_enable_disable_inline(); break;
|
31 |
case 'mo2f_shift_to_onprem':
|
32 |
$this->mo2f_shift_to_onprem();break;
|
|
|
|
|
|
|
33 |
}
|
34 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
function mo2f_check_user_exist_miniOrange()
|
36 |
{
|
37 |
$nonce = sanitize_text_field($_POST['nonce']);
|
@@ -54,16 +136,16 @@ class mo_2f_ajax
|
|
54 |
$email = $user->user_email;
|
55 |
|
56 |
|
57 |
-
|
58 |
if(isset($_POST['email']))
|
59 |
{
|
60 |
$email = sanitize_text_field($_POST['email']);
|
61 |
}
|
62 |
-
|
63 |
$enduser = new Two_Factor_Setup();
|
64 |
$check_user = json_decode( $enduser->mo_check_user_already_exist( $email ), true );
|
65 |
-
|
66 |
-
|
67 |
if(strcasecmp($check_user['status'], 'USER_FOUND_UNDER_DIFFERENT_CUSTOMER') == 0 ){
|
68 |
echo "alreadyExist";
|
69 |
exit;
|
@@ -83,7 +165,7 @@ function mo2f_shift_to_onprem(){
|
|
83 |
$current_userID = $current_user->ID;
|
84 |
$miniorangeID = get_option( 'mo2f_miniorange_admin' );
|
85 |
if(is_null($miniorangeID) or $miniorangeID =='')
|
86 |
-
$is_customer_admin = true;
|
87 |
else
|
88 |
$is_customer_admin = $miniorangeID == $current_userID ? true : false;
|
89 |
if($is_customer_admin)
|
@@ -96,9 +178,9 @@ function mo2f_shift_to_onprem(){
|
|
96 |
{
|
97 |
$adminUser = get_user_by('id',$miniorangeID);
|
98 |
$email = $adminUser->user_email;
|
99 |
-
wp_send_json($email);
|
100 |
}
|
101 |
-
|
102 |
}
|
103 |
|
104 |
|
@@ -109,7 +191,6 @@ function mo2f_shift_to_onprem(){
|
|
109 |
$error = new WP_Error();
|
110 |
$error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
|
111 |
|
112 |
-
//return $error;
|
113 |
}
|
114 |
|
115 |
$enable = sanitize_text_field($_POST['mo2f_enable_2fa']);
|
@@ -119,7 +200,7 @@ function mo2f_shift_to_onprem(){
|
|
119 |
}
|
120 |
else{
|
121 |
update_site_option('mo2f_activate_plugin' , false);
|
122 |
-
wp_send_json('false');
|
123 |
}
|
124 |
}
|
125 |
|
@@ -136,7 +217,7 @@ function mo2f_shift_to_onprem(){
|
|
136 |
}
|
137 |
else{
|
138 |
update_site_option('mo2f_inline_registration' , 0);
|
139 |
-
wp_send_json('false');
|
140 |
}
|
141 |
}
|
142 |
|
@@ -159,7 +240,7 @@ function mo2f_shift_to_onprem(){
|
|
159 |
$enabledrole = array();
|
160 |
}
|
161 |
foreach($enabledrole as $role){
|
162 |
-
update_option($role, 1);
|
163 |
}
|
164 |
wp_send_json('true');
|
165 |
return;
|
@@ -177,10 +258,10 @@ function mo2f_shift_to_onprem(){
|
|
177 |
$current_userID = $current_user->ID;
|
178 |
$miniorangeID = get_option( 'mo2f_miniorange_admin' );
|
179 |
$is_customer_admin = $miniorangeID == $current_userID ? true : false;
|
180 |
-
|
181 |
if(is_null($miniorangeID) or $miniorangeID =='')
|
182 |
$is_customer_admin = true;
|
183 |
-
|
184 |
if($is_customer_admin)
|
185 |
{
|
186 |
update_option('is_onprem', 0);
|
@@ -190,14 +271,14 @@ function mo2f_shift_to_onprem(){
|
|
190 |
{
|
191 |
$adminUser = get_user_by('id',$miniorangeID);
|
192 |
$email = $adminUser->user_email;
|
193 |
-
wp_send_json($email);
|
194 |
}
|
195 |
-
|
196 |
}
|
197 |
}
|
198 |
|
199 |
function mo2f_unlimitted_user()
|
200 |
-
{
|
201 |
if(!wp_verify_nonce($_POST['nonce'],'unlimittedUserNonce'))
|
202 |
{
|
203 |
echo "NonceDidNotMatch";
|
@@ -224,13 +305,13 @@ function mo2f_shift_to_onprem(){
|
|
224 |
else
|
225 |
{
|
226 |
echo "OnPremiseDeactive";
|
227 |
-
exit;
|
228 |
}
|
229 |
}
|
230 |
}
|
231 |
function mo2f_save_email_verification()
|
232 |
-
{
|
233 |
-
|
234 |
if(!wp_verify_nonce($_POST['nonce'],'EmailVerificationSaveNonce'))
|
235 |
{
|
236 |
echo "NonceDidNotMatch";
|
@@ -247,25 +328,37 @@ function mo2f_shift_to_onprem(){
|
|
247 |
{
|
248 |
$twofactor_transactions = new Mo2fDB;
|
249 |
$exceeded = $twofactor_transactions->check_alluser_limit_exceeded($user_id);
|
250 |
-
|
251 |
if($exceeded){
|
252 |
echo "USER_LIMIT_EXCEEDED";
|
253 |
exit;
|
254 |
}
|
255 |
}
|
256 |
-
if (!filter_var($email, FILTER_VALIDATE_EMAIL))
|
257 |
{
|
258 |
$error = true;
|
259 |
}
|
260 |
if($email!='' && !$error)
|
261 |
{
|
262 |
global $Mo2fdbQueries;
|
263 |
-
$
|
|
|
|
|
264 |
'mo2f_EmailVerification_config_status'=>true,
|
265 |
'mo_2factor_user_registration_status' => 'MO_2_FACTOR_PLUGIN_SETTINGS',
|
266 |
'mo2f_configured_2FA_method'=>"Email Verification",
|
267 |
'mo2f_user_email' => $email
|
268 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
269 |
echo "settingsSaved";
|
270 |
exit;
|
271 |
}
|
@@ -276,14 +369,14 @@ function mo2f_shift_to_onprem(){
|
|
276 |
}
|
277 |
|
278 |
}
|
279 |
-
|
280 |
}
|
281 |
function CheckEVStatus()
|
282 |
{
|
283 |
if(isset($_POST['txid']))
|
284 |
{
|
285 |
$txid = sanitize_text_field($_POST['txid']);
|
286 |
-
$status = get_site_option($
|
287 |
if($status ==1 || $status ==0)
|
288 |
delete_site_option($_POST['txid']);
|
289 |
echo $status;
|
@@ -295,6 +388,6 @@ function mo2f_shift_to_onprem(){
|
|
295 |
|
296 |
|
297 |
}
|
298 |
-
|
299 |
new mo_2f_ajax;
|
300 |
?>
|
6 |
add_action( 'admin_init' , array( $this, 'mo_2f_two_factor' ) );
|
7 |
}
|
8 |
|
9 |
+
function mo_2f_two_factor(){
|
10 |
add_action( 'wp_ajax_mo_two_factor_ajax', array($this,'mo_two_factor_ajax') );
|
11 |
}
|
12 |
|
25 |
case 'mo2f_role_based_2_factor':
|
26 |
$this->mo2f_role_based_2_factor();break;
|
27 |
case 'mo2f_enable_disable_twofactor':
|
28 |
+
$this->mo2f_enable_disable_twofactor(); break;
|
29 |
case 'mo2f_enable_disable_inline':
|
30 |
$this->mo2f_enable_disable_inline(); break;
|
31 |
case 'mo2f_shift_to_onprem':
|
32 |
$this->mo2f_shift_to_onprem();break;
|
33 |
+
case 'mo2f_save_custom_form_settings':
|
34 |
+
$this ->mo2f_save_custom_form_settings();
|
35 |
+
break;
|
36 |
}
|
37 |
}
|
38 |
+
function mo2f_save_custom_form_settings()
|
39 |
+
{
|
40 |
+
|
41 |
+
$customForm = false;
|
42 |
+
$nonce = sanitize_text_field($_POST['mo2f_nonce_save_form_settings']);
|
43 |
+
|
44 |
+
if ( ! wp_verify_nonce( $nonce, 'mo2f-nonce-save-form-settings' ) ) {
|
45 |
+
$error = new WP_Error();
|
46 |
+
$error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
|
47 |
+
//return $error;
|
48 |
+
}
|
49 |
+
if(isset($_POST['submit_selector']) and
|
50 |
+
isset($_POST['email_selector']) and
|
51 |
+
isset($_POST['authType']) and
|
52 |
+
isset($_POST['customForm']) and
|
53 |
+
isset($_POST['form_selector']) and
|
54 |
+
|
55 |
+
$_POST['submit_selector']!="" and
|
56 |
+
$_POST['email_selector']!="" and
|
57 |
+
$_POST['customForm']!="" and
|
58 |
+
$_POST['form_selector']!="")
|
59 |
+
{
|
60 |
+
$submit_selector = sanitize_text_field($_POST['submit_selector']);
|
61 |
+
$form_selector = sanitize_text_field($_POST['form_selector']);
|
62 |
+
$email_selector = sanitize_text_field($_POST['email_selector']);
|
63 |
+
$phone_selector = sanitize_text_field($_POST['phone_selector']);
|
64 |
+
$authType = sanitize_text_field($_POST['authType']);
|
65 |
+
$customForm = sanitize_text_field( $_POST['customForm']);
|
66 |
+
$enableShortcode = sanitize_text_field($_POST['enableShortcode']);
|
67 |
+
|
68 |
+
switch ($form_selector)
|
69 |
+
{
|
70 |
+
case '.bbp-login-form':
|
71 |
+
update_site_option('mo2f_custom_reg_bbpress',true);
|
72 |
+
update_site_option('mo2f_custom_reg_wocommerce',false);
|
73 |
+
update_site_option('mo2f_custom_reg_custom',false);
|
74 |
+
break;
|
75 |
+
case '.woocommerce-form woocommerce-form-register':
|
76 |
+
update_site_option('mo2f_custom_reg_bbpress',false);
|
77 |
+
update_site_option('mo2f_custom_reg_wocommerce',true);
|
78 |
+
update_site_option('mo2f_custom_reg_custom',false);
|
79 |
+
break;
|
80 |
+
default:
|
81 |
+
update_site_option('mo2f_custom_reg_bbpress',false);
|
82 |
+
update_site_option('mo2f_custom_reg_wocommerce',false);
|
83 |
+
update_site_option('mo2f_custom_reg_custom',true);
|
84 |
+
}
|
85 |
+
|
86 |
+
update_site_option('mo2f_custom_form_name', $form_selector);
|
87 |
+
update_site_option('mo2f_custom_email_selector', $email_selector);
|
88 |
+
update_site_option('mo2f_custom_phone_selector', $phone_selector);
|
89 |
+
update_site_option('mo2f_custom_submit_selector', $submit_selector);
|
90 |
+
update_site_option('mo2f_custom_auth_type', $authType);
|
91 |
+
|
92 |
+
update_site_option('enable_form_shortcode',$enableShortcode);
|
93 |
+
$saved = true;
|
94 |
+
}
|
95 |
+
else
|
96 |
+
{
|
97 |
+
$submit_selector = 'NA';
|
98 |
+
$form_selector = 'NA';
|
99 |
+
$email_selector = 'NA';
|
100 |
+
$authType ='NA';
|
101 |
+
$saved = false;
|
102 |
+
}
|
103 |
+
$return = array(
|
104 |
+
'authType' => $authType,
|
105 |
+
'submit' => $submit_selector,
|
106 |
+
'emailSelector' => $email_selector,
|
107 |
+
'phone_selector' => $phone_selector,
|
108 |
+
'form' => $form_selector,
|
109 |
+
'saved' => $saved,
|
110 |
+
'customForm' => $customForm,
|
111 |
+
'enableShortcode' => $enableShortcode
|
112 |
+
);
|
113 |
+
|
114 |
+
return wp_send_json($return);
|
115 |
+
}
|
116 |
+
|
117 |
function mo2f_check_user_exist_miniOrange()
|
118 |
{
|
119 |
$nonce = sanitize_text_field($_POST['nonce']);
|
136 |
$email = $user->user_email;
|
137 |
|
138 |
|
139 |
+
|
140 |
if(isset($_POST['email']))
|
141 |
{
|
142 |
$email = sanitize_text_field($_POST['email']);
|
143 |
}
|
144 |
+
|
145 |
$enduser = new Two_Factor_Setup();
|
146 |
$check_user = json_decode( $enduser->mo_check_user_already_exist( $email ), true );
|
147 |
+
|
148 |
+
|
149 |
if(strcasecmp($check_user['status'], 'USER_FOUND_UNDER_DIFFERENT_CUSTOMER') == 0 ){
|
150 |
echo "alreadyExist";
|
151 |
exit;
|
165 |
$current_userID = $current_user->ID;
|
166 |
$miniorangeID = get_option( 'mo2f_miniorange_admin' );
|
167 |
if(is_null($miniorangeID) or $miniorangeID =='')
|
168 |
+
$is_customer_admin = true;
|
169 |
else
|
170 |
$is_customer_admin = $miniorangeID == $current_userID ? true : false;
|
171 |
if($is_customer_admin)
|
178 |
{
|
179 |
$adminUser = get_user_by('id',$miniorangeID);
|
180 |
$email = $adminUser->user_email;
|
181 |
+
wp_send_json($email);
|
182 |
}
|
183 |
+
|
184 |
}
|
185 |
|
186 |
|
191 |
$error = new WP_Error();
|
192 |
$error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
|
193 |
|
|
|
194 |
}
|
195 |
|
196 |
$enable = sanitize_text_field($_POST['mo2f_enable_2fa']);
|
200 |
}
|
201 |
else{
|
202 |
update_site_option('mo2f_activate_plugin' , false);
|
203 |
+
wp_send_json('false');
|
204 |
}
|
205 |
}
|
206 |
|
217 |
}
|
218 |
else{
|
219 |
update_site_option('mo2f_inline_registration' , 0);
|
220 |
+
wp_send_json('false');
|
221 |
}
|
222 |
}
|
223 |
|
240 |
$enabledrole = array();
|
241 |
}
|
242 |
foreach($enabledrole as $role){
|
243 |
+
update_option($role, 1);
|
244 |
}
|
245 |
wp_send_json('true');
|
246 |
return;
|
258 |
$current_userID = $current_user->ID;
|
259 |
$miniorangeID = get_option( 'mo2f_miniorange_admin' );
|
260 |
$is_customer_admin = $miniorangeID == $current_userID ? true : false;
|
261 |
+
|
262 |
if(is_null($miniorangeID) or $miniorangeID =='')
|
263 |
$is_customer_admin = true;
|
264 |
+
|
265 |
if($is_customer_admin)
|
266 |
{
|
267 |
update_option('is_onprem', 0);
|
271 |
{
|
272 |
$adminUser = get_user_by('id',$miniorangeID);
|
273 |
$email = $adminUser->user_email;
|
274 |
+
wp_send_json($email);
|
275 |
}
|
276 |
+
|
277 |
}
|
278 |
}
|
279 |
|
280 |
function mo2f_unlimitted_user()
|
281 |
+
{
|
282 |
if(!wp_verify_nonce($_POST['nonce'],'unlimittedUserNonce'))
|
283 |
{
|
284 |
echo "NonceDidNotMatch";
|
305 |
else
|
306 |
{
|
307 |
echo "OnPremiseDeactive";
|
308 |
+
exit;
|
309 |
}
|
310 |
}
|
311 |
}
|
312 |
function mo2f_save_email_verification()
|
313 |
+
{
|
314 |
+
|
315 |
if(!wp_verify_nonce($_POST['nonce'],'EmailVerificationSaveNonce'))
|
316 |
{
|
317 |
echo "NonceDidNotMatch";
|
328 |
{
|
329 |
$twofactor_transactions = new Mo2fDB;
|
330 |
$exceeded = $twofactor_transactions->check_alluser_limit_exceeded($user_id);
|
331 |
+
|
332 |
if($exceeded){
|
333 |
echo "USER_LIMIT_EXCEEDED";
|
334 |
exit;
|
335 |
}
|
336 |
}
|
337 |
+
if (!filter_var($email, FILTER_VALIDATE_EMAIL))
|
338 |
{
|
339 |
$error = true;
|
340 |
}
|
341 |
if($email!='' && !$error)
|
342 |
{
|
343 |
global $Mo2fdbQueries;
|
344 |
+
if($currentMethod == 'EmailVerification')
|
345 |
+
{
|
346 |
+
$Mo2fdbQueries->update_user_details(get_current_user_id(),array(
|
347 |
'mo2f_EmailVerification_config_status'=>true,
|
348 |
'mo_2factor_user_registration_status' => 'MO_2_FACTOR_PLUGIN_SETTINGS',
|
349 |
'mo2f_configured_2FA_method'=>"Email Verification",
|
350 |
'mo2f_user_email' => $email
|
351 |
+
));
|
352 |
+
}
|
353 |
+
else
|
354 |
+
{
|
355 |
+
$Mo2fdbQueries->update_user_details(get_current_user_id(),array(
|
356 |
+
'mo2f_EmailVerification_config_status'=>true,
|
357 |
+
'mo2f_user_email' => $email
|
358 |
+
));
|
359 |
+
|
360 |
+
}
|
361 |
+
update_user_meta($user_id,'tempEmail',$email);
|
362 |
echo "settingsSaved";
|
363 |
exit;
|
364 |
}
|
369 |
}
|
370 |
|
371 |
}
|
372 |
+
|
373 |
}
|
374 |
function CheckEVStatus()
|
375 |
{
|
376 |
if(isset($_POST['txid']))
|
377 |
{
|
378 |
$txid = sanitize_text_field($_POST['txid']);
|
379 |
+
$status = get_site_option($txid);
|
380 |
if($status ==1 || $status ==0)
|
381 |
delete_site_option($_POST['txid']);
|
382 |
echo $status;
|
388 |
|
389 |
|
390 |
}
|
391 |
+
|
392 |
new mo_2f_ajax;
|
393 |
?>
|
controllers/waf.php
CHANGED
@@ -1,48 +1,48 @@
|
|
1 |
-
<?php
|
2 |
-
global $moWpnsUtility,$mo2f_dirName;
|
3 |
-
$mo_wpns_handler = new MoWpnsHandler();
|
4 |
-
$sqlC = $mo_wpns_handler->get_blocked_attacks_count("SQL");
|
5 |
-
$rceC = $mo_wpns_handler->get_blocked_attacks_count("RCE");
|
6 |
-
$rfiC = $mo_wpns_handler->get_blocked_attacks_count("RFI");
|
7 |
-
$lfiC = $mo_wpns_handler->get_blocked_attacks_count("LFI");
|
8 |
-
$xssC = $mo_wpns_handler->get_blocked_attacks_count("XSS");
|
9 |
-
$totalAttacks = $sqlC+$lfiC+$rfiC+$xssC+$rceC;
|
10 |
-
$manualBlocks = $mo_wpns_handler->get_manual_blocked_ip_count();
|
11 |
-
$realTime = 0;
|
12 |
-
$countryBlocked = $mo_wpns_handler->get_blocked_countries();
|
13 |
-
$IPblockedByWAF = $mo_wpns_handler->get_blocked_ip_waf();
|
14 |
-
$totalIPBlocked = $manualBlocks+$realTime+$IPblockedByWAF;
|
15 |
-
$mo_waf = get_site_option('WAFEnabled');
|
16 |
-
if(!get_option('mo2f_tour_firewall'))
|
17 |
-
update_option('mo2f_tour_firewall',1);
|
18 |
-
if($mo_waf)
|
19 |
-
{
|
20 |
-
$mo_waf = false;
|
21 |
-
}
|
22 |
-
else
|
23 |
-
{
|
24 |
-
$mo_waf = true;
|
25 |
-
}
|
26 |
-
|
27 |
-
|
28 |
-
$path = dirname(dirname(__FILE__)).'/includes/images/loader.gif';
|
29 |
-
$path = explode('plugins', $path);
|
30 |
-
|
31 |
-
|
32 |
-
$img_loader_url = plugins_url().'/'.$path[1];
|
33 |
-
if($totalIPBlocked>999)
|
34 |
-
{
|
35 |
-
$totalIPBlocked = strval(intval($totalIPBlocked/1000)).'k+';
|
36 |
-
}
|
37 |
-
|
38 |
-
if($totalAttacks>999)
|
39 |
-
{
|
40 |
-
$totalAttacks = strval(intval($totalAttacks/1000)).'k+';
|
41 |
-
}
|
42 |
-
update_site_option('mo2f_visit_waf',true);
|
43 |
-
|
44 |
-
include $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'waf.php';
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
1 |
+
<?php
|
2 |
+
global $moWpnsUtility,$mo2f_dirName;
|
3 |
+
$mo_wpns_handler = new MoWpnsHandler();
|
4 |
+
$sqlC = $mo_wpns_handler->get_blocked_attacks_count("SQL");
|
5 |
+
$rceC = $mo_wpns_handler->get_blocked_attacks_count("RCE");
|
6 |
+
$rfiC = $mo_wpns_handler->get_blocked_attacks_count("RFI");
|
7 |
+
$lfiC = $mo_wpns_handler->get_blocked_attacks_count("LFI");
|
8 |
+
$xssC = $mo_wpns_handler->get_blocked_attacks_count("XSS");
|
9 |
+
$totalAttacks = $sqlC+$lfiC+$rfiC+$xssC+$rceC;
|
10 |
+
$manualBlocks = $mo_wpns_handler->get_manual_blocked_ip_count();
|
11 |
+
$realTime = 0;
|
12 |
+
$countryBlocked = $mo_wpns_handler->get_blocked_countries();
|
13 |
+
$IPblockedByWAF = $mo_wpns_handler->get_blocked_ip_waf();
|
14 |
+
$totalIPBlocked = $manualBlocks+$realTime+$IPblockedByWAF;
|
15 |
+
$mo_waf = get_site_option('WAFEnabled');
|
16 |
+
if(!get_option('mo2f_tour_firewall'))
|
17 |
+
update_option('mo2f_tour_firewall',1);
|
18 |
+
if($mo_waf)
|
19 |
+
{
|
20 |
+
$mo_waf = false;
|
21 |
+
}
|
22 |
+
else
|
23 |
+
{
|
24 |
+
$mo_waf = true;
|
25 |
+
}
|
26 |
+
|
27 |
+
|
28 |
+
$path = dirname(dirname(__FILE__)).'/includes/images/loader.gif';
|
29 |
+
$path = explode('plugins', $path);
|
30 |
+
|
31 |
+
|
32 |
+
$img_loader_url = plugins_url().'/'.$path[1];
|
33 |
+
if($totalIPBlocked>999)
|
34 |
+
{
|
35 |
+
$totalIPBlocked = strval(intval($totalIPBlocked/1000)).'k+';
|
36 |
+
}
|
37 |
+
|
38 |
+
if($totalAttacks>999)
|
39 |
+
{
|
40 |
+
$totalAttacks = strval(intval($totalAttacks/1000)).'k+';
|
41 |
+
}
|
42 |
+
update_site_option('mo2f_visit_waf',true);
|
43 |
+
|
44 |
+
include $mo2f_dirName . 'views'.DIRECTORY_SEPARATOR.'waf.php';
|
45 |
+
|
46 |
+
|
47 |
+
|
48 |
+
|
controllers/wpns-loginsecurity-ajax.php
CHANGED
@@ -9,6 +9,20 @@ class wpns_ajax
|
|
9 |
function mo_login_security_ajax(){
|
10 |
|
11 |
add_action( 'wp_ajax_wpns_login_security', array($this,'wpns_login_security') );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
}
|
13 |
|
14 |
function wpns_login_security(){
|
@@ -37,6 +51,30 @@ class wpns_ajax
|
|
37 |
|
38 |
}
|
39 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
function wpns_logout_form()
|
41 |
{
|
42 |
global $moWpnsUtility;
|
9 |
function mo_login_security_ajax(){
|
10 |
|
11 |
add_action( 'wp_ajax_wpns_login_security', array($this,'wpns_login_security') );
|
12 |
+
add_action( 'wp_ajax_mo2f_ajax', array($this,'mo2f_ajax') );
|
13 |
+
add_action( 'wp_ajax_nopriv_mo2f_ajax', array($this,'mo2f_ajax') );
|
14 |
+
}
|
15 |
+
|
16 |
+
function mo2f_ajax(){
|
17 |
+
$GLOBALS['mo2f_is_ajax_request'] = true;
|
18 |
+
switch ($_POST['mo2f_ajax_option']) {
|
19 |
+
case "mo2f_ajax_kba":
|
20 |
+
$this->mo2f_ajax_kba();break;
|
21 |
+
case "mo2f_ajax_login":
|
22 |
+
$this->mo2f_ajax_login(); break;
|
23 |
+
case "mo2f_ajax_otp":
|
24 |
+
$this->mo2f_ajax_otp(); break;
|
25 |
+
}
|
26 |
}
|
27 |
|
28 |
function wpns_login_security(){
|
51 |
|
52 |
}
|
53 |
}
|
54 |
+
|
55 |
+
|
56 |
+
function mo2f_ajax_otp(){
|
57 |
+
$obj = new Miniorange_Password_2Factor_Login();
|
58 |
+
$obj->check_miniorange_soft_token($_POST);
|
59 |
+
}
|
60 |
+
function mo2f_ajax_kba(){
|
61 |
+
$obj = new Miniorange_Password_2Factor_Login();
|
62 |
+
$obj->check_kba_validation($_POST);
|
63 |
+
}
|
64 |
+
function mo2f_ajax_login()
|
65 |
+
{
|
66 |
+
if(!wp_verify_nonce(sanitize_text_field($_POST['nonce']),'miniorange-2-factor-login-nonce'))
|
67 |
+
{
|
68 |
+
wp_send_json("ERROR");
|
69 |
+
exit;
|
70 |
+
}
|
71 |
+
else
|
72 |
+
{
|
73 |
+
$username = sanitize_text_field($_POST['username']);
|
74 |
+
$password = sanitize_text_field($_POST['password'] );
|
75 |
+
apply_filters( 'authenticate', null, $username, $password );
|
76 |
+
}
|
77 |
+
}
|
78 |
function wpns_logout_form()
|
79 |
{
|
80 |
global $moWpnsUtility;
|
database/database_functions.php
CHANGED
@@ -1,814 +1,820 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
|
4 |
-
|
5 |
-
class MoWpnsDB
|
6 |
-
{
|
7 |
-
private $transactionTable;
|
8 |
-
private $blockedIPsTable;
|
9 |
-
private $whitelistIPsTable;
|
10 |
-
private $emailAuditTable;
|
11 |
-
private $malwarereportTable;
|
12 |
-
private $scanreportdetails;
|
13 |
-
private $skipfiles;
|
14 |
-
private $hashfile;
|
15 |
-
|
16 |
-
function __construct()
|
17 |
-
{
|
18 |
-
global $wpdb;
|
19 |
-
$this->transactionTable = $wpdb->base_prefix.'mo2f_network_transactions';
|
20 |
-
$this->blockedIPsTable = $wpdb->base_prefix.'mo2f_network_blocked_ips';
|
21 |
-
$this->attackList = $wpdb->base_prefix.'wpns_attack_logs';
|
22 |
-
$this->whitelistIPsTable = $wpdb->base_prefix.'mo2f_network_whitelisted_ips';
|
23 |
-
$this->emailAuditTable = $wpdb->base_prefix.'mo2f_network_email_sent_audit';
|
24 |
-
$this->IPrateDetails = $wpdb->base_prefix.'wpns_ip_rate_details';
|
25 |
-
$this->attackLogs = $wpdb->base_prefix.'wpns_attack_logs';
|
26 |
-
$this->malwarereportTable = $wpdb->base_prefix.'wpns_malware_scan_report';
|
27 |
-
$this->scanreportdetails = $wpdb->base_prefix.'wpns_malware_scan_report_details';
|
28 |
-
$this->skipfiles = $wpdb->base_prefix.'wpns_malware_skip_files';
|
29 |
-
$this->hashfile = $wpdb->base_prefix.'wpns_malware_hash_file';
|
30 |
-
$this->backupdetails = $wpdb->base_prefix.'wpns_backup_report';
|
31 |
-
$this->filescan = $wpdb->base_prefix.'wpns_files_scan';
|
32 |
-
}
|
33 |
-
|
34 |
-
function mo_plugin_activate()
|
35 |
-
{
|
36 |
-
global $wpdb;
|
37 |
-
if(!get_option('mo_wpns_dbversion')||get_option('mo_wpns_dbversion')<MoWpnsConstants::DB_VERSION){
|
38 |
-
update_option('mo_wpns_dbversion', MoWpnsConstants::DB_VERSION );
|
39 |
-
$this->generate_tables();
|
40 |
-
} else {
|
41 |
-
$current_db_version = get_option('mo_wpns_dbversion');
|
42 |
-
if($current_db_version < MoWpnsConstants::DB_VERSION){
|
43 |
-
update_option('mo_wpns_dbversion', MoWpnsConstants::DB_VERSION );
|
44 |
-
|
45 |
-
}
|
46 |
-
}
|
47 |
-
}
|
48 |
-
|
49 |
-
function generate_tables(){
|
50 |
-
global $wpdb;
|
51 |
-
|
52 |
-
$tableName = $this->transactionTable;
|
53 |
-
if($wpdb->get_var("show tables like '$tableName'") != $tableName)
|
54 |
-
{
|
55 |
-
$sql = "CREATE TABLE " . $tableName . " (
|
56 |
-
`id` bigint NOT NULL AUTO_INCREMENT, `ip_address` mediumtext NOT NULL , `username` mediumtext NOT NULL ,
|
57 |
-
`type` mediumtext NOT NULL , `url` mediumtext NOT NULL , `status` mediumtext NOT NULL , `created_timestamp` int, UNIQUE KEY id (id) );";
|
58 |
-
dbDelta($sql);
|
59 |
-
}
|
60 |
-
|
61 |
-
$tableName = $this->blockedIPsTable;
|
62 |
-
if($wpdb->get_var("show tables like '$tableName'") != $tableName)
|
63 |
-
{
|
64 |
-
$sql = "CREATE TABLE " . $tableName . " (
|
65 |
-
`id` int NOT NULL AUTO_INCREMENT, `ip_address` mediumtext NOT NULL , `reason` mediumtext, `blocked_for_time` int,
|
66 |
-
`created_timestamp` int, UNIQUE KEY id (id) );";
|
67 |
-
dbDelta($sql);
|
68 |
-
}
|
69 |
-
|
70 |
-
|
71 |
-
$tableName = $this->whitelistIPsTable;
|
72 |
-
if($wpdb->get_var("show tables like '$tableName'") != $tableName)
|
73 |
-
{
|
74 |
-
$sql = "CREATE TABLE " . $tableName . " (
|
75 |
-
`id` int NOT NULL AUTO_INCREMENT, `ip_address` mediumtext NOT NULL , `created_timestamp` int, UNIQUE KEY id (id) );";
|
76 |
-
dbDelta($sql);
|
77 |
-
}
|
78 |
-
|
79 |
-
$tableName = $this->backupdetails;
|
80 |
-
if($wpdb->get_var("show tables like '$tableName'") != $tableName)
|
81 |
-
{
|
82 |
-
$sql = "CREATE TABLE " . $tableName . " (`id` int NOT NULL AUTO_INCREMENT,
|
83 |
-
`backup_id` mediumtext NOT NULL, `file_name` mediumtext NOT NULL , `created_timestamp` bigint, `plugin_path` mediumtext, UNIQUE KEY id (id) );";
|
84 |
-
dbDelta($sql);
|
85 |
-
}
|
86 |
-
$result= $wpdb->get_var("SHOW COLUMNS FROM `$tableName` LIKE 'plugin_path'");
|
87 |
-
if(is_null($result)){
|
88 |
-
$sql = "ALTER TABLE `$tableName` ADD `plugin_path` mediumtext AFTER `created_timestamp` ;";
|
89 |
-
$results1 = $wpdb->query($sql);
|
90 |
-
}
|
91 |
-
|
92 |
-
$tableName = $this->emailAuditTable;
|
93 |
-
if($wpdb->get_var("show tables like '$tableName'") != $tableName)
|
94 |
-
{
|
95 |
-
$sql = "CREATE TABLE " . $tableName . " (
|
96 |
-
`id` int NOT NULL AUTO_INCREMENT, `ip_address` mediumtext NOT NULL , `username` mediumtext NOT NULL, `reason` mediumtext, `created_timestamp` int, UNIQUE KEY id (id) );";
|
97 |
-
dbDelta($sql);
|
98 |
-
}
|
99 |
-
$tableName = $this->IPrateDetails;
|
100 |
-
if($wpdb->get_var("show tables like '$tableName'") != $tableName)
|
101 |
-
{
|
102 |
-
$sql = "CREATE TABLE " . $tableName . " (
|
103 |
-
ip varchar(20) , time bigint );";
|
104 |
-
dbDelta($sql);
|
105 |
-
}
|
106 |
-
|
107 |
-
$tableName = $this->attackLogs;
|
108 |
-
if($wpdb->get_var("show tables like '$tableName'") != $tableName)
|
109 |
-
{
|
110 |
-
$sql = "create table ". $tableName ." (
|
111 |
-
ip varchar(20),
|
112 |
-
type varchar(20),
|
113 |
-
time bigint,
|
114 |
-
input mediumtext );";
|
115 |
-
//dbDelta($sql);
|
116 |
-
$results = $wpdb->get_results($sql);
|
117 |
-
|
118 |
-
}
|
119 |
-
$tableName = $this->malwarereportTable;
|
120 |
-
if($wpdb->get_var("show tables like '$tableName'") != $tableName)
|
121 |
-
{
|
122 |
-
$sql = "CREATE TABLE " . $tableName . " (
|
123 |
-
`id` bigint NOT NULL AUTO_INCREMENT, `scan_mode` mediumtext NOT NULL, `scanned_folders` mediumtext NOT NULL, `scanned_files` int NOT NULL, `malware_count` int NOT NULL DEFAULT 0, `repo_issues` int NOT NULL DEFAULT 0, `malicious_links` int NOT NULL DEFAULT 0, `start_timestamp` int, `completed_timestamp` int, UNIQUE KEY id (id) );";
|
124 |
-
dbDelta($sql);
|
125 |
-
}
|
126 |
-
$result= $wpdb->get_var("SHOW COLUMNS FROM `$tableName` LIKE 'scan_mode'");
|
127 |
-
if(is_null($result)){
|
128 |
-
$sql = "ALTER TABLE `$tableName` ADD `scan_mode` mediumtext AFTER `id` ;";
|
129 |
-
$results1 = $wpdb->query($sql);
|
130 |
-
$sql1= "UPDATE $this->malwarereportTable SET `scan_mode`='Custom Scan';";
|
131 |
-
$resluts = $wpdb->query($sql1);
|
132 |
-
}
|
133 |
-
|
134 |
-
$tableName = $this->scanreportdetails;
|
135 |
-
if($wpdb->get_var("show tables like '$tableName'") != $tableName)
|
136 |
-
{
|
137 |
-
$sql = "CREATE TABLE " . $tableName . " (
|
138 |
-
`id` bigint NOT NULL AUTO_INCREMENT, `report_id` bigint, `filename` mediumtext NOT NULL, `report` mediumtext NOT NULL , `created_timestamp` int, UNIQUE KEY id (id) );";
|
139 |
-
dbDelta($sql);
|
140 |
-
}
|
141 |
-
|
142 |
-
$tableName = $this->skipfiles;
|
143 |
-
if($wpdb->get_var("show tables like '$tableName'") != $tableName)
|
144 |
-
{
|
145 |
-
$sql = "CREATE TABLE " . $tableName . " (
|
146 |
-
`id` bigint NOT NULL AUTO_INCREMENT, `path` mediumtext NOT NULL , `signature` mediumtext, `created_timestamp` int, UNIQUE KEY id (id) );";
|
147 |
-
dbDelta($sql);
|
148 |
-
}
|
149 |
-
|
150 |
-
$tableName = $this->filescan;
|
151 |
-
if($wpdb->get_var("show tables like '$tableName'") != $tableName)
|
152 |
-
{
|
153 |
-
$sql = "CREATE TABLE " . $tableName . " (
|
154 |
-
`id` bigint NOT NULL AUTO_INCREMENT, `path` mediumtext NOT NULL, `name_hash` varchar(45) NOT NULL, `malware_service` int NOT NULL, `repo_check` int NOT NULL, `link_check` int NOT NULL, PRIMARY KEY id (id), UNIQUE KEY name_hash (name_hash) );";
|
155 |
-
dbDelta($sql);
|
156 |
-
}
|
157 |
-
|
158 |
-
$tableName = $this->hashfile;
|
159 |
-
if($wpdb->get_var("show tables like '$tableName'") != $tableName)
|
160 |
-
{
|
161 |
-
$sql = "CREATE TABLE " . $tableName . " (
|
162 |
-
`id` bigint(20) NOT NULL AUTO_INCREMENT,`file name` varchar(500) NOT NULL,`file hash` mediumtext NOT NULL, `scan_data` mediumtext NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `id` (`id`), UNIQUE KEY `file name` (`file name`), UNIQUE KEY `id_2`(`id`));";
|
163 |
-
dbDelta($sql);
|
164 |
-
}
|
165 |
-
|
166 |
-
$row1 = $wpdb->get_results( "SHOW COLUMNS FROM ".$this->malwarereportTable." LIKE 'malware_count'" );
|
167 |
-
$row2 = $wpdb->get_results( "SHOW COLUMNS FROM ".$this->malwarereportTable." LIKE 'repo_issues'" );
|
168 |
-
$row3 = $wpdb->get_results( "SHOW COLUMNS FROM ".$this->malwarereportTable." LIKE 'malicious_links'" );
|
169 |
-
if(empty($row1) && empty($row1) && empty($row1)){
|
170 |
-
$result = $wpdb->query("ALTER TABLE $this->malwarereportTable ADD COLUMN `malware_count` INT NOT NULL DEFAULT 0 AFTER `scanned_files`, ADD COLUMN `repo_issues` INT NOT NULL DEFAULT 0 AFTER `malware_count`, ADD COLUMN `malicious_links` INT NOT NULL DEFAULT 0 AFTER `repo_issues`");
|
171 |
-
if($result){
|
172 |
-
$report_ids = $wpdb->get_results("SELECT id FROM $this->malwarereportTable");
|
173 |
-
foreach ($report_ids as $key => $value) {
|
174 |
-
$scan_detail = $wpdb->get_results("SELECT report FROM $this->scanreportdetails WHERE report_id='".$report_ids[$key]->id."'");
|
175 |
-
$result = $this->mo_wpns_get_scan_count($scan_detail);
|
176 |
-
$wpdb->query("UPDATE $this->malwarereportTable SET `malware_count`= '".$result['scan']."', `repo_issues`='".$result['repo']."', `malicious_links`='".$result['extl']."' WHERE id='".$report_ids[$key]->id."'");
|
177 |
-
}
|
178 |
-
}
|
179 |
-
}
|
180 |
-
$rowhash = $wpdb->get_results( "SHOW COLUMNS FROM ".$this->hashfile." LIKE 'scan_data'" );
|
181 |
-
if(empty($rowhash)){
|
182 |
-
$result = $wpdb->query("ALTER TABLE $this->hashfile ADD COLUMN `scan_data` mediumtext NOT NULL");
|
183 |
-
}
|
184 |
-
}
|
185 |
-
|
186 |
-
function insert_backup_detail($backup_id,$file_name,$backup_created_timestamp,$plugin_path){
|
187 |
-
global $wpdb;
|
188 |
-
$wpdb->insert(
|
189 |
-
$this->backupdetails,
|
190 |
-
array(
|
191 |
-
'backup_id' =>$backup_id,
|
192 |
-
'file_name' =>$file_name,
|
193 |
-
'created_timestamp'=> $backup_created_timestamp,
|
194 |
-
'plugin_path' => $plugin_path
|
195 |
-
));
|
196 |
-
}
|
197 |
-
|
198 |
-
function get_table_content(){
|
199 |
-
global $wpdb;
|
200 |
-
return $wpdb->get_results("SELECT plugin_path,file_name,created_timestamp,id FROM ".$this->backupdetails);
|
201 |
-
}
|
202 |
-
|
203 |
-
function get_number_of_plugin_backup(){
|
204 |
-
global $wpdb;
|
205 |
-
|
206 |
-
$plugin_count = $wpdb->get_var("SELECT COUNT(*) FROM ".$this->backupdetails." WHERE backup_id = 'plugin'");
|
207 |
-
$themes_count = $wpdb->get_var("SELECT COUNT(*) FROM ".$this->backupdetails." WHERE backup_id = 'themes'");
|
208 |
-
$wp_files_count = $wpdb->get_var("SELECT COUNT(*) FROM ".$this->backupdetails." WHERE backup_id = 'wpfiles'");
|
209 |
-
$db_count = $wpdb->get_var("SELECT COUNT(*) FROM ".$this->backupdetails." WHERE backup_id = 'db'");
|
210 |
-
$total_backup = $wpdb->get_var("SELECT COUNT(*) FROM ".$this->backupdetails);
|
211 |
-
$array = array('plugin_count'=>$plugin_count,'themes_count'=>$themes_count,'wp_files_count'=>$wp_files_count,'db_count'=>$db_count,'total_backup'=>$total_backup);
|
212 |
-
|
213 |
-
return $array;
|
214 |
-
}
|
215 |
-
|
216 |
-
function delete_file($id){
|
217 |
-
global $wpdb;
|
218 |
-
$wpdb->query(
|
219 |
-
"DELETE FROM ".$this->backupdetails."
|
220 |
-
WHERE id = ".$id
|
221 |
-
);
|
222 |
-
return;
|
223 |
-
}
|
224 |
-
|
225 |
-
function row_exist($id){
|
226 |
-
global $wpdb;
|
227 |
-
$is_exist = $wpdb->get_var("SELECT COUNT(*) FROM ".$this->backupdetails." WHERE id =".$id );
|
228 |
-
return $is_exist;
|
229 |
-
}
|
230 |
-
|
231 |
-
function get_ip_blocked_count($ipAddress)
|
232 |
-
{
|
233 |
-
global $wpdb;
|
234 |
-
return $wpdb->get_var( "SELECT COUNT(*) FROM ".$this->blockedIPsTable." WHERE ip_address = '".$ipAddress."'" );
|
235 |
-
}
|
236 |
-
function get_total_blocked_ips()
|
237 |
-
{
|
238 |
-
global $wpdb;
|
239 |
-
return $wpdb->get_var( "SELECT COUNT(*) FROM ".$this->blockedIPsTable);
|
240 |
-
}
|
241 |
-
function get_total_manual_blocked_ips()
|
242 |
-
{
|
243 |
-
global $wpdb;
|
244 |
-
return $wpdb->get_var( "SELECT COUNT(*) FROM ".$this->blockedIPsTable." WHERE reason = 'Blocked by Admin';");
|
245 |
-
}
|
246 |
-
function get_total_blocked_ips_waf()
|
247 |
-
{
|
248 |
-
global $wpdb;
|
249 |
-
$totalIPBlocked = $wpdb->get_var( "SELECT COUNT(*) FROM ".$this->blockedIPsTable);
|
250 |
-
return $totalIPBlocked - $wpdb->get_var( "SELECT COUNT(*) FROM ".$this->blockedIPsTable." WHERE reason = 'Blocked by Admin';");
|
251 |
-
}
|
252 |
-
function get_blocked_attack_count($attack)
|
253 |
-
{
|
254 |
-
global $wpdb;
|
255 |
-
return $wpdb->get_var( "SELECT COUNT(*) FROM ".$this->attackList." WHERE type = '".$attack."'" );
|
256 |
-
}
|
257 |
-
|
258 |
-
function get_count_of_blocked_ips(){
|
259 |
-
global $wpdb;
|
260 |
-
return $wpdb->get_var("SELECT COUNT(*) FROM ".$this->blockedIPsTable."");
|
261 |
-
}
|
262 |
-
|
263 |
-
|
264 |
-
function get_blocked_ip($entryid)
|
265 |
-
{
|
266 |
-
global $wpdb;
|
267 |
-
return $wpdb->get_results( "SELECT ip_address FROM ".$this->blockedIPsTable." WHERE id=".$entryid );
|
268 |
-
}
|
269 |
-
|
270 |
-
function get_blocked_ip_list()
|
271 |
-
{
|
272 |
-
global $wpdb;
|
273 |
-
return $wpdb->get_results("SELECT id, reason, ip_address, created_timestamp FROM ".$this->blockedIPsTable);
|
274 |
-
}
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
return $wpdb->get_results("SELECT ip, type, time, input FROM ".$
|
281 |
-
}
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
function
|
304 |
-
{
|
305 |
-
global $wpdb;
|
306 |
-
$wpdb->
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
return
|
332 |
-
}
|
333 |
-
|
334 |
-
function
|
335 |
-
{
|
336 |
-
global $wpdb;
|
337 |
-
$wpdb->
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
{
|
353 |
-
global $wpdb;
|
354 |
-
$wpdb->
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
return
|
365 |
-
}
|
366 |
-
|
367 |
-
function
|
368 |
-
{
|
369 |
-
global $wpdb;
|
370 |
-
return $wpdb->
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
return
|
408 |
-
}
|
409 |
-
|
410 |
-
function
|
411 |
-
{
|
412 |
-
global $wpdb;
|
413 |
-
return $wpdb->get_results( "SELECT ip_address, username, status, created_timestamp FROM ".$this->transactionTable."
|
414 |
-
}
|
415 |
-
|
416 |
-
function
|
417 |
-
{
|
418 |
-
global $wpdb;
|
419 |
-
return $wpdb->get_results( "SELECT ip_address, username,
|
420 |
-
}
|
421 |
-
|
422 |
-
function
|
423 |
-
{
|
424 |
-
global $wpdb;
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
{
|
456 |
-
global $wpdb;
|
457 |
-
return $wpdb->get_var( "SELECT COUNT(*) FROM ".$this->transactionTable." WHERE
|
458 |
-
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
'
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
-
|
506 |
-
|
507 |
-
|
508 |
-
|
509 |
-
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
}
|
517 |
-
|
518 |
-
function
|
519 |
-
global $wpdb;
|
520 |
-
$sql= $wpdb->get_results("SELECT
|
521 |
-
return $sql[0]->
|
522 |
-
}
|
523 |
-
|
524 |
-
function
|
525 |
-
global $wpdb;
|
526 |
-
$sql= $wpdb->get_results(
|
527 |
-
return $sql[0]->
|
528 |
-
}
|
529 |
-
|
530 |
-
function
|
531 |
-
global $wpdb;
|
532 |
-
$sql= $wpdb->get_results('SELECT
|
533 |
-
return $sql[0]->
|
534 |
-
}
|
535 |
-
|
536 |
-
function
|
537 |
-
global $wpdb;
|
538 |
-
$sql= 'SELECT * FROM '.$this->
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
$
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
$source_file_path
|
553 |
-
$query
|
554 |
-
|
555 |
-
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
$query= "
|
560 |
-
$res=$wpdb->query( $query );
|
561 |
-
}
|
562 |
-
|
563 |
-
function
|
564 |
-
global $wpdb;
|
565 |
-
$
|
566 |
-
$
|
567 |
-
|
568 |
-
|
569 |
-
|
570 |
-
|
571 |
-
|
572 |
-
|
573 |
-
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
-
|
578 |
-
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
|
586 |
-
|
587 |
-
|
588 |
-
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
|
600 |
-
|
601 |
-
|
602 |
-
|
603 |
-
|
604 |
-
|
605 |
-
|
606 |
-
|
607 |
-
|
608 |
-
$query
|
609 |
-
|
610 |
-
|
611 |
-
|
612 |
-
|
613 |
-
|
614 |
-
|
615 |
-
|
616 |
-
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
|
624 |
-
$query
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
|
637 |
-
|
638 |
-
|
639 |
-
|
640 |
-
$
|
641 |
-
$
|
642 |
-
|
643 |
-
|
644 |
-
|
645 |
-
|
646 |
-
|
647 |
-
$sql
|
648 |
-
$result
|
649 |
-
|
650 |
-
|
651 |
-
|
652 |
-
|
653 |
-
|
654 |
-
$sql
|
655 |
-
$result
|
656 |
-
|
657 |
-
|
658 |
-
|
659 |
-
|
660 |
-
|
661 |
-
$sql
|
662 |
-
$
|
663 |
-
}
|
664 |
-
|
665 |
-
function
|
666 |
-
global $wpdb;
|
667 |
-
$
|
668 |
-
|
669 |
-
}
|
670 |
-
|
671 |
-
function
|
672 |
-
global $wpdb;
|
673 |
-
$result
|
674 |
-
return $result;
|
675 |
-
}
|
676 |
-
|
677 |
-
function
|
678 |
-
global $wpdb;
|
679 |
-
$wpdb->
|
680 |
-
|
681 |
-
|
682 |
-
|
683 |
-
|
684 |
-
$
|
685 |
-
$
|
686 |
-
|
687 |
-
|
688 |
-
|
689 |
-
|
690 |
-
|
691 |
-
|
692 |
-
|
693 |
-
|
694 |
-
|
695 |
-
|
696 |
-
|
697 |
-
|
698 |
-
|
699 |
-
|
700 |
-
|
701 |
-
|
702 |
-
|
703 |
-
|
704 |
-
|
705 |
-
|
706 |
-
|
707 |
-
|
708 |
-
}
|
709 |
-
|
710 |
-
function
|
711 |
-
global $wpdb;
|
712 |
-
$result = $wpdb->get_results( "SELECT
|
713 |
-
return $result;
|
714 |
-
}
|
715 |
-
|
716 |
-
function
|
717 |
-
|
718 |
-
|
719 |
-
$result
|
720 |
-
|
721 |
-
|
722 |
-
|
723 |
-
|
724 |
-
|
725 |
-
|
726 |
-
|
727 |
-
|
728 |
-
|
729 |
-
|
730 |
-
|
731 |
-
|
732 |
-
|
733 |
-
|
734 |
-
|
735 |
-
|
736 |
-
|
737 |
-
|
738 |
-
|
739 |
-
|
740 |
-
|
741 |
-
|
742 |
-
|
743 |
-
|
744 |
-
|
745 |
-
|
746 |
-
|
747 |
-
|
748 |
-
|
749 |
-
|
750 |
-
|
751 |
-
|
752 |
-
}
|
753 |
-
|
754 |
-
function
|
755 |
-
global $wpdb;
|
756 |
-
$result = $wpdb->get_results( "SELECT * FROM ".$this->
|
757 |
-
return $result;
|
758 |
-
}
|
759 |
-
|
760 |
-
function
|
761 |
-
$
|
762 |
-
|
763 |
-
|
764 |
-
|
765 |
-
|
766 |
-
|
767 |
-
|
768 |
-
|
769 |
-
|
770 |
-
|
771 |
-
|
772 |
-
|
773 |
-
|
774 |
-
|
775 |
-
|
776 |
-
|
777 |
-
|
778 |
-
|
779 |
-
|
780 |
-
|
781 |
-
|
782 |
-
|
783 |
-
|
784 |
-
|
785 |
-
|
786 |
-
|
787 |
-
|
788 |
-
|
789 |
-
|
790 |
-
|
791 |
-
|
792 |
-
|
793 |
-
|
794 |
-
|
795 |
-
|
796 |
-
|
797 |
-
|
798 |
-
|
799 |
-
$
|
800 |
-
$link_count++;
|
801 |
-
}else if(isset($temp['
|
802 |
-
$
|
803 |
-
$
|
804 |
-
}else if(isset($temp['scan'])){
|
805 |
-
$scan_count++;
|
806 |
-
|
807 |
-
|
808 |
-
|
809 |
-
$link_count++;
|
810 |
-
}
|
811 |
-
|
812 |
-
|
813 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
814 |
}
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
|
4 |
+
|
5 |
+
class MoWpnsDB
|
6 |
+
{
|
7 |
+
private $transactionTable;
|
8 |
+
private $blockedIPsTable;
|
9 |
+
private $whitelistIPsTable;
|
10 |
+
private $emailAuditTable;
|
11 |
+
private $malwarereportTable;
|
12 |
+
private $scanreportdetails;
|
13 |
+
private $skipfiles;
|
14 |
+
private $hashfile;
|
15 |
+
|
16 |
+
function __construct()
|
17 |
+
{
|
18 |
+
global $wpdb;
|
19 |
+
$this->transactionTable = $wpdb->base_prefix.'mo2f_network_transactions';
|
20 |
+
$this->blockedIPsTable = $wpdb->base_prefix.'mo2f_network_blocked_ips';
|
21 |
+
$this->attackList = $wpdb->base_prefix.'wpns_attack_logs';
|
22 |
+
$this->whitelistIPsTable = $wpdb->base_prefix.'mo2f_network_whitelisted_ips';
|
23 |
+
$this->emailAuditTable = $wpdb->base_prefix.'mo2f_network_email_sent_audit';
|
24 |
+
$this->IPrateDetails = $wpdb->base_prefix.'wpns_ip_rate_details';
|
25 |
+
$this->attackLogs = $wpdb->base_prefix.'wpns_attack_logs';
|
26 |
+
$this->malwarereportTable = $wpdb->base_prefix.'wpns_malware_scan_report';
|
27 |
+
$this->scanreportdetails = $wpdb->base_prefix.'wpns_malware_scan_report_details';
|
28 |
+
$this->skipfiles = $wpdb->base_prefix.'wpns_malware_skip_files';
|
29 |
+
$this->hashfile = $wpdb->base_prefix.'wpns_malware_hash_file';
|
30 |
+
$this->backupdetails = $wpdb->base_prefix.'wpns_backup_report';
|
31 |
+
$this->filescan = $wpdb->base_prefix.'wpns_files_scan';
|
32 |
+
}
|
33 |
+
|
34 |
+
function mo_plugin_activate()
|
35 |
+
{
|
36 |
+
global $wpdb;
|
37 |
+
if(!get_option('mo_wpns_dbversion')||get_option('mo_wpns_dbversion')<MoWpnsConstants::DB_VERSION){
|
38 |
+
update_option('mo_wpns_dbversion', MoWpnsConstants::DB_VERSION );
|
39 |
+
$this->generate_tables();
|
40 |
+
} else {
|
41 |
+
$current_db_version = get_option('mo_wpns_dbversion');
|
42 |
+
if($current_db_version < MoWpnsConstants::DB_VERSION){
|
43 |
+
update_option('mo_wpns_dbversion', MoWpnsConstants::DB_VERSION );
|
44 |
+
|
45 |
+
}
|
46 |
+
}
|
47 |
+
}
|
48 |
+
|
49 |
+
function generate_tables(){
|
50 |
+
global $wpdb;
|
51 |
+
|
52 |
+
$tableName = $this->transactionTable;
|
53 |
+
if($wpdb->get_var("show tables like '$tableName'") != $tableName)
|
54 |
+
{
|
55 |
+
$sql = "CREATE TABLE " . $tableName . " (
|
56 |
+
`id` bigint NOT NULL AUTO_INCREMENT, `ip_address` mediumtext NOT NULL , `username` mediumtext NOT NULL ,
|
57 |
+
`type` mediumtext NOT NULL , `url` mediumtext NOT NULL , `status` mediumtext NOT NULL , `created_timestamp` int, UNIQUE KEY id (id) );";
|
58 |
+
dbDelta($sql);
|
59 |
+
}
|
60 |
+
|
61 |
+
$tableName = $this->blockedIPsTable;
|
62 |
+
if($wpdb->get_var("show tables like '$tableName'") != $tableName)
|
63 |
+
{
|
64 |
+
$sql = "CREATE TABLE " . $tableName . " (
|
65 |
+
`id` int NOT NULL AUTO_INCREMENT, `ip_address` mediumtext NOT NULL , `reason` mediumtext, `blocked_for_time` int,
|
66 |
+
`created_timestamp` int, UNIQUE KEY id (id) );";
|
67 |
+
dbDelta($sql);
|
68 |
+
}
|
69 |
+
|
70 |
+
|
71 |
+
$tableName = $this->whitelistIPsTable;
|
72 |
+
if($wpdb->get_var("show tables like '$tableName'") != $tableName)
|
73 |
+
{
|
74 |
+
$sql = "CREATE TABLE " . $tableName . " (
|
75 |
+
`id` int NOT NULL AUTO_INCREMENT, `ip_address` mediumtext NOT NULL , `created_timestamp` int, UNIQUE KEY id (id) );";
|
76 |
+
dbDelta($sql);
|
77 |
+
}
|
78 |
+
|
79 |
+
$tableName = $this->backupdetails;
|
80 |
+
if($wpdb->get_var("show tables like '$tableName'") != $tableName)
|
81 |
+
{
|
82 |
+
$sql = "CREATE TABLE " . $tableName . " (`id` int NOT NULL AUTO_INCREMENT,
|
83 |
+
`backup_id` mediumtext NOT NULL, `file_name` mediumtext NOT NULL , `created_timestamp` bigint, `plugin_path` mediumtext, UNIQUE KEY id (id) );";
|
84 |
+
dbDelta($sql);
|
85 |
+
}
|
86 |
+
$result= $wpdb->get_var("SHOW COLUMNS FROM `$tableName` LIKE 'plugin_path'");
|
87 |
+
if(is_null($result)){
|
88 |
+
$sql = "ALTER TABLE `$tableName` ADD `plugin_path` mediumtext AFTER `created_timestamp` ;";
|
89 |
+
$results1 = $wpdb->query($sql);
|
90 |
+
}
|
91 |
+
|
92 |
+
$tableName = $this->emailAuditTable;
|
93 |
+
if($wpdb->get_var("show tables like '$tableName'") != $tableName)
|
94 |
+
{
|
95 |
+
$sql = "CREATE TABLE " . $tableName . " (
|
96 |
+
`id` int NOT NULL AUTO_INCREMENT, `ip_address` mediumtext NOT NULL , `username` mediumtext NOT NULL, `reason` mediumtext, `created_timestamp` int, UNIQUE KEY id (id) );";
|
97 |
+
dbDelta($sql);
|
98 |
+
}
|
99 |
+
$tableName = $this->IPrateDetails;
|
100 |
+
if($wpdb->get_var("show tables like '$tableName'") != $tableName)
|
101 |
+
{
|
102 |
+
$sql = "CREATE TABLE " . $tableName . " (
|
103 |
+
ip varchar(20) , time bigint );";
|
104 |
+
dbDelta($sql);
|
105 |
+
}
|
106 |
+
|
107 |
+
$tableName = $this->attackLogs;
|
108 |
+
if($wpdb->get_var("show tables like '$tableName'") != $tableName)
|
109 |
+
{
|
110 |
+
$sql = "create table ". $tableName ." (
|
111 |
+
ip varchar(20),
|
112 |
+
type varchar(20),
|
113 |
+
time bigint,
|
114 |
+
input mediumtext );";
|
115 |
+
//dbDelta($sql);
|
116 |
+
$results = $wpdb->get_results($sql);
|
117 |
+
|
118 |
+
}
|
119 |
+
$tableName = $this->malwarereportTable;
|
120 |
+
if($wpdb->get_var("show tables like '$tableName'") != $tableName)
|
121 |
+
{
|
122 |
+
$sql = "CREATE TABLE " . $tableName . " (
|
123 |
+
`id` bigint NOT NULL AUTO_INCREMENT, `scan_mode` mediumtext NOT NULL, `scanned_folders` mediumtext NOT NULL, `scanned_files` int NOT NULL, `malware_count` int NOT NULL DEFAULT 0, `repo_issues` int NOT NULL DEFAULT 0, `malicious_links` int NOT NULL DEFAULT 0, `start_timestamp` int, `completed_timestamp` int, UNIQUE KEY id (id) );";
|
124 |
+
dbDelta($sql);
|
125 |
+
}
|
126 |
+
$result= $wpdb->get_var("SHOW COLUMNS FROM `$tableName` LIKE 'scan_mode'");
|
127 |
+
if(is_null($result)){
|
128 |
+
$sql = "ALTER TABLE `$tableName` ADD `scan_mode` mediumtext AFTER `id` ;";
|
129 |
+
$results1 = $wpdb->query($sql);
|
130 |
+
$sql1= "UPDATE $this->malwarereportTable SET `scan_mode`='Custom Scan';";
|
131 |
+
$resluts = $wpdb->query($sql1);
|
132 |
+
}
|
133 |
+
|
134 |
+
$tableName = $this->scanreportdetails;
|
135 |
+
if($wpdb->get_var("show tables like '$tableName'") != $tableName)
|
136 |
+
{
|
137 |
+
$sql = "CREATE TABLE " . $tableName . " (
|
138 |
+
`id` bigint NOT NULL AUTO_INCREMENT, `report_id` bigint, `filename` mediumtext NOT NULL, `report` mediumtext NOT NULL , `created_timestamp` int, UNIQUE KEY id (id) );";
|
139 |
+
dbDelta($sql);
|
140 |
+
}
|
141 |
+
|
142 |
+
$tableName = $this->skipfiles;
|
143 |
+
if($wpdb->get_var("show tables like '$tableName'") != $tableName)
|
144 |
+
{
|
145 |
+
$sql = "CREATE TABLE " . $tableName . " (
|
146 |
+
`id` bigint NOT NULL AUTO_INCREMENT, `path` mediumtext NOT NULL , `signature` mediumtext, `created_timestamp` int, UNIQUE KEY id (id) );";
|
147 |
+
dbDelta($sql);
|
148 |
+
}
|
149 |
+
|
150 |
+
$tableName = $this->filescan;
|
151 |
+
if($wpdb->get_var("show tables like '$tableName'") != $tableName)
|
152 |
+
{
|
153 |
+
$sql = "CREATE TABLE " . $tableName . " (
|
154 |
+
`id` bigint NOT NULL AUTO_INCREMENT, `path` mediumtext NOT NULL, `name_hash` varchar(45) NOT NULL, `malware_service` int NOT NULL, `repo_check` int NOT NULL, `link_check` int NOT NULL, PRIMARY KEY id (id), UNIQUE KEY name_hash (name_hash) );";
|
155 |
+
dbDelta($sql);
|
156 |
+
}
|
157 |
+
|
158 |
+
$tableName = $this->hashfile;
|
159 |
+
if($wpdb->get_var("show tables like '$tableName'") != $tableName)
|
160 |
+
{
|
161 |
+
$sql = "CREATE TABLE " . $tableName . " (
|
162 |
+
`id` bigint(20) NOT NULL AUTO_INCREMENT,`file name` varchar(500) NOT NULL,`file hash` mediumtext NOT NULL, `scan_data` mediumtext NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `id` (`id`), UNIQUE KEY `file name` (`file name`), UNIQUE KEY `id_2`(`id`));";
|
163 |
+
dbDelta($sql);
|
164 |
+
}
|
165 |
+
|
166 |
+
$row1 = $wpdb->get_results( "SHOW COLUMNS FROM ".$this->malwarereportTable." LIKE 'malware_count'" );
|
167 |
+
$row2 = $wpdb->get_results( "SHOW COLUMNS FROM ".$this->malwarereportTable." LIKE 'repo_issues'" );
|
168 |
+
$row3 = $wpdb->get_results( "SHOW COLUMNS FROM ".$this->malwarereportTable." LIKE 'malicious_links'" );
|
169 |
+
if(empty($row1) && empty($row1) && empty($row1)){
|
170 |
+
$result = $wpdb->query("ALTER TABLE $this->malwarereportTable ADD COLUMN `malware_count` INT NOT NULL DEFAULT 0 AFTER `scanned_files`, ADD COLUMN `repo_issues` INT NOT NULL DEFAULT 0 AFTER `malware_count`, ADD COLUMN `malicious_links` INT NOT NULL DEFAULT 0 AFTER `repo_issues`");
|
171 |
+
if($result){
|
172 |
+
$report_ids = $wpdb->get_results("SELECT id FROM $this->malwarereportTable");
|
173 |
+
foreach ($report_ids as $key => $value) {
|
174 |
+
$scan_detail = $wpdb->get_results("SELECT report FROM $this->scanreportdetails WHERE report_id='".$report_ids[$key]->id."'");
|
175 |
+
$result = $this->mo_wpns_get_scan_count($scan_detail);
|
176 |
+
$wpdb->query("UPDATE $this->malwarereportTable SET `malware_count`= '".$result['scan']."', `repo_issues`='".$result['repo']."', `malicious_links`='".$result['extl']."' WHERE id='".$report_ids[$key]->id."'");
|
177 |
+
}
|
178 |
+
}
|
179 |
+
}
|
180 |
+
$rowhash = $wpdb->get_results( "SHOW COLUMNS FROM ".$this->hashfile." LIKE 'scan_data'" );
|
181 |
+
if(empty($rowhash)){
|
182 |
+
$result = $wpdb->query("ALTER TABLE $this->hashfile ADD COLUMN `scan_data` mediumtext NOT NULL");
|
183 |
+
}
|
184 |
+
}
|
185 |
+
|
186 |
+
function insert_backup_detail($backup_id,$file_name,$backup_created_timestamp,$plugin_path){
|
187 |
+
global $wpdb;
|
188 |
+
$wpdb->insert(
|
189 |
+
$this->backupdetails,
|
190 |
+
array(
|
191 |
+
'backup_id' =>$backup_id,
|
192 |
+
'file_name' =>$file_name,
|
193 |
+
'created_timestamp'=> $backup_created_timestamp,
|
194 |
+
'plugin_path' => $plugin_path
|
195 |
+
));
|
196 |
+
}
|
197 |
+
|
198 |
+
function get_table_content(){
|
199 |
+
global $wpdb;
|
200 |
+
return $wpdb->get_results("SELECT plugin_path,file_name,created_timestamp,id FROM ".$this->backupdetails);
|
201 |
+
}
|
202 |
+
|
203 |
+
function get_number_of_plugin_backup(){
|
204 |
+
global $wpdb;
|
205 |
+
|
206 |
+
$plugin_count = $wpdb->get_var("SELECT COUNT(*) FROM ".$this->backupdetails." WHERE backup_id = 'plugin'");
|
207 |
+
$themes_count = $wpdb->get_var("SELECT COUNT(*) FROM ".$this->backupdetails." WHERE backup_id = 'themes'");
|
208 |
+
$wp_files_count = $wpdb->get_var("SELECT COUNT(*) FROM ".$this->backupdetails." WHERE backup_id = 'wpfiles'");
|
209 |
+
$db_count = $wpdb->get_var("SELECT COUNT(*) FROM ".$this->backupdetails." WHERE backup_id = 'db'");
|
210 |
+
$total_backup = $wpdb->get_var("SELECT COUNT(*) FROM ".$this->backupdetails);
|
211 |
+
$array = array('plugin_count'=>$plugin_count,'themes_count'=>$themes_count,'wp_files_count'=>$wp_files_count,'db_count'=>$db_count,'total_backup'=>$total_backup);
|
212 |
+
|
213 |
+
return $array;
|
214 |
+
}
|
215 |
+
|
216 |
+
function delete_file($id){
|
217 |
+
global $wpdb;
|
218 |
+
$wpdb->query(
|
219 |
+
"DELETE FROM ".$this->backupdetails."
|
220 |
+
WHERE id = ".$id
|
221 |
+
);
|
222 |
+
return;
|
223 |
+
}
|
224 |
+
|
225 |
+
function row_exist($id){
|
226 |
+
global $wpdb;
|
227 |
+
$is_exist = $wpdb->get_var("SELECT COUNT(*) FROM ".$this->backupdetails." WHERE id =".$id );
|
228 |
+
return $is_exist;
|
229 |
+
}
|
230 |
+
|
231 |
+
function get_ip_blocked_count($ipAddress)
|
232 |
+
{
|
233 |
+
global $wpdb;
|
234 |
+
return $wpdb->get_var( "SELECT COUNT(*) FROM ".$this->blockedIPsTable." WHERE ip_address = '".$ipAddress."'" );
|
235 |
+
}
|
236 |
+
function get_total_blocked_ips()
|
237 |
+
{
|
238 |
+
global $wpdb;
|
239 |
+
return $wpdb->get_var( "SELECT COUNT(*) FROM ".$this->blockedIPsTable);
|
240 |
+
}
|
241 |
+
function get_total_manual_blocked_ips()
|
242 |
+
{
|
243 |
+
global $wpdb;
|
244 |
+
return $wpdb->get_var( "SELECT COUNT(*) FROM ".$this->blockedIPsTable." WHERE reason = 'Blocked by Admin';");
|
245 |
+
}
|
246 |
+
function get_total_blocked_ips_waf()
|
247 |
+
{
|
248 |
+
global $wpdb;
|
249 |
+
$totalIPBlocked = $wpdb->get_var( "SELECT COUNT(*) FROM ".$this->blockedIPsTable);
|
250 |
+
return $totalIPBlocked - $wpdb->get_var( "SELECT COUNT(*) FROM ".$this->blockedIPsTable." WHERE reason = 'Blocked by Admin';");
|
251 |
+
}
|
252 |
+
function get_blocked_attack_count($attack)
|
253 |
+
{
|
254 |
+
global $wpdb;
|
255 |
+
return $wpdb->get_var( "SELECT COUNT(*) FROM ".$this->attackList." WHERE type = '".$attack."'" );
|
256 |
+
}
|
257 |
+
|
258 |
+
function get_count_of_blocked_ips(){
|
259 |
+
global $wpdb;
|
260 |
+
return $wpdb->get_var("SELECT COUNT(*) FROM ".$this->blockedIPsTable."");
|
261 |
+
}
|
262 |
+
|
263 |
+
|
264 |
+
function get_blocked_ip($entryid)
|
265 |
+
{
|
266 |
+
global $wpdb;
|
267 |
+
return $wpdb->get_results( "SELECT ip_address FROM ".$this->blockedIPsTable." WHERE id=".$entryid );
|
268 |
+
}
|
269 |
+
|
270 |
+
function get_blocked_ip_list()
|
271 |
+
{
|
272 |
+
global $wpdb;
|
273 |
+
return $wpdb->get_results("SELECT id, reason, ip_address, created_timestamp FROM ".$this->blockedIPsTable);
|
274 |
+
}
|
275 |
+
|
276 |
+
function get_blocked_attack_list($tableName)
|
277 |
+
{
|
278 |
+
global $wpdb;
|
279 |
+
$tableName = $wpdb->base_prefix.$tableName;
|
280 |
+
return $wpdb->get_results("SELECT ip, type, time, input FROM ".$tableName);
|
281 |
+
}
|
282 |
+
|
283 |
+
function get_blocked_sqli_list()
|
284 |
+
{
|
285 |
+
global $wpdb;
|
286 |
+
return $wpdb->get_results("SELECT ip, type, time, input FROM ".$this->attackList."WHERE type='SQL attack'");
|
287 |
+
}
|
288 |
+
function get_blocked_rfi_list()
|
289 |
+
{
|
290 |
+
global $wpdb;
|
291 |
+
return $wpdb->get_results("SELECT ip, type, time, input FROM ".$this->attackList."WHERE type='RFI attack'");
|
292 |
+
}
|
293 |
+
function get_blocked_lfi_list()
|
294 |
+
{
|
295 |
+
global $wpdb;
|
296 |
+
return $wpdb->get_results("SELECT ip, type, time, input FROM ".$this->attackList."WHERE type='LFI attack'");
|
297 |
+
}
|
298 |
+
function get_blocked_rce_list()
|
299 |
+
{
|
300 |
+
global $wpdb;
|
301 |
+
return $wpdb->get_results("SELECT ip, type, time, input FROM ".$this->attackList."WHERE type='RCE attack'");
|
302 |
+
}
|
303 |
+
function get_blocked_xss_list()
|
304 |
+
{
|
305 |
+
global $wpdb;
|
306 |
+
return $wpdb->get_results("SELECT ip, type, time, input FROM ".$this->attackList."WHERE type='XSS attack'");
|
307 |
+
}
|
308 |
+
|
309 |
+
function insert_blocked_ip($ipAddress,$reason,$blocked_for_time)
|
310 |
+
{
|
311 |
+
global $wpdb;
|
312 |
+
$wpdb->insert(
|
313 |
+
$this->blockedIPsTable,
|
314 |
+
array(
|
315 |
+
'ip_address' => $ipAddress,
|
316 |
+
'reason' => $reason,
|
317 |
+
'blocked_for_time' => $blocked_for_time,
|
318 |
+
'created_timestamp' => current_time( 'timestamp' )
|
319 |
+
)
|
320 |
+
);
|
321 |
+
return;
|
322 |
+
}
|
323 |
+
|
324 |
+
function delete_blocked_ip($entryid)
|
325 |
+
{
|
326 |
+
global $wpdb;
|
327 |
+
$wpdb->query(
|
328 |
+
"DELETE FROM ".$this->blockedIPsTable."
|
329 |
+
WHERE id = ".$entryid
|
330 |
+
);
|
331 |
+
return;
|
332 |
+
}
|
333 |
+
|
334 |
+
function get_whitelisted_ip_count($ipAddress)
|
335 |
+
{
|
336 |
+
global $wpdb;
|
337 |
+
return $wpdb->get_var( "SELECT COUNT(*) FROM ".$this->whitelistIPsTable." WHERE ip_address = '".$ipAddress."'" );
|
338 |
+
}
|
339 |
+
|
340 |
+
function insert_whitelisted_ip($ipAddress)
|
341 |
+
{
|
342 |
+
global $wpdb;
|
343 |
+
$wpdb->insert(
|
344 |
+
$this->whitelistIPsTable,
|
345 |
+
array(
|
346 |
+
'ip_address' => $ipAddress,
|
347 |
+
'created_timestamp' => current_time( 'timestamp' )
|
348 |
+
)
|
349 |
+
);
|
350 |
+
}
|
351 |
+
|
352 |
+
function get_number_of_whitelisted_ips(){
|
353 |
+
global $wpdb;
|
354 |
+
return $wpdb->get_var("SELECT COUNT(*) FROM ".$this->whitelistIPsTable."");
|
355 |
+
}
|
356 |
+
|
357 |
+
function delete_whitelisted_ip($entryid)
|
358 |
+
{
|
359 |
+
global $wpdb;
|
360 |
+
$wpdb->query(
|
361 |
+
"DELETE FROM ".$this->whitelistIPsTable."
|
362 |
+
WHERE id = ".$entryid
|
363 |
+
);
|
364 |
+
return;
|
365 |
+
}
|
366 |
+
|
367 |
+
function get_whitelisted_ips_list()
|
368 |
+
{
|
369 |
+
global $wpdb;
|
370 |
+
return $wpdb->get_results( "SELECT id, ip_address, created_timestamp FROM ".$this->whitelistIPsTable );
|
371 |
+
}
|
372 |
+
|
373 |
+
function get_email_audit_count($ipAddress,$username)
|
374 |
+
{
|
375 |
+
global $wpdb;
|
376 |
+
return $wpdb->get_var( "SELECT COUNT(*) FROM ".$this->emailAuditTable." WHERE ip_address = '".$ipAddress."' AND
|
377 |
+
username='".$username."'" );
|
378 |
+
}
|
379 |
+
|
380 |
+
function insert_email_audit($ipAddress,$username,$reason)
|
381 |
+
{
|
382 |
+
global $wpdb;
|
383 |
+
$wpdb->insert(
|
384 |
+
$this->emailAuditTable,
|
385 |
+
array(
|
386 |
+
'ip_address' => $ipAddress,
|
387 |
+
'username' => $username,
|
388 |
+
'reason' => $reason,
|
389 |
+
'created_timestamp' => current_time( 'timestamp' )
|
390 |
+
)
|
391 |
+
);
|
392 |
+
return;
|
393 |
+
}
|
394 |
+
|
395 |
+
function insert_transaction_audit($ipAddress,$username,$type,$status,$url=null)
|
396 |
+
{
|
397 |
+
global $wpdb;
|
398 |
+
$data = array(
|
399 |
+
'ip_address' => $ipAddress,
|
400 |
+
'username' => $username,
|
401 |
+
'type' => $type,
|
402 |
+
'status' => $status,
|
403 |
+
'created_timestamp' => current_time( 'timestamp' )
|
404 |
+
);
|
405 |
+
$data['url'] = is_null($url) ? '' : $url;
|
406 |
+
$wpdb->insert( $this->transactionTable, $data);
|
407 |
+
return;
|
408 |
+
}
|
409 |
+
|
410 |
+
function get_transasction_list()
|
411 |
+
{
|
412 |
+
global $wpdb;
|
413 |
+
return $wpdb->get_results( "SELECT ip_address, username, type, status, created_timestamp FROM ".$this->transactionTable." order by id desc limit 5000" );
|
414 |
+
}
|
415 |
+
|
416 |
+
function get_login_transaction_report()
|
417 |
+
{
|
418 |
+
global $wpdb;
|
419 |
+
return $wpdb->get_results( "SELECT ip_address, username, status, created_timestamp FROM ".$this->transactionTable." WHERE type='User Login' order by id desc limit 5000" );
|
420 |
+
}
|
421 |
+
|
422 |
+
function get_error_transaction_report()
|
423 |
+
{
|
424 |
+
global $wpdb;
|
425 |
+
return $wpdb->get_results( "SELECT ip_address, username, url, type, created_timestamp FROM ".$this->transactionTable." WHERE type <> 'User Login' order by id desc limit 5000" );
|
426 |
+
}
|
427 |
+
|
428 |
+
function update_transaction_table($where,$update)
|
429 |
+
{
|
430 |
+
global $wpdb;
|
431 |
+
|
432 |
+
$sql = "UPDATE ".$this->transactionTable." SET ";
|
433 |
+
$i = 0;
|
434 |
+
foreach($update as $key=>$value)
|
435 |
+
{
|
436 |
+
if($i%2!=0)
|
437 |
+
$sql .= ' , ';
|
438 |
+
$sql .= $key."='".$value."'";
|
439 |
+
$i++;
|
440 |
+
}
|
441 |
+
$sql .= " WHERE ";
|
442 |
+
$i = 0;
|
443 |
+
foreach($where as $key=>$value)
|
444 |
+
{
|
445 |
+
if($i%2!=0)
|
446 |
+
$sql .= ' AND ';
|
447 |
+
$sql .= $key."='".$value."'";
|
448 |
+
$i++;
|
449 |
+
}
|
450 |
+
|
451 |
+
$wpdb->query($sql);
|
452 |
+
return;
|
453 |
+
}
|
454 |
+
|
455 |
+
function get_count_of_attacks_blocked(){
|
456 |
+
global $wpdb;
|
457 |
+
return $wpdb->get_var( "SELECT COUNT(*) FROM ".$this->transactionTable." WHERE status = '".MoWpnsConstants::FAILED."' OR status = '".MoWpnsConstants::PAST_FAILED."'" );
|
458 |
+
}
|
459 |
+
|
460 |
+
function get_failed_transaction_count($ipAddress)
|
461 |
+
{
|
462 |
+
global $wpdb;
|
463 |
+
return $wpdb->get_var( "SELECT COUNT(*) FROM ".$this->transactionTable." WHERE ip_address = '".$ipAddress."'
|
464 |
+
AND status = '".MoWpnsConstants::FAILED."'" );
|
465 |
+
}
|
466 |
+
|
467 |
+
function delete_transaction($ipAddress)
|
468 |
+
{
|
469 |
+
global $wpdb;
|
470 |
+
$wpdb->query(
|
471 |
+
"DELETE FROM ".$this->transactionTable."
|
472 |
+
WHERE ip_address = '".$ipAddress."' AND status='".MoWpnsConstants::FAILED."'"
|
473 |
+
);
|
474 |
+
return;
|
475 |
+
}
|
476 |
+
|
477 |
+
function create_scan_report($folderNames, $scan_type, $start_timestamp, $repo_check_status_code){
|
478 |
+
global $wpdb;
|
479 |
+
$wpdb->insert(
|
480 |
+
$this->malwarereportTable,
|
481 |
+
array(
|
482 |
+
'scan_mode' => $scan_type,
|
483 |
+
'scanned_folders' => $folderNames,
|
484 |
+
'scanned_files' => 0,
|
485 |
+
'start_timestamp' => $start_timestamp,
|
486 |
+
'malware_count' => 0,
|
487 |
+
'repo_issues' => $repo_check_status_code,
|
488 |
+
'malicious_links' => 0
|
489 |
+
)
|
490 |
+
);
|
491 |
+
$result = $wpdb->get_results( "SELECT * FROM ".$this->malwarereportTable." order by id DESC LIMIT 1");
|
492 |
+
if($result){
|
493 |
+
$record = $result[0];
|
494 |
+
return $record->id;
|
495 |
+
}
|
496 |
+
}
|
497 |
+
|
498 |
+
function add_report_details($reportid, $filename, $report){
|
499 |
+
global $wpdb;
|
500 |
+
$wpdb->insert(
|
501 |
+
$this->scanreportdetails,
|
502 |
+
array(
|
503 |
+
'report_id' => $reportid,
|
504 |
+
'filename' => $filename,
|
505 |
+
'report' => serialize($report),
|
506 |
+
'created_timestamp' => current_time('timestamp')
|
507 |
+
)
|
508 |
+
);
|
509 |
+
}
|
510 |
+
|
511 |
+
function scan_report_complete($recordId, $no_of_scanned_files, $malware_count, $repo_issues, $malicious_links){
|
512 |
+
global $wpdb;
|
513 |
+
$wpdb->query(
|
514 |
+
"UPDATE ".$this->malwarereportTable." set completed_timestamp = ".current_time('timestamp').", scanned_files=".$no_of_scanned_files.", malware_count= '".$malware_count."', repo_issues='".$repo_issues."', malicious_links='".$malicious_links."' WHERE id = ".$recordId
|
515 |
+
);
|
516 |
+
}
|
517 |
+
|
518 |
+
function count_files(){
|
519 |
+
global $wpdb;
|
520 |
+
$sql= $wpdb->get_results("SELECT SUM(`scanned_files`) AS scan_count FROM ".$this->malwarereportTable);
|
521 |
+
return $sql[0]->scan_count;
|
522 |
+
}
|
523 |
+
|
524 |
+
function count_malicious_files(){
|
525 |
+
global $wpdb;
|
526 |
+
$sql= $wpdb->get_results("SELECT COUNT(*) AS total_mal FROM ".$this->scanreportdetails);
|
527 |
+
return $sql[0]->total_mal;
|
528 |
+
}
|
529 |
+
|
530 |
+
function count_files_last_scan($reportid){
|
531 |
+
global $wpdb;
|
532 |
+
$sql= $wpdb->get_results('SELECT * FROM '.$this->malwarereportTable.' WHERE `id`="'.$reportid.'"');
|
533 |
+
return $sql[0]->scanned_files;
|
534 |
+
}
|
535 |
+
|
536 |
+
function count_malicious_last_scan($reportid){
|
537 |
+
global $wpdb;
|
538 |
+
$sql= $wpdb->get_results('SELECT COUNT(*) AS mal_file FROM '.$this->scanreportdetails.' WHERE `report_id`="'.$reportid.'"');
|
539 |
+
return $sql[0]->mal_file;
|
540 |
+
}
|
541 |
+
|
542 |
+
function check_hash($hash_of_file){
|
543 |
+
global $wpdb;
|
544 |
+
$sql= 'SELECT * FROM '.$this->hashfile.' WHERE `file hash`="'.$hash_of_file.'"';
|
545 |
+
$result=$wpdb->get_results( $sql );
|
546 |
+
return $result;
|
547 |
+
}
|
548 |
+
|
549 |
+
function insert_hash($source_file_path,$hash_of_file, $scan_data){
|
550 |
+
global $wpdb;
|
551 |
+
$source_file_path = addslashes($source_file_path);
|
552 |
+
$query= "INSERT INTO ".$this->hashfile."(`file name`,`file hash`,`scan_data`) VALUES('".$source_file_path."', '".$hash_of_file."', '".serialize($scan_data)."') ON DUPLICATE KEY UPDATE `file hash`='".$hash_of_file."' AND `scan_data`='".serialize($scan_data)."'";
|
553 |
+
$res=$wpdb->query( $query );
|
554 |
+
}
|
555 |
+
|
556 |
+
function update_hash($source_file_path, $hash_of_file, $scan_data){
|
557 |
+
global $wpdb;
|
558 |
+
$source_file_path = addslashes($source_file_path);
|
559 |
+
$query= "UPDATE ".$this->hashfile." SET `file hash`='".$hash_of_file."',`scan_data`='".serialize($scan_data)."' WHERE `file name`='".$source_file_path."'";
|
560 |
+
$res=$wpdb->query( $query );
|
561 |
+
}
|
562 |
+
|
563 |
+
function delete_hash($source_file_path){
|
564 |
+
global $wpdb;
|
565 |
+
$query= "DELETE FROM ".$this->hashfile." WHERE `file name` = '".$source_file_path."'";
|
566 |
+
$res=$wpdb->query( $query );
|
567 |
+
}
|
568 |
+
|
569 |
+
function get_infected_file($filename){
|
570 |
+
global $wpdb;
|
571 |
+
$filename = addslashes($filename);
|
572 |
+
$result = $wpdb->get_results( "SELECT * FROM ".$this->scanreportdetails." where filename=".$filename );
|
573 |
+
return $result;
|
574 |
+
}
|
575 |
+
|
576 |
+
function insert_files_in_parts($file_path_array){
|
577 |
+
global $wpdb;
|
578 |
+
if(!empty($file_path_array)){
|
579 |
+
$size=sizeof($file_path_array);
|
580 |
+
$default=0;
|
581 |
+
$query="INSERT INTO ".$this->filescan."(`path`, `name_hash`, `malware_service`, `repo_check`, `link_check`) VALUES";
|
582 |
+
for ($i=1; $i <= $size ; $i++) {
|
583 |
+
$value= $file_path_array[$i];
|
584 |
+
$value = addslashes($value);
|
585 |
+
$hash_value= md5($value);
|
586 |
+
$query.= "('".$value."', '".$hash_value."', '".$default."', '".$default."', '".$default."')";
|
587 |
+
if($i < $size){
|
588 |
+
$query.= ",";
|
589 |
+
}
|
590 |
+
}
|
591 |
+
$query.=";";
|
592 |
+
$res=$wpdb->query( $query );
|
593 |
+
}
|
594 |
+
}
|
595 |
+
|
596 |
+
function update_files_scan($file_path_array, $file_count){
|
597 |
+
global $wpdb;
|
598 |
+
$query="INSERT INTO ".$this->filescan."(`name_hash`, `malware_service`) VALUES";
|
599 |
+
for ($i=0; $i < $file_count ; $i++) {
|
600 |
+
$value= $file_path_array[$i]->path;
|
601 |
+
$value = addslashes($value);
|
602 |
+
$value = md5($value);
|
603 |
+
$query.= "('".$value."', 1)";
|
604 |
+
if($i < $file_count-1){
|
605 |
+
$query.= ",";
|
606 |
+
}
|
607 |
+
}
|
608 |
+
$query.=" ON DUPLICATE KEY UPDATE `malware_service`= VALUES(malware_service);";
|
609 |
+
$res=$wpdb->query( $query );
|
610 |
+
}
|
611 |
+
|
612 |
+
function update_files_scan_ext_link($file_path_array, $file_count){
|
613 |
+
global $wpdb;
|
614 |
+
$query="INSERT INTO ".$this->filescan."(`name_hash`, `link_check`) VALUES";
|
615 |
+
for ($i=0; $i < $file_count ; $i++) {
|
616 |
+
$value= $file_path_array[$i]->path;
|
617 |
+
$value = addslashes($value);
|
618 |
+
$value = md5($value);
|
619 |
+
$query.= "('".$value."', 1)";
|
620 |
+
if($i < $file_count-1){
|
621 |
+
$query.= ",";
|
622 |
+
}
|
623 |
+
}
|
624 |
+
$query.=" ON DUPLICATE KEY UPDATE `link_check`= VALUES(link_check);";
|
625 |
+
$res=$wpdb->query( $query );
|
626 |
+
}
|
627 |
+
|
628 |
+
function update_files_scan_repo($file_path_array, $file_count){
|
629 |
+
global $wpdb;
|
630 |
+
$query="INSERT INTO ".$this->filescan."(`name_hash`, `repo_check`) VALUES";
|
631 |
+
for ($i=0; $i < $file_count ; $i++) {
|
632 |
+
$value= $file_path_array[$i]->path;
|
633 |
+
$value = addslashes($value);
|
634 |
+
$value = md5($value);
|
635 |
+
$query.= "('".$value."', 1)";
|
636 |
+
if($i < $file_count-1){
|
637 |
+
$query.= ",";
|
638 |
+
}
|
639 |
+
}
|
640 |
+
$query.=" ON DUPLICATE KEY UPDATE `repo_check`= VALUES(repo_check);";
|
641 |
+
$res=$wpdb->query( $query );
|
642 |
+
}
|
643 |
+
|
644 |
+
function get_files_in_parts(){
|
645 |
+
global $wpdb;
|
646 |
+
$sql= 'SELECT * FROM '.$this->filescan.' WHERE `malware_service`= 0 LIMIT 100';
|
647 |
+
$result=$wpdb->get_results($sql);
|
648 |
+
return $result;
|
649 |
+
}
|
650 |
+
|
651 |
+
function get_files_for_link(){
|
652 |
+
global $wpdb;
|
653 |
+
$sql= 'SELECT * FROM '.$this->filescan.' WHERE `link_check`= 0 LIMIT 100';
|
654 |
+
$result=$wpdb->get_results($sql);
|
655 |
+
return $result;
|
656 |
+
}
|
657 |
+
|
658 |
+
function get_files_for_repo(){
|
659 |
+
global $wpdb;
|
660 |
+
$sql= 'SELECT * FROM '.$this->filescan.' WHERE `repo_check`= 0 LIMIT 100';
|
661 |
+
$result=$wpdb->get_results($sql);
|
662 |
+
return $result;
|
663 |
+
}
|
664 |
+
|
665 |
+
function delete_files_parts(){
|
666 |
+
global $wpdb;
|
667 |
+
$sql= "TRUNCATE TABLE ".$this->filescan.";";
|
668 |
+
$res=$wpdb->query($sql);
|
669 |
+
}
|
670 |
+
|
671 |
+
function get_last_id(){
|
672 |
+
global $wpdb;
|
673 |
+
$result= $wpdb->get_results("SELECT MAX(Id) AS max FROM ".$this->malwarereportTable);
|
674 |
+
return $result;
|
675 |
+
}
|
676 |
+
|
677 |
+
function get_report_with_id($reportid){
|
678 |
+
global $wpdb;
|
679 |
+
$result = $wpdb->get_results( "SELECT * FROM ".$this->malwarereportTable." where id=".$reportid );
|
680 |
+
return $result;
|
681 |
+
}
|
682 |
+
|
683 |
+
function delete_report($reportid){
|
684 |
+
global $wpdb;
|
685 |
+
$wpdb->query(
|
686 |
+
"DELETE FROM ".$this->malwarereportTable." WHERE id = ".$reportid
|
687 |
+
);
|
688 |
+
$warning_count=0;
|
689 |
+
$malware_count=0;
|
690 |
+
$last_id=$this->get_last_id();
|
691 |
+
$send_id=$last_id[0]->max;
|
692 |
+
if(!is_null($send_id)){
|
693 |
+
$res = $this->get_report_with_id($send_id);
|
694 |
+
$record = $res[0];
|
695 |
+
if($record->malware_count >= 0){
|
696 |
+
$malware_count = $record->malware_count;
|
697 |
+
}
|
698 |
+
if($record->repo_issues < 0){
|
699 |
+
$warning_count = $record->malicious_links;
|
700 |
+
}else{
|
701 |
+
$warning_count = $record->repo_issues + $record->malicious_links;
|
702 |
+
}
|
703 |
+
}
|
704 |
+
|
705 |
+
update_option('mo_wpns_infected_files', $malware_count);
|
706 |
+
update_option('mo_wpns_warning_files', $warning_count);
|
707 |
+
|
708 |
+
}
|
709 |
+
|
710 |
+
function get_report(){
|
711 |
+
global $wpdb;
|
712 |
+
$result = $wpdb->get_results( "SELECT * FROM ".$this->malwarereportTable." order by id desc" );
|
713 |
+
return $result;
|
714 |
+
}
|
715 |
+
|
716 |
+
function get_vulnerable_files_count_for_reportid($reportid){
|
717 |
+
global $wpdb;
|
718 |
+
$result = $wpdb->get_results( "SELECT count(*) as count FROM ".$this->scanreportdetails." where report_id=".$reportid );
|
719 |
+
return $result;
|
720 |
+
}
|
721 |
+
|
722 |
+
function ignorefile($filename){
|
723 |
+
$signature = md5_file($filename);
|
724 |
+
global $wpdb;
|
725 |
+
$result = $wpdb->get_results( "SELECT * FROM ".$this->skipfiles." where path = '".$filename."'" );
|
726 |
+
if($result){
|
727 |
+
$wpdb->query(
|
728 |
+
"UPDATE ".$this->skipfiles." SET signature = '".$signature."' WHERE path = '".$filename."'"
|
729 |
+
);
|
730 |
+
} else {
|
731 |
+
$wpdb->insert(
|
732 |
+
$this->skipfiles,
|
733 |
+
array(
|
734 |
+
'path' => $filename,
|
735 |
+
'signature' => $signature,
|
736 |
+
'created_timestamp' => current_time('timestamp')
|
737 |
+
)
|
738 |
+
);
|
739 |
+
}
|
740 |
+
}
|
741 |
+
|
742 |
+
function ignorechangedfile($recordId){
|
743 |
+
global $wpdb;
|
744 |
+
$result = $wpdb->get_results( "SELECT * FROM ".$this->skipfiles." where id = ".$recordId );
|
745 |
+
if($result){
|
746 |
+
$record = $result[0];
|
747 |
+
$signature = md5_file($record->path);
|
748 |
+
$wpdb->query(
|
749 |
+
"UPDATE ".$this->skipfiles." set signature = '".$signature."' WHERE id = ".$recordId
|
750 |
+
);
|
751 |
+
}
|
752 |
+
}
|
753 |
+
|
754 |
+
function getlistofignorefiles(){
|
755 |
+
global $wpdb;
|
756 |
+
$result = $wpdb->get_results( "SELECT * FROM ".$this->skipfiles."" );
|
757 |
+
return $result;
|
758 |
+
}
|
759 |
+
|
760 |
+
function get_detail_report_with_id($reportid){
|
761 |
+
global $wpdb;
|
762 |
+
$result = $wpdb->get_results( "SELECT * FROM ".$this->scanreportdetails." where report_id=".$reportid );
|
763 |
+
return $result;
|
764 |
+
}
|
765 |
+
|
766 |
+
function mo_wpns_upgrade_process_complete(){
|
767 |
+
$current_db_version = get_option('mo_wpns_dbversion');
|
768 |
+
if($current_db_version < MoWpnsConstants::DB_VERSION){
|
769 |
+
update_option('mo_wpns_dbversion', MoWpnsConstants::DB_VERSION );
|
770 |
+
$row = $wpdb->get_results( "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = '".$this->malwarereportTable."' AND column_name = 'malware_count' AND column_name='repo_issues' AND column_name='malicious_links'" );
|
771 |
+
if(empty($row)){
|
772 |
+
$result = $wpdb->query("ALTER TABLE $this->malwarereportTable ADD COLUMN `malware_count` INT NOT NULL DEFAULT 0 AFTER `scanned_files`, ADD COLUMN `repo_issues` INT NOT NULL DEFAULT 0 AFTER `malware_count`, ADD COLUMN `malicious_links` INT NOT NULL DEFAULT 0 AFTER `repo_issues`");
|
773 |
+
if($result){
|
774 |
+
$report_ids = $wpdb->get_results("SELECT id FROM $this->malwarereportTable");
|
775 |
+
foreach ($report_ids as $key => $value) {
|
776 |
+
$scan_detail = $wpdb->get_results("SELECT report FROM $this->scanreportdetails WHERE report_id='".$report_ids[$key]->id."'");
|
777 |
+
$result = $this->mo_wpns_get_scan_count($scan_detail);
|
778 |
+
$wpdb->query("UPDATE $this->malwarereportTable SET 'malware_count'= '".$result['scan']."', `repo_issues`='".$result['repo']."', `malicious_links`='".$result['extl']."' WHERE id='".$report_ids[$key]->id."'");
|
779 |
+
}
|
780 |
+
}
|
781 |
+
}
|
782 |
+
$rowhash = $wpdb->get_results( "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = '".$this->hashfile."' AND column_name = 'scan_data'" );
|
783 |
+
if(empty($rowhash)){
|
784 |
+
$result = $wpdb->query("ALTER TABLE $this->hashfile ADD COLUMN `scan_data` mediumtext NOT NULL");
|
785 |
+
}
|
786 |
+
}
|
787 |
+
}
|
788 |
+
|
789 |
+
function mo_wpns_get_scan_count($result){
|
790 |
+
$scan_count = 0;
|
791 |
+
$repo_count = 0;
|
792 |
+
$link_count = 0;
|
793 |
+
$total = 0;
|
794 |
+
foreach ($result as $key => $value) {
|
795 |
+
$total+=1;
|
796 |
+
$temp = unserialize($result[$key]->report);
|
797 |
+
if(isset($temp['scan'])&&isset($temp['repo'])&&isset($temp['extl'])){
|
798 |
+
$scan_count++;
|
799 |
+
$repo_count++;
|
800 |
+
$link_count++;
|
801 |
+
}else if(isset($temp['scan'])&&isset($temp['repo'])){
|
802 |
+
$scan_count++;
|
803 |
+
$repo_count++;
|
804 |
+
}else if(isset($temp['scan'])&&isset($temp['extl'])){
|
805 |
+
$scan_count++;
|
806 |
+
$link_count++;
|
807 |
+
}else if(isset($temp['repo'])&&isset($temp['extl'])){
|
808 |
+
$repo_count++;
|
809 |
+
$link_count++;
|
810 |
+
}else if(isset($temp['scan'])){
|
811 |
+
$scan_count++;
|
812 |
+
}else if(isset($temp['repo'])){
|
813 |
+
$repo_count++;
|
814 |
+
}else if(isset($temp['extl'])){
|
815 |
+
$link_count++;
|
816 |
+
}
|
817 |
+
}
|
818 |
+
return array('scan'=>$scan_count, 'repo'=>$repo_count, 'extl'=>$link_count);
|
819 |
+
}
|
820 |
}
|
database/database_functions_2fa.php
CHANGED
@@ -60,8 +60,10 @@ class Mo2fDB {
|
|
60 |
add_site_option( 'cmVtYWluaW5nT1RQ' ,30);
|
61 |
add_site_option( 'bGltaXRSZWFjaGVk' ,0);
|
62 |
add_site_option( base64_encode('totalUsersCloud'),0);
|
63 |
-
|
64 |
-
|
|
|
|
|
65 |
$check_if_column_exists = $this->check_if_column_exists( 'mo2f_user_details', "mo2f_OTPOverEmail_config_status" );
|
66 |
|
67 |
if ( ! $check_if_column_exists ) {
|
60 |
add_site_option( 'cmVtYWluaW5nT1RQ' ,30);
|
61 |
add_site_option( 'bGltaXRSZWFjaGVk' ,0);
|
62 |
add_site_option( base64_encode('totalUsersCloud'),0);
|
63 |
+
|
64 |
+
|
65 |
+
|
66 |
+
|
67 |
$check_if_column_exists = $this->check_if_column_exists( 'mo2f_user_details', "mo2f_OTPOverEmail_config_status" );
|
68 |
|
69 |
if ( ! $check_if_column_exists ) {
|
database/mo2f_db_options.php
ADDED
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
$GLOBALS['mo2f_enable_brute_force'] = false;
|
3 |
+
$GLOBALS['mo2f_show_remaining_attempts'] = false;
|
4 |
+
$GLOBALS['mo_wpns_enable_ip_blocked_email_to_admin'] = false;
|
5 |
+
$GLOBALS['mo2f_activate_plugin'] = 1;
|
6 |
+
$GLOBALS['mo2f_login_option'] = 1;
|
7 |
+
$GLOBALS['mo2f_number_of_transactions'] = 1;
|
8 |
+
$GLOBALS['mo2f_set_transactions'] = 0;
|
9 |
+
$GLOBALS['mo2f_enable_forgotphone'] = 0;
|
10 |
+
$GLOBALS['mo2f_enable_2fa_for_users'] = 1;
|
11 |
+
$GLOBALS['mo2f_enable_2fa_prompt_on_login_page'] = 0;
|
12 |
+
$GLOBALS['mo2f_enable_xmlrpc'] = 0;
|
13 |
+
$GLOBALS['mo2f_custom_plugin_name'] = 'miniOrange 2-Factor';
|
14 |
+
$GLOBALS['mo2f_show_sms_transaction_message'] = 0;
|
15 |
+
$GLOBALS['mo2f_enforce_strong_passswords_for_accounts'] = 'all';
|
16 |
+
$GLOBALS['mo_file_backup_plugins'] = 1;
|
17 |
+
$GLOBALS['mo_file_backup_themes'] = 1;
|
18 |
+
$GLOBALS['mo_wpns_backup_time'] = 12;
|
19 |
+
$GLOBALS['scheduled_file_backup'] = 0;
|
20 |
+
$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['mo_database_backup'] = 1;
|
25 |
+
$GLOBALS['mo_wpns_scan_initialize'] = 1;
|
26 |
+
$GLOBALS['mo_file_manual_backup_plugins'] = 1;
|
27 |
+
$GLOBALS['mo_file_manual_backup_themes'] = 1;
|
28 |
+
$GLOBALS['mo_schedule_database_backup'] = 1;
|
29 |
+
$GLOBALS['mo_wpns_2fa_with_network_security'] = 0;
|
30 |
+
$GLOBALS['mo_wpns_2fa_with_network_security_popup_visible'] = 1;
|
31 |
+
$GLOBALS['mo2f_two_factor_tour'] = -1;
|
32 |
+
$GLOBALS['mo2f_planname'] = '';
|
33 |
+
$GLOBALS['cmVtYWluaW5nT1RQ'] = 30;
|
34 |
+
$GLOBALS['bGltaXRSZWFjaGVk'] = 0;
|
35 |
+
$GLOBALS['mo2f_is_NC'] = 1;
|
36 |
+
$GLOBALS['mo2f_is_NNC'] = 1;
|
37 |
+
$GLOBALS['mo2f_enforce_strong_passswords'] = false;
|
handler/WAF/database/mo-waf-db-common.php
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
function retrivefullname($name)
|
3 |
+
{
|
4 |
+
|
5 |
+
switch ($name) {
|
6 |
+
case 'XSS':
|
7 |
+
return 'Cross-site Scripting';
|
8 |
+
case 'SQL':
|
9 |
+
return 'SQL injection';
|
10 |
+
case 'RCE':
|
11 |
+
return 'Remote Code Execution';
|
12 |
+
case 'LFI':
|
13 |
+
return 'Local File Inclusion';
|
14 |
+
case 'RFI':
|
15 |
+
return 'Remote File Inclusion';
|
16 |
+
case 'RLE':
|
17 |
+
return 'Rate limiting Exceeded';
|
18 |
+
case 'RLECrawler':
|
19 |
+
return 'Rate limit Exceeded for crawler';
|
20 |
+
default:
|
21 |
+
return $name;
|
22 |
+
|
23 |
+
}
|
24 |
+
|
25 |
+
}
|
handler/WAF/database/mo-waf-db.php
CHANGED
@@ -1,5 +1,6 @@
|
|
1 |
<?php
|
2 |
global $dbcon,$prefix;
|
|
|
3 |
function log_attack($ipaddress,$value1,$value)
|
4 |
{
|
5 |
global $prefix,$dbcon;
|
@@ -11,7 +12,6 @@
|
|
11 |
$rows = mysqli_fetch_array($results);
|
12 |
return $rows['count(*)'];
|
13 |
}
|
14 |
-
|
15 |
function setting_file()
|
16 |
{
|
17 |
global $prefix,$dbcon;
|
1 |
<?php
|
2 |
global $dbcon,$prefix;
|
3 |
+
include_once('mo-waf-db-common.php');
|
4 |
function log_attack($ipaddress,$value1,$value)
|
5 |
{
|
6 |
global $prefix,$dbcon;
|
12 |
$rows = mysqli_fetch_array($results);
|
13 |
return $rows['count(*)'];
|
14 |
}
|
|
|
15 |
function setting_file()
|
16 |
{
|
17 |
global $prefix,$dbcon;
|
handler/WAF/database/mo-waf-plugin-db.php
CHANGED
@@ -1,88 +1,91 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
$dir_name =
|
8 |
-
$
|
9 |
-
$
|
10 |
-
$
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
$string
|
21 |
-
$string
|
22 |
-
$string .= '$
|
23 |
-
$string .= '$
|
24 |
-
$string .= '$
|
25 |
-
$string .= '$
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
$string .= '$actionRateL="
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
$
|
53 |
-
$
|
54 |
-
|
55 |
-
$results = $wpdb->get_results($query);
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
|
|
|
|
|
|
88 |
?>
|
1 |
+
<?php
|
2 |
+
|
3 |
+
include_once('mo-waf-db-common.php');
|
4 |
+
function setting_file()
|
5 |
+
{
|
6 |
+
global $prefix,$dbcon;
|
7 |
+
$dir_name = dirname(__FILE__);
|
8 |
+
$dir_name1 = explode('wp-content', $dir_name);
|
9 |
+
$dir_name = $dir_name1[0];
|
10 |
+
$filepath = str_replace('\\', '/', $dir_name1[0]);
|
11 |
+
$fileName = $filepath.'/wp-includes/mo-waf-config.php';
|
12 |
+
$missingFile = 0;
|
13 |
+
if(!file_exists($fileName))
|
14 |
+
{
|
15 |
+
$missingFile = 1;
|
16 |
+
}
|
17 |
+
if($missingFile==1)
|
18 |
+
{
|
19 |
+
$file = fopen($fileName, "a+");
|
20 |
+
$string = "<?php".PHP_EOL;
|
21 |
+
$string .= '$SQL='.get_option("SQLInjection").';'.PHP_EOL;
|
22 |
+
$string .= '$XSS='.get_option("XSSAttack").';'.PHP_EOL;
|
23 |
+
$string .= '$RFI='.get_option("RFIAttack").';'.PHP_EOL;
|
24 |
+
$string .= '$LFI='.get_option("LFIAttack").';'.PHP_EOL;
|
25 |
+
$string .= '$RCE='.get_option("RCEAttack").';'.PHP_EOL;
|
26 |
+
$string .= '$RateLimiting='.get_option("Rate_limiting").';'.PHP_EOL;
|
27 |
+
$string .= '$RequestsPMin='.get_option("Rate_request").';'.PHP_EOL;
|
28 |
+
|
29 |
+
if(get_option('actionRateL') == 0)
|
30 |
+
$string .= '$actionRateL="ThrottleIP";'.PHP_EOL;
|
31 |
+
else
|
32 |
+
$string .= '$actionRateL="BlockIP";'.PHP_EOL;
|
33 |
+
|
34 |
+
$string .= '?>'.PHP_EOL;
|
35 |
+
fwrite($file, $string);
|
36 |
+
fclose($file);
|
37 |
+
return $fileName;
|
38 |
+
}
|
39 |
+
return "notMissing";
|
40 |
+
|
41 |
+
}
|
42 |
+
|
43 |
+
function getRLEAttack($ipaddress)
|
44 |
+
{
|
45 |
+
global $wpdb;
|
46 |
+
$query = "select time from ".$wpdb->base_prefix."wpns_attack_logs where ip ='".$ipaddress."' ORDER BY time DESC LIMIT 1;";
|
47 |
+
$results = $wpdb->get_results($query);
|
48 |
+
return $results[0]->time;
|
49 |
+
}
|
50 |
+
function log_attack($ipaddress,$value1,$value)
|
51 |
+
{
|
52 |
+
global $wpdb;
|
53 |
+
$value = htmlspecialchars($value);
|
54 |
+
$query = 'insert into '.$wpdb->base_prefix.'wpns_attack_logs values ("'.$ipaddress.'","'.$value1.'",'.time().',"'.$value.'");';
|
55 |
+
$results = $wpdb->get_results($query);
|
56 |
+
$query = "select count(*) as count from ".$wpdb->base_prefix."wpns_attack_logs where ip='".$ipaddress."' and input != 'RLE';";
|
57 |
+
$results = $wpdb->get_results($query);
|
58 |
+
return $results[0]->count;
|
59 |
+
}
|
60 |
+
|
61 |
+
|
62 |
+
function CheckRate($ipaddress)
|
63 |
+
{
|
64 |
+
global $wpdb;
|
65 |
+
$time = 60;
|
66 |
+
clearRate($time);
|
67 |
+
insertRate($ipaddress);
|
68 |
+
$query = "select count(*) as count from ".$wpdb->base_prefix."wpns_ip_rate_details where ip='".$ipaddress."';";
|
69 |
+
$results = $wpdb->get_results($query);
|
70 |
+
|
71 |
+
if(isset($results[0]->count))
|
72 |
+
{
|
73 |
+
return $results[0]->count;
|
74 |
+
}
|
75 |
+
return 0;
|
76 |
+
|
77 |
+
}
|
78 |
+
function clearRate($time)
|
79 |
+
{
|
80 |
+
global $wpdb;
|
81 |
+
$query = "delete from ".$wpdb->base_prefix."wpns_ip_rate_details where time<".(time()-$time);
|
82 |
+
$results = $wpdb->get_results($query);
|
83 |
+
}
|
84 |
+
function insertRate($ipaddress)
|
85 |
+
{
|
86 |
+
global $wpdb;
|
87 |
+
$query = "insert into ".$wpdb->base_prefix."wpns_ip_rate_details values('".$ipaddress."',".time().");";
|
88 |
+
$results = $wpdb->get_results($query);
|
89 |
+
}
|
90 |
+
|
91 |
?>
|
handler/WAF/mo-waf-plugin.php
CHANGED
@@ -17,6 +17,7 @@
|
|
17 |
global $wpdb,$mowpnshandle;
|
18 |
$mowpnshandle = new MoWpnsHandler();
|
19 |
$ipaddress = get_ipaddress();
|
|
|
20 |
if($mowpnshandle->is_ip_blocked($ipaddress))
|
21 |
{
|
22 |
if(!$mowpnshandle->is_whitelisted($ipaddress))
|
@@ -121,7 +122,7 @@
|
|
121 |
if(!$mowpnshandle->is_whitelisted($ipaddress))
|
122 |
{
|
123 |
if(!$mowpnshandle->is_ip_blocked($ipaddress))
|
124 |
-
$mowpnshandle->block_ip($ipaddress,'
|
125 |
}
|
126 |
}
|
127 |
|
17 |
global $wpdb,$mowpnshandle;
|
18 |
$mowpnshandle = new MoWpnsHandler();
|
19 |
$ipaddress = get_ipaddress();
|
20 |
+
$ipaddress = sanitize_text_field($ipaddress);
|
21 |
if($mowpnshandle->is_ip_blocked($ipaddress))
|
22 |
{
|
23 |
if(!$mowpnshandle->is_whitelisted($ipaddress))
|
122 |
if(!$mowpnshandle->is_whitelisted($ipaddress))
|
123 |
{
|
124 |
if(!$mowpnshandle->is_ip_blocked($ipaddress))
|
125 |
+
$mowpnshandle->block_ip($ipaddress,'Attack limit Exceeded',true); //Attack Limit Exceed
|
126 |
}
|
127 |
}
|
128 |
|
handler/WAF/mo-waf.php
CHANGED
@@ -116,7 +116,7 @@
|
|
116 |
{
|
117 |
if(!is_ip_whitelisted($ipaddress))
|
118 |
{
|
119 |
-
block_ip($ipaddress,'
|
120 |
}
|
121 |
}
|
122 |
|
116 |
{
|
117 |
if(!is_ip_whitelisted($ipaddress))
|
118 |
{
|
119 |
+
block_ip($ipaddress,'Attack limit Exceeded'); //Attack Limit Exceed
|
120 |
}
|
121 |
}
|
122 |
|
handler/ajax.php
CHANGED
@@ -1,137 +1,137 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class AjaxHandler
|
4 |
-
{
|
5 |
-
function __construct()
|
6 |
-
{
|
7 |
-
add_action( 'admin_init' , array( $this, 'mo_wpns_2fa_actions' ) );
|
8 |
-
}
|
9 |
-
|
10 |
-
function mo_wpns_2fa_actions()
|
11 |
-
{
|
12 |
-
global $moWpnsUtility,$mo2f_dirName;
|
13 |
-
|
14 |
-
if (current_user_can( 'manage_options' ) && isset( $_REQUEST['option'] ))
|
15 |
-
{
|
16 |
-
switch($_REQUEST['option'])
|
17 |
-
{
|
18 |
-
case "iplookup":
|
19 |
-
$this->lookupIP($_GET['ip']); break;
|
20 |
-
|
21 |
-
case "dissmissfeedback":
|
22 |
-
$this->handle_feedback(); break;
|
23 |
-
case "dissmissSMTP":
|
24 |
-
$this->handle_smtp(); break;
|
25 |
-
case "whitelistself":
|
26 |
-
$this->whitelist_self(); break;
|
27 |
-
case "dismissinfected":
|
28 |
-
$this->wpns_infected_notice(); break;
|
29 |
-
case "dismissinfected_always":
|
30 |
-
$this->wpns_infected_notice_always(); break;
|
31 |
-
case "dismissplugin":
|
32 |
-
$this->wpns_plugin_notice(); break;
|
33 |
-
case "dismissplugin_always":
|
34 |
-
$this->wpns_plugin_notice_always(); break;
|
35 |
-
case "dismissweekly":
|
36 |
-
$this->wpns_weekly_notice(); break;
|
37 |
-
case "dismissweekly_always":
|
38 |
-
$this->wpns_weekly_notice_always(); break;
|
39 |
-
}
|
40 |
-
}
|
41 |
-
}
|
42 |
-
|
43 |
-
private function lookupIP($ip)
|
44 |
-
{
|
45 |
-
$result=@json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip=".$ip),true);
|
46 |
-
$hostname = gethostbyaddr($result["geoplugin_request"]);
|
47 |
-
try{
|
48 |
-
$timeoffset = timezone_offset_get(new DateTimeZone($result["geoplugin_timezone"]),new DateTime('now'));
|
49 |
-
$timeoffset = $timeoffset/3600;
|
50 |
-
|
51 |
-
}catch(Exception $e){
|
52 |
-
$result["geoplugin_timezone"]="";
|
53 |
-
$timeoffset="";
|
54 |
-
}
|
55 |
-
|
56 |
-
$ipLookUpTemplate = MoWpnsConstants::IP_LOOKUP_TEMPLATE;
|
57 |
-
if($result['geoplugin_request']==$ip) {
|
58 |
-
|
59 |
-
$ipLookUpTemplate = str_replace("{{status}}", $result["geoplugin_status"], $ipLookUpTemplate);
|
60 |
-
$ipLookUpTemplate = str_replace("{{ip}}", $result["geoplugin_request"], $ipLookUpTemplate);
|
61 |
-
$ipLookUpTemplate = str_replace("{{region}}", $result["geoplugin_region"], $ipLookUpTemplate);
|
62 |
-
$ipLookUpTemplate = str_replace("{{country}}", $result["geoplugin_countryName"], $ipLookUpTemplate);
|
63 |
-
$ipLookUpTemplate = str_replace("{{city}}", $result["geoplugin_city"], $ipLookUpTemplate);
|
64 |
-
$ipLookUpTemplate = str_replace("{{continent}}", $result["geoplugin_continentName"], $ipLookUpTemplate);
|
65 |
-
$ipLookUpTemplate = str_replace("{{latitude}}", $result["geoplugin_latitude"], $ipLookUpTemplate);
|
66 |
-
$ipLookUpTemplate = str_replace("{{longitude}}", $result["geoplugin_longitude"], $ipLookUpTemplate);
|
67 |
-
$ipLookUpTemplate = str_replace("{{timezone}}", $result["geoplugin_timezone"], $ipLookUpTemplate);
|
68 |
-
$ipLookUpTemplate = str_replace("{{curreny_code}}", $result["geoplugin_currencyCode"], $ipLookUpTemplate);
|
69 |
-
$ipLookUpTemplate = str_replace("{{curreny_symbol}}", $result["geoplugin_currencySymbol"], $ipLookUpTemplate);
|
70 |
-
$ipLookUpTemplate = str_replace("{{per_dollar_value}}", $result["geoplugin_currencyConverter"], $ipLookUpTemplate);
|
71 |
-
$ipLookUpTemplate = str_replace("{{hostname}}", $hostname, $ipLookUpTemplate);
|
72 |
-
$ipLookUpTemplate = str_replace("{{offset}}", $timeoffset, $ipLookUpTemplate);
|
73 |
-
|
74 |
-
$result['ipDetails'] = $ipLookUpTemplate;
|
75 |
-
}else{
|
76 |
-
$result["ipDetails"]["status"]="ERROR";
|
77 |
-
}
|
78 |
-
|
79 |
-
wp_send_json( $result );
|
80 |
-
|
81 |
-
}
|
82 |
-
|
83 |
-
private function handle_feedback()
|
84 |
-
{
|
85 |
-
update_option('donot_show_feedback_message',1);
|
86 |
-
wp_send_json('success');
|
87 |
-
}
|
88 |
-
|
89 |
-
private function whitelist_self()
|
90 |
-
{
|
91 |
-
global $moWpnsUtility;
|
92 |
-
$moPluginsUtility = new MoWpnsHandler();
|
93 |
-
$moPluginsUtility->whitelist_ip($moWpnsUtility->get_client_ip());
|
94 |
-
wp_send_json('success');
|
95 |
-
}
|
96 |
-
|
97 |
-
private function wpns_infected_notice()
|
98 |
-
{
|
99 |
-
update_option('infected_dismiss', time());
|
100 |
-
wp_send_json('success');
|
101 |
-
}
|
102 |
-
|
103 |
-
private function wpns_infected_notice_always()
|
104 |
-
{
|
105 |
-
update_option('donot_show_infected_file_notice', 1);
|
106 |
-
wp_send_json('success');
|
107 |
-
}
|
108 |
-
|
109 |
-
private function wpns_plugin_notice()
|
110 |
-
{
|
111 |
-
$plugin_current= get_plugins();
|
112 |
-
update_option('mo_wpns_last_plugins', $plugin_current);
|
113 |
-
$args=array();
|
114 |
-
$theme_current= wp_get_themes($args);
|
115 |
-
update_option('mo_wpns_last_themes', $theme_current);
|
116 |
-
wp_send_json('success');
|
117 |
-
}
|
118 |
-
|
119 |
-
private function wpns_plugin_notice_always()
|
120 |
-
{
|
121 |
-
update_option('donot_show_new_plugin_theme_notice', 1);
|
122 |
-
wp_send_json('success');
|
123 |
-
}
|
124 |
-
|
125 |
-
private function wpns_weekly_notice()
|
126 |
-
{
|
127 |
-
update_option('weekly_dismiss', time());
|
128 |
-
wp_send_json('success');
|
129 |
-
}
|
130 |
-
|
131 |
-
private function wpns_weekly_notice_always()
|
132 |
-
{
|
133 |
-
update_option('donot_show_weekly_scan_notice', 1);
|
134 |
-
wp_send_json('success');
|
135 |
-
}
|
136 |
-
|
137 |
}new AjaxHandler;
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class AjaxHandler
|
4 |
+
{
|
5 |
+
function __construct()
|
6 |
+
{
|
7 |
+
add_action( 'admin_init' , array( $this, 'mo_wpns_2fa_actions' ) );
|
8 |
+
}
|
9 |
+
|
10 |
+
function mo_wpns_2fa_actions()
|
11 |
+
{
|
12 |
+
global $moWpnsUtility,$mo2f_dirName;
|
13 |
+
|
14 |
+
if (current_user_can( 'manage_options' ) && isset( $_REQUEST['option'] ))
|
15 |
+
{
|
16 |
+
switch($_REQUEST['option'])
|
17 |
+
{
|
18 |
+
case "iplookup":
|
19 |
+
$this->lookupIP($_GET['ip']); break;
|
20 |
+
|
21 |
+
case "dissmissfeedback":
|
22 |
+
$this->handle_feedback(); break;
|
23 |
+
case "dissmissSMTP":
|
24 |
+
$this->handle_smtp(); break;
|
25 |
+
case "whitelistself":
|
26 |
+
$this->whitelist_self(); break;
|
27 |
+
case "dismissinfected":
|
28 |
+
$this->wpns_infected_notice(); break;
|
29 |
+
case "dismissinfected_always":
|
30 |
+
$this->wpns_infected_notice_always(); break;
|
31 |
+
case "dismissplugin":
|
32 |
+
$this->wpns_plugin_notice(); break;
|
33 |
+
case "dismissplugin_always":
|
34 |
+
$this->wpns_plugin_notice_always(); break;
|
35 |
+
case "dismissweekly":
|
36 |
+
$this->wpns_weekly_notice(); break;
|
37 |
+
case "dismissweekly_always":
|
38 |
+
$this->wpns_weekly_notice_always(); break;
|
39 |
+
}
|
40 |
+
}
|
41 |
+
}
|
42 |
+
|
43 |
+
private function lookupIP($ip)
|
44 |
+
{
|
45 |
+
$result=@json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip=".$ip),true);
|
46 |
+
$hostname = gethostbyaddr($result["geoplugin_request"]);
|
47 |
+
try{
|
48 |
+
$timeoffset = timezone_offset_get(new DateTimeZone($result["geoplugin_timezone"]),new DateTime('now'));
|
49 |
+
$timeoffset = $timeoffset/3600;
|
50 |
+
|
51 |
+
}catch(Exception $e){
|
52 |
+
$result["geoplugin_timezone"]="";
|
53 |
+
$timeoffset="";
|
54 |
+
}
|
55 |
+
|
56 |
+
$ipLookUpTemplate = MoWpnsConstants::IP_LOOKUP_TEMPLATE;
|
57 |
+
if($result['geoplugin_request']==$ip) {
|
58 |
+
|
59 |
+
$ipLookUpTemplate = str_replace("{{status}}", $result["geoplugin_status"], $ipLookUpTemplate);
|
60 |
+
$ipLookUpTemplate = str_replace("{{ip}}", $result["geoplugin_request"], $ipLookUpTemplate);
|
61 |
+
$ipLookUpTemplate = str_replace("{{region}}", $result["geoplugin_region"], $ipLookUpTemplate);
|
62 |
+
$ipLookUpTemplate = str_replace("{{country}}", $result["geoplugin_countryName"], $ipLookUpTemplate);
|
63 |
+
$ipLookUpTemplate = str_replace("{{city}}", $result["geoplugin_city"], $ipLookUpTemplate);
|
64 |
+
$ipLookUpTemplate = str_replace("{{continent}}", $result["geoplugin_continentName"], $ipLookUpTemplate);
|
65 |
+
$ipLookUpTemplate = str_replace("{{latitude}}", $result["geoplugin_latitude"], $ipLookUpTemplate);
|
66 |
+
$ipLookUpTemplate = str_replace("{{longitude}}", $result["geoplugin_longitude"], $ipLookUpTemplate);
|
67 |
+
$ipLookUpTemplate = str_replace("{{timezone}}", $result["geoplugin_timezone"], $ipLookUpTemplate);
|
68 |
+
$ipLookUpTemplate = str_replace("{{curreny_code}}", $result["geoplugin_currencyCode"], $ipLookUpTemplate);
|
69 |
+
$ipLookUpTemplate = str_replace("{{curreny_symbol}}", $result["geoplugin_currencySymbol"], $ipLookUpTemplate);
|
70 |
+
$ipLookUpTemplate = str_replace("{{per_dollar_value}}", $result["geoplugin_currencyConverter"], $ipLookUpTemplate);
|
71 |
+
$ipLookUpTemplate = str_replace("{{hostname}}", $hostname, $ipLookUpTemplate);
|
72 |
+
$ipLookUpTemplate = str_replace("{{offset}}", $timeoffset, $ipLookUpTemplate);
|
73 |
+
|
74 |
+
$result['ipDetails'] = $ipLookUpTemplate;
|
75 |
+
}else{
|
76 |
+
$result["ipDetails"]["status"]="ERROR";
|
77 |
+
}
|
78 |
+
|
79 |
+
wp_send_json( $result );
|
80 |
+
|
81 |
+
}
|
82 |
+
|
83 |
+
private function handle_feedback()
|
84 |
+
{
|
85 |
+
update_option('donot_show_feedback_message',1);
|
86 |
+
wp_send_json('success');
|
87 |
+
}
|
88 |
+
|
89 |
+
private function whitelist_self()
|
90 |
+
{
|
91 |
+
global $moWpnsUtility;
|
92 |
+
$moPluginsUtility = new MoWpnsHandler();
|
93 |
+
$moPluginsUtility->whitelist_ip($moWpnsUtility->get_client_ip());
|
94 |
+
wp_send_json('success');
|
95 |
+
}
|
96 |
+
|
97 |
+
private function wpns_infected_notice()
|
98 |
+
{
|
99 |
+
update_option('infected_dismiss', time());
|
100 |
+
wp_send_json('success');
|
101 |
+
}
|
102 |
+
|
103 |
+
private function wpns_infected_notice_always()
|
104 |
+
{
|
105 |
+
update_option('donot_show_infected_file_notice', 1);
|
106 |
+
wp_send_json('success');
|
107 |
+
}
|
108 |
+
|
109 |
+
private function wpns_plugin_notice()
|
110 |
+
{
|
111 |
+
$plugin_current= get_plugins();
|
112 |
+
update_option('mo_wpns_last_plugins', $plugin_current);
|
113 |
+
$args=array();
|
114 |
+
$theme_current= wp_get_themes($args);
|
115 |
+
update_option('mo_wpns_last_themes', $theme_current);
|
116 |
+
wp_send_json('success');
|
117 |
+
}
|
118 |
+
|
119 |
+
private function wpns_plugin_notice_always()
|
120 |
+
{
|
121 |
+
update_option('donot_show_new_plugin_theme_notice', 1);
|
122 |
+
wp_send_json('success');
|
123 |
+
}
|
124 |
+
|
125 |
+
private function wpns_weekly_notice()
|
126 |
+
{
|
127 |
+
update_option('weekly_dismiss', time());
|
128 |
+
wp_send_json('success');
|
129 |
+
}
|
130 |
+
|
131 |
+
private function wpns_weekly_notice_always()
|
132 |
+
{
|
133 |
+
update_option('donot_show_weekly_scan_notice', 1);
|
134 |
+
wp_send_json('success');
|
135 |
+
}
|
136 |
+
|
137 |
}new AjaxHandler;
|
handler/backup.php
CHANGED
@@ -1,320 +1,322 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class MoBackupSite{
|
4 |
-
|
5 |
-
function __construct()
|
6 |
-
{
|
7 |
-
add_filter( 'cron_schedules', array($this,'db_eb_backup_interval'));
|
8 |
-
add_action( 'mo_eb_bl_cron_hook', array($this,'db_cron_backup') );
|
9 |
-
add_filter( 'cron_schedules', array($this,'file_eb_backup_interval'));
|
10 |
-
add_action( 'mo_eb_file_cron_hook', array($this,'file_cron_backup') );
|
11 |
-
}
|
12 |
-
|
13 |
-
function db_cron_backup(){
|
14 |
-
|
15 |
-
$obj = new MoBackupSite;
|
16 |
-
$obj->backupDB();
|
17 |
-
|
18 |
-
}
|
19 |
-
|
20 |
-
function db_eb_backup_interval($schedules){
|
21 |
-
$mo2f_cron_hours =
|
22 |
-
$schedules['db_eb_backup_time'] = array(
|
23 |
-
'interval' => $mo2f_cron_hours,
|
24 |
-
'display' => esc_html__( 'Cron Activated' ),
|
25 |
-
);
|
26 |
-
return $schedules;
|
27 |
-
}
|
28 |
-
|
29 |
-
function bl_deactivate() {
|
30 |
-
$timestamp = wp_next_scheduled( 'mo_eb_bl_cron_hook' );
|
31 |
-
wp_unschedule_event( $timestamp, 'mo_eb_bl_cron_hook' );
|
32 |
-
}
|
33 |
-
|
34 |
-
function file_cron_backup(){
|
35 |
-
$backup_store_path = wp_upload_dir();
|
36 |
-
$backup_store_path = $backup_store_path['basedir'].DIRECTORY_SEPARATOR;
|
37 |
-
$time = time();
|
38 |
-
update_site_option('backup_created_time',$time);
|
39 |
-
|
40 |
-
if(
|
41 |
-
$this->plugin_backup($backup_store_path, $time);
|
42 |
-
}
|
43 |
-
if(
|
44 |
-
$this->themes_backup($backup_store_path ,$time);
|
45 |
-
}
|
46 |
-
|
47 |
-
if(get_site_option('mo_file_backup_wp_files') == '1'){
|
48 |
-
$this->wpfiles_backup($backup_store_path, $time);
|
49 |
-
}
|
50 |
-
|
51 |
-
}
|
52 |
-
|
53 |
-
function file_manual_backup(){
|
54 |
-
$backup_store_path = wp_upload_dir();
|
55 |
-
$backup_store_path = $backup_store_path['basedir'].DIRECTORY_SEPARATOR;
|
56 |
-
$time = time();
|
57 |
-
update_site_option('backup_created_time',$time);
|
58 |
-
|
59 |
-
if(
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
}
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
$
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
$
|
102 |
-
$
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
$
|
114 |
-
$
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
}
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
$
|
172 |
-
|
173 |
-
$
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
}
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
$
|
211 |
-
$
|
212 |
-
$
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
array_push($
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
$query .= $this->get_table_query($query,$
|
232 |
-
|
233 |
-
$
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
$
|
249 |
-
$
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
$query.= '""';
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
}
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
$
|
281 |
-
$
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
$
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
$
|
300 |
-
|
301 |
-
$
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
$
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
|
|
|
|
320 |
}new MoBackupSite;
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class MoBackupSite{
|
4 |
+
|
5 |
+
function __construct()
|
6 |
+
{
|
7 |
+
add_filter( 'cron_schedules', array($this,'db_eb_backup_interval'));
|
8 |
+
add_action( 'mo_eb_bl_cron_hook', array($this,'db_cron_backup') );
|
9 |
+
add_filter( 'cron_schedules', array($this,'file_eb_backup_interval'));
|
10 |
+
add_action( 'mo_eb_file_cron_hook', array($this,'file_cron_backup') );
|
11 |
+
}
|
12 |
+
|
13 |
+
function db_cron_backup(){
|
14 |
+
|
15 |
+
$obj = new MoBackupSite;
|
16 |
+
$obj->backupDB();
|
17 |
+
|
18 |
+
}
|
19 |
+
|
20 |
+
function db_eb_backup_interval($schedules){
|
21 |
+
$mo2f_cron_hours = MoWpnsUtility::get_mo2f_db_option('mo_wpns_backup_time', 'site_option')*3600;
|
22 |
+
$schedules['db_eb_backup_time'] = array(
|
23 |
+
'interval' => $mo2f_cron_hours,
|
24 |
+
'display' => esc_html__( 'Cron Activated' ),
|
25 |
+
);
|
26 |
+
return $schedules;
|
27 |
+
}
|
28 |
+
|
29 |
+
function bl_deactivate() {
|
30 |
+
$timestamp = wp_next_scheduled( 'mo_eb_bl_cron_hook' );
|
31 |
+
wp_unschedule_event( $timestamp, 'mo_eb_bl_cron_hook' );
|
32 |
+
}
|
33 |
+
|
34 |
+
function file_cron_backup(){
|
35 |
+
$backup_store_path = wp_upload_dir();
|
36 |
+
$backup_store_path = $backup_store_path['basedir'].DIRECTORY_SEPARATOR;
|
37 |
+
$time = time();
|
38 |
+
update_site_option('backup_created_time',$time);
|
39 |
+
|
40 |
+
if(MoWpnsUtility::get_mo2f_db_option('mo_file_backup_plugins', 'site_option') =='1'){
|
41 |
+
$this->plugin_backup($backup_store_path, $time);
|
42 |
+
}
|
43 |
+
if(MoWpnsUtility::get_mo2f_db_option('mo_file_backup_themes','site_option') =='1'){
|
44 |
+
$this->themes_backup($backup_store_path ,$time);
|
45 |
+
}
|
46 |
+
|
47 |
+
if(get_site_option('mo_file_backup_wp_files') == '1'){
|
48 |
+
$this->wpfiles_backup($backup_store_path, $time);
|
49 |
+
}
|
50 |
+
|
51 |
+
}
|
52 |
+
|
53 |
+
function file_manual_backup(){
|
54 |
+
$backup_store_path = wp_upload_dir();
|
55 |
+
$backup_store_path = $backup_store_path['basedir'].DIRECTORY_SEPARATOR;
|
56 |
+
$time = time();
|
57 |
+
update_site_option('backup_created_time',$time);
|
58 |
+
|
59 |
+
if(MoWpnsUtility::get_mo2f_db_option('mo_file_manual_backup_plugins', 'site_option') =='1'){
|
60 |
+
// if(get_option('mo_file_manual_backup_plugins') =='1'){
|
61 |
+
$this->plugin_backup($backup_store_path, $time);
|
62 |
+
}
|
63 |
+
if(MoWpnsUtility::get_mo2f_db_option('mo_file_manual_backup_themes', 'site_option') =='1'){
|
64 |
+
// if(get_option('mo_file_manual_backup_themes') =='1'){
|
65 |
+
$this->themes_backup($backup_store_path ,$time);
|
66 |
+
}
|
67 |
+
|
68 |
+
if(get_site_option('mo_file_manual_backup_wp_files') == '1'){
|
69 |
+
$this->wpfiles_backup($backup_store_path, $time);
|
70 |
+
}
|
71 |
+
|
72 |
+
}
|
73 |
+
|
74 |
+
function file_eb_backup_interval($schedules){
|
75 |
+
$mo2f_cron_file_backup_hours = MoWpnsUtility::get_mo2f_db_option('mo_wpns_backup_time', 'site_option')*3600;
|
76 |
+
$schedules['file_eb_backup_time'] = array(
|
77 |
+
'interval' => $mo2f_cron_file_backup_hours,
|
78 |
+
'display' => esc_html__( 'Cron Activated' ),
|
79 |
+
);
|
80 |
+
return $schedules;
|
81 |
+
}
|
82 |
+
|
83 |
+
function file_backup_deactivate(){
|
84 |
+
$timestamp = wp_next_scheduled( 'mo_eb_file_cron_hook' );
|
85 |
+
wp_unschedule_event( $timestamp, 'mo_eb_file_cron_hook' );
|
86 |
+
}
|
87 |
+
|
88 |
+
function plugin_backup($backup_store_path, $time){
|
89 |
+
global $wpnsDbQueries;
|
90 |
+
$this->mkdirectory('plugins');
|
91 |
+
$real_path= WP_PLUGIN_DIR;
|
92 |
+
$backup_path =$backup_store_path.'miniorangebackup'.DIRECTORY_SEPARATOR.'file-backups'.DIRECTORY_SEPARATOR.'plugins';
|
93 |
+
$filename = 'miniorange-plugins-backup-'.$time.'.zip';
|
94 |
+
$this->file_backup($real_path,$filename,'plugins');
|
95 |
+
$wpnsDbQueries->insert_backup_detail(MoWpnsConstants::PLUGIN,$filename,$time,$backup_path);
|
96 |
+
}
|
97 |
+
|
98 |
+
function themes_backup($backup_store_path ,$time){
|
99 |
+
global $wpnsDbQueries;
|
100 |
+
$this->mkdirectory('themes');
|
101 |
+
$real_path= get_theme_root();
|
102 |
+
$backup_path =$backup_store_path.'miniorangebackup'.DIRECTORY_SEPARATOR.'file-backups'.DIRECTORY_SEPARATOR.'themes';
|
103 |
+
$filename = 'miniorange-themes-backup-'.$time.'.zip';
|
104 |
+
$this->file_backup($real_path,$filename,'themes');
|
105 |
+
$wpnsDbQueries->insert_backup_detail(MoWpnsConstants::THEMES,$filename,$time,$backup_path);
|
106 |
+
|
107 |
+
}
|
108 |
+
|
109 |
+
function wpfiles_backup($backup_store_path, $time){
|
110 |
+
global $wpnsDbQueries;
|
111 |
+
$this->mkdirectory('wp_files');
|
112 |
+
$homepath = get_home_path();
|
113 |
+
$real_path= $homepath;
|
114 |
+
$backup_path =$backup_store_path.'miniorangebackup'.DIRECTORY_SEPARATOR.'file-backups'.DIRECTORY_SEPARATOR.'wp_files';
|
115 |
+
$filename = 'miniorange-wpfiles-backup-'.$time.'.zip';
|
116 |
+
$this->file_backup($real_path,$filename, 'wp_files');
|
117 |
+
$wpnsDbQueries->insert_backup_detail(MoWpnsConstants::WPFILES,$filename,$time,$backup_path);
|
118 |
+
}
|
119 |
+
|
120 |
+
function mkdirectory($foldername){
|
121 |
+
|
122 |
+
$homepath = wp_upload_dir();
|
123 |
+
$homepath = $homepath['basedir'].DIRECTORY_SEPARATOR;
|
124 |
+
if(!is_writable($homepath)){
|
125 |
+
wp_send_json('not_writable');
|
126 |
+
return;
|
127 |
+
}
|
128 |
+
|
129 |
+
|
130 |
+
$basepath = $homepath;
|
131 |
+
if(!file_exists($basepath."miniorangebackup")){
|
132 |
+
mkdir($basepath."miniorangebackup");
|
133 |
+
}
|
134 |
+
|
135 |
+
$basepath = $homepath.'miniorangebackup'.DIRECTORY_SEPARATOR;
|
136 |
+
$this-> create_index_file($basepath);
|
137 |
+
|
138 |
+
if(!file_exists($basepath.'file-backups')){
|
139 |
+
mkdir($basepath.'file-backups');
|
140 |
+
}
|
141 |
+
|
142 |
+
$basepath = $homepath.'miniorangebackup'.DIRECTORY_SEPARATOR.'file-backups'.DIRECTORY_SEPARATOR;
|
143 |
+
if(!file_exists($basepath.$foldername)){
|
144 |
+
mkdir($basepath.$foldername);
|
145 |
+
}
|
146 |
+
|
147 |
+
}
|
148 |
+
|
149 |
+
function create_index_file($folder_path){
|
150 |
+
|
151 |
+
$html_path=$folder_path."index.html";
|
152 |
+
$htaccess_path= $folder_path.".htaccess";
|
153 |
+
|
154 |
+
if(!file_exists($html_path)){
|
155 |
+
$f = fopen($html_path, "a");
|
156 |
+
fwrite($f, '<html><body><a href="https://security.miniorange.com/" target="_blank">WordPress backups by miniorange</a></body></html>');
|
157 |
+
fclose($f);
|
158 |
+
}
|
159 |
+
if(!file_exists($htaccess_path)){
|
160 |
+
$f = fopen($htaccess_path, "a");
|
161 |
+
fwrite($f, "deny from all");
|
162 |
+
fclose($f);
|
163 |
+
}
|
164 |
+
}
|
165 |
+
|
166 |
+
|
167 |
+
function file_backup($real_path, $filename, $foldername){
|
168 |
+
ini_set('max_execution_time', 0);
|
169 |
+
$backup_store_path = wp_upload_dir();
|
170 |
+
$backup_store_path = $backup_store_path['basedir'].DIRECTORY_SEPARATOR.'miniorangebackup'.DIRECTORY_SEPARATOR.'file-backups'.DIRECTORY_SEPARATOR;
|
171 |
+
$rootPath = realpath($real_path);
|
172 |
+
$zip = new ZipArchive();
|
173 |
+
$res = $zip->open($backup_store_path.$foldername.DIRECTORY_SEPARATOR.$filename, ZipArchive::CREATE | ZipArchive::OVERWRITE);
|
174 |
+
|
175 |
+
$files = new RecursiveIteratorIterator(
|
176 |
+
new RecursiveDirectoryIterator($rootPath),
|
177 |
+
RecursiveIteratorIterator::LEAVES_ONLY
|
178 |
+
);
|
179 |
+
foreach ($files as $name => $file)
|
180 |
+
{
|
181 |
+
if (!$file->isDir())
|
182 |
+
{
|
183 |
+
$filePath = $file->getRealPath();
|
184 |
+
$relativePath = substr($filePath, strlen($rootPath) + 1);
|
185 |
+
if(strpos($relativePath, 'miniorangebackup')!== false ){}
|
186 |
+
else{
|
187 |
+
$zip->addFile($filePath, $relativePath);
|
188 |
+
}
|
189 |
+
}
|
190 |
+
}
|
191 |
+
$zip->close();
|
192 |
+
}
|
193 |
+
|
194 |
+
|
195 |
+
function backupDB(){
|
196 |
+
|
197 |
+
if ( function_exists('memory_get_usage') && ( (int) ini_get('memory_limit') < 128 ) ){
|
198 |
+
ini_set('memory_limit', '128M' );
|
199 |
+
do_action('mo_eb_show_message',MoBackupMessages::showMessage('DB_MEMORY_LIMIT'),'SUCCESS');
|
200 |
+
}
|
201 |
+
|
202 |
+
$backup_store_path = wp_upload_dir();
|
203 |
+
$backup_store_path = $backup_store_path['basedir'].DIRECTORY_SEPARATOR;
|
204 |
+
|
205 |
+
if(!is_writable($backup_store_path)){
|
206 |
+
wp_send_json('not_writable');
|
207 |
+
return;
|
208 |
+
}
|
209 |
+
global $wpdb;
|
210 |
+
$tables = $wpdb->get_results("SHOW TABLES", ARRAY_N);
|
211 |
+
$nooftables = count($tables);
|
212 |
+
$query = "";
|
213 |
+
$tableswithfk = array();
|
214 |
+
$tableswithoutfk= array();
|
215 |
+
|
216 |
+
foreach($tables as $table)
|
217 |
+
{
|
218 |
+
if(is_array($table))
|
219 |
+
$table = $table[0];
|
220 |
+
$createtable = $wpdb->get_results("SHOW CREATE TABLE $table", ARRAY_A);
|
221 |
+
if(!empty($createtable[0]))
|
222 |
+
{
|
223 |
+
$createquery = $createtable[0]['Create Table'];
|
224 |
+
if (strpos($createquery, 'FOREIGN KEY') !== false)
|
225 |
+
array_push($tableswithfk,$table);
|
226 |
+
else
|
227 |
+
array_push($tableswithoutfk, $table);
|
228 |
+
}
|
229 |
+
}
|
230 |
+
|
231 |
+
$query .= $this->get_table_query($query,$tableswithoutfk);
|
232 |
+
|
233 |
+
$query .= $this->get_table_query($query,$tableswithfk);
|
234 |
+
|
235 |
+
$fileName = $this->create_db_backup_file($query);
|
236 |
+
wp_send_json('created_backup');
|
237 |
+
}
|
238 |
+
|
239 |
+
function get_table_query($query,$tables)
|
240 |
+
{
|
241 |
+
|
242 |
+
global $wpdb;
|
243 |
+
foreach($tables as $table)
|
244 |
+
{
|
245 |
+
$createtable = $wpdb->get_results("SHOW CREATE TABLE $table", ARRAY_A);
|
246 |
+
if(!empty($createtable[0]))
|
247 |
+
{
|
248 |
+
$createquery = $createtable[0]['Create Table'];
|
249 |
+
$query .= 'DROP TABLE IF EXISTS '.$table.";\n";
|
250 |
+
$query .= $createquery.";\n\n";
|
251 |
+
$data = $wpdb->get_results("SELECT * FROM $table", ARRAY_A);
|
252 |
+
foreach($data as $record)
|
253 |
+
{
|
254 |
+
if(count($record)>0)
|
255 |
+
{
|
256 |
+
$query.= 'INSERT INTO '.$table.' VALUES(';
|
257 |
+
$i=0;
|
258 |
+
foreach($record as $key=>$value)
|
259 |
+
{
|
260 |
+
$value = addslashes($value);
|
261 |
+
if (isset($value))
|
262 |
+
$query.= '"'.$value.'"' ;
|
263 |
+
else
|
264 |
+
$query.= '""';
|
265 |
+
if ($i < (count($record)-1)) { $query.= ','; }
|
266 |
+
$i++;
|
267 |
+
}
|
268 |
+
$query.= ");\n";
|
269 |
+
}
|
270 |
+
}
|
271 |
+
$query.="\n\n";
|
272 |
+
}
|
273 |
+
}
|
274 |
+
return $query;
|
275 |
+
}
|
276 |
+
|
277 |
+
function create_db_backup_file($data)
|
278 |
+
{
|
279 |
+
|
280 |
+
global $wpnsDbQueries;
|
281 |
+
$time = time();
|
282 |
+
$backup_store_path = wp_upload_dir();
|
283 |
+
$backup_store_path = $backup_store_path['basedir'].DIRECTORY_SEPARATOR;
|
284 |
+
if(!file_exists($backup_store_path."miniorangebackup")){
|
285 |
+
mkdir($backup_store_path."miniorangebackup");
|
286 |
+
}
|
287 |
+
$basepath = $backup_store_path.'miniorangebackup'.DIRECTORY_SEPARATOR;
|
288 |
+
$handler_obj = new MoBackupSite;
|
289 |
+
$handler_obj->create_index_file($basepath);
|
290 |
+
if(!file_exists($basepath.'db-backups')){
|
291 |
+
mkdir($basepath.'db-backups');
|
292 |
+
}
|
293 |
+
|
294 |
+
$backup_path = $basepath.'db-backups';
|
295 |
+
$filename = 'miniorange-db-backup-'.$time.'.sql';
|
296 |
+
$basepath = $basepath.'db-backups';
|
297 |
+
$handle = fopen($basepath.DIRECTORY_SEPARATOR.$filename,'w+');
|
298 |
+
fwrite($handle,$data);
|
299 |
+
fclose($handle);
|
300 |
+
$filezipname = $this->barfw_create_database_backup_zip_file($filename,$time);
|
301 |
+
$zip_path = $basepath.DIRECTORY_SEPARATOR.$filename;
|
302 |
+
unlink($zip_path);
|
303 |
+
$wpnsDbQueries->insert_backup_detail(MoWpnsConstants::DATABASE,$filezipname,$time,$backup_path);
|
304 |
+
return $filename;
|
305 |
+
}
|
306 |
+
|
307 |
+
function barfw_create_database_backup_zip_file($filename,$time){
|
308 |
+
$backup_store_path = wp_upload_dir();
|
309 |
+
$backup_store_path = $backup_store_path['basedir'].DIRECTORY_SEPARATOR.'miniorangebackup'.DIRECTORY_SEPARATOR.'db-backups'.DIRECTORY_SEPARATOR;
|
310 |
+
|
311 |
+
$filezipname = 'miniorange-db-backup-'.$time.'.zip';
|
312 |
+
$zip = new ZipArchive();
|
313 |
+
$res = $zip->open($backup_store_path.DIRECTORY_SEPARATOR.$filezipname, ZipArchive::CREATE | ZipArchive::OVERWRITE);
|
314 |
+
$filePath = $backup_store_path.$filename;
|
315 |
+
$relativePath = $filename;
|
316 |
+
$zip->addFile($filePath, $relativePath);
|
317 |
+
|
318 |
+
$zip->close();
|
319 |
+
return $filezipname;
|
320 |
+
}
|
321 |
+
|
322 |
}new MoBackupSite;
|
handler/feedback_form.php
CHANGED
@@ -72,7 +72,7 @@ class FeedbackHandler
|
|
72 |
$message ='[' ;
|
73 |
}
|
74 |
$message .= 'D:' . $days . ',';
|
75 |
-
if(
|
76 |
$message .= '2FA+NS]';
|
77 |
}
|
78 |
else{
|
72 |
$message ='[' ;
|
73 |
}
|
74 |
$message .= 'D:' . $days . ',';
|
75 |
+
if(MoWpnsUtility::get_mo2f_db_option('mo_wpns_2fa_with_network_security', 'get_option')){
|
76 |
$message .= '2FA+NS]';
|
77 |
}
|
78 |
else{
|
handler/logger.php
CHANGED
@@ -1,37 +1,37 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class mo2f_Logger
|
4 |
-
{
|
5 |
-
function __construct()
|
6 |
-
{
|
7 |
-
add_action( 'log_403' , array( $this, 'log_403' ) );
|
8 |
-
add_action( 'template_redirect', array( $this, 'log_404' ) );
|
9 |
-
}
|
10 |
-
|
11 |
-
|
12 |
-
function log_403()
|
13 |
-
{
|
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';
|
20 |
-
$mo_wpns_config->add_transactions($userIp,$username,MoWpnsConstants::ERR_403, MoWpnsConstants::ACCESS_DENIED,$url);
|
21 |
-
}
|
22 |
-
|
23 |
-
function log_404()
|
24 |
-
{
|
25 |
-
global $moWpnsUtility;
|
26 |
-
|
27 |
-
if(!is_404())
|
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';
|
34 |
-
$mo_wpns_config->add_transactions($userIp,$username,MoWpnsConstants::ERR_404, MoWpnsConstants::ACCESS_DENIED,$url);
|
35 |
-
}
|
36 |
-
}
|
37 |
new mo2f_Logger;
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class mo2f_Logger
|
4 |
+
{
|
5 |
+
function __construct()
|
6 |
+
{
|
7 |
+
add_action( 'log_403' , array( $this, 'log_403' ) );
|
8 |
+
add_action( 'template_redirect', array( $this, 'log_404' ) );
|
9 |
+
}
|
10 |
+
|
11 |
+
|
12 |
+
function log_403()
|
13 |
+
{
|
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';
|
20 |
+
$mo_wpns_config->add_transactions($userIp,$username,MoWpnsConstants::ERR_403, MoWpnsConstants::ACCESS_DENIED,$url);
|
21 |
+
}
|
22 |
+
|
23 |
+
function log_404()
|
24 |
+
{
|
25 |
+
global $moWpnsUtility;
|
26 |
+
|
27 |
+
if(!is_404())
|
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';
|
34 |
+
$mo_wpns_config->add_transactions($userIp,$username,MoWpnsConstants::ERR_404, MoWpnsConstants::ACCESS_DENIED,$url);
|
35 |
+
}
|
36 |
+
}
|
37 |
new mo2f_Logger;
|
handler/login.php
CHANGED
@@ -1,354 +1,354 @@
|
|
1 |
-
<?php
|
2 |
-
class LoginHandler
|
3 |
-
{
|
4 |
-
function __construct()
|
5 |
-
{
|
6 |
-
add_action( 'init' , array( $this, 'mo_wpns_init' ) );
|
7 |
-
if(get_site_option('mo2f_restrict_restAPI')){
|
8 |
-
add_action('rest_api_init' , array($this , 'mo_block_restAPI' ) );
|
9 |
-
}
|
10 |
-
if(
|
11 |
-
|| get_option('mo_wpns_activate_recaptcha_for_woocommerce_login'))
|
12 |
-
{
|
13 |
-
|
14 |
-
remove_filter('authenticate' , 'wp_authenticate_username_password' ,20 );
|
15 |
-
add_filter ('authenticate' , array( $this, 'custom_authenticate' ) ,1, 3 );
|
16 |
-
}
|
17 |
-
|
18 |
-
add_action('wp_login' , array( $this, 'mo_wpns_login_success' ) );
|
19 |
-
add_action('wp_login_failed' , array( $this, 'mo_wpns_login_failed' ) );
|
20 |
-
//add_action('auth_cookie_bad_username', array( $this, 'mo_wpns_login_failed' ) );
|
21 |
-
//add_action('auth_cookie_bad_hash' , array( $this, 'mo_wpns_login_failed' ) );
|
22 |
-
|
23 |
-
if(get_option('mo_wpns_activate_recaptcha_for_woocommerce_registration') ){
|
24 |
-
add_action( 'woocommerce_register_post', array( $this,'wooc_validate_user_captcha_register'), 1, 3);
|
25 |
-
}
|
26 |
-
}
|
27 |
-
|
28 |
-
function mo_block_restAPI(){
|
29 |
-
global $moWpnsUtility,$mo2f_dirName;
|
30 |
-
if(strpos($_SERVER['REQUEST_URI'], '/wp-json/wp/v2/users')){
|
31 |
-
include_once("mo-block.html");
|
32 |
-
exit;
|
33 |
-
}
|
34 |
-
}
|
35 |
-
|
36 |
-
function mo_wpns_init()
|
37 |
-
{
|
38 |
-
|
39 |
-
global $moWpnsUtility,$mo2f_dirName;
|
40 |
-
$WAFEnabled = get_option('WAFEnabled');
|
41 |
-
$WAFLevel = get_option('WAF');
|
42 |
-
|
43 |
-
$mo2f_scanner_parts = new mo2f_scanner_parts();
|
44 |
-
$mo2f_scanner_parts->file_cron_scan();
|
45 |
-
|
46 |
-
if($WAFEnabled == 1)
|
47 |
-
{
|
48 |
-
if($WAFLevel == 'PluginLevel')
|
49 |
-
{
|
50 |
-
if(file_exists($mo2f_dirName .'handler'.DIRECTORY_SEPARATOR.'WAF'.DIRECTORY_SEPARATOR.'mo-waf-plugin.php'))
|
51 |
-
include_once($mo2f_dirName .'handler'.DIRECTORY_SEPARATOR.'WAF'.DIRECTORY_SEPARATOR.'mo-waf-plugin.php');
|
52 |
-
else
|
53 |
-
{
|
54 |
-
//UNable to find file. Please reconfigure.
|
55 |
-
}
|
56 |
-
}
|
57 |
-
}
|
58 |
-
|
59 |
-
|
60 |
-
$userIp = $moWpnsUtility->get_client_ip();
|
61 |
-
$mo_wpns_config = new MoWpnsHandler();
|
62 |
-
$isWhitelisted = $mo_wpns_config->is_whitelisted($userIp);
|
63 |
-
$isIpBlocked = false;
|
64 |
-
if(!$isWhitelisted){
|
65 |
-
$isIpBlocked = $mo_wpns_config->is_ip_blocked_in_anyway($userIp);
|
66 |
-
}
|
67 |
-
if($isIpBlocked){
|
68 |
-
include_once("mo-block.html");
|
69 |
-
exit;
|
70 |
-
}
|
71 |
-
|
72 |
-
$requested_uri = $_SERVER["REQUEST_URI"];
|
73 |
-
$option = false;
|
74 |
-
if (is_user_logged_in()) { //chr?
|
75 |
-
if (strpos($requested_uri, chr(get_option('login_page_url'))) != false) {
|
76 |
-
wp_redirect(site_url());
|
77 |
-
die;
|
78 |
-
}
|
79 |
-
} else {
|
80 |
-
$option = get_option('mo_wpns_enable_rename_login_url');
|
81 |
-
}
|
82 |
-
if ($option) {
|
83 |
-
if (strpos($requested_uri, '/wp-login.php?checkemail=confirm') !== false) {
|
84 |
-
$requested_uri = str_replace("wp-login.php","",$requested_uri);
|
85 |
-
wp_redirect($requested_uri);
|
86 |
-
die;
|
87 |
-
} else if (strpos($requested_uri, '/wp-login.php?checkemail=registered') !== false) {
|
88 |
-
$requested_uri = str_replace("wp-login.php","",$requested_uri);
|
89 |
-
wp_redirect($requested_uri);
|
90 |
-
die;
|
91 |
-
}
|
92 |
-
|
93 |
-
if (strpos($requested_uri, '/wp-login.php') !== false) {
|
94 |
-
wp_redirect(site_url());
|
95 |
-
}
|
96 |
-
else if (strpos($requested_uri, get_option('login_page_url')) !== false ) {
|
97 |
-
@require_once ABSPATH . 'wp-login.php';
|
98 |
-
die;
|
99 |
-
}
|
100 |
-
}
|
101 |
-
|
102 |
-
if(isset($_POST['option']))
|
103 |
-
{
|
104 |
-
switch($_POST['option'])
|
105 |
-
{
|
106 |
-
case "mo_wpns_change_password":
|
107 |
-
$this->handle_change_password($_POST['username']
|
108 |
-
,$_POST['new_password'],$_POST['confirm_password']);
|
109 |
-
break;
|
110 |
-
}
|
111 |
-
}
|
112 |
-
|
113 |
-
}
|
114 |
-
|
115 |
-
function wooc_validate_user_captcha_register($username, $email, $validation_errors) {
|
116 |
-
|
117 |
-
if (empty($_POST['g-recaptcha-response'])) {
|
118 |
-
$validation_errors->add( 'woocommerce_recaptcha_error', __('Please verify the captcha', 'woocommerce' ) );
|
119 |
-
}
|
120 |
-
}
|
121 |
-
|
122 |
-
//Function to Handle Change Password Form
|
123 |
-
function handle_change_password($username,$newpassword,$confirmpassword)
|
124 |
-
{
|
125 |
-
global $mo2f_dirName;
|
126 |
-
$user = get_user_by("login",$username);
|
127 |
-
$error = wp_authenticate_username_password($user,$username,$newpassword);
|
128 |
-
|
129 |
-
if(is_wp_error($error))
|
130 |
-
{
|
131 |
-
$this->mo_wpns_login_failed($username);
|
132 |
-
return $error;
|
133 |
-
}
|
134 |
-
|
135 |
-
if($this->update_strong_password($username,$newpassword,$confirmpassword)=="success")
|
136 |
-
{
|
137 |
-
wp_set_auth_cookie($user->ID,false,false);
|
138 |
-
$this->mo_wpns_login_success($username);
|
139 |
-
wp_redirect(get_site_option('siteurl'),301);
|
140 |
-
}
|
141 |
-
}
|
142 |
-
|
143 |
-
|
144 |
-
//Function to Update User password
|
145 |
-
function update_strong_password($username,$newpassword,$confirmpassword)
|
146 |
-
{
|
147 |
-
global $mo2f_dirName;
|
148 |
-
|
149 |
-
if(strlen($newpassword) > 5 && preg_match("#[0-9]+#", $newpassword) && preg_match("#[a-zA-Z]+#", $newpassword)
|
150 |
-
&& preg_match('/[^a-zA-Z\d]/', $newpassword) && $newpassword==$confirmpassword)
|
151 |
-
{
|
152 |
-
$user = get_user_by("login",$username);
|
153 |
-
wp_set_password($_POST['new_password'],$user->ID);
|
154 |
-
return "success";
|
155 |
-
}
|
156 |
-
else
|
157 |
-
include $mo2f_dirName . 'controllers'.DIRECTORY_SEPARATOR.'change-password.php';
|
158 |
-
}
|
159 |
-
|
160 |
-
|
161 |
-
//Our custom logic for user authentication
|
162 |
-
function custom_authenticate($user, $username, $password)
|
163 |
-
{
|
164 |
-
global $moWpnsUtility;
|
165 |
-
$error = new WP_Error();
|
166 |
-
|
167 |
-
if(empty($username) && empty ($password))
|
168 |
-
return $error;
|
169 |
-
|
170 |
-
if(empty($username)) {
|
171 |
-
$error->add('empty_username', __('<strong>ERROR</strong>: Invalid username or Password.'));
|
172 |
-
}
|
173 |
-
if(empty($password)) {
|
174 |
-
$error->add('empty_password', __('<strong>ERROR</strong>: Invalid username or Password.'));
|
175 |
-
}
|
176 |
-
|
177 |
-
$user = wp_authenticate_username_password( $user, $username, $password );
|
178 |
-
|
179 |
-
if ( is_wp_error( $user ) ) {
|
180 |
-
$error->add('empty_username', __('<strong>ERROR</strong>: Invalid username or Password.'));
|
181 |
-
return $user;
|
182 |
-
}
|
183 |
-
if(empty($error->errors))
|
184 |
-
{
|
185 |
-
$user = get_user_by("login",$username);
|
186 |
-
|
187 |
-
if($user)
|
188 |
-
{
|
189 |
-
if(get_option('mo_wpns_activate_recaptcha_for_login'))
|
190 |
-
$recaptchaError = $moWpnsUtility->verify_recaptcha($_POST['g-recaptcha-response']);
|
191 |
-
|
192 |
-
if(!empty($recaptchaError->errors))
|
193 |
-
$error = $recaptchaError;
|
194 |
-
if(empty($error->errors)){
|
195 |
-
if(!
|
196 |
-
{
|
197 |
-
$this->mo_wpns_login_success($username);
|
198 |
-
}
|
199 |
-
return $user;
|
200 |
-
}
|
201 |
-
}
|
202 |
-
else
|
203 |
-
$error->add('empty_password', __('<strong>ERROR</strong>: Invalid Username or password.'));
|
204 |
-
|
205 |
-
}
|
206 |
-
|
207 |
-
return $error;
|
208 |
-
}
|
209 |
-
|
210 |
-
|
211 |
-
//Function to check user password
|
212 |
-
function check_password($user,$error,$password)
|
213 |
-
{
|
214 |
-
global $moWpnsUtility, $mo2f_dirName;
|
215 |
-
if ( wp_check_password( $password, $user->data->user_pass, $user->ID) )
|
216 |
-
{
|
217 |
-
if($moWpnsUtility->check_user_password_strength($user,$password,"")=="success")
|
218 |
-
{
|
219 |
-
if(
|
220 |
-
$this->mo_wpns_login_success($user->data->user_login);
|
221 |
-
return $user;
|
222 |
-
}
|
223 |
-
else
|
224 |
-
include $mo2f_dirName . 'controllers'.DIRECTORY_SEPARATOR.'change-password.php';
|
225 |
-
}
|
226 |
-
else
|
227 |
-
$error->add('empty_password', __('<strong>ERROR</strong>: Wrong password.'));
|
228 |
-
|
229 |
-
return $error;
|
230 |
-
}
|
231 |
-
|
232 |
-
|
233 |
-
//Function to handle successful user login
|
234 |
-
function mo_wpns_login_success($username)
|
235 |
-
{
|
236 |
-
global $moWpnsUtility;
|
237 |
-
|
238 |
-
$mo_wpns_config = new MoWpnsHandler();
|
239 |
-
$userIp = $moWpnsUtility->get_client_ip();
|
240 |
-
|
241 |
-
$mo_wpns_config->move_failed_transactions_to_past_failed($userIp);
|
242 |
-
|
243 |
-
if(get_option('mo_wpns_enable_unusual_activity_email_to_user'))
|
244 |
-
$moWpnsUtility->sendNotificationToUserForUnusualActivities($username, $userIp, MoWpnsConstants::LOGGED_IN_FROM_NEW_IP);
|
245 |
-
|
246 |
-
|
247 |
-
$mo_wpns_config->add_transactions($userIp, $username, MoWpnsConstants::LOGIN_TRANSACTION, MoWpnsConstants::SUCCESS);
|
248 |
-
|
249 |
-
if(isset($_POST['log']) && isset($_POST['pwd'])){
|
250 |
-
$username = $_POST['log'];
|
251 |
-
$pass = $_POST['pwd'];
|
252 |
-
$user = get_user_by('login',$username);
|
253 |
-
|
254 |
-
if(!
|
255 |
-
if(!class_miniorange_2fa_strong_password::mo2f_isStrongPasswd($pass, $username)){
|
256 |
-
if(!get_user_meta($user->ID,'password_strong?')){
|
257 |
-
update_user_meta($user->ID,'password_strong?', true);
|
258 |
-
$count = get_site_option('users_with_weak_pass');
|
259 |
-
$count = $count + 1;
|
260 |
-
update_site_option('users_with_weak_pass', $count);
|
261 |
-
}
|
262 |
-
}
|
263 |
-
else{
|
264 |
-
if(get_user_meta($user->ID,'password_strong?')){
|
265 |
-
$count = get_site_option('users_with_weak_pass');
|
266 |
-
$count = $count - 1;
|
267 |
-
update_site_option('users_with_weak_pass', $count);
|
268 |
-
}
|
269 |
-
delete_user_meta($user->ID,'password_strong?');
|
270 |
-
}
|
271 |
-
|
272 |
-
|
273 |
-
}
|
274 |
-
|
275 |
-
}
|
276 |
-
}
|
277 |
-
|
278 |
-
|
279 |
-
//Function to handle failed user login attempt
|
280 |
-
function mo_wpns_login_failed($username)
|
281 |
-
{
|
282 |
-
global $moWpnsUtility;
|
283 |
-
$userIp = $moWpnsUtility->get_client_ip();
|
284 |
-
|
285 |
-
if(empty($userIp) || empty($username) || !
|
286 |
-
return;
|
287 |
-
|
288 |
-
$mo_wpns_config = new MoWpnsHandler();
|
289 |
-
$isWhitelisted = $mo_wpns_config->is_whitelisted($userIp);
|
290 |
-
|
291 |
-
$mo_wpns_config->add_transactions($userIp, $username, MoWpnsConstants::LOGIN_TRANSACTION, MoWpnsConstants::FAILED);
|
292 |
-
|
293 |
-
if(!$isWhitelisted)
|
294 |
-
{
|
295 |
-
|
296 |
-
|
297 |
-
if(get_option('mo_wpns_enable_unusual_activity_email_to_user'))
|
298 |
-
$moWpnsUtility->sendNotificationToUserForUnusualActivities($username, $userIp, MoWpnsConstants::FAILED_LOGIN_ATTEMPTS_FROM_NEW_IP);
|
299 |
-
|
300 |
-
$failedAttempts = $mo_wpns_config->get_failed_attempts_count($userIp);
|
301 |
-
$allowedLoginAttepts = get_option('mo2f_allwed_login_attempts') ? get_option('mo2f_allwed_login_attempts') : 10;
|
302 |
-
|
303 |
-
if($allowedLoginAttepts - $failedAttempts<=0)
|
304 |
-
$this->handle_login_attempt_exceeded($userIp);
|
305 |
-
else if(
|
306 |
-
$this->show_limit_login_left($allowedLoginAttepts,$failedAttempts);
|
307 |
-
}
|
308 |
-
|
309 |
-
}
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
//Function to show number of attempts remaining
|
316 |
-
function show_limit_login_left($allowedLoginAttepts,$failedAttempts)
|
317 |
-
{
|
318 |
-
global $error;
|
319 |
-
$diff = $allowedLoginAttepts - $failedAttempts;
|
320 |
-
$error = "<br>You have <b>".$diff."</b> login attempts remaining.";
|
321 |
-
}
|
322 |
-
|
323 |
-
|
324 |
-
//Function to handle login limit exceeded
|
325 |
-
function handle_login_attempt_exceeded($userIp)
|
326 |
-
{
|
327 |
-
global $moWpnsUtility, $mo2f_dirName;
|
328 |
-
$mo_wpns_config = new MoWpnsHandler();
|
329 |
-
$mo_wpns_config->block_ip($userIp, MoWpnsConstants::LOGIN_ATTEMPTS_EXCEEDED, false);
|
330 |
-
include_once("mo-block.html");
|
331 |
-
exit;
|
332 |
-
|
333 |
-
}
|
334 |
-
|
335 |
-
function setup_registration_closed($user){
|
336 |
-
global $Mo2fdbQueries;
|
337 |
-
if ( isset( $_POST['option'] ) and $_POST['option'] == 'mo2f_registration_closed' ) {
|
338 |
-
$nonce = $_POST['mo2f_registration_closed_nonce'];
|
339 |
-
if ( ! wp_verify_nonce( $nonce, 'mo2f-registration-closed-nonce' ) ) {
|
340 |
-
$error = new WP_Error();
|
341 |
-
$error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
|
342 |
-
return $error;
|
343 |
-
} else {
|
344 |
-
if(!$Mo2fdbQueries->get_user_detail( 'mo_2factor_user_registration_status', $user->ID) =='MO_2_FACTOR_PLUGIN_SETTINGS'){
|
345 |
-
//$Mo2fdbQueries->update_user_details( $user->ID, array( 'mo_2factor_user_registration_status' => '' ) );
|
346 |
-
delete_user_meta( $user->ID, 'register_account_popup' );
|
347 |
-
|
348 |
-
}
|
349 |
-
}
|
350 |
-
}
|
351 |
-
}
|
352 |
-
|
353 |
-
}
|
354 |
-
new LoginHandler;
|
1 |
+
<?php
|
2 |
+
class LoginHandler
|
3 |
+
{
|
4 |
+
function __construct()
|
5 |
+
{
|
6 |
+
add_action( 'init' , array( $this, 'mo_wpns_init' ) );
|
7 |
+
if(get_site_option('mo2f_restrict_restAPI')){
|
8 |
+
add_action('rest_api_init' , array($this , 'mo_block_restAPI' ) );
|
9 |
+
}
|
10 |
+
if(MoWpnsUtility::get_mo2f_db_option('mo2f_enforce_strong_passswords', 'get_option') || get_option('mo_wpns_activate_recaptcha_for_login')
|
11 |
+
|| get_option('mo_wpns_activate_recaptcha_for_woocommerce_login'))
|
12 |
+
{
|
13 |
+
|
14 |
+
remove_filter('authenticate' , 'wp_authenticate_username_password' ,20 );
|
15 |
+
add_filter ('authenticate' , array( $this, 'custom_authenticate' ) ,1, 3 );
|
16 |
+
}
|
17 |
+
|
18 |
+
add_action('wp_login' , array( $this, 'mo_wpns_login_success' ) );
|
19 |
+
add_action('wp_login_failed' , array( $this, 'mo_wpns_login_failed' ) );
|
20 |
+
//add_action('auth_cookie_bad_username', array( $this, 'mo_wpns_login_failed' ) );
|
21 |
+
//add_action('auth_cookie_bad_hash' , array( $this, 'mo_wpns_login_failed' ) );
|
22 |
+
|
23 |
+
if(get_option('mo_wpns_activate_recaptcha_for_woocommerce_registration') ){
|
24 |
+
add_action( 'woocommerce_register_post', array( $this,'wooc_validate_user_captcha_register'), 1, 3);
|
25 |
+
}
|
26 |
+
}
|
27 |
+
|
28 |
+
function mo_block_restAPI(){
|
29 |
+
global $moWpnsUtility,$mo2f_dirName;
|
30 |
+
if(strpos($_SERVER['REQUEST_URI'], '/wp-json/wp/v2/users')){
|
31 |
+
include_once("mo-block.html");
|
32 |
+
exit;
|
33 |
+
}
|
34 |
+
}
|
35 |
+
|
36 |
+
function mo_wpns_init()
|
37 |
+
{
|
38 |
+
|
39 |
+
global $moWpnsUtility,$mo2f_dirName;
|
40 |
+
$WAFEnabled = get_option('WAFEnabled');
|
41 |
+
$WAFLevel = get_option('WAF');
|
42 |
+
|
43 |
+
$mo2f_scanner_parts = new mo2f_scanner_parts();
|
44 |
+
$mo2f_scanner_parts->file_cron_scan();
|
45 |
+
|
46 |
+
if($WAFEnabled == 1)
|
47 |
+
{
|
48 |
+
if($WAFLevel == 'PluginLevel')
|
49 |
+
{
|
50 |
+
if(file_exists($mo2f_dirName .'handler'.DIRECTORY_SEPARATOR.'WAF'.DIRECTORY_SEPARATOR.'mo-waf-plugin.php'))
|
51 |
+
include_once($mo2f_dirName .'handler'.DIRECTORY_SEPARATOR.'WAF'.DIRECTORY_SEPARATOR.'mo-waf-plugin.php');
|
52 |
+
else
|
53 |
+
{
|
54 |
+
//UNable to find file. Please reconfigure.
|
55 |
+
}
|
56 |
+
}
|
57 |
+
}
|
58 |
+
|
59 |
+
|
60 |
+
$userIp = $moWpnsUtility->get_client_ip();
|
61 |
+
$mo_wpns_config = new MoWpnsHandler();
|
62 |
+
$isWhitelisted = $mo_wpns_config->is_whitelisted($userIp);
|
63 |
+
$isIpBlocked = false;
|
64 |
+
if(!$isWhitelisted){
|
65 |
+
$isIpBlocked = $mo_wpns_config->is_ip_blocked_in_anyway($userIp);
|
66 |
+
}
|
67 |
+
if($isIpBlocked){
|
68 |
+
include_once("mo-block.html");
|
69 |
+
exit;
|
70 |
+
}
|
71 |
+
|
72 |
+
$requested_uri = $_SERVER["REQUEST_URI"];
|
73 |
+
$option = false;
|
74 |
+
if (is_user_logged_in()) { //chr?
|
75 |
+
if (strpos($requested_uri, chr(get_option('login_page_url'))) != false) {
|
76 |
+
wp_redirect(site_url());
|
77 |
+
die;
|
78 |
+
}
|
79 |
+
} else {
|
80 |
+
$option = get_option('mo_wpns_enable_rename_login_url');
|
81 |
+
}
|
82 |
+
if ($option) {
|
83 |
+
if (strpos($requested_uri, '/wp-login.php?checkemail=confirm') !== false) {
|
84 |
+
$requested_uri = str_replace("wp-login.php","",$requested_uri);
|
85 |
+
wp_redirect($requested_uri);
|
86 |
+
die;
|
87 |
+
} else if (strpos($requested_uri, '/wp-login.php?checkemail=registered') !== false) {
|
88 |
+
$requested_uri = str_replace("wp-login.php","",$requested_uri);
|
89 |
+
wp_redirect($requested_uri);
|
90 |
+
die;
|
91 |
+
}
|
92 |
+
|
93 |
+
if (strpos($requested_uri, '/wp-login.php') !== false) {
|
94 |
+
wp_redirect(site_url());
|
95 |
+
}
|
96 |
+
else if (strpos($requested_uri, get_option('login_page_url')) !== false ) {
|
97 |
+
@require_once ABSPATH . 'wp-login.php';
|
98 |
+
die;
|
99 |
+
}
|
100 |
+
}
|
101 |
+
|
102 |
+
if(isset($_POST['option']))
|
103 |
+
{
|
104 |
+
switch($_POST['option'])
|
105 |
+
{
|
106 |
+
case "mo_wpns_change_password":
|
107 |
+
$this->handle_change_password($_POST['username']
|
108 |
+
,$_POST['new_password'],$_POST['confirm_password']);
|
109 |
+
break;
|
110 |
+
}
|
111 |
+
}
|
112 |
+
|
113 |
+
}
|
114 |
+
|
115 |
+
function wooc_validate_user_captcha_register($username, $email, $validation_errors) {
|
116 |
+
|
117 |
+
if (empty($_POST['g-recaptcha-response'])) {
|
118 |
+
$validation_errors->add( 'woocommerce_recaptcha_error', __('Please verify the captcha', 'woocommerce' ) );
|
119 |
+
}
|
120 |
+
}
|
121 |
+
|
122 |
+
//Function to Handle Change Password Form
|
123 |
+
function handle_change_password($username,$newpassword,$confirmpassword)
|
124 |
+
{
|
125 |
+
global $mo2f_dirName;
|
126 |
+
$user = get_user_by("login",$username);
|
127 |
+
$error = wp_authenticate_username_password($user,$username,$newpassword);
|
128 |
+
|
129 |
+
if(is_wp_error($error))
|
130 |
+
{
|
131 |
+
$this->mo_wpns_login_failed($username);
|
132 |
+
return $error;
|
133 |
+
}
|
134 |
+
|
135 |
+
if($this->update_strong_password($username,$newpassword,$confirmpassword)=="success")
|
136 |
+
{
|
137 |
+
wp_set_auth_cookie($user->ID,false,false);
|
138 |
+
$this->mo_wpns_login_success($username);
|
139 |
+
wp_redirect(get_site_option('siteurl'),301);
|
140 |
+
}
|
141 |
+
}
|
142 |
+
|
143 |
+
|
144 |
+
//Function to Update User password
|
145 |
+
function update_strong_password($username,$newpassword,$confirmpassword)
|
146 |
+
{
|
147 |
+
global $mo2f_dirName;
|
148 |
+
|
149 |
+
if(strlen($newpassword) > 5 && preg_match("#[0-9]+#", $newpassword) && preg_match("#[a-zA-Z]+#", $newpassword)
|
150 |
+
&& preg_match('/[^a-zA-Z\d]/', $newpassword) && $newpassword==$confirmpassword)
|
151 |
+
{
|
152 |
+
$user = get_user_by("login",$username);
|
153 |
+
wp_set_password($_POST['new_password'],$user->ID);
|
154 |
+
return "success";
|
155 |
+
}
|
156 |
+
else
|
157 |
+
include $mo2f_dirName . 'controllers'.DIRECTORY_SEPARATOR.'change-password.php';
|
158 |
+
}
|
159 |
+
|
160 |
+
|
161 |
+
//Our custom logic for user authentication
|
162 |
+
function custom_authenticate($user, $username, $password)
|
163 |
+
{
|
164 |
+
global $moWpnsUtility;
|
165 |
+
$error = new WP_Error();
|
166 |
+
|
167 |
+
if(empty($username) && empty ($password))
|
168 |
+
return $error;
|
169 |
+
|
170 |
+
if(empty($username)) {
|
171 |
+
$error->add('empty_username', __('<strong>ERROR</strong>: Invalid username or Password.'));
|
172 |
+
}
|
173 |
+
if(empty($password)) {
|
174 |
+
$error->add('empty_password', __('<strong>ERROR</strong>: Invalid username or Password.'));
|
175 |
+
}
|
176 |
+
|
177 |
+
$user = wp_authenticate_username_password( $user, $username, $password );
|
178 |
+
|
179 |
+
if ( is_wp_error( $user ) ) {
|
180 |
+
$error->add('empty_username', __('<strong>ERROR</strong>: Invalid username or Password.'));
|
181 |
+
return $user;
|
182 |
+
}
|
183 |
+
if(empty($error->errors))
|
184 |
+
{
|
185 |
+
$user = get_user_by("login",$username);
|
186 |
+
|
187 |
+
if($user)
|
188 |
+
{
|
189 |
+
if(get_option('mo_wpns_activate_recaptcha_for_login'))
|
190 |
+
$recaptchaError = $moWpnsUtility->verify_recaptcha($_POST['g-recaptcha-response']);
|
191 |
+
|
192 |
+
if(!empty($recaptchaError->errors))
|
193 |
+
$error = $recaptchaError;
|
194 |
+
if(empty($error->errors)){
|
195 |
+
if(!MoWpnsUtility::get_mo2f_db_option('mo2f_enable_brute_force', 'get_option'))
|
196 |
+
{
|
197 |
+
$this->mo_wpns_login_success($username);
|
198 |
+
}
|
199 |
+
return $user;
|
200 |
+
}
|
201 |
+
}
|
202 |
+
else
|
203 |
+
$error->add('empty_password', __('<strong>ERROR</strong>: Invalid Username or password.'));
|
204 |
+
|
205 |
+
}
|
206 |
+
|
207 |
+
return $error;
|
208 |
+
}
|
209 |
+
|
210 |
+
|
211 |
+
//Function to check user password
|
212 |
+
function check_password($user,$error,$password)
|
213 |
+
{
|
214 |
+
global $moWpnsUtility, $mo2f_dirName;
|
215 |
+
if ( wp_check_password( $password, $user->data->user_pass, $user->ID) )
|
216 |
+
{
|
217 |
+
if($moWpnsUtility->check_user_password_strength($user,$password,"")=="success")
|
218 |
+
{
|
219 |
+
if(MoWpnsUtility::get_mo2f_db_option('mo2f_enable_brute_force', 'get_option'))
|
220 |
+
$this->mo_wpns_login_success($user->data->user_login);
|
221 |
+
return $user;
|
222 |
+
}
|
223 |
+
else
|
224 |
+
include $mo2f_dirName . 'controllers'.DIRECTORY_SEPARATOR.'change-password.php';
|
225 |
+
}
|
226 |
+
else
|
227 |
+
$error->add('empty_password', __('<strong>ERROR</strong>: Wrong password.'));
|
228 |
+
|
229 |
+
return $error;
|
230 |
+
}
|
231 |
+
|
232 |
+
|
233 |
+
//Function to handle successful user login
|
234 |
+
function mo_wpns_login_success($username)
|
235 |
+
{
|
236 |
+
global $moWpnsUtility;
|
237 |
+
|
238 |
+
$mo_wpns_config = new MoWpnsHandler();
|
239 |
+
$userIp = $moWpnsUtility->get_client_ip();
|
240 |
+
|
241 |
+
$mo_wpns_config->move_failed_transactions_to_past_failed($userIp);
|
242 |
+
|
243 |
+
if(get_option('mo_wpns_enable_unusual_activity_email_to_user'))
|
244 |
+
$moWpnsUtility->sendNotificationToUserForUnusualActivities($username, $userIp, MoWpnsConstants::LOGGED_IN_FROM_NEW_IP);
|
245 |
+
|
246 |
+
|
247 |
+
$mo_wpns_config->add_transactions($userIp, $username, MoWpnsConstants::LOGIN_TRANSACTION, MoWpnsConstants::SUCCESS);
|
248 |
+
|
249 |
+
if(isset($_POST['log']) && isset($_POST['pwd'])){
|
250 |
+
$username = $_POST['log'];
|
251 |
+
$pass = $_POST['pwd'];
|
252 |
+
$user = get_user_by('login',$username);
|
253 |
+
|
254 |
+
if(!MoWpnsUtility::get_mo2f_db_option('mo2f_enforce_strong_passswords', 'get_option')){
|
255 |
+
if(!class_miniorange_2fa_strong_password::mo2f_isStrongPasswd($pass, $username)){
|
256 |
+
if(!get_user_meta($user->ID,'password_strong?')){
|
257 |
+
update_user_meta($user->ID,'password_strong?', true);
|
258 |
+
$count = get_site_option('users_with_weak_pass');
|
259 |
+
$count = $count + 1;
|
260 |
+
update_site_option('users_with_weak_pass', $count);
|
261 |
+
}
|
262 |
+
}
|
263 |
+
else{
|
264 |
+
if(get_user_meta($user->ID,'password_strong?')){
|
265 |
+
$count = get_site_option('users_with_weak_pass');
|
266 |
+
$count = $count - 1;
|
267 |
+
update_site_option('users_with_weak_pass', $count);
|
268 |
+
}
|
269 |
+
delete_user_meta($user->ID,'password_strong?');
|
270 |
+
}
|
271 |
+
|
272 |
+
|
273 |
+
}
|
274 |
+
|
275 |
+
}
|
276 |
+
}
|
277 |
+
|
278 |
+
|
279 |
+
//Function to handle failed user login attempt
|
280 |
+
function mo_wpns_login_failed($username)
|
281 |
+
{
|
282 |
+
global $moWpnsUtility;
|
283 |
+
$userIp = $moWpnsUtility->get_client_ip();
|
284 |
+
|
285 |
+
if(empty($userIp) || empty($username) || !MoWpnsUtility::get_mo2f_db_option('mo2f_enable_brute_force', 'get_option'))
|
286 |
+
return;
|
287 |
+
|
288 |
+
$mo_wpns_config = new MoWpnsHandler();
|
289 |
+
$isWhitelisted = $mo_wpns_config->is_whitelisted($userIp);
|
290 |
+
|
291 |
+
$mo_wpns_config->add_transactions($userIp, $username, MoWpnsConstants::LOGIN_TRANSACTION, MoWpnsConstants::FAILED);
|
292 |
+
|
293 |
+
if(!$isWhitelisted)
|
294 |
+
{
|
295 |
+
|
296 |
+
|
297 |
+
if(get_option('mo_wpns_enable_unusual_activity_email_to_user'))
|
298 |
+
$moWpnsUtility->sendNotificationToUserForUnusualActivities($username, $userIp, MoWpnsConstants::FAILED_LOGIN_ATTEMPTS_FROM_NEW_IP);
|
299 |
+
|
300 |
+
$failedAttempts = $mo_wpns_config->get_failed_attempts_count($userIp);
|
301 |
+
$allowedLoginAttepts = get_option('mo2f_allwed_login_attempts') ? get_option('mo2f_allwed_login_attempts') : 10;
|
302 |
+
|
303 |
+
if($allowedLoginAttepts - $failedAttempts<=0)
|
304 |
+
$this->handle_login_attempt_exceeded($userIp);
|
305 |
+
else if(MoWpnsUtility::get_mo2f_db_option('mo2f_show_remaining_attempts', 'get_option'))
|
306 |
+
$this->show_limit_login_left($allowedLoginAttepts,$failedAttempts);
|
307 |
+
}
|
308 |
+
|
309 |
+
}
|
310 |
+
|
311 |
+
|
312 |
+
|
313 |
+
|
314 |
+
|
315 |
+
//Function to show number of attempts remaining
|
316 |
+
function show_limit_login_left($allowedLoginAttepts,$failedAttempts)
|
317 |
+
{
|
318 |
+
global $error;
|
319 |
+
$diff = $allowedLoginAttepts - $failedAttempts;
|
320 |
+
$error = "<br>You have <b>".$diff."</b> login attempts remaining.";
|
321 |
+
}
|
322 |
+
|
323 |
+
|
324 |
+
//Function to handle login limit exceeded
|
325 |
+
function handle_login_attempt_exceeded($userIp)
|
326 |
+
{
|
327 |
+
global $moWpnsUtility, $mo2f_dirName;
|
328 |
+
$mo_wpns_config = new MoWpnsHandler();
|
329 |
+
$mo_wpns_config->block_ip($userIp, MoWpnsConstants::LOGIN_ATTEMPTS_EXCEEDED, false);
|
330 |
+
include_once("mo-block.html");
|
331 |
+
exit;
|
332 |
+
|
333 |
+
}
|
334 |
+
|
335 |
+
function setup_registration_closed($user){
|
336 |
+
global $Mo2fdbQueries;
|
337 |
+
if ( isset( $_POST['option'] ) and $_POST['option'] == 'mo2f_registration_closed' ) {
|
338 |
+
$nonce = $_POST['mo2f_registration_closed_nonce'];
|
339 |
+
if ( ! wp_verify_nonce( $nonce, 'mo2f-registration-closed-nonce' ) ) {
|
340 |
+
$error = new WP_Error();
|
341 |
+
$error->add( 'empty_username', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Request.' ) );
|
342 |
+
return $error;
|
343 |
+
} else {
|
344 |
+
if(!$Mo2fdbQueries->get_user_detail( 'mo_2factor_user_registration_status', $user->ID) =='MO_2_FACTOR_PLUGIN_SETTINGS'){
|
345 |
+
//$Mo2fdbQueries->update_user_details( $user->ID, array( 'mo_2factor_user_registration_status' => '' ) );
|
346 |
+
delete_user_meta( $user->ID, 'register_account_popup' );
|
347 |
+
|
348 |
+
}
|
349 |
+
}
|
350 |
+
}
|
351 |
+
}
|
352 |
+
|
353 |
+
}
|
354 |
+
new LoginHandler;
|
handler/mo-block.html
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
-
<img src="data:image/jpeg;base64,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" style="margin-left: 5em;width: 12em;margin-top: 1px;">
|
2 |
-
<div>
|
3 |
-
<img src="data:image/jpeg;base64,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" style="width: 16em;margin-left: 52em;margin-top: 63px;">
|
4 |
-
<div><h1 style="font-size: 90px;margin-top: -2em;margin-left: 401PX;">403</h1></div>
|
5 |
-
<div><h2 style="font-size: 54px;margin-left: 557px;margin-top: -140px;" >Forbidden</h2></div>
|
6 |
-
<div><h6 style="font-size: 21px;margin-left: 19em;margin-top: 7em;color: red;">Your IP has been blocked. Please Contact your Administrator.<h6></div>
|
7 |
-
<h6 style="font-size: 21px;margin-left:20em;">For more information please contact miniorange <a href="https://faq.miniorange.com/">FAQ'S</h6>
|
8 |
-
</div>
|
9 |
-
</div>
|
1 |
+
<img src="data:image/jpeg;base64,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" style="margin-left: 5em;width: 12em;margin-top: 1px;">
|
2 |
+
<div>
|
3 |
+
<img src="data:image/jpeg;base64,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" style="width: 16em;margin-left: 52em;margin-top: 63px;">
|
4 |
+
<div><h1 style="font-size: 90px;margin-top: -2em;margin-left: 401PX;">403</h1></div>
|
5 |
+
<div><h2 style="font-size: 54px;margin-left: 557px;margin-top: -140px;" >Forbidden</h2></div>
|
6 |
+
<div><h6 style="font-size: 21px;margin-left: 19em;margin-top: 7em;color: red;">Your IP has been blocked. Please Contact your Administrator.<h6></div>
|
7 |
+
<h6 style="font-size: 21px;margin-left:20em;">For more information please contact miniorange <a href="https://faq.miniorange.com/">FAQ'S</h6>
|
8 |
+
</div>
|
9 |
+
</div>
|
handler/mo-waf-plugin.php
CHANGED
@@ -1,410 +1,410 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
$dir =dirname(__FILE__);
|
4 |
-
$dir = str_replace('\\', "/", $dir);
|
5 |
-
$sqlInjectionFile = $dir.'/signature/APSQLI.php';
|
6 |
-
$xssFile = $dir.'/signature/APXSS.php';
|
7 |
-
$lfiFile = $dir.'/signature/APLFI.php';
|
8 |
-
$configfilepath = explode('wp-content', $dir);
|
9 |
-
$configfile = $configfilepath[0].'/wp-includes/mo-waf-config.php';
|
10 |
-
|
11 |
-
$missingFile = 0;
|
12 |
-
|
13 |
-
if(file_exists($configfile))
|
14 |
-
{
|
15 |
-
include($configfile);
|
16 |
-
}
|
17 |
-
else
|
18 |
-
{
|
19 |
-
$missingFile = 1;
|
20 |
-
}
|
21 |
-
include_once($sqlInjectionFile);
|
22 |
-
include_once($xssFile);
|
23 |
-
include_once($lfiFile);
|
24 |
-
|
25 |
-
|
26 |
-
global $wpdb;
|
27 |
-
$ipaddress = '';
|
28 |
-
if (isset($_SERVER['HTTP_CLIENT_IP']))
|
29 |
-
$ipaddress = $_SERVER['HTTP_CLIENT_IP'];
|
30 |
-
else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
|
31 |
-
$ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
|
32 |
-
else if(isset($_SERVER['HTTP_X_FORWARDED']))
|
33 |
-
$ipaddress = $_SERVER['HTTP_X_FORWARDED'];
|
34 |
-
else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
|
35 |
-
$ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
|
36 |
-
else if(isset($_SERVER['HTTP_FORWARDED']))
|
37 |
-
$ipaddress = $_SERVER['HTTP_FORWARDED'];
|
38 |
-
else if(isset($_SERVER['REMOTE_ADDR']))
|
39 |
-
$ipaddress = $_SERVER['REMOTE_ADDR'];
|
40 |
-
else
|
41 |
-
$ipaddress = 'UNKNOWN';
|
42 |
-
|
43 |
-
$query = 'select * from '.$wpdb->base_prefix.'mo2f_network_blocked_ips where ip_address="'.$ipaddress.'";';
|
44 |
-
$results = $wpdb->get_results($query);
|
45 |
-
|
46 |
-
if(sizeof($results)!=0)
|
47 |
-
{
|
48 |
-
$query = 'select * from '.$wpdb->base_prefix.'mo2f_network_whitelisted_ips where ip_address="'.$ipaddress.'";';
|
49 |
-
$results1 = $wpdb->get_results($query);
|
50 |
-
if(sizeof($results1)!=0)
|
51 |
-
{
|
52 |
-
//IP whitelisted
|
53 |
-
}
|
54 |
-
else
|
55 |
-
{
|
56 |
-
header('HTTP/1.1 403 Forbidden');
|
57 |
-
include_once("mo-block.html");
|
58 |
-
exit;
|
59 |
-
}
|
60 |
-
}
|
61 |
-
$dir_name = dirname(__FILE__);
|
62 |
-
$dir_name1 = explode('wp-content', $dir_name);
|
63 |
-
$dir_name = $dir_name1[0];
|
64 |
-
$filepath = str_replace('\\', '/', $dir_name1[0]);
|
65 |
-
$fileName = $filepath.'/wp-includes/mo-waf-config.php';
|
66 |
-
|
67 |
-
if($missingFile==1)
|
68 |
-
{
|
69 |
-
if(!file_exists($fileName))
|
70 |
-
{
|
71 |
-
$file = fopen($fileName, "a+");
|
72 |
-
$string = "<?php".PHP_EOL;
|
73 |
-
$string .= '$SQL = '.get_option("SQLInjection").';'.PHP_EOL;
|
74 |
-
$string .= '$XSS = '.get_option("XSSAttack").';'.PHP_EOL;
|
75 |
-
$string .= '$RFI = '.get_option("RFIAttack").';'.PHP_EOL;
|
76 |
-
$string .= '$LFI = '.get_option("LFIAttack").';'.PHP_EOL;
|
77 |
-
$string .= '$RCE = '.get_option("RCEAttack").';'.PHP_EOL;
|
78 |
-
$string .= '$RateLimiting = '.get_option("Rate_limiting").';'.PHP_EOL;
|
79 |
-
$string .= '$RequestsPMin = '.get_option("Rate_request").';'.PHP_EOL;
|
80 |
-
|
81 |
-
if(get_option('actionRateL') == 0)
|
82 |
-
$string .= '$actionRateL = "ThrottleIP";'.PHP_EOL;
|
83 |
-
else
|
84 |
-
$string .= '$actionRateL = "BlockIP";'.PHP_EOL;
|
85 |
-
|
86 |
-
$string .= '?>'.PHP_EOL;
|
87 |
-
fwrite($file, $string);
|
88 |
-
fclose($file);
|
89 |
-
|
90 |
-
}
|
91 |
-
|
92 |
-
}
|
93 |
-
include_once($fileName);
|
94 |
-
|
95 |
-
|
96 |
-
if($RateLimiting == 1)
|
97 |
-
{
|
98 |
-
$time = 60;
|
99 |
-
$reqLimit = $RequestsPMin;
|
100 |
-
|
101 |
-
$query = "delete from ".$wpdb->base_prefix."wpns_ip_rate_details where time<".(time()-$time);
|
102 |
-
$results = $wpdb->get_results($query);
|
103 |
-
|
104 |
-
$query = "insert into ".$wpdb->base_prefix."wpns_ip_rate_details values('".$ipaddress."',".time().");";
|
105 |
-
$results = $wpdb->get_results($query);
|
106 |
-
|
107 |
-
$query = "select count(*) as count from ".$wpdb->base_prefix."wpns_ip_rate_details where ip='".$ipaddress."';";
|
108 |
-
$results = $wpdb->get_results($query);
|
109 |
-
|
110 |
-
if($results[0]->count>=$reqLimit)
|
111 |
-
{
|
112 |
-
$action = $actionRateL;
|
113 |
-
if($action == 'ThrottleIP')
|
114 |
-
{
|
115 |
-
$query = "select time from ".$wpdb->base_prefix."wpns_attack_logs where ip ='".$ipaddress."' ORDER BY time DESC LIMIT 1;";
|
116 |
-
$results = $wpdb->get_results($query);
|
117 |
-
$current_time = time();
|
118 |
-
if($results[0]->time < $current_time-60)
|
119 |
-
{
|
120 |
-
$query = "insert into ".$wpdb->base_prefix."wpns_attack_logs values('".$ipaddress."','Rate Limit',".time().",'".MoWpnsConstants::RATE_LIMIT_EXCEEDED."');";
|
121 |
-
$results = $wpdb->get_results($query);
|
122 |
-
}
|
123 |
-
header('HTTP/1.1 403 Forbidden');
|
124 |
-
include_once("mo-error.html");
|
125 |
-
exit;
|
126 |
-
}
|
127 |
-
else
|
128 |
-
{
|
129 |
-
$query = "select time from ".$wpdb->base_prefix."wpns_attack_logs where ip ='".$ipaddress."' ORDER BY time DESC LIMIT 1;";
|
130 |
-
$results = $wpdb->get_results($query);
|
131 |
-
$current_time = time();
|
132 |
-
if($results[0]->time < $current_time-60)
|
133 |
-
{
|
134 |
-
$query = "insert into ".$wpdb->base_prefix."wpns_attack_logs values('".$ipaddress."','Rate Limit',".time().",'".MoWpnsConstants::RATE_LIMIT_EXCEEDED."');";
|
135 |
-
$results = $wpdb->get_results($query);
|
136 |
-
}
|
137 |
-
$query = 'select * from '.$wpdb->base_prefix.'mo2f_network_whitelisted_ips where ip_address="'.$ipaddress.'";';
|
138 |
-
$results1 = $wpdb->get_results($query);
|
139 |
-
if(sizeof($results1)!=0)
|
140 |
-
{
|
141 |
-
//IP whitelisted
|
142 |
-
}
|
143 |
-
else
|
144 |
-
{
|
145 |
-
$query ="insert into ".$wpdb->base_prefix."mo2f_network_blocked_ips values(NULL,'".$ipaddress."','Rate limit exceed',NULL,".current_time( 'timestamp' ).");";
|
146 |
-
$results =$wpdb->get_results($query);
|
147 |
-
}
|
148 |
-
header('HTTP/1.1 403 Forbidden');
|
149 |
-
include_once("mo-error.html");
|
150 |
-
exit;
|
151 |
-
}
|
152 |
-
}
|
153 |
-
}
|
154 |
-
$attack = array();
|
155 |
-
if($SQL==1)
|
156 |
-
{
|
157 |
-
array_push($attack,"SQL");
|
158 |
-
}
|
159 |
-
if($XSS==1)
|
160 |
-
{
|
161 |
-
array_push($attack,"XSS");
|
162 |
-
}
|
163 |
-
if($LFI==1)
|
164 |
-
{
|
165 |
-
array_push($attack,"LFI");
|
166 |
-
}
|
167 |
-
|
168 |
-
$attackC = $attack;
|
169 |
-
$ParanoiaLevel = 1;
|
170 |
-
$annomalyS = 0;
|
171 |
-
$SQLScore = 0;
|
172 |
-
$XSSScore = 0;
|
173 |
-
$limitAttack = get_option('limitAttack');
|
174 |
-
|
175 |
-
|
176 |
-
foreach ($attackC as $key1 => $value1) {
|
177 |
-
for($lev=1;$lev<=$ParanoiaLevel;$lev++)
|
178 |
-
{
|
179 |
-
if(isset($regex[$value1][$lev]))
|
180 |
-
{
|
181 |
-
for($i=0;$i<sizeof($regex[$value1][$lev]);$i++)
|
182 |
-
{
|
183 |
-
foreach ($_REQUEST as $key => $value) {
|
184 |
-
if($regex[$value1][$lev][$i] != "")
|
185 |
-
{
|
186 |
-
if(strpos($regex[$value1][$lev][$i], '/') == false)
|
187 |
-
{
|
188 |
-
if(is_string($value))
|
189 |
-
{
|
190 |
-
|
191 |
-
if(preg_match('/'.$regex[$value1][$lev][$i].'/', $value))
|
192 |
-
{
|
193 |
-
$scoreValue = 0;
|
194 |
-
|
195 |
-
$annomalyMS = $score[$value1][$lev][$i];
|
196 |
-
if(strcmp($annomalyMS,"CRITICAL")==0)
|
197 |
-
{
|
198 |
-
$scoreValue = 5;
|
199 |
-
}
|
200 |
-
|
201 |
-
elseif(strcmp($annomalyMS,"WARNING")==0)
|
202 |
-
{
|
203 |
-
$scoreValue = 3;
|
204 |
-
}
|
205 |
-
elseif(strcmp($annomalyMS,"ERROR")==0)
|
206 |
-
{
|
207 |
-
$scoreValue = 4;
|
208 |
-
}
|
209 |
-
elseif(strcmp($annomalyMS,"NOTICE")==0)
|
210 |
-
{
|
211 |
-
$scoreValue =2;
|
212 |
-
}
|
213 |
-
|
214 |
-
if($value1 == "SQL")
|
215 |
-
{
|
216 |
-
$SQLScore += $scoreValue;
|
217 |
-
|
218 |
-
}
|
219 |
-
elseif ($value1 == "XSS")
|
220 |
-
{
|
221 |
-
$XSSScore += $scoreValue;
|
222 |
-
}
|
223 |
-
else
|
224 |
-
{
|
225 |
-
$annomalyS += $scoreValue;
|
226 |
-
}
|
227 |
-
if($annomalyS>=5 || $SQLScore>=10 || $XSSScore >=10)
|
228 |
-
{
|
229 |
-
$value = htmlspecialchars($value);
|
230 |
-
$query = 'insert into '.$wpdb->base_prefix.'wpns_attack_logs values ("'.$ipaddress.'","'.$value1.'",'.time().',"'.$value.'");';
|
231 |
-
$results = $wpdb->get_results($query);
|
232 |
-
$query = "select count(*) as count from ".$wpdb->base_prefix."wpns_attack_logs where ip='".$ipaddress."' and input != '".MoWpnsConstants::RATE_LIMIT_EXCEEDED."';";
|
233 |
-
$results = $wpdb->get_results($query);
|
234 |
-
if($results[0]->count>$limitAttack)
|
235 |
-
{
|
236 |
-
$query = 'select * from '.$wpdb->base_prefix.'mo2f_network_whitelisted_ips where ip_address="'.$ipaddress.'";';
|
237 |
-
$results = $wpdb->get_results($query);
|
238 |
-
if(sizeof($results)!=0)
|
239 |
-
{
|
240 |
-
//IP whitelisted
|
241 |
-
}
|
242 |
-
else
|
243 |
-
{
|
244 |
-
$query ="insert into ".$wpdb->base_prefix."mo2f_network_blocked_ips values(NULL,'".$ipaddress."','attack limit exceed',NULL,".current_time( 'timestamp' ).");";
|
245 |
-
$results =$wpdb->get_results($query);
|
246 |
-
}
|
247 |
-
}
|
248 |
-
header('HTTP/1.1 403 Forbidden');
|
249 |
-
include_once("mo-error.html");
|
250 |
-
exit;
|
251 |
-
}
|
252 |
-
|
253 |
-
}
|
254 |
-
}
|
255 |
-
}
|
256 |
-
else if (strpos($regex[$value1][$lev][$i], '#') == false) {
|
257 |
-
if(is_string($value))
|
258 |
-
{
|
259 |
-
|
260 |
-
if(preg_match('#'.$regex[$value1][$lev][$i].'#', $value))
|
261 |
-
{
|
262 |
-
$scoreValue = 0;
|
263 |
-
$annomalyMS = $score[$value1][$lev][$i];
|
264 |
-
if(strcmp($annomalyMS,"CRITICAL")==0)
|
265 |
-
{
|
266 |
-
$scoreValue = 5;
|
267 |
-
}
|
268 |
-
|
269 |
-
elseif(strcmp($annomalyMS,"WARNING")==0)
|
270 |
-
{
|
271 |
-
$scoreValue = 3;
|
272 |
-
}
|
273 |
-
elseif(strcmp($annomalyMS,"ERROR")==0)
|
274 |
-
{
|
275 |
-
$scoreValue = 4;
|
276 |
-
}
|
277 |
-
elseif(strcmp($annomalyMS,"NOTICE")==0)
|
278 |
-
{
|
279 |
-
$scoreValue =2;
|
280 |
-
}
|
281 |
-
|
282 |
-
|
283 |
-
if($value1 == "SQL")
|
284 |
-
{
|
285 |
-
$SQLScore += $scoreValue;
|
286 |
-
|
287 |
-
}
|
288 |
-
elseif ($value1 == "XSS")
|
289 |
-
{
|
290 |
-
$XSSScore += $scoreValue;
|
291 |
-
}
|
292 |
-
else
|
293 |
-
{
|
294 |
-
$annomalyS += $scoreValue;
|
295 |
-
}
|
296 |
-
if($annomalyS>=5 || $SQLScore>=10 || $XSSScore >=10)
|
297 |
-
{
|
298 |
-
$value = htmlspecialchars($value);
|
299 |
-
$query = 'insert into '.$wpdb->base_prefix.'wpns_attack_logs values ("'.$ipaddress.'","'.$value1.'",'.time().',"'.$value.'");';
|
300 |
-
$results = $wpdb->get_results($query);
|
301 |
-
$query = "select count(*) as count from ".$wpdb->base_prefix."wpns_attack_logs where ip='".$ipaddress."' and input != '".MoWpnsConstants::RATE_LIMIT_EXCEEDED."';";
|
302 |
-
$results = $wpdb->get_results($query);
|
303 |
-
|
304 |
-
if($results[0]->count>$limitAttack)
|
305 |
-
{
|
306 |
-
$query = 'select * from '.$wpdb->base_prefix.'mo2f_network_whitelisted_ips where ip_address="'.$ipaddress.'";';
|
307 |
-
$results = $wpdb->get_results($query);
|
308 |
-
if(sizeof($results)!=0)
|
309 |
-
{
|
310 |
-
//IP whitelisted
|
311 |
-
}
|
312 |
-
else
|
313 |
-
{
|
314 |
-
$query ="insert into ".$wpdb->base_prefix."mo2f_network_blocked_ips values(NULL,'".$ipaddress."','attack limit exceed',NULL,".current_time( 'timestamp' ).");";
|
315 |
-
$results =$wpdb->get_results($query);
|
316 |
-
}
|
317 |
-
}
|
318 |
-
header('HTTP/1.1 403 Forbidden');
|
319 |
-
include_once("mo-error.html");
|
320 |
-
exit;
|
321 |
-
}
|
322 |
-
}
|
323 |
-
}
|
324 |
-
}
|
325 |
-
|
326 |
-
elseif (strpos($regex[$value1][$lev][$i], '@') == false) {
|
327 |
-
if(is_string($value))
|
328 |
-
{
|
329 |
-
|
330 |
-
if(preg_match('@'.$regex[$value1][$lev][$i].'@', $value))
|
331 |
-
{
|
332 |
-
$scoreValue = 0;
|
333 |
-
$annomalyMS = $score[$value1][$lev][$i];
|
334 |
-
if(strcmp($annomalyMS,"CRITICAL")==0)
|
335 |
-
{
|
336 |
-
$scoreValue = 5;
|
337 |
-
}
|
338 |
-
|
339 |
-
elseif(strcmp($annomalyMS,"WARNING")==0)
|
340 |
-
{
|
341 |
-
$scoreValue = 3;
|
342 |
-
}
|
343 |
-
elseif(strcmp($annomalyMS,"ERROR")==0)
|
344 |
-
{
|
345 |
-
$scoreValue = 4;
|
346 |
-
}
|
347 |
-
elseif(strcmp($annomalyMS,"NOTICE")==0)
|
348 |
-
{
|
349 |
-
$scoreValue =2;
|
350 |
-
}
|
351 |
-
|
352 |
-
|
353 |
-
if($value1 == "SQL")
|
354 |
-
{
|
355 |
-
$SQLScore += $scoreValue;
|
356 |
-
|
357 |
-
}
|
358 |
-
elseif ($value1 == "XSS")
|
359 |
-
{
|
360 |
-
$XSSScore += $scoreValue;
|
361 |
-
}
|
362 |
-
else
|
363 |
-
{
|
364 |
-
$annomalyS += $scoreValue;
|
365 |
-
}
|
366 |
-
if($annomalyS>=5 || $SQLScore>=10 || $XSSScore >=10)
|
367 |
-
{
|
368 |
-
$value = htmlspecialchars($value);
|
369 |
-
$query = 'insert into '.$wpdb->base_prefix.'wpns_attack_logs values ("'.$ipaddress.'","'.$value1.'",'.time().',"'.$value.'");';
|
370 |
-
$results = $wpdb->get_results($query);
|
371 |
-
$query = "select count(*) as count from ".$wpdb->base_prefix."wpns_attack_logs where ip='".$ipaddress."' and input != '".MoWpnsConstants::RATE_LIMIT_EXCEEDED."';";
|
372 |
-
$results = $wpdb->get_results($query);
|
373 |
-
|
374 |
-
if($results[0]->count>$limitAttack)
|
375 |
-
{
|
376 |
-
$query = 'select * from '.$wpdb->base_prefix.'mo2f_network_whitelisted_ips where ip_address="'.$ipaddress.'";';
|
377 |
-
$results = $wpdb->get_results($query);
|
378 |
-
if(sizeof($results)!=0)
|
379 |
-
{
|
380 |
-
//IP whitelisted
|
381 |
-
}
|
382 |
-
else
|
383 |
-
{
|
384 |
-
$query ="insert into ".$wpdb->base_prefix."mo2f_network_blocked_ips values(NULL,'".$ipaddress."','attack limit exceed',NULL,".current_time( 'timestamp' ).");";
|
385 |
-
$results =$wpdb->get_results($query);
|
386 |
-
}
|
387 |
-
}
|
388 |
-
header('HTTP/1.1 403 Forbidden');
|
389 |
-
include_once("mo-error.html");
|
390 |
-
exit;
|
391 |
-
}
|
392 |
-
}
|
393 |
-
}
|
394 |
-
|
395 |
-
}
|
396 |
-
|
397 |
-
}
|
398 |
-
}
|
399 |
-
|
400 |
-
}
|
401 |
-
}
|
402 |
-
|
403 |
-
}
|
404 |
-
}
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
?>
|
1 |
+
<?php
|
2 |
+
|
3 |
+
$dir =dirname(__FILE__);
|
4 |
+
$dir = str_replace('\\', "/", $dir);
|
5 |
+
$sqlInjectionFile = $dir.'/signature/APSQLI.php';
|
6 |
+
$xssFile = $dir.'/signature/APXSS.php';
|
7 |
+
$lfiFile = $dir.'/signature/APLFI.php';
|
8 |
+
$configfilepath = explode('wp-content', $dir);
|
9 |
+
$configfile = $configfilepath[0].'/wp-includes/mo-waf-config.php';
|
10 |
+
|
11 |
+
$missingFile = 0;
|
12 |
+
|
13 |
+
if(file_exists($configfile))
|
14 |
+
{
|
15 |
+
include($configfile);
|
16 |
+
}
|
17 |
+
else
|
18 |
+
{
|
19 |
+
$missingFile = 1;
|
20 |
+
}
|
21 |
+
include_once($sqlInjectionFile);
|
22 |
+
include_once($xssFile);
|
23 |
+
include_once($lfiFile);
|
24 |
+
|
25 |
+
|
26 |
+
global $wpdb;
|
27 |
+
$ipaddress = '';
|
28 |
+
if (isset($_SERVER['HTTP_CLIENT_IP']))
|
29 |
+
$ipaddress = $_SERVER['HTTP_CLIENT_IP'];
|
30 |
+
else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
|
31 |
+
$ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
|
32 |
+
else if(isset($_SERVER['HTTP_X_FORWARDED']))
|
33 |
+
$ipaddress = $_SERVER['HTTP_X_FORWARDED'];
|
34 |
+
else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
|
35 |
+
$ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
|
36 |
+
else if(isset($_SERVER['HTTP_FORWARDED']))
|
37 |
+
$ipaddress = $_SERVER['HTTP_FORWARDED'];
|
38 |
+
else if(isset($_SERVER['REMOTE_ADDR']))
|
39 |
+
$ipaddress = $_SERVER['REMOTE_ADDR'];
|
40 |
+
else
|
41 |
+
$ipaddress = 'UNKNOWN';
|
42 |
+
|
43 |
+
$query = 'select * from '.$wpdb->base_prefix.'mo2f_network_blocked_ips where ip_address="'.$ipaddress.'";';
|
44 |
+
$results = $wpdb->get_results($query);
|
45 |
+
|
46 |
+
if(sizeof($results)!=0)
|
47 |
+
{
|
48 |
+
$query = 'select * from '.$wpdb->base_prefix.'mo2f_network_whitelisted_ips where ip_address="'.$ipaddress.'";';
|
49 |
+
$results1 = $wpdb->get_results($query);
|
50 |
+
if(sizeof($results1)!=0)
|
51 |
+
{
|
52 |
+
//IP whitelisted
|
53 |
+
}
|
54 |
+
else
|
55 |
+
{
|
56 |
+
header('HTTP/1.1 403 Forbidden');
|
57 |
+
include_once("mo-block.html");
|
58 |
+
exit;
|
59 |
+
}
|
60 |
+
}
|
61 |
+
$dir_name = dirname(__FILE__);
|
62 |
+
$dir_name1 = explode('wp-content', $dir_name);
|
63 |
+
$dir_name = $dir_name1[0];
|
64 |
+
$filepath = str_replace('\\', '/', $dir_name1[0]);
|
65 |
+
$fileName = $filepath.'/wp-includes/mo-waf-config.php';
|
66 |
+
|
67 |
+
if($missingFile==1)
|
68 |
+
{
|
69 |
+
if(!file_exists($fileName))
|
70 |
+
{
|
71 |
+
$file = fopen($fileName, "a+");
|
72 |
+
$string = "<?php".PHP_EOL;
|
73 |
+
$string .= '$SQL = '.get_option("SQLInjection").';'.PHP_EOL;
|
74 |
+
$string .= '$XSS = '.get_option("XSSAttack").';'.PHP_EOL;
|
75 |
+
$string .= '$RFI = '.get_option("RFIAttack").';'.PHP_EOL;
|
76 |
+
$string .= '$LFI = '.get_option("LFIAttack").';'.PHP_EOL;
|
77 |
+
$string .= '$RCE = '.get_option("RCEAttack").';'.PHP_EOL;
|
78 |
+
$string .= '$RateLimiting = '.get_option("Rate_limiting").';'.PHP_EOL;
|
79 |
+
$string .= '$RequestsPMin = '.get_option("Rate_request").';'.PHP_EOL;
|
80 |
+
|
81 |
+
if(get_option('actionRateL') == 0)
|
82 |
+
$string .= '$actionRateL = "ThrottleIP";'.PHP_EOL;
|
83 |
+
else
|
84 |
+
$string .= '$actionRateL = "BlockIP";'.PHP_EOL;
|
85 |
+
|
86 |
+
$string .= '?>'.PHP_EOL;
|
87 |
+
fwrite($file, $string);
|
88 |
+
fclose($file);
|
89 |
+
|
90 |
+
}
|
91 |
+
|
92 |
+
}
|
93 |
+
include_once($fileName);
|
94 |
+
|
95 |
+
|
96 |
+
if($RateLimiting == 1)
|
97 |
+
{
|
98 |
+
$time = 60;
|
99 |
+
$reqLimit = $RequestsPMin;
|
100 |
+
|
101 |
+
$query = "delete from ".$wpdb->base_prefix."wpns_ip_rate_details where time<".(time()-$time);
|
102 |
+
$results = $wpdb->get_results($query);
|
103 |
+
|
104 |
+
$query = "insert into ".$wpdb->base_prefix."wpns_ip_rate_details values('".$ipaddress."',".time().");";
|
105 |
+
$results = $wpdb->get_results($query);
|
106 |
+
|
107 |
+
$query = "select count(*) as count from ".$wpdb->base_prefix."wpns_ip_rate_details where ip='".$ipaddress."';";
|
108 |
+
$results = $wpdb->get_results($query);
|
109 |
+
|
110 |
+
if($results[0]->count>=$reqLimit)
|
111 |
+
{
|
112 |
+
$action = $actionRateL;
|
113 |
+
if($action == 'ThrottleIP')
|
114 |
+
{
|
115 |
+
$query = "select time from ".$wpdb->base_prefix."wpns_attack_logs where ip ='".$ipaddress."' ORDER BY time DESC LIMIT 1;";
|
116 |
+
$results = $wpdb->get_results($query);
|
117 |
+
$current_time = time();
|
118 |
+
if($results[0]->time < $current_time-60)
|
119 |
+
{
|
120 |
+
$query = "insert into ".$wpdb->base_prefix."wpns_attack_logs values('".$ipaddress."','Rate Limit',".time().",'".MoWpnsConstants::RATE_LIMIT_EXCEEDED."');";
|
121 |
+
$results = $wpdb->get_results($query);
|
122 |
+
}
|
123 |
+
header('HTTP/1.1 403 Forbidden');
|
124 |
+
include_once("mo-error.html");
|
125 |
+
exit;
|
126 |
+
}
|
127 |
+
else
|
128 |
+
{
|
129 |
+
$query = "select time from ".$wpdb->base_prefix."wpns_attack_logs where ip ='".$ipaddress."' ORDER BY time DESC LIMIT 1;";
|
130 |
+
$results = $wpdb->get_results($query);
|
131 |
+
$current_time = time();
|
132 |
+
if($results[0]->time < $current_time-60)
|
133 |
+
{
|
134 |
+
$query = "insert into ".$wpdb->base_prefix."wpns_attack_logs values('".$ipaddress."','Rate Limit',".time().",'".MoWpnsConstants::RATE_LIMIT_EXCEEDED."');";
|
135 |
+
$results = $wpdb->get_results($query);
|
136 |
+
}
|
137 |
+
$query = 'select * from '.$wpdb->base_prefix.'mo2f_network_whitelisted_ips where ip_address="'.$ipaddress.'";';
|
138 |
+
$results1 = $wpdb->get_results($query);
|
139 |
+
if(sizeof($results1)!=0)
|
140 |
+
{
|
141 |
+
//IP whitelisted
|
142 |
+
}
|
143 |
+
else
|
144 |
+
{
|
145 |
+
$query ="insert into ".$wpdb->base_prefix."mo2f_network_blocked_ips values(NULL,'".$ipaddress."','Rate limit exceed',NULL,".current_time( 'timestamp' ).");";
|
146 |
+
$results =$wpdb->get_results($query);
|
147 |
+
}
|
148 |
+
header('HTTP/1.1 403 Forbidden');
|
149 |
+
include_once("mo-error.html");
|
150 |
+
exit;
|
151 |
+
}
|
152 |
+
}
|
153 |
+
}
|
154 |
+
$attack = array();
|
155 |
+
if($SQL==1)
|
156 |
+
{
|
157 |
+
array_push($attack,"SQL");
|
158 |
+
}
|
159 |
+
if($XSS==1)
|
160 |
+
{
|
161 |
+
array_push($attack,"XSS");
|
162 |
+
}
|
163 |
+
if($LFI==1)
|
164 |
+
{
|
165 |
+
array_push($attack,"LFI");
|
166 |
+
}
|
167 |
+
|
168 |
+
$attackC = $attack;
|
169 |
+
$ParanoiaLevel = 1;
|
170 |
+
$annomalyS = 0;
|
171 |
+
$SQLScore = 0;
|
172 |
+
$XSSScore = 0;
|
173 |
+
$limitAttack = get_option('limitAttack');
|
174 |
+
|
175 |
+
|
176 |
+
foreach ($attackC as $key1 => $value1) {
|
177 |
+
for($lev=1;$lev<=$ParanoiaLevel;$lev++)
|
178 |
+
{
|
179 |
+
if(isset($regex[$value1][$lev]))
|
180 |
+
{
|
181 |
+
for($i=0;$i<sizeof($regex[$value1][$lev]);$i++)
|
182 |
+
{
|
183 |
+
foreach ($_REQUEST as $key => $value) {
|
184 |
+
if($regex[$value1][$lev][$i] != "")
|
185 |
+
{
|
186 |
+
if(strpos($regex[$value1][$lev][$i], '/') == false)
|
187 |
+
{
|
188 |
+
if(is_string($value))
|
189 |
+
{
|
190 |
+
|
191 |
+
if(preg_match('/'.$regex[$value1][$lev][$i].'/', $value))
|
192 |
+
{
|
193 |
+
$scoreValue = 0;
|
194 |
+
|
195 |
+
$annomalyMS = $score[$value1][$lev][$i];
|
196 |
+
if(strcmp($annomalyMS,"CRITICAL")==0)
|
197 |
+
{
|
198 |
+
$scoreValue = 5;
|
199 |
+
}
|
200 |
+
|
201 |
+
elseif(strcmp($annomalyMS,"WARNING")==0)
|
202 |
+
{
|
203 |
+
$scoreValue = 3;
|
204 |
+
}
|
205 |
+
elseif(strcmp($annomalyMS,"ERROR")==0)
|
206 |
+
{
|
207 |
+
$scoreValue = 4;
|
208 |
+
}
|
209 |
+
elseif(strcmp($annomalyMS,"NOTICE")==0)
|
210 |
+
{
|
211 |
+
$scoreValue =2;
|
212 |
+
}
|
213 |
+
|
214 |
+
if($value1 == "SQL")
|
215 |
+
{
|
216 |
+
$SQLScore += $scoreValue;
|
217 |
+
|
218 |
+
}
|
219 |
+
elseif ($value1 == "XSS")
|
220 |
+
{
|
221 |
+
$XSSScore += $scoreValue;
|
222 |
+
}
|
223 |
+
else
|
224 |
+
{
|
225 |
+
$annomalyS += $scoreValue;
|
226 |
+
}
|
227 |
+
if($annomalyS>=5 || $SQLScore>=10 || $XSSScore >=10)
|
228 |
+
{
|
229 |
+
$value = htmlspecialchars($value);
|
230 |
+
$query = 'insert into '.$wpdb->base_prefix.'wpns_attack_logs values ("'.$ipaddress.'","'.$value1.'",'.time().',"'.$value.'");';
|
231 |
+
$results = $wpdb->get_results($query);
|
232 |
+
$query = "select count(*) as count from ".$wpdb->base_prefix."wpns_attack_logs where ip='".$ipaddress."' and input != '".MoWpnsConstants::RATE_LIMIT_EXCEEDED."';";
|
233 |
+
$results = $wpdb->get_results($query);
|
234 |
+
if($results[0]->count>$limitAttack)
|
235 |
+
{
|
236 |
+
$query = 'select * from '.$wpdb->base_prefix.'mo2f_network_whitelisted_ips where ip_address="'.$ipaddress.'";';
|
237 |
+
$results = $wpdb->get_results($query);
|
238 |
+
if(sizeof($results)!=0)
|
239 |
+
{
|
240 |
+
//IP whitelisted
|
241 |
+
}
|
242 |
+
else
|
243 |
+
{
|
244 |
+
$query ="insert into ".$wpdb->base_prefix."mo2f_network_blocked_ips values(NULL,'".$ipaddress."','attack limit exceed',NULL,".current_time( 'timestamp' ).");";
|
245 |
+
$results =$wpdb->get_results($query);
|
246 |
+
}
|
247 |
+
}
|
248 |
+
header('HTTP/1.1 403 Forbidden');
|
249 |
+
include_once("mo-error.html");
|
250 |
+
exit;
|
251 |
+
}
|
252 |
+
|
253 |
+
}
|
254 |
+
}
|
255 |
+
}
|
256 |
+
else if (strpos($regex[$value1][$lev][$i], '#') == false) {
|
257 |
+
if(is_string($value))
|
258 |
+
{
|
259 |
+
|
260 |
+
if(preg_match('#'.$regex[$value1][$lev][$i].'#', $value))
|
261 |
+
{
|
262 |
+
$scoreValue = 0;
|
263 |
+
$annomalyMS = $score[$value1][$lev][$i];
|
264 |
+
if(strcmp($annomalyMS,"CRITICAL")==0)
|
265 |
+
{
|
266 |
+
$scoreValue = 5;
|
267 |
+
}
|
268 |
+
|
269 |
+
elseif(strcmp($annomalyMS,"WARNING")==0)
|
270 |
+
{
|
271 |
+
$scoreValue = 3;
|
272 |
+
}
|
273 |
+
elseif(strcmp($annomalyMS,"ERROR")==0)
|
274 |
+
{
|
275 |
+
$scoreValue = 4;
|
276 |
+
}
|
277 |
+
elseif(strcmp($annomalyMS,"NOTICE")==0)
|
278 |
+
{
|
279 |
+
$scoreValue =2;
|
280 |
+
}
|
281 |
+
|
282 |
+
|
283 |
+
if($value1 == "SQL")
|
284 |
+
{
|
285 |
+
$SQLScore += $scoreValue;
|
286 |
+
|
287 |
+
}
|
288 |
+
elseif ($value1 == "XSS")
|
289 |
+
{
|
290 |
+
$XSSScore += $scoreValue;
|
291 |
+
}
|
292 |
+
else
|
293 |
+
{
|
294 |
+
$annomalyS += $scoreValue;
|
295 |
+
}
|
296 |
+
if($annomalyS>=5 || $SQLScore>=10 || $XSSScore >=10)
|
297 |
+
{
|
298 |
+
$value = htmlspecialchars($value);
|
299 |
+
$query = 'insert into '.$wpdb->base_prefix.'wpns_attack_logs values ("'.$ipaddress.'","'.$value1.'",'.time().',"'.$value.'");';
|
300 |
+
$results = $wpdb->get_results($query);
|
301 |
+
$query = "select count(*) as count from ".$wpdb->base_prefix."wpns_attack_logs where ip='".$ipaddress."' and input != '".MoWpnsConstants::RATE_LIMIT_EXCEEDED."';";
|
302 |
+
$results = $wpdb->get_results($query);
|
303 |
+
|
304 |
+
if($results[0]->count>$limitAttack)
|
305 |
+
{
|
306 |
+
$query = 'select * from '.$wpdb->base_prefix.'mo2f_network_whitelisted_ips where ip_address="'.$ipaddress.'";';
|
307 |
+
$results = $wpdb->get_results($query);
|
308 |
+
if(sizeof($results)!=0)
|
309 |
+
{
|
310 |
+
//IP whitelisted
|
311 |
+
}
|
312 |
+
else
|
313 |
+
{
|
314 |
+
$query ="insert into ".$wpdb->base_prefix."mo2f_network_blocked_ips values(NULL,'".$ipaddress."','attack limit exceed',NULL,".current_time( 'timestamp' ).");";
|
315 |
+
$results =$wpdb->get_results($query);
|
316 |
+
}
|
317 |
+
}
|
318 |
+
header('HTTP/1.1 403 Forbidden');
|
319 |
+
include_once("mo-error.html");
|
320 |
+
exit;
|
321 |
+
}
|
322 |
+
}
|
323 |
+
}
|
324 |
+
}
|
325 |
+
|
326 |
+
elseif (strpos($regex[$value1][$lev][$i], '@') == false) {
|
327 |
+
if(is_string($value))
|
328 |
+
{
|
329 |
+
|
330 |
+
if(preg_match('@'.$regex[$value1][$lev][$i].'@', $value))
|
331 |
+
{
|
332 |
+
$scoreValue = 0;
|
333 |
+
$annomalyMS = $score[$value1][$lev][$i];
|
334 |
+
if(strcmp($annomalyMS,"CRITICAL")==0)
|
335 |
+
{
|
336 |
+
$scoreValue = 5;
|
337 |
+
}
|
338 |
+
|
339 |
+
elseif(strcmp($annomalyMS,"WARNING")==0)
|
340 |
+
{
|
341 |
+
$scoreValue = 3;
|
342 |
+
}
|
343 |
+
elseif(strcmp($annomalyMS,"ERROR")==0)
|
344 |
+
{
|
345 |
+
$scoreValue = 4;
|
346 |
+
}
|
347 |
+
elseif(strcmp($annomalyMS,"NOTICE")==0)
|
348 |
+
{
|
349 |
+
$scoreValue =2;
|
350 |
+
}
|
351 |
+
|
352 |
+
|
353 |
+
if($value1 == "SQL")
|
354 |
+
{
|
355 |
+
$SQLScore += $scoreValue;
|
356 |
+
|
357 |
+
}
|
358 |
+
elseif ($value1 == "XSS")
|
359 |
+
{
|
360 |
+
$XSSScore += $scoreValue;
|
361 |
+
}
|
362 |
+
else
|
363 |
+
{
|
364 |
+
$annomalyS += $scoreValue;
|
365 |
+
}
|
366 |
+
if($annomalyS>=5 || $SQLScore>=10 || $XSSScore >=10)
|
367 |
+
{
|
368 |
+
$value = htmlspecialchars($value);
|
369 |
+
$query = 'insert into '.$wpdb->base_prefix.'wpns_attack_logs values ("'.$ipaddress.'","'.$value1.'",'.time().',"'.$value.'");';
|
370 |
+
$results = $wpdb->get_results($query);
|
371 |
+
$query = "select count(*) as count from ".$wpdb->base_prefix."wpns_attack_logs where ip='".$ipaddress."' and input != '".MoWpnsConstants::RATE_LIMIT_EXCEEDED."';";
|
372 |
+
$results = $wpdb->get_results($query);
|
373 |
+
|
374 |
+
if($results[0]->count>$limitAttack)
|
375 |
+
{
|
376 |
+
$query = 'select * from '.$wpdb->base_prefix.'mo2f_network_whitelisted_ips where ip_address="'.$ipaddress.'";';
|
377 |
+
$results = $wpdb->get_results($query);
|
378 |
+
if(sizeof($results)!=0)
|
379 |
+
{
|
380 |
+
//IP whitelisted
|
381 |
+
}
|
382 |
+
else
|
383 |
+
{
|
384 |
+
$query ="insert into ".$wpdb->base_prefix."mo2f_network_blocked_ips values(NULL,'".$ipaddress."','attack limit exceed',NULL,".current_time( 'timestamp' ).");";
|
385 |
+
$results =$wpdb->get_results($query);
|
386 |
+
}
|
387 |
+
}
|
388 |
+
header('HTTP/1.1 403 Forbidden');
|
389 |
+
include_once("mo-error.html");
|
390 |
+
exit;
|
391 |
+
}
|
392 |
+
}
|
393 |
+
}
|
394 |
+
|
395 |
+
}
|
396 |
+
|
397 |
+
}
|
398 |
+
}
|
399 |
+
|
400 |
+
}
|
401 |
+
}
|
402 |
+
|
403 |
+
}
|
404 |
+
}
|
405 |
+
|
406 |
+
|
407 |
+
|
408 |
+
|
409 |
+
|
410 |
?>
|
handler/recaptcha.php
CHANGED
@@ -42,7 +42,7 @@
|
|
42 |
|
43 |
function custom_login_fields()
|
44 |
{
|
45 |
-
if(get_option('mo_wpns_activate_recaptcha_for_login') &&
|
46 |
{
|
47 |
echo "<script src='".MoWpnsConstants::RECAPTCHA_URL."'></script>";
|
48 |
echo '<div class="g-recaptcha" data-sitekey="'.get_option("mo_wpns_recaptcha_site_key").'"></div>';
|
42 |
|
43 |
function custom_login_fields()
|
44 |
{
|
45 |
+
if(get_option('mo_wpns_activate_recaptcha_for_login') && MoWpnsUtility::get_mo2f_db_option('mo2f_login_option', 'get_option'))
|
46 |
{
|
47 |
echo "<script src='".MoWpnsConstants::RECAPTCHA_URL."'></script>";
|
48 |
echo '<div class="g-recaptcha" data-sitekey="'.get_option("mo_wpns_recaptcha_site_key").'"></div>';
|
handler/security_features.php
CHANGED
@@ -1,47 +1,47 @@
|
|
1 |
-
<?php
|
2 |
-
class Mo_2fa_security_features
|
3 |
-
{
|
4 |
-
function wpns_2fa_features_only()
|
5 |
-
{
|
6 |
-
update_option( 'mo_wpns_2fa_with_network_security', 0);
|
7 |
-
update_option( 'mo_wpns_2fa_with_network_security_popup_visible', 0);
|
8 |
-
?><script>window.location.href="admin.php?page=mo_2fa_two_fa";</script><?php
|
9 |
-
|
10 |
-
}
|
11 |
-
|
12 |
-
function wpns_2fa_with_network_security($postvalue)
|
13 |
-
{
|
14 |
-
$nonce= sanitize_text_field(wp_unslash($_POST['mo_security_features_nonce']));
|
15 |
-
|
16 |
-
if ( wp_verify_nonce( $nonce, 'mo_2fa_security_features_nonce' ) )
|
17 |
-
{
|
18 |
-
$enable_newtwork_security_features = isset($postvalue['mo_wpns_2fa_with_network_security']) ? true : false;
|
19 |
-
|
20 |
-
update_option( 'mo_wpns_2fa_with_network_security', $enable_newtwork_security_features);
|
21 |
-
|
22 |
-
if ($enable_newtwork_security_features)
|
23 |
-
{
|
24 |
-
$mo2f_enable_all_enable = new Mo2f_ajax_dashboard();
|
25 |
-
$mo2f_enable_all_enable -> mo2f_handle_all_enable(1);
|
26 |
-
}
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
update_option( 'mo_wpns_2fa_with_network_security_popup_visible', 0);
|
31 |
-
if(
|
32 |
-
{
|
33 |
-
?><script>window.location.href="admin.php?page=mo_2fa_dashboard";</script><?php
|
34 |
-
}
|
35 |
-
else
|
36 |
-
{
|
37 |
-
?><script>window.location.href="admin.php?page=mo_2fa_two_fa";</script><?php
|
38 |
-
}
|
39 |
-
|
40 |
-
|
41 |
-
}
|
42 |
-
else
|
43 |
-
do_action('wpns_show_message',MoWpnsMessages::showMessage('NONCE_ERROR'),'ERROR');
|
44 |
-
|
45 |
-
}
|
46 |
-
}new Mo_2fa_security_features;
|
47 |
-
?>
|
1 |
+
<?php
|
2 |
+
class Mo_2fa_security_features
|
3 |
+
{
|
4 |
+
function wpns_2fa_features_only()
|
5 |
+
{
|
6 |
+
update_option( 'mo_wpns_2fa_with_network_security', 0);
|
7 |
+
update_option( 'mo_wpns_2fa_with_network_security_popup_visible', 0);
|
8 |
+
?><script>window.location.href="admin.php?page=mo_2fa_two_fa";</script><?php
|
9 |
+
|
10 |
+
}
|
11 |
+
|
12 |
+
function wpns_2fa_with_network_security($postvalue)
|
13 |
+
{
|
14 |
+
$nonce= sanitize_text_field(wp_unslash($_POST['mo_security_features_nonce']));
|
15 |
+
|
16 |
+
if ( wp_verify_nonce( $nonce, 'mo_2fa_security_features_nonce' ) )
|
17 |
+
{
|
18 |
+
$enable_newtwork_security_features = isset($postvalue['mo_wpns_2fa_with_network_security']) ? true : false;
|
19 |
+
|
20 |
+
update_option( 'mo_wpns_2fa_with_network_security', $enable_newtwork_security_features);
|
21 |
+
|
22 |
+
if ($enable_newtwork_security_features)
|
23 |
+
{
|
24 |
+
$mo2f_enable_all_enable = new Mo2f_ajax_dashboard();
|
25 |
+
$mo2f_enable_all_enable -> mo2f_handle_all_enable(1);
|
26 |
+
}
|
27 |
+
|
28 |
+
|
29 |
+
|
30 |
+
update_option( 'mo_wpns_2fa_with_network_security_popup_visible', 0);
|
31 |
+
if(MoWpnsUtility::get_mo2f_db_option('mo_wpns_2fa_with_network_security', 'get_option'))
|
32 |
+
{
|
33 |
+
?><script>window.location.href="admin.php?page=mo_2fa_dashboard";</script><?php
|
34 |
+
}
|
35 |
+
else
|
36 |
+
{
|
37 |
+
?><script>window.location.href="admin.php?page=mo_2fa_two_fa";</script><?php
|
38 |
+
}
|
39 |
+
|
40 |
+
|
41 |
+
}
|
42 |
+
else
|
43 |
+
do_action('wpns_show_message',MoWpnsMessages::showMessage('NONCE_ERROR'),'ERROR');
|
44 |
+
|
45 |
+
}
|
46 |
+
}new Mo_2fa_security_features;
|
47 |
+
?>
|
handler/signature/APXSS.php
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
$regex['XSS'][1] = array( "#(?i)<script[^>]*>[\s\S]*?#" , "#(?i)[\s\'`;\/0-9=\x0B\x09\x0C\x3B\x2C\x28\x3B]+on[a-zA-Z]+[\s\x0B\x09\x0C\x3B\x2C\x28\x3B]*?=#" , "#(?i)[\s\S]((?:x(?:link:href|html|mlns)|!ENTITY.*?(?:SYSTEM|PUBLIC)|data:text\/html|formaction|\@import|base64)\b|pattern\b.*?=)#" , "#(?i)(?:<(?:(?:apple|objec)t|isindex|embed|style|form|meta)\b[^>]*?>[\s\S]*?|(?:=|U\s*?R\s*?L\s*?\()\s*?[^>]*?\s*?S\s*?C\s*?R\s*?I\s*?P\s*?T\s*?:)#" , "#(?i:(?:<\w[\s\S]*[\s\/]|['\](?:[\s\S]*[\s\/])?)(?:on(?:d(?:e(?:vice(?:(?:orienta|mo)tion|proximity|found|light)|livery(?:success|error)|activate)|r(?:ag(?:e(?:n(?:ter|d)|xit)|(?:gestur|leav)e|start|drop|over)|op)|i(?:s(?:c(?:hargingtimechange|onnect(?:ing|ed))|abled)|aling)|ata(?:setc(?:omplete|hanged)|(?:availabl|chang)e|error)|urationchange|ownloading|blclick)|Moz(?:M(?:agnifyGesture(?:Update|Start)?|ouse(?:PixelScroll|Hittest))|S(?:wipeGesture(?:Update|Start|End)?|crolledAreaChanged)|(?:(?:Press)?TapGestur|BeforeResiz)e|EdgeUI(?:C(?:omplet|ancel)|Start)ed|RotateGesture(?:Update|Start)?|A(?:udioAvailable|fterPaint))|c(?:o(?:m(?:p(?:osition(?:update|start|end)|lete)|mand(?:update)?)|n(?:t(?:rolselect|extmenu)|nect(?:ing|ed))|py)|a(?:(?:llschang|ch)ed|nplay(?:through)?|rdstatechange)|h(?:(?:arging(?:time)?ch)?ange|ecking)|(?:fstate|ell)change|u(?:echange|t)|l(?:ick|ose))|s(?:t(?:a(?:t(?:uschanged|echange)|lled|rt)|k(?:sessione|comma)nd|op)|e(?:ek(?:complete|ing|ed)|(?:lec(?:tstar)?)?t|n(?:ding|t))|(?:peech|ound)(?:start|end)|u(?:ccess|spend|bmit)|croll|how)|m(?:o(?:z(?:(?:pointerlock|fullscreen)(?:change|error)|(?:orientation|time)change|network(?:down|up)load)|use(?:(?:lea|mo)ve|o(?:ver|ut)|enter|wheel|down|up)|ve(?:start|end)?)|essage|ark)|a(?:n(?:imation(?:iteration|start|end)|tennastatechange)|fter(?:(?:scriptexecu|upda)te|print)|udio(?:process|start|end)|d(?:apteradded|dtrack)|ctivate|lerting|bort)|b(?:e(?:fore(?:(?:(?:de)?activa|scriptexecu)te|u(?:nload|pdate)|p(?:aste|rint)|c(?:opy|ut)|editfocus)|gin(?:Event)?)|oun(?:dary|ce)|l(?:ocked|ur)|roadcast|usy)|DOM(?:Node(?:Inserted(?:IntoDocument)?|Removed(?:FromDocument)?)|(?:CharacterData|Subtree)Modified|A(?:ttrModified|ctivate)|Focus(?:Out|In)|MouseScroll)|r(?:e(?:s(?:u(?:m(?:ing|e)|lt)|ize|et)|adystatechange|pea(?:tEven)?t|movetrack|trieving|ceived)|ow(?:s(?:inserted|delete)|e(?:nter|xit))|atechange)|p(?:op(?:up(?:hid(?:den|ing)|show(?:ing|n))|state)|a(?:ge(?:hide|show)|(?:st|us)e|int)|ro(?:pertychange|gress)|lay(?:ing)?)|t(?:ouch(?:(?:lea|mo)ve|en(?:ter|d)|cancel|start)|ransition(?:cancel|end|run)|ime(?:update|out)|ext)|u(?:s(?:erproximity|sdreceived)|p(?:gradeneeded|dateready)|n(?:derflow|load))|f(?:o(?:rm(?:change|input)|cus(?:out|in)?)|i(?:lterchange|nish)|ailed)|l(?:o(?:ad(?:e(?:d(?:meta)?data|nd)|start)|secapture)|evelchange|y)|g(?:amepad(?:(?:dis)?connected|button(?:down|up)|axismove)|et)|e(?:n(?:d(?:Event|ed)?|abled|ter)|rror(?:update)?|mptied|xit)|i(?:cc(?:cardlockerror|infochange)|n(?:coming|valid|put))|o(?:(?:(?:ff|n)lin|bsolet)e|verflow(?:changed)?|pen)|SVG(?:(?:Unl|L)oad|Resize|Scroll|Abort|Error|Zoom)|h(?:e(?:adphoneschange|l[dp])|ashchange|olding)|v(?:o(?:lum|ic)e|ersion)change|w(?:a(?:it|rn)ing|heel)|key(?:press|down|up)|(?:AppComman|Loa)d|no(?:update|match)|Request|zoom)|s(?:tyle|rc)|background|formaction|lowsrc|ping)[\s\x08]*?=|<[^\w<>]*(?:[^<>\'\s]*:)?[^\w<>]*\W*?(?:(?:a\W*?(?:n\W*?i\W*?m\W*?a\W*?t\W*?e|p\W*?p\W*?l\W*?e\W*?t|u\W*?d\W*?i\W*?o)|b\W*?(?:i\W*?n\W*?d\W*?i\W*?n\W*?g\W*?s|a\W*?s\W*?e|o\W*?d\W*?y)|i?\W*?f\W*?r\W*?a\W*?m\W*?e|o\W*?b\W*?j\W*?e\W*?c\W*?t|i\W*?m\W*?a?\W*?g\W*?e?|e\W*?m\W*?b\W*?e\W*?d|p\W*?a\W*?r\W*?a\W*?m|v\W*?i\W*?d\W*?e\W*?o|l\W*?i\W*?n\W*?k)[^>\w]|s\W*?(?:c\W*?r\W*?i\W*?p\W*?t|t\W*?y\W*?l\W*?e|e\W*?t[^>\w]|v\W*?g)|m\W*?(?:a\W*?r\W*?q\W*?u\W*?e\W*?e|e\W*?t\W*?a[^>\w])|f\W*?o\W*?r\W*?m)#" , "%(?i:<style.*?>.*?(?:@[i\\\\]|(?:[:=]|&#x?0*(?:58|3A|61|3D);?).*?(?:[(\\\\]|&#x?0*(?:40|28|92|5C);?)))%" , "#(?i:<.*[:]?vmlframe.*?[\s/+]*?src[\s/+]*=)#" , "@(?i:(?:j|&#x?0*(?:74|4A|106|6A);?)(?:\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:a|&#x?0*(?:65|41|97|61);?)(?:\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:v|&#x?0*(?:86|56|118|76);?)(?:\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:a|&#x?0*(?:65|41|97|61);?)(?:\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:s|&#x?0*(?:83|53|115|73);?)(?:\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:c|&#x?0*(?:67|43|99|63);?)(?:\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:r|&#x?0*(?:82|52|114|72);?)(?:\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:i|&#x?0*(?:73|49|105|69);?)(?:\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:p|&#x?0*(?:80|50|112|70);?)(?:\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:t|&#x?0*(?:84|54|116|74);?)(?:\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?::|&(?:#x?0*(?:58|3A);?|colon;)).)@" , "@(?i:(?:v|&#x?0*(?:86|56|118|76);?)(?:\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:b|&#x?0*(?:66|42|98|62);?)(?:\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:s|&#x?0*(?:83|53|115|73);?)(?:\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:c|&#x?0*(?:67|43|99|63);?)(?:\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:r|&#x?0*(?:82|52|114|72);?)(?:\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:i|&#x?0*(?:73|49|105|69);?)(?:\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:p|&#x?0*(?:80|50|112|70);?)(?:\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:t|&#x?0*(?:84|54|116|74);?)(?:\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?::|&(?:#x?0*(?:58|3A);?|colon;)).)@" , "#(?i)<EMBED[\s/+].*?(?:src|type).*?=#" , "#<[?]?import[\s\/+\S]*?implementation[\s\/+]*?=#" , "@(?i:<META[\s/+].*?http-equiv[\s/+]*=[\s/+]*[\'`]?(?:(?:c|&#x?0*(?:67|43|99|63);?)|(?:r|&#x?0*(?:82|52|114|72);?)|(?:s|&#x?0*(?:83|53|115|73);?)))@" , "#(?i:<META[\s/+].*?charset[\s/+]*=)#" , "#(?i)<LINK[\s/+].*?href[\s/+]*=#" , "#(?i)<BASE[\s/+].*?href[\s/+]*=#" , "#(?i)<APPLET[\s/+>]#" , "#(?i)<OBJECT[\s/+].*?(?:type|codetype|classid|code|data)[\s/+]*=#" , "#(?:¾|¼).*(?:¾|¼|>)|(?:¾|¼|<).*(?:¾|¼)#" , "#(?:\+ADw\-|\+AD4\-).*(?:\+ADw\-|\+AD4\-|>)|(?:\+ADw\-|\+AD4\-|<).*(?:\+ADw\-|\+AD4\-)#" , "#![!+]\[\]#" , " #(?:self|document|this|top|window)\s*\)*(?:\[[^\]]+\]|\.\s*document|\.\s*cookie)#" );
|
4 |
-
$score['XSS'][1] = array( 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 );
|
5 |
-
$regex['XSS'][2] = array( "#(?i)\b(?:s(?:tyle|rc)|href)\b[\s\S]*?=#" , "#<(?:a|abbr|acronym|address|applet|area|audioscope|b|base|basefront|bdo|bgsound|big|blackface|blink|blockquote|body|bq|br|button|caption|center|cite|code|col|colgroup|comment|dd|del|dfn|dir|div|dl|dt|em|embed|fieldset|fn|font|form|frame|frameset|h1|head|hr|html|i|iframe|ilayer|img|input|ins|isindex|kdb|keygen|label|layer|legend|li|limittext|link|listing|map|marquee|menu|meta|multicol|nobr|noembed|noframes|noscript|nosmartquotes|object|ol|optgroup|option|p|param|plaintext|pre|q|rt|ruby|s|samp|script|select|server|shadow|sidebar|small|spacer|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|u|ul|var|wbr|xml|xmp)\W#" , "#(?i:[\'][]*(?:[^a-z0-9~_:']|in).*?(?:(?:l|\\\\u006C)(?:o|\\\\u006F)(?:c|\\\\u0063)(?:a|\\\\u0061)(?:t|\\\\u0074)(?:i|\\\\u0069)(?:o|\\\\u006F)(?:n|\\\\u006E)|(?:n|\\\\u006E)(?:a|\\\\u0061)(?:m|\\\\u006D)(?:e|\\\\u0065)|(?:o|\\\\u006F)(?:n|\\\\u006E)(?:e|\\\\u0065)(?:r|\\\\u0072)(?:r|\\\\u0072)(?:o|\\\\u006F)(?:r|\\\\u0072)|(?:v|\\\\u0076)(?:a|\\\\u0061)(?:l|\\\\u006C)(?:u|\\\\u0075)(?:e|\\\\u0065)(?:O|\\\\u004F)(?:f|\\\\u0066)).*?=)#" , "#(?i)[\\'][]*(?:[^a-z0-9~_:\']|in).+?[.].+?=#" , " {{.*?}}" );
|
6 |
-
$score['XSS'][2] = array( 5 , 5 , 5 , 5 , 5 );
|
7 |
?>
|
1 |
+
<?php
|
2 |
+
|
3 |
+
$regex['XSS'][1] = array( "#(?i)<script[^>]*>[\s\S]*?#" , "#(?i)[\s\'`;\/0-9=\x0B\x09\x0C\x3B\x2C\x28\x3B]+on[a-zA-Z]+[\s\x0B\x09\x0C\x3B\x2C\x28\x3B]*?=#" , "#(?i)[\s\S]((?:x(?:link:href|html|mlns)|!ENTITY.*?(?:SYSTEM|PUBLIC)|data:text\/html|formaction|\@import|base64)\b|pattern\b.*?=)#" , "#(?i)(?:<(?:(?:apple|objec)t|isindex|embed|style|form|meta)\b[^>]*?>[\s\S]*?|(?:=|U\s*?R\s*?L\s*?\()\s*?[^>]*?\s*?S\s*?C\s*?R\s*?I\s*?P\s*?T\s*?:)#" , "#(?i:(?:<\w[\s\S]*[\s\/]|['\](?:[\s\S]*[\s\/])?)(?:on(?:d(?:e(?:vice(?:(?:orienta|mo)tion|proximity|found|light)|livery(?:success|error)|activate)|r(?:ag(?:e(?:n(?:ter|d)|xit)|(?:gestur|leav)e|start|drop|over)|op)|i(?:s(?:c(?:hargingtimechange|onnect(?:ing|ed))|abled)|aling)|ata(?:setc(?:omplete|hanged)|(?:availabl|chang)e|error)|urationchange|ownloading|blclick)|Moz(?:M(?:agnifyGesture(?:Update|Start)?|ouse(?:PixelScroll|Hittest))|S(?:wipeGesture(?:Update|Start|End)?|crolledAreaChanged)|(?:(?:Press)?TapGestur|BeforeResiz)e|EdgeUI(?:C(?:omplet|ancel)|Start)ed|RotateGesture(?:Update|Start)?|A(?:udioAvailable|fterPaint))|c(?:o(?:m(?:p(?:osition(?:update|start|end)|lete)|mand(?:update)?)|n(?:t(?:rolselect|extmenu)|nect(?:ing|ed))|py)|a(?:(?:llschang|ch)ed|nplay(?:through)?|rdstatechange)|h(?:(?:arging(?:time)?ch)?ange|ecking)|(?:fstate|ell)change|u(?:echange|t)|l(?:ick|ose))|s(?:t(?:a(?:t(?:uschanged|echange)|lled|rt)|k(?:sessione|comma)nd|op)|e(?:ek(?:complete|ing|ed)|(?:lec(?:tstar)?)?t|n(?:ding|t))|(?:peech|ound)(?:start|end)|u(?:ccess|spend|bmit)|croll|how)|m(?:o(?:z(?:(?:pointerlock|fullscreen)(?:change|error)|(?:orientation|time)change|network(?:down|up)load)|use(?:(?:lea|mo)ve|o(?:ver|ut)|enter|wheel|down|up)|ve(?:start|end)?)|essage|ark)|a(?:n(?:imation(?:iteration|start|end)|tennastatechange)|fter(?:(?:scriptexecu|upda)te|print)|udio(?:process|start|end)|d(?:apteradded|dtrack)|ctivate|lerting|bort)|b(?:e(?:fore(?:(?:(?:de)?activa|scriptexecu)te|u(?:nload|pdate)|p(?:aste|rint)|c(?:opy|ut)|editfocus)|gin(?:Event)?)|oun(?:dary|ce)|l(?:ocked|ur)|roadcast|usy)|DOM(?:Node(?:Inserted(?:IntoDocument)?|Removed(?:FromDocument)?)|(?:CharacterData|Subtree)Modified|A(?:ttrModified|ctivate)|Focus(?:Out|In)|MouseScroll)|r(?:e(?:s(?:u(?:m(?:ing|e)|lt)|ize|et)|adystatechange|pea(?:tEven)?t|movetrack|trieving|ceived)|ow(?:s(?:inserted|delete)|e(?:nter|xit))|atechange)|p(?:op(?:up(?:hid(?:den|ing)|show(?:ing|n))|state)|a(?:ge(?:hide|show)|(?:st|us)e|int)|ro(?:pertychange|gress)|lay(?:ing)?)|t(?:ouch(?:(?:lea|mo)ve|en(?:ter|d)|cancel|start)|ransition(?:cancel|end|run)|ime(?:update|out)|ext)|u(?:s(?:erproximity|sdreceived)|p(?:gradeneeded|dateready)|n(?:derflow|load))|f(?:o(?:rm(?:change|input)|cus(?:out|in)?)|i(?:lterchange|nish)|ailed)|l(?:o(?:ad(?:e(?:d(?:meta)?data|nd)|start)|secapture)|evelchange|y)|g(?:amepad(?:(?:dis)?connected|button(?:down|up)|axismove)|et)|e(?:n(?:d(?:Event|ed)?|abled|ter)|rror(?:update)?|mptied|xit)|i(?:cc(?:cardlockerror|infochange)|n(?:coming|valid|put))|o(?:(?:(?:ff|n)lin|bsolet)e|verflow(?:changed)?|pen)|SVG(?:(?:Unl|L)oad|Resize|Scroll|Abort|Error|Zoom)|h(?:e(?:adphoneschange|l[dp])|ashchange|olding)|v(?:o(?:lum|ic)e|ersion)change|w(?:a(?:it|rn)ing|heel)|key(?:press|down|up)|(?:AppComman|Loa)d|no(?:update|match)|Request|zoom)|s(?:tyle|rc)|background|formaction|lowsrc|ping)[\s\x08]*?=|<[^\w<>]*(?:[^<>\'\s]*:)?[^\w<>]*\W*?(?:(?:a\W*?(?:n\W*?i\W*?m\W*?a\W*?t\W*?e|p\W*?p\W*?l\W*?e\W*?t|u\W*?d\W*?i\W*?o)|b\W*?(?:i\W*?n\W*?d\W*?i\W*?n\W*?g\W*?s|a\W*?s\W*?e|o\W*?d\W*?y)|i?\W*?f\W*?r\W*?a\W*?m\W*?e|o\W*?b\W*?j\W*?e\W*?c\W*?t|i\W*?m\W*?a?\W*?g\W*?e?|e\W*?m\W*?b\W*?e\W*?d|p\W*?a\W*?r\W*?a\W*?m|v\W*?i\W*?d\W*?e\W*?o|l\W*?i\W*?n\W*?k)[^>\w]|s\W*?(?:c\W*?r\W*?i\W*?p\W*?t|t\W*?y\W*?l\W*?e|e\W*?t[^>\w]|v\W*?g)|m\W*?(?:a\W*?r\W*?q\W*?u\W*?e\W*?e|e\W*?t\W*?a[^>\w])|f\W*?o\W*?r\W*?m)#" , "%(?i:<style.*?>.*?(?:@[i\\\\]|(?:[:=]|&#x?0*(?:58|3A|61|3D);?).*?(?:[(\\\\]|&#x?0*(?:40|28|92|5C);?)))%" , "#(?i:<.*[:]?vmlframe.*?[\s/+]*?src[\s/+]*=)#" , "@(?i:(?:j|&#x?0*(?:74|4A|106|6A);?)(?:\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:a|&#x?0*(?:65|41|97|61);?)(?:\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:v|&#x?0*(?:86|56|118|76);?)(?:\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:a|&#x?0*(?:65|41|97|61);?)(?:\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:s|&#x?0*(?:83|53|115|73);?)(?:\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:c|&#x?0*(?:67|43|99|63);?)(?:\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:r|&#x?0*(?:82|52|114|72);?)(?:\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:i|&#x?0*(?:73|49|105|69);?)(?:\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:p|&#x?0*(?:80|50|112|70);?)(?:\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:t|&#x?0*(?:84|54|116|74);?)(?:\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?::|&(?:#x?0*(?:58|3A);?|colon;)).)@" , "@(?i:(?:v|&#x?0*(?:86|56|118|76);?)(?:\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:b|&#x?0*(?:66|42|98|62);?)(?:\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:s|&#x?0*(?:83|53|115|73);?)(?:\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:c|&#x?0*(?:67|43|99|63);?)(?:\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:r|&#x?0*(?:82|52|114|72);?)(?:\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:i|&#x?0*(?:73|49|105|69);?)(?:\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:p|&#x?0*(?:80|50|112|70);?)(?:\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?:t|&#x?0*(?:84|54|116|74);?)(?:\t|&(?:#x?0*(?:9|13|10|A|D);?|tab;|newline;))*(?::|&(?:#x?0*(?:58|3A);?|colon;)).)@" , "#(?i)<EMBED[\s/+].*?(?:src|type).*?=#" , "#<[?]?import[\s\/+\S]*?implementation[\s\/+]*?=#" , "@(?i:<META[\s/+].*?http-equiv[\s/+]*=[\s/+]*[\'`]?(?:(?:c|&#x?0*(?:67|43|99|63);?)|(?:r|&#x?0*(?:82|52|114|72);?)|(?:s|&#x?0*(?:83|53|115|73);?)))@" , "#(?i:<META[\s/+].*?charset[\s/+]*=)#" , "#(?i)<LINK[\s/+].*?href[\s/+]*=#" , "#(?i)<BASE[\s/+].*?href[\s/+]*=#" , "#(?i)<APPLET[\s/+>]#" , "#(?i)<OBJECT[\s/+].*?(?:type|codetype|classid|code|data)[\s/+]*=#" , "#(?:¾|¼).*(?:¾|¼|>)|(?:¾|¼|<).*(?:¾|¼)#" , "#(?:\+ADw\-|\+AD4\-).*(?:\+ADw\-|\+AD4\-|>)|(?:\+ADw\-|\+AD4\-|<).*(?:\+ADw\-|\+AD4\-)#" , "#![!+]\[\]#" , " #(?:self|document|this|top|window)\s*\)*(?:\[[^\]]+\]|\.\s*document|\.\s*cookie)#" );
|
4 |
+
$score['XSS'][1] = array( 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 );
|
5 |
+
$regex['XSS'][2] = array( "#(?i)\b(?:s(?:tyle|rc)|href)\b[\s\S]*?=#" , "#<(?:a|abbr|acronym|address|applet|area|audioscope|b|base|basefront|bdo|bgsound|big|blackface|blink|blockquote|body|bq|br|button|caption|center|cite|code|col|colgroup|comment|dd|del|dfn|dir|div|dl|dt|em|embed|fieldset|fn|font|form|frame|frameset|h1|head|hr|html|i|iframe|ilayer|img|input|ins|isindex|kdb|keygen|label|layer|legend|li|limittext|link|listing|map|marquee|menu|meta|multicol|nobr|noembed|noframes|noscript|nosmartquotes|object|ol|optgroup|option|p|param|plaintext|pre|q|rt|ruby|s|samp|script|select|server|shadow|sidebar|small|spacer|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|u|ul|var|wbr|xml|xmp)\W#" , "#(?i:[\'][]*(?:[^a-z0-9~_:']|in).*?(?:(?:l|\\\\u006C)(?:o|\\\\u006F)(?:c|\\\\u0063)(?:a|\\\\u0061)(?:t|\\\\u0074)(?:i|\\\\u0069)(?:o|\\\\u006F)(?:n|\\\\u006E)|(?:n|\\\\u006E)(?:a|\\\\u0061)(?:m|\\\\u006D)(?:e|\\\\u0065)|(?:o|\\\\u006F)(?:n|\\\\u006E)(?:e|\\\\u0065)(?:r|\\\\u0072)(?:r|\\\\u0072)(?:o|\\\\u006F)(?:r|\\\\u0072)|(?:v|\\\\u0076)(?:a|\\\\u0061)(?:l|\\\\u006C)(?:u|\\\\u0075)(?:e|\\\\u0065)(?:O|\\\\u004F)(?:f|\\\\u0066)).*?=)#" , "#(?i)[\\'][]*(?:[^a-z0-9~_:\']|in).+?[.].+?=#" , " {{.*?}}" );
|
6 |
+
$score['XSS'][2] = array( 5 , 5 , 5 , 5 , 5 );
|
7 |
?>
|
handler/spam.php
CHANGED
@@ -1,42 +1,42 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Spam
|
4 |
-
{
|
5 |
-
function __construct()
|
6 |
-
{
|
7 |
-
if(get_option('mo_wpns_enable_comment_spam_blocking') || get_option('mo_wpns_enable_comment_recaptcha'))
|
8 |
-
{
|
9 |
-
add_filter( 'preprocess_comment' , array($this, 'comment_spam_check' ) );
|
10 |
-
add_action( 'comment_form_after_fields' , array($this, 'comment_spam_custom_field' ) );
|
11 |
-
}
|
12 |
-
}
|
13 |
-
|
14 |
-
function comment_spam_check( $comment_data )
|
15 |
-
{
|
16 |
-
if(!is_user_logged_in()){
|
17 |
-
global $moWpnsUtility;
|
18 |
-
if( isset($_POST['mocomment']) && !empty($_POST['mocomment']))
|
19 |
-
wp_die( __( 'You are not authorised to perform this action.'));
|
20 |
-
else if(get_option('mo_wpns_enable_comment_recaptcha'))
|
21 |
-
{
|
22 |
-
if(is_wp_error($moWpnsUtility->verify_recaptcha($_POST['g-recaptcha-response'])))
|
23 |
-
wp_die( __( 'Invalid captcha. Please verify captcha again.'));
|
24 |
-
}
|
25 |
-
return $comment_data;
|
26 |
-
}
|
27 |
-
else{
|
28 |
-
return $comment_data;
|
29 |
-
}
|
30 |
-
}
|
31 |
-
|
32 |
-
function comment_spam_custom_field()
|
33 |
-
{
|
34 |
-
echo '<input type="hidden" name="mocomment" />';
|
35 |
-
if(get_option('mo_wpns_enable_comment_recaptcha'))
|
36 |
-
{
|
37 |
-
echo '<script src="'.MoWpnsConstants::RECAPTCHA_URL.'"></script>';
|
38 |
-
echo '<div class="g-recaptcha" data-sitekey="'.get_option('mo_wpns_recaptcha_site_key').'"></div>';
|
39 |
-
}
|
40 |
-
}
|
41 |
-
}
|
42 |
new Spam;
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Spam
|
4 |
+
{
|
5 |
+
function __construct()
|
6 |
+
{
|
7 |
+
if(get_option('mo_wpns_enable_comment_spam_blocking') || get_option('mo_wpns_enable_comment_recaptcha'))
|
8 |
+
{
|
9 |
+
add_filter( 'preprocess_comment' , array($this, 'comment_spam_check' ) );
|
10 |
+
add_action( 'comment_form_after_fields' , array($this, 'comment_spam_custom_field' ) );
|
11 |
+
}
|
12 |
+
}
|
13 |
+
|
14 |
+
function comment_spam_check( $comment_data )
|
15 |
+
{
|
16 |
+
if(!is_user_logged_in()){
|
17 |
+
global $moWpnsUtility;
|
18 |
+
if( isset($_POST['mocomment']) && !empty($_POST['mocomment']))
|
19 |
+
wp_die( __( 'You are not authorised to perform this action.'));
|
20 |
+
else if(get_option('mo_wpns_enable_comment_recaptcha'))
|
21 |
+
{
|
22 |
+
if(is_wp_error($moWpnsUtility->verify_recaptcha($_POST['g-recaptcha-response'])))
|
23 |
+
wp_die( __( 'Invalid captcha. Please verify captcha again.'));
|
24 |
+
}
|
25 |
+
return $comment_data;
|
26 |
+
}
|
27 |
+
else{
|
28 |
+
return $comment_data;
|
29 |
+
}
|
30 |
+
}
|
31 |
+
|
32 |
+
function comment_spam_custom_field()
|
33 |
+
{
|
34 |
+
echo '<input type="hidden" name="mocomment" />';
|
35 |
+
if(get_option('mo_wpns_enable_comment_recaptcha'))
|
36 |
+
{
|
37 |
+
echo '<script src="'.MoWpnsConstants::RECAPTCHA_URL.'"></script>';
|
38 |
+
echo '<div class="g-recaptcha" data-sitekey="'.get_option('mo_wpns_recaptcha_site_key').'"></div>';
|
39 |
+
}
|
40 |
+
}
|
41 |
+
}
|
42 |
new Spam;
|
handler/twofa/class_miniorange_2fa_strong_password.php
CHANGED
@@ -2,17 +2,14 @@
|
|
2 |
|
3 |
class class_miniorange_2fa_strong_password {
|
4 |
|
5 |
-
function __construct(){
|
6 |
-
|
7 |
-
add_option( 'mo2f_enforce_strong_passswords', false);
|
8 |
-
|
9 |
}
|
10 |
|
11 |
public static function woocommerce_password_protection($errors, $username, $password, $email) {
|
12 |
if ($password == false) { return $errors; }
|
13 |
if ($errors->get_error_data("pass")) { return $errors; }
|
14 |
|
15 |
-
$enforceStrongPasswds =
|
16 |
|
17 |
if ($enforceStrongPasswds && !class_miniorange_2fa_strong_password::mo2f_isStrongPasswd($password, $username)) {
|
18 |
$errors->add('pass', __('Please choose a stronger password. Try including numbers, symbols, and a mix of upper and lowercase letters and remove common words.'));
|
@@ -22,7 +19,7 @@ class class_miniorange_2fa_strong_password {
|
|
22 |
return $errors;
|
23 |
}
|
24 |
public static function validatePassword($errors, $update, $userData){
|
25 |
-
$Users =
|
26 |
$UserRole = $_POST['role'];
|
27 |
if(is_null($UserRole) and $Users == 'user')
|
28 |
{
|
@@ -39,7 +36,7 @@ class class_miniorange_2fa_strong_password {
|
|
39 |
if ($password == false) { return $errors; }
|
40 |
if ($errors->get_error_data("pass")) { return $errors; }
|
41 |
|
42 |
-
$enforceStrongPasswds =
|
43 |
if ($enforceStrongPasswds && !class_miniorange_2fa_strong_password::mo2f_isStrongPasswd($password, $username)) {
|
44 |
$errors->add('pass', __('Please choose a stronger password. Try including numbers, symbols, and a mix of upper and lowercase letters and remove common words.'));
|
45 |
return $errors;
|
@@ -61,7 +58,7 @@ class class_miniorange_2fa_strong_password {
|
|
61 |
$password=$_POST['password_1'];
|
62 |
$user =get_userdata($user->ID);
|
63 |
$username=$user->user_login;
|
64 |
-
$enforceStrongPasswds =
|
65 |
|
66 |
if ($enforceStrongPasswds && !class_miniorange_2fa_strong_password::mo2f_isStrongPasswd($password, $username)) {
|
67 |
$errors->add('pass', __('Please choose a stronger password. Try including numbers, symbols, and a mix of upper and lowercase letters and remove common words.'));
|
@@ -71,7 +68,7 @@ class class_miniorange_2fa_strong_password {
|
|
71 |
|
72 |
public static function is_validPassword($errors, $username, $password){
|
73 |
|
74 |
-
$enforceStrongPasswds =
|
75 |
if ($enforceStrongPasswds && !class_miniorange_2fa_strong_password::mo2f_isStrongPasswd($password, $username)) {
|
76 |
$errors->add('pass', __('Please choose a stronger password. Try including numbers, symbols, and a mix of upper and lowercase letters and remove common words.'));
|
77 |
return $errors;
|
2 |
|
3 |
class class_miniorange_2fa_strong_password {
|
4 |
|
5 |
+
function __construct(){
|
|
|
|
|
|
|
6 |
}
|
7 |
|
8 |
public static function woocommerce_password_protection($errors, $username, $password, $email) {
|
9 |
if ($password == false) { return $errors; }
|
10 |
if ($errors->get_error_data("pass")) { return $errors; }
|
11 |
|
12 |
+
$enforceStrongPasswds = MoWpnsUtility::get_mo2f_db_option('mo2f_enforce_strong_passswords', 'get_option');
|
13 |
|
14 |
if ($enforceStrongPasswds && !class_miniorange_2fa_strong_password::mo2f_isStrongPasswd($password, $username)) {
|
15 |
$errors->add('pass', __('Please choose a stronger password. Try including numbers, symbols, and a mix of upper and lowercase letters and remove common words.'));
|
19 |
return $errors;
|
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 |
{
|
36 |
if ($password == false) { return $errors; }
|
37 |
if ($errors->get_error_data("pass")) { return $errors; }
|
38 |
|
39 |
+
$enforceStrongPasswds = MoWpnsUtility::get_mo2f_db_option('mo2f_enforce_strong_passswords', 'get_option');
|
40 |
if ($enforceStrongPasswds && !class_miniorange_2fa_strong_password::mo2f_isStrongPasswd($password, $username)) {
|
41 |
$errors->add('pass', __('Please choose a stronger password. Try including numbers, symbols, and a mix of upper and lowercase letters and remove common words.'));
|
42 |
return $errors;
|
58 |
$password=$_POST['password_1'];
|
59 |
$user =get_userdata($user->ID);
|
60 |
$username=$user->user_login;
|
61 |
+
$enforceStrongPasswds = MoWpnsUtility::get_mo2f_db_option('mo2f_enforce_strong_passswords', 'get_option');
|
62 |
|
63 |
if ($enforceStrongPasswds && !class_miniorange_2fa_strong_password::mo2f_isStrongPasswd($password, $username)) {
|
64 |
$errors->add('pass', __('Please choose a stronger password. Try including numbers, symbols, and a mix of upper and lowercase letters and remove common words.'));
|
68 |
|
69 |
public static function is_validPassword($errors, $username, $password){
|
70 |
|
71 |
+
$enforceStrongPasswds = MoWpnsUtility::get_mo2f_db_option('mo2f_enforce_strong_passswords', 'get_option');
|
72 |
if ($enforceStrongPasswds && !class_miniorange_2fa_strong_password::mo2f_isStrongPasswd($password, $username)) {
|
73 |
$errors->add('pass', __('Please choose a stronger password. Try including numbers, symbols, and a mix of upper and lowercase letters and remove common words.'));
|
74 |
return $errors;
|
handler/twofa/setup_twofa.php
CHANGED
@@ -119,14 +119,14 @@
|
|
119 |
"" => ""
|
120 |
);
|
121 |
$two_factor_methods_video = array(
|
122 |
-
"Security Questions" => "",
|
123 |
-
"Google Authenticator" => "https://www.youtube.com/watch?v=
|
124 |
-
"miniOrange QR Code Authentication" => "",
|
125 |
-
"Email Verification" => "",
|
126 |
-
"miniOrange Soft Token" => "",
|
127 |
-
"miniOrange Push Notification" => "",
|
128 |
-
"Authy Authenticator" => "",
|
129 |
-
"OTP Over SMS" => "",
|
130 |
"OTP Over Email" => "",
|
131 |
"OTP Over SMS and Email" => "",
|
132 |
"Hardware Token" => "",
|
@@ -168,7 +168,7 @@
|
|
168 |
|
169 |
$is_customer_registered = $Mo2fdbQueries->get_user_detail( 'user_registration_with_miniorange', $user->ID ) == 'SUCCESS' ? true : false;
|
170 |
$can_user_configure_2fa_method = $can_display_admin_features || ( !$can_display_admin_features && $is_customer_registered );
|
171 |
-
$is_NC =
|
172 |
$is_EC = ! $is_NC;
|
173 |
|
174 |
$form = '<div class="overlay1" id="overlay" hidden ></div>';
|
@@ -253,7 +253,9 @@
|
|
253 |
$form .=' <span style="float:right">
|
254 |
<a href='.$two_factor_methods_doc[$auth_method].' target="_blank">
|
255 |
<span class="dashicons dashicons-text-page" style="font-size:19px;color:#269eb3;float: right;"></span>
|
256 |
-
|
|
|
|
|
257 |
</a>
|
258 |
|
259 |
|
@@ -266,7 +268,9 @@
|
|
266 |
<span class="dashicons dashicons-text-page" style="font-size:19px;color:#269eb3;float: right;"></span>
|
267 |
|
268 |
</a>
|
269 |
-
|
|
|
|
|
270 |
|
271 |
</span>';
|
272 |
break;
|
@@ -279,7 +283,9 @@
|
|
279 |
|
280 |
</a>
|
281 |
|
282 |
-
|
|
|
|
|
283 |
</span>';
|
284 |
|
285 |
break;
|
@@ -290,7 +296,9 @@
|
|
290 |
<span class="dashicons dashicons-text-page" style="font-size:19px;color:#269eb3;float: right;"></span>
|
291 |
|
292 |
</a>
|
293 |
-
|
|
|
|
|
294 |
|
295 |
</span>';
|
296 |
|
@@ -302,10 +310,38 @@
|
|
302 |
<span class="dashicons dashicons-text-page" style="font-size:19px;color:#269eb3;float: right;"></span>
|
303 |
|
304 |
</a>
|
|
|
|
|
|
|
|
|
|
|
|
|
305 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
306 |
|
307 |
</span>';
|
308 |
-
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
309 |
|
310 |
default:
|
311 |
{$form .= "";}
|
@@ -322,7 +358,8 @@
|
|
322 |
if ( $is_auth_method_av && $category == 'free_plan' ) {
|
323 |
|
324 |
$is_auth_method_configured = $Mo2fdbQueries->get_user_detail( 'mo2f_' . $auth_method_abr . '_config_status', $user->ID );
|
325 |
-
|
|
|
326 |
$form .= '<div style="height:40px;width:100%;position: absolute;bottom: 0;background-color:';
|
327 |
$iscurrentMethod = 0;
|
328 |
if(MO2F_IS_ONPREM)
|
@@ -400,7 +437,9 @@
|
|
400 |
$allowed = 2;
|
401 |
$form .= ';color:white">';
|
402 |
$check = !$is_customer_registered? true : ($auth_method != "Email Verification" and $auth_method != "OTP Over Email"? true : false);
|
403 |
-
|
|
|
|
|
404 |
if ( $check ) {
|
405 |
$form .= '<div class="mo2f_configure_2_factor">
|
406 |
<button type="button" id="'.$auth_method_abr.'_configuration" class="mo2f_configure_set_2_factor" onclick="configureOrSet2ndFactor_' . $category . '(\'' . $auth_method_abr . '\', \'configure2factor\','.$cloudswitch.','.$allowed.');"';
|
@@ -494,7 +533,6 @@ function mo2f_get_activated_second_factor( $user ) {
|
|
494 |
function mo2f_update_and_sync_user_two_factor( $user_id, $userinfo ) {
|
495 |
global $Mo2fdbQueries;
|
496 |
$mo2f_second_factor = isset( $userinfo['authType'] ) && ! empty( $userinfo['authType'] ) ? $userinfo['authType'] : 'NONE';
|
497 |
-
|
498 |
if(MO2F_IS_ONPREM)
|
499 |
{
|
500 |
$mo2f_second_factor = $Mo2fdbQueries->get_user_detail( 'mo2f_configured_2FA_method', $user_id );
|
@@ -646,6 +684,9 @@ function mo2f_show_2FA_configuration_screen( $user, $selected2FAmethod ) {
|
|
646 |
case "miniOrange Push Notification":
|
647 |
mo2f_configure_miniorange_authenticator( $user );
|
648 |
break;
|
|
|
|
|
|
|
649 |
}
|
650 |
|
651 |
}
|
119 |
"" => ""
|
120 |
);
|
121 |
$two_factor_methods_video = array(
|
122 |
+
"Security Questions" => "https://www.youtube.com/watch?v=pXPqQ047o-0",
|
123 |
+
"Google Authenticator" => "https://www.youtube.com/watch?v=BS6tY-Goa1Q",
|
124 |
+
"miniOrange QR Code Authentication" => "https://www.youtube.com/watch?v=IPYizmgzTd8",
|
125 |
+
"Email Verification" => "https://www.youtube.com/watch?v=OacJWBYx_AE",
|
126 |
+
"miniOrange Soft Token" => "https://www.youtube.com/watch?v=9HV8V4f80k8",
|
127 |
+
"miniOrange Push Notification" => "https://www.youtube.com/watch?v=it_dAhFcxvw",
|
128 |
+
"Authy Authenticator" => "https://www.youtube.com/watch?v=fV-VnC_5Q5c",
|
129 |
+
"OTP Over SMS" => "https://www.youtube.com/watch?v=ag_E1Bmen-c",
|
130 |
"OTP Over Email" => "",
|
131 |
"OTP Over SMS and Email" => "",
|
132 |
"Hardware Token" => "",
|
168 |
|
169 |
$is_customer_registered = $Mo2fdbQueries->get_user_detail( 'user_registration_with_miniorange', $user->ID ) == 'SUCCESS' ? true : false;
|
170 |
$can_user_configure_2fa_method = $can_display_admin_features || ( !$can_display_admin_features && $is_customer_registered );
|
171 |
+
$is_NC = MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option');
|
172 |
$is_EC = ! $is_NC;
|
173 |
|
174 |
$form = '<div class="overlay1" id="overlay" hidden ></div>';
|
253 |
$form .=' <span style="float:right">
|
254 |
<a href='.$two_factor_methods_doc[$auth_method].' target="_blank">
|
255 |
<span class="dashicons dashicons-text-page" style="font-size:19px;color:#269eb3;float: right;"></span>
|
256 |
+
</a>
|
257 |
+
<a href='.$two_factor_methods_video[$auth_method].' target="_blank">
|
258 |
+
<span class="dashicons dashicons-video-alt3" style="font-size:18px;color:red;float: right; margin-right: 5px;"></span>
|
259 |
</a>
|
260 |
|
261 |
|
268 |
<span class="dashicons dashicons-text-page" style="font-size:19px;color:#269eb3;float: right;"></span>
|
269 |
|
270 |
</a>
|
271 |
+
<a href='.$two_factor_methods_video[$auth_method].' target="_blank">
|
272 |
+
<span class="dashicons dashicons-video-alt3" style="font-size:18px;color:red;float: right; margin-right: 5px;"></span>
|
273 |
+
</a>
|
274 |
|
275 |
</span>';
|
276 |
break;
|
283 |
|
284 |
</a>
|
285 |
|
286 |
+
<a href='.$two_factor_methods_video[$auth_method].' target="_blank">
|
287 |
+
<span class="dashicons dashicons-video-alt3" style="font-size:18px;color:red;float: right; margin-right: 5px;"></span>
|
288 |
+
</a>
|
289 |
</span>';
|
290 |
|
291 |
break;
|
296 |
<span class="dashicons dashicons-text-page" style="font-size:19px;color:#269eb3;float: right;"></span>
|
297 |
|
298 |
</a>
|
299 |
+
<a href='.$two_factor_methods_video[$auth_method].' target="_blank">
|
300 |
+
<span class="dashicons dashicons-video-alt3" style="font-size:18px;color:red;float: right; margin-right: 5px;"></span>
|
301 |
+
</a>
|
302 |
|
303 |
</span>';
|
304 |
|
310 |
<span class="dashicons dashicons-text-page" style="font-size:19px;color:#269eb3;float: right;"></span>
|
311 |
|
312 |
</a>
|
313 |
+
<a href='.$two_factor_methods_video[$auth_method].' target="_blank">
|
314 |
+
<span class="dashicons dashicons-video-alt3" style="font-size:18px;color:red;float: right; margin-right: 5px;"></span>
|
315 |
+
</a>
|
316 |
+
|
317 |
+
</span>';
|
318 |
+
break;
|
319 |
|
320 |
+
case 'Email Verification':
|
321 |
+
$form .=' <span style="float:right">
|
322 |
+
<a href='.$two_factor_methods_doc[$auth_method].' target="_blank">
|
323 |
+
<span class="dashicons dashicons-text-page" style="font-size:19px;color:#269eb3;float: right;"></span>
|
324 |
+
|
325 |
+
</a>
|
326 |
+
<a href='.$two_factor_methods_video[$auth_method].' target="_blank">
|
327 |
+
<span class="dashicons dashicons-video-alt3" style="font-size:18px;color:red;float: right; margin-right: 5px;"></span>
|
328 |
+
</a>
|
329 |
|
330 |
</span>';
|
331 |
+
break;
|
332 |
+
case 'Authy Authenticator':
|
333 |
+
$form .=' <span style="float:right">
|
334 |
+
<a href='.$two_factor_methods_doc[$auth_method].' target="_blank">
|
335 |
+
<span class="dashicons dashicons-text-page" style="font-size:19px;color:#269eb3;float: right;"></span>
|
336 |
+
|
337 |
+
</a>
|
338 |
+
<a href='.$two_factor_methods_video[$auth_method].' target="_blank">
|
339 |
+
<span class="dashicons dashicons-video-alt3" style="font-size:18px;color:red;float: right; margin-right: 5px;"></span>
|
340 |
+
</a>
|
341 |
+
|
342 |
+
</span>';
|
343 |
+
|
344 |
+
break;
|
345 |
|
346 |
default:
|
347 |
{$form .= "";}
|
358 |
if ( $is_auth_method_av && $category == 'free_plan' ) {
|
359 |
|
360 |
$is_auth_method_configured = $Mo2fdbQueries->get_user_detail( 'mo2f_' . $auth_method_abr . '_config_status', $user->ID );
|
361 |
+
if(($auth_method == 'OUT OF BAND EMAIL' or $auth_method == 'OTP Over Email') and !MO2F_IS_ONPREM )
|
362 |
+
$is_auth_method_configured = 1;
|
363 |
$form .= '<div style="height:40px;width:100%;position: absolute;bottom: 0;background-color:';
|
364 |
$iscurrentMethod = 0;
|
365 |
if(MO2F_IS_ONPREM)
|
437 |
$allowed = 2;
|
438 |
$form .= ';color:white">';
|
439 |
$check = !$is_customer_registered? true : ($auth_method != "Email Verification" and $auth_method != "OTP Over Email"? true : false);
|
440 |
+
$is_auth_method_configured = !$is_customer_registered ? 0 :1;
|
441 |
+
if(!MO2F_IS_ONPREM and ($auth_method == "Email Verification" or $auth_method == "OTP Over Email"))
|
442 |
+
$check = 0;
|
443 |
if ( $check ) {
|
444 |
$form .= '<div class="mo2f_configure_2_factor">
|
445 |
<button type="button" id="'.$auth_method_abr.'_configuration" class="mo2f_configure_set_2_factor" onclick="configureOrSet2ndFactor_' . $category . '(\'' . $auth_method_abr . '\', \'configure2factor\','.$cloudswitch.','.$allowed.');"';
|
533 |
function mo2f_update_and_sync_user_two_factor( $user_id, $userinfo ) {
|
534 |
global $Mo2fdbQueries;
|
535 |
$mo2f_second_factor = isset( $userinfo['authType'] ) && ! empty( $userinfo['authType'] ) ? $userinfo['authType'] : 'NONE';
|
|
|
536 |
if(MO2F_IS_ONPREM)
|
537 |
{
|
538 |
$mo2f_second_factor = $Mo2fdbQueries->get_user_detail( 'mo2f_configured_2FA_method', $user_id );
|
684 |
case "miniOrange Push Notification":
|
685 |
mo2f_configure_miniorange_authenticator( $user );
|
686 |
break;
|
687 |
+
case "OTP Over Email":
|
688 |
+
mo2f_test_otp_over_email($user,$selected2FAmethod);
|
689 |
+
break;
|
690 |
}
|
691 |
|
692 |
}
|
handler/twofa/two_fa_constants.php
CHANGED
@@ -369,7 +369,7 @@ class Mo2fConstants {
|
|
369 |
break;
|
370 |
|
371 |
case 'SET_2FA_otp':
|
372 |
-
Return mo2f_lt( 'is set as your Two-Factor method.
|
373 |
break;
|
374 |
|
375 |
|
369 |
break;
|
370 |
|
371 |
case 'SET_2FA_otp':
|
372 |
+
Return mo2f_lt( 'is set as your Two-Factor method.' );
|
373 |
break;
|
374 |
|
375 |
|
handler/twofa/two_fa_get_details.php
CHANGED
@@ -1,26 +1,24 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class two_fa_get_details {
|
4 |
-
|
5 |
-
function getUserMethod($userid){
|
6 |
-
$userMethod = get_user_meta($userid,'currentMethod',true);
|
7 |
-
return $userMethod;
|
8 |
-
}
|
9 |
-
function setUserMethod($userid,$currentMethod){
|
10 |
-
$response= update_user_meta($userid,'currentMethod',$currentMethod);
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
$response
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
}
|
26 |
}
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class two_fa_get_details {
|
4 |
+
|
5 |
+
function getUserMethod($userid){
|
6 |
+
$userMethod = get_user_meta($userid,'currentMethod',true);
|
7 |
+
return $userMethod;
|
8 |
+
}
|
9 |
+
function setUserMethod($userid,$currentMethod){
|
10 |
+
$response= update_user_meta($userid,'currentMethod',$currentMethod);
|
11 |
+
return $response;
|
12 |
+
}
|
13 |
+
|
14 |
+
function setUserEmail($userid,$email){
|
15 |
+
$response= update_user_meta($userid,'email',$email);
|
16 |
+
return $response;
|
17 |
+
}
|
18 |
+
|
19 |
+
function getUserEmail($userid){
|
20 |
+
$userEmail = get_user_meta($userid , 'email',true);
|
21 |
+
return $userEmail;
|
22 |
+
|
23 |
+
}
|
|
|
|
|
24 |
}
|
handler/twofa/two_fa_login.php
CHANGED
@@ -30,9 +30,15 @@ class Miniorange_Mobile_Login {
|
|
30 |
global $Mo2fdbQueries;
|
31 |
$currentuser = wp_authenticate_username_password( $user, $username, $password );
|
32 |
if ( is_wp_error( $currentuser ) ) {
|
33 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
} else {
|
35 |
-
if(MO2F_IS_ONPREM and (!
|
36 |
{
|
37 |
$attributes = isset( $_POST['miniorange_rba_attribures'] ) ? $_POST['miniorange_rba_attribures'] : null;
|
38 |
$session_id = isset( $_POST['session_id'] ) ? $_POST['session_id'] : null;
|
@@ -161,7 +167,7 @@ class Miniorange_Mobile_Login {
|
|
161 |
$bootstrappath = plugins_url( 'includes/css/bootstrap.min.css?version='.MO2F_VERSION.'', dirname(dirname(__FILE__)) );
|
162 |
$bootstrappath = str_replace('/handler/includes/css', '/includes/css', $bootstrappath);
|
163 |
wp_enqueue_style( 'bootstrap_script', $bootstrappath );
|
164 |
-
wp_enqueue_script( 'bootstrap_script', plugins_url( 'includes/js/bootstrap.min.js', dirname(__FILE__ )) );
|
165 |
}
|
166 |
|
167 |
function mo_2_factor_hide_login() {
|
@@ -327,10 +333,10 @@ class Miniorange_Mobile_Login {
|
|
327 |
?>
|
328 |
<input type="button" name="miniorange_login_submit" style="width:100% !important;"
|
329 |
onclick="mouserloginsubmit();" id="miniorange_login_submit"
|
330 |
-
class="button button-
|
331 |
value="<?php echo mo2f_lt( 'Login with 2nd factor' ); ?>"/>
|
332 |
</p>
|
333 |
-
<br
|
334 |
<?php if ( ! $mo2f_enable_login_with_2nd_factor ) { ?><br><br><?php } ?>
|
335 |
</div>
|
336 |
</div>
|
30 |
global $Mo2fdbQueries;
|
31 |
$currentuser = wp_authenticate_username_password( $user, $username, $password );
|
32 |
if ( is_wp_error( $currentuser ) ) {
|
33 |
+
if(MO2f_Utility::get_index_value('GLOBALS','mo2f_is_ajax_request')){
|
34 |
+
$data = array('notice' => '<div style="border-left:3px solid #dc3232;"> Invalid User Credentials', );
|
35 |
+
wp_send_json_success($data);
|
36 |
+
}
|
37 |
+
else{
|
38 |
+
return $currentuser;
|
39 |
+
}
|
40 |
} else {
|
41 |
+
if(MO2F_IS_ONPREM and (!MoWpnsUtility::get_mo2f_db_option('mo2f_login_option', 'get_option') or get_option('mo2f_enable_login_with_2nd_factor')))
|
42 |
{
|
43 |
$attributes = isset( $_POST['miniorange_rba_attribures'] ) ? $_POST['miniorange_rba_attribures'] : null;
|
44 |
$session_id = isset( $_POST['session_id'] ) ? $_POST['session_id'] : null;
|
167 |
$bootstrappath = plugins_url( 'includes/css/bootstrap.min.css?version='.MO2F_VERSION.'', dirname(dirname(__FILE__)) );
|
168 |
$bootstrappath = str_replace('/handler/includes/css', '/includes/css', $bootstrappath);
|
169 |
wp_enqueue_style( 'bootstrap_script', $bootstrappath );
|
170 |
+
wp_enqueue_script( 'bootstrap_script', plugins_url( 'includes/js/bootstrap.min.js', dirname(dirname(__FILE__ ))) );
|
171 |
}
|
172 |
|
173 |
function mo_2_factor_hide_login() {
|
333 |
?>
|
334 |
<input type="button" name="miniorange_login_submit" style="width:100% !important;"
|
335 |
onclick="mouserloginsubmit();" id="miniorange_login_submit"
|
336 |
+
class="miniorange-button button-add"
|
337 |
value="<?php echo mo2f_lt( 'Login with 2nd factor' ); ?>"/>
|
338 |
</p>
|
339 |
+
<br>
|
340 |
<?php if ( ! $mo2f_enable_login_with_2nd_factor ) { ?><br><br><?php } ?>
|
341 |
</div>
|
342 |
</div>
|
handler/twofa/two_fa_pass2login.php
CHANGED
@@ -39,8 +39,8 @@ class Miniorange_Password_2Factor_Login {
|
|
39 |
$redirect_to = isset( $_POST['redirect_to'] ) ? $_POST['redirect_to'] : null;
|
40 |
if( $moWpnsUtility->check_empty_or_null( $email ) || $moWpnsUtility->check_empty_or_null( $password ) )
|
41 |
{
|
42 |
-
|
43 |
-
|
44 |
$this->miniorange_pass2login_form_fields($login_status, $login_message,$redirect_to,null,$session_id_encrypt);
|
45 |
return;
|
46 |
}
|
@@ -91,7 +91,7 @@ class Miniorange_Password_2Factor_Login {
|
|
91 |
|
92 |
if(strcasecmp($customerKey['status'], 'SUCCESS') == 0)
|
93 |
{
|
94 |
-
$this->inline_save_success_customer_config($email, $customerKey['id'], $customerKey['apiKey'], $customerKey['token'], $customerKey['appSecret']);
|
95 |
$this->inline_get_current_customer($user_id,$email,$password,$redirect_to,$session_id_encrypt);
|
96 |
}
|
97 |
|
@@ -103,34 +103,35 @@ class Miniorange_Password_2Factor_Login {
|
|
103 |
|
104 |
}
|
105 |
|
106 |
-
function inline_get_current_customer($
|
107 |
{
|
108 |
global $Mo2fdbQueries;
|
109 |
$customer = new MocURL();
|
|
|
110 |
$content = $customer->get_customer_key($email, $password);
|
111 |
$customerKey = json_decode($content, true);
|
112 |
if(json_last_error() == JSON_ERROR_NONE)
|
113 |
{
|
114 |
if(isset($customerKey['phone'])){
|
115 |
update_option( 'mo_wpns_admin_phone', $customerKey['phone'] );
|
116 |
-
$Mo2fdbQueries->update_user_details( $
|
117 |
}
|
118 |
update_option('mo2f_email',$email);
|
119 |
-
$this->inline_save_success_customer_config($email, $customerKey['id'], $customerKey['apiKey'], $customerKey['token'], $customerKey['appSecret']);
|
120 |
$login_message=MoWpnsMessages::showMessage('REG_SUCCESS');
|
121 |
$login_status="MO_2_FACTOR_PROMPT_USER_FOR_2FA_METHODS";
|
122 |
$this->miniorange_pass2login_form_fields($login_status, $login_message,$redirect_to,null,$session_id_encrypt);
|
123 |
}
|
124 |
else
|
125 |
{
|
126 |
-
$Mo2fdbQueries->update_user_details( $
|
127 |
$login_message=MoWpnsMessages::showMessage('ACCOUNT_EXISTS');
|
128 |
$login_status="MO_2_FACTOR_PROMPT_USER_FOR_2FA_METHODS";
|
129 |
$this->miniorange_pass2login_form_fields($login_status, $login_message,$redirect_to,null,$session_id_encrypt);
|
130 |
}
|
131 |
}
|
132 |
|
133 |
-
function inline_save_success_customer_config($email, $id, $apiKey, $token, $appSecret)
|
134 |
{
|
135 |
global $Mo2fdbQueries;
|
136 |
update_option( 'mo2f_customerKey' , $id );
|
@@ -141,6 +142,9 @@ class Miniorange_Password_2Factor_Login {
|
|
141 |
update_option( 'mo2f_miniorange_admin', $id );
|
142 |
update_option( 'mo_2factor_admin_registration_status', 'MO_2_FACTOR_CUSTOMER_REGISTERED_SUCCESS' );
|
143 |
update_option( 'mo_2factor_user_registration_status', 'MO_2_FACTOR_PLUGIN_SETTINGS' );
|
|
|
|
|
|
|
144 |
}
|
145 |
function mo2f_inline_validate_otp(){
|
146 |
if(isset($_POST['miniorange_inline_validate_otp_nonce'])){
|
@@ -432,7 +436,6 @@ class Miniorange_Password_2Factor_Login {
|
|
432 |
else if($selected_2factor_method == 'MOBILE AUTHENTICATION')
|
433 |
$selected_2factor_method_onprem = 'miniOrange QR Code Authentication';
|
434 |
|
435 |
-
// update_user_meta($user_id,'currentMethod',$selected_2factor_method_onprem);
|
436 |
$response = json_decode($enduser->mo2f_update_userinfo($email,$selected_2factor_method,null,null,null),true);
|
437 |
if(json_last_error() == JSON_ERROR_NONE) { /* Generate Qr code */
|
438 |
if($response['status'] == 'ERROR'){
|
@@ -709,7 +712,7 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
709 |
|
710 |
$Mo2fdbQueries->update_user_details( $user_id, array('mo2f_2factor_enable_2fa_byusers' => 0) );
|
711 |
|
712 |
-
$this->mo2fa_pass2login($redirect_to);
|
713 |
}
|
714 |
}
|
715 |
}
|
@@ -774,10 +777,10 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
774 |
$mo2fa_login_status = 'MO_2_FACTOR_SETUP_SUCCESS';
|
775 |
}
|
776 |
}else if($selected_method == 'OTP OVER EMAIL'){
|
|
|
777 |
if(!MO2F_IS_ONPREM)
|
778 |
{
|
779 |
$current_user = get_userdata($currentUserId);
|
780 |
-
$email = $current_user->user_email;
|
781 |
$response = $this->create_user_in_miniOrange($currentUserId,$email,$selected_method);
|
782 |
if($response['status']=='ERROR') {
|
783 |
$mo2fa_login_status = 'MO_2_FACTOR_PROMPT_USER_FOR_2FA_METHODS';
|
@@ -785,31 +788,16 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
785 |
}
|
786 |
else
|
787 |
{
|
788 |
-
$
|
789 |
-
|
790 |
-
|
791 |
-
|
792 |
-
|
793 |
-
'mo2f_user_email' => $email,
|
794 |
-
'mo_2factor_user_registration_status' => 'MO_2_FACTOR_PLUGIN_SETTINGS'
|
795 |
-
) );
|
796 |
-
$mo2fa_login_status = 'MO_2_FACTOR_SETUP_SUCCESS';
|
797 |
-
$response = json_decode($enduser->mo2f_update_userinfo($email,'EMAIL',null,null,null),true);
|
798 |
-
|
799 |
}
|
800 |
}
|
801 |
else
|
802 |
{
|
803 |
-
$
|
804 |
-
|
805 |
-
$Mo2fdbQueries->update_user_details( $currentUserId,
|
806 |
-
array('mo2f_OTPOverEmail_config_status'=>true,
|
807 |
-
'mo2f_configured_2FA_method' =>'OTP Over Email',
|
808 |
-
'mo2f_user_email' => $email,
|
809 |
-
'mo_2factor_user_registration_status' => 'MO_2_FACTOR_PLUGIN_SETTINGS'
|
810 |
-
) );
|
811 |
-
$mo2fa_login_status = 'MO_2_FACTOR_SETUP_SUCCESS';
|
812 |
-
$response = json_decode($enduser->mo2f_update_userinfo($email,'EMAIL',null,null,null),true);
|
813 |
}
|
814 |
}else if($selected_method == "GOOGLE AUTHENTICATOR"){
|
815 |
$this->miniorange_pass2login_start_session();
|
@@ -932,7 +920,7 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
932 |
$mo2f_rba_status = MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_rba_status',$session_id_encrypt );
|
933 |
$kba_validate = new Customer_Setup();
|
934 |
$kba_validate_response = json_decode( $kba_validate->validate_otp_token( 'KBA', null, $mo2f_login_transaction_id, $otpToken, get_option( 'mo2f_customerKey' ), get_option( 'mo2f_api_key' ) ), true );
|
935 |
-
|
936 |
$email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user_id );
|
937 |
if ( strcasecmp( $kba_validate_response['status'], 'SUCCESS' ) == 0 ) {
|
938 |
if ( get_option( 'mo2f_remember_device' ) && $check_trust_device == 'on' ) {
|
@@ -994,6 +982,25 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
994 |
$this->mo2fa_pass2login( $redirect_to, $session_id_encrypt );
|
995 |
}
|
996 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
997 |
function check_miniorange_challenge_forgotphone($POSTED){/*check kba validation*/
|
998 |
$nonce = $_POST['miniorange_forgotphone'];
|
999 |
if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-forgotphone' ) ) {
|
@@ -1054,6 +1061,7 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
1054 |
}
|
1055 |
function check_miniorange_mobile_validation($POSTED){
|
1056 |
/*check mobile validation */
|
|
|
1057 |
$nonce = $POSTED['miniorange_mobile_validation_nonce'];
|
1058 |
if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-mobile-validation-nonce' ) ) {
|
1059 |
$error = new WP_Error();
|
@@ -1218,10 +1226,16 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
1218 |
$session_id_encrypt = isset( $_POST['session_id'] ) ? $_POST['session_id'] : null;
|
1219 |
$this->remove_current_activity($session_id_encrypt);
|
1220 |
update_option('mo2f_attempts_before_redirect', 3);
|
|
|
|
|
|
|
|
|
|
|
1221 |
return new WP_Error( 'limit_exceeded', '<strong>ERROR</strong>: Number of attempts exceeded.');
|
1222 |
}
|
1223 |
}
|
1224 |
}
|
|
|
1225 |
global $Mo2fdbQueries;
|
1226 |
$user_email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user_id );
|
1227 |
if ( isset( $user_id ) ) {
|
@@ -1230,6 +1244,7 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
1230 |
$current_user = get_userdata($user_id);
|
1231 |
//if the php session folder has insufficient permissions, cookies to be used
|
1232 |
$mo2f_login_transaction_id = MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_transactionId', $session_id_encrypt );
|
|
|
1233 |
if ( isset( $mo2fa_login_status ) && $mo2fa_login_status == 'MO_2_FACTOR_CHALLENGE_OTP_OVER_EMAIL' ) {
|
1234 |
$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 );
|
1235 |
} else if ( isset( $mo2fa_login_status ) && $mo2fa_login_status == 'MO_2_FACTOR_CHALLENGE_OTP_OVER_SMS' ) {
|
@@ -1244,12 +1259,21 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
1244 |
$this->remove_current_activity($session_id_encrypt);
|
1245 |
return new WP_Error( 'invalid_username', __( '<strong>ERROR</strong>: Invalid Request. Please try again.' ) );
|
1246 |
}
|
|
|
1247 |
if ( strcasecmp( $content['status'], 'SUCCESS' ) == 0 ) {
|
1248 |
update_option('mo2f_attempts_before_redirect', 3);
|
1249 |
if ( get_option( 'mo2f_remember_device' ) ) {
|
1250 |
$mo2fa_login_status = 'MO_2_FACTOR_REMEMBER_TRUSTED_DEVICE';
|
1251 |
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, null, $redirect_to,null,$session_id_encrypt );
|
1252 |
} else {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1253 |
$this->mo2fa_pass2login( $redirect_to, $session_id_encrypt );
|
1254 |
}
|
1255 |
} else {
|
@@ -1262,6 +1286,11 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
1262 |
$session_id_encrypt = isset( $_POST['session_id'] ) ? $_POST['session_id'] : null;
|
1263 |
$this->remove_current_activity($session_id_encrypt);
|
1264 |
update_option('mo2f_attempts_before_redirect', 3);
|
|
|
|
|
|
|
|
|
|
|
1265 |
return new WP_Error( 'limit_exceeded', '<strong>ERROR</strong>: Number of attempts exceeded.');
|
1266 |
}
|
1267 |
}
|
@@ -1296,7 +1325,7 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
1296 |
do_action('mo2f_network_init');
|
1297 |
global $Mo2fdbQueries;
|
1298 |
|
1299 |
-
if ( !
|
1300 |
if ( isset( $_POST['miniorange_login_nonce'] ) ) {
|
1301 |
$nonce = $_POST['miniorange_login_nonce'];
|
1302 |
$session_id = isset( $_POST['session_id'] ) ? $_POST['session_id'] : null;
|
@@ -1501,6 +1530,10 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
1501 |
$this->check_miniorange_challenge_forgotphone($_POST);
|
1502 |
break;
|
1503 |
|
|
|
|
|
|
|
|
|
1504 |
case 'miniorange_alternate_login_kba':
|
1505 |
|
1506 |
$this->check_miniorange_alternate_login_kba($_POST);
|
@@ -1728,8 +1761,8 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
1728 |
}
|
1729 |
}
|
1730 |
|
1731 |
-
function miniorange_pass2login_form_fields( $mo2fa_login_status = null, $mo2fa_login_message = null, $redirect_to = null, $qrCode = null, $session_id_encrypt ) {
|
1732 |
-
|
1733 |
$login_status = $mo2fa_login_status;
|
1734 |
$login_message = $mo2fa_login_message;
|
1735 |
switch ($login_status) {
|
@@ -1745,7 +1778,7 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
1745 |
break;
|
1746 |
case 'MO_2_FACTOR_CHALLENGE_OTP_OVER_EMAIL':
|
1747 |
$user_id = $this->mo2f_userID ? $this->mo2f_userID : MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_current_user_id',$session_id_encrypt );
|
1748 |
-
mo2f_get_otp_authentication_prompt( $login_status, $login_message, $redirect_to, $session_id_encrypt,$user_id
|
1749 |
exit;
|
1750 |
break;
|
1751 |
case 'MO_2_FACTOR_CHALLENGE_OTP_OVER_SMS':
|
@@ -1915,6 +1948,9 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
1915 |
if(is_null($session_id_encrypt)) {
|
1916 |
$session_id_encrypt=$this->create_session();
|
1917 |
}
|
|
|
|
|
|
|
1918 |
?>
|
1919 |
<p><input type="hidden" name="miniorange_login_nonce"
|
1920 |
value="<?php echo wp_create_nonce( 'miniorange-2-factor-login-nonce' ); ?>"/>
|
@@ -1941,7 +1977,7 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
1941 |
}else{
|
1942 |
|
1943 |
|
1944 |
-
if(
|
1945 |
{
|
1946 |
echo "\t<p>\n";
|
1947 |
echo "\t\t<label class=\"mo2f_instuction1\" title=\"".__('If you don\'t have 2-factor authentication enabled for your WordPress account, leave this field empty.','google-authenticator')."\">".__('2 Factor Authentication code*','google-authenticator')."<span id=\"google-auth-info\"></span><br />\n";
|
@@ -2019,7 +2055,7 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
2019 |
}else {
|
2020 |
$content = $challengeMobile->send_otp_token( $user_email, $mo2f_second_factor, get_option( 'mo2f_customerKey' ), get_option( 'mo2f_api_key' ) );
|
2021 |
}
|
2022 |
-
|
2023 |
if ( json_last_error() == JSON_ERROR_NONE ) { /* Generate Qr code */
|
2024 |
if ( $response['status'] == 'SUCCESS' ) {
|
2025 |
MO2f_Utility::set_user_values( $session_id, "mo2f_transactionId", $response['txId'] );
|
@@ -2053,11 +2089,10 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
2053 |
if($mo2f_second_factor == 'EMAIL')
|
2054 |
{
|
2055 |
$mo2f_user_phone = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user->ID );
|
2056 |
-
$wdewdeqdqq =
|
2057 |
-
|
2058 |
-
if($wdewdeqdqq >10 or get_option(base64_encode("limitReached")))
|
2059 |
{
|
2060 |
-
|
2061 |
}
|
2062 |
}
|
2063 |
else
|
@@ -2075,7 +2110,7 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
2075 |
$content = '';
|
2076 |
$response = [];
|
2077 |
$otpLIMiTE = 0;
|
2078 |
-
if(
|
2079 |
{
|
2080 |
if($mo2f_second_factor == 'OTP Over SMS')
|
2081 |
$mo2f_second_factor = 'SMS';
|
@@ -2093,7 +2128,7 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
2093 |
if ( $response['status'] == 'SUCCESS' ) {
|
2094 |
if($mo2f_second_factor == 'EMAIL')
|
2095 |
{
|
2096 |
-
$cmVtYWluaW5nT1RQ =
|
2097 |
update_site_option("cmVtYWluaW5nT1RQ",$cmVtYWluaW5nT1RQ-1);
|
2098 |
}
|
2099 |
elseif($mo2f_second_factor == 'SMS')
|
@@ -2103,7 +2138,7 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
2103 |
if(!isset($response['phoneDelivery']['contact']))
|
2104 |
$response['phoneDelivery']['contact'] = '';
|
2105 |
$message = 'The OTP has been sent to ' . MO2f_Utility::get_hidden_phone( $response['phoneDelivery']['contact'] ) . '. Please enter the OTP you received to Validate.';
|
2106 |
-
update_option( 'mo2f_number_of_transactions',
|
2107 |
MO2f_Utility::set_user_values( $session_id, "mo2f_transactionId", $response['txId'] );
|
2108 |
$this->mo2f_transactionid=$response['txId'];
|
2109 |
$mo2fa_login_message = $message;
|
@@ -2187,6 +2222,32 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
2187 |
$session_id_encrypt=$this->create_session();
|
2188 |
}
|
2189 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2190 |
MO2f_Utility::set_user_values($session_id_encrypt, 'mo2f_current_user_id', $currentuser->ID);
|
2191 |
MO2f_Utility::set_user_values($session_id_encrypt, 'mo2f_1stfactor_status', 'VALIDATE_SUCCESS');
|
2192 |
|
@@ -2210,7 +2271,7 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
2210 |
$mo_2factor_user_registration_status = $Mo2fdbQueries->get_user_detail( 'mo_2factor_user_registration_status', $currentuser->ID );
|
2211 |
$kba_configuration_status = $Mo2fdbQueries->get_user_detail( 'mo2f_SecurityQuestions_config_status', $currentuser->ID );
|
2212 |
|
2213 |
-
if(
|
2214 |
$mo2f_allwed_login_attempts=get_option('mo2f_allwed_login_attempts');
|
2215 |
}else{
|
2216 |
$mo2f_allwed_login_attempts= 'disabled';
|
@@ -2219,6 +2280,9 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
2219 |
|
2220 |
$twofactor_transactions = new Mo2fDB;
|
2221 |
$exceeded = $twofactor_transactions->check_alluser_limit_exceeded($currentuser->ID);
|
|
|
|
|
|
|
2222 |
|
2223 |
if ( $mo_2factor_user_registration_status == 'MO_2_FACTOR_PLUGIN_SETTINGS' ) { //checking if user has configured any 2nd factor method
|
2224 |
$email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $currentuser->ID );
|
@@ -2263,7 +2327,7 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
2263 |
else if($mo2f_second_factor == 'OTP Over Email' || $mo2f_second_factor == 'OTP OVER EMAIL' || $mo2f_second_factor == "EMAIL") {
|
2264 |
$mo2f_second_factor = "EMAIL";
|
2265 |
|
2266 |
-
if(
|
2267 |
{
|
2268 |
update_site_option("bGltaXRSZWFjaGVk",1);
|
2269 |
|
@@ -2271,8 +2335,7 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
2271 |
}
|
2272 |
|
2273 |
|
2274 |
-
|
2275 |
-
if((($mo2f_second_factor == 'GOOGLE AUTHENTICATOR') || ($mo2f_second_factor =='SOFT TOKEN') || ($mo2f_second_factor =='AUTHY AUTHENTICATOR')) && get_option('mo2f_enable_2fa_prompt_on_login_page')&& !get_option('mo2f_remember_device') && !isset($_POST['mo_woocommerce_login_prompt']) )
|
2276 |
{
|
2277 |
$error=$this->mo2f_validate_soft_token($currentuser, $redirect_to, $mo2f_second_factor, $otp_token,$session_id_encrypt);
|
2278 |
if(is_wp_error( $error))
|
@@ -2295,26 +2358,41 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
2295 |
} else if ( $mo2f_second_factor == 'KBA' or $mo2f_second_factor == 'Security Questions') {
|
2296 |
$this->mo2f_pass2login_kba_verification( $currentuser->ID, $redirect_to , $session_id_encrypt );
|
2297 |
} else if ( $mo2f_second_factor == 'NONE' ) {
|
2298 |
-
|
|
|
|
|
|
|
2299 |
} else {
|
2300 |
$this->remove_current_activity($session_id_encrypt);
|
2301 |
$error = new WP_Error();
|
2302 |
-
|
2303 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
2304 |
}
|
2305 |
}
|
2306 |
}
|
2307 |
|
2308 |
}
|
2309 |
-
}else if(!$exceeded &&
|
2310 |
$this->mo2fa_inline( $currentuser, $redirect_to, $session_id_encrypt );
|
2311 |
|
2312 |
} else {
|
2313 |
-
|
|
|
|
|
|
|
2314 |
}
|
2315 |
|
2316 |
} else { //plugin is not activated for current role then logged him in without asking 2 factor
|
2317 |
-
|
|
|
|
|
|
|
2318 |
}
|
2319 |
|
2320 |
}
|
@@ -2352,10 +2430,55 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
2352 |
$this->mo2fa_pass2login( $redirect_to, $session_id_encrypt );
|
2353 |
}
|
2354 |
} else {
|
2355 |
-
|
|
|
|
|
|
|
|
|
|
|
2356 |
}
|
2357 |
}
|
2358 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2359 |
function mo2f_restrict_access( $identity ) {
|
2360 |
apply_filters( 'mo2f_rba_addon', $identity );
|
2361 |
exit;
|
@@ -2379,12 +2502,16 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
2379 |
|
2380 |
function mo2f_check_username_password( $user, $username, $password, $redirect_to = null ) {
|
2381 |
if ( is_a( $user, 'WP_Error' ) && ! empty( $user ) ) {
|
2382 |
-
|
|
|
|
|
|
|
|
|
|
|
2383 |
}
|
2384 |
if($GLOBALS['pagenow'] == 'wp-login.php' && isset($_POST['mo_woocommerce_login_prompt'])){
|
2385 |
return new WP_Error( 'Unauthorized Access.' , '<strong>ERROR</strong>: Access Denied.');
|
2386 |
}
|
2387 |
-
|
2388 |
// if an app password is enabled, this is an XMLRPC / APP login ?
|
2389 |
if ( defined( 'XMLRPC_REQUEST' ) && XMLRPC_REQUEST ) {
|
2390 |
|
@@ -2400,8 +2527,14 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
2400 |
} else {
|
2401 |
$currentuser = wp_authenticate_username_password( $user, $username, $password );
|
2402 |
if ( is_wp_error( $currentuser ) ) {
|
2403 |
-
|
2404 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
2405 |
} else {
|
2406 |
global $Mo2fdbQueries;
|
2407 |
$session_id = isset( $_POST['session_id'] ) ? $_POST['session_id'] : null;
|
@@ -2419,7 +2552,7 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
2419 |
}
|
2420 |
else
|
2421 |
{
|
2422 |
-
if ( empty( $_POST['mo_softtoken'] ) &&
|
2423 |
{
|
2424 |
|
2425 |
|
@@ -2427,7 +2560,12 @@ function create_user_in_miniOrange($current_user_id,$email,$currentMethod)
|
|
2427 |
|
2428 |
$this->miniorange_initiate_2nd_factor( $currentuser, "", "","");
|
2429 |
}
|
2430 |
-
|
|
|
|
|
|
|
|
|
|
|
2431 |
// Prevent PHP notices when using app password login
|
2432 |
|
2433 |
}
|
39 |
$redirect_to = isset( $_POST['redirect_to'] ) ? $_POST['redirect_to'] : null;
|
40 |
if( $moWpnsUtility->check_empty_or_null( $email ) || $moWpnsUtility->check_empty_or_null( $password ) )
|
41 |
{
|
42 |
+
$login_message=MoWpnsMessages::showMessage('REQUIRED_FIELDS');
|
43 |
+
$login_status="MO_2_FACTOR_PROMPT_USER_FOR_2FA_METHODS";
|
44 |
$this->miniorange_pass2login_form_fields($login_status, $login_message,$redirect_to,null,$session_id_encrypt);
|
45 |
return;
|
46 |
}
|
91 |
|
92 |
if(strcasecmp($customerKey['status'], 'SUCCESS') == 0)
|
93 |
{
|
94 |
+
$this->inline_save_success_customer_config($user_id,$email, $customerKey['id'], $customerKey['apiKey'], $customerKey['token'], $customerKey['appSecret']);
|
95 |
$this->inline_get_current_customer($user_id,$email,$password,$redirect_to,$session_id_encrypt);
|
96 |
}
|
97 |
|
103 |
|
104 |
}
|
105 |
|
106 |
+
function inline_get_current_customer($user_id,$email,$password,$redirect_to,$session_id_encrypt)
|
107 |
{
|
108 |
global $Mo2fdbQueries;
|
109 |
$customer = new MocURL();
|
110 |
+
|
111 |
$content = $customer->get_customer_key($email, $password);
|
112 |
$customerKey = json_decode($content, true);
|
113 |
if(json_last_error() == JSON_ERROR_NONE)
|
114 |
{
|
115 |
if(isset($customerKey['phone'])){
|
116 |
update_option( 'mo_wpns_admin_phone', $customerKey['phone'] );
|
117 |
+
$Mo2fdbQueries->update_user_details( $user_id, array( 'mo2f_user_phone' => $customerKey['phone'] ) );
|
118 |
}
|
119 |
update_option('mo2f_email',$email);
|
120 |
+
$this->inline_save_success_customer_config($user_id,$email, $customerKey['id'], $customerKey['apiKey'], $customerKey['token'], $customerKey['appSecret']);
|
121 |
$login_message=MoWpnsMessages::showMessage('REG_SUCCESS');
|
122 |
$login_status="MO_2_FACTOR_PROMPT_USER_FOR_2FA_METHODS";
|
123 |
$this->miniorange_pass2login_form_fields($login_status, $login_message,$redirect_to,null,$session_id_encrypt);
|
124 |
}
|
125 |
else
|
126 |
{
|
127 |
+
$Mo2fdbQueries->update_user_details( $user_id, array( 'mo_2factor_user_registration_status' => 'MO_2_FACTOR_VERIFY_CUSTOMER' ) );
|
128 |
$login_message=MoWpnsMessages::showMessage('ACCOUNT_EXISTS');
|
129 |
$login_status="MO_2_FACTOR_PROMPT_USER_FOR_2FA_METHODS";
|
130 |
$this->miniorange_pass2login_form_fields($login_status, $login_message,$redirect_to,null,$session_id_encrypt);
|
131 |
}
|
132 |
}
|
133 |
|
134 |
+
function inline_save_success_customer_config($user_id,$email, $id, $apiKey, $token, $appSecret)
|
135 |
{
|
136 |
global $Mo2fdbQueries;
|
137 |
update_option( 'mo2f_customerKey' , $id );
|
142 |
update_option( 'mo2f_miniorange_admin', $id );
|
143 |
update_option( 'mo_2factor_admin_registration_status', 'MO_2_FACTOR_CUSTOMER_REGISTERED_SUCCESS' );
|
144 |
update_option( 'mo_2factor_user_registration_status', 'MO_2_FACTOR_PLUGIN_SETTINGS' );
|
145 |
+
$Mo2fdbQueries->update_user_details( $user_id, array(
|
146 |
+
'mo2f_user_email' =>$email
|
147 |
+
) );
|
148 |
}
|
149 |
function mo2f_inline_validate_otp(){
|
150 |
if(isset($_POST['miniorange_inline_validate_otp_nonce'])){
|
436 |
else if($selected_2factor_method == 'MOBILE AUTHENTICATION')
|
437 |
$selected_2factor_method_onprem = 'miniOrange QR Code Authentication';
|
438 |
|
|
|
439 |
$response = json_decode($enduser->mo2f_update_userinfo($email,$selected_2factor_method,null,null,null),true);
|
440 |
if(json_last_error() == JSON_ERROR_NONE) { /* Generate Qr code */
|
441 |
if($response['status'] == 'ERROR'){
|
712 |
|
713 |
$Mo2fdbQueries->update_user_details( $user_id, array('mo2f_2factor_enable_2fa_byusers' => 0) );
|
714 |
|
715 |
+
$this->mo2fa_pass2login($redirect_to,$session_id_encrypt);
|
716 |
}
|
717 |
}
|
718 |
}
|
777 |
$mo2fa_login_status = 'MO_2_FACTOR_SETUP_SUCCESS';
|
778 |
}
|
779 |
}else if($selected_method == 'OTP OVER EMAIL'){
|
780 |
+
$email = $current_user->user_email;
|
781 |
if(!MO2F_IS_ONPREM)
|
782 |
{
|
783 |
$current_user = get_userdata($currentUserId);
|
|
|
784 |
$response = $this->create_user_in_miniOrange($currentUserId,$email,$selected_method);
|
785 |
if($response['status']=='ERROR') {
|
786 |
$mo2fa_login_status = 'MO_2_FACTOR_PROMPT_USER_FOR_2FA_METHODS';
|
788 |
}
|
789 |
else
|
790 |
{
|
791 |
+
$user_email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $current_user->ID );
|
792 |
+
if($user_email != '' and !is_null($user_email))
|
793 |
+
$email = $user_email;
|
794 |
+
$this->mo2f_otp_over_email_send($email,$redirect_to,$session_id_encrypt,$current_user);
|
795 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
796 |
}
|
797 |
}
|
798 |
else
|
799 |
{
|
800 |
+
$this->mo2f_otp_over_email_send($email,$redirect_to,$session_id_encrypt,$current_user);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
801 |
}
|
802 |
}else if($selected_method == "GOOGLE AUTHENTICATOR"){
|
803 |
$this->miniorange_pass2login_start_session();
|
920 |
$mo2f_rba_status = MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_rba_status',$session_id_encrypt );
|
921 |
$kba_validate = new Customer_Setup();
|
922 |
$kba_validate_response = json_decode( $kba_validate->validate_otp_token( 'KBA', null, $mo2f_login_transaction_id, $otpToken, get_option( 'mo2f_customerKey' ), get_option( 'mo2f_api_key' ) ), true );
|
923 |
+
global $Mo2fdbQueries;
|
924 |
$email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user_id );
|
925 |
if ( strcasecmp( $kba_validate_response['status'], 'SUCCESS' ) == 0 ) {
|
926 |
if ( get_option( 'mo2f_remember_device' ) && $check_trust_device == 'on' ) {
|
982 |
$this->mo2fa_pass2login( $redirect_to, $session_id_encrypt );
|
983 |
}
|
984 |
}
|
985 |
+
|
986 |
+
function miniorange2f_back_to_inline_registration($POSTED)
|
987 |
+
{
|
988 |
+
$nonce = $_POST['miniorange_back_inline_reg_nonce'];
|
989 |
+
if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-back-inline-reg-nonce' ) ) {
|
990 |
+
$error = new WP_Error();
|
991 |
+
$error->add( 'empty_username', __( '<strong>ERROR</strong>: Invalid Request.' ) );
|
992 |
+
return $error;
|
993 |
+
} else {
|
994 |
+
|
995 |
+
$session_id_encrypt = sanitize_text_field($POSTED['session_id']);
|
996 |
+
$redirect_to = sanitize_text_field($POSTED['redirect_to']);
|
997 |
+
$mo2fa_login_status = 'MO_2_FACTOR_PROMPT_USER_FOR_2FA_METHODS';
|
998 |
+
$mo2fa_login_message = '';
|
999 |
+
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to,null, $session_id_encrypt );
|
1000 |
+
}
|
1001 |
+
|
1002 |
+
}
|
1003 |
+
|
1004 |
function check_miniorange_challenge_forgotphone($POSTED){/*check kba validation*/
|
1005 |
$nonce = $_POST['miniorange_forgotphone'];
|
1006 |
if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-forgotphone' ) ) {
|
1061 |
}
|
1062 |
function check_miniorange_mobile_validation($POSTED){
|
1063 |
/*check mobile validation */
|
1064 |
+
|
1065 |
$nonce = $POSTED['miniorange_mobile_validation_nonce'];
|
1066 |
if ( ! wp_verify_nonce( $nonce, 'miniorange-2-factor-mobile-validation-nonce' ) ) {
|
1067 |
$error = new WP_Error();
|
1226 |
$session_id_encrypt = isset( $_POST['session_id'] ) ? $_POST['session_id'] : null;
|
1227 |
$this->remove_current_activity($session_id_encrypt);
|
1228 |
update_option('mo2f_attempts_before_redirect', 3);
|
1229 |
+
if(MO2f_Utility::get_index_value('GLOBALS','mo2f_is_ajax_request')){
|
1230 |
+
$data = array('reload' => "reload", );
|
1231 |
+
wp_send_json_success($data);
|
1232 |
+
}
|
1233 |
+
else
|
1234 |
return new WP_Error( 'limit_exceeded', '<strong>ERROR</strong>: Number of attempts exceeded.');
|
1235 |
}
|
1236 |
}
|
1237 |
}
|
1238 |
+
|
1239 |
global $Mo2fdbQueries;
|
1240 |
$user_email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user_id );
|
1241 |
if ( isset( $user_id ) ) {
|
1244 |
$current_user = get_userdata($user_id);
|
1245 |
//if the php session folder has insufficient permissions, cookies to be used
|
1246 |
$mo2f_login_transaction_id = MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_transactionId', $session_id_encrypt );
|
1247 |
+
|
1248 |
if ( isset( $mo2fa_login_status ) && $mo2fa_login_status == 'MO_2_FACTOR_CHALLENGE_OTP_OVER_EMAIL' ) {
|
1249 |
$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 );
|
1250 |
} else if ( isset( $mo2fa_login_status ) && $mo2fa_login_status == 'MO_2_FACTOR_CHALLENGE_OTP_OVER_SMS' ) {
|
1259 |
$this->remove_current_activity($session_id_encrypt);
|
1260 |
return new WP_Error( 'invalid_username', __( '<strong>ERROR</strong>: Invalid Request. Please try again.' ) );
|
1261 |
}
|
1262 |
+
|
1263 |
if ( strcasecmp( $content['status'], 'SUCCESS' ) == 0 ) {
|
1264 |
update_option('mo2f_attempts_before_redirect', 3);
|
1265 |
if ( get_option( 'mo2f_remember_device' ) ) {
|
1266 |
$mo2fa_login_status = 'MO_2_FACTOR_REMEMBER_TRUSTED_DEVICE';
|
1267 |
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, null, $redirect_to,null,$session_id_encrypt );
|
1268 |
} else {
|
1269 |
+
if($mo2fa_login_status == 'MO_2_FACTOR_CHALLENGE_OTP_OVER_EMAIL')
|
1270 |
+
{
|
1271 |
+
$Mo2fdbQueries->update_user_details( $user_id, array('mo2f_configured_2FA_method' =>'OTP Over Email','mo_2factor_user_registration_status' =>'MO_2_FACTOR_PLUGIN_SETTINGS') );
|
1272 |
+
$enduser = new Two_Factor_Setup();
|
1273 |
+
|
1274 |
+
$enduser->mo2f_update_userinfo( $user_email, 'OTP Over Email', null, null, null );
|
1275 |
+
|
1276 |
+
}
|
1277 |
$this->mo2fa_pass2login( $redirect_to, $session_id_encrypt );
|
1278 |
}
|
1279 |
} else {
|
1286 |
$session_id_encrypt = isset( $_POST['session_id'] ) ? $_POST['session_id'] : null;
|
1287 |
$this->remove_current_activity($session_id_encrypt);
|
1288 |
update_option('mo2f_attempts_before_redirect', 3);
|
1289 |
+
if(MO2f_Utility::get_index_value('GLOBALS','mo2f_is_ajax_request')){
|
1290 |
+
$data = array('reload' => "reload", );
|
1291 |
+
wp_send_json_success($data);
|
1292 |
+
}
|
1293 |
+
else
|
1294 |
return new WP_Error( 'limit_exceeded', '<strong>ERROR</strong>: Number of attempts exceeded.');
|
1295 |
}
|
1296 |
}
|
1325 |
do_action('mo2f_network_init');
|
1326 |
global $Mo2fdbQueries;
|
1327 |
|
1328 |
+
if ( ! MoWpnsUtility::get_mo2f_db_option('mo2f_login_option', 'get_option') ) {
|
1329 |
if ( isset( $_POST['miniorange_login_nonce'] ) ) {
|
1330 |
$nonce = $_POST['miniorange_login_nonce'];
|
1331 |
$session_id = isset( $_POST['session_id'] ) ? $_POST['session_id'] : null;
|
1530 |
$this->check_miniorange_challenge_forgotphone($_POST);
|
1531 |
break;
|
1532 |
|
1533 |
+
case 'miniorange2f_back_to_inline_registration':
|
1534 |
+
$this->miniorange2f_back_to_inline_registration($_POST);
|
1535 |
+
exit;
|
1536 |
+
|
1537 |
case 'miniorange_alternate_login_kba':
|
1538 |
|
1539 |
$this->check_miniorange_alternate_login_kba($_POST);
|
1761 |
}
|
1762 |
}
|
1763 |
|
1764 |
+
function miniorange_pass2login_form_fields( $mo2fa_login_status = null, $mo2fa_login_message = null, $redirect_to = null, $qrCode = null, $session_id_encrypt,$show_back_button =null ) {
|
1765 |
+
|
1766 |
$login_status = $mo2fa_login_status;
|
1767 |
$login_message = $mo2fa_login_message;
|
1768 |
switch ($login_status) {
|
1778 |
break;
|
1779 |
case 'MO_2_FACTOR_CHALLENGE_OTP_OVER_EMAIL':
|
1780 |
$user_id = $this->mo2f_userID ? $this->mo2f_userID : MO2f_Utility::mo2f_retrieve_user_temp_values( 'mo2f_current_user_id',$session_id_encrypt );
|
1781 |
+
mo2f_get_otp_authentication_prompt( $login_status, $login_message, $redirect_to, $session_id_encrypt,$user_id,$show_back_button );
|
1782 |
exit;
|
1783 |
break;
|
1784 |
case 'MO_2_FACTOR_CHALLENGE_OTP_OVER_SMS':
|
1948 |
if(is_null($session_id_encrypt)) {
|
1949 |
$session_id_encrypt=$this->create_session();
|
1950 |
}
|
1951 |
+
wp_enqueue_script( 'tmlajax_script', plugins_url( 'includes/js/tmlajax.js', dirname(dirname(__FILE__)) ) );
|
1952 |
+
wp_localize_script( 'tmlajax_script', 'my_ajax_object',
|
1953 |
+
array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
|
1954 |
?>
|
1955 |
<p><input type="hidden" name="miniorange_login_nonce"
|
1956 |
value="<?php echo wp_create_nonce( 'miniorange-2-factor-login-nonce' ); ?>"/>
|
1977 |
}else{
|
1978 |
|
1979 |
|
1980 |
+
if( MoWpnsUtility::get_mo2f_db_option('mo2f_enable_2fa_prompt_on_login_page', 'get_option'))
|
1981 |
{
|
1982 |
echo "\t<p>\n";
|
1983 |
echo "\t\t<label class=\"mo2f_instuction1\" title=\"".__('If you don\'t have 2-factor authentication enabled for your WordPress account, leave this field empty.','google-authenticator')."\">".__('2 Factor Authentication code*','google-authenticator')."<span id=\"google-auth-info\"></span><br />\n";
|
2055 |
}else {
|
2056 |
$content = $challengeMobile->send_otp_token( $user_email, $mo2f_second_factor, get_option( 'mo2f_customerKey' ), get_option( 'mo2f_api_key' ) );
|
2057 |
}
|
2058 |
+
$response = json_decode( $content, true );
|
2059 |
if ( json_last_error() == JSON_ERROR_NONE ) { /* Generate Qr code */
|
2060 |
if ( $response['status'] == 'SUCCESS' ) {
|
2061 |
MO2f_Utility::set_user_values( $session_id, "mo2f_transactionId", $response['txId'] );
|
2089 |
if($mo2f_second_factor == 'EMAIL')
|
2090 |
{
|
2091 |
$mo2f_user_phone = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user->ID );
|
2092 |
+
$wdewdeqdqq = get_site_option(base64_encode("remainingOTP"));
|
2093 |
+
if($wdewdeqdqq >30 or get_site_option(base64_encode("limitReached")))
|
|
|
2094 |
{
|
2095 |
+
update_site_option(base64_encode("remainingOTP"),0);
|
2096 |
}
|
2097 |
}
|
2098 |
else
|
2110 |
$content = '';
|
2111 |
$response = [];
|
2112 |
$otpLIMiTE = 0;
|
2113 |
+
if(MoWpnsUtility::get_mo2f_db_option('cmVtYWluaW5nT1RQ', 'site_option')>0 or $mo2f_second_factor != 'EMAIL')
|
2114 |
{
|
2115 |
if($mo2f_second_factor == 'OTP Over SMS')
|
2116 |
$mo2f_second_factor = 'SMS';
|
2128 |
if ( $response['status'] == 'SUCCESS' ) {
|
2129 |
if($mo2f_second_factor == 'EMAIL')
|
2130 |
{
|
2131 |
+
$cmVtYWluaW5nT1RQ = MoWpnsUtility::get_mo2f_db_option('cmVtYWluaW5nT1RQ', 'site_option');
|
2132 |
update_site_option("cmVtYWluaW5nT1RQ",$cmVtYWluaW5nT1RQ-1);
|
2133 |
}
|
2134 |
elseif($mo2f_second_factor == 'SMS')
|
2138 |
if(!isset($response['phoneDelivery']['contact']))
|
2139 |
$response['phoneDelivery']['contact'] = '';
|
2140 |
$message = 'The OTP has been sent to ' . MO2f_Utility::get_hidden_phone( $response['phoneDelivery']['contact'] ) . '. Please enter the OTP you received to Validate.';
|
2141 |
+
update_option( 'mo2f_number_of_transactions', MoWpnsUtility::get_mo2f_db_option('mo2f_number_of_transactions', 'get_option') - 1 );
|
2142 |
MO2f_Utility::set_user_values( $session_id, "mo2f_transactionId", $response['txId'] );
|
2143 |
$this->mo2f_transactionid=$response['txId'];
|
2144 |
$mo2fa_login_message = $message;
|
2222 |
$session_id_encrypt=$this->create_session();
|
2223 |
}
|
2224 |
|
2225 |
+
if(class_exists('UM_Functions'))
|
2226 |
+
{
|
2227 |
+
if(!isset($_POST['wp-submit']) and isset($_POST['um_request']))
|
2228 |
+
{
|
2229 |
+
$meta = get_option('um_role_'.$currentuser->roles[0].'_meta');
|
2230 |
+
if(isset($meta) and $meta != '')
|
2231 |
+
{
|
2232 |
+
if(isset($meta['_um_login_redirect_url']))
|
2233 |
+
$redirect_to = $meta['_um_login_redirect_url'];
|
2234 |
+
if($redirect_to == '')
|
2235 |
+
{
|
2236 |
+
$redirect_to = get_site_url();
|
2237 |
+
}
|
2238 |
+
}
|
2239 |
+
$login_form_url = '';
|
2240 |
+
if(isset($_POST['redirect_to']))
|
2241 |
+
$login_form_url = sanitize_text_field($_POST['redirect_to']);
|
2242 |
+
|
2243 |
+
if($login_form_url != '' and !is_null($login_form_url))
|
2244 |
+
{
|
2245 |
+
$redirect_to = $login_form_url;
|
2246 |
+
}
|
2247 |
+
|
2248 |
+
}
|
2249 |
+
|
2250 |
+
}
|
2251 |
MO2f_Utility::set_user_values($session_id_encrypt, 'mo2f_current_user_id', $currentuser->ID);
|
2252 |
MO2f_Utility::set_user_values($session_id_encrypt, 'mo2f_1stfactor_status', 'VALIDATE_SUCCESS');
|
2253 |
|
2271 |
$mo_2factor_user_registration_status = $Mo2fdbQueries->get_user_detail( 'mo_2factor_user_registration_status', $currentuser->ID );
|
2272 |
$kba_configuration_status = $Mo2fdbQueries->get_user_detail( 'mo2f_SecurityQuestions_config_status', $currentuser->ID );
|
2273 |
|
2274 |
+
if(MoWpnsUtility::get_mo2f_db_option('mo2f_enable_brute_force', 'get_option')){
|
2275 |
$mo2f_allwed_login_attempts=get_option('mo2f_allwed_login_attempts');
|
2276 |
}else{
|
2277 |
$mo2f_allwed_login_attempts= 'disabled';
|
2280 |
|
2281 |
$twofactor_transactions = new Mo2fDB;
|
2282 |
$exceeded = $twofactor_transactions->check_alluser_limit_exceeded($currentuser->ID);
|
2283 |
+
$tfa_enabled = $Mo2fdbQueries->get_user_detail( 'mo2f_2factor_enable_2fa_byusers', $currentuser->ID );
|
2284 |
+
if($tfa_enabled == 0 && ($mo_2factor_user_registration_status != 'MO_2_FACTOR_PLUGIN_SETTINGS') && $tfa_enabled != '')
|
2285 |
+
$exceeded =1;
|
2286 |
|
2287 |
if ( $mo_2factor_user_registration_status == 'MO_2_FACTOR_PLUGIN_SETTINGS' ) { //checking if user has configured any 2nd factor method
|
2288 |
$email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $currentuser->ID );
|
2327 |
else if($mo2f_second_factor == 'OTP Over Email' || $mo2f_second_factor == 'OTP OVER EMAIL' || $mo2f_second_factor == "EMAIL") {
|
2328 |
$mo2f_second_factor = "EMAIL";
|
2329 |
|
2330 |
+
if(MoWpnsUtility::get_mo2f_db_option('cmVtYWluaW5nT1RQ', 'site_option')<=0)
|
2331 |
{
|
2332 |
update_site_option("bGltaXRSZWFjaGVk",1);
|
2333 |
|
2335 |
}
|
2336 |
|
2337 |
|
2338 |
+
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', 'get_option')&& !get_option('mo2f_remember_device') && !isset($_POST['mo_woocommerce_login_prompt']) )
|
|
|
2339 |
{
|
2340 |
$error=$this->mo2f_validate_soft_token($currentuser, $redirect_to, $mo2f_second_factor, $otp_token,$session_id_encrypt);
|
2341 |
if(is_wp_error( $error))
|
2358 |
} else if ( $mo2f_second_factor == 'KBA' or $mo2f_second_factor == 'Security Questions') {
|
2359 |
$this->mo2f_pass2login_kba_verification( $currentuser->ID, $redirect_to , $session_id_encrypt );
|
2360 |
} else if ( $mo2f_second_factor == 'NONE' ) {
|
2361 |
+
if(MO2f_Utility::get_index_value('GLOBALS','mo2f_is_ajax_request'))
|
2362 |
+
$this->mo2fa_pass2login( $redirect_to, $session_id_encrypt );
|
2363 |
+
else
|
2364 |
+
return $currentuser;
|
2365 |
} else {
|
2366 |
$this->remove_current_activity($session_id_encrypt);
|
2367 |
$error = new WP_Error();
|
2368 |
+
if(MO2f_Utility::get_index_value('GLOBALS','mo2f_is_ajax_request')){
|
2369 |
+
$data = array('notice' => '<div style="border-left:3px solid #dc3232;"> Two Factor method has not been configured.', );
|
2370 |
+
wp_send_json_success($data);
|
2371 |
+
}
|
2372 |
+
else{
|
2373 |
+
$error->add( 'empty_username', __( '<strong>ERROR</strong>: Two Factor method has not been configured.' ) );
|
2374 |
+
return $error;
|
2375 |
+
}
|
2376 |
}
|
2377 |
}
|
2378 |
}
|
2379 |
|
2380 |
}
|
2381 |
+
}else if(!$exceeded && MoWpnsUtility::get_mo2f_db_option('mo2f_inline_registration', 'site_option')){
|
2382 |
$this->mo2fa_inline( $currentuser, $redirect_to, $session_id_encrypt );
|
2383 |
|
2384 |
} else {
|
2385 |
+
if(MO2f_Utility::get_index_value('GLOBALS','mo2f_is_ajax_request'))
|
2386 |
+
$this->mo2fa_pass2login( $redirect_to, $session_id_encrypt );
|
2387 |
+
else
|
2388 |
+
return $currentuser;
|
2389 |
}
|
2390 |
|
2391 |
} else { //plugin is not activated for current role then logged him in without asking 2 factor
|
2392 |
+
if(MO2f_Utility::get_index_value('GLOBALS','mo2f_is_ajax_request'))
|
2393 |
+
$this->mo2fa_pass2login( $redirect_to, $session_id_encrypt );
|
2394 |
+
else
|
2395 |
+
return $currentuser;
|
2396 |
}
|
2397 |
|
2398 |
}
|
2430 |
$this->mo2fa_pass2login( $redirect_to, $session_id_encrypt );
|
2431 |
}
|
2432 |
} else {
|
2433 |
+
if( MO2f_Utility::get_index_value('GLOBALS','mo2f_is_ajax_request')){
|
2434 |
+
$data = array('notice' => '<div style="border-left:3px solid #dc3232;"> Invalid One Time Passcode.', );
|
2435 |
+
wp_send_json_success($data);
|
2436 |
+
}
|
2437 |
+
else
|
2438 |
+
return new WP_Error( 'invalid_one_time_passcode', '<strong>ERROR</strong>: Invalid One Time Passcode.');
|
2439 |
}
|
2440 |
}
|
2441 |
|
2442 |
+
function mo2f_otp_over_email_send($email,$redirect_to,$session_id_encrypt,$current_user)
|
2443 |
+
{
|
2444 |
+
|
2445 |
+
$challengeMobile = new Customer_Setup();
|
2446 |
+
$content = '';
|
2447 |
+
$response = [];
|
2448 |
+
$otpLIMiTE = 0;
|
2449 |
+
if(get_site_option("cmVtYWluaW5nT1RQ")>0)
|
2450 |
+
{
|
2451 |
+
$content = $challengeMobile->send_otp_token( $email, 'EMAIL', get_option( 'mo2f_customerKey' ), get_option( 'mo2f_api_key' ) ,$current_user);
|
2452 |
+
$response = json_decode( $content, true );
|
2453 |
+
if(!MO2F_IS_ONPREM)
|
2454 |
+
{
|
2455 |
+
if(isset($response['txId']))
|
2456 |
+
MO2f_Utility::set_user_values( $session_id_encrypt, "mo2f_transactionId", $response['txId'] );
|
2457 |
+
}
|
2458 |
+
|
2459 |
+
}
|
2460 |
+
else
|
2461 |
+
{
|
2462 |
+
$response['status'] = 'FAILED';
|
2463 |
+
$response['message'] = '<p style = "color:red;">OTP limit has been exceeded</p>';
|
2464 |
+
$otpLIMiTE = 1;
|
2465 |
+
}
|
2466 |
+
if ( json_last_error() == JSON_ERROR_NONE ) {
|
2467 |
+
if ( $response['status'] == 'SUCCESS' ) {
|
2468 |
+
$cmVtYWluaW5nT1RQ = get_site_option("cmVtYWluaW5nT1RQ");
|
2469 |
+
update_site_option("cmVtYWluaW5nT1RQ",$cmVtYWluaW5nT1RQ-1);
|
2470 |
+
$mo2fa_login_message = 'An OTP has been sent to '.$email.' please verify to set the two-factor';
|
2471 |
+
$mo2fa_login_status = 'MO_2_FACTOR_CHALLENGE_OTP_OVER_EMAIL';
|
2472 |
+
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to,null, $session_id_encrypt, 1 );
|
2473 |
+
}
|
2474 |
+
else
|
2475 |
+
{
|
2476 |
+
$mo2fa_login_status = 'MO_2_FACTOR_PROMPT_USER_FOR_2FA_METHODS';
|
2477 |
+
$mo2fa_login_message = 'There was an issue while sending the OTP to '.$email.'. Please check your remaining transactions and try again.';
|
2478 |
+
$this->miniorange_pass2login_form_fields( $mo2fa_login_status, $mo2fa_login_message, $redirect_to,null, $session_id_encrypt );
|
2479 |
+
}
|
2480 |
+
}
|
2481 |
+
}
|
2482 |
function mo2f_restrict_access( $identity ) {
|
2483 |
apply_filters( 'mo2f_rba_addon', $identity );
|
2484 |
exit;
|
2502 |
|
2503 |
function mo2f_check_username_password( $user, $username, $password, $redirect_to = null ) {
|
2504 |
if ( is_a( $user, 'WP_Error' ) && ! empty( $user ) ) {
|
2505 |
+
if(MO2f_Utility::get_index_value('GLOBALS','mo2f_is_ajax_request')){
|
2506 |
+
$data = array('notice' => '<div style="border-left:3px solid #dc3232;"> Invalid User Credentials', );
|
2507 |
+
wp_send_json_success($data);
|
2508 |
+
}
|
2509 |
+
else
|
2510 |
+
return $user;
|
2511 |
}
|
2512 |
if($GLOBALS['pagenow'] == 'wp-login.php' && isset($_POST['mo_woocommerce_login_prompt'])){
|
2513 |
return new WP_Error( 'Unauthorized Access.' , '<strong>ERROR</strong>: Access Denied.');
|
2514 |
}
|
|
|
2515 |
// if an app password is enabled, this is an XMLRPC / APP login ?
|
2516 |
if ( defined( 'XMLRPC_REQUEST' ) && XMLRPC_REQUEST ) {
|
2517 |
|
2527 |
} else {
|
2528 |
$currentuser = wp_authenticate_username_password( $user, $username, $password );
|
2529 |
if ( is_wp_error( $currentuser ) ) {
|
2530 |
+
if(MO2f_Utility::get_index_value('GLOBALS','mo2f_is_ajax_request')){
|
2531 |
+
$data = array('notice' => '<div style="border-left:3px solid #dc3232;"> Invalid User Credentials', );
|
2532 |
+
wp_send_json_success($data);
|
2533 |
+
}
|
2534 |
+
else{
|
2535 |
+
$currentuser->add( 'invalid_username_password', '<strong>' . mo2f_lt( 'ERROR' ) . '</strong>: ' . mo2f_lt( 'Invalid Username or password.' ) );
|
2536 |
+
return $currentuser;
|
2537 |
+
}
|
2538 |
} else {
|
2539 |
global $Mo2fdbQueries;
|
2540 |
$session_id = isset( $_POST['session_id'] ) ? $_POST['session_id'] : null;
|
2552 |
}
|
2553 |
else
|
2554 |
{
|
2555 |
+
if ( empty( $_POST['mo_softtoken'] ) && MoWpnsUtility::get_mo2f_db_option('mo2f_enable_2fa_prompt_on_login_page', 'get_option') && $mo2f_configured_2FA_method && !get_option('mo2f_remember_device') && (($mo2f_configured_2FA_method == 'Google Authenticator') ||($mo2f_configured_2FA_method == 'miniOrange Soft Token') || ($mo2f_configured_2FA_method =='Authy Authenticator')))
|
2556 |
{
|
2557 |
|
2558 |
|
2560 |
|
2561 |
$this->miniorange_initiate_2nd_factor( $currentuser, "", "","");
|
2562 |
}
|
2563 |
+
if(MO2f_Utility::get_index_value('GLOBALS','mo2f_is_ajax_request')){
|
2564 |
+
$data = array('notice' => '<div style="border-left:3px solid #dc3232;"> Please enter the One Time Passcode', );
|
2565 |
+
wp_send_json_success($data);
|
2566 |
+
}
|
2567 |
+
else
|
2568 |
+
return new WP_Error( 'one_time_passcode_empty', '<strong>ERROR</strong>: Please enter the One Time Passcode.');
|
2569 |
// Prevent PHP notices when using app password login
|
2570 |
|
2571 |
}
|
handler/twofa/two_fa_settings.php
CHANGED
@@ -18,7 +18,7 @@ class Miniorange_Authentication {
|
|
18 |
$wp_roles = new WP_Roles();
|
19 |
}
|
20 |
|
21 |
-
if (
|
22 |
$mo2f_rba_attributes = new Miniorange_Rba_Attributes();
|
23 |
$pass2fa_login = new Miniorange_Password_2Factor_Login();
|
24 |
$mo2f_2factor_setup = new Two_Factor_Setup();
|
@@ -45,7 +45,7 @@ class Miniorange_Authentication {
|
|
45 |
'miniorange_pass2login_form_fields'
|
46 |
), 10, 5 );
|
47 |
add_filter( 'mo2f_gauth_service', array( $mo2f_rba_attributes, 'mo2f_google_auth_service' ), 10, 1 );
|
48 |
-
if (
|
49 |
if ( get_option( 'mo_2factor_admin_registration_status' ) == 'MO_2_FACTOR_CUSTOMER_REGISTERED_SUCCESS' or MO2F_IS_ONPREM) {
|
50 |
|
51 |
remove_filter( 'authenticate', 'wp_authenticate_username_password', 20 );
|
@@ -75,7 +75,7 @@ class Miniorange_Authentication {
|
|
75 |
'mo_2_factor_pass2login_show_wp_login_form'
|
76 |
) );
|
77 |
}
|
78 |
-
else if(!get_site_option('mo2f_woocommerce_login_prompt') &&
|
79 |
add_action('woocommerce_login_form_end' ,array(
|
80 |
$pass2fa_login,
|
81 |
'mo_2_factor_pass2login_woocommerce'
|
@@ -128,8 +128,8 @@ class Miniorange_Authentication {
|
|
128 |
$userid = wp_get_current_user()->ID;
|
129 |
add_option('mo2f_onprem_admin' , $userid );
|
130 |
// Deciding on On-Premise solution
|
131 |
-
$is_NC=
|
132 |
-
$is_NNC=
|
133 |
// Old users
|
134 |
if ( get_option( 'mo2f_customerKey' ) && ! $is_NC )
|
135 |
add_option( 'is_onprem', 0 );
|
@@ -173,13 +173,13 @@ class Miniorange_Authentication {
|
|
173 |
|
174 |
if ( ! get_option( 'mo2f_existing_user_values_updated' ) ) {
|
175 |
|
176 |
-
if ( get_option( 'mo2f_customerKey' ) && !
|
177 |
update_option( 'mo2f_is_NC', 0 );
|
178 |
}
|
179 |
|
180 |
$check_if_user_column_exists = false;
|
181 |
|
182 |
-
if ( $user_id && !
|
183 |
$does_table_exist = $Mo2fdbQueries->check_if_table_exists();
|
184 |
if ( $does_table_exist ) {
|
185 |
$check_if_user_column_exists = $Mo2fdbQueries->check_if_user_column_exists( $user_id );
|
@@ -268,14 +268,7 @@ class Miniorange_Authentication {
|
|
268 |
|
269 |
|
270 |
}
|
271 |
-
|
272 |
-
|
273 |
-
/**
|
274 |
-
* Function tells where to look for translations.
|
275 |
-
*/
|
276 |
-
function mo2fa_load_textdomain() {
|
277 |
-
load_plugin_textdomain( 'miniorange-2-factor-authentication', false, dirname( plugin_basename( __FILE__ ) ) . '/lang/' );
|
278 |
-
}
|
279 |
|
280 |
function feedback_request() {
|
281 |
display_feedback_form();
|
@@ -283,8 +276,8 @@ class Miniorange_Authentication {
|
|
283 |
|
284 |
function get_customer_SMS_transactions() {
|
285 |
|
286 |
-
if ( get_option( 'mo_2factor_admin_registration_status' ) == 'MO_2_FACTOR_CUSTOMER_REGISTERED_SUCCESS' &&
|
287 |
-
if ( !
|
288 |
$customer = new Customer_Setup();
|
289 |
|
290 |
$content = json_decode( $customer->get_customer_transactions( get_option( 'mo2f_customerKey' ), get_option( 'mo2f_api_key' ) ), true );
|
@@ -301,7 +294,7 @@ class Miniorange_Authentication {
|
|
301 |
}
|
302 |
update_option( 'mo2f_number_of_transactions', $smsRemaining );
|
303 |
} else {
|
304 |
-
$smsRemaining =
|
305 |
}
|
306 |
|
307 |
$this->display_customer_transactions( $smsRemaining );
|
@@ -317,7 +310,7 @@ class Miniorange_Authentication {
|
|
317 |
$user = wp_get_current_user();
|
318 |
$selected_2_Factor_method = $Mo2fdbQueries->get_user_detail( 'mo2f_configured_2FA_method', $user->ID );
|
319 |
if ( $selected_2_Factor_method == 'NONE' ) {
|
320 |
-
if (
|
321 |
echo '<div class="is-dismissible notice notice-warning"><p><b>' . mo2f_lt( "miniOrange 2-Factor Plugin: " ) . '</b>' . mo2f_lt( 'You have not configured your 2-factor authentication method yet.' ) .
|
322 |
'<a href="admin.php?page=mo_2fa_two_fa">' . mo2f_lt( ' Click here' ) . '</a>' . mo2f_lt( ' to set it up.' ) .
|
323 |
'<button type="button" class="notice-dismiss"><span class="screen-reader-text">' . mo2f_lt( 'Dismiss this notice.' ) . '</span></button></div>';
|
@@ -356,9 +349,9 @@ class Miniorange_Authentication {
|
|
356 |
$roles = $user->roles;
|
357 |
$miniorange_role = array_shift( $roles );
|
358 |
|
359 |
-
$is_plugin_activated =
|
360 |
$is_customer_admin = get_option( 'mo2f_miniorange_admin' ) == $user->ID ? true : false;
|
361 |
-
$is_2fa_enabled_for_users =
|
362 |
$can_current_user_manage_options = current_user_can( 'manage_options' );
|
363 |
$admin_registration_status = get_option( 'mo_2factor_admin_registration_status' ) == 'MO_2_FACTOR_CUSTOMER_REGISTERED_SUCCESS'
|
364 |
? true : false;
|
@@ -386,7 +379,7 @@ class Miniorange_Authentication {
|
|
386 |
else
|
387 |
$iconurl = site_url(). '/wp-content/uploads/miniorange/plugin_icon.png';
|
388 |
$menu_slug = 'miniOrange_2_factor_settings';
|
389 |
-
add_menu_page( 'miniOrange 2 Factor Auth',
|
390 |
}
|
391 |
|
392 |
function mo_auth_login_options() {
|
@@ -431,11 +424,10 @@ class Miniorange_Authentication {
|
|
431 |
}
|
432 |
|
433 |
function miniorange_auth_save_settings() {
|
434 |
-
if (
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
}
|
440 |
if ( array_key_exists( 'page', $_REQUEST ) && $_REQUEST['page'] == 'mo_2fa_two_fa' ) {
|
441 |
if ( ! session_id() || session_id() == '' || ! isset( $_SESSION ) ) {
|
@@ -722,7 +714,7 @@ class Miniorange_Authentication {
|
|
722 |
$Mo2fdbQueries->update_user_details( $user->ID, array( 'mo2f_user_phone' => $customerKey['phone'] ) );
|
723 |
update_option( 'mo2f_miniorange_admin', $user->ID );
|
724 |
|
725 |
-
$mo2f_emailVerification_config_status =
|
726 |
|
727 |
delete_option( 'mo2f_password' );
|
728 |
update_option( 'mo_2factor_admin_registration_status', 'MO_2_FACTOR_CUSTOMER_REGISTERED_SUCCESS' );
|
@@ -751,7 +743,7 @@ class Miniorange_Authentication {
|
|
751 |
if ( $mo2f_second_factor != 'NONE' ) {
|
752 |
$configured_2FA_method = MO2f_Utility::mo2f_decode_2_factor( $mo2f_second_factor, "servertowpdb" );
|
753 |
|
754 |
-
if (
|
755 |
|
756 |
$auth_method_abr = str_replace( ' ', '', $configured_2FA_method );
|
757 |
$Mo2fdbQueries->update_user_details( $user->ID, array(
|
@@ -773,7 +765,7 @@ class Miniorange_Authentication {
|
|
773 |
}
|
774 |
|
775 |
$mo2f_message = Mo2fConstants:: langTranslate( "ACCOUNT_RETRIEVED_SUCCESSFULLY" );
|
776 |
-
if ( $configured_2FA_method != 'NONE' &&
|
777 |
$mo2f_message .= ' <b>' . $configured_2FA_method . '</b> ' . Mo2fConstants:: langTranslate( "DEFAULT_2ND_FACTOR" ) . '.';
|
778 |
}
|
779 |
$mo2f_message .= ' ' . '<a href=\"admin.php?page=mo_2fa_two_fa\" >' . Mo2fConstants:: langTranslate( "CLICK_HERE" ) . '</a> ' . Mo2fConstants:: langTranslate( "CONFIGURE_2FA" );
|
@@ -1023,13 +1015,13 @@ class Miniorange_Authentication {
|
|
1023 |
$mo_2factor_user_registration_status = $Mo2fdbQueries->get_user_detail( 'mo_2factor_user_registration_status', $user->ID );
|
1024 |
if ( $mo_2factor_user_registration_status == 'MO_2_FACTOR_PLUGIN_SETTINGS' or MO2F_IS_ONPREM ) {
|
1025 |
|
1026 |
-
if($_POST['mo2f_login_option'] == 0 &&
|
1027 |
update_option( 'mo2f_message', Mo2fConstants:: langTranslate( "LOGIN_WITH_2ND_FACTOR" ) );
|
1028 |
$this->mo_auth_show_error_message();
|
1029 |
}else{
|
1030 |
update_option( 'mo2f_login_option', isset( $_POST['mo2f_login_option'] ) ? $_POST['mo2f_login_option'] : 0 );
|
1031 |
update_option( 'mo2f_remember_device', isset( $_POST['mo2f_remember_device'] ) ? $_POST['mo2f_remember_device'] : 0 );
|
1032 |
-
if (
|
1033 |
update_option( 'mo2f_remember_device', 0 );
|
1034 |
}
|
1035 |
if(isset($_POST['mo2f_enable_login_with_2nd_factor']))
|
@@ -1530,7 +1522,7 @@ class Miniorange_Authentication {
|
|
1530 |
$show = 1;
|
1531 |
if(MO2F_IS_ONPREM )
|
1532 |
{
|
1533 |
-
$txid = isset($_POST['TxidEmail'])?_POST['TxidEmail']:null;
|
1534 |
$status = get_option($txid);
|
1535 |
if($status != '')
|
1536 |
{
|
@@ -1544,6 +1536,9 @@ class Miniorange_Authentication {
|
|
1544 |
}
|
1545 |
}
|
1546 |
$mo2f_configured_2FA_method = $Mo2fdbQueries->get_user_detail( 'mo2f_configured_2FA_method', $user->ID );
|
|
|
|
|
|
|
1547 |
$mo2f_EmailVerification_config_status = $Mo2fdbQueries->get_user_detail( 'mo2f_EmailVerification_config_status', $user->ID );
|
1548 |
if ( ! current_user_can( 'manage_options' ) && $mo2f_configured_2FA_method == 'OUT OF BAND EMAIL' ) {
|
1549 |
if ( $mo2f_EmailVerification_config_status ) {
|
@@ -1661,6 +1656,8 @@ class Miniorange_Authentication {
|
|
1661 |
|
1662 |
if ( current_user_can( 'manage_options' ) ) {
|
1663 |
update_option( 'mo2f_message', Mo2fConstants:: langTranslate( "COMPLETED_TEST" ) );
|
|
|
|
|
1664 |
} else {
|
1665 |
update_option( 'mo2f_message', Mo2fConstants:: langTranslate( "COMPLETED_TEST" ) );
|
1666 |
}
|
@@ -2039,7 +2036,7 @@ class Miniorange_Authentication {
|
|
2039 |
$_SESSION['mo2f_transactionId'] = $content['txId'];
|
2040 |
update_option( 'mo2f_transactionId', $content['txId'] );
|
2041 |
update_option( 'mo2f_message', Mo2fConstants:: langTranslate( "OTP_SENT" ) . ' ' . $phone . ' .' . Mo2fConstants:: langTranslate( "ENTER_OTP" ) );
|
2042 |
-
update_option( 'mo2f_number_of_transactions',
|
2043 |
update_site_option('cmVtYWluaW5nT1RQVHJhbnNhY3Rpb25z',get_site_option('cmVtYWluaW5nT1RQVHJhbnNhY3Rpb25z')-1);
|
2044 |
$this->mo_auth_show_success_message();
|
2045 |
} else {
|
@@ -2213,8 +2210,8 @@ class Miniorange_Authentication {
|
|
2213 |
$allowed = false;
|
2214 |
if(get_option('mo2f_miniorange_admin'))
|
2215 |
$allowed = wp_get_current_user()->ID == get_option('mo2f_miniorange_admin');
|
2216 |
-
|
2217 |
-
|
2218 |
$enduser = new Two_Factor_Setup();
|
2219 |
$check_user = json_decode( $enduser->mo_check_user_already_exist( $email ), true );
|
2220 |
if(json_last_error() == JSON_ERROR_NONE){
|
@@ -2257,7 +2254,8 @@ class Miniorange_Authentication {
|
|
2257 |
}
|
2258 |
|
2259 |
}
|
2260 |
-
|
|
|
2261 |
if(MO2F_IS_ONPREM)
|
2262 |
{
|
2263 |
if($selected_2FA_method == 'EmailVerification')
|
@@ -2267,6 +2265,7 @@ class Miniorange_Authentication {
|
|
2267 |
if($selected_2FA_method == 'OTPOverSMS')
|
2268 |
$selected_2FA_method = 'OTP Over SMS';
|
2269 |
}
|
|
|
2270 |
if(MO2F_IS_ONPREM and ($selected_2FA_method =='Google Authenticator' or $selected_2FA_method == 'Security Questions' or $selected_2FA_method =='OTP Over Email' or $selected_2FA_method == 'Email Verification'))
|
2271 |
$is_customer_registered = 1;
|
2272 |
|
@@ -2290,28 +2289,48 @@ class Miniorange_Authentication {
|
|
2290 |
$email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user->ID );
|
2291 |
$customer_key = get_option( 'mo2f_customerKey' );
|
2292 |
$api_key = get_option( 'mo2f_api_key' );
|
2293 |
-
|
2294 |
$cloud_method1 = array('miniOrange QR Code Authentication','miniOrange Push Notification','miniOrange Soft Token');
|
2295 |
-
|
2296 |
-
if($selected_2FA_method == "OTP Over Email" or in_array($selected_2FA_method,$cloud_method1))
|
2297 |
{
|
2298 |
-
$
|
2299 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
2300 |
|
2301 |
-
if($
|
2302 |
-
$response = json_decode($
|
2303 |
else
|
2304 |
-
$response =
|
2305 |
-
|
|
|
|
|
|
|
|
|
2306 |
|
2307 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2308 |
}else if($selected_2FA_method == "Email Verification")
|
2309 |
{
|
2310 |
$enduser->send_otp_token($email,'OUT OF BAND EMAIL',$customer_key,$api_key);
|
2311 |
}
|
2312 |
|
2313 |
-
$Mo2fdbQueries->update_user_details( $user->ID, array( 'mo2f_configured_2FA_method' => $selected_2FA_method ) );
|
2314 |
|
|
|
|
|
2315 |
|
2316 |
// update the server
|
2317 |
if(!MO2F_IS_ONPREM)
|
@@ -2489,7 +2508,7 @@ class Miniorange_Authentication {
|
|
2489 |
if($selected_2FA_method == 'OTP Over Email')
|
2490 |
{
|
2491 |
$phone = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user->ID );
|
2492 |
-
if(
|
2493 |
{
|
2494 |
update_site_option("bGltaXRSZWFjaGVk",1);
|
2495 |
$check = 0;
|
@@ -2505,15 +2524,15 @@ class Miniorange_Authentication {
|
|
2505 |
if ( strcasecmp( $response['status'], 'SUCCESS' ) == 0 ) {
|
2506 |
if($selected_2FA_method == 'OTP Over Email')
|
2507 |
{
|
2508 |
-
$cmVtYWluaW5nT1RQ =
|
2509 |
-
|
2510 |
}
|
2511 |
else if($selected_2FA_method == 'OTP Over SMS')
|
2512 |
{
|
2513 |
update_site_option('cmVtYWluaW5nT1RQVHJhbnNhY3Rpb25z',get_site_option('cmVtYWluaW5nT1RQVHJhbnNhY3Rpb25z')-1);
|
2514 |
}
|
2515 |
update_option( 'mo2f_message', Mo2fConstants:: langTranslate( "OTP_SENT" ) . ' <b>' . ( $phone ) . '</b>. ' . Mo2fConstants:: langTranslate( "ENTER_OTP" ) );
|
2516 |
-
update_option( 'mo2f_number_of_transactions',
|
2517 |
|
2518 |
$_SESSION['mo2f_transactionId'] = $response['txId'];
|
2519 |
update_option( 'mo2f_transactionId', $response['txId'] );
|
@@ -2603,8 +2622,8 @@ class Miniorange_Authentication {
|
|
2603 |
function mo_auth_deactivate() {
|
2604 |
global $Mo2fdbQueries;
|
2605 |
$mo2f_register_with_another_email = get_option( 'mo2f_register_with_another_email' );
|
2606 |
-
$is_EC = !
|
2607 |
-
$is_NNC =
|
2608 |
|
2609 |
if ( $mo2f_register_with_another_email || $is_EC || $is_NNC ) {
|
2610 |
update_option( 'mo2f_register_with_another_email', 0 );
|
@@ -2951,14 +2970,16 @@ class Miniorange_Authentication {
|
|
2951 |
$current_method = MO2f_Utility::mo2f_decode_2_factor( $mo2f_configured_2FA_method, "server" );
|
2952 |
|
2953 |
$response = json_decode( $enduser->mo2f_update_userinfo( $email, $current_method, $phone, null, null ), true );
|
2954 |
-
|
2955 |
if ( json_last_error() == JSON_ERROR_NONE ) {
|
2956 |
if ( $response['status'] == 'ERROR' ) {
|
2957 |
update_option( 'mo2f_message', Mo2fConstants:: langTranslate( $response['message'] ) );
|
2958 |
$this->mo_auth_show_error_message();
|
2959 |
} else if ( $response['status'] == 'SUCCESS' ) {
|
2960 |
-
$configured_2fa_method =
|
2961 |
-
|
|
|
|
|
|
|
2962 |
if ( in_array( $configured_2fa_method, array( "Google Authenticator", "Authy Authenticator" ) ) ) {
|
2963 |
update_user_meta( $user->ID, 'mo2f_external_app_type', $configured_2fa_method );
|
2964 |
}
|
@@ -2969,8 +2990,9 @@ class Miniorange_Authentication {
|
|
2969 |
delete_user_meta( $user->ID, 'configure_2FA' );
|
2970 |
|
2971 |
if($configured_2fa_method == 'OTP Over Email' or $configured_2fa_method=='OTP Over SMS')
|
2972 |
-
|
2973 |
-
|
|
|
2974 |
else
|
2975 |
update_option( 'mo2f_message', Mo2fConstants:: langTranslate( $configured_2fa_method ) . ' ' . Mo2fConstants:: langTranslate( "SET_2FA" ) );
|
2976 |
|
@@ -3052,13 +3074,7 @@ class Miniorange_Authentication {
|
|
3052 |
$currentTimeInMillis = round(microtime(true) * 1000);
|
3053 |
update_site_option($time,$currentTimeInMillis);
|
3054 |
update_site_option( 'mo2f_message', Mo2fConstants::langTranslate("VERIFICATION_EMAIL_SENT") .'<b> ' . $email . '</b>. ' . Mo2fConstants::langTranslate("ACCEPT_LINK_TO_VERIFY_EMAIL"));
|
3055 |
-
|
3056 |
-
update_user_meta($current_user->ID,'mo2f_configure_test_option','MO2F_TEST');
|
3057 |
-
$Mo2fdbQueries->update_user_details(
|
3058 |
-
$current_user->ID, array('mo2f_configured_2FA_method' => 'OUT OF BAND EMAIL',
|
3059 |
-
'mo2f_2factor_enable_2fa_byusers' => 1) );
|
3060 |
-
$this->mo_auth_show_success_message();
|
3061 |
-
}
|
3062 |
}else{
|
3063 |
update_site_option( 'mo2f_message', Mo2fConstants::langTranslate("ERROR_DURING_PROCESS_EMAIL"));
|
3064 |
$this->mo_auth_show_error_message();
|
@@ -3101,7 +3117,7 @@ class Miniorange_Authentication {
|
|
3101 |
$get_encryption_key = MO2f_Utility::random_str(16);
|
3102 |
update_option('mo2f_encryption_key',$get_encryption_key);
|
3103 |
|
3104 |
-
if ( get_option( 'mo2f_customerKey' ) && !
|
3105 |
update_option( 'mo2f_is_NC', 0 );
|
3106 |
} else {
|
3107 |
update_option( 'mo2f_is_NC', 1 );
|
18 |
$wp_roles = new WP_Roles();
|
19 |
}
|
20 |
|
21 |
+
if ( MoWpnsUtility::get_mo2f_db_option('mo2f_activate_plugin', 'get_option') == 1 ) {
|
22 |
$mo2f_rba_attributes = new Miniorange_Rba_Attributes();
|
23 |
$pass2fa_login = new Miniorange_Password_2Factor_Login();
|
24 |
$mo2f_2factor_setup = new Two_Factor_Setup();
|
45 |
'miniorange_pass2login_form_fields'
|
46 |
), 10, 5 );
|
47 |
add_filter( 'mo2f_gauth_service', array( $mo2f_rba_attributes, 'mo2f_google_auth_service' ), 10, 1 );
|
48 |
+
if ( MoWpnsUtility::get_mo2f_db_option('mo2f_login_option', 'get_option') ) { //password + 2nd factor enabled
|
49 |
if ( get_option( 'mo_2factor_admin_registration_status' ) == 'MO_2_FACTOR_CUSTOMER_REGISTERED_SUCCESS' or MO2F_IS_ONPREM) {
|
50 |
|
51 |
remove_filter( 'authenticate', 'wp_authenticate_username_password', 20 );
|
75 |
'mo_2_factor_pass2login_show_wp_login_form'
|
76 |
) );
|
77 |
}
|
78 |
+
else if(!get_site_option('mo2f_woocommerce_login_prompt') && MoWpnsUtility::get_mo2f_db_option('mo2f_enable_2fa_prompt_on_login_page', 'site_option') ) {
|
79 |
add_action('woocommerce_login_form_end' ,array(
|
80 |
$pass2fa_login,
|
81 |
'mo_2_factor_pass2login_woocommerce'
|
128 |
$userid = wp_get_current_user()->ID;
|
129 |
add_option('mo2f_onprem_admin' , $userid );
|
130 |
// Deciding on On-Premise solution
|
131 |
+
$is_NC=MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option');
|
132 |
+
$is_NNC=MoWpnsUtility::get_mo2f_db_option('mo2f_is_NNC', 'get_option');
|
133 |
// Old users
|
134 |
if ( get_option( 'mo2f_customerKey' ) && ! $is_NC )
|
135 |
add_option( 'is_onprem', 0 );
|
173 |
|
174 |
if ( ! get_option( 'mo2f_existing_user_values_updated' ) ) {
|
175 |
|
176 |
+
if ( get_option( 'mo2f_customerKey' ) && ! MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option')) {
|
177 |
update_option( 'mo2f_is_NC', 0 );
|
178 |
}
|
179 |
|
180 |
$check_if_user_column_exists = false;
|
181 |
|
182 |
+
if ( $user_id && ! MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option') ) {
|
183 |
$does_table_exist = $Mo2fdbQueries->check_if_table_exists();
|
184 |
if ( $does_table_exist ) {
|
185 |
$check_if_user_column_exists = $Mo2fdbQueries->check_if_user_column_exists( $user_id );
|
268 |
|
269 |
|
270 |
}
|
271 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
272 |
|
273 |
function feedback_request() {
|
274 |
display_feedback_form();
|
276 |
|
277 |
function get_customer_SMS_transactions() {
|
278 |
|
279 |
+
if ( get_option( 'mo_2factor_admin_registration_status' ) == 'MO_2_FACTOR_CUSTOMER_REGISTERED_SUCCESS' && MoWpnsUtility::get_mo2f_db_option('mo2f_show_sms_transaction_message', 'get_option') ) {
|
280 |
+
if ( ! MoWpnsUtility::get_mo2f_db_option('mo2f_set_transactions', 'get_option') ) {
|
281 |
$customer = new Customer_Setup();
|
282 |
|
283 |
$content = json_decode( $customer->get_customer_transactions( get_option( 'mo2f_customerKey' ), get_option( 'mo2f_api_key' ) ), true );
|
294 |
}
|
295 |
update_option( 'mo2f_number_of_transactions', $smsRemaining );
|
296 |
} else {
|
297 |
+
$smsRemaining = MoWpnsUtility::get_mo2f_db_option('mo2f_number_of_transactions', 'get_option');
|
298 |
}
|
299 |
|
300 |
$this->display_customer_transactions( $smsRemaining );
|
310 |
$user = wp_get_current_user();
|
311 |
$selected_2_Factor_method = $Mo2fdbQueries->get_user_detail( 'mo2f_configured_2FA_method', $user->ID );
|
312 |
if ( $selected_2_Factor_method == 'NONE' ) {
|
313 |
+
if ( MoWpnsUtility::get_mo2f_db_option('mo2f_enable_2fa_for_users', 'get_option') || ( current_user_can( 'manage_options' ) && get_option( 'mo2f_miniorange_admin' ) == $user->ID ) ) {
|
314 |
echo '<div class="is-dismissible notice notice-warning"><p><b>' . mo2f_lt( "miniOrange 2-Factor Plugin: " ) . '</b>' . mo2f_lt( 'You have not configured your 2-factor authentication method yet.' ) .
|
315 |
'<a href="admin.php?page=mo_2fa_two_fa">' . mo2f_lt( ' Click here' ) . '</a>' . mo2f_lt( ' to set it up.' ) .
|
316 |
'<button type="button" class="notice-dismiss"><span class="screen-reader-text">' . mo2f_lt( 'Dismiss this notice.' ) . '</span></button></div>';
|
349 |
$roles = $user->roles;
|
350 |
$miniorange_role = array_shift( $roles );
|
351 |
|
352 |
+
$is_plugin_activated = MoWpnsUtility::get_mo2f_db_option('mo2f_activate_plugin', 'get_option');
|
353 |
$is_customer_admin = get_option( 'mo2f_miniorange_admin' ) == $user->ID ? true : false;
|
354 |
+
$is_2fa_enabled_for_users = MoWpnsUtility::get_mo2f_db_option('mo2f_enable_2fa_for_users', 'get_option');
|
355 |
$can_current_user_manage_options = current_user_can( 'manage_options' );
|
356 |
$admin_registration_status = get_option( 'mo_2factor_admin_registration_status' ) == 'MO_2_FACTOR_CUSTOMER_REGISTERED_SUCCESS'
|
357 |
? true : false;
|
379 |
else
|
380 |
$iconurl = site_url(). '/wp-content/uploads/miniorange/plugin_icon.png';
|
381 |
$menu_slug = 'miniOrange_2_factor_settings';
|
382 |
+
add_menu_page( 'miniOrange 2 Factor Auth', MoWpnsUtility::get_mo2f_db_option('mo2f_custom_plugin_name', 'get_option'), 'read', $menu_slug, array($this,'mo_auth_login_options'), $iconurl );
|
383 |
}
|
384 |
|
385 |
function mo_auth_login_options() {
|
424 |
}
|
425 |
|
426 |
function miniorange_auth_save_settings() {
|
427 |
+
if (get_site_option('mo2f_plugin_redirect')) {
|
428 |
+
delete_site_option('mo2f_plugin_redirect');
|
429 |
+
wp_redirect(admin_url() . 'admin.php?page=mo_2fa_two_fa');
|
430 |
+
exit;
|
|
|
431 |
}
|
432 |
if ( array_key_exists( 'page', $_REQUEST ) && $_REQUEST['page'] == 'mo_2fa_two_fa' ) {
|
433 |
if ( ! session_id() || session_id() == '' || ! isset( $_SESSION ) ) {
|
714 |
$Mo2fdbQueries->update_user_details( $user->ID, array( 'mo2f_user_phone' => $customerKey['phone'] ) );
|
715 |
update_option( 'mo2f_miniorange_admin', $user->ID );
|
716 |
|
717 |
+
$mo2f_emailVerification_config_status = MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option') == 0 ? true : false;
|
718 |
|
719 |
delete_option( 'mo2f_password' );
|
720 |
update_option( 'mo_2factor_admin_registration_status', 'MO_2_FACTOR_CUSTOMER_REGISTERED_SUCCESS' );
|
743 |
if ( $mo2f_second_factor != 'NONE' ) {
|
744 |
$configured_2FA_method = MO2f_Utility::mo2f_decode_2_factor( $mo2f_second_factor, "servertowpdb" );
|
745 |
|
746 |
+
if ( MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option') == 0 ) {
|
747 |
|
748 |
$auth_method_abr = str_replace( ' ', '', $configured_2FA_method );
|
749 |
$Mo2fdbQueries->update_user_details( $user->ID, array(
|
765 |
}
|
766 |
|
767 |
$mo2f_message = Mo2fConstants:: langTranslate( "ACCOUNT_RETRIEVED_SUCCESSFULLY" );
|
768 |
+
if ( $configured_2FA_method != 'NONE' && MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option') == 0 ) {
|
769 |
$mo2f_message .= ' <b>' . $configured_2FA_method . '</b> ' . Mo2fConstants:: langTranslate( "DEFAULT_2ND_FACTOR" ) . '.';
|
770 |
}
|
771 |
$mo2f_message .= ' ' . '<a href=\"admin.php?page=mo_2fa_two_fa\" >' . Mo2fConstants:: langTranslate( "CLICK_HERE" ) . '</a> ' . Mo2fConstants:: langTranslate( "CONFIGURE_2FA" );
|
1015 |
$mo_2factor_user_registration_status = $Mo2fdbQueries->get_user_detail( 'mo_2factor_user_registration_status', $user->ID );
|
1016 |
if ( $mo_2factor_user_registration_status == 'MO_2_FACTOR_PLUGIN_SETTINGS' or MO2F_IS_ONPREM ) {
|
1017 |
|
1018 |
+
if($_POST['mo2f_login_option'] == 0 && MoWpnsUtility::get_mo2f_db_option('mo2f_enable_2fa_prompt_on_login_page', 'get_option')){
|
1019 |
update_option( 'mo2f_message', Mo2fConstants:: langTranslate( "LOGIN_WITH_2ND_FACTOR" ) );
|
1020 |
$this->mo_auth_show_error_message();
|
1021 |
}else{
|
1022 |
update_option( 'mo2f_login_option', isset( $_POST['mo2f_login_option'] ) ? $_POST['mo2f_login_option'] : 0 );
|
1023 |
update_option( 'mo2f_remember_device', isset( $_POST['mo2f_remember_device'] ) ? $_POST['mo2f_remember_device'] : 0 );
|
1024 |
+
if ( MoWpnsUtility::get_mo2f_db_option('mo2f_login_option', 'get_option') == 0 ) {
|
1025 |
update_option( 'mo2f_remember_device', 0 );
|
1026 |
}
|
1027 |
if(isset($_POST['mo2f_enable_login_with_2nd_factor']))
|
1522 |
$show = 1;
|
1523 |
if(MO2F_IS_ONPREM )
|
1524 |
{
|
1525 |
+
$txid = isset($_POST['TxidEmail'])? $_POST['TxidEmail']:null;
|
1526 |
$status = get_option($txid);
|
1527 |
if($status != '')
|
1528 |
{
|
1536 |
}
|
1537 |
}
|
1538 |
$mo2f_configured_2FA_method = $Mo2fdbQueries->get_user_detail( 'mo2f_configured_2FA_method', $user->ID );
|
1539 |
+
if(MO2F_IS_ONPREM and $mo2f_configured_2FA_method == 'OUT OF BAND EMAIL')
|
1540 |
+
$mo2f_configured_2FA_method = 'Email Verification';
|
1541 |
+
|
1542 |
$mo2f_EmailVerification_config_status = $Mo2fdbQueries->get_user_detail( 'mo2f_EmailVerification_config_status', $user->ID );
|
1543 |
if ( ! current_user_can( 'manage_options' ) && $mo2f_configured_2FA_method == 'OUT OF BAND EMAIL' ) {
|
1544 |
if ( $mo2f_EmailVerification_config_status ) {
|
1656 |
|
1657 |
if ( current_user_can( 'manage_options' ) ) {
|
1658 |
update_option( 'mo2f_message', Mo2fConstants:: langTranslate( "COMPLETED_TEST" ) );
|
1659 |
+
delete_user_meta( $user->ID, 'configure_2FA');
|
1660 |
+
$Mo2fdbQueries->update_user_details( $user->ID, array( 'mo2f_configured_2FA_method' => 'OTP Over Email' ) );
|
1661 |
} else {
|
1662 |
update_option( 'mo2f_message', Mo2fConstants:: langTranslate( "COMPLETED_TEST" ) );
|
1663 |
}
|
2036 |
$_SESSION['mo2f_transactionId'] = $content['txId'];
|
2037 |
update_option( 'mo2f_transactionId', $content['txId'] );
|
2038 |
update_option( 'mo2f_message', Mo2fConstants:: langTranslate( "OTP_SENT" ) . ' ' . $phone . ' .' . Mo2fConstants:: langTranslate( "ENTER_OTP" ) );
|
2039 |
+
update_option( 'mo2f_number_of_transactions', MoWpnsUtility::get_mo2f_db_option('mo2f_number_of_transactions', 'get_option') - 1 );
|
2040 |
update_site_option('cmVtYWluaW5nT1RQVHJhbnNhY3Rpb25z',get_site_option('cmVtYWluaW5nT1RQVHJhbnNhY3Rpb25z')-1);
|
2041 |
$this->mo_auth_show_success_message();
|
2042 |
} else {
|
2210 |
$allowed = false;
|
2211 |
if(get_option('mo2f_miniorange_admin'))
|
2212 |
$allowed = wp_get_current_user()->ID == get_option('mo2f_miniorange_admin');
|
2213 |
+
|
2214 |
+
if($is_customer_registered && !$is_end_user_registered and !$allowed){
|
2215 |
$enduser = new Two_Factor_Setup();
|
2216 |
$check_user = json_decode( $enduser->mo_check_user_already_exist( $email ), true );
|
2217 |
if(json_last_error() == JSON_ERROR_NONE){
|
2254 |
}
|
2255 |
|
2256 |
}
|
2257 |
+
|
2258 |
+
update_user_meta( $user->ID, 'mo2f_2FA_method_to_configure', $selected_2FA_method );
|
2259 |
if(MO2F_IS_ONPREM)
|
2260 |
{
|
2261 |
if($selected_2FA_method == 'EmailVerification')
|
2265 |
if($selected_2FA_method == 'OTPOverSMS')
|
2266 |
$selected_2FA_method = 'OTP Over SMS';
|
2267 |
}
|
2268 |
+
|
2269 |
if(MO2F_IS_ONPREM and ($selected_2FA_method =='Google Authenticator' or $selected_2FA_method == 'Security Questions' or $selected_2FA_method =='OTP Over Email' or $selected_2FA_method == 'Email Verification'))
|
2270 |
$is_customer_registered = 1;
|
2271 |
|
2289 |
$email = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user->ID );
|
2290 |
$customer_key = get_option( 'mo2f_customerKey' );
|
2291 |
$api_key = get_option( 'mo2f_api_key' );
|
2292 |
+
$customer = new Customer_Setup();
|
2293 |
$cloud_method1 = array('miniOrange QR Code Authentication','miniOrange Push Notification','miniOrange Soft Token');
|
2294 |
+
if(($selected_2FA_method == "OTP Over Email") and MO2F_IS_ONPREM)
|
|
|
2295 |
{
|
2296 |
+
$check = 1;
|
2297 |
+
if(MoWpnsUtility::get_mo2f_db_option('cmVtYWluaW5nT1RQ', 'site_option')<=0)
|
2298 |
+
{
|
2299 |
+
update_site_option("bGltaXRSZWFjaGVk",1);
|
2300 |
+
$check = 0;
|
2301 |
+
|
2302 |
+
}
|
2303 |
+
|
2304 |
|
2305 |
+
if($check == 1)
|
2306 |
+
$response = json_decode( $customer->send_otp_token( $email, $selected_2FA_method, $customer_key, $api_key ), true );
|
2307 |
else
|
2308 |
+
$response['status'] = 'FAILED';
|
2309 |
+
if ( strcasecmp( $response['status'], 'SUCCESS' ) == 0) {
|
2310 |
+
$cmVtYWluaW5nT1RQ = MoWpnsUtility::get_mo2f_db_option('cmVtYWluaW5nT1RQ', 'site_option');
|
2311 |
+
update_site_option("cmVtYWluaW5nT1RQ",$cmVtYWluaW5nT1RQ-1);
|
2312 |
+
update_option( 'mo2f_message', Mo2fConstants:: langTranslate( "OTP_SENT" ) . ' <b>' . ( $email ) . '</b>. ' . Mo2fConstants:: langTranslate( "ENTER_OTP" ) );
|
2313 |
+
update_option( 'mo2f_number_of_transactions', MoWpnsUtility::get_mo2f_db_option('mo2f_number_of_transactions', 'get_option') - 1 );
|
2314 |
|
2315 |
+
$_SESSION['mo2f_transactionId'] = $response['txId'];
|
2316 |
+
update_option( 'mo2f_transactionId', $response['txId'] );
|
2317 |
+
$this->mo_auth_show_success_message();
|
2318 |
+
|
2319 |
+
} else {
|
2320 |
+
update_option( 'mo2f_message', Mo2fConstants:: langTranslate( "ERROR_IN_SENDING_OTP_ONPREM" ) );
|
2321 |
+
$this->mo_auth_show_error_message();
|
2322 |
+
|
2323 |
+
}
|
2324 |
+
update_user_meta( $user->ID, 'configure_2FA', 1 );
|
2325 |
+
|
2326 |
}else if($selected_2FA_method == "Email Verification")
|
2327 |
{
|
2328 |
$enduser->send_otp_token($email,'OUT OF BAND EMAIL',$customer_key,$api_key);
|
2329 |
}
|
2330 |
|
|
|
2331 |
|
2332 |
+
if($selected_2FA_method != 'OTP Over Email')
|
2333 |
+
$Mo2fdbQueries->update_user_details( $user->ID, array( 'mo2f_configured_2FA_method' => $selected_2FA_method ) );
|
2334 |
|
2335 |
// update the server
|
2336 |
if(!MO2F_IS_ONPREM)
|
2508 |
if($selected_2FA_method == 'OTP Over Email')
|
2509 |
{
|
2510 |
$phone = $Mo2fdbQueries->get_user_detail( 'mo2f_user_email', $user->ID );
|
2511 |
+
if(MoWpnsUtility::get_mo2f_db_option('cmVtYWluaW5nT1RQ', 'site_option')<=0)
|
2512 |
{
|
2513 |
update_site_option("bGltaXRSZWFjaGVk",1);
|
2514 |
$check = 0;
|
2524 |
if ( strcasecmp( $response['status'], 'SUCCESS' ) == 0 ) {
|
2525 |
if($selected_2FA_method == 'OTP Over Email')
|
2526 |
{
|
2527 |
+
$cmVtYWluaW5nT1RQ = MoWpnsUtility::get_mo2f_db_option('cmVtYWluaW5nT1RQ', 'site_option');
|
2528 |
+
update_site_option("cmVtYWluaW5nT1RQ",$cmVtYWluaW5nT1RQ-1);
|
2529 |
}
|
2530 |
else if($selected_2FA_method == 'OTP Over SMS')
|
2531 |
{
|
2532 |
update_site_option('cmVtYWluaW5nT1RQVHJhbnNhY3Rpb25z',get_site_option('cmVtYWluaW5nT1RQVHJhbnNhY3Rpb25z')-1);
|
2533 |
}
|
2534 |
update_option( 'mo2f_message', Mo2fConstants:: langTranslate( "OTP_SENT" ) . ' <b>' . ( $phone ) . '</b>. ' . Mo2fConstants:: langTranslate( "ENTER_OTP" ) );
|
2535 |
+
update_option( 'mo2f_number_of_transactions', MoWpnsUtility::get_mo2f_db_option('mo2f_number_of_transactions', 'get_option') - 1 );
|
2536 |
|
2537 |
$_SESSION['mo2f_transactionId'] = $response['txId'];
|
2538 |
update_option( 'mo2f_transactionId', $response['txId'] );
|
2622 |
function mo_auth_deactivate() {
|
2623 |
global $Mo2fdbQueries;
|
2624 |
$mo2f_register_with_another_email = get_option( 'mo2f_register_with_another_email' );
|
2625 |
+
$is_EC = ! MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option') ? 1 : 0;
|
2626 |
+
$is_NNC = MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option') && MoWpnsUtility::get_mo2f_db_option('mo2f_is_NNC', 'get_option') ? 1 : 0;
|
2627 |
|
2628 |
if ( $mo2f_register_with_another_email || $is_EC || $is_NNC ) {
|
2629 |
update_option( 'mo2f_register_with_another_email', 0 );
|
2970 |
$current_method = MO2f_Utility::mo2f_decode_2_factor( $mo2f_configured_2FA_method, "server" );
|
2971 |
|
2972 |
$response = json_decode( $enduser->mo2f_update_userinfo( $email, $current_method, $phone, null, null ), true );
|
|
|
2973 |
if ( json_last_error() == JSON_ERROR_NONE ) {
|
2974 |
if ( $response['status'] == 'ERROR' ) {
|
2975 |
update_option( 'mo2f_message', Mo2fConstants:: langTranslate( $response['message'] ) );
|
2976 |
$this->mo_auth_show_error_message();
|
2977 |
} else if ( $response['status'] == 'SUCCESS' ) {
|
2978 |
+
$configured_2fa_method = '';
|
2979 |
+
if($mo2f_configured_2FA_method =='')
|
2980 |
+
$configured_2fa_method = $Mo2fdbQueries->get_user_detail( 'mo2f_configured_2FA_method', $user->ID );
|
2981 |
+
else
|
2982 |
+
$configured_2fa_method = $mo2f_configured_2FA_method;
|
2983 |
if ( in_array( $configured_2fa_method, array( "Google Authenticator", "Authy Authenticator" ) ) ) {
|
2984 |
update_user_meta( $user->ID, 'mo2f_external_app_type', $configured_2fa_method );
|
2985 |
}
|
2990 |
delete_user_meta( $user->ID, 'configure_2FA' );
|
2991 |
|
2992 |
if($configured_2fa_method == 'OTP Over Email' or $configured_2fa_method=='OTP Over SMS')
|
2993 |
+
{
|
2994 |
+
update_option( 'mo2f_message', Mo2fConstants:: langTranslate( $configured_2fa_method ) . ' ' . Mo2fConstants:: langTranslate( "SET_2FA_otp" ) );
|
2995 |
+
}
|
2996 |
else
|
2997 |
update_option( 'mo2f_message', Mo2fConstants:: langTranslate( $configured_2fa_method ) . ' ' . Mo2fConstants:: langTranslate( "SET_2FA" ) );
|
2998 |
|
3074 |
$currentTimeInMillis = round(microtime(true) * 1000);
|
3075 |
update_site_option($time,$currentTimeInMillis);
|
3076 |
update_site_option( 'mo2f_message', Mo2fConstants::langTranslate("VERIFICATION_EMAIL_SENT") .'<b> ' . $email . '</b>. ' . Mo2fConstants::langTranslate("ACCEPT_LINK_TO_VERIFY_EMAIL"));
|
3077 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
3078 |
}else{
|
3079 |
update_site_option( 'mo2f_message', Mo2fConstants::langTranslate("ERROR_DURING_PROCESS_EMAIL"));
|
3080 |
$this->mo_auth_show_error_message();
|
3117 |
$get_encryption_key = MO2f_Utility::random_str(16);
|
3118 |
update_option('mo2f_encryption_key',$get_encryption_key);
|
3119 |
|
3120 |
+
if ( get_option( 'mo2f_customerKey' ) && ! MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option') ) {
|
3121 |
update_option( 'mo2f_is_NC', 0 );
|
3122 |
} else {
|
3123 |
update_option( 'mo2f_is_NC', 1 );
|
handler/twofa/two_fa_short_call.php
ADDED
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
include_once('two_fa_short_gateway.php');
|
4 |
+
|
5 |
+
class TwoFACustomRegFormAPI
|
6 |
+
{
|
7 |
+
public function __construct()
|
8 |
+
{
|
9 |
+
|
10 |
+
}
|
11 |
+
|
12 |
+
public static function challenge($phone_number,$email,$authTypeSend)
|
13 |
+
{
|
14 |
+
|
15 |
+
|
16 |
+
if($authTypeSend == 'email')
|
17 |
+
{
|
18 |
+
$auierpyasdcRy = MoWpnsUtility::get_mo2f_db_option('cmVtYWluaW5nT1RQ', 'site_option');
|
19 |
+
$cmVtYWluaW5nT1RQ = $auierpyasdcRy? $auierpyasdcRy : 0;
|
20 |
+
if($cmVtYWluaW5nT1RQ > 0)
|
21 |
+
{
|
22 |
+
$response = TwoFAMOGateway:: mo_send_otp_token('EMAIL', '', $email);
|
23 |
+
update_site_option("cmVtYWluaW5nT1RQ",$cmVtYWluaW5nT1RQ-1);
|
24 |
+
}
|
25 |
+
else
|
26 |
+
{
|
27 |
+
$response = ['status'=>'ERROR','message'=>'Email Transaction Limit Exceeded'];
|
28 |
+
wp_send_json($response);
|
29 |
+
}
|
30 |
+
}
|
31 |
+
else
|
32 |
+
{
|
33 |
+
$response = TwoFAMOGateway:: mo_send_otp_token('SMS', $phone_number, $email);
|
34 |
+
}
|
35 |
+
wp_send_json($response);
|
36 |
+
|
37 |
+
}
|
38 |
+
|
39 |
+
public static function validate($txId, $otp)
|
40 |
+
{
|
41 |
+
wp_send_json(TwoFAMOGateway :: mo_validate_otp_token('OTP',$txId, $otp));
|
42 |
+
}
|
43 |
+
}
|
handler/twofa/two_fa_short_custom.php
ADDED
@@ -0,0 +1,80 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
include_once('two_fa_short_call.php');
|
4 |
+
|
5 |
+
class TwoFACustomRegFormShortcode
|
6 |
+
|
7 |
+
{
|
8 |
+
public function __construct()
|
9 |
+
{
|
10 |
+
add_action('woocommerce_created_customer',array($this,'wc_post_registration'), 1, 3);
|
11 |
+
}
|
12 |
+
|
13 |
+
public function mo_enqueue_shortcode()
|
14 |
+
{
|
15 |
+
add_action("wp_ajax_mo_shortcode",array( $this, 'mo_shortcode' ));
|
16 |
+
add_action("wp_ajax_nopriv_mo_shortcode",array($this,'mo_shortcode'));
|
17 |
+
add_action("wp_ajax_mo_ajax_register",array( $this, 'mo_ajax_register' ));
|
18 |
+
add_action("wp_ajax_nopriv_mo_ajax_register",array($this,'mo_ajax_register'));
|
19 |
+
}
|
20 |
+
|
21 |
+
public function mo_shortcode()
|
22 |
+
{
|
23 |
+
switch($_POST['mo_action'])
|
24 |
+
{
|
25 |
+
case "challenge":
|
26 |
+
$email = sanitize_text_field($_POST['email']);
|
27 |
+
$phone = sanitize_text_field($_POST['phone']);
|
28 |
+
$authTypeSend = sanitize_text_field($_POST['authTypeSend']);
|
29 |
+
|
30 |
+
TwoFACustomRegFormAPI::challenge($phone,$email,$authTypeSend);
|
31 |
+
break;
|
32 |
+
|
33 |
+
case "validate":
|
34 |
+
$otp = sanitize_text_field($_POST['otp']);
|
35 |
+
$txId = sanitize_text_field($_POST['txId']);
|
36 |
+
TwoFACustomRegFormAPI::validate($txId,$otp);
|
37 |
+
break;
|
38 |
+
}
|
39 |
+
}
|
40 |
+
|
41 |
+
public function mo_ajax_register(){
|
42 |
+
switch ($_POST['mo_action']) {
|
43 |
+
case 'send_otp_over_email':
|
44 |
+
$email = isset($_POST['email'])? $_POST['email']: "";
|
45 |
+
$phone = isset($_POST['phone'])? $_POST['phone']: "";
|
46 |
+
$email = sanitize_text_field($email);
|
47 |
+
$phone = sanitize_text_field($phone);
|
48 |
+
$authTypeSend = sanitize_text_field($_POST['authTypeSend']);
|
49 |
+
TwoFACustomRegFormAPI :: challenge($phone,$email,$authTypeSend);
|
50 |
+
# code...
|
51 |
+
break;
|
52 |
+
case 'send_otp_over_sms' :
|
53 |
+
$email = isset($_POST['email'])? $_POST['email']: "";
|
54 |
+
$phone = isset($_POST['phone'])? $_POST['phone']: "";
|
55 |
+
$email = sanitize_text_field($email);
|
56 |
+
$phone = sanitize_text_field($phone);
|
57 |
+
$authTypeSend = sanitize_text_field($_POST['authTypeSend']);
|
58 |
+
TwoFACustomRegFormAPI :: challenge($phone,$email,$authTypeSend);
|
59 |
+
break;
|
60 |
+
|
61 |
+
default:
|
62 |
+
$otp = sanitize_text_field($_POST['otp']);
|
63 |
+
$txId = sanitize_text_field($_POST['txId']);
|
64 |
+
TwoFACustomRegFormAPI :: validate($txId,$otp);
|
65 |
+
# code...
|
66 |
+
break;
|
67 |
+
}
|
68 |
+
}
|
69 |
+
|
70 |
+
function wc_post_registration( $user_id, $new_customer_data, $password_generated) {
|
71 |
+
if ( isset( $_POST['phone'] ))
|
72 |
+
update_user_meta($user_id, 'billing_phone', $_POST['phone']);
|
73 |
+
}
|
74 |
+
|
75 |
+
|
76 |
+
|
77 |
+
|
78 |
+
}
|
79 |
+
|
80 |
+
|
handler/twofa/two_fa_short_gateway.php
ADDED
@@ -0,0 +1,67 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
global $mo2f_dirName;
|
4 |
+
|
5 |
+
require_once $mo2f_dirName.'helper'.DIRECTORY_SEPARATOR.'mo_twofa_sessions.php';
|
6 |
+
|
7 |
+
if(! defined( 'ABSPATH' )) exit;
|
8 |
+
define('MO2F_DEFAULT_APIKEY',"fFd2XcvTGDemZvbw1bcUesNJWEqKbbUq");
|
9 |
+
define('MO2F_FAIL_MODE', false);
|
10 |
+
define('MO2F_SESSION_TYPE', "TRANSIENT");
|
11 |
+
|
12 |
+
class TwoFAMOGateway
|
13 |
+
{
|
14 |
+
public static function mo_send_otp_token($authType, $phone, $email)
|
15 |
+
{
|
16 |
+
if(MO2F_TEST_MODE)
|
17 |
+
{
|
18 |
+
return ['message'=>'OTP Sent Successfully','status'=>'SUCCESS','txId'=> rand(1000,9999)];
|
19 |
+
}
|
20 |
+
else
|
21 |
+
{
|
22 |
+
$customerKey = get_site_option('mo2f_customerKey');
|
23 |
+
$apiKey = get_site_option('mo2f_api_key');
|
24 |
+
TwoFAMoSessions::addSessionVar('mo2f_transactionId',true);
|
25 |
+
TwoFAMoSessions::addSessionVar('sent_on',time());
|
26 |
+
|
27 |
+
if($authType == 'EMAIL')
|
28 |
+
{
|
29 |
+
$cmVtYWluaW5nT1RQ = MoWpnsUtility::get_mo2f_db_option('cmVtYWluaW5nT1RQ', 'site_option');
|
30 |
+
update_site_option("cmVtYWluaW5nT1RQ",$cmVtYWluaW5nT1RQ-1);
|
31 |
+
$content = (new Customer_Cloud_Setup)->send_otp_token($email,$authType,$customerKey,$apiKey);
|
32 |
+
}
|
33 |
+
|
34 |
+
else
|
35 |
+
{
|
36 |
+
update_site_option('cmVtYWluaW5nT1RQVHJhbnNhY3Rpb25z',get_site_option('cmVtYWluaW5nT1RQVHJhbnNhY3Rpb25z')-1);
|
37 |
+
$content = (new Customer_Cloud_Setup)->send_otp_token($phone,$authType,$customerKey,$apiKey);
|
38 |
+
}
|
39 |
+
return json_decode($content,TRUE);
|
40 |
+
}
|
41 |
+
}
|
42 |
+
|
43 |
+
public static function mo_validate_otp_token($authType,$txId, $otp_token)
|
44 |
+
{
|
45 |
+
if(MO2F_TEST_MODE)
|
46 |
+
{
|
47 |
+
TwoFAMoSessions::unsetSession('mo2f_transactionId');
|
48 |
+
return MO2F_FAIL_MODE ? ['status'=>"FAILED","message"=>"OTP is Invalid"]:['status'=>"SUCCESS","message"=>"Successfully Validated"];
|
49 |
+
}
|
50 |
+
else
|
51 |
+
{
|
52 |
+
$content = "";
|
53 |
+
if(TwoFAMoSessions :: getSessionVar('mo2f_transactionId'))
|
54 |
+
{
|
55 |
+
$customerKey = get_site_option('mo2f_customerKey');
|
56 |
+
$apiKey = get_site_option('mo2f_api_key');
|
57 |
+
$content = (new Customer_Cloud_Setup)->validate_otp_token($authType,null,$txId,$otp_token,$customerKey,$apiKey);
|
58 |
+
$content = json_decode($content, TRUE);
|
59 |
+
if($content["status"] == "SUCCESS")
|
60 |
+
{
|
61 |
+
TwoFAMoSessions :: unsetSession('mo2f_transactionId');
|
62 |
+
}
|
63 |
+
}
|
64 |
+
return $content;
|
65 |
+
}
|
66 |
+
}
|
67 |
+
}
|
handler/twofa/two_fa_utility.php
CHANGED
@@ -115,6 +115,7 @@ class MO2f_Utility {
|
|
115 |
global $Mo2fdbQueries;
|
116 |
$key = get_option( 'mo2f_encryption_key' );
|
117 |
$data_option=NULL;
|
|
|
118 |
if(empty($data_option)){
|
119 |
|
120 |
//setting session
|
@@ -261,8 +262,9 @@ class MO2f_Utility {
|
|
261 |
}
|
262 |
} else if ( $variable == 'mo_2_factor_kba_questions' ) {
|
263 |
if ( isset( $_COOKIE['kba_question1'] ) && ! empty( $_COOKIE['kba_question1'] ) ) {
|
264 |
-
|
265 |
-
$
|
|
|
266 |
$cookie_value = array( $kba_question1, $kba_question2 );
|
267 |
}
|
268 |
} else {
|
@@ -547,6 +549,18 @@ class MO2f_Utility {
|
|
547 |
return FALSE;
|
548 |
}
|
549 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
550 |
}
|
551 |
|
552 |
-
?>
|
115 |
global $Mo2fdbQueries;
|
116 |
$key = get_option( 'mo2f_encryption_key' );
|
117 |
$data_option=NULL;
|
118 |
+
|
119 |
if(empty($data_option)){
|
120 |
|
121 |
//setting session
|
262 |
}
|
263 |
} else if ( $variable == 'mo_2_factor_kba_questions' ) {
|
264 |
if ( isset( $_COOKIE['kba_question1'] ) && ! empty( $_COOKIE['kba_question1'] ) ) {
|
265 |
+
|
266 |
+
$kba_question1['question'] = MO2f_Utility::mo2f_get_cookie_values( 'kba_question1' );
|
267 |
+
$kba_question2['question'] = MO2f_Utility::mo2f_get_cookie_values( 'kba_question2' );
|
268 |
$cookie_value = array( $kba_question1, $kba_question2 );
|
269 |
}
|
270 |
} else {
|
549 |
return FALSE;
|
550 |
}
|
551 |
|
552 |
+
public static function get_index_value($var,$index){
|
553 |
+
switch ($var) {
|
554 |
+
case 'GLOBALS':
|
555 |
+
return isset($GLOBALS[$index])?$GLOBALS[$index]:false;
|
556 |
+
break;
|
557 |
+
|
558 |
+
default:
|
559 |
+
return false;
|
560 |
+
break;
|
561 |
+
}
|
562 |
+
}
|
563 |
+
|
564 |
}
|
565 |
|
566 |
+
?>
|
helper/curl.php
CHANGED
@@ -1,284 +1,285 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class MocURL
|
4 |
-
{
|
5 |
-
|
6 |
-
public static function create_customer($email, $company, $password, $phone = '', $first_name = '', $last_name = '')
|
7 |
-
{
|
8 |
-
$url = MoWpnsConstants::HOST_NAME . '/moas/rest/customer/add';
|
9 |
-
$fields = array (
|
10 |
-
'companyName' => $company,
|
11 |
-
'areaOfInterest' => 'WordPress 2 Factor Authentication Plugin',
|
12 |
-
'productInterest' => 'API_2FA',
|
13 |
-
'firstname' => $first_name,
|
14 |
-
'lastname' => $last_name,
|
15 |
-
'email' => $email,
|
16 |
-
'phone' => $phone,
|
17 |
-
'password' => $password
|
18 |
-
);
|
19 |
-
$json = json_encode($fields);
|
20 |
-
$response = self::callAPI($url, $json);
|
21 |
-
return $response;
|
22 |
-
}
|
23 |
-
|
24 |
-
public static function get_customer_key($email, $password)
|
25 |
-
{
|
26 |
-
$url = MoWpnsConstants::HOST_NAME. "/moas/rest/customer/key";
|
27 |
-
$fields = array (
|
28 |
-
'email' => $email,
|
29 |
-
'password' => $password
|
30 |
-
);
|
31 |
-
$json = json_encode($fields);
|
32 |
-
$response = self::callAPI($url, $json);
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
$
|
40 |
-
|
41 |
-
|
42 |
-
$
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
$
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
'
|
58 |
-
'
|
59 |
-
'
|
60 |
-
'
|
61 |
-
'
|
62 |
-
'
|
63 |
-
|
64 |
-
|
65 |
-
$
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
$
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
$
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
$
|
86 |
-
$
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
'
|
91 |
-
'
|
92 |
-
'
|
93 |
-
'
|
94 |
-
|
95 |
-
|
96 |
-
$
|
97 |
-
$
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
$
|
105 |
-
$
|
106 |
-
|
107 |
-
'
|
108 |
-
'
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
$
|
120 |
-
$
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
'
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
$
|
129 |
-
$
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
$
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
$
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
$
|
149 |
-
$
|
150 |
-
$
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
$
|
158 |
-
$
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
$headers
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
$
|
181 |
-
$
|
182 |
-
$
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
$
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
'
|
220 |
-
'
|
221 |
-
|
222 |
-
'
|
223 |
-
'
|
224 |
-
'
|
225 |
-
'
|
226 |
-
'
|
227 |
-
'
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
$
|
232 |
-
$
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
$currentTimestampInMillis =
|
241 |
-
|
242 |
-
|
243 |
-
$
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
"
|
248 |
-
"
|
249 |
-
"
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
//For
|
258 |
-
|
259 |
-
|
260 |
-
$
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
curl_setopt($ch,
|
265 |
-
curl_setopt($ch,
|
266 |
-
curl_setopt($ch,
|
267 |
-
curl_setopt(
|
268 |
-
|
269 |
-
|
270 |
-
curl_setopt($ch,
|
271 |
-
|
272 |
-
curl_setopt($ch,
|
273 |
-
curl_setopt($ch,
|
274 |
-
$
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
}
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class MocURL
|
4 |
+
{
|
5 |
+
|
6 |
+
public static function create_customer($email, $company, $password, $phone = '', $first_name = '', $last_name = '')
|
7 |
+
{
|
8 |
+
$url = MoWpnsConstants::HOST_NAME . '/moas/rest/customer/add';
|
9 |
+
$fields = array (
|
10 |
+
'companyName' => $company,
|
11 |
+
'areaOfInterest' => 'WordPress 2 Factor Authentication Plugin',
|
12 |
+
'productInterest' => 'API_2FA',
|
13 |
+
'firstname' => $first_name,
|
14 |
+
'lastname' => $last_name,
|
15 |
+
'email' => $email,
|
16 |
+
'phone' => $phone,
|
17 |
+
'password' => $password
|
18 |
+
);
|
19 |
+
$json = json_encode($fields);
|
20 |
+
$response = self::callAPI($url, $json);
|
21 |
+
return $response;
|
22 |
+
}
|
23 |
+
|
24 |
+
public static function get_customer_key($email, $password)
|
25 |
+
{
|
26 |
+
$url = MoWpnsConstants::HOST_NAME. "/moas/rest/customer/key";
|
27 |
+
$fields = array (
|
28 |
+
'email' => $email,
|
29 |
+
'password' => $password
|
30 |
+
);
|
31 |
+
$json = json_encode($fields);
|
32 |
+
$response = self::callAPI($url, $json);
|
33 |
+
|
34 |
+
return $response;
|
35 |
+
}
|
36 |
+
|
37 |
+
function submit_contact_us( $q_email, $q_phone, $query )
|
38 |
+
{
|
39 |
+
$current_user = wp_get_current_user();
|
40 |
+
$url = MoWpnsConstants::HOST_NAME . "/moas/rest/customer/contact-us";
|
41 |
+
|
42 |
+
$is_nc_with_1_user = MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option') && MoWpnsUtility::get_mo2f_db_option('mo2f_is_NNC', 'get_option');
|
43 |
+
$is_ec_with_1_user = ! MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option');
|
44 |
+
$onprem = MO2F_IS_ONPREM ?'O':'C';
|
45 |
+
|
46 |
+
$customer_feature = "";
|
47 |
+
|
48 |
+
if ( $is_ec_with_1_user ) {
|
49 |
+
$customer_feature = "V1";
|
50 |
+
}else if ( $is_nc_with_1_user ) {
|
51 |
+
$customer_feature = "V3";
|
52 |
+
}
|
53 |
+
global $moWpnsUtility;
|
54 |
+
$query = '[WordPress 2 Factor Authentication Plugin: ' .$onprem.$customer_feature . ' - V '.MO2F_VERSION.'- Ticket Id:'.$moWpnsUtility->getFeatureStatus().']: ' . $query;
|
55 |
+
|
56 |
+
$fields = array(
|
57 |
+
'firstName' => $current_user->user_firstname,
|
58 |
+
'lastName' => $current_user->user_lastname,
|
59 |
+
'company' => $_SERVER['SERVER_NAME'],
|
60 |
+
'email' => $q_email,
|
61 |
+
'ccEmail' => '2fasupport@xecurify.com',
|
62 |
+
'phone' => $q_phone,
|
63 |
+
'query' => $query
|
64 |
+
);
|
65 |
+
$field_string = json_encode( $fields );
|
66 |
+
$response = self::callAPI($url, $field_string);
|
67 |
+
|
68 |
+
return true;
|
69 |
+
}
|
70 |
+
|
71 |
+
function lookupIP($ip)
|
72 |
+
{
|
73 |
+
$url = MoWpnsConstants::HOST_NAME. "/moas/rest/security/iplookup";
|
74 |
+
$fields = array (
|
75 |
+
'ip' => $ip
|
76 |
+
);
|
77 |
+
$json = json_encode($fields);
|
78 |
+
$response = self::callAPI($url, $json);
|
79 |
+
return $response;
|
80 |
+
}
|
81 |
+
//CHECK
|
82 |
+
function send_otp_token($auth_type, $phone, $email)
|
83 |
+
{
|
84 |
+
|
85 |
+
$url = MoWpnsConstants::HOST_NAME . '/moas/api/auth/challenge';
|
86 |
+
$customerKey = MoWpnsConstants::DEFAULT_CUSTOMER_KEY;
|
87 |
+
$apiKey = MoWpnsConstants::DEFAULT_API_KEY;
|
88 |
+
|
89 |
+
$fields = array(
|
90 |
+
'customerKey' => $customerKey,
|
91 |
+
'email' => $email,
|
92 |
+
'phone' => $phone,
|
93 |
+
'authType' => $auth_type,
|
94 |
+
'transactionName' => 'miniOrange 2-Factor'
|
95 |
+
);
|
96 |
+
$json = json_encode($fields);
|
97 |
+
$authHeader = $this->createAuthHeader($customerKey,$apiKey);
|
98 |
+
$response = self::callAPI($url, $json, $authHeader);
|
99 |
+
return $response;
|
100 |
+
}
|
101 |
+
|
102 |
+
function validate_recaptcha($ip,$response)
|
103 |
+
{
|
104 |
+
$url = MoWpnsConstants::RECAPTCHA_VERIFY;
|
105 |
+
$json = "";
|
106 |
+
$fields = array(
|
107 |
+
'response' => $response,
|
108 |
+
'secret' => get_option('mo_wpns_recaptcha_secret_key'),
|
109 |
+
'remoteip' => $ip
|
110 |
+
);
|
111 |
+
foreach($fields as $key=>$value) { $json .= $key.'='.$value.'&'; }
|
112 |
+
rtrim($json, '&');
|
113 |
+
$response = self::callAPI($url, $json, null);
|
114 |
+
return $response;
|
115 |
+
}
|
116 |
+
|
117 |
+
function validate_otp_token($transactionId,$otpToken)
|
118 |
+
{
|
119 |
+
$url = MoWpnsConstants::HOST_NAME . '/moas/api/auth/validate';
|
120 |
+
$customerKey = MoWpnsConstants::DEFAULT_CUSTOMER_KEY;
|
121 |
+
$apiKey = MoWpnsConstants::DEFAULT_API_KEY;
|
122 |
+
|
123 |
+
$fields = array(
|
124 |
+
'txId' => $transactionId,
|
125 |
+
'token' => $otpToken,
|
126 |
+
);
|
127 |
+
|
128 |
+
$json = json_encode($fields);
|
129 |
+
$authHeader = $this->createAuthHeader($customerKey,$apiKey);
|
130 |
+
$response = self::callAPI($url, $json, $authHeader);
|
131 |
+
return $response;
|
132 |
+
}
|
133 |
+
|
134 |
+
function check_customer($email)
|
135 |
+
{
|
136 |
+
$url = MoWpnsConstants::HOST_NAME . "/moas/rest/customer/check-if-exists";
|
137 |
+
$fields = array(
|
138 |
+
'email' => $email,
|
139 |
+
);
|
140 |
+
$json = json_encode($fields);
|
141 |
+
$response = self::callAPI($url, $json);
|
142 |
+
return $response;
|
143 |
+
}
|
144 |
+
|
145 |
+
function mo_wpns_forgot_password()
|
146 |
+
{
|
147 |
+
|
148 |
+
$url = MoWpnsConstants::HOST_NAME . '/moas/rest/customer/password-reset';
|
149 |
+
$email = get_option('mo2f_email');
|
150 |
+
$customerKey = get_option('mo2f_customerKey');
|
151 |
+
$apiKey = get_option('mo2f_api_key');
|
152 |
+
|
153 |
+
$fields = array(
|
154 |
+
'email' => $email
|
155 |
+
);
|
156 |
+
|
157 |
+
$json = json_encode($fields);
|
158 |
+
$authHeader = $this->createAuthHeader($customerKey,$apiKey);
|
159 |
+
$response = self::callAPI($url, $json, $authHeader);
|
160 |
+
return $response;
|
161 |
+
}
|
162 |
+
|
163 |
+
function send_notification($toEmail,$subject,$content,$fromEmail,$fromName,$toName)
|
164 |
+
{
|
165 |
+
$headers = "MIME-Version: 1.0" . "\r\n";
|
166 |
+
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
|
167 |
+
|
168 |
+
$headers .= 'From: '.$fromName.'<'.$fromEmail.'>' . "\r\n";
|
169 |
+
|
170 |
+
mail($toEmail,$subject,$content,$headers);
|
171 |
+
|
172 |
+
return json_encode(array("status"=>'SUCCESS','statusMessage'=>'SUCCESS'));
|
173 |
+
}
|
174 |
+
|
175 |
+
//added for feedback
|
176 |
+
|
177 |
+
function send_email_alert($email,$phone,$message,$feedback_option){
|
178 |
+
global $moWpnsUtility;
|
179 |
+
global $user;
|
180 |
+
$url = MoWpnsConstants::HOST_NAME . '/moas/api/notify/send';
|
181 |
+
$customerKey = MoWpnsConstants::DEFAULT_CUSTOMER_KEY;
|
182 |
+
$apiKey = MoWpnsConstants::DEFAULT_API_KEY;
|
183 |
+
$fromEmail = 'no-reply@xecurify.com';
|
184 |
+
if ($feedback_option == 'mo_wpns_skip_feedback')
|
185 |
+
{
|
186 |
+
$subject = "Deactivate [Feedback Skipped]: WordPress miniOrange 2-Factor Plugin";
|
187 |
+
}
|
188 |
+
elseif ($feedback_option == 'mo_wpns_feedback')
|
189 |
+
{
|
190 |
+
$subject = "Feedback: WordPress miniOrange 2-Factor Plugin - ". $email;;
|
191 |
+
}
|
192 |
+
elseif ($feedback_option == 'mo_wpns_rating')
|
193 |
+
{
|
194 |
+
$subject = "Feedback: WordPress miniOrange 2-Factor Plugin - ". $email;;
|
195 |
+
}
|
196 |
+
|
197 |
+
$user = wp_get_current_user();
|
198 |
+
|
199 |
+
$is_nc_with_1_user = MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option') && MoWpnsUtility::get_mo2f_db_option('mo2f_is_NNC', 'get_option');
|
200 |
+
$is_ec_with_1_user = ! MoWpnsUtility::get_mo2f_db_option('mo2f_is_NC', 'get_option');
|
201 |
+
$onprem = MO2F_IS_ONPREM ? 'O':'C';
|
202 |
+
|
203 |
+
$customer_feature = "";
|
204 |
+
|
205 |
+
|
206 |
+
if ( $is_ec_with_1_user ) {
|
207 |
+
$customer_feature = "V1";
|
208 |
+
}else if ( $is_nc_with_1_user ) {
|
209 |
+
$customer_feature = "V3";
|
210 |
+
}
|
211 |
+
|
212 |
+
$query = '[WordPress 2 Factor Authentication Plugin: ' .$onprem.$customer_feature . ' - V '.MO2F_VERSION.']: ' . $message;
|
213 |
+
|
214 |
+
|
215 |
+
$content='<div >Hello, <br><br>Ticket ID:'.$moWpnsUtility->getFeatureStatus().'<br><br>First Name :'.$user->user_firstname.'<br><br>Last Name :'.$user->user_lastname.' <br><br>Company :<a href="'.$_SERVER['SERVER_NAME'].'" target="_blank" >'.$_SERVER['SERVER_NAME'].'</a><br><br>Phone Number :'.$phone.'<br><br>Email :<a href="mailto:'.$email.'" target="_blank">'.$email.'</a><br><br>Query :'.$query.'</div>';
|
216 |
+
|
217 |
+
|
218 |
+
$fields = array(
|
219 |
+
'customerKey' => $customerKey,
|
220 |
+
'sendEmail' => true,
|
221 |
+
'email' => array(
|
222 |
+
'customerKey' => $customerKey,
|
223 |
+
'fromEmail' => $fromEmail,
|
224 |
+
'fromName' => 'Xecurify',
|
225 |
+
'toEmail' => '2fasupport@xecurify.com',
|
226 |
+
'toName' => '2fasupport@xecurify.com',
|
227 |
+
'subject' => $subject,
|
228 |
+
'content' => $content
|
229 |
+
),
|
230 |
+
);
|
231 |
+
$field_string = json_encode($fields);
|
232 |
+
$authHeader = $this->createAuthHeader($customerKey,$apiKey);
|
233 |
+
$response = self::callAPI($url, $field_string,$authHeader);
|
234 |
+
return $response;
|
235 |
+
|
236 |
+
}
|
237 |
+
|
238 |
+
|
239 |
+
private static function createAuthHeader($customerKey, $apiKey) {
|
240 |
+
$currentTimestampInMillis = round(microtime(true) * 1000);
|
241 |
+
$currentTimestampInMillis = number_format($currentTimestampInMillis, 0, '', '');
|
242 |
+
|
243 |
+
$stringToHash = $customerKey . $currentTimestampInMillis . $apiKey;
|
244 |
+
$authHeader = hash("sha512", $stringToHash);
|
245 |
+
|
246 |
+
$header = array (
|
247 |
+
"Content-Type: application/json",
|
248 |
+
"Customer-Key: $customerKey",
|
249 |
+
"Timestamp: $currentTimestampInMillis",
|
250 |
+
"Authorization: $authHeader"
|
251 |
+
);
|
252 |
+
return $header;
|
253 |
+
}
|
254 |
+
|
255 |
+
|
256 |
+
private static function callAPI($url, $json_string, $headers = array("Content-Type: application/json")) {
|
257 |
+
//For testing (0, false)
|
258 |
+
//For Production (2, true)
|
259 |
+
|
260 |
+
$sslhost=2;
|
261 |
+
$sslpeer=false;
|
262 |
+
|
263 |
+
$ch = curl_init($url);
|
264 |
+
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
|
265 |
+
curl_setopt($ch, CURLOPT_ENCODING, "");
|
266 |
+
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
267 |
+
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
|
268 |
+
curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, $sslhost );
|
269 |
+
|
270 |
+
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, $sslpeer );
|
271 |
+
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
|
272 |
+
if(!is_null($headers)) curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
273 |
+
curl_setopt($ch, CURLOPT_POST, true);
|
274 |
+
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_string);
|
275 |
+
$content = curl_exec($ch);
|
276 |
+
|
277 |
+
if (curl_errno($ch)) {
|
278 |
+
echo 'Request Error:' . curl_error($ch);
|
279 |
+
exit();
|
280 |
+
}
|
281 |
+
|
282 |
+
curl_close($ch);
|
283 |
+
return $content;
|
284 |
+
}
|
285 |
+
}
|
helper/dashboard_security_notification.php
CHANGED
@@ -76,27 +76,33 @@ class miniorange_security_notification{
|
|
76 |
</style>
|
77 |
</head>
|
78 |
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
</div>";
|
83 |
-
|
84 |
-
$EmailTransactions = get_site_option('cmVtYWluaW5nT1RQ')? get_site_option('cmVtYWluaW5nT1RQ') : 0;
|
85 |
-
$SMSTransactions = get_site_option('cmVtYWluaW5nT1RQVHJhbnNhY3Rpb25z')?get_site_option('cmVtYWluaW5nT1RQVHJhbnNhY3Rpb25z'):0;
|
86 |
-
// $color_tras_sms = $SMSTransactions <= 2 ? 'red' : '#17ede9';
|
87 |
-
// $color_tras_email = $EmailTransactions <= 2 ? 'red' : '#17ede9';
|
88 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
89 |
$color_tras_sms = 'white';
|
90 |
$color_tras_email = 'white';
|
91 |
|
92 |
-
echo '<table
|
93 |
-
<tr>
|
94 |
-
<td style="
|
95 |
-
<td style="
|
|
|
96 |
</tr>
|
97 |
<tr>
|
98 |
-
<td style="
|
99 |
-
<td style="
|
|
|
|
|
100 |
</tr>
|
101 |
|
102 |
</table><br>';
|
@@ -108,7 +114,7 @@ class miniorange_security_notification{
|
|
108 |
<br><br>
|
109 |
";
|
110 |
|
111 |
-
if(
|
112 |
{
|
113 |
|
114 |
echo "
|
@@ -261,4 +267,4 @@ class miniorange_security_notification{
|
|
261 |
|
262 |
}
|
263 |
|
264 |
-
?>
|
76 |
</style>
|
77 |
</head>
|
78 |
|
79 |
+
<div style='width:100%;background-color:#555f5f;padding-top:10px;''>
|
80 |
+
<div style='font-size:25px;color:white;text-align:center'>
|
81 |
+
<strong style='font-weight:300;''>Remaining Transactions <span style='color:orange;'>[OTPs]</strong>
|
|
|
|
|
|
|
|
|
|
|
|
|
82 |
|
83 |
+
</div>
|
84 |
+
<hr>
|
85 |
+
|
86 |
+
";
|
87 |
+
|
88 |
+
$EmailTransactions = MoWpnsUtility::get_mo2f_db_option('cmVtYWluaW5nT1RQ', 'site_option');
|
89 |
+
$EmailTransactions = $EmailTransactions? $EmailTransactions : 0;
|
90 |
+
$SMSTransactions = get_site_option('cmVtYWluaW5nT1RQVHJhbnNhY3Rpb25z')?get_site_option('cmVtYWluaW5nT1RQVHJhbnNhY3Rpb25z'):0;
|
91 |
+
|
92 |
$color_tras_sms = 'white';
|
93 |
$color_tras_email = 'white';
|
94 |
|
95 |
+
echo '<table style="solid #CCCCCC; border-collapse: collapse; padding:0px 0px 0px 10px; margin:2px; width:99%">
|
96 |
+
<tr>
|
97 |
+
<td style="font-size:18px;color:#ffffff;padding: 10px;"><strong style="font-weight:300;">Remaining SMS transactions </strong></td>
|
98 |
+
<td style="text-align:center;font-size:36px;color:#ffffff;font-weight:400" ><strong>'.$SMSTransactions.'</strong></td>
|
99 |
+
|
100 |
</tr>
|
101 |
<tr>
|
102 |
+
<td style="font-size:18px;color:#ffffff;padding: 10px;"><strong style="font-weight:300;">Remaining Email transactions </strong></td>
|
103 |
+
<td style="text-align:center;font-size:36px;color:#ffffff;font-weight:400" ><strong>'.$EmailTransactions.'</strong></td>
|
104 |
+
|
105 |
+
|
106 |
</tr>
|
107 |
|
108 |
</table><br>';
|
114 |
<br><br>
|
115 |
";
|
116 |
|
117 |
+
if(MoWpnsUtility::get_mo2f_db_option('mo_wpns_2fa_with_network_security', 'get_option'))
|
118 |
{
|
119 |
|
120 |
echo "
|
267 |
|
268 |
}
|
269 |
|
270 |
+
?>
|
helper/mo_twofa_sessions.php
ADDED
@@ -0,0 +1,53 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if(! defined( 'ABSPATH' )) exit;
|
4 |
+
|
5 |
+
class TwoFAMoSessions
|
6 |
+
{
|
7 |
+
static function addSessionVar($key, $val)
|
8 |
+
{
|
9 |
+
switch (MO2F_SESSION_TYPE) {
|
10 |
+
case 'TRANSIENT':
|
11 |
+
if (!isset($_COOKIE["transient_key"])) {
|
12 |
+
if (!wp_cache_get("transient_key")) {
|
13 |
+
$transient_key = MoWpnsUtility::rand();
|
14 |
+
if (ob_get_contents()) ob_clean();
|
15 |
+
setcookie('transient_key', $transient_key, time() + 12 * HOUR_IN_SECONDS, COOKIEPATH, COOKIE_DOMAIN);
|
16 |
+
wp_cache_add('transient_key', $transient_key);
|
17 |
+
} else {
|
18 |
+
$transient_key = wp_cache_get("transient_key");
|
19 |
+
}
|
20 |
+
} else {
|
21 |
+
$transient_key = $_COOKIE["transient_key"];
|
22 |
+
}
|
23 |
+
set_site_transient($transient_key . $key, $val, 12 * HOUR_IN_SECONDS);
|
24 |
+
break;
|
25 |
+
}
|
26 |
+
}
|
27 |
+
|
28 |
+
static function getSessionVar($key)
|
29 |
+
{
|
30 |
+
switch(MO2F_SESSION_TYPE)
|
31 |
+
{
|
32 |
+
case 'TRANSIENT':
|
33 |
+
$transient_key = isset($_COOKIE["transient_key"])
|
34 |
+
? $_COOKIE["transient_key"] : wp_cache_get("transient_key");
|
35 |
+
return get_site_transient( $transient_key.$key );
|
36 |
+
}
|
37 |
+
}
|
38 |
+
|
39 |
+
static function unsetSession($key)
|
40 |
+
{
|
41 |
+
switch(MO2F_SESSION_TYPE)
|
42 |
+
{
|
43 |
+
case 'TRANSIENT':
|
44 |
+
$transient_key = isset($_COOKIE["transient_key"])
|
45 |
+
? $_COOKIE["transient_key"] : wp_cache_get("transient_key");
|
46 |
+
if(!MoWpnsUtility::check_empty_or_null($transient_key)) {
|
47 |
+
delete_site_transient($transient_key . $key);
|
48 |
+
}
|
49 |
+
break;
|
50 |
+
}
|
51 |
+
}
|
52 |
+
|
53 |
+
}
|
helper/pluginUtility.php
CHANGED
@@ -70,6 +70,11 @@ class MoWpnsHandler
|
|
70 |
|
71 |
return $ip_count;
|
72 |
}
|
|
|
|
|
|
|
|
|
|
|
73 |
function get_blocked_ips()
|
74 |
{
|
75 |
global $wpnsDbQueries;
|
@@ -135,7 +140,7 @@ class MoWpnsHandler
|
|
135 |
|
136 |
//send notification
|
137 |
global $moWpnsUtility;
|
138 |
-
if(
|
139 |
$moWpnsUtility->sendIpBlockedNotification($ipAddress,MoWpnsConstants::LOGIN_ATTEMPTS_EXCEEDED);
|
140 |
|
141 |
}
|
70 |
|
71 |
return $ip_count;
|
72 |
}
|
73 |
+
function get_blocked_attacks()
|
74 |
+
{
|
75 |
+
global $wpnsDbQueries;
|
76 |
+
return $wpnsDbQueries->get_blocked_attack_list('wpns_attack_logs');
|
77 |
+
}
|
78 |
function get_blocked_ips()
|
79 |
{
|
80 |
global $wpnsDbQueries;
|
140 |
|
141 |
//send notification
|
142 |
global $moWpnsUtility;
|
143 |
+
if(MoWpnsUtility::get_mo2f_db_option('mo_wpns_enable_ip_blocked_email_to_admin', 'get_option'))
|
144 |
$moWpnsUtility->sendIpBlockedNotification($ipAddress,MoWpnsConstants::LOGIN_ATTEMPTS_EXCEEDED);
|
145 |
|
146 |
}
|
helper/plugins.php
CHANGED
@@ -1,103 +1,103 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class FeaturePluginInterface
|
4 |
-
{
|
5 |
-
function __construct()
|
6 |
-
{
|
7 |
-
if ( ! function_exists( 'get_plugins' ) )
|
8 |
-
require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
9 |
-
}
|
10 |
-
}
|
11 |
-
|
12 |
-
|
13 |
-
class TwoFAPlugin extends FeaturePluginInterface
|
14 |
-
{
|
15 |
-
|
16 |
-
function getstatus()
|
17 |
-
{
|
18 |
-
$all_plugins = get_plugins();
|
19 |
-
$status = 'NOT_INSTALLED';
|
20 |
-
if(isset($all_plugins[MoWpnsConstants::TWO_FACTOR_SETTINGS]))
|
21 |
-
$status = is_plugin_active(MoWpnsConstants::TWO_FACTOR_SETTINGS) ? 'ACTIVE' : 'INSTALLED';
|
22 |
-
return $status;
|
23 |
-
}
|
24 |
-
|
25 |
-
|
26 |
-
function updatePluginConfiguration()
|
27 |
-
{
|
28 |
-
if(!get_option('mo_wpns_enable_2fa'))
|
29 |
-
return;
|
30 |
-
|
31 |
-
if(!get_option( 'mo2f_customerKey') || !get_option( 'mo2f_api_key') || !get_option( 'mo2f_customer_token') || !get_option( 'mo2f_app_secret'))
|
32 |
-
{
|
33 |
-
global $mo2f_dirName;
|
34 |
-
$current_user = wp_get_current_user();
|
35 |
-
$mo2fa = new Two_Factor_Setup();
|
36 |
-
update_option( 'mo2f_email' ,get_option( 'mo2f_email'));
|
37 |
-
update_option( 'mo2f_host_name' ,MoWpnsConstants::HOST_NAME);
|
38 |
-
update_option( 'mo2f_phone' ,get_option( 'mo_wpns_admin_phone'));
|
39 |
-
update_option( 'mo2f_customerKey' ,get_option( 'mo2f_customerKey'));
|
40 |
-
update_option( 'mo2f_api_key' ,get_option( 'mo2f_api_key'));
|
41 |
-
update_option( 'mo2f_customer_token' ,get_option( 'mo2f_customer_token'));
|
42 |
-
update_option( 'mo2f_app_secret' ,get_option( 'mo2f_app_secret'));
|
43 |
-
update_option( 'mo2f_miniorange_admin' ,$current_user->ID);
|
44 |
-
update_option( 'mo2f_new_customer' ,true);
|
45 |
-
|
46 |
-
update_option( 'mo_2factor_admin_registration_status','MO_2_FACTOR_CUSTOMER_REGISTERED_SUCCESS');
|
47 |
-
update_user_meta($current_user->ID,'mo_2factor_user_registration_with_miniorange','SUCCESS');
|
48 |
-
update_user_meta($current_user->ID,'mo_2factor_map_id_with_email',get_option( 'mo2f_email'));
|
49 |
-
update_user_meta($current_user->ID,'mo_2factor_user_registration_status','MO_2_FACTOR_PLUGIN_SETTINGS');
|
50 |
-
$mo2fa->mo2f_update_userinfo(get_user_meta($current_user->ID,'mo_2factor_map_id_with_email',true), 'OUT OF BAND EMAIL',null,'API_2FA',true);
|
51 |
-
update_user_meta($current_user->ID,'mo2f_email_verification_status',true);
|
52 |
-
}
|
53 |
-
}
|
54 |
-
}
|
55 |
-
|
56 |
-
|
57 |
-
class OTPPlugin extends FeaturePluginInterface
|
58 |
-
{
|
59 |
-
function getstatus()
|
60 |
-
{
|
61 |
-
$all_plugins = get_plugins();
|
62 |
-
$status = 'NOT_INSTALLED';
|
63 |
-
if(isset($all_plugins[MoWpnsConstants::OTP_VERIFICATION_SETTINGS]))
|
64 |
-
$status = is_plugin_active(MoWpnsConstants::OTP_VERIFICATION_SETTINGS) ? 'ACTIVE' : 'INSTALLED';
|
65 |
-
return $status;
|
66 |
-
}
|
67 |
-
|
68 |
-
function updatePluginConfiguration()
|
69 |
-
{
|
70 |
-
if(!get_option('mo_wpns_enable_advanced_user_verification'))
|
71 |
-
return;
|
72 |
-
|
73 |
-
if(!get_option( 'mo_customer_validation_admin_email') || !get_option( 'mo_customer_validation_admin_customer_key') || !get_option( 'mo_customer_validation_admin_api_key') || !get_option( 'mo_customer_validation_customer_token'))
|
74 |
-
{
|
75 |
-
update_option( 'mo_customer_validation_wp_default_enable' ,1);
|
76 |
-
update_option( 'mo_customer_validation_admin_email' ,get_option( 'mo2f_email'));
|
77 |
-
update_option( 'mo_customer_validation_admin_phone' ,get_option( 'mo_wpns_admin_phone'));
|
78 |
-
update_option( 'mo_customer_validation_admin_customer_key' ,get_option( 'mo2f_customerKey') );
|
79 |
-
update_option( 'mo_customer_validation_admin_api_key' ,get_option( 'mo2f_api_key') );
|
80 |
-
update_option( 'mo_customer_validation_customer_token' ,get_option( 'mo2f_customer_token') );
|
81 |
-
update_option( 'mo_customer_validation_admin_password' ,'');
|
82 |
-
update_option( 'mo_customer_validation_message' ,'Registration complete!');
|
83 |
-
update_option( 'mo_customer_validation_registration_status' ,'MO_CUSTOMER_VALIDATION_REGISTRATION_COMPLETE');
|
84 |
-
update_option( 'mo_customer_email_transactions_remaining' ,10);
|
85 |
-
update_option( 'mo_customer_phone_transactions_remaining' ,10);
|
86 |
-
update_option( 'mo_otp_plugin_version' ,1.8);
|
87 |
-
}
|
88 |
-
}
|
89 |
-
|
90 |
-
}
|
91 |
-
|
92 |
-
|
93 |
-
class SocialPlugin extends FeaturePluginInterface
|
94 |
-
{
|
95 |
-
function getstatus()
|
96 |
-
{
|
97 |
-
$all_plugins = get_plugins();
|
98 |
-
$status = 'NOT_INSTALLED';
|
99 |
-
if(isset($all_plugins[MoWpnsConstants::SOCIAL_LOGIN_SETTINGS]))
|
100 |
-
$status = is_plugin_active(MoWpnsConstants::SOCIAL_LOGIN_SETTINGS) ? 'ACTIVE' : 'INSTALLED';
|
101 |
-
return $status;
|
102 |
-
}
|
103 |
}
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class FeaturePluginInterface
|
4 |
+
{
|
5 |
+
function __construct()
|
6 |
+
{
|
7 |
+
if ( ! function_exists( 'get_plugins' ) )
|
8 |
+
require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
9 |
+
}
|
10 |
+
}
|
11 |
+
|
12 |
+
|
13 |
+
class TwoFAPlugin extends FeaturePluginInterface
|
14 |
+
{
|
15 |
+
|
16 |
+
function getstatus()
|
17 |
+
{
|
18 |
+
$all_plugins = get_plugins();
|
19 |
+
$status = 'NOT_INSTALLED';
|
20 |
+
if(isset($all_plugins[MoWpnsConstants::TWO_FACTOR_SETTINGS]))
|
21 |
+
$status = is_plugin_active(MoWpnsConstants::TWO_FACTOR_SETTINGS) ? 'ACTIVE' : 'INSTALLED';
|
22 |
+
return $status;
|
23 |
+
}
|
24 |
+
|
25 |
+
|
26 |
+
function updatePluginConfiguration()
|
27 |
+
{
|
28 |
+
if(!get_option('mo_wpns_enable_2fa'))
|
29 |
+
return;
|
30 |
+
|
31 |
+
if(!get_option( 'mo2f_customerKey') || !get_option( 'mo2f_api_key') || !get_option( 'mo2f_customer_token') || !get_option( 'mo2f_app_secret'))
|
32 |
+
{
|
33 |
+
global $mo2f_dirName;
|
34 |
+
$current_user = wp_get_current_user();
|
35 |
+
$mo2fa = new Two_Factor_Setup();
|
36 |
+
update_option( 'mo2f_email' ,get_option( 'mo2f_email'));
|
37 |
+
update_option( 'mo2f_host_name' ,MoWpnsConstants::HOST_NAME);
|
38 |
+
update_option( 'mo2f_phone' ,get_option( 'mo_wpns_admin_phone'));
|
39 |
+
update_option( 'mo2f_customerKey' ,get_option( 'mo2f_customerKey'));
|
40 |
+
update_option( 'mo2f_api_key' ,get_option( 'mo2f_api_key'));
|
41 |
+
update_option( 'mo2f_customer_token' ,get_option( 'mo2f_customer_token'));
|
42 |
+
update_option( 'mo2f_app_secret' ,get_option( 'mo2f_app_secret'));
|
43 |
+
update_option( 'mo2f_miniorange_admin' ,$current_user->ID);
|
44 |
+
update_option( 'mo2f_new_customer' ,true);
|
45 |
+
|
46 |
+
update_option( 'mo_2factor_admin_registration_status','MO_2_FACTOR_CUSTOMER_REGISTERED_SUCCESS');
|
47 |
+
update_user_meta($current_user->ID,'mo_2factor_user_registration_with_miniorange','SUCCESS');
|
48 |
+
update_user_meta($current_user->ID,'mo_2factor_map_id_with_email',get_option( 'mo2f_email'));
|
49 |
+
update_user_meta($current_user->ID,'mo_2factor_user_registration_status','MO_2_FACTOR_PLUGIN_SETTINGS');
|
50 |
+
$mo2fa->mo2f_update_userinfo(get_user_meta($current_user->ID,'mo_2factor_map_id_with_email',true), 'OUT OF BAND EMAIL',null,'API_2FA',true);
|
51 |
+
update_user_meta($current_user->ID,'mo2f_email_verification_status',true);
|
52 |
+
}
|
53 |
+
}
|
54 |
+
}
|
55 |
+
|
56 |
+
|
57 |
+
class OTPPlugin extends FeaturePluginInterface
|
58 |
+
{
|
59 |
+
function getstatus()
|
60 |
+
{
|
61 |
+
$all_plugins = get_plugins();
|
62 |
+
$status = 'NOT_INSTALLED';
|
63 |
+
if(isset($all_plugins[MoWpnsConstants::OTP_VERIFICATION_SETTINGS]))
|
64 |
+
$status = is_plugin_active(MoWpnsConstants::OTP_VERIFICATION_SETTINGS) ? 'ACTIVE' : 'INSTALLED';
|
65 |
+
return $status;
|
66 |
+
}
|
67 |
+
|
68 |
+
function updatePluginConfiguration()
|
69 |
+
{
|
70 |
+
if(!get_option('mo_wpns_enable_advanced_user_verification'))
|
71 |
+
return;
|
72 |
+
|
73 |
+
if(!get_option( 'mo_customer_validation_admin_email') || !get_option( 'mo_customer_validation_admin_customer_key') || !get_option( 'mo_customer_validation_admin_api_key') || !get_option( 'mo_customer_validation_customer_token'))
|
74 |
+
{
|
75 |
+
update_option( 'mo_customer_validation_wp_default_enable' ,1);
|
76 |
+
update_option( 'mo_customer_validation_admin_email' ,get_option( 'mo2f_email'));
|
77 |
+
update_option( 'mo_customer_validation_admin_phone' ,get_option( 'mo_wpns_admin_phone'));
|
78 |
+
update_option( 'mo_customer_validation_admin_customer_key' ,get_option( 'mo2f_customerKey') );
|
79 |
+
update_option( 'mo_customer_validation_admin_api_key' ,get_option( 'mo2f_api_key') );
|
80 |
+
update_option( 'mo_customer_validation_customer_token' ,get_option( 'mo2f_customer_token') );
|
81 |
+
update_option( 'mo_customer_validation_admin_password' ,'');
|
82 |
+
update_option( 'mo_customer_validation_message' ,'Registration complete!');
|
83 |
+
update_option( 'mo_customer_validation_registration_status' ,'MO_CUSTOMER_VALIDATION_REGISTRATION_COMPLETE');
|
84 |
+
update_option( 'mo_customer_email_transactions_remaining' ,10);
|
85 |
+
update_option( 'mo_customer_phone_transactions_remaining' ,10);
|
86 |
+
update_option( 'mo_otp_plugin_version' ,1.8);
|
87 |
+
}
|
88 |
+
}
|
89 |
+
|
90 |
+
}
|
91 |
+
|
92 |
+
|
93 |
+
class SocialPlugin extends FeaturePluginInterface
|
94 |
+
{
|
95 |
+
function getstatus()
|
96 |
+
{
|
97 |
+
$all_plugins = get_plugins();
|
98 |
+
$status = 'NOT_INSTALLED';
|
99 |
+
if(isset($all_plugins[MoWpnsConstants::SOCIAL_LOGIN_SETTINGS]))
|
100 |
+
$status = is_plugin_active(MoWpnsConstants::SOCIAL_LOGIN_SETTINGS) ? 'ACTIVE' : 'INSTALLED';
|
101 |
+
return $status;
|
102 |
+
}
|
103 |
}
|
helper/utility.php
CHANGED
@@ -38,6 +38,17 @@ class MoWpnsUtility
|
|
38 |
return true;
|
39 |
return false;
|
40 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
41 |
|
42 |
public static function is_curl_installed()
|
43 |
{
|
@@ -91,7 +102,7 @@ class MoWpnsUtility
|
|
91 |
|
92 |
public static function check_if_strong_password_enabled_for_user_role($userroles)
|
93 |
{
|
94 |
-
$enforce_strong_pass =
|
95 |
|
96 |
switch($enforce_strong_pass)
|
97 |
{
|
@@ -148,11 +159,8 @@ class MoWpnsUtility
|
|
148 |
else
|
149 |
$content = $this->getMessageContent($reason,$ipAddress);
|
150 |
|
151 |
-
// $mocURL = new MocURL();
|
152 |
-
|
153 |
if(isset($content))
|
154 |
return $this->wp_mail_send_notification($toEmail,$subject,$content);
|
155 |
-
// return $mocURL->send_notification($toEmail,$subject,$content,MoWpnsConstants::SUPPORT_EMAIL,'miniOrange','Admin');
|
156 |
}
|
157 |
|
158 |
function wp_mail_send_notification($toEmail,$subject,$content){
|
@@ -194,9 +202,6 @@ class MoWpnsUtility
|
|
194 |
else
|
195 |
$content = $this->getMessageContent($reason,$ipAddress,$username,$fromEmail);
|
196 |
|
197 |
-
// $mocURL = new MocURL();
|
198 |
-
// return $mocURL->send_notification($toEmail,$subject,$content,$fromEmail,get_bloginfo(),$username);
|
199 |
-
|
200 |
$mo_wpns_config->audit_email_notification_sent_to_user($username,$ipAddress,$reason);
|
201 |
$status = $this->wp_mail_send_notification($toEmail,$subject,$content,$fromEmail);
|
202 |
return $status;
|
@@ -284,7 +289,7 @@ class MoWpnsUtility
|
|
284 |
$status.="F1";
|
285 |
if(get_site_option('mo2f_visit_login_and_spam'))
|
286 |
$status.="LS1";
|
287 |
-
if(
|
288 |
$status.="BF1";
|
289 |
if(get_site_option('mo2f_visit_malware'))
|
290 |
$status.="M1";
|
@@ -314,5 +319,14 @@ class MoWpnsUtility
|
|
314 |
return $installed;
|
315 |
|
316 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
317 |
|
318 |
}
|
38 |
return true;
|
39 |
return false;
|
40 |
}
|
41 |
+
|
42 |
+
public static function rand()
|
43 |
+
{
|
44 |
+
$length = wp_rand(0, 15);
|
45 |
+
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
46 |
+
$randomString = '';
|
47 |
+
for ($i = 0; $i < $length; $i++) {
|
48 |
+
$randomString .= $characters[wp_rand(0, strlen($characters) - 1)];
|
49 |
+
}
|
50 |
+
return $randomString;
|
51 |
+
}
|
52 |
|
53 |
public static function is_curl_installed()
|
54 |
{
|
102 |
|
103 |
public static function check_if_strong_password_enabled_for_user_role($userroles)
|
104 |
{
|
105 |
+
$enforce_strong_pass = MoWpnsUtility::get_mo2f_db_option('mo2f_enforce_strong_passswords_for_accounts', 'get_option');
|
106 |
|
107 |
switch($enforce_strong_pass)
|
108 |
{
|
159 |
else
|
160 |
$content = $this->getMessageContent($reason,$ipAddress);
|
161 |
|
|
|
|
|
162 |
if(isset($content))
|
163 |
return $this->wp_mail_send_notification($toEmail,$subject,$content);
|
|
|
164 |
}
|
165 |
|
166 |
function wp_mail_send_notification($toEmail,$subject,$content){
|
202 |
else
|
203 |
$content = $this->getMessageContent($reason,$ipAddress,$username,$fromEmail);
|
204 |
|
|
|
|
|
|
|
205 |
$mo_wpns_config->audit_email_notification_sent_to_user($username,$ipAddress,$reason);
|
206 |
$status = $this->wp_mail_send_notification($toEmail,$subject,$content,$fromEmail);
|
207 |
return $status;
|
289 |
$status.="F1";
|
290 |
if(get_site_option('mo2f_visit_login_and_spam'))
|
291 |
$status.="LS1";
|
292 |
+
if(MoWpnsUtility::get_mo2f_db_option('mo2f_enable_brute_force', 'get_option'))
|
293 |
$status.="BF1";
|
294 |
if(get_site_option('mo2f_visit_malware'))
|
295 |
$status.="M1";
|
319 |
return $installed;
|
320 |
|
321 |
}
|
322 |
+
|
323 |
+
public static function get_mo2f_db_option($value, $type){
|
324 |
+
if($type == 'site_option'){
|
325 |
+
$db_value = get_site_option($value, $GLOBALS[$value]);
|
326 |
+
}else{
|
327 |
+
$db_value = get_option($value, $GLOBALS[$value]);
|
328 |
+
}
|
329 |
+
return $db_value;
|
330 |
+
}
|
331 |
|
332 |
}
|
includes/css/bootstrap.min.css
CHANGED
@@ -1,5735 +1,5735 @@
|
|
1 |
-
.mo2f_carousel {
|
2 |
-
|
3 |
-
|
4 |
-
position: relative;
|
5 |
-
|
6 |
-
|
7 |
-
padding-bottom: 18px !important;
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
}
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
.mo2f_carousel-inner {
|
20 |
-
|
21 |
-
|
22 |
-
position: relative;
|
23 |
-
|
24 |
-
|
25 |
-
width: 100%;
|
26 |
-
|
27 |
-
|
28 |
-
overflow: hidden;
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
}
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
.mo2f_carousel-inner > .item {
|
41 |
-
|
42 |
-
|
43 |
-
position: relative;
|
44 |
-
|
45 |
-
|
46 |
-
display: none;
|
47 |
-
|
48 |
-
|
49 |
-
-webkit-transition: .6s ease-in-out left;
|
50 |
-
|
51 |
-
|
52 |
-
-o-transition: .6s ease-in-out left;
|
53 |
-
|
54 |
-
|
55 |
-
transition: .6s ease-in-out left;
|
56 |
-
|
57 |
-
|
58 |
-
height: 300px !important;
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
}
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
.mo2f_carousel-inner > .item > img, .mo2f_carousel-inner > .item > a > img {
|
71 |
-
|
72 |
-
|
73 |
-
line-height: 1;
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
max-height: 300px !important;
|
80 |
-
|
81 |
-
|
82 |
-
max-width: 600px !important;
|
83 |
-
|
84 |
-
|
85 |
-
}
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
@media all and (transform-3d) , ( -webkit-transform-3d ) {
|
92 |
-
|
93 |
-
|
94 |
-
.mo2f_carousel-inner > .item {
|
95 |
-
|
96 |
-
|
97 |
-
-webkit-transition: -webkit-transform .6s ease-in-out;
|
98 |
-
|
99 |
-
|
100 |
-
-o-transition: -o-transform .6s ease-in-out;
|
101 |
-
|
102 |
-
|
103 |
-
transition: transform .6s ease-in-out;
|
104 |
-
|
105 |
-
|
106 |
-
-webkit-backface-visibility: hidden;
|
107 |
-
|
108 |
-
|
109 |
-
backface-visibility: hidden;
|
110 |
-
|
111 |
-
|
112 |
-
-webkit-perspective: 1000;
|
113 |
-
|
114 |
-
|
115 |
-
perspective: 1000
|
116 |
-
|
117 |
-
|
118 |
-
}
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
.mo2f_carousel-inner > .item.next, .mo2f_carousel-inner > .item.active.right {
|
125 |
-
|
126 |
-
|
127 |
-
left: 0;
|
128 |
-
|
129 |
-
|
130 |
-
-webkit-transform: translate3d(100%, 0, 0);
|
131 |
-
|
132 |
-
|
133 |
-
transform: translate3d(100%, 0, 0)
|
134 |
-
|
135 |
-
|
136 |
-
}
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
.mo2f_carousel-inner > .item.prev, .mo2f_carousel-inner > .item.active.left {
|
143 |
-
|
144 |
-
|
145 |
-
left: 0;
|
146 |
-
|
147 |
-
|
148 |
-
-webkit-transform: translate3d(-100%, 0, 0);
|
149 |
-
|
150 |
-
|
151 |
-
transform: translate3d(-100%, 0, 0)
|
152 |
-
|
153 |
-
|
154 |
-
}
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
.mo2f_carousel-inner > .item.next.left, .mo2f_carousel-inner > .item.prev.right, .mo2f_carousel-inner > .item.active {
|
161 |
-
|
162 |
-
|
163 |
-
left: 0;
|
164 |
-
|
165 |
-
|
166 |
-
-webkit-transform: translate3d(0, 0, 0);
|
167 |
-
|
168 |
-
|
169 |
-
transform: translate3d(0, 0, 0)
|
170 |
-
|
171 |
-
|
172 |
-
}
|
173 |
-
|
174 |
-
|
175 |
-
}
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
.mo2f_carousel-inner > .active, .mo2f_carousel-inner > .next, .mo2f_carousel-inner > .prev {
|
182 |
-
|
183 |
-
|
184 |
-
display: block
|
185 |
-
|
186 |
-
|
187 |
-
}
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
.mo2f_carousel-inner > .active {
|
194 |
-
|
195 |
-
|
196 |
-
left: 0
|
197 |
-
|
198 |
-
|
199 |
-
}
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
.mo2f_carousel-inner > .next, .mo2f_carousel-inner > .prev {
|
206 |
-
|
207 |
-
|
208 |
-
position: absolute;
|
209 |
-
|
210 |
-
|
211 |
-
top: 0;
|
212 |
-
|
213 |
-
|
214 |
-
width: 100%
|
215 |
-
|
216 |
-
|
217 |
-
}
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
.mo2f_carousel-inner > .next {
|
224 |
-
|
225 |
-
|
226 |
-
left: 100%
|
227 |
-
|
228 |
-
|
229 |
-
}
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
.mo2f_carousel-inner > .prev {
|
236 |
-
|
237 |
-
|
238 |
-
left: -100%
|
239 |
-
|
240 |
-
|
241 |
-
}
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
.mo2f_carousel-inner > .next.left, .mo2f_carousel-inner > .prev.right {
|
248 |
-
|
249 |
-
|
250 |
-
left: 0
|
251 |
-
|
252 |
-
|
253 |
-
}
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
.mo2f_carousel-inner > .active.left {
|
260 |
-
|
261 |
-
|
262 |
-
left: -100%
|
263 |
-
|
264 |
-
|
265 |
-
}
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
.mo2f_carousel-inner > .active.right {
|
272 |
-
|
273 |
-
|
274 |
-
left: 100%
|
275 |
-
|
276 |
-
|
277 |
-
}
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
.mo2f_carousel-control {
|
284 |
-
|
285 |
-
|
286 |
-
position: absolute;
|
287 |
-
|
288 |
-
|
289 |
-
top: 0;
|
290 |
-
|
291 |
-
|
292 |
-
bottom: 0;
|
293 |
-
|
294 |
-
|
295 |
-
left: 0;
|
296 |
-
|
297 |
-
|
298 |
-
width: 15%;
|
299 |
-
|
300 |
-
|
301 |
-
font-size: 20px;
|
302 |
-
|
303 |
-
|
304 |
-
color: #fff;
|
305 |
-
|
306 |
-
|
307 |
-
text-align: center;
|
308 |
-
|
309 |
-
|
310 |
-
text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
|
311 |
-
|
312 |
-
|
313 |
-
filter: alpha(opacity=50);
|
314 |
-
|
315 |
-
|
316 |
-
opacity: .5
|
317 |
-
|
318 |
-
|
319 |
-
}
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
.mo2f_carousel-control.left {
|
326 |
-
|
327 |
-
|
328 |
-
background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0,
|
329 |
-
|
330 |
-
|
331 |
-
rgba(0, 0, 0, .0001) 100%);
|
332 |
-
|
333 |
-
|
334 |
-
background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0,
|
335 |
-
|
336 |
-
|
337 |
-
rgba(0, 0, 0, .0001) 100%);
|
338 |
-
|
339 |
-
|
340 |
-
background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)),
|
341 |
-
|
342 |
-
|
343 |
-
to(rgba(0, 0, 0, .0001)));
|
344 |
-
|
345 |
-
|
346 |
-
background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0,
|
347 |
-
|
348 |
-
|
349 |
-
rgba(0, 0, 0, .0001) 100%);
|
350 |
-
|
351 |
-
|
352 |
-
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000',
|
353 |
-
|
354 |
-
|
355 |
-
endColorstr='#00000000', GradientType=1);
|
356 |
-
|
357 |
-
|
358 |
-
background-repeat: repeat-x
|
359 |
-
|
360 |
-
|
361 |
-
}
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
.mo2f_carousel-control.right {
|
368 |
-
|
369 |
-
|
370 |
-
right: 0;
|
371 |
-
|
372 |
-
|
373 |
-
left: auto;
|
374 |
-
|
375 |
-
|
376 |
-
background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0,
|
377 |
-
|
378 |
-
|
379 |
-
rgba(0, 0, 0, .5) 100%);
|
380 |
-
|
381 |
-
|
382 |
-
background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0,
|
383 |
-
|
384 |
-
|
385 |
-
rgba(0, 0, 0, .5) 100%);
|
386 |
-
|
387 |
-
|
388 |
-
background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)),
|
389 |
-
|
390 |
-
|
391 |
-
to(rgba(0, 0, 0, .5)));
|
392 |
-
|
393 |
-
|
394 |
-
background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0,
|
395 |
-
|
396 |
-
|
397 |
-
rgba(0, 0, 0, .5) 100%);
|
398 |
-
|
399 |
-
|
400 |
-
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',
|
401 |
-
|
402 |
-
|
403 |
-
endColorstr='#80000000', GradientType=1);
|
404 |
-
|
405 |
-
|
406 |
-
background-repeat: repeat-x
|
407 |
-
|
408 |
-
|
409 |
-
}
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
.mo2f_carousel-control:hover, .mo2f_carousel-control:focus {
|
416 |
-
|
417 |
-
|
418 |
-
color: #fff;
|
419 |
-
|
420 |
-
|
421 |
-
text-decoration: none;
|
422 |
-
|
423 |
-
|
424 |
-
filter: alpha(opacity=90);
|
425 |
-
|
426 |
-
|
427 |
-
outline: 0;
|
428 |
-
|
429 |
-
|
430 |
-
opacity: .9
|
431 |
-
|
432 |
-
|
433 |
-
}
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
.mo2f_carousel-control .icon-prev, .mo2f_carousel-control .icon-next, .mo2f_carousel-control .glyphicon-chevron-left, .mo2f_carousel-control .glyphicon-chevron-right {
|
440 |
-
|
441 |
-
|
442 |
-
position: absolute;
|
443 |
-
|
444 |
-
|
445 |
-
top: 50%;
|
446 |
-
|
447 |
-
|
448 |
-
z-index: 5;
|
449 |
-
|
450 |
-
|
451 |
-
display: inline-block
|
452 |
-
|
453 |
-
|
454 |
-
}
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
|
460 |
-
.mo2f_carousel-control .icon-prev, .mo2f_carousel-control .glyphicon-chevron-left {
|
461 |
-
|
462 |
-
|
463 |
-
left: 50%;
|
464 |
-
|
465 |
-
|
466 |
-
margin-left: -10px
|
467 |
-
|
468 |
-
|
469 |
-
}
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
.mo2f_carousel-control .icon-next, .mo2f_carousel-control .glyphicon-chevron-right {
|
476 |
-
|
477 |
-
|
478 |
-
right: 50%;
|
479 |
-
|
480 |
-
|
481 |
-
margin-right: -10px
|
482 |
-
|
483 |
-
|
484 |
-
}
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
489 |
-
|
490 |
-
.mo2f_carousel-control .icon-prev, .mo2f_carousel-control .icon-next {
|
491 |
-
|
492 |
-
|
493 |
-
width: 20px;
|
494 |
-
|
495 |
-
|
496 |
-
height: 20px;
|
497 |
-
|
498 |
-
|
499 |
-
margin-top: -10px;
|
500 |
-
|
501 |
-
|
502 |
-
font-family: serif
|
503 |
-
|
504 |
-
|
505 |
-
}
|
506 |
-
|
507 |
-
|
508 |
-
|
509 |
-
|
510 |
-
|
511 |
-
.mo2f_carousel-control .icon-prev:before {
|
512 |
-
|
513 |
-
|
514 |
-
content: '\2039'
|
515 |
-
|
516 |
-
|
517 |
-
}
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
.mo2f_carousel-control .icon-next:before {
|
524 |
-
|
525 |
-
|
526 |
-
content: '\203a'
|
527 |
-
|
528 |
-
|
529 |
-
}
|
530 |
-
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
|
535 |
-
.mo2f_carousel-indicators {
|
536 |
-
|
537 |
-
|
538 |
-
position: absolute;
|
539 |
-
|
540 |
-
|
541 |
-
bottom: -25px;
|
542 |
-
|
543 |
-
|
544 |
-
left: 50%;
|
545 |
-
|
546 |
-
|
547 |
-
z-index: 15;
|
548 |
-
|
549 |
-
|
550 |
-
width: 60%;
|
551 |
-
|
552 |
-
|
553 |
-
padding-left: 0;
|
554 |
-
|
555 |
-
|
556 |
-
margin-left: -30%;
|
557 |
-
|
558 |
-
|
559 |
-
text-align: center;
|
560 |
-
|
561 |
-
|
562 |
-
list-style: none
|
563 |
-
|
564 |
-
|
565 |
-
}
|
566 |
-
|
567 |
-
|
568 |
-
|
569 |
-
|
570 |
-
|
571 |
-
.mo2f_carousel-indicators li {
|
572 |
-
|
573 |
-
|
574 |
-
display: inline-block;
|
575 |
-
|
576 |
-
|
577 |
-
width: 10px;
|
578 |
-
|
579 |
-
|
580 |
-
height: 10px;
|
581 |
-
|
582 |
-
|
583 |
-
margin: 1px;
|
584 |
-
|
585 |
-
|
586 |
-
text-indent: -999px;
|
587 |
-
|
588 |
-
|
589 |
-
cursor: pointer;
|
590 |
-
|
591 |
-
|
592 |
-
background-color: #0 \9;
|
593 |
-
|
594 |
-
|
595 |
-
background-color: rgba(0, 0, 0, 0);
|
596 |
-
|
597 |
-
|
598 |
-
border: 1px solid #0073aa;
|
599 |
-
|
600 |
-
|
601 |
-
border-radius: 10px
|
602 |
-
|
603 |
-
|
604 |
-
}
|
605 |
-
|
606 |
-
|
607 |
-
|
608 |
-
|
609 |
-
|
610 |
-
.mo2f_carousel-indicators .active {
|
611 |
-
|
612 |
-
|
613 |
-
width: 12px;
|
614 |
-
|
615 |
-
|
616 |
-
height: 12px;
|
617 |
-
|
618 |
-
|
619 |
-
margin: 0;
|
620 |
-
|
621 |
-
|
622 |
-
background-color: #0073aa;
|
623 |
-
|
624 |
-
|
625 |
-
}
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
|
630 |
-
|
631 |
-
.mo2f_carousel-caption {
|
632 |
-
|
633 |
-
|
634 |
-
position: absolute;
|
635 |
-
|
636 |
-
|
637 |
-
right: 15%;
|
638 |
-
|
639 |
-
|
640 |
-
bottom: 20px;
|
641 |
-
|
642 |
-
|
643 |
-
left: 15%;
|
644 |
-
|
645 |
-
|
646 |
-
z-index: 10;
|
647 |
-
|
648 |
-
|
649 |
-
padding-top: 20px;
|
650 |
-
|
651 |
-
|
652 |
-
padding-bottom: 20px;
|
653 |
-
|
654 |
-
|
655 |
-
color: #fff;
|
656 |
-
|
657 |
-
|
658 |
-
text-align: center;
|
659 |
-
|
660 |
-
|
661 |
-
text-shadow: 0 1px 2px rgba(0, 0, 0, .6)
|
662 |
-
|
663 |
-
|
664 |
-
}
|
665 |
-
|
666 |
-
|
667 |
-
|
668 |
-
|
669 |
-
|
670 |
-
.mo2f_carousel-caption .btn {
|
671 |
-
|
672 |
-
|
673 |
-
text-shadow: none
|
674 |
-
|
675 |
-
|
676 |
-
}
|
677 |
-
|
678 |
-
|
679 |
-
|
680 |
-
|
681 |
-
|
682 |
-
@media screen and (min-width: 768px) {
|
683 |
-
|
684 |
-
|
685 |
-
.mo2f_carousel-control .glyphicon-chevron-left, .mo2f_carousel-control .glyphicon-chevron-right, .mo2f_carousel-control .icon-prev, .mo2f_carousel-control .icon-next {
|
686 |
-
|
687 |
-
|
688 |
-
width: 30px;
|
689 |
-
|
690 |
-
|
691 |
-
height: 30px;
|
692 |
-
|
693 |
-
|
694 |
-
margin-top: -15px;
|
695 |
-
|
696 |
-
|
697 |
-
font-size: 30px
|
698 |
-
|
699 |
-
|
700 |
-
}
|
701 |
-
|
702 |
-
|
703 |
-
|
704 |
-
|
705 |
-
|
706 |
-
.mo2f_carousel-control .glyphicon-chevron-left, .mo2f_carousel-control .icon-prev {
|
707 |
-
|
708 |
-
|
709 |
-
margin-left: -15px
|
710 |
-
|
711 |
-
|
712 |
-
}
|
713 |
-
|
714 |
-
|
715 |
-
|
716 |
-
|
717 |
-
|
718 |
-
.mo2f_carousel-control .glyphicon-chevron-right, .mo2f_carousel-control .icon-next {
|
719 |
-
|
720 |
-
|
721 |
-
margin-right: -15px
|
722 |
-
|
723 |
-
|
724 |
-
}
|
725 |
-
|
726 |
-
|
727 |
-
|
728 |
-
|
729 |
-
|
730 |
-
.mo2f_carousel-caption {
|
731 |
-
|
732 |
-
|
733 |
-
right: 20%;
|
734 |
-
|
735 |
-
|
736 |
-
left: 20%;
|
737 |
-
|
738 |
-
|
739 |
-
padding-bottom: 30px
|
740 |
-
|
741 |
-
|
742 |
-
}
|
743 |
-
|
744 |
-
|
745 |
-
|
746 |
-
|
747 |
-
|
748 |
-
.mo2f_carousel-indicators {
|
749 |
-
|
750 |
-
|
751 |
-
bottom: -14px
|
752 |
-
|
753 |
-
|
754 |
-
}
|
755 |
-
|
756 |
-
|
757 |
-
}
|
758 |
-
|
759 |
-
|
760 |
-
|
761 |
-
|
762 |
-
|
763 |
-
.hidden {
|
764 |
-
|
765 |
-
|
766 |
-
display: none;
|
767 |
-
|
768 |
-
|
769 |
-
}
|
770 |
-
|
771 |
-
|
772 |
-
|
773 |
-
|
774 |
-
|
775 |
-
.float-right {
|
776 |
-
|
777 |
-
|
778 |
-
text-align: right;
|
779 |
-
|
780 |
-
|
781 |
-
}
|
782 |
-
|
783 |
-
|
784 |
-
|
785 |
-
|
786 |
-
|
787 |
-
.mo2f_collapse {
|
788 |
-
|
789 |
-
|
790 |
-
display: none;
|
791 |
-
|
792 |
-
|
793 |
-
/ / visibility: hidden;
|
794 |
-
|
795 |
-
|
796 |
-
font-size: 14px !important;
|
797 |
-
|
798 |
-
|
799 |
-
|
800 |
-
|
801 |
-
|
802 |
-
}
|
803 |
-
|
804 |
-
|
805 |
-
|
806 |
-
|
807 |
-
|
808 |
-
.mo2f_collapse.in {
|
809 |
-
|
810 |
-
|
811 |
-
display: block;
|
812 |
-
|
813 |
-
|
814 |
-
visibility: visible;
|
815 |
-
|
816 |
-
|
817 |
-
|
818 |
-
|
819 |
-
|
820 |
-
}
|
821 |
-
|
822 |
-
|
823 |
-
|
824 |
-
|
825 |
-
|
826 |
-
.mo2f_collapsing {
|
827 |
-
|
828 |
-
|
829 |
-
position: relative;
|
830 |
-
|
831 |
-
|
832 |
-
font-size: 14px !important;
|
833 |
-
|
834 |
-
|
835 |
-
height: 0;
|
836 |
-
|
837 |
-
|
838 |
-
overflow: hidden;
|
839 |
-
|
840 |
-
|
841 |
-
-webkit-transition-timing-function: ease;
|
842 |
-
|
843 |
-
|
844 |
-
-o-transition-timing-function: ease;
|
845 |
-
|
846 |
-
|
847 |
-
transition-timing-function: ease;
|
848 |
-
|
849 |
-
|
850 |
-
-webkit-transition-duration: .20s;
|
851 |
-
|
852 |
-
|
853 |
-
-o-transition-duration: .20s;
|
854 |
-
|
855 |
-
|
856 |
-
transition-duration: .20s;
|
857 |
-
|
858 |
-
|
859 |
-
-webkit-transition-property: height, visibility;
|
860 |
-
|
861 |
-
|
862 |
-
-o-transition-property: height, visibility;
|
863 |
-
|
864 |
-
|
865 |
-
transition-property: height, visibility
|
866 |
-
|
867 |
-
|
868 |
-
}
|
869 |
-
|
870 |
-
|
871 |
-
|
872 |
-
|
873 |
-
|
874 |
-
.mo2f_thumbnail {
|
875 |
-
|
876 |
-
|
877 |
-
width: 315px;
|
878 |
-
|
879 |
-
|
880 |
-
margin-bottom: 10px;
|
881 |
-
|
882 |
-
|
883 |
-
position: relative;
|
884 |
-
|
885 |
-
|
886 |
-
background-color: #fff;
|
887 |
-
|
888 |
-
|
889 |
-
border: 1px solid #ddd;
|
890 |
-
|
891 |
-
|
892 |
-
-webkit-transition: border .2s ease-in-out;
|
893 |
-
|
894 |
-
|
895 |
-
-o-transition: border .2s ease-in-out;
|
896 |
-
|
897 |
-
|
898 |
-
transition: border .2s ease-in-out
|
899 |
-
|
900 |
-
|
901 |
-
}
|
902 |
-
|
903 |
-
|
904 |
-
|
905 |
-
|
906 |
-
|
907 |
-
.mo2f_thumbnail > img, .mo2f_thumbnail a > img {
|
908 |
-
|
909 |
-
|
910 |
-
margin-right: auto;
|
911 |
-
|
912 |
-
|
913 |
-
margin-left: auto
|
914 |
-
|
915 |
-
|
916 |
-
}
|
917 |
-
|
918 |
-
|
919 |
-
|
920 |
-
|
921 |
-
|
922 |
-
a.mo2f_thumbnail:hover, a.mo2f_thumbnail:focus, a.mo2f_thumbnail.active {
|
923 |
-
|
924 |
-
|
925 |
-
border-color: #337ab7
|
926 |
-
|
927 |
-
|
928 |
-
}
|
929 |
-
|
930 |
-
|
931 |
-
|
932 |
-
|
933 |
-
|
934 |
-
.mo2f_thumbnail .caption {
|
935 |
-
|
936 |
-
|
937 |
-
padding: 9px;
|
938 |
-
|
939 |
-
|
940 |
-
color: #333
|
941 |
-
|
942 |
-
|
943 |
-
}
|
944 |
-
|
945 |
-
|
946 |
-
|
947 |
-
|
948 |
-
|
949 |
-
.mo2f_thumbnail label {
|
950 |
-
|
951 |
-
|
952 |
-
font-weight: bold;
|
953 |
-
|
954 |
-
|
955 |
-
|
956 |
-
|
957 |
-
|
958 |
-
}
|
959 |
-
|
960 |
-
|
961 |
-
|
962 |
-
|
963 |
-
|
964 |
-
.mo2f_close {
|
965 |
-
|
966 |
-
|
967 |
-
float: right;
|
968 |
-
|
969 |
-
|
970 |
-
font-size: 21px;
|
971 |
-
|
972 |
-
|
973 |
-
font-weight: 700;
|
974 |
-
|
975 |
-
|
976 |
-
line-height: 1;
|
977 |
-
|
978 |
-
|
979 |
-
color: #000;
|
980 |
-
|
981 |
-
|
982 |
-
text-shadow: 0 1px 0 #fff;
|
983 |
-
|
984 |
-
|
985 |
-
filter: alpha(opacity=20);
|
986 |
-
|
987 |
-
|
988 |
-
opacity: .2
|
989 |
-
|
990 |
-
|
991 |
-
}
|
992 |
-
|
993 |
-
|
994 |
-
|
995 |
-
|
996 |
-
|
997 |
-
.mo2f_close:hover, .mo2f_close:focus {
|
998 |
-
|
999 |
-
|
1000 |
-
color: #000;
|
1001 |
-
|
1002 |
-
|
1003 |
-
text-decoration: none;
|
1004 |
-
|
1005 |
-
|
1006 |
-
cursor: pointer;
|
1007 |
-
|
1008 |
-
|
1009 |
-
filter: alpha(opacity=50);
|
1010 |
-
|
1011 |
-
|
1012 |
-
opacity: .5
|
1013 |
-
|
1014 |
-
|
1015 |
-
}
|
1016 |
-
|
1017 |
-
|
1018 |
-
|
1019 |
-
|
1020 |
-
|
1021 |
-
button.mo2f_close {
|
1022 |
-
|
1023 |
-
|
1024 |
-
-webkit-appearance: none;
|
1025 |
-
|
1026 |
-
|
1027 |
-
padding: 0;
|
1028 |
-
|
1029 |
-
|
1030 |
-
cursor: pointer;
|
1031 |
-
|
1032 |
-
|
1033 |
-
background: 0 0;
|
1034 |
-
|
1035 |
-
|
1036 |
-
border: 0
|
1037 |
-
|
1038 |
-
|
1039 |
-
}
|
1040 |
-
|
1041 |
-
|
1042 |
-
|
1043 |
-
|
1044 |
-
|
1045 |
-
.mo2f_modal-open {
|
1046 |
-
|
1047 |
-
|
1048 |
-
overflow: hidden !important;
|
1049 |
-
|
1050 |
-
|
1051 |
-
position: fixed !important;
|
1052 |
-
|
1053 |
-
|
1054 |
-
width: 100% !important;
|
1055 |
-
|
1056 |
-
|
1057 |
-
|
1058 |
-
|
1059 |
-
|
1060 |
-
}
|
1061 |
-
|
1062 |
-
|
1063 |
-
|
1064 |
-
|
1065 |
-
|
1066 |
-
.mo2f_modal {
|
1067 |
-
|
1068 |
-
|
1069 |
-
position: fixed !important;
|
1070 |
-
|
1071 |
-
|
1072 |
-
top: 0;
|
1073 |
-
|
1074 |
-
|
1075 |
-
right: 0;
|
1076 |
-
|
1077 |
-
|
1078 |
-
bottom: 0;
|
1079 |
-
|
1080 |
-
|
1081 |
-
left: 0;
|
1082 |
-
|
1083 |
-
|
1084 |
-
z-index: 100000 !important;
|
1085 |
-
|
1086 |
-
|
1087 |
-
|
1088 |
-
|
1089 |
-
|
1090 |
-
overflow: hidden !important;
|
1091 |
-
|
1092 |
-
|
1093 |
-
-webkit-overflow-scrolling: touch;
|
1094 |
-
|
1095 |
-
|
1096 |
-
outline: 0;
|
1097 |
-
|
1098 |
-
|
1099 |
-
|
1100 |
-
|
1101 |
-
|
1102 |
-
}
|
1103 |
-
|
1104 |
-
|
1105 |
-
|
1106 |
-
|
1107 |
-
|
1108 |
-
.mo2f_modal_inner {
|
1109 |
-
|
1110 |
-
|
1111 |
-
display: none;
|
1112 |
-
|
1113 |
-
|
1114 |
-
}
|
1115 |
-
|
1116 |
-
|
1117 |
-
|
1118 |
-
|
1119 |
-
|
1120 |
-
.mo2f_modal.fade .mo2f_modal-dialog {
|
1121 |
-
|
1122 |
-
|
1123 |
-
-webkit-transition: -webkit-transform .3s ease-out;
|
1124 |
-
|
1125 |
-
|
1126 |
-
-o-transition: -o-transform .3s ease-out;
|
1127 |
-
|
1128 |
-
|
1129 |
-
transition: transform .3s ease-out;
|
1130 |
-
|
1131 |
-
|
1132 |
-
-webkit-transform: translate(0, -25%);
|
1133 |
-
|
1134 |
-
|
1135 |
-
-ms-transform: translate(0, -25%);
|
1136 |
-
|
1137 |
-
|
1138 |
-
-o-transform: translate(0, -25%);
|
1139 |
-
|
1140 |
-
|
1141 |
-
transform: translate(0, -25%)
|
1142 |
-
|
1143 |
-
|
1144 |
-
}
|
1145 |
-
|
1146 |
-
|
1147 |
-
|
1148 |
-
|
1149 |
-
|
1150 |
-
.mo2f_modal.in .mo2f_modal-dialog {
|
1151 |
-
|
1152 |
-
|
1153 |
-
-webkit-transform: translate(0, 80px) !important;
|
1154 |
-
|
1155 |
-
|
1156 |
-
-ms-transform: translate(0, 80px) !important;
|
1157 |
-
|
1158 |
-
|
1159 |
-
-o-transform: translate(0, 80px) !important;
|
1160 |
-
|
1161 |
-
|
1162 |
-
transform: translate(0, 80px) !important;
|
1163 |
-
|
1164 |
-
|
1165 |
-
|
1166 |
-
|
1167 |
-
|
1168 |
-
}
|
1169 |
-
|
1170 |
-
|
1171 |
-
|
1172 |
-
|
1173 |
-
|
1174 |
-
.mo2f_modal-open .mo2f_modal {
|
1175 |
-
|
1176 |
-
|
1177 |
-
overflow-x: hidden;
|
1178 |
-
|
1179 |
-
|
1180 |
-
overflow-y: hidden;
|
1181 |
-
|
1182 |
-
|
1183 |
-
}
|
1184 |
-
|
1185 |
-
|
1186 |
-
|
1187 |
-
|
1188 |
-
|
1189 |
-
.mo2f_modal-dialog {
|
1190 |
-
|
1191 |
-
|
1192 |
-
position: relative;
|
1193 |
-
|
1194 |
-
|
1195 |
-
width: auto;
|
1196 |
-
|
1197 |
-
|
1198 |
-
margin: 10px;
|
1199 |
-
|
1200 |
-
|
1201 |
-
|
1202 |
-
|
1203 |
-
|
1204 |
-
}
|
1205 |
-
|
1206 |
-
|
1207 |
-
|
1208 |
-
|
1209 |
-
|
1210 |
-
.login mo_customer_validation-modal-content {
|
1211 |
-
|
1212 |
-
|
1213 |
-
position: relative !important;
|
1214 |
-
|
1215 |
-
|
1216 |
-
background-color: #fff !important;
|
1217 |
-
|
1218 |
-
|
1219 |
-
-webkit-background-clip: padding-box !important;
|
1220 |
-
|
1221 |
-
|
1222 |
-
background-clip: padding-box !important;
|
1223 |
-
|
1224 |
-
|
1225 |
-
border: 1px solid #999 !important;
|
1226 |
-
|
1227 |
-
|
1228 |
-
border: 1px solid rgba(0, 0, 0, .2) !important;
|
1229 |
-
|
1230 |
-
|
1231 |
-
border-radius: 6px !important;
|
1232 |
-
|
1233 |
-
|
1234 |
-
outline: 0 !important;
|
1235 |
-
|
1236 |
-
|
1237 |
-
|
1238 |
-
|
1239 |
-
|
1240 |
-
-webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5) !important;
|
1241 |
-
|
1242 |
-
|
1243 |
-
box-shadow: 0 3px 9px rgba(0, 0, 0, .5) !important;
|
1244 |
-
|
1245 |
-
|
1246 |
-
}
|
1247 |
-
|
1248 |
-
|
1249 |
-
|
1250 |
-
|
1251 |
-
|
1252 |
-
.mo2f-modal-backdrop {
|
1253 |
-
|
1254 |
-
|
1255 |
-
position: absolute;
|
1256 |
-
|
1257 |
-
|
1258 |
-
top: 0;
|
1259 |
-
|
1260 |
-
|
1261 |
-
right: 0;
|
1262 |
-
|
1263 |
-
|
1264 |
-
left: 0;
|
1265 |
-
|
1266 |
-
|
1267 |
-
background-color: #f1f1f1 !important;
|
1268 |
-
|
1269 |
-
|
1270 |
-
filter: alpha(opacity=50) !important;
|
1271 |
-
|
1272 |
-
|
1273 |
-
opacity: 0.8 !important;
|
1274 |
-
|
1275 |
-
|
1276 |
-
height: 100% !important;
|
1277 |
-
|
1278 |
-
|
1279 |
-
}
|
1280 |
-
|
1281 |
-
|
1282 |
-
|
1283 |
-
|
1284 |
-
|
1285 |
-
#smsAlertModal {
|
1286 |
-
|
1287 |
-
|
1288 |
-
background-color: black !important;
|
1289 |
-
|
1290 |
-
|
1291 |
-
opacity: 0.8 !important;
|
1292 |
-
|
1293 |
-
|
1294 |
-
filter: alpha(opacity=50) !important;
|
1295 |
-
|
1296 |
-
|
1297 |
-
}
|
1298 |
-
|
1299 |
-
|
1300 |
-
|
1301 |
-
|
1302 |
-
|
1303 |
-
.mo2f_modal-header {
|
1304 |
-
|
1305 |
-
|
1306 |
-
min-height: 14px;
|
1307 |
-
|
1308 |
-
|
1309 |
-
padding: 10px;
|
1310 |
-
|
1311 |
-
|
1312 |
-
border-bottom: 1px solid #e5e5e5
|
1313 |
-
|
1314 |
-
|
1315 |
-
}
|
1316 |
-
|
1317 |
-
|
1318 |
-
|
1319 |
-
|
1320 |
-
|
1321 |
-
.mo2f_modal-title {
|
1322 |
-
|
1323 |
-
|
1324 |
-
margin: 0 !important;
|
1325 |
-
|
1326 |
-
|
1327 |
-
line-height: 1.0 !important;
|
1328 |
-
|
1329 |
-
|
1330 |
-
}
|
1331 |
-
|
1332 |
-
|
1333 |
-
|
1334 |
-
|
1335 |
-
|
1336 |
-
.mo2f_modal-body {
|
1337 |
-
|
1338 |
-
|
1339 |
-
/ / width: 96 % !important;
|
1340 |
-
|
1341 |
-
|
1342 |
-
position: relative !important;
|
1343 |
-
|
1344 |
-
|
1345 |
-
padding: 15px !important;
|
1346 |
-
|
1347 |
-
|
1348 |
-
overflow-y: auto !important;
|
1349 |
-
|
1350 |
-
|
1351 |
-
max-height: 550px !important;
|
1352 |
-
|
1353 |
-
|
1354 |
-
}
|
1355 |
-
|
1356 |
-
|
1357 |
-
|
1358 |
-
|
1359 |
-
|
1360 |
-
.mo2f_modal-footer {
|
1361 |
-
|
1362 |
-
|
1363 |
-
padding: 15px;
|
1364 |
-
|
1365 |
-
|
1366 |
-
text-align: right;
|
1367 |
-
|
1368 |
-
|
1369 |
-
border-top: 1px solid #e5e5e5
|
1370 |
-
|
1371 |
-
|
1372 |
-
}
|
1373 |
-
|
1374 |
-
|
1375 |
-
|
1376 |
-
|
1377 |
-
|
1378 |
-
.mo2f_modal-footer .btn + .btn {
|
1379 |
-
|
1380 |
-
|
1381 |
-
margin-bottom: 0;
|
1382 |
-
|
1383 |
-
|
1384 |
-
margin-left: 5px
|
1385 |
-
|
1386 |
-
|
1387 |
-
}
|
1388 |
-
|
1389 |
-
|
1390 |
-
|
1391 |
-
|
1392 |
-
|
1393 |
-
.mo2f_modal-footer .btn-group .btn + .btn {
|
1394 |
-
|
1395 |
-
|
1396 |
-
margin-left: -1px
|
1397 |
-
|
1398 |
-
|
1399 |
-
}
|
1400 |
-
|
1401 |
-
|
1402 |
-
|
1403 |
-
|
1404 |
-
|
1405 |
-
.mo2f_modal-footer .btn-block + .btn-block {
|
1406 |
-
|
1407 |
-
|
1408 |
-
margin-left: 0
|
1409 |
-
|
1410 |
-
|
1411 |
-
}
|
1412 |
-
|
1413 |
-
|
1414 |
-
|
1415 |
-
|
1416 |
-
|
1417 |
-
.mo2f_modal-scrollbar-measure {
|
1418 |
-
|
1419 |
-
|
1420 |
-
position: absolute;
|
1421 |
-
|
1422 |
-
|
1423 |
-
top: -9999px;
|
1424 |
-
|
1425 |
-
|
1426 |
-
width: 50px;
|
1427 |
-
|
1428 |
-
|
1429 |
-
height: 50px;
|
1430 |
-
|
1431 |
-
|
1432 |
-
overflow: scroll
|
1433 |
-
|
1434 |
-
|
1435 |
-
}
|
1436 |
-
|
1437 |
-
|
1438 |
-
|
1439 |
-
|
1440 |
-
|
1441 |
-
@media ( min-width: 768px) {
|
1442 |
-
|
1443 |
-
|
1444 |
-
.mo2f_modal-dialog {
|
1445 |
-
|
1446 |
-
width: auto;
|
1447 |
-
margin: 0px auto
|
1448 |
-
|
1449 |
-
|
1450 |
-
}
|
1451 |
-
|
1452 |
-
|
1453 |
-
|
1454 |
-
|
1455 |
-
|
1456 |
-
.login mo_customer_validation-modal-content {
|
1457 |
-
|
1458 |
-
|
1459 |
-
-webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
|
1460 |
-
|
1461 |
-
|
1462 |
-
box-shadow: 0 5px 15px rgba(0, 0, 0, .5)
|
1463 |
-
|
1464 |
-
|
1465 |
-
}
|
1466 |
-
|
1467 |
-
|
1468 |
-
|
1469 |
-
|
1470 |
-
|
1471 |
-
.mo2f_modal-sm {
|
1472 |
-
|
1473 |
-
|
1474 |
-
width: 300px
|
1475 |
-
|
1476 |
-
|
1477 |
-
}
|
1478 |
-
|
1479 |
-
|
1480 |
-
|
1481 |
-
|
1482 |
-
|
1483 |
-
.mo2f_modal-md {
|
1484 |
-
|
1485 |
-
|
1486 |
-
width: 550px
|
1487 |
-
|
1488 |
-
|
1489 |
-
}
|
1490 |
-
|
1491 |
-
|
1492 |
-
}
|
1493 |
-
|
1494 |
-
|
1495 |
-
|
1496 |
-
|
1497 |
-
|
1498 |
-
@media ( min-width: 992px) {
|
1499 |
-
|
1500 |
-
|
1501 |
-
.mo2f_modal-lg {
|
1502 |
-
|
1503 |
-
|
1504 |
-
width: 900px;
|
1505 |
-
|
1506 |
-
|
1507 |
-
}
|
1508 |
-
|
1509 |
-
|
1510 |
-
|
1511 |
-
|
1512 |
-
|
1513 |
-
.mo2f_modal-md {
|
1514 |
-
|
1515 |
-
|
1516 |
-
width: 550px
|
1517 |
-
|
1518 |
-
|
1519 |
-
}
|
1520 |
-
|
1521 |
-
|
1522 |
-
}
|
1523 |
-
|
1524 |
-
|
1525 |
-
|
1526 |
-
|
1527 |
-
|
1528 |
-
.center{
|
1529 |
-
|
1530 |
-
|
1531 |
-
|
1532 |
-
|
1533 |
-
|
1534 |
-
text-align: center !important;
|
1535 |
-
|
1536 |
-
|
1537 |
-
}
|
1538 |
-
|
1539 |
-
|
1540 |
-
|
1541 |
-
|
1542 |
-
|
1543 |
-
#otpMessage {
|
1544 |
-
|
1545 |
-
|
1546 |
-
border-radius: 1px;
|
1547 |
-
|
1548 |
-
|
1549 |
-
padding: 1px 5px;
|
1550 |
-
|
1551 |
-
|
1552 |
-
background: #f1f1f1;
|
1553 |
-
|
1554 |
-
|
1555 |
-
}
|
1556 |
-
|
1557 |
-
|
1558 |
-
|
1559 |
-
|
1560 |
-
|
1561 |
-
.mo2f_carousel-indicators {
|
1562 |
-
|
1563 |
-
|
1564 |
-
position: absolute;
|
1565 |
-
|
1566 |
-
|
1567 |
-
bottom: -20px;
|
1568 |
-
|
1569 |
-
|
1570 |
-
z-index: 15;
|
1571 |
-
|
1572 |
-
|
1573 |
-
width: 60%;
|
1574 |
-
|
1575 |
-
|
1576 |
-
list-style: none;
|
1577 |
-
|
1578 |
-
|
1579 |
-
text-align: center;
|
1580 |
-
|
1581 |
-
|
1582 |
-
}
|
1583 |
-
|
1584 |
-
|
1585 |
-
|
1586 |
-
|
1587 |
-
|
1588 |
-
.miniorange_kba_validate:hover, .miniorange_validate_otp:hover, .miniorange_login_forgotphone:hover,
|
1589 |
-
|
1590 |
-
|
1591 |
-
.miniorange_login_offline:hover, .miniorange_login_forgotphone:hover, .miniorange_otp_token_submit:hover, .miniorange_button:hover
|
1592 |
-
|
1593 |
-
|
1594 |
-
{
|
1595 |
-
|
1596 |
-
|
1597 |
-
background-color:#0073AA!important
|
1598 |
-
|
1599 |
-
|
1600 |
-
}
|
1601 |
-
|
1602 |
-
|
1603 |
-
|
1604 |
-
|
1605 |
-
|
1606 |
-
.miniorange_kba_validate, .miniorange_validate_otp, .miniorange_login_forgotphone,
|
1607 |
-
|
1608 |
-
|
1609 |
-
.miniorange_login_offline, .miniorange_login_forgotphone , .miniorange_otp_token_submit,
|
1610 |
-
|
1611 |
-
|
1612 |
-
.miniorange_button
|
1613 |
-
|
1614 |
-
|
1615 |
-
{
|
1616 |
-
|
1617 |
-
|
1618 |
-
background:#00A0D2!important;
|
1619 |
-
|
1620 |
-
|
1621 |
-
border-color:#0073AA!important;
|
1622 |
-
|
1623 |
-
|
1624 |
-
box-shadow:0 1px 0 rgba(120,200,230,.5) inset,0 1px 0 rgba(0,0,0,.15)!important;
|
1625 |
-
|
1626 |
-
|
1627 |
-
color:#FFF!important;
|
1628 |
-
|
1629 |
-
|
1630 |
-
text-decoration:none!important;
|
1631 |
-
|
1632 |
-
|
1633 |
-
cursor:pointer!important;
|
1634 |
-
|
1635 |
-
|
1636 |
-
border-width:1px!important;
|
1637 |
-
|
1638 |
-
|
1639 |
-
border-style:solid!important;
|
1640 |
-
|
1641 |
-
|
1642 |
-
border-radius:3px!important;
|
1643 |
-
|
1644 |
-
|
1645 |
-
white-space:nowrap!important;
|
1646 |
-
|
1647 |
-
|
1648 |
-
box-sizing:border-box!important;
|
1649 |
-
|
1650 |
-
|
1651 |
-
line-height:28px!important;
|
1652 |
-
|
1653 |
-
|
1654 |
-
padding:0 12px!important;
|
1655 |
-
|
1656 |
-
|
1657 |
-
font-size:13px!important;
|
1658 |
-
|
1659 |
-
|
1660 |
-
}
|
1661 |
-
|
1662 |
-
|
1663 |
-
|
1664 |
-
|
1665 |
-
|
1666 |
-
.mo_customer_validation-modal.fade .mo_customer_validation-modal-dialog {
|
1667 |
-
|
1668 |
-
|
1669 |
-
-webkit-transition: -webkit-transform .3s ease-out;
|
1670 |
-
|
1671 |
-
|
1672 |
-
-o-transition: -o-transform .3s ease-out;
|
1673 |
-
|
1674 |
-
|
1675 |
-
transition: transform .3s ease-out;
|
1676 |
-
|
1677 |
-
|
1678 |
-
-webkit-transform: translate(0, -25%);
|
1679 |
-
|
1680 |
-
|
1681 |
-
-ms-transform: translate(0, -25%);
|
1682 |
-
|
1683 |
-
|
1684 |
-
-o-transform: translate(0, -25%);
|
1685 |
-
|
1686 |
-
|
1687 |
-
transform: translate(0, -25%)
|
1688 |
-
|
1689 |
-
|
1690 |
-
}
|
1691 |
-
|
1692 |
-
|
1693 |
-
|
1694 |
-
|
1695 |
-
|
1696 |
-
.mo_customer_validation-modal.in .mo_customer_validation-modal-dialog {
|
1697 |
-
|
1698 |
-
|
1699 |
-
-webkit-transform: translate(0, 80px) !important;
|
1700 |
-
|
1701 |
-
|
1702 |
-
-ms-transform: translate(0, 80px) !important;
|
1703 |
-
|
1704 |
-
|
1705 |
-
-o-transform: translate(0, 80px) !important;
|
1706 |
-
|
1707 |
-
|
1708 |
-
transform: translate(0, 80px) !important
|
1709 |
-
|
1710 |
-
|
1711 |
-
}
|
1712 |
-
|
1713 |
-
|
1714 |
-
|
1715 |
-
|
1716 |
-
|
1717 |
-
.mo_customer_validation-modal-open .mo_customer_validation-modal {
|
1718 |
-
|
1719 |
-
|
1720 |
-
overflow-x: hidden;
|
1721 |
-
|
1722 |
-
|
1723 |
-
overflow-y: hidden
|
1724 |
-
|
1725 |
-
|
1726 |
-
}
|
1727 |
-
|
1728 |
-
|
1729 |
-
|
1730 |
-
|
1731 |
-
|
1732 |
-
.mo_customer_validation-modal-dialog {
|
1733 |
-
|
1734 |
-
|
1735 |
-
position: relative;
|
1736 |
-
|
1737 |
-
|
1738 |
-
width: auto;
|
1739 |
-
|
1740 |
-
|
1741 |
-
margin: 10px
|
1742 |
-
|
1743 |
-
|
1744 |
-
}
|
1745 |
-
|
1746 |
-
|
1747 |
-
|
1748 |
-
|
1749 |
-
|
1750 |
-
.mo_customer_validation-modal-content {
|
1751 |
-
|
1752 |
-
|
1753 |
-
position: relative;
|
1754 |
-
|
1755 |
-
|
1756 |
-
-webkit-background-clip: padding-box;
|
1757 |
-
|
1758 |
-
|
1759 |
-
border: 1px solid #999;
|
1760 |
-
|
1761 |
-
|
1762 |
-
border: 1px solid rgba(0, 0, 0, .2);
|
1763 |
-
|
1764 |
-
|
1765 |
-
outline: 0;
|
1766 |
-
|
1767 |
-
|
1768 |
-
margin-top: 8%;
|
1769 |
-
|
1770 |
-
|
1771 |
-
margin-left: 0;
|
1772 |
-
|
1773 |
-
|
1774 |
-
padding: 15px 20px 0;
|
1775 |
-
|
1776 |
-
|
1777 |
-
font-family: "Open Sans", sans-serif;
|
1778 |
-
|
1779 |
-
|
1780 |
-
|
1781 |
-
font-size: 14px;
|
1782 |
-
|
1783 |
-
|
1784 |
-
line-height: 1.4em;
|
1785 |
-
|
1786 |
-
|
1787 |
-
background: #FFF;
|
1788 |
-
|
1789 |
-
|
1790 |
-
box-shadow: 0 1px 3px rgba(0, 0, 0, .13)
|
1791 |
-
|
1792 |
-
|
1793 |
-
}
|
1794 |
-
|
1795 |
-
|
1796 |
-
|
1797 |
-
|
1798 |
-
|
1799 |
-
.mo_customer_validation-modal-backdrop {
|
1800 |
-
|
1801 |
-
|
1802 |
-
position: absolute;
|
1803 |
-
|
1804 |
-
|
1805 |
-
top: 0;
|
1806 |
-
|
1807 |
-
|
1808 |
-
right: 0;
|
1809 |
-
|
1810 |
-
|
1811 |
-
left: 0;
|
1812 |
-
|
1813 |
-
|
1814 |
-
background-color: #000 !important;
|
1815 |
-
|
1816 |
-
|
1817 |
-
filter: alpha(opacity=50) !important;
|
1818 |
-
|
1819 |
-
|
1820 |
-
opacity: .9 !important;
|
1821 |
-
|
1822 |
-
|
1823 |
-
height: 100% !important
|
1824 |
-
|
1825 |
-
|
1826 |
-
}
|
1827 |
-
|
1828 |
-
|
1829 |
-
|
1830 |
-
|
1831 |
-
|
1832 |
-
.mo_customer_validation-modal-header {
|
1833 |
-
|
1834 |
-
|
1835 |
-
min-height: 14px;
|
1836 |
-
|
1837 |
-
|
1838 |
-
padding: 10px 10px 20px;
|
1839 |
-
|
1840 |
-
|
1841 |
-
border-bottom: 1px solid #e5e5e5
|
1842 |
-
|
1843 |
-
|
1844 |
-
}
|
1845 |
-
|
1846 |
-
|
1847 |
-
|
1848 |
-
|
1849 |
-
|
1850 |
-
.mo_customer_validation-modal-title {
|
1851 |
-
|
1852 |
-
|
1853 |
-
margin: 0 !important;
|
1854 |
-
|
1855 |
-
|
1856 |
-
line-height: 1 !important
|
1857 |
-
|
1858 |
-
|
1859 |
-
}
|
1860 |
-
|
1861 |
-
|
1862 |
-
|
1863 |
-
|
1864 |
-
|
1865 |
-
.mo_customer_validation-modal-body {
|
1866 |
-
|
1867 |
-
|
1868 |
-
position: relative;
|
1869 |
-
|
1870 |
-
|
1871 |
-
padding: 5%;
|
1872 |
-
|
1873 |
-
|
1874 |
-
overflow: hidden !important;
|
1875 |
-
|
1876 |
-
|
1877 |
-
max-height: 550px !important
|
1878 |
-
|
1879 |
-
|
1880 |
-
}
|
1881 |
-
|
1882 |
-
|
1883 |
-
|
1884 |
-
|
1885 |
-
|
1886 |
-
.mo_customer_validation-modal-footer {
|
1887 |
-
|
1888 |
-
|
1889 |
-
padding: 15px;
|
1890 |
-
|
1891 |
-
|
1892 |
-
text-align: right;
|
1893 |
-
|
1894 |
-
|
1895 |
-
border-top: 1px solid #e5e5e5
|
1896 |
-
|
1897 |
-
|
1898 |
-
}
|
1899 |
-
|
1900 |
-
|
1901 |
-
|
1902 |
-
|
1903 |
-
|
1904 |
-
.mo_customer_validation-modal-footer .btn + .btn {
|
1905 |
-
|
1906 |
-
|
1907 |
-
margin-bottom: 0;
|
1908 |
-
|
1909 |
-
|
1910 |
-
margin-left: 5px
|
1911 |
-
|
1912 |
-
|
1913 |
-
}
|
1914 |
-
|
1915 |
-
|
1916 |
-
|
1917 |
-
|
1918 |
-
|
1919 |
-
.mo_customer_validation-modal-footer .btn-group .btn + .btn {
|
1920 |
-
|
1921 |
-
|
1922 |
-
margin-left: -1px
|
1923 |
-
|
1924 |
-
|
1925 |
-
}
|
1926 |
-
|
1927 |
-
|
1928 |
-
|
1929 |
-
|
1930 |
-
|
1931 |
-
.mo_customer_validation-modal-footer .btn-block + .btn-block {
|
1932 |
-
|
1933 |
-
|
1934 |
-
margin-left: 0
|
1935 |
-
|
1936 |
-
|
1937 |
-
}
|
1938 |
-
|
1939 |
-
|
1940 |
-
|
1941 |
-
|
1942 |
-
|
1943 |
-
.mo_customer_validation-modal-scrollbar-measure {
|
1944 |
-
|
1945 |
-
|
1946 |
-
position: absolute;
|
1947 |
-
|
1948 |
-
|
1949 |
-
top: -9999px;
|
1950 |
-
|
1951 |
-
|
1952 |
-
width: 50px;
|
1953 |
-
|
1954 |
-
|
1955 |
-
height: 50px;
|
1956 |
-
|
1957 |
-
|
1958 |
-
overflow: scroll
|
1959 |
-
|
1960 |
-
|
1961 |
-
}
|
1962 |
-
|
1963 |
-
|
1964 |
-
|
1965 |
-
|
1966 |
-
|
1967 |
-
@media (min-width: 768px) {
|
1968 |
-
|
1969 |
-
|
1970 |
-
.mo_customer_validation-modal-dialog {
|
1971 |
-
|
1972 |
-
|
1973 |
-
width: auto;
|
1974 |
-
|
1975 |
-
|
1976 |
-
margin: 0 auto
|
1977 |
-
|
1978 |
-
|
1979 |
-
}
|
1980 |
-
|
1981 |
-
|
1982 |
-
|
1983 |
-
|
1984 |
-
|
1985 |
-
.mo_customer_validation-modal-content {
|
1986 |
-
|
1987 |
-
|
1988 |
-
-webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
|
1989 |
-
|
1990 |
-
|
1991 |
-
box-shadow: 0 5px 15px rgba(0, 0, 0, .5)
|
1992 |
-
|
1993 |
-
|
1994 |
-
}
|
1995 |
-
|
1996 |
-
|
1997 |
-
|
1998 |
-
|
1999 |
-
|
2000 |
-
.mo_customer_validation-modal-sm {
|
2001 |
-
|
2002 |
-
|
2003 |
-
width: 300px
|
2004 |
-
|
2005 |
-
|
2006 |
-
}
|
2007 |
-
|
2008 |
-
|
2009 |
-
|
2010 |
-
|
2011 |
-
|
2012 |
-
.mo_customer_validation-modal-md {
|
2013 |
-
|
2014 |
-
|
2015 |
-
width: 532px
|
2016 |
-
|
2017 |
-
|
2018 |
-
}
|
2019 |
-
|
2020 |
-
|
2021 |
-
|
2022 |
-
|
2023 |
-
|
2024 |
-
.mo_customer_validation-modal-lg {
|
2025 |
-
|
2026 |
-
|
2027 |
-
width: 50%
|
2028 |
-
|
2029 |
-
|
2030 |
-
}
|
2031 |
-
|
2032 |
-
|
2033 |
-
}
|
2034 |
-
|
2035 |
-
|
2036 |
-
|
2037 |
-
|
2038 |
-
|
2039 |
-
@media (min-width: 992px) {
|
2040 |
-
|
2041 |
-
|
2042 |
-
.mo_customer_validation-modal-dialog {
|
2043 |
-
|
2044 |
-
|
2045 |
-
width: auto;
|
2046 |
-
|
2047 |
-
|
2048 |
-
margin: 0 auto
|
2049 |
-
|
2050 |
-
|
2051 |
-
}
|
2052 |
-
|
2053 |
-
|
2054 |
-
|
2055 |
-
|
2056 |
-
|
2057 |
-
.mo_customer_validation-modal-lg {
|
2058 |
-
|
2059 |
-
|
2060 |
-
width: 490px
|
2061 |
-
|
2062 |
-
|
2063 |
-
}
|
2064 |
-
|
2065 |
-
|
2066 |
-
|
2067 |
-
|
2068 |
-
|
2069 |
-
.mo_customer_validation-modal-md {
|
2070 |
-
|
2071 |
-
|
2072 |
-
width: 532px
|
2073 |
-
|
2074 |
-
|
2075 |
-
}
|
2076 |
-
|
2077 |
-
|
2078 |
-
}
|
2079 |
-
|
2080 |
-
|
2081 |
-
|
2082 |
-
|
2083 |
-
|
2084 |
-
.mo_customer_validation-textbox {
|
2085 |
-
|
2086 |
-
|
2087 |
-
background: #FBFBFB;
|
2088 |
-
|
2089 |
-
|
2090 |
-
font-family: "Open Sans", sans-serif;
|
2091 |
-
|
2092 |
-
|
2093 |
-
font-size: 24px;
|
2094 |
-
|
2095 |
-
|
2096 |
-
width: 100%;
|
2097 |
-
|
2098 |
-
|
2099 |
-
border: 1px solid #DDD;
|
2100 |
-
|
2101 |
-
|
2102 |
-
padding: 3px;
|
2103 |
-
|
2104 |
-
|
2105 |
-
margin: 2px 6px 16px 0
|
2106 |
-
|
2107 |
-
|
2108 |
-
}
|
2109 |
-
|
2110 |
-
|
2111 |
-
|
2112 |
-
|
2113 |
-
|
2114 |
-
.mo_customer_validation-textbox:focus {
|
2115 |
-
|
2116 |
-
|
2117 |
-
border-color: #5B9DD9;
|
2118 |
-
|
2119 |
-
|
2120 |
-
box-shadow: 0 0 2px rgba(30, 140, 190, .8)
|
2121 |
-
|
2122 |
-
|
2123 |
-
}
|
2124 |
-
|
2125 |
-
|
2126 |
-
|
2127 |
-
|
2128 |
-
|
2129 |
-
.button-primary,
|
2130 |
-
|
2131 |
-
|
2132 |
-
.button-secondary {
|
2133 |
-
|
2134 |
-
|
2135 |
-
background: #00A0D2;
|
2136 |
-
|
2137 |
-
|
2138 |
-
border-color: #0073AA;
|
2139 |
-
|
2140 |
-
|
2141 |
-
box-shadow: 0 1px 0 rgba(120, 200, 230, .5) inset, 0 1px 0 rgba(0, 0, 0, .15);
|
2142 |
-
|
2143 |
-
|
2144 |
-
color: #FFF;
|
2145 |
-
|
2146 |
-
|
2147 |
-
text-decoration: none;
|
2148 |
-
|
2149 |
-
|
2150 |
-
cursor: pointer;
|
2151 |
-
|
2152 |
-
|
2153 |
-
border-width: 1px;
|
2154 |
-
|
2155 |
-
|
2156 |
-
border-style: solid;
|
2157 |
-
|
2158 |
-
|
2159 |
-
border-radius: 3px;
|
2160 |
-
|
2161 |
-
|
2162 |
-
white-space: nowrap;
|
2163 |
-
|
2164 |
-
|
2165 |
-
box-sizing: border-box;
|
2166 |
-
|
2167 |
-
|
2168 |
-
line-height: 28px;
|
2169 |
-
|
2170 |
-
|
2171 |
-
padding: 0 12px;
|
2172 |
-
|
2173 |
-
|
2174 |
-
font-size: 13px
|
2175 |
-
|
2176 |
-
|
2177 |
-
}
|
2178 |
-
|
2179 |
-
|
2180 |
-
|
2181 |
-
|
2182 |
-
|
2183 |
-
.button:hover {
|
2184 |
-
|
2185 |
-
|
2186 |
-
background-color: #0073AA
|
2187 |
-
|
2188 |
-
|
2189 |
-
}
|
2190 |
-
|
2191 |
-
|
2192 |
-
|
2193 |
-
|
2194 |
-
|
2195 |
-
.close {
|
2196 |
-
|
2197 |
-
|
2198 |
-
float: right;
|
2199 |
-
|
2200 |
-
|
2201 |
-
transition: color .1s ease-in-out, background .1s ease-in-out;
|
2202 |
-
|
2203 |
-
|
2204 |
-
text-decoration: none;
|
2205 |
-
|
2206 |
-
|
2207 |
-
color: #999;
|
2208 |
-
|
2209 |
-
|
2210 |
-
font-size: 13px
|
2211 |
-
|
2212 |
-
|
2213 |
-
}
|
2214 |
-
|
2215 |
-
|
2216 |
-
|
2217 |
-
|
2218 |
-
|
2219 |
-
.mo_validate_close:focus,
|
2220 |
-
|
2221 |
-
|
2222 |
-
.mo_validate_close:hover {
|
2223 |
-
|
2224 |
-
|
2225 |
-
color: #0085ba
|
2226 |
-
|
2227 |
-
|
2228 |
-
}
|
2229 |
-
|
2230 |
-
|
2231 |
-
|
2232 |
-
|
2233 |
-
|
2234 |
-
.mo_registration_pricing_text {
|
2235 |
-
|
2236 |
-
|
2237 |
-
font-size: 13px;
|
2238 |
-
|
2239 |
-
|
2240 |
-
color: darkblue;
|
2241 |
-
|
2242 |
-
|
2243 |
-
}
|
2244 |
-
|
2245 |
-
|
2246 |
-
|
2247 |
-
|
2248 |
-
|
2249 |
-
.mo_otp_token {
|
2250 |
-
|
2251 |
-
|
2252 |
-
font-size: 15px;
|
2253 |
-
|
2254 |
-
|
2255 |
-
color: #212F3C;
|
2256 |
-
|
2257 |
-
|
2258 |
-
border: none;
|
2259 |
-
|
2260 |
-
|
2261 |
-
display: block;
|
2262 |
-
|
2263 |
-
|
2264 |
-
border-bottom-style: solid;
|
2265 |
-
|
2266 |
-
|
2267 |
-
border-width: 2px;
|
2268 |
-
|
2269 |
-
|
2270 |
-
border-color: #D0D3D4;
|
2271 |
-
|
2272 |
-
|
2273 |
-
border-radius: 0px;
|
2274 |
-
|
2275 |
-
|
2276 |
-
outline: none;
|
2277 |
-
|
2278 |
-
|
2279 |
-
width: 140px;
|
2280 |
-
|
2281 |
-
|
2282 |
-
text-align: center;
|
2283 |
-
|
2284 |
-
|
2285 |
-
}
|
2286 |
-
|
2287 |
-
|
2288 |
-
|
2289 |
-
|
2290 |
-
|
2291 |
-
.container {
|
2292 |
-
|
2293 |
-
|
2294 |
-
max-width: 960px
|
2295 |
-
|
2296 |
-
|
2297 |
-
}
|
2298 |
-
|
2299 |
-
|
2300 |
-
|
2301 |
-
|
2302 |
-
|
2303 |
-
}
|
2304 |
-
|
2305 |
-
|
2306 |
-
@media (min-width: 1200px) {
|
2307 |
-
|
2308 |
-
|
2309 |
-
.container {
|
2310 |
-
|
2311 |
-
|
2312 |
-
max-width: 1140px
|
2313 |
-
|
2314 |
-
|
2315 |
-
}
|
2316 |
-
|
2317 |
-
|
2318 |
-
}
|
2319 |
-
|
2320 |
-
|
2321 |
-
|
2322 |
-
|
2323 |
-
|
2324 |
-
.container-fluid {
|
2325 |
-
|
2326 |
-
|
2327 |
-
width: 100%;
|
2328 |
-
|
2329 |
-
|
2330 |
-
padding-right: 15px;
|
2331 |
-
|
2332 |
-
|
2333 |
-
padding-left: 15px;
|
2334 |
-
|
2335 |
-
|
2336 |
-
margin-right: auto;
|
2337 |
-
|
2338 |
-
|
2339 |
-
margin-left: auto
|
2340 |
-
|
2341 |
-
|
2342 |
-
}
|
2343 |
-
|
2344 |
-
|
2345 |
-
|
2346 |
-
|
2347 |
-
|
2348 |
-
.row {
|
2349 |
-
|
2350 |
-
|
2351 |
-
display: -webkit-box;
|
2352 |
-
|
2353 |
-
|
2354 |
-
display: -ms-flexbox;
|
2355 |
-
|
2356 |
-
|
2357 |
-
display: flex;
|
2358 |
-
|
2359 |
-
|
2360 |
-
-ms-flex-wrap: wrap;
|
2361 |
-
|
2362 |
-
|
2363 |
-
flex-wrap: wrap;
|
2364 |
-
|
2365 |
-
|
2366 |
-
margin-right: -15px;
|
2367 |
-
|
2368 |
-
|
2369 |
-
margin-left: -15px
|
2370 |
-
|
2371 |
-
|
2372 |
-
}
|
2373 |
-
|
2374 |
-
|
2375 |
-
|
2376 |
-
|
2377 |
-
|
2378 |
-
|
2379 |
-
|
2380 |
-
|
2381 |
-
.no-gutters {
|
2382 |
-
|
2383 |
-
|
2384 |
-
margin-right: 0;
|
2385 |
-
|
2386 |
-
|
2387 |
-
margin-left: 0
|
2388 |
-
|
2389 |
-
|
2390 |
-
}
|
2391 |
-
|
2392 |
-
|
2393 |
-
|
2394 |
-
|
2395 |
-
|
2396 |
-
.no-gutters > .col, .no-gutters > [class*=col-] {
|
2397 |
-
|
2398 |
-
|
2399 |
-
padding-right: 0;
|
2400 |
-
|
2401 |
-
|
2402 |
-
padding-left: 0
|
2403 |
-
|
2404 |
-
|
2405 |
-
}
|
2406 |
-
|
2407 |
-
|
2408 |
-
|
2409 |
-
|
2410 |
-
|
2411 |
-
.col, .col-1, .col-10, .col-11, .col-12, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-auto, .col-lg, .col-lg-1, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-auto, .col-md, .col-md-1, .col-md-10, .col-md-11, .col-md-12, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-auto, .col-sm, .col-sm-1, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-auto, .col-xl, .col-xl-1, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-auto {
|
2412 |
-
|
2413 |
-
|
2414 |
-
position: relative;
|
2415 |
-
|
2416 |
-
|
2417 |
-
width: 100%;
|
2418 |
-
|
2419 |
-
|
2420 |
-
min-height: 1px;
|
2421 |
-
|
2422 |
-
|
2423 |
-
padding-right: 15px;
|
2424 |
-
|
2425 |
-
|
2426 |
-
padding-left: 15px
|
2427 |
-
|
2428 |
-
|
2429 |
-
}
|
2430 |
-
|
2431 |
-
|
2432 |
-
|
2433 |
-
|
2434 |
-
|
2435 |
-
.col {
|
2436 |
-
|
2437 |
-
|
2438 |
-
-ms-flex-preferred-size: 0;
|
2439 |
-
|
2440 |
-
|
2441 |
-
flex-basis: 0;
|
2442 |
-
|
2443 |
-
|
2444 |
-
-webkit-box-flex: 1;
|
2445 |
-
|
2446 |
-
|
2447 |
-
-ms-flex-positive: 1;
|
2448 |
-
|
2449 |
-
|
2450 |
-
flex-grow: 1;
|
2451 |
-
|
2452 |
-
|
2453 |
-
max-width: 100%
|
2454 |
-
|
2455 |
-
|
2456 |
-
}
|
2457 |
-
|
2458 |
-
|
2459 |
-
|
2460 |
-
|
2461 |
-
|
2462 |
-
.col-auto {
|
2463 |
-
|
2464 |
-
|
2465 |
-
-webkit-box-flex: 0;
|
2466 |
-
|
2467 |
-
|
2468 |
-
-ms-flex: 0 0 auto;
|
2469 |
-
|
2470 |
-
|
2471 |
-
flex: 0 0 auto;
|
2472 |
-
|
2473 |
-
|
2474 |
-
width: auto;
|
2475 |
-
|
2476 |
-
|
2477 |
-
max-width: none
|
2478 |
-
|
2479 |
-
|
2480 |
-
}
|
2481 |
-
|
2482 |
-
|
2483 |
-
|
2484 |
-
|
2485 |
-
|
2486 |
-
.col-1 {
|
2487 |
-
|
2488 |
-
|
2489 |
-
-webkit-box-flex: 0;
|
2490 |
-
|
2491 |
-
|
2492 |
-
-ms-flex: 0 0 8.333333%;
|
2493 |
-
|
2494 |
-
|
2495 |
-
flex: 0 0 8.333333%;
|
2496 |
-
|
2497 |
-
|
2498 |
-
max-width: 8.333333%
|
2499 |
-
|
2500 |
-
|
2501 |
-
}
|
2502 |
-
|
2503 |
-
|
2504 |
-
|
2505 |
-
|
2506 |
-
|
2507 |
-
.col-2 {
|
2508 |
-
|
2509 |
-
|
2510 |
-
-webkit-box-flex: 0;
|
2511 |
-
|
2512 |
-
|
2513 |
-
-ms-flex: 0 0 16.666667%;
|
2514 |
-
|
2515 |
-
|
2516 |
-
flex: 0 0 16.666667%;
|
2517 |
-
|
2518 |
-
|
2519 |
-
max-width: 16.666667%
|
2520 |
-
|
2521 |
-
|
2522 |
-
}
|
2523 |
-
|
2524 |
-
|
2525 |
-
|
2526 |
-
|
2527 |
-
|
2528 |
-
.col-3 {
|
2529 |
-
|
2530 |
-
|
2531 |
-
-webkit-box-flex: 0;
|
2532 |
-
|
2533 |
-
|
2534 |
-
-ms-flex: 0 0 25%;
|
2535 |
-
|
2536 |
-
|
2537 |
-
flex: 0 0 25%;
|
2538 |
-
|
2539 |
-
|
2540 |
-
max-width: 25%
|
2541 |
-
|
2542 |
-
|
2543 |
-
}
|
2544 |
-
|
2545 |
-
|
2546 |
-
|
2547 |
-
|
2548 |
-
|
2549 |
-
.col-4 {
|
2550 |
-
|
2551 |
-
|
2552 |
-
-webkit-box-flex: 0;
|
2553 |
-
|
2554 |
-
|
2555 |
-
-ms-flex: 0 0 33.333333%;
|
2556 |
-
|
2557 |
-
|
2558 |
-
flex: 0 0 33.333333%;
|
2559 |
-
|
2560 |
-
|
2561 |
-
max-width: 33.333333%
|
2562 |
-
|
2563 |
-
|
2564 |
-
}
|
2565 |
-
|
2566 |
-
|
2567 |
-
|
2568 |
-
|
2569 |
-
|
2570 |
-
.col-5 {
|
2571 |
-
|
2572 |
-
|
2573 |
-
-webkit-box-flex: 0;
|
2574 |
-
|
2575 |
-
|
2576 |
-
-ms-flex: 0 0 41.666667%;
|
2577 |
-
|
2578 |
-
|
2579 |
-
flex: 0 0 41.666667%;
|
2580 |
-
|
2581 |
-
|
2582 |
-
max-width: 41.666667%
|
2583 |
-
|
2584 |
-
|
2585 |
-
}
|
2586 |
-
|
2587 |
-
|
2588 |
-
|
2589 |
-
|
2590 |
-
|
2591 |
-
.col-6 {
|
2592 |
-
|
2593 |
-
|
2594 |
-
-webkit-box-flex: 0;
|
2595 |
-
|
2596 |
-
|
2597 |
-
-ms-flex: 0 0 50%;
|
2598 |
-
|
2599 |
-
|
2600 |
-
flex: 0 0 50%;
|
2601 |
-
|
2602 |
-
|
2603 |
-
max-width: 50%
|
2604 |
-
|
2605 |
-
|
2606 |
-
}
|
2607 |
-
|
2608 |
-
|
2609 |
-
|
2610 |
-
|
2611 |
-
|
2612 |
-
.col-7 {
|
2613 |
-
|
2614 |
-
|
2615 |
-
-webkit-box-flex: 0;
|
2616 |
-
|
2617 |
-
|
2618 |
-
-ms-flex: 0 0 58.333333%;
|
2619 |
-
|
2620 |
-
|
2621 |
-
flex: 0 0 58.333333%;
|
2622 |
-
|
2623 |
-
|
2624 |
-
max-width: 58.333333%
|
2625 |
-
|
2626 |
-
|
2627 |
-
}
|
2628 |
-
|
2629 |
-
|
2630 |
-
|
2631 |
-
|
2632 |
-
|
2633 |
-
.col-8 {
|
2634 |
-
|
2635 |
-
|
2636 |
-
-webkit-box-flex: 0;
|
2637 |
-
|
2638 |
-
|
2639 |
-
-ms-flex: 0 0 66.666667%;
|
2640 |
-
|
2641 |
-
|
2642 |
-
flex: 0 0 66.666667%;
|
2643 |
-
|
2644 |
-
|
2645 |
-
max-width: 66.666667%
|
2646 |
-
|
2647 |
-
|
2648 |
-
}
|
2649 |
-
|
2650 |
-
|
2651 |
-
|
2652 |
-
|
2653 |
-
|
2654 |
-
.col-9 {
|
2655 |
-
|
2656 |
-
|
2657 |
-
-webkit-box-flex: 0;
|
2658 |
-
|
2659 |
-
|
2660 |
-
-ms-flex: 0 0 75%;
|
2661 |
-
|
2662 |
-
|
2663 |
-
flex: 0 0 75%;
|
2664 |
-
|
2665 |
-
|
2666 |
-
max-width: 75%
|
2667 |
-
|
2668 |
-
|
2669 |
-
}
|
2670 |
-
|
2671 |
-
|
2672 |
-
|
2673 |
-
|
2674 |
-
|
2675 |
-
.col-10 {
|
2676 |
-
|
2677 |
-
|
2678 |
-
-webkit-box-flex: 0;
|
2679 |
-
|
2680 |
-
|
2681 |
-
-ms-flex: 0 0 83.333333%;
|
2682 |
-
|
2683 |
-
|
2684 |
-
flex: 0 0 83.333333%;
|
2685 |
-
|
2686 |
-
|
2687 |
-
max-width: 83.333333%
|
2688 |
-
|
2689 |
-
|
2690 |
-
}
|
2691 |
-
|
2692 |
-
|
2693 |
-
|
2694 |
-
|
2695 |
-
|
2696 |
-
.col-11 {
|
2697 |
-
|
2698 |
-
|
2699 |
-
-webkit-box-flex: 0;
|
2700 |
-
|
2701 |
-
|
2702 |
-
-ms-flex: 0 0 91.666667%;
|
2703 |
-
|
2704 |
-
|
2705 |
-
flex: 0 0 91.666667%;
|
2706 |
-
|
2707 |
-
|
2708 |
-
max-width: 91.666667%
|
2709 |
-
|
2710 |
-
|
2711 |
-
}
|
2712 |
-
|
2713 |
-
|
2714 |
-
|
2715 |
-
|
2716 |
-
|
2717 |
-
.col-12 {
|
2718 |
-
|
2719 |
-
|
2720 |
-
-webkit-box-flex: 0;
|
2721 |
-
|
2722 |
-
|
2723 |
-
-ms-flex: 0 0 100%;
|
2724 |
-
|
2725 |
-
|
2726 |
-
flex: 0 0 100%;
|
2727 |
-
|
2728 |
-
|
2729 |
-
max-width: 100%
|
2730 |
-
|
2731 |
-
|
2732 |
-
}
|
2733 |
-
|
2734 |
-
|
2735 |
-
|
2736 |
-
|
2737 |
-
|
2738 |
-
.order-first {
|
2739 |
-
|
2740 |
-
|
2741 |
-
-webkit-box-ordinal-group: 0;
|
2742 |
-
|
2743 |
-
|
2744 |
-
-ms-flex-order: -1;
|
2745 |
-
|
2746 |
-
|
2747 |
-
order: -1
|
2748 |
-
|
2749 |
-
|
2750 |
-
}
|
2751 |
-
|
2752 |
-
|
2753 |
-
|
2754 |
-
|
2755 |
-
|
2756 |
-
.order-last {
|
2757 |
-
|
2758 |
-
|
2759 |
-
-webkit-box-ordinal-group: 14;
|
2760 |
-
|
2761 |
-
|
2762 |
-
-ms-flex-order: 13;
|
2763 |
-
|
2764 |
-
|
2765 |
-
order: 13
|
2766 |
-
|
2767 |
-
|
2768 |
-
}
|
2769 |
-
|
2770 |
-
|
2771 |
-
|
2772 |
-
|
2773 |
-
|
2774 |
-
.order-0 {
|
2775 |
-
|
2776 |
-
|
2777 |
-
-webkit-box-ordinal-group: 1;
|
2778 |
-
|
2779 |
-
|
2780 |
-
-ms-flex-order: 0;
|
2781 |
-
|
2782 |
-
|
2783 |
-
order: 0
|
2784 |
-
|
2785 |
-
|
2786 |
-
}
|
2787 |
-
|
2788 |
-
|
2789 |
-
|
2790 |
-
|
2791 |
-
|
2792 |
-
.order-1 {
|
2793 |
-
|
2794 |
-
|
2795 |
-
-webkit-box-ordinal-group: 2;
|
2796 |
-
|
2797 |
-
|
2798 |
-
-ms-flex-order: 1;
|
2799 |
-
|
2800 |
-
|
2801 |
-
order: 1
|
2802 |
-
|
2803 |
-
|
2804 |
-
}
|
2805 |
-
|
2806 |
-
|
2807 |
-
|
2808 |
-
|
2809 |
-
|
2810 |
-
.order-2 {
|
2811 |
-
|
2812 |
-
|
2813 |
-
-webkit-box-ordinal-group: 3;
|
2814 |
-
|
2815 |
-
|
2816 |
-
-ms-flex-order: 2;
|
2817 |
-
|
2818 |
-
|
2819 |
-
order: 2
|
2820 |
-
|
2821 |
-
|
2822 |
-
}
|
2823 |
-
|
2824 |
-
|
2825 |
-
|
2826 |
-
|
2827 |
-
|
2828 |
-
.order-3 {
|
2829 |
-
|
2830 |
-
|
2831 |
-
-webkit-box-ordinal-group: 4;
|
2832 |
-
|
2833 |
-
|
2834 |
-
-ms-flex-order: 3;
|
2835 |
-
|
2836 |
-
|
2837 |
-
order: 3
|
2838 |
-
|
2839 |
-
|
2840 |
-
}
|
2841 |
-
|
2842 |
-
|
2843 |
-
|
2844 |
-
|
2845 |
-
|
2846 |
-
.order-4 {
|
2847 |
-
|
2848 |
-
|
2849 |
-
-webkit-box-ordinal-group: 5;
|
2850 |
-
|
2851 |
-
|
2852 |
-
-ms-flex-order: 4;
|
2853 |
-
|
2854 |
-
|
2855 |
-
order: 4
|
2856 |
-
|
2857 |
-
|
2858 |
-
}
|
2859 |
-
|
2860 |
-
|
2861 |
-
|
2862 |
-
|
2863 |
-
|
2864 |
-
.order-5 {
|
2865 |
-
|
2866 |
-
|
2867 |
-
-webkit-box-ordinal-group: 6;
|
2868 |
-
|
2869 |
-
|
2870 |
-
-ms-flex-order: 5;
|
2871 |
-
|
2872 |
-
|
2873 |
-
order: 5
|
2874 |
-
|
2875 |
-
|
2876 |
-
}
|
2877 |
-
|
2878 |
-
|
2879 |
-
|
2880 |
-
|
2881 |
-
|
2882 |
-
.order-6 {
|
2883 |
-
|
2884 |
-
|
2885 |
-
-webkit-box-ordinal-group: 7;
|
2886 |
-
|
2887 |
-
|
2888 |
-
-ms-flex-order: 6;
|
2889 |
-
|
2890 |
-
|
2891 |
-
order: 6
|
2892 |
-
|
2893 |
-
|
2894 |
-
}
|
2895 |
-
|
2896 |
-
|
2897 |
-
|
2898 |
-
|
2899 |
-
|
2900 |
-
.order-7 {
|
2901 |
-
|
2902 |
-
|
2903 |
-
-webkit-box-ordinal-group: 8;
|
2904 |
-
|
2905 |
-
|
2906 |
-
-ms-flex-order: 7;
|
2907 |
-
|
2908 |
-
|
2909 |
-
order: 7
|
2910 |
-
|
2911 |
-
|
2912 |
-
}
|
2913 |
-
|
2914 |
-
|
2915 |
-
|
2916 |
-
|
2917 |
-
|
2918 |
-
.order-8 {
|
2919 |
-
|
2920 |
-
|
2921 |
-
-webkit-box-ordinal-group: 9;
|
2922 |
-
|
2923 |
-
|
2924 |
-
-ms-flex-order: 8;
|
2925 |
-
|
2926 |
-
|
2927 |
-
order: 8
|
2928 |
-
|
2929 |
-
|
2930 |
-
}
|
2931 |
-
|
2932 |
-
|
2933 |
-
|
2934 |
-
|
2935 |
-
|
2936 |
-
.order-9 {
|
2937 |
-
|
2938 |
-
|
2939 |
-
-webkit-box-ordinal-group: 10;
|
2940 |
-
|
2941 |
-
|
2942 |
-
-ms-flex-order: 9;
|
2943 |
-
|
2944 |
-
|
2945 |
-
order: 9
|
2946 |
-
|
2947 |
-
|
2948 |
-
}
|
2949 |
-
|
2950 |
-
|
2951 |
-
|
2952 |
-
|
2953 |
-
|
2954 |
-
.order-10 {
|
2955 |
-
|
2956 |
-
|
2957 |
-
-webkit-box-ordinal-group: 11;
|
2958 |
-
|
2959 |
-
|
2960 |
-
-ms-flex-order: 10;
|
2961 |
-
|
2962 |
-
|
2963 |
-
order: 10
|
2964 |
-
|
2965 |
-
|
2966 |
-
}
|
2967 |
-
|
2968 |
-
|
2969 |
-
|
2970 |
-
|
2971 |
-
|
2972 |
-
.order-11 {
|
2973 |
-
|
2974 |
-
|
2975 |
-
-webkit-box-ordinal-group: 12;
|
2976 |
-
|
2977 |
-
|
2978 |
-
-ms-flex-order: 11;
|
2979 |
-
|
2980 |
-
|
2981 |
-
order: 11
|
2982 |
-
|
2983 |
-
|
2984 |
-
}
|
2985 |
-
|
2986 |
-
|
2987 |
-
|
2988 |
-
|
2989 |
-
|
2990 |
-
.order-12 {
|
2991 |
-
|
2992 |
-
|
2993 |
-
-webkit-box-ordinal-group: 13;
|
2994 |
-
|
2995 |
-
|
2996 |
-
-ms-flex-order: 12;
|
2997 |
-
|
2998 |
-
|
2999 |
-
order: 12
|
3000 |
-
|
3001 |
-
|
3002 |
-
}
|
3003 |
-
|
3004 |
-
|
3005 |
-
|
3006 |
-
|
3007 |
-
|
3008 |
-
.offset-1 {
|
3009 |
-
|
3010 |
-
|
3011 |
-
margin-left: 8.333333%
|
3012 |
-
|
3013 |
-
|
3014 |
-
}
|
3015 |
-
|
3016 |
-
|
3017 |
-
|
3018 |
-
|
3019 |
-
|
3020 |
-
.offset-2 {
|
3021 |
-
|
3022 |
-
|
3023 |
-
margin-left: 16.666667%
|
3024 |
-
|
3025 |
-
|
3026 |
-
}
|
3027 |
-
|
3028 |
-
|
3029 |
-
|
3030 |
-
|
3031 |
-
|
3032 |
-
.offset-3 {
|
3033 |
-
|
3034 |
-
|
3035 |
-
margin-left: 25%
|
3036 |
-
|
3037 |
-
|
3038 |
-
}
|
3039 |
-
|
3040 |
-
|
3041 |
-
|
3042 |
-
|
3043 |
-
|
3044 |
-
.offset-4 {
|
3045 |
-
|
3046 |
-
|
3047 |
-
margin-left: 33.333333%
|
3048 |
-
|
3049 |
-
|
3050 |
-
}
|
3051 |
-
|
3052 |
-
|
3053 |
-
|
3054 |
-
|
3055 |
-
|
3056 |
-
.offset-5 {
|
3057 |
-
|
3058 |
-
|
3059 |
-
margin-left: 41.666667%
|
3060 |
-
|
3061 |
-
|
3062 |
-
}
|
3063 |
-
|
3064 |
-
|
3065 |
-
|
3066 |
-
|
3067 |
-
|
3068 |
-
.offset-6 {
|
3069 |
-
|
3070 |
-
|
3071 |
-
margin-left: 50%
|
3072 |
-
|
3073 |
-
|
3074 |
-
}
|
3075 |
-
|
3076 |
-
|
3077 |
-
|
3078 |
-
|
3079 |
-
|
3080 |
-
.offset-7 {
|
3081 |
-
|
3082 |
-
|
3083 |
-
margin-left: 58.333333%
|
3084 |
-
|
3085 |
-
|
3086 |
-
}
|
3087 |
-
|
3088 |
-
|
3089 |
-
|
3090 |
-
|
3091 |
-
|
3092 |
-
.offset-8 {
|
3093 |
-
|
3094 |
-
|
3095 |
-
margin-left: 66.666667%
|
3096 |
-
|
3097 |
-
|
3098 |
-
}
|
3099 |
-
|
3100 |
-
|
3101 |
-
|
3102 |
-
|
3103 |
-
|
3104 |
-
.offset-9 {
|
3105 |
-
|
3106 |
-
|
3107 |
-
margin-left: 75%
|
3108 |
-
|
3109 |
-
|
3110 |
-
}
|
3111 |
-
|
3112 |
-
|
3113 |
-
|
3114 |
-
|
3115 |
-
|
3116 |
-
.offset-10 {
|
3117 |
-
|
3118 |
-
|
3119 |
-
margin-left: 83.333333%
|
3120 |
-
|
3121 |
-
|
3122 |
-
}
|
3123 |
-
|
3124 |
-
|
3125 |
-
|
3126 |
-
|
3127 |
-
|
3128 |
-
.offset-11 {
|
3129 |
-
|
3130 |
-
|
3131 |
-
margin-left: 91.666667%
|
3132 |
-
|
3133 |
-
|
3134 |
-
}
|
3135 |
-
|
3136 |
-
|
3137 |
-
|
3138 |
-
|
3139 |
-
|
3140 |
-
@media (min-width: 576px) {
|
3141 |
-
|
3142 |
-
|
3143 |
-
.col-sm {
|
3144 |
-
|
3145 |
-
|
3146 |
-
-ms-flex-preferred-size: 0;
|
3147 |
-
|
3148 |
-
|
3149 |
-
flex-basis: 0;
|
3150 |
-
|
3151 |
-
|
3152 |
-
-webkit-box-flex: 1;
|
3153 |
-
|
3154 |
-
|
3155 |
-
-ms-flex-positive: 1;
|
3156 |
-
|
3157 |
-
|
3158 |
-
flex-grow: 1;
|
3159 |
-
|
3160 |
-
|
3161 |
-
max-width: 100%
|
3162 |
-
|
3163 |
-
|
3164 |
-
}
|
3165 |
-
|
3166 |
-
|
3167 |
-
|
3168 |
-
|
3169 |
-
|
3170 |
-
.col-sm-auto {
|
3171 |
-
|
3172 |
-
|
3173 |
-
-webkit-box-flex: 0;
|
3174 |
-
|
3175 |
-
|
3176 |
-
-ms-flex: 0 0 auto;
|
3177 |
-
|
3178 |
-
|
3179 |
-
flex: 0 0 auto;
|
3180 |
-
|
3181 |
-
|
3182 |
-
width: auto;
|
3183 |
-
|
3184 |
-
|
3185 |
-
max-width: none
|
3186 |
-
|
3187 |
-
|
3188 |
-
}
|
3189 |
-
|
3190 |
-
|
3191 |
-
|
3192 |
-
|
3193 |
-
|
3194 |
-
.col-sm-1 {
|
3195 |
-
|
3196 |
-
|
3197 |
-
-webkit-box-flex: 0;
|
3198 |
-
|
3199 |
-
|
3200 |
-
-ms-flex: 0 0 8.333333%;
|
3201 |
-
|
3202 |
-
|
3203 |
-
flex: 0 0 8.333333%;
|
3204 |
-
|
3205 |
-
|
3206 |
-
max-width: 8.333333%
|
3207 |
-
|
3208 |
-
|
3209 |
-
}
|
3210 |
-
|
3211 |
-
|
3212 |
-
|
3213 |
-
|
3214 |
-
|
3215 |
-
.col-sm-2 {
|
3216 |
-
|
3217 |
-
|
3218 |
-
-webkit-box-flex: 0;
|
3219 |
-
|
3220 |
-
|
3221 |
-
-ms-flex: 0 0 16.666667%;
|
3222 |
-
|
3223 |
-
|
3224 |
-
flex: 0 0 16.666667%;
|
3225 |
-
|
3226 |
-
|
3227 |
-
max-width: 16.666667%
|
3228 |
-
|
3229 |
-
|
3230 |
-
}
|
3231 |
-
|
3232 |
-
|
3233 |
-
|
3234 |
-
|
3235 |
-
|
3236 |
-
.col-sm-3 {
|
3237 |
-
|
3238 |
-
|
3239 |
-
-webkit-box-flex: 0;
|
3240 |
-
|
3241 |
-
|
3242 |
-
-ms-flex: 0 0 25%;
|
3243 |
-
|
3244 |
-
|
3245 |
-
flex: 0 0 25%;
|
3246 |
-
|
3247 |
-
|
3248 |
-
max-width: 25%
|
3249 |
-
|
3250 |
-
|
3251 |
-
}
|
3252 |
-
|
3253 |
-
|
3254 |
-
|
3255 |
-
|
3256 |
-
|
3257 |
-
.col-sm-4 {
|
3258 |
-
|
3259 |
-
|
3260 |
-
-webkit-box-flex: 0;
|
3261 |
-
|
3262 |
-
|
3263 |
-
-ms-flex: 0 0 33.333333%;
|
3264 |
-
|
3265 |
-
|
3266 |
-
flex: 0 0 33.333333%;
|
3267 |
-
|
3268 |
-
|
3269 |
-
max-width: 33.333333%
|
3270 |
-
|
3271 |
-
|
3272 |
-
}
|
3273 |
-
|
3274 |
-
|
3275 |
-
|
3276 |
-
|
3277 |
-
|
3278 |
-
.col-sm-5 {
|
3279 |
-
|
3280 |
-
|
3281 |
-
-webkit-box-flex: 0;
|
3282 |
-
|
3283 |
-
|
3284 |
-
-ms-flex: 0 0 41.666667%;
|
3285 |
-
|
3286 |
-
|
3287 |
-
flex: 0 0 41.666667%;
|
3288 |
-
|
3289 |
-
|
3290 |
-
max-width: 41.666667%
|
3291 |
-
|
3292 |
-
|
3293 |
-
}
|
3294 |
-
|
3295 |
-
|
3296 |
-
|
3297 |
-
|
3298 |
-
|
3299 |
-
.col-sm-6 {
|
3300 |
-
|
3301 |
-
|
3302 |
-
-webkit-box-flex: 0;
|
3303 |
-
|
3304 |
-
|
3305 |
-
-ms-flex: 0 0 50%;
|
3306 |
-
|
3307 |
-
|
3308 |
-
flex: 0 0 50%;
|
3309 |
-
|
3310 |
-
|
3311 |
-
max-width: 50%
|
3312 |
-
|
3313 |
-
|
3314 |
-
}
|
3315 |
-
|
3316 |
-
|
3317 |
-
|
3318 |
-
|
3319 |
-
|
3320 |
-
.col-sm-7 {
|
3321 |
-
|
3322 |
-
|
3323 |
-
-webkit-box-flex: 0;
|
3324 |
-
|
3325 |
-
|
3326 |
-
-ms-flex: 0 0 58.333333%;
|
3327 |
-
|
3328 |
-
|
3329 |
-
flex: 0 0 58.333333%;
|
3330 |
-
|
3331 |
-
|
3332 |
-
max-width: 58.333333%
|
3333 |
-
|
3334 |
-
|
3335 |
-
}
|
3336 |
-
|
3337 |
-
|
3338 |
-
|
3339 |
-
|
3340 |
-
|
3341 |
-
.col-sm-8 {
|
3342 |
-
|
3343 |
-
|
3344 |
-
-webkit-box-flex: 0;
|
3345 |
-
|
3346 |
-
|
3347 |
-
-ms-flex: 0 0 66.666667%;
|
3348 |
-
|
3349 |
-
|
3350 |
-
flex: 0 0 66.666667%;
|
3351 |
-
|
3352 |
-
|
3353 |
-
max-width: 66.666667%
|
3354 |
-
|
3355 |
-
|
3356 |
-
}
|
3357 |
-
|
3358 |
-
|
3359 |
-
|
3360 |
-
|
3361 |
-
|
3362 |
-
.col-sm-9 {
|
3363 |
-
|
3364 |
-
|
3365 |
-
-webkit-box-flex: 0;
|
3366 |
-
|
3367 |
-
|
3368 |
-
-ms-flex: 0 0 75%;
|
3369 |
-
|
3370 |
-
|
3371 |
-
flex: 0 0 75%;
|
3372 |
-
|
3373 |
-
|
3374 |
-
max-width: 75%
|
3375 |
-
|
3376 |
-
|
3377 |
-
}
|
3378 |
-
|
3379 |
-
|
3380 |
-
|
3381 |
-
|
3382 |
-
|
3383 |
-
.col-sm-10 {
|
3384 |
-
|
3385 |
-
|
3386 |
-
-webkit-box-flex: 0;
|
3387 |
-
|
3388 |
-
|
3389 |
-
-ms-flex: 0 0 83.333333%;
|
3390 |
-
|
3391 |
-
|
3392 |
-
flex: 0 0 83.333333%;
|
3393 |
-
|
3394 |
-
|
3395 |
-
max-width: 83.333333%
|
3396 |
-
|
3397 |
-
|
3398 |
-
}
|
3399 |
-
|
3400 |
-
|
3401 |
-
|
3402 |
-
|
3403 |
-
|
3404 |
-
.col-sm-11 {
|
3405 |
-
|
3406 |
-
|
3407 |
-
-webkit-box-flex: 0;
|
3408 |
-
|
3409 |
-
|
3410 |
-
-ms-flex: 0 0 91.666667%;
|
3411 |
-
|
3412 |
-
|
3413 |
-
flex: 0 0 91.666667%;
|
3414 |
-
|
3415 |
-
|
3416 |
-
max-width: 91.666667%
|
3417 |
-
|
3418 |
-
|
3419 |
-
}
|
3420 |
-
|
3421 |
-
|
3422 |
-
|
3423 |
-
|
3424 |
-
|
3425 |
-
.col-sm-12 {
|
3426 |
-
|
3427 |
-
|
3428 |
-
-webkit-box-flex: 0;
|
3429 |
-
|
3430 |
-
|
3431 |
-
-ms-flex: 0 0 100%;
|
3432 |
-
|
3433 |
-
|
3434 |
-
flex: 0 0 100%;
|
3435 |
-
|
3436 |
-
|
3437 |
-
max-width: 100%
|
3438 |
-
|
3439 |
-
|
3440 |
-
}
|
3441 |
-
|
3442 |
-
|
3443 |
-
|
3444 |
-
|
3445 |
-
|
3446 |
-
.order-sm-first {
|
3447 |
-
|
3448 |
-
|
3449 |
-
-webkit-box-ordinal-group: 0;
|
3450 |
-
|
3451 |
-
|
3452 |
-
-ms-flex-order: -1;
|
3453 |
-
|
3454 |
-
|
3455 |
-
order: -1
|
3456 |
-
|
3457 |
-
|
3458 |
-
}
|
3459 |
-
|
3460 |
-
|
3461 |
-
|
3462 |
-
|
3463 |
-
|
3464 |
-
.order-sm-last {
|
3465 |
-
|
3466 |
-
|
3467 |
-
-webkit-box-ordinal-group: 14;
|
3468 |
-
|
3469 |
-
|
3470 |
-
-ms-flex-order: 13;
|
3471 |
-
|
3472 |
-
|
3473 |
-
order: 13
|
3474 |
-
|
3475 |
-
|
3476 |
-
}
|
3477 |
-
|
3478 |
-
|
3479 |
-
|
3480 |
-
|
3481 |
-
|
3482 |
-
.order-sm-0 {
|
3483 |
-
|
3484 |
-
|
3485 |
-
-webkit-box-ordinal-group: 1;
|
3486 |
-
|
3487 |
-
|
3488 |
-
-ms-flex-order: 0;
|
3489 |
-
|
3490 |
-
|
3491 |
-
order: 0
|
3492 |
-
|
3493 |
-
|
3494 |
-
}
|
3495 |
-
|
3496 |
-
|
3497 |
-
|
3498 |
-
|
3499 |
-
|
3500 |
-
.order-sm-1 {
|
3501 |
-
|
3502 |
-
|
3503 |
-
-webkit-box-ordinal-group: 2;
|
3504 |
-
|
3505 |
-
|
3506 |
-
-ms-flex-order: 1;
|
3507 |
-
|
3508 |
-
|
3509 |
-
order: 1
|
3510 |
-
|
3511 |
-
|
3512 |
-
}
|
3513 |
-
|
3514 |
-
|
3515 |
-
|
3516 |
-
|
3517 |
-
|
3518 |
-
.order-sm-2 {
|
3519 |
-
|
3520 |
-
|
3521 |
-
-webkit-box-ordinal-group: 3;
|
3522 |
-
|
3523 |
-
|
3524 |
-
-ms-flex-order: 2;
|
3525 |
-
|
3526 |
-
|
3527 |
-
order: 2
|
3528 |
-
|
3529 |
-
|
3530 |
-
}
|
3531 |
-
|
3532 |
-
|
3533 |
-
|
3534 |
-
|
3535 |
-
|
3536 |
-
.order-sm-3 {
|
3537 |
-
|
3538 |
-
|
3539 |
-
-webkit-box-ordinal-group: 4;
|
3540 |
-
|
3541 |
-
|
3542 |
-
-ms-flex-order: 3;
|
3543 |
-
|
3544 |
-
|
3545 |
-
order: 3
|
3546 |
-
|
3547 |
-
|
3548 |
-
}
|
3549 |
-
|
3550 |
-
|
3551 |
-
|
3552 |
-
|
3553 |
-
|
3554 |
-
.order-sm-4 {
|
3555 |
-
|
3556 |
-
|
3557 |
-
-webkit-box-ordinal-group: 5;
|
3558 |
-
|
3559 |
-
|
3560 |
-
-ms-flex-order: 4;
|
3561 |
-
|
3562 |
-
|
3563 |
-
order: 4
|
3564 |
-
|
3565 |
-
|
3566 |
-
}
|
3567 |
-
|
3568 |
-
|
3569 |
-
|
3570 |
-
|
3571 |
-
|
3572 |
-
.order-sm-5 {
|
3573 |
-
|
3574 |
-
|
3575 |
-
-webkit-box-ordinal-group: 6;
|
3576 |
-
|
3577 |
-
|
3578 |
-
-ms-flex-order: 5;
|
3579 |
-
|
3580 |
-
|
3581 |
-
order: 5
|
3582 |
-
|
3583 |
-
|
3584 |
-
}
|
3585 |
-
|
3586 |
-
|
3587 |
-
|
3588 |
-
|
3589 |
-
|
3590 |
-
.order-sm-6 {
|
3591 |
-
|
3592 |
-
|
3593 |
-
-webkit-box-ordinal-group: 7;
|
3594 |
-
|
3595 |
-
|
3596 |
-
-ms-flex-order: 6;
|
3597 |
-
|
3598 |
-
|
3599 |
-
order: 6
|
3600 |
-
|
3601 |
-
|
3602 |
-
}
|
3603 |
-
|
3604 |
-
|
3605 |
-
|
3606 |
-
|
3607 |
-
|
3608 |
-
.order-sm-7 {
|
3609 |
-
|
3610 |
-
|
3611 |
-
-webkit-box-ordinal-group: 8;
|
3612 |
-
|
3613 |
-
|
3614 |
-
-ms-flex-order: 7;
|
3615 |
-
|
3616 |
-
|
3617 |
-
order: 7
|
3618 |
-
|
3619 |
-
|
3620 |
-
}
|
3621 |
-
|
3622 |
-
|
3623 |
-
|
3624 |
-
|
3625 |
-
|
3626 |
-
.order-sm-8 {
|
3627 |
-
|
3628 |
-
|
3629 |
-
-webkit-box-ordinal-group: 9;
|
3630 |
-
|
3631 |
-
|
3632 |
-
-ms-flex-order: 8;
|
3633 |
-
|
3634 |
-
|
3635 |
-
order: 8
|
3636 |
-
|
3637 |
-
|
3638 |
-
}
|
3639 |
-
|
3640 |
-
|
3641 |
-
|
3642 |
-
|
3643 |
-
|
3644 |
-
.order-sm-9 {
|
3645 |
-
|
3646 |
-
|
3647 |
-
-webkit-box-ordinal-group: 10;
|
3648 |
-
|
3649 |
-
|
3650 |
-
-ms-flex-order: 9;
|
3651 |
-
|
3652 |
-
|
3653 |
-
order: 9
|
3654 |
-
|
3655 |
-
|
3656 |
-
}
|
3657 |
-
|
3658 |
-
|
3659 |
-
|
3660 |
-
|
3661 |
-
|
3662 |
-
.order-sm-10 {
|
3663 |
-
|
3664 |
-
|
3665 |
-
-webkit-box-ordinal-group: 11;
|
3666 |
-
|
3667 |
-
|
3668 |
-
-ms-flex-order: 10;
|
3669 |
-
|
3670 |
-
|
3671 |
-
order: 10
|
3672 |
-
|
3673 |
-
|
3674 |
-
}
|
3675 |
-
|
3676 |
-
|
3677 |
-
|
3678 |
-
|
3679 |
-
|
3680 |
-
.order-sm-11 {
|
3681 |
-
|
3682 |
-
|
3683 |
-
-webkit-box-ordinal-group: 12;
|
3684 |
-
|
3685 |
-
|
3686 |
-
-ms-flex-order: 11;
|
3687 |
-
|
3688 |
-
|
3689 |
-
order: 11
|
3690 |
-
|
3691 |
-
|
3692 |
-
}
|
3693 |
-
|
3694 |
-
|
3695 |
-
|
3696 |
-
|
3697 |
-
|
3698 |
-
.order-sm-12 {
|
3699 |
-
|
3700 |
-
|
3701 |
-
-webkit-box-ordinal-group: 13;
|
3702 |
-
|
3703 |
-
|
3704 |
-
-ms-flex-order: 12;
|
3705 |
-
|
3706 |
-
|
3707 |
-
order: 12
|
3708 |
-
|
3709 |
-
|
3710 |
-
}
|
3711 |
-
|
3712 |
-
|
3713 |
-
|
3714 |
-
|
3715 |
-
|
3716 |
-
.offset-sm-0 {
|
3717 |
-
|
3718 |
-
|
3719 |
-
margin-left: 0
|
3720 |
-
|
3721 |
-
|
3722 |
-
}
|
3723 |
-
|
3724 |
-
|
3725 |
-
|
3726 |
-
|
3727 |
-
|
3728 |
-
.offset-sm-1 {
|
3729 |
-
|
3730 |
-
|
3731 |
-
margin-left: 8.333333%
|
3732 |
-
|
3733 |
-
|
3734 |
-
}
|
3735 |
-
|
3736 |
-
|
3737 |
-
|
3738 |
-
|
3739 |
-
|
3740 |
-
.offset-sm-2 {
|
3741 |
-
|
3742 |
-
|
3743 |
-
margin-left: 16.666667%
|
3744 |
-
|
3745 |
-
|
3746 |
-
}
|
3747 |
-
|
3748 |
-
|
3749 |
-
|
3750 |
-
|
3751 |
-
|
3752 |
-
.offset-sm-3 {
|
3753 |
-
|
3754 |
-
|
3755 |
-
margin-left: 25%
|
3756 |
-
|
3757 |
-
|
3758 |
-
}
|
3759 |
-
|
3760 |
-
|
3761 |
-
|
3762 |
-
|
3763 |
-
|
3764 |
-
.offset-sm-4 {
|
3765 |
-
|
3766 |
-
|
3767 |
-
margin-left: 33.333333%
|
3768 |
-
|
3769 |
-
|
3770 |
-
}
|
3771 |
-
|
3772 |
-
|
3773 |
-
|
3774 |
-
|
3775 |
-
|
3776 |
-
.offset-sm-5 {
|
3777 |
-
|
3778 |
-
|
3779 |
-
margin-left: 41.666667%
|
3780 |
-
|
3781 |
-
|
3782 |
-
}
|
3783 |
-
|
3784 |
-
|
3785 |
-
|
3786 |
-
|
3787 |
-
|
3788 |
-
.offset-sm-6 {
|
3789 |
-
|
3790 |
-
|
3791 |
-
margin-left: 50%
|
3792 |
-
|
3793 |
-
|
3794 |
-
}
|
3795 |
-
|
3796 |
-
|
3797 |
-
|
3798 |
-
|
3799 |
-
|
3800 |
-
.offset-sm-7 {
|
3801 |
-
|
3802 |
-
|
3803 |
-
margin-left: 58.333333%
|
3804 |
-
|
3805 |
-
|
3806 |
-
}
|
3807 |
-
|
3808 |
-
|
3809 |
-
|
3810 |
-
|
3811 |
-
|
3812 |
-
.offset-sm-8 {
|
3813 |
-
|
3814 |
-
|
3815 |
-
margin-left: 66.666667%
|
3816 |
-
|
3817 |
-
|
3818 |
-
}
|
3819 |
-
|
3820 |
-
|
3821 |
-
|
3822 |
-
|
3823 |
-
|
3824 |
-
.offset-sm-9 {
|
3825 |
-
|
3826 |
-
|
3827 |
-
margin-left: 75%
|
3828 |
-
|
3829 |
-
|
3830 |
-
}
|
3831 |
-
|
3832 |
-
|
3833 |
-
|
3834 |
-
|
3835 |
-
|
3836 |
-
.offset-sm-10 {
|
3837 |
-
|
3838 |
-
|
3839 |
-
margin-left: 83.333333%
|
3840 |
-
|
3841 |
-
|
3842 |
-
}
|
3843 |
-
|
3844 |
-
|
3845 |
-
|
3846 |
-
|
3847 |
-
|
3848 |
-
.offset-sm-11 {
|
3849 |
-
|
3850 |
-
|
3851 |
-
margin-left: 91.666667%
|
3852 |
-
|
3853 |
-
|
3854 |
-
}
|
3855 |
-
|
3856 |
-
|
3857 |
-
}
|
3858 |
-
|
3859 |
-
|
3860 |
-
|
3861 |
-
|
3862 |
-
|
3863 |
-
@media (min-width: 768px) {
|
3864 |
-
|
3865 |
-
|
3866 |
-
.col-md {
|
3867 |
-
|
3868 |
-
|
3869 |
-
-ms-flex-preferred-size: 0;
|
3870 |
-
|
3871 |
-
|
3872 |
-
flex-basis: 0;
|
3873 |
-
|
3874 |
-
|
3875 |
-
-webkit-box-flex: 1;
|
3876 |
-
|
3877 |
-
|
3878 |
-
-ms-flex-positive: 1;
|
3879 |
-
|
3880 |
-
|
3881 |
-
flex-grow: 1;
|
3882 |
-
|
3883 |
-
|
3884 |
-
max-width: 100%
|
3885 |
-
|
3886 |
-
|
3887 |
-
}
|
3888 |
-
|
3889 |
-
|
3890 |
-
|
3891 |
-
|
3892 |
-
|
3893 |
-
.col-md-auto {
|
3894 |
-
|
3895 |
-
|
3896 |
-
-webkit-box-flex: 0;
|
3897 |
-
|
3898 |
-
|
3899 |
-
-ms-flex: 0 0 auto;
|
3900 |
-
|
3901 |
-
|
3902 |
-
flex: 0 0 auto;
|
3903 |
-
|
3904 |
-
|
3905 |
-
width: auto;
|
3906 |
-
|
3907 |
-
|
3908 |
-
max-width: none
|
3909 |
-
|
3910 |
-
|
3911 |
-
}
|
3912 |
-
|
3913 |
-
|
3914 |
-
|
3915 |
-
|
3916 |
-
|
3917 |
-
.col-md-1 {
|
3918 |
-
|
3919 |
-
|
3920 |
-
-webkit-box-flex: 0;
|
3921 |
-
|
3922 |
-
|
3923 |
-
-ms-flex: 0 0 8.333333%;
|
3924 |
-
|
3925 |
-
|
3926 |
-
flex: 0 0 8.333333%;
|
3927 |
-
|
3928 |
-
|
3929 |
-
max-width: 8.333333%
|
3930 |
-
|
3931 |
-
|
3932 |
-
}
|
3933 |
-
|
3934 |
-
|
3935 |
-
|
3936 |
-
|
3937 |
-
|
3938 |
-
.col-md-2 {
|
3939 |
-
|
3940 |
-
|
3941 |
-
-webkit-box-flex: 0;
|
3942 |
-
|
3943 |
-
|
3944 |
-
-ms-flex: 0 0 16.666667%;
|
3945 |
-
|
3946 |
-
|
3947 |
-
flex: 0 0 16.666667%;
|
3948 |
-
|
3949 |
-
|
3950 |
-
max-width: 16.666667%
|
3951 |
-
|
3952 |
-
|
3953 |
-
}
|
3954 |
-
|
3955 |
-
|
3956 |
-
|
3957 |
-
|
3958 |
-
|
3959 |
-
.col-md-3 {
|
3960 |
-
|
3961 |
-
|
3962 |
-
-webkit-box-flex: 0;
|
3963 |
-
|
3964 |
-
|
3965 |
-
-ms-flex: 0 0 25%;
|
3966 |
-
|
3967 |
-
|
3968 |
-
flex: 0 0 25%;
|
3969 |
-
|
3970 |
-
|
3971 |
-
max-width: 25%
|
3972 |
-
|
3973 |
-
|
3974 |
-
}
|
3975 |
-
|
3976 |
-
|
3977 |
-
|
3978 |
-
|
3979 |
-
|
3980 |
-
.col-md-4 {
|
3981 |
-
|
3982 |
-
|
3983 |
-
-webkit-box-flex: 0;
|
3984 |
-
|
3985 |
-
|
3986 |
-
-ms-flex: 0 0 33.333333%;
|
3987 |
-
|
3988 |
-
|
3989 |
-
flex: 0 0 33.333333%;
|
3990 |
-
|
3991 |
-
|
3992 |
-
max-width: 33.333333%
|
3993 |
-
|
3994 |
-
|
3995 |
-
}
|
3996 |
-
|
3997 |
-
|
3998 |
-
|
3999 |
-
|
4000 |
-
|
4001 |
-
.col-md-5 {
|
4002 |
-
|
4003 |
-
|
4004 |
-
-webkit-box-flex: 0;
|
4005 |
-
|
4006 |
-
|
4007 |
-
-ms-flex: 0 0 41.666667%;
|
4008 |
-
|
4009 |
-
|
4010 |
-
flex: 0 0 41.666667%;
|
4011 |
-
|
4012 |
-
|
4013 |
-
max-width: 41.666667%
|
4014 |
-
|
4015 |
-
|
4016 |
-
}
|
4017 |
-
|
4018 |
-
|
4019 |
-
|
4020 |
-
|
4021 |
-
|
4022 |
-
.col-md-6 {
|
4023 |
-
|
4024 |
-
|
4025 |
-
-webkit-box-flex: 0;
|
4026 |
-
|
4027 |
-
|
4028 |
-
-ms-flex: 0 0 50%;
|
4029 |
-
|
4030 |
-
|
4031 |
-
flex: 0 0 50%;
|
4032 |
-
|
4033 |
-
|
4034 |
-
max-width: 50%
|
4035 |
-
|
4036 |
-
|
4037 |
-
}
|
4038 |
-
|
4039 |
-
|
4040 |
-
|
4041 |
-
|
4042 |
-
|
4043 |
-
.col-md-7 {
|
4044 |
-
|
4045 |
-
|
4046 |
-
-webkit-box-flex: 0;
|
4047 |
-
|
4048 |
-
|
4049 |
-
-ms-flex: 0 0 58.333333%;
|
4050 |
-
|
4051 |
-
|
4052 |
-
flex: 0 0 58.333333%;
|
4053 |
-
|
4054 |
-
|
4055 |
-
max-width: 58.333333%
|
4056 |
-
|
4057 |
-
|
4058 |
-
}
|
4059 |
-
|
4060 |
-
|
4061 |
-
|
4062 |
-
|
4063 |
-
|
4064 |
-
.col-md-8 {
|
4065 |
-
|
4066 |
-
|
4067 |
-
-webkit-box-flex: 0;
|
4068 |
-
|
4069 |
-
|
4070 |
-
-ms-flex: 0 0 66.666667%;
|
4071 |
-
|
4072 |
-
|
4073 |
-
flex: 0 0 66.666667%;
|
4074 |
-
|
4075 |
-
|
4076 |
-
max-width: 66.666667%
|
4077 |
-
|
4078 |
-
|
4079 |
-
}
|
4080 |
-
|
4081 |
-
|
4082 |
-
|
4083 |
-
|
4084 |
-
|
4085 |
-
.col-md-9 {
|
4086 |
-
|
4087 |
-
|
4088 |
-
-webkit-box-flex: 0;
|
4089 |
-
|
4090 |
-
|
4091 |
-
-ms-flex: 0 0 75%;
|
4092 |
-
|
4093 |
-
|
4094 |
-
flex: 0 0 75%;
|
4095 |
-
|
4096 |
-
|
4097 |
-
max-width: 75%
|
4098 |
-
|
4099 |
-
|
4100 |
-
}
|
4101 |
-
|
4102 |
-
|
4103 |
-
|
4104 |
-
|
4105 |
-
|
4106 |
-
.col-md-10 {
|
4107 |
-
|
4108 |
-
|
4109 |
-
-webkit-box-flex: 0;
|
4110 |
-
|
4111 |
-
|
4112 |
-
-ms-flex: 0 0 83.333333%;
|
4113 |
-
|
4114 |
-
|
4115 |
-
flex: 0 0 83.333333%;
|
4116 |
-
|
4117 |
-
|
4118 |
-
max-width: 83.333333%
|
4119 |
-
|
4120 |
-
|
4121 |
-
}
|
4122 |
-
|
4123 |
-
|
4124 |
-
|
4125 |
-
|
4126 |
-
|
4127 |
-
.col-md-11 {
|
4128 |
-
|
4129 |
-
|
4130 |
-
-webkit-box-flex: 0;
|
4131 |
-
|
4132 |
-
|
4133 |
-
-ms-flex: 0 0 91.666667%;
|
4134 |
-
|
4135 |
-
|
4136 |
-
flex: 0 0 91.666667%;
|
4137 |
-
|
4138 |
-
|
4139 |
-
max-width: 91.666667%
|
4140 |
-
|
4141 |
-
|
4142 |
-
}
|
4143 |
-
|
4144 |
-
|
4145 |
-
|
4146 |
-
|
4147 |
-
|
4148 |
-
.col-md-12 {
|
4149 |
-
|
4150 |
-
|
4151 |
-
-webkit-box-flex: 0;
|
4152 |
-
|
4153 |
-
|
4154 |
-
-ms-flex: 0 0 100%;
|
4155 |
-
|
4156 |
-
|
4157 |
-
flex: 0 0 100%;
|
4158 |
-
|
4159 |
-
|
4160 |
-
max-width: 100%
|
4161 |
-
|
4162 |
-
|
4163 |
-
}
|
4164 |
-
|
4165 |
-
|
4166 |
-
|
4167 |
-
|
4168 |
-
|
4169 |
-
.order-md-first {
|
4170 |
-
|
4171 |
-
|
4172 |
-
-webkit-box-ordinal-group: 0;
|
4173 |
-
|
4174 |
-
|
4175 |
-
-ms-flex-order: -1;
|
4176 |
-
|
4177 |
-
|
4178 |
-
order: -1
|
4179 |
-
|
4180 |
-
|
4181 |
-
}
|
4182 |
-
|
4183 |
-
|
4184 |
-
|
4185 |
-
|
4186 |
-
|
4187 |
-
.order-md-last {
|
4188 |
-
|
4189 |
-
|
4190 |
-
-webkit-box-ordinal-group: 14;
|
4191 |
-
|
4192 |
-
|
4193 |
-
-ms-flex-order: 13;
|
4194 |
-
|
4195 |
-
|
4196 |
-
order: 13
|
4197 |
-
|
4198 |
-
|
4199 |
-
}
|
4200 |
-
|
4201 |
-
|
4202 |
-
|
4203 |
-
|
4204 |
-
|
4205 |
-
.order-md-0 {
|
4206 |
-
|
4207 |
-
|
4208 |
-
-webkit-box-ordinal-group: 1;
|
4209 |
-
|
4210 |
-
|
4211 |
-
-ms-flex-order: 0;
|
4212 |
-
|
4213 |
-
|
4214 |
-
order: 0
|
4215 |
-
|
4216 |
-
|
4217 |
-
}
|
4218 |
-
|
4219 |
-
|
4220 |
-
|
4221 |
-
|
4222 |
-
|
4223 |
-
.order-md-1 {
|
4224 |
-
|
4225 |
-
|
4226 |
-
-webkit-box-ordinal-group: 2;
|
4227 |
-
|
4228 |
-
|
4229 |
-
-ms-flex-order: 1;
|
4230 |
-
|
4231 |
-
|
4232 |
-
order: 1
|
4233 |
-
|
4234 |
-
|
4235 |
-
}
|
4236 |
-
|
4237 |
-
|
4238 |
-
|
4239 |
-
|
4240 |
-
|
4241 |
-
.order-md-2 {
|
4242 |
-
|
4243 |
-
|
4244 |
-
-webkit-box-ordinal-group: 3;
|
4245 |
-
|
4246 |
-
|
4247 |
-
-ms-flex-order: 2;
|
4248 |
-
|
4249 |
-
|
4250 |
-
order: 2
|
4251 |
-
|
4252 |
-
|
4253 |
-
}
|
4254 |
-
|
4255 |
-
|
4256 |
-
|
4257 |
-
|
4258 |
-
|
4259 |
-
.order-md-3 {
|
4260 |
-
|
4261 |
-
|
4262 |
-
-webkit-box-ordinal-group: 4;
|
4263 |
-
|
4264 |
-
|
4265 |
-
-ms-flex-order: 3;
|
4266 |
-
|
4267 |
-
|
4268 |
-
order: 3
|
4269 |
-
|
4270 |
-
|
4271 |
-
}
|
4272 |
-
|
4273 |
-
|
4274 |
-
|
4275 |
-
|
4276 |
-
|
4277 |
-
.order-md-4 {
|
4278 |
-
|
4279 |
-
|
4280 |
-
-webkit-box-ordinal-group: 5;
|
4281 |
-
|
4282 |
-
|
4283 |
-
-ms-flex-order: 4;
|
4284 |
-
|
4285 |
-
|
4286 |
-
order: 4
|
4287 |
-
|
4288 |
-
|
4289 |
-
}
|
4290 |
-
|
4291 |
-
|
4292 |
-
|
4293 |
-
|
4294 |
-
|
4295 |
-
.order-md-5 {
|
4296 |
-
|
4297 |
-
|
4298 |
-
-webkit-box-ordinal-group: 6;
|
4299 |
-
|
4300 |
-
|
4301 |
-
-ms-flex-order: 5;
|
4302 |
-
|
4303 |
-
|
4304 |
-
order: 5
|
4305 |
-
|
4306 |
-
|
4307 |
-
}
|
4308 |
-
|
4309 |
-
|
4310 |
-
|
4311 |
-
|
4312 |
-
|
4313 |
-
.order-md-6 {
|
4314 |
-
|
4315 |
-
|
4316 |
-
-webkit-box-ordinal-group: 7;
|
4317 |
-
|
4318 |
-
|
4319 |
-
-ms-flex-order: 6;
|
4320 |
-
|
4321 |
-
|
4322 |
-
order: 6
|
4323 |
-
|
4324 |
-
|
4325 |
-
}
|
4326 |
-
|
4327 |
-
|
4328 |
-
|
4329 |
-
|
4330 |
-
|
4331 |
-
.order-md-7 {
|
4332 |
-
|
4333 |
-
|
4334 |
-
-webkit-box-ordinal-group: 8;
|
4335 |
-
|
4336 |
-
|
4337 |
-
-ms-flex-order: 7;
|
4338 |
-
|
4339 |
-
|
4340 |
-
order: 7
|
4341 |
-
|
4342 |
-
|
4343 |
-
}
|
4344 |
-
|
4345 |
-
|
4346 |
-
|
4347 |
-
|
4348 |
-
|
4349 |
-
.order-md-8 {
|
4350 |
-
|
4351 |
-
|
4352 |
-
-webkit-box-ordinal-group: 9;
|
4353 |
-
|
4354 |
-
|
4355 |
-
-ms-flex-order: 8;
|
4356 |
-
|
4357 |
-
|
4358 |
-
order: 8
|
4359 |
-
|
4360 |
-
|
4361 |
-
}
|
4362 |
-
|
4363 |
-
|
4364 |
-
|
4365 |
-
|
4366 |
-
|
4367 |
-
.order-md-9 {
|
4368 |
-
|
4369 |
-
|
4370 |
-
-webkit-box-ordinal-group: 10;
|
4371 |
-
|
4372 |
-
|
4373 |
-
-ms-flex-order: 9;
|
4374 |
-
|
4375 |
-
|
4376 |
-
order: 9
|
4377 |
-
|
4378 |
-
|
4379 |
-
}
|
4380 |
-
|
4381 |
-
|
4382 |
-
|
4383 |
-
|
4384 |
-
|
4385 |
-
.order-md-10 {
|
4386 |
-
|
4387 |
-
|
4388 |
-
-webkit-box-ordinal-group: 11;
|
4389 |
-
|
4390 |
-
|
4391 |
-
-ms-flex-order: 10;
|
4392 |
-
|
4393 |
-
|
4394 |
-
order: 10
|
4395 |
-
|
4396 |
-
|
4397 |
-
}
|
4398 |
-
|
4399 |
-
|
4400 |
-
|
4401 |
-
|
4402 |
-
|
4403 |
-
.order-md-11 {
|
4404 |
-
|
4405 |
-
|
4406 |
-
-webkit-box-ordinal-group: 12;
|
4407 |
-
|
4408 |
-
|
4409 |
-
-ms-flex-order: 11;
|
4410 |
-
|
4411 |
-
|
4412 |
-
order: 11
|
4413 |
-
|
4414 |
-
|
4415 |
-
}
|
4416 |
-
|
4417 |
-
|
4418 |
-
|
4419 |
-
|
4420 |
-
|
4421 |
-
.order-md-12 {
|
4422 |
-
|
4423 |
-
|
4424 |
-
-webkit-box-ordinal-group: 13;
|
4425 |
-
|
4426 |
-
|
4427 |
-
-ms-flex-order: 12;
|
4428 |
-
|
4429 |
-
|
4430 |
-
order: 12
|
4431 |
-
|
4432 |
-
|
4433 |
-
}
|
4434 |
-
|
4435 |
-
|
4436 |
-
|
4437 |
-
|
4438 |
-
|
4439 |
-
.offset-md-0 {
|
4440 |
-
|
4441 |
-
|
4442 |
-
margin-left: 0
|
4443 |
-
|
4444 |
-
|
4445 |
-
}
|
4446 |
-
|
4447 |
-
|
4448 |
-
|
4449 |
-
|
4450 |
-
|
4451 |
-
.offset-md-1 {
|
4452 |
-
|
4453 |
-
|
4454 |
-
margin-left: 8.333333%
|
4455 |
-
|
4456 |
-
|
4457 |
-
}
|
4458 |
-
|
4459 |
-
|
4460 |
-
|
4461 |
-
|
4462 |
-
|
4463 |
-
.offset-md-2 {
|
4464 |
-
|
4465 |
-
|
4466 |
-
margin-left: 16.666667%
|
4467 |
-
|
4468 |
-
|
4469 |
-
}
|
4470 |
-
|
4471 |
-
|
4472 |
-
|
4473 |
-
|
4474 |
-
|
4475 |
-
.offset-md-3 {
|
4476 |
-
|
4477 |
-
|
4478 |
-
margin-left: 25%
|
4479 |
-
|
4480 |
-
|
4481 |
-
}
|
4482 |
-
|
4483 |
-
|
4484 |
-
|
4485 |
-
|
4486 |
-
|
4487 |
-
.offset-md-4 {
|
4488 |
-
|
4489 |
-
|
4490 |
-
margin-left: 33.333333%
|
4491 |
-
|
4492 |
-
|
4493 |
-
}
|
4494 |
-
|
4495 |
-
|
4496 |
-
|
4497 |
-
|
4498 |
-
|
4499 |
-
.offset-md-5 {
|
4500 |
-
|
4501 |
-
|
4502 |
-
margin-left: 41.666667%
|
4503 |
-
|
4504 |
-
|
4505 |
-
}
|
4506 |
-
|
4507 |
-
|
4508 |
-
|
4509 |
-
|
4510 |
-
|
4511 |
-
.offset-md-6 {
|
4512 |
-
|
4513 |
-
|
4514 |
-
margin-left: 50%
|
4515 |
-
|
4516 |
-
|
4517 |
-
}
|
4518 |
-
|
4519 |
-
|
4520 |
-
|
4521 |
-
|
4522 |
-
|
4523 |
-
.offset-md-7 {
|
4524 |
-
|
4525 |
-
|
4526 |
-
margin-left: 58.333333%
|
4527 |
-
|
4528 |
-
|
4529 |
-
}
|
4530 |
-
|
4531 |
-
|
4532 |
-
|
4533 |
-
|
4534 |
-
|
4535 |
-
.offset-md-8 {
|
4536 |
-
|
4537 |
-
|
4538 |
-
margin-left: 66.666667%
|
4539 |
-
|
4540 |
-
|
4541 |
-
}
|
4542 |
-
|
4543 |
-
|
4544 |
-
|
4545 |
-
|
4546 |
-
|
4547 |
-
.offset-md-9 {
|
4548 |
-
|
4549 |
-
|
4550 |
-
margin-left: 75%
|
4551 |
-
|
4552 |
-
|
4553 |
-
}
|
4554 |
-
|
4555 |
-
|
4556 |
-
|
4557 |
-
|
4558 |
-
|
4559 |
-
.offset-md-10 {
|
4560 |
-
|
4561 |
-
|
4562 |
-
margin-left: 83.333333%
|
4563 |
-
|
4564 |
-
|
4565 |
-
}
|
4566 |
-
|
4567 |
-
|
4568 |
-
|
4569 |
-
|
4570 |
-
|
4571 |
-
.offset-md-11 {
|
4572 |
-
|
4573 |
-
|
4574 |
-
margin-left: 91.666667%
|
4575 |
-
|
4576 |
-
|
4577 |
-
}
|
4578 |
-
|
4579 |
-
|
4580 |
-
}
|
4581 |
-
|
4582 |
-
|
4583 |
-
|
4584 |
-
|
4585 |
-
|
4586 |
-
@media (min-width: 992px) {
|
4587 |
-
|
4588 |
-
|
4589 |
-
.col-lg {
|
4590 |
-
|
4591 |
-
|
4592 |
-
-ms-flex-preferred-size: 0;
|
4593 |
-
|
4594 |
-
|
4595 |
-
flex-basis: 0;
|
4596 |
-
|
4597 |
-
|
4598 |
-
-webkit-box-flex: 1;
|
4599 |
-
|
4600 |
-
|
4601 |
-
-ms-flex-positive: 1;
|
4602 |
-
|
4603 |
-
|
4604 |
-
flex-grow: 1;
|
4605 |
-
|
4606 |
-
|
4607 |
-
max-width: 100%
|
4608 |
-
|
4609 |
-
|
4610 |
-
}
|
4611 |
-
|
4612 |
-
|
4613 |
-
|
4614 |
-
|
4615 |
-
|
4616 |
-
.col-lg-auto {
|
4617 |
-
|
4618 |
-
|
4619 |
-
-webkit-box-flex: 0;
|
4620 |
-
|
4621 |
-
|
4622 |
-
-ms-flex: 0 0 auto;
|
4623 |
-
|
4624 |
-
|
4625 |
-
flex: 0 0 auto;
|
4626 |
-
|
4627 |
-
|
4628 |
-
width: auto;
|
4629 |
-
|
4630 |
-
|
4631 |
-
max-width: none
|
4632 |
-
|
4633 |
-
|
4634 |
-
}
|
4635 |
-
|
4636 |
-
|
4637 |
-
|
4638 |
-
|
4639 |
-
|
4640 |
-
.col-lg-1 {
|
4641 |
-
|
4642 |
-
|
4643 |
-
-webkit-box-flex: 0;
|
4644 |
-
|
4645 |
-
|
4646 |
-
-ms-flex: 0 0 8.333333%;
|
4647 |
-
|
4648 |
-
|
4649 |
-
flex: 0 0 8.333333%;
|
4650 |
-
|
4651 |
-
|
4652 |
-
max-width: 8.333333%
|
4653 |
-
|
4654 |
-
|
4655 |
-
}
|
4656 |
-
|
4657 |
-
|
4658 |
-
|
4659 |
-
|
4660 |
-
|
4661 |
-
.col-lg-2 {
|
4662 |
-
|
4663 |
-
|
4664 |
-
-webkit-box-flex: 0;
|
4665 |
-
|
4666 |
-
|
4667 |
-
-ms-flex: 0 0 16.666667%;
|
4668 |
-
|
4669 |
-
|
4670 |
-
flex: 0 0 16.666667%;
|
4671 |
-
|
4672 |
-
|
4673 |
-
max-width: 16.666667%
|
4674 |
-
|
4675 |
-
|
4676 |
-
}
|
4677 |
-
|
4678 |
-
|
4679 |
-
|
4680 |
-
|
4681 |
-
|
4682 |
-
.col-lg-3 {
|
4683 |
-
|
4684 |
-
|
4685 |
-
-webkit-box-flex: 0;
|
4686 |
-
|
4687 |
-
|
4688 |
-
-ms-flex: 0 0 25%;
|
4689 |
-
|
4690 |
-
|
4691 |
-
flex: 0 0 25%;
|
4692 |
-
|
4693 |
-
|
4694 |
-
max-width: 25%
|
4695 |
-
|
4696 |
-
|
4697 |
-
}
|
4698 |
-
|
4699 |
-
|
4700 |
-
|
4701 |
-
|
4702 |
-
|
4703 |
-
.col-lg-4 {
|
4704 |
-
|
4705 |
-
|
4706 |
-
-webkit-box-flex: 0;
|
4707 |
-
|
4708 |
-
|
4709 |
-
-ms-flex: 0 0 33.333333%;
|
4710 |
-
|
4711 |
-
|
4712 |
-
flex: 0 0 33.333333%;
|
4713 |
-
|
4714 |
-
|
4715 |
-
max-width: 33.333333%
|
4716 |
-
|
4717 |
-
|
4718 |
-
}
|
4719 |
-
|
4720 |
-
|
4721 |
-
|
4722 |
-
|
4723 |
-
|
4724 |
-
.col-lg-5 {
|
4725 |
-
|
4726 |
-
|
4727 |
-
-webkit-box-flex: 0;
|
4728 |
-
|
4729 |
-
|
4730 |
-
-ms-flex: 0 0 41.666667%;
|
4731 |
-
|
4732 |
-
|
4733 |
-
flex: 0 0 41.666667%;
|
4734 |
-
|
4735 |
-
|
4736 |
-
max-width: 41.666667%
|
4737 |
-
|
4738 |
-
|
4739 |
-
}
|
4740 |
-
|
4741 |
-
|
4742 |
-
|
4743 |
-
|
4744 |
-
|
4745 |
-
.col-lg-6 {
|
4746 |
-
|
4747 |
-
|
4748 |
-
-webkit-box-flex: 0;
|
4749 |
-
|
4750 |
-
|
4751 |
-
-ms-flex: 0 0 50%;
|
4752 |
-
|
4753 |
-
|
4754 |
-
flex: 0 0 50%;
|
4755 |
-
|
4756 |
-
|
4757 |
-
max-width: 50%
|
4758 |
-
|
4759 |
-
|
4760 |
-
}
|
4761 |
-
|
4762 |
-
|
4763 |
-
|
4764 |
-
|
4765 |
-
|
4766 |
-
.col-lg-7 {
|
4767 |
-
|
4768 |
-
|
4769 |
-
-webkit-box-flex: 0;
|
4770 |
-
|
4771 |
-
|
4772 |
-
-ms-flex: 0 0 58.333333%;
|
4773 |
-
|
4774 |
-
|
4775 |
-
flex: 0 0 58.333333%;
|
4776 |
-
|
4777 |
-
|
4778 |
-
max-width: 58.333333%
|
4779 |
-
|
4780 |
-
|
4781 |
-
}
|
4782 |
-
|
4783 |
-
|
4784 |
-
|
4785 |
-
|
4786 |
-
|
4787 |
-
.col-lg-8 {
|
4788 |
-
|
4789 |
-
|
4790 |
-
-webkit-box-flex: 0;
|
4791 |
-
|
4792 |
-
|
4793 |
-
-ms-flex: 0 0 66.666667%;
|
4794 |
-
|
4795 |
-
|
4796 |
-
flex: 0 0 66.666667%;
|
4797 |
-
|
4798 |
-
|
4799 |
-
max-width: 66.666667%
|
4800 |
-
|
4801 |
-
|
4802 |
-
}
|
4803 |
-
|
4804 |
-
|
4805 |
-
|
4806 |
-
|
4807 |
-
|
4808 |
-
.col-lg-9 {
|
4809 |
-
|
4810 |
-
|
4811 |
-
-webkit-box-flex: 0;
|
4812 |
-
|
4813 |
-
|
4814 |
-
-ms-flex: 0 0 75%;
|
4815 |
-
|
4816 |
-
|
4817 |
-
flex: 0 0 75%;
|
4818 |
-
|
4819 |
-
|
4820 |
-
max-width: 75%
|
4821 |
-
|
4822 |
-
|
4823 |
-
}
|
4824 |
-
|
4825 |
-
|
4826 |
-
|
4827 |
-
|
4828 |
-
|
4829 |
-
.col-lg-10 {
|
4830 |
-
|
4831 |
-
|
4832 |
-
-webkit-box-flex: 0;
|
4833 |
-
|
4834 |
-
|
4835 |
-
-ms-flex: 0 0 83.333333%;
|
4836 |
-
|
4837 |
-
|
4838 |
-
flex: 0 0 83.333333%;
|
4839 |
-
|
4840 |
-
|
4841 |
-
max-width: 83.333333%
|
4842 |
-
|
4843 |
-
|
4844 |
-
}
|
4845 |
-
|
4846 |
-
|
4847 |
-
|
4848 |
-
|
4849 |
-
|
4850 |
-
.col-lg-11 {
|
4851 |
-
|
4852 |
-
|
4853 |
-
-webkit-box-flex: 0;
|
4854 |
-
|
4855 |
-
|
4856 |
-
-ms-flex: 0 0 91.666667%;
|
4857 |
-
|
4858 |
-
|
4859 |
-
flex: 0 0 91.666667%;
|
4860 |
-
|
4861 |
-
|
4862 |
-
max-width: 91.666667%
|
4863 |
-
|
4864 |
-
|
4865 |
-
}
|
4866 |
-
|
4867 |
-
|
4868 |
-
|
4869 |
-
|
4870 |
-
|
4871 |
-
.col-lg-12 {
|
4872 |
-
|
4873 |
-
|
4874 |
-
-webkit-box-flex: 0;
|
4875 |
-
|
4876 |
-
|
4877 |
-
-ms-flex: 0 0 100%;
|
4878 |
-
|
4879 |
-
|
4880 |
-
flex: 0 0 100%;
|
4881 |
-
|
4882 |
-
|
4883 |
-
max-width: 100%
|
4884 |
-
|
4885 |
-
|
4886 |
-
}
|
4887 |
-
|
4888 |
-
|
4889 |
-
|
4890 |
-
|
4891 |
-
|
4892 |
-
.order-lg-first {
|
4893 |
-
|
4894 |
-
|
4895 |
-
-webkit-box-ordinal-group: 0;
|
4896 |
-
|
4897 |
-
|
4898 |
-
-ms-flex-order: -1;
|
4899 |
-
|
4900 |
-
|
4901 |
-
order: -1
|
4902 |
-
|
4903 |
-
|
4904 |
-
}
|
4905 |
-
|
4906 |
-
|
4907 |
-
|
4908 |
-
|
4909 |
-
|
4910 |
-
.order-lg-last {
|
4911 |
-
|
4912 |
-
|
4913 |
-
-webkit-box-ordinal-group: 14;
|
4914 |
-
|
4915 |
-
|
4916 |
-
-ms-flex-order: 13;
|
4917 |
-
|
4918 |
-
|
4919 |
-
order: 13
|
4920 |
-
|
4921 |
-
|
4922 |
-
}
|
4923 |
-
|
4924 |
-
|
4925 |
-
|
4926 |
-
|
4927 |
-
|
4928 |
-
.order-lg-0 {
|
4929 |
-
|
4930 |
-
|
4931 |
-
-webkit-box-ordinal-group: 1;
|
4932 |
-
|
4933 |
-
|
4934 |
-
-ms-flex-order: 0;
|
4935 |
-
|
4936 |
-
|
4937 |
-
order: 0
|
4938 |
-
|
4939 |
-
|
4940 |
-
}
|
4941 |
-
|
4942 |
-
|
4943 |
-
|
4944 |
-
|
4945 |
-
|
4946 |
-
.order-lg-1 {
|
4947 |
-
|
4948 |
-
|
4949 |
-
-webkit-box-ordinal-group: 2;
|
4950 |
-
|
4951 |
-
|
4952 |
-
-ms-flex-order: 1;
|
4953 |
-
|
4954 |
-
|
4955 |
-
order: 1
|
4956 |
-
|
4957 |
-
|
4958 |
-
}
|
4959 |
-
|
4960 |
-
|
4961 |
-
|
4962 |
-
|
4963 |
-
|
4964 |
-
.order-lg-2 {
|
4965 |
-
|
4966 |
-
|
4967 |
-
-webkit-box-ordinal-group: 3;
|
4968 |
-
|
4969 |
-
|
4970 |
-
-ms-flex-order: 2;
|
4971 |
-
|
4972 |
-
|
4973 |
-
order: 2
|
4974 |
-
|
4975 |
-
|
4976 |
-
}
|
4977 |
-
|
4978 |
-
|
4979 |
-
|
4980 |
-
|
4981 |
-
|
4982 |
-
.order-lg-3 {
|
4983 |
-
|
4984 |
-
|
4985 |
-
-webkit-box-ordinal-group: 4;
|
4986 |
-
|
4987 |
-
|
4988 |
-
-ms-flex-order: 3;
|
4989 |
-
|
4990 |
-
|
4991 |
-
order: 3
|
4992 |
-
|
4993 |
-
|
4994 |
-
}
|
4995 |
-
|
4996 |
-
|
4997 |
-
|
4998 |
-
|
4999 |
-
|
5000 |
-
.order-lg-4 {
|
5001 |
-
|
5002 |
-
|
5003 |
-
-webkit-box-ordinal-group: 5;
|
5004 |
-
|
5005 |
-
|
5006 |
-
-ms-flex-order: 4;
|
5007 |
-
|
5008 |
-
|
5009 |
-
order: 4
|
5010 |
-
|
5011 |
-
|
5012 |
-
}
|
5013 |
-
|
5014 |
-
|
5015 |
-
|
5016 |
-
|
5017 |
-
|
5018 |
-
.order-lg-5 {
|
5019 |
-
|
5020 |
-
|
5021 |
-
-webkit-box-ordinal-group: 6;
|
5022 |
-
|
5023 |
-
|
5024 |
-
-ms-flex-order: 5;
|
5025 |
-
|
5026 |
-
|
5027 |
-
order: 5
|
5028 |
-
|
5029 |
-
|
5030 |
-
}
|
5031 |
-
|
5032 |
-
|
5033 |
-
|
5034 |
-
|
5035 |
-
|
5036 |
-
.order-lg-6 {
|
5037 |
-
|
5038 |
-
|
5039 |
-
-webkit-box-ordinal-group: 7;
|
5040 |
-
|
5041 |
-
|
5042 |
-
-ms-flex-order: 6;
|
5043 |
-
|
5044 |
-
|
5045 |
-
order: 6
|
5046 |
-
|
5047 |
-
|
5048 |
-
}
|
5049 |
-
|
5050 |
-
|
5051 |
-
|
5052 |
-
|
5053 |
-
|
5054 |
-
.order-lg-7 {
|
5055 |
-
|
5056 |
-
|
5057 |
-
-webkit-box-ordinal-group: 8;
|
5058 |
-
|
5059 |
-
|
5060 |
-
-ms-flex-order: 7;
|
5061 |
-
|
5062 |
-
|
5063 |
-
order: 7
|
5064 |
-
|
5065 |
-
|
5066 |
-
}
|
5067 |
-
|
5068 |
-
|
5069 |
-
|
5070 |
-
|
5071 |
-
|
5072 |
-
.order-lg-8 {
|
5073 |
-
|
5074 |
-
|
5075 |
-
-webkit-box-ordinal-group: 9;
|
5076 |
-
|
5077 |
-
|
5078 |
-
-ms-flex-order: 8;
|
5079 |
-
|
5080 |
-
|
5081 |
-
order: 8
|
5082 |
-
|
5083 |
-
|
5084 |
-
}
|
5085 |
-
|
5086 |
-
|
5087 |
-
|
5088 |
-
|
5089 |
-
|
5090 |
-
.order-lg-9 {
|
5091 |
-
|
5092 |
-
|
5093 |
-
-webkit-box-ordinal-group: 10;
|
5094 |
-
|
5095 |
-
|
5096 |
-
-ms-flex-order: 9;
|
5097 |
-
|
5098 |
-
|
5099 |
-
order: 9
|
5100 |
-
|
5101 |
-
|
5102 |
-
}
|
5103 |
-
|
5104 |
-
|
5105 |
-
|
5106 |
-
|
5107 |
-
|
5108 |
-
.order-lg-10 {
|
5109 |
-
|
5110 |
-
|
5111 |
-
-webkit-box-ordinal-group: 11;
|
5112 |
-
|
5113 |
-
|
5114 |
-
-ms-flex-order: 10;
|
5115 |
-
|
5116 |
-
|
5117 |
-
order: 10
|
5118 |
-
|
5119 |
-
|
5120 |
-
}
|
5121 |
-
|
5122 |
-
|
5123 |
-
|
5124 |
-
|
5125 |
-
|
5126 |
-
.order-lg-11 {
|
5127 |
-
|
5128 |
-
|
5129 |
-
-webkit-box-ordinal-group: 12;
|
5130 |
-
|
5131 |
-
|
5132 |
-
-ms-flex-order: 11;
|
5133 |
-
|
5134 |
-
|
5135 |
-
order: 11
|
5136 |
-
|
5137 |
-
|
5138 |
-
}
|
5139 |
-
|
5140 |
-
|
5141 |
-
|
5142 |
-
|
5143 |
-
|
5144 |
-
.order-lg-12 {
|
5145 |
-
|
5146 |
-
|
5147 |
-
-webkit-box-ordinal-group: 13;
|
5148 |
-
|
5149 |
-
|
5150 |
-
-ms-flex-order: 12;
|
5151 |
-
|
5152 |
-
|
5153 |
-
order: 12
|
5154 |
-
|
5155 |
-
|
5156 |
-
}
|
5157 |
-
|
5158 |
-
|
5159 |
-
|
5160 |
-
|
5161 |
-
|
5162 |
-
.offset-lg-0 {
|
5163 |
-
|
5164 |
-
|
5165 |
-
margin-left: 0
|
5166 |
-
|
5167 |
-
|
5168 |
-
}
|
5169 |
-
|
5170 |
-
|
5171 |
-
|
5172 |
-
|
5173 |
-
|
5174 |
-
.offset-lg-1 {
|
5175 |
-
|
5176 |
-
|
5177 |
-
margin-left: 8.333333%
|
5178 |
-
|
5179 |
-
|
5180 |
-
}
|
5181 |
-
|
5182 |
-
|
5183 |
-
|
5184 |
-
|
5185 |
-
|
5186 |
-
.offset-lg-2 {
|
5187 |
-
|
5188 |
-
|
5189 |
-
margin-left: 16.666667%
|
5190 |
-
|
5191 |
-
|
5192 |
-
}
|
5193 |
-
|
5194 |
-
|
5195 |
-
|
5196 |
-
|
5197 |
-
|
5198 |
-
.offset-lg-3 {
|
5199 |
-
|
5200 |
-
|
5201 |
-
margin-left: 25%
|
5202 |
-
|
5203 |
-
|
5204 |
-
}
|
5205 |
-
|
5206 |
-
|
5207 |
-
|
5208 |
-
|
5209 |
-
|
5210 |
-
.offset-lg-4 {
|
5211 |
-
|
5212 |
-
|
5213 |
-
margin-left: 33.333333%
|
5214 |
-
|
5215 |
-
|
5216 |
-
}
|
5217 |
-
|
5218 |
-
|
5219 |
-
|
5220 |
-
|
5221 |
-
|
5222 |
-
.offset-lg-5 {
|
5223 |
-
|
5224 |
-
|
5225 |
-
margin-left: 41.666667%
|
5226 |
-
|
5227 |
-
|
5228 |
-
}
|
5229 |
-
|
5230 |
-
|
5231 |
-
|
5232 |
-
|
5233 |
-
|
5234 |
-
.offset-lg-6 {
|
5235 |
-
|
5236 |
-
|
5237 |
-
margin-left: 50%
|
5238 |
-
|
5239 |
-
|
5240 |
-
}
|
5241 |
-
|
5242 |
-
|
5243 |
-
|
5244 |
-
|
5245 |
-
|
5246 |
-
.offset-lg-7 {
|
5247 |
-
|
5248 |
-
|
5249 |
-
margin-left: 58.333333%
|
5250 |
-
|
5251 |
-
|
5252 |
-
}
|
5253 |
-
|
5254 |
-
|
5255 |
-
|
5256 |
-
|
5257 |
-
|
5258 |
-
.offset-lg-8 {
|
5259 |
-
|
5260 |
-
|
5261 |
-
margin-left: 66.666667%
|
5262 |
-
|
5263 |
-
|
5264 |
-
}
|
5265 |
-
|
5266 |
-
|
5267 |
-
|
5268 |
-
|
5269 |
-
|
5270 |
-
.offset-lg-9 {
|
5271 |
-
|
5272 |
-
|
5273 |
-
margin-left: 75%
|
5274 |
-
|
5275 |
-
|
5276 |
-
}
|
5277 |
-
|
5278 |
-
|
5279 |
-
|
5280 |
-
|
5281 |
-
|
5282 |
-
.offset-lg-10 {
|
5283 |
-
|
5284 |
-
|
5285 |
-
margin-left: 83.333333%
|
5286 |
-
|
5287 |
-
|
5288 |
-
}
|
5289 |
-
|
5290 |
-
|
5291 |
-
|
5292 |
-
|
5293 |
-
|
5294 |
-
.offset-lg-11 {
|
5295 |
-
|
5296 |
-
|
5297 |
-
margin-left: 91.666667%
|
5298 |
-
|
5299 |
-
|
5300 |
-
}
|
5301 |
-
|
5302 |
-
|
5303 |
-
}
|
5304 |
-
|
5305 |
-
|
5306 |
-
|
5307 |
-
|
5308 |
-
|
5309 |
-
@media (min-width: 1200px) {
|
5310 |
-
|
5311 |
-
|
5312 |
-
.col-xl {
|
5313 |
-
|
5314 |
-
|
5315 |
-
-ms-flex-preferred-size: 0;
|
5316 |
-
|
5317 |
-
|
5318 |
-
flex-basis: 0;
|
5319 |
-
|
5320 |
-
|
5321 |
-
-webkit-box-flex: 1;
|
5322 |
-
|
5323 |
-
|
5324 |
-
-ms-flex-positive: 1;
|
5325 |
-
|
5326 |
-
|
5327 |
-
flex-grow: 1;
|
5328 |
-
|
5329 |
-
|
5330 |
-
max-width: 100%
|
5331 |
-
|
5332 |
-
|
5333 |
-
}
|
5334 |
-
|
5335 |
-
|
5336 |
-
|
5337 |
-
|
5338 |
-
|
5339 |
-
.col-xl-auto {
|
5340 |
-
|
5341 |
-
|
5342 |
-
-webkit-box-flex: 0;
|
5343 |
-
|
5344 |
-
|
5345 |
-
-ms-flex: 0 0 auto;
|
5346 |
-
|
5347 |
-
|
5348 |
-
flex: 0 0 auto;
|
5349 |
-
|
5350 |
-
|
5351 |
-
width: auto;
|
5352 |
-
|
5353 |
-
|
5354 |
-
max-width: none
|
5355 |
-
|
5356 |
-
|
5357 |
-
}
|
5358 |
-
|
5359 |
-
|
5360 |
-
|
5361 |
-
|
5362 |
-
|
5363 |
-
.col-xl-1 {
|
5364 |
-
|
5365 |
-
|
5366 |
-
-webkit-box-flex: 0;
|
5367 |
-
|
5368 |
-
|
5369 |
-
-ms-flex: 0 0 8.333333%;
|
5370 |
-
|
5371 |
-
|
5372 |
-
flex: 0 0 8.333333%;
|
5373 |
-
|
5374 |
-
|
5375 |
-
max-width: 8.333333%
|
5376 |
-
|
5377 |
-
|
5378 |
-
}
|
5379 |
-
|
5380 |
-
|
5381 |
-
|
5382 |
-
|
5383 |
-
|
5384 |
-
.col-xl-2 {
|
5385 |
-
|
5386 |
-
|
5387 |
-
-webkit-box-flex: 0;
|
5388 |
-
|
5389 |
-
|
5390 |
-
-ms-flex: 0 0 16.666667%;
|
5391 |
-
|
5392 |
-
|
5393 |
-
flex: 0 0 16.666667%;
|
5394 |
-
|
5395 |
-
|
5396 |
-
max-width: 16.666667%
|
5397 |
-
|
5398 |
-
|
5399 |
-
}
|
5400 |
-
|
5401 |
-
|
5402 |
-
|
5403 |
-
|
5404 |
-
|
5405 |
-
.col-xl-3 {
|
5406 |
-
|
5407 |
-
|
5408 |
-
-webkit-box-flex: 0;
|
5409 |
-
|
5410 |
-
|
5411 |
-
-ms-flex: 0 0 25%;
|
5412 |
-
|
5413 |
-
|
5414 |
-
flex: 0 0 25%;
|
5415 |
-
|
5416 |
-
|
5417 |
-
max-width: 25%
|
5418 |
-
|
5419 |
-
|
5420 |
-
}
|
5421 |
-
|
5422 |
-
|
5423 |
-
|
5424 |
-
|
5425 |
-
|
5426 |
-
.col-xl-4 {
|
5427 |
-
|
5428 |
-
|
5429 |
-
-webkit-box-flex: 0;
|
5430 |
-
|
5431 |
-
|
5432 |
-
-ms-flex: 0 0 33.333333%;
|
5433 |
-
|
5434 |
-
|
5435 |
-
flex: 0 0 33.333333%;
|
5436 |
-
|
5437 |
-
|
5438 |
-
max-width: 33.333333%
|
5439 |
-
|
5440 |
-
|
5441 |
-
}
|
5442 |
-
|
5443 |
-
|
5444 |
-
|
5445 |
-
|
5446 |
-
|
5447 |
-
.col-xl-5 {
|
5448 |
-
|
5449 |
-
|
5450 |
-
-webkit-box-flex: 0;
|
5451 |
-
|
5452 |
-
|
5453 |
-
-ms-flex: 0 0 41.666667%;
|
5454 |
-
|
5455 |
-
|
5456 |
-
flex: 0 0 41.666667%;
|
5457 |
-
|
5458 |
-
|
5459 |
-
max-width: 41.666667%
|
5460 |
-
|
5461 |
-
|
5462 |
-
}
|
5463 |
-
|
5464 |
-
|
5465 |
-
|
5466 |
-
|
5467 |
-
|
5468 |
-
.col-xl-6 {
|
5469 |
-
|
5470 |
-
|
5471 |
-
-webkit-box-flex: 0;
|
5472 |
-
|
5473 |
-
|
5474 |
-
-ms-flex: 0 0 50%;
|
5475 |
-
|
5476 |
-
|
5477 |
-
flex: 0 0 50%;
|
5478 |
-
|
5479 |
-
|
5480 |
-
max-width: 50%
|
5481 |
-
|
5482 |
-
|
5483 |
-
}
|
5484 |
-
|
5485 |
-
|
5486 |
-
|
5487 |
-
|
5488 |
-
|
5489 |
-
.col-xl-7 {
|
5490 |
-
|
5491 |
-
|
5492 |
-
-webkit-box-flex: 0;
|
5493 |
-
|
5494 |
-
|
5495 |
-
-ms-flex: 0 0 58.333333%;
|
5496 |
-
|
5497 |
-
|
5498 |
-
flex: 0 0 58.333333%;
|
5499 |
-
|
5500 |
-
|
5501 |
-
max-width: 58.333333%
|
5502 |
-
|
5503 |
-
|
5504 |
-
}
|
5505 |
-
|
5506 |
-
|
5507 |
-
|
5508 |
-
|
5509 |
-
|
5510 |
-
.col-xl-8 {
|
5511 |
-
|
5512 |
-
|
5513 |
-
-webkit-box-flex: 0;
|
5514 |
-
|
5515 |
-
|
5516 |
-
-ms-flex: 0 0 66.666667%;
|
5517 |
-
|
5518 |
-
|
5519 |
-
flex: 0 0 66.666667%;
|
5520 |
-
|
5521 |
-
|
5522 |
-
max-width: 66.666667%
|
5523 |
-
|
5524 |
-
|
5525 |
-
}
|
5526 |
-
|
5527 |
-
|
5528 |
-
|
5529 |
-
|
5530 |
-
|
5531 |
-
.col-xl-9 {
|
5532 |
-
|
5533 |
-
|
5534 |
-
-webkit-box-flex: 0;
|
5535 |
-
|
5536 |
-
|
5537 |
-
-ms-flex: 0 0 75%;
|
5538 |
-
|
5539 |
-
|
5540 |
-
flex: 0 0 75%;
|
5541 |
-
|
5542 |
-
|
5543 |
-
max-width: 75%
|
5544 |
-
|
5545 |
-
|
5546 |
-
}
|
5547 |
-
|
5548 |
-
|
5549 |
-
|
5550 |
-
|
5551 |
-
|
5552 |
-
.col-xl-10 {
|
5553 |
-
|
5554 |
-
|
5555 |
-
-webkit-box-flex: 0;
|
5556 |
-
|
5557 |
-
|
5558 |
-
-ms-flex: 0 0 83.333333%;
|
5559 |
-
|
5560 |
-
|
5561 |
-
flex: 0 0 83.333333%;
|
5562 |
-
|
5563 |
-
|
5564 |
-
max-width: 83.333333%
|
5565 |
-
|
5566 |
-
|
5567 |
-
}
|
5568 |
-
|
5569 |
-
|
5570 |
-
|
5571 |
-
|
5572 |
-
|
5573 |
-
.col-xl-11 {
|
5574 |
-
|
5575 |
-
|
5576 |
-
-webkit-box-flex: 0;
|
5577 |
-
|
5578 |
-
|
5579 |
-
-ms-flex: 0 0 91.666667%;
|
5580 |
-
|
5581 |
-
|
5582 |
-
flex: 0 0 91.666667%;
|
5583 |
-
|
5584 |
-
|
5585 |
-
max-width: 91.666667%
|
5586 |
-
|
5587 |
-
|
5588 |
-
}
|
5589 |
-
|
5590 |
-
|
5591 |
-
|
5592 |
-
|
5593 |
-
|
5594 |
-
.col-xl-12 {
|
5595 |
-
|
5596 |
-
|
5597 |
-
-webkit-box-flex: 0;
|
5598 |
-
|
5599 |
-
|
5600 |
-
-ms-flex: 0 0 100%;
|
5601 |
-
|
5602 |
-
|
5603 |
-
flex: 0 0 100%;
|
5604 |
-
|
5605 |
-
|
5606 |
-
max-width: 100%
|
5607 |
-
|
5608 |
-
|
5609 |
-
}
|
5610 |
-
|
5611 |
-
|
5612 |
-
}
|
5613 |
-
|
5614 |
-
|
5615 |
-
|
5616 |
-
|
5617 |
-
|
5618 |
-
|
5619 |
-
|
5620 |
-
|
5621 |
-
.mo_otp_token, .mo2f_user_email, .mo2f_IR_phone,
|
5622 |
-
|
5623 |
-
|
5624 |
-
.mo_IR_otp_token, .mo2f_IR_GA_token, .mo2f_IR_phone_OTP {
|
5625 |
-
|
5626 |
-
|
5627 |
-
color:#212F3C;
|
5628 |
-
|
5629 |
-
|
5630 |
-
border:none;
|
5631 |
-
|
5632 |
-
|
5633 |
-
display:block;
|
5634 |
-
|
5635 |
-
|
5636 |
-
border-bottom-style: solid;
|
5637 |
-
|
5638 |
-
|
5639 |
-
border-width: 2px;
|
5640 |
-
|
5641 |
-
|
5642 |
-
border-color:#D0D3D4;
|
5643 |
-
|
5644 |
-
|
5645 |
-
border-radius:0px;
|
5646 |
-
|
5647 |
-
|
5648 |
-
outline:none;
|
5649 |
-
|
5650 |
-
|
5651 |
-
padding:5px;
|
5652 |
-
|
5653 |
-
|
5654 |
-
}
|
5655 |
-
|
5656 |
-
|
5657 |
-
|
5658 |
-
|
5659 |
-
|
5660 |
-
.mo_otp_token {
|
5661 |
-
|
5662 |
-
|
5663 |
-
font-size:15px;
|
5664 |
-
|
5665 |
-
|
5666 |
-
width:130px;
|
5667 |
-
|
5668 |
-
|
5669 |
-
text-align:center;
|
5670 |
-
|
5671 |
-
|
5672 |
-
}
|
5673 |
-
|
5674 |
-
|
5675 |
-
|
5676 |
-
|
5677 |
-
|
5678 |
-
.mo2f_user_email{
|
5679 |
-
|
5680 |
-
|
5681 |
-
font-size:16px;
|
5682 |
-
|
5683 |
-
|
5684 |
-
width:220px;
|
5685 |
-
|
5686 |
-
|
5687 |
-
text-align:center;
|
5688 |
-
|
5689 |
-
|
5690 |
-
}
|
5691 |
-
|
5692 |
-
|
5693 |
-
|
5694 |
-
|
5695 |
-
|
5696 |
-
.mo2f_IR_phone{
|
5697 |
-
|
5698 |
-
|
5699 |
-
font-size:14px;
|
5700 |
-
|
5701 |
-
|
5702 |
-
width:170px !important;
|
5703 |
-
|
5704 |
-
|
5705 |
-
}
|
5706 |
-
|
5707 |
-
|
5708 |
-
|
5709 |
-
|
5710 |
-
|
5711 |
-
.mo2f_IR_GA_token{
|
5712 |
-
|
5713 |
-
|
5714 |
-
font-size:15px;
|
5715 |
-
|
5716 |
-
|
5717 |
-
width:100px !important;
|
5718 |
-
|
5719 |
-
|
5720 |
-
}
|
5721 |
-
|
5722 |
-
|
5723 |
-
|
5724 |
-
|
5725 |
-
|
5726 |
-
.mo2f_IR_phone_OTP{
|
5727 |
-
|
5728 |
-
|
5729 |
-
font-size:15px;
|
5730 |
-
|
5731 |
-
|
5732 |
-
width:150px !important;
|
5733 |
-
|
5734 |
-
|
5735 |
}
|
1 |
+
.mo2f_carousel {
|
2 |
+
|
3 |
+
|
4 |
+
position: relative;
|
5 |
+
|
6 |
+
|
7 |
+
padding-bottom: 18px !important;
|
8 |
+
|
9 |
+
|
10 |
+
|
11 |
+
|
12 |
+
|
13 |
+
}
|
14 |
+
|
15 |
+
|
16 |
+
|
17 |
+
|
18 |
+
|
19 |
+
.mo2f_carousel-inner {
|
20 |
+
|
21 |
+
|
22 |
+
position: relative;
|
23 |
+
|
24 |
+
|
25 |
+
width: 100%;
|
26 |
+
|
27 |
+
|
28 |
+
overflow: hidden;
|
29 |
+
|
30 |
+
|
31 |
+
|
32 |
+
|
33 |
+
|
34 |
+
}
|
35 |
+
|
36 |
+
|
37 |
+
|
38 |
+
|
39 |
+
|
40 |
+
.mo2f_carousel-inner > .item {
|
41 |
+
|
42 |
+
|
43 |
+
position: relative;
|
44 |
+
|
45 |
+
|
46 |
+
display: none;
|
47 |
+
|
48 |
+
|
49 |
+
-webkit-transition: .6s ease-in-out left;
|
50 |
+
|
51 |
+
|
52 |
+
-o-transition: .6s ease-in-out left;
|
53 |
+
|
54 |
+
|
55 |
+
transition: .6s ease-in-out left;
|
56 |
+
|
57 |
+
|
58 |
+
height: 300px !important;
|
59 |
+
|
60 |
+
|
61 |
+
|
62 |
+
|
63 |
+
|
64 |
+
}
|
65 |
+
|
66 |
+
|
67 |
+
|
68 |
+
|
69 |
+
|
70 |
+
.mo2f_carousel-inner > .item > img, .mo2f_carousel-inner > .item > a > img {
|
71 |
+
|
72 |
+
|
73 |
+
line-height: 1;
|
74 |
+
|
75 |
+
|
76 |
+
|
77 |
+
|
78 |
+
|
79 |
+
max-height: 300px !important;
|
80 |
+
|
81 |
+
|
82 |
+
max-width: 600px !important;
|
83 |
+
|
84 |
+
|
85 |
+
}
|
86 |
+
|
87 |
+
|
88 |
+
|
89 |
+
|
90 |
+
|
91 |
+
@media all and (transform-3d) , ( -webkit-transform-3d ) {
|
92 |
+
|
93 |
+
|
94 |
+
.mo2f_carousel-inner > .item {
|
95 |
+
|
96 |
+
|
97 |
+
-webkit-transition: -webkit-transform .6s ease-in-out;
|
98 |
+
|
99 |
+
|
100 |
+
-o-transition: -o-transform .6s ease-in-out;
|
101 |
+
|
102 |
+
|
103 |
+
transition: transform .6s ease-in-out;
|
104 |
+
|
105 |
+
|
106 |
+
-webkit-backface-visibility: hidden;
|
107 |
+
|
108 |
+
|
109 |
+
backface-visibility: hidden;
|
110 |
+
|
111 |
+
|
112 |
+
-webkit-perspective: 1000;
|
113 |
+
|
114 |
+
|
115 |
+
perspective: 1000
|
116 |
+
|
117 |
+
|
118 |
+
}
|
119 |
+
|
120 |
+
|
121 |
+
|
122 |
+
|
123 |
+
|
124 |
+
.mo2f_carousel-inner > .item.next, .mo2f_carousel-inner > .item.active.right {
|
125 |
+
|
126 |
+
|
127 |
+
left: 0;
|
128 |
+
|
129 |
+
|
130 |
+
-webkit-transform: translate3d(100%, 0, 0);
|
131 |
+
|
132 |
+
|
133 |
+
transform: translate3d(100%, 0, 0)
|
134 |
+
|
135 |
+
|
136 |
+
}
|
137 |
+
|
138 |
+
|
139 |
+
|
140 |
+
|
141 |
+
|
142 |
+
.mo2f_carousel-inner > .item.prev, .mo2f_carousel-inner > .item.active.left {
|
143 |
+
|
144 |
+
|
145 |
+
left: 0;
|
146 |
+
|
147 |
+
|
148 |
+
-webkit-transform: translate3d(-100%, 0, 0);
|
149 |
+
|
150 |
+
|
151 |
+
transform: translate3d(-100%, 0, 0)
|
152 |
+
|
153 |
+
|
154 |
+
}
|
155 |
+
|
156 |
+
|
157 |
+
|
158 |
+
|
159 |
+
|
160 |
+
.mo2f_carousel-inner > .item.next.left, .mo2f_carousel-inner > .item.prev.right, .mo2f_carousel-inner > .item.active {
|
161 |
+
|
162 |
+
|
163 |
+
left: 0;
|
164 |
+
|
165 |
+
|
166 |
+
-webkit-transform: translate3d(0, 0, 0);
|
167 |
+
|
168 |
+
|
169 |
+
transform: translate3d(0, 0, 0)
|
170 |
+
|
171 |
+
|
172 |
+
}
|
173 |
+
|
174 |
+
|
175 |
+
}
|
176 |
+
|
177 |
+
|
178 |
+
|
179 |
+
|
180 |
+
|
181 |
+
.mo2f_carousel-inner > .active, .mo2f_carousel-inner > .next, .mo2f_carousel-inner > .prev {
|
182 |
+
|
183 |
+
|
184 |
+
display: block
|
185 |
+
|
186 |
+
|
187 |
+
}
|
188 |
+
|
189 |
+
|
190 |
+
|
191 |
+
|
192 |
+
|
193 |
+
.mo2f_carousel-inner > .active {
|
194 |
+
|
195 |
+
|
196 |
+
left: 0
|
197 |
+
|
198 |
+
|
199 |
+
}
|
200 |
+
|
201 |
+
|
202 |
+
|
203 |
+
|
204 |
+
|
205 |
+
.mo2f_carousel-inner > .next, .mo2f_carousel-inner > .prev {
|
206 |
+
|
207 |
+
|
208 |
+
position: absolute;
|
209 |
+
|
210 |
+
|
211 |
+
top: 0;
|
212 |
+
|
213 |
+
|
214 |
+
width: 100%
|
215 |
+
|
216 |
+
|
217 |
+
}
|
218 |
+
|
219 |
+
|
220 |
+
|
221 |
+
|
222 |
+
|
223 |
+
.mo2f_carousel-inner > .next {
|
224 |
+
|
225 |
+
|
226 |
+
left: 100%
|
227 |
+
|
228 |
+
|
229 |
+
}
|
230 |
+
|
231 |
+
|
232 |
+
|
233 |
+
|
234 |
+
|
235 |
+
.mo2f_carousel-inner > .prev {
|
236 |
+
|
237 |
+
|
238 |
+
left: -100%
|
239 |
+
|
240 |
+
|
241 |
+
}
|
242 |
+
|
243 |
+
|
244 |
+
|
245 |
+
|
246 |
+
|
247 |
+
.mo2f_carousel-inner > .next.left, .mo2f_carousel-inner > .prev.right {
|
248 |
+
|
249 |
+
|
250 |
+
left: 0
|
251 |
+
|
252 |
+
|
253 |
+
}
|
254 |
+
|
255 |
+
|
256 |
+
|
257 |
+
|
258 |
+
|
259 |
+
.mo2f_carousel-inner > .active.left {
|
260 |
+
|
261 |
+
|
262 |
+
left: -100%
|
263 |
+
|
264 |
+
|
265 |
+
}
|
266 |
+
|
267 |
+
|
268 |
+
|
269 |
+
|
270 |
+
|
271 |
+
.mo2f_carousel-inner > .active.right {
|
272 |
+
|
273 |
+
|
274 |
+
left: 100%
|
275 |
+
|
276 |
+
|
277 |
+
}
|
278 |
+
|
279 |
+
|
280 |
+
|
281 |
+
|
282 |
+
|
283 |
+
.mo2f_carousel-control {
|
284 |
+
|
285 |
+
|
286 |
+
position: absolute;
|
287 |
+
|
288 |
+
|
289 |
+
top: 0;
|
290 |
+
|
291 |
+
|
292 |
+
bottom: 0;
|
293 |
+
|
294 |
+
|
295 |
+
left: 0;
|
296 |
+
|
297 |
+
|
298 |
+
width: 15%;
|
299 |
+
|
300 |
+
|
301 |
+
font-size: 20px;
|
302 |
+
|
303 |
+
|
304 |
+
color: #fff;
|
305 |
+
|
306 |
+
|
307 |
+
text-align: center;
|
308 |
+
|
309 |
+
|
310 |
+
text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
|
311 |
+
|
312 |
+
|
313 |
+
filter: alpha(opacity=50);
|
314 |
+
|
315 |
+
|
316 |
+
opacity: .5
|
317 |
+
|
318 |
+
|
319 |
+
}
|
320 |
+
|
321 |
+
|
322 |
+
|
323 |
+
|
324 |
+
|
325 |
+
.mo2f_carousel-control.left {
|
326 |
+
|
327 |
+
|
328 |
+
background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0,
|
329 |
+
|
330 |
+
|
331 |
+
rgba(0, 0, 0, .0001) 100%);
|
332 |
+
|
333 |
+
|
334 |
+
background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0,
|
335 |
+
|
336 |
+
|
337 |
+
rgba(0, 0, 0, .0001) 100%);
|
338 |
+
|
339 |
+
|
340 |
+
background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)),
|
341 |
+
|
342 |
+
|
343 |
+
to(rgba(0, 0, 0, .0001)));
|
344 |
+
|
345 |
+
|
346 |
+
background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0,
|
347 |
+
|
348 |
+
|
349 |
+
rgba(0, 0, 0, .0001) 100%);
|
350 |
+
|
351 |
+
|
352 |
+
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000',
|
353 |
+
|
354 |
+
|
355 |
+
endColorstr='#00000000', GradientType=1);
|
356 |
+
|
357 |
+
|
358 |
+
background-repeat: repeat-x
|
359 |
+
|
360 |
+
|
361 |
+
}
|
362 |
+
|
363 |
+
|
364 |
+
|
365 |
+
|
366 |
+
|
367 |
+
.mo2f_carousel-control.right {
|
368 |
+
|
369 |
+
|
370 |
+
right: 0;
|
371 |
+
|
372 |
+
|
373 |
+
left: auto;
|
374 |
+
|
375 |
+
|
376 |
+
background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0,
|
377 |
+
|
378 |
+
|
379 |
+
rgba(0, 0, 0, .5) 100%);
|
380 |
+
|
381 |
+
|
382 |
+
background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0,
|
383 |
+
|
384 |
+
|
385 |
+
rgba(0, 0, 0, .5) 100%);
|
386 |
+
|
387 |
+
|
388 |
+
background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)),
|
389 |
+
|
390 |
+
|
391 |
+
to(rgba(0, 0, 0, .5)));
|
392 |
+
|
393 |
+
|
394 |
+
background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0,
|
395 |
+
|
396 |
+
|
397 |
+
rgba(0, 0, 0, .5) 100%);
|
398 |
+
|
399 |
+
|
400 |
+
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',
|
401 |
+
|
402 |
+
|
403 |
+
endColorstr='#80000000', GradientType=1);
|
404 |
+
|
405 |
+
|
406 |
+
background-repeat: repeat-x
|
407 |
+
|
408 |
+
|
409 |
+
}
|
410 |
+
|
411 |
+
|
412 |
+
|
413 |
+
|
414 |
+
|
415 |
+
.mo2f_carousel-control:hover, .mo2f_carousel-control:focus {
|
416 |
+
|
417 |
+
|
418 |
+
color: #fff;
|
419 |
+
|
420 |
+
|
421 |
+
text-decoration: none;
|
422 |
+
|
423 |
+
|
424 |
+
filter: alpha(opacity=90);
|
425 |
+
|
426 |
+
|
427 |
+
outline: 0;
|
428 |
+
|
429 |
+
|
430 |
+
opacity: .9
|
431 |
+
|
432 |
+
|
433 |
+
}
|
434 |
+
|
435 |
+
|
436 |
+
|
437 |
+
|
438 |
+
|
439 |
+
.mo2f_carousel-control .icon-prev, .mo2f_carousel-control .icon-next, .mo2f_carousel-control .glyphicon-chevron-left, .mo2f_carousel-control .glyphicon-chevron-right {
|
440 |
+
|
441 |
+
|
442 |
+
position: absolute;
|
443 |
+
|
444 |
+
|
445 |
+
top: 50%;
|
446 |
+
|
447 |
+
|
448 |
+
z-index: 5;
|
449 |
+
|
450 |
+
|
451 |
+
display: inline-block
|
452 |
+
|
453 |
+
|
454 |
+
}
|
455 |
+
|
456 |
+
|
457 |
+
|
458 |
+
|
459 |
+
|
460 |
+
.mo2f_carousel-control .icon-prev, .mo2f_carousel-control .glyphicon-chevron-left {
|
461 |
+
|
462 |
+
|
463 |
+
left: 50%;
|
464 |
+
|
465 |
+
|
466 |
+
margin-left: -10px
|
467 |
+
|
468 |
+
|
469 |
+
}
|
470 |
+
|
471 |
+
|
472 |
+
|
473 |
+
|
474 |
+
|
475 |
+
.mo2f_carousel-control .icon-next, .mo2f_carousel-control .glyphicon-chevron-right {
|
476 |
+
|
477 |
+
|
478 |
+
right: 50%;
|
479 |
+
|
480 |
+
|
481 |
+
margin-right: -10px
|
482 |
+
|
483 |
+
|
484 |
+
}
|
485 |
+
|
486 |
+
|
487 |
+
|
488 |
+
|
489 |
+
|
490 |
+
.mo2f_carousel-control .icon-prev, .mo2f_carousel-control .icon-next {
|
491 |
+
|
492 |
+
|
493 |
+
width: 20px;
|
494 |
+
|
495 |
+
|
496 |
+
height: 20px;
|
497 |
+
|
498 |
+
|
499 |
+
margin-top: -10px;
|
500 |
+
|
501 |
+
|
502 |
+
font-family: serif
|
503 |
+
|
504 |
+
|
505 |
+
}
|
506 |
+
|
507 |
+
|
508 |
+
|
509 |
+
|
510 |
+
|
511 |
+
.mo2f_carousel-control .icon-prev:before {
|
512 |
+
|
513 |
+
|
514 |
+
content: '\2039'
|
515 |
+
|
516 |
+
|
517 |
+
}
|
518 |
+
|
519 |
+
|
520 |
+
|
521 |
+
|
522 |
+
|
523 |
+
.mo2f_carousel-control .icon-next:before {
|
524 |
+
|
525 |
+
|
526 |
+
content: '\203a'
|
527 |
+
|
528 |
+
|
529 |
+
}
|
530 |
+
|
531 |
+
|
532 |
+
|
533 |
+
|
534 |
+
|
535 |
+
.mo2f_carousel-indicators {
|
536 |
+
|
537 |
+
|
538 |
+
position: absolute;
|
539 |
+
|
540 |
+
|
541 |
+
bottom: -25px;
|
542 |
+
|
543 |
+
|
544 |
+
left: 50%;
|
545 |
+
|
546 |
+
|
547 |
+
z-index: 15;
|
548 |
+
|
549 |
+
|
550 |
+
width: 60%;
|
551 |
+
|
552 |
+
|
553 |
+
padding-left: 0;
|
554 |
+
|
555 |
+
|
556 |
+
margin-left: -30%;
|
557 |
+
|
558 |
+
|
559 |
+
text-align: center;
|
560 |
+
|
561 |
+
|
562 |
+
list-style: none
|
563 |
+
|
564 |
+
|
565 |
+
}
|
566 |
+
|
567 |
+
|
568 |
+
|
569 |
+
|
570 |
+
|
571 |
+
.mo2f_carousel-indicators li {
|
572 |
+
|
573 |
+
|
574 |
+
display: inline-block;
|
575 |
+
|
576 |
+
|
577 |
+
width: 10px;
|
578 |
+
|
579 |
+
|
580 |
+
height: 10px;
|
581 |
+
|
582 |
+
|
583 |
+
margin: 1px;
|
584 |
+
|
585 |
+
|
586 |
+
text-indent: -999px;
|
587 |
+
|
588 |
+
|
589 |
+
cursor: pointer;
|
590 |
+
|
591 |
+
|
592 |
+
background-color: #0 \9;
|
593 |
+
|
594 |
+
|
595 |
+
background-color: rgba(0, 0, 0, 0);
|
596 |
+
|
597 |
+
|
598 |
+
border: 1px solid #0073aa;
|
599 |
+
|
600 |
+
|
601 |
+
border-radius: 10px
|
602 |
+
|
603 |
+
|
604 |
+
}
|
605 |
+
|
606 |
+
|
607 |
+
|
608 |
+
|
609 |
+
|
610 |
+
.mo2f_carousel-indicators .active {
|
611 |
+
|
612 |
+
|
613 |
+
width: 12px;
|
614 |
+
|
615 |
+
|
616 |
+
height: 12px;
|
617 |
+
|
618 |
+
|
619 |
+
margin: 0;
|
620 |
+
|
621 |
+
|
622 |
+
background-color: #0073aa;
|
623 |
+
|
624 |
+
|
625 |
+
}
|
626 |
+
|
627 |
+
|
628 |
+
|
629 |
+
|
630 |
+
|
631 |
+
.mo2f_carousel-caption {
|
632 |
+
|
633 |
+
|
634 |
+
position: absolute;
|
635 |
+
|
636 |
+
|
637 |
+
right: 15%;
|
638 |
+
|
639 |
+
|
640 |
+
bottom: 20px;
|
641 |
+
|
642 |
+
|
643 |
+
left: 15%;
|
644 |
+
|
645 |
+
|
646 |
+
z-index: 10;
|
647 |
+
|
648 |
+
|
649 |
+
padding-top: 20px;
|
650 |
+
|
651 |
+
|
652 |
+
padding-bottom: 20px;
|
653 |
+
|
654 |
+
|
655 |
+
color: #fff;
|
656 |
+
|
657 |
+
|
658 |
+
text-align: center;
|
659 |
+
|
660 |
+
|
661 |
+
text-shadow: 0 1px 2px rgba(0, 0, 0, .6)
|
662 |
+
|
663 |
+
|
664 |
+
}
|
665 |
+
|
666 |
+
|
667 |
+
|
668 |
+
|
669 |
+
|
670 |
+
.mo2f_carousel-caption .btn {
|
671 |
+
|
672 |
+
|
673 |
+
text-shadow: none
|
674 |
+
|
675 |
+
|
676 |
+
}
|
677 |
+
|
678 |
+
|
679 |
+
|
680 |
+
|
681 |
+
|
682 |
+
@media screen and (min-width: 768px) {
|
683 |
+
|
684 |
+
|
685 |
+
.mo2f_carousel-control .glyphicon-chevron-left, .mo2f_carousel-control .glyphicon-chevron-right, .mo2f_carousel-control .icon-prev, .mo2f_carousel-control .icon-next {
|
686 |
+
|
687 |
+
|
688 |
+
width: 30px;
|
689 |
+
|
690 |
+
|
691 |
+
height: 30px;
|
692 |
+
|
693 |
+
|
694 |
+
margin-top: -15px;
|
695 |
+
|
696 |
+
|
697 |
+
font-size: 30px
|
698 |
+
|
699 |
+
|
700 |
+
}
|
701 |
+
|
702 |
+
|
703 |
+
|
704 |
+
|
705 |
+
|
706 |
+
.mo2f_carousel-control .glyphicon-chevron-left, .mo2f_carousel-control .icon-prev {
|
707 |
+
|
708 |
+
|
709 |
+
margin-left: -15px
|
710 |
+
|
711 |
+
|
712 |
+
}
|
713 |
+
|
714 |
+
|
715 |
+
|
716 |
+
|
717 |
+
|
718 |
+
.mo2f_carousel-control .glyphicon-chevron-right, .mo2f_carousel-control .icon-next {
|
719 |
+
|
720 |
+
|
721 |
+
margin-right: -15px
|
722 |
+
|
723 |
+
|
724 |
+
}
|
725 |
+
|
726 |
+
|
727 |
+
|
728 |
+
|
729 |
+
|
730 |
+
.mo2f_carousel-caption {
|
731 |
+
|
732 |
+
|
733 |
+
right: 20%;
|
734 |
+
|
735 |
+
|
736 |
+
left: 20%;
|
737 |
+
|
738 |
+
|
739 |
+
padding-bottom: 30px
|
740 |
+
|
741 |
+
|
742 |
+
}
|
743 |
+
|
744 |
+
|
745 |
+
|
746 |
+
|
747 |
+
|
748 |
+
.mo2f_carousel-indicators {
|
749 |
+
|
750 |
+
|
751 |
+
bottom: -14px
|
752 |
+
|
753 |
+
|
754 |
+
}
|
755 |
+
|
756 |
+
|
757 |
+
}
|
758 |
+
|
759 |
+
|
760 |
+
|
761 |
+
|
762 |
+
|
763 |
+
.hidden {
|
764 |
+
|
765 |
+
|
766 |
+
display: none;
|
767 |
+
|
768 |
+
|
769 |
+
}
|
770 |
+
|
771 |
+
|
772 |
+
|
773 |
+
|
774 |
+
|
775 |
+
.float-right {
|
776 |
+
|
777 |
+
|
778 |
+
text-align: right;
|
779 |
+
|
780 |
+
|
781 |
+
}
|
782 |
+
|
783 |
+
|
784 |
+
|
785 |
+
|
786 |
+
|
787 |
+
.mo2f_collapse {
|
788 |
+
|
789 |
+
|
790 |
+
display: none;
|
791 |
+
|
792 |
+
|
793 |
+
/ / visibility: hidden;
|
794 |
+
|
795 |
+
|
796 |
+
font-size: 14px !important;
|
797 |
+
|
798 |
+
|
799 |
+
|
800 |
+
|
801 |
+
|
802 |
+
}
|
803 |
+
|
804 |
+
|
805 |
+
|
806 |
+
|
807 |
+
|
808 |
+
.mo2f_collapse.in {
|
809 |
+
|
810 |
+
|
811 |
+
display: block;
|
812 |
+
|
813 |
+
|
814 |
+
visibility: visible;
|
815 |
+
|
816 |
+
|
817 |
+
|
818 |
+
|
819 |
+
|
820 |
+
}
|
821 |
+
|
822 |
+
|
823 |
+
|
824 |
+
|
825 |
+
|
826 |
+
.mo2f_collapsing {
|
827 |
+
|
828 |
+
|
829 |
+
position: relative;
|
830 |
+
|
831 |
+
|
832 |
+
font-size: 14px !important;
|
833 |
+
|
834 |
+
|
835 |
+
height: 0;
|
836 |
+
|
837 |
+
|
838 |
+
overflow: hidden;
|
839 |
+
|
840 |
+
|
841 |
+
-webkit-transition-timing-function: ease;
|
842 |
+
|
843 |
+
|
844 |
+
-o-transition-timing-function: ease;
|
845 |
+
|
846 |
+
|
847 |
+
transition-timing-function: ease;
|
848 |
+
|
849 |
+
|
850 |
+
-webkit-transition-duration: .20s;
|
851 |
+
|
852 |
+
|
853 |
+
-o-transition-duration: .20s;
|
854 |
+
|
855 |
+
|
856 |
+
transition-duration: .20s;
|
857 |
+
|
858 |
+
|
859 |
+
-webkit-transition-property: height, visibility;
|
860 |
+
|
861 |
+
|
862 |
+
-o-transition-property: height, visibility;
|
863 |
+
|
864 |
+
|
865 |
+
transition-property: height, visibility
|
866 |
+
|
867 |
+
|
868 |
+
}
|
869 |
+
|
870 |
+
|
871 |
+
|
872 |
+
|
873 |
+
|
874 |
+
.mo2f_thumbnail {
|
875 |
+
|
876 |
+
|
877 |
+
width: 315px;
|
878 |
+
|
879 |
+
|
880 |
+
margin-bottom: 10px;
|
881 |
+
|
882 |
+
|
883 |
+
position: relative;
|
884 |
+
|
885 |
+
|
886 |
+
background-color: #fff;
|
887 |
+
|
888 |
+
|
889 |
+
border: 1px solid #ddd;
|
890 |
+
|
891 |
+
|
892 |
+
-webkit-transition: border .2s ease-in-out;
|
893 |
+
|
894 |
+
|
895 |
+
-o-transition: border .2s ease-in-out;
|
896 |
+
|
897 |
+
|
898 |
+
transition: border .2s ease-in-out
|
899 |
+
|
900 |
+
|
901 |
+
}
|
902 |
+
|
903 |
+
|
904 |
+
|
905 |
+
|
906 |
+
|
907 |
+
.mo2f_thumbnail > img, .mo2f_thumbnail a > img {
|
908 |
+
|
909 |
+
|
910 |
+
margin-right: auto;
|
911 |
+
|
912 |
+
|
913 |
+
margin-left: auto
|
914 |
+
|
915 |
+
|
916 |
+
}
|
917 |
+
|
918 |
+
|
919 |
+
|
920 |
+
|
921 |
+
|
922 |
+
a.mo2f_thumbnail:hover, a.mo2f_thumbnail:focus, a.mo2f_thumbnail.active {
|
923 |
+
|
924 |
+
|
925 |
+
border-color: #337ab7
|
926 |
+
|
927 |
+
|
928 |
+
}
|
929 |
+
|
930 |
+
|
931 |
+
|
932 |
+
|
933 |
+
|
934 |
+
.mo2f_thumbnail .caption {
|
935 |
+
|
936 |
+
|
937 |
+
padding: 9px;
|
938 |
+
|
939 |
+
|
940 |
+
color: #333
|
941 |
+
|
942 |
+
|
943 |
+
}
|
944 |
+
|
945 |
+
|
946 |
+
|
947 |
+
|
948 |
+
|
949 |
+
.mo2f_thumbnail label {
|
950 |
+
|
951 |
+
|
952 |
+
font-weight: bold;
|
953 |
+
|
954 |
+
|
955 |
+
|
956 |
+
|
957 |
+
|
958 |
+
}
|
959 |
+
|
960 |
+
|
961 |
+
|
962 |
+
|
963 |
+
|
964 |
+
.mo2f_close {
|
965 |
+
|
966 |
+
|
967 |
+
float: right;
|
968 |
+
|
969 |
+
|
970 |
+
font-size: 21px;
|
971 |
+
|
972 |
+
|
973 |
+
font-weight: 700;
|
974 |
+
|
975 |
+
|
976 |
+
line-height: 1;
|
977 |
+
|
978 |
+
|
979 |
+
color: #000;
|
980 |
+
|
981 |
+
|
982 |
+
text-shadow: 0 1px 0 #fff;
|
983 |
+
|
984 |
+
|
985 |
+
filter: alpha(opacity=20);
|
986 |
+
|
987 |
+
|
988 |
+
opacity: .2
|
989 |
+
|
990 |
+
|
991 |
+
}
|
992 |
+
|
993 |
+
|
994 |
+
|
995 |
+
|
996 |
+
|
997 |
+
.mo2f_close:hover, .mo2f_close:focus {
|
998 |
+
|
999 |
+
|
1000 |
+
color: #000;
|
1001 |
+
|
1002 |
+
|
1003 |
+
text-decoration: none;
|
1004 |
+
|
1005 |
+
|
1006 |
+
cursor: pointer;
|
1007 |
+
|
1008 |
+
|
1009 |
+
filter: alpha(opacity=50);
|
1010 |
+
|
1011 |
+
|
1012 |
+
opacity: .5
|
1013 |
+
|
1014 |
+
|
1015 |
+
}
|
1016 |
+
|
1017 |
+
|
1018 |
+
|
1019 |
+
|
1020 |
+
|
1021 |
+
button.mo2f_close {
|
1022 |
+
|
1023 |
+
|
1024 |
+
-webkit-appearance: none;
|
1025 |
+
|
1026 |
+
|
1027 |
+
padding: 0;
|
1028 |
+
|
1029 |
+
|
1030 |
+
cursor: pointer;
|
1031 |
+
|
1032 |
+
|
1033 |
+
background: 0 0;
|
1034 |
+
|
1035 |
+
|
1036 |
+
border: 0
|
1037 |
+
|
1038 |
+
|
1039 |
+
}
|
1040 |
+
|
1041 |
+
|
1042 |
+
|
1043 |
+
|
1044 |
+
|
1045 |
+
.mo2f_modal-open {
|
1046 |
+
|
1047 |
+
|
1048 |
+
overflow: hidden !important;
|
1049 |
+
|
1050 |
+
|
1051 |
+
position: fixed !important;
|
1052 |
+
|
1053 |
+
|
1054 |
+
width: 100% !important;
|
1055 |
+
|
1056 |
+
|
1057 |
+
|
1058 |
+
|
1059 |
+
|
1060 |
+
}
|
1061 |
+
|
1062 |
+
|
1063 |
+
|
1064 |
+
|
1065 |
+
|
1066 |
+
.mo2f_modal {
|
1067 |
+
|
1068 |
+
|
1069 |
+
position: fixed !important;
|
1070 |
+
|
1071 |
+
|
1072 |
+
top: 0;
|
1073 |
+
|
1074 |
+
|
1075 |
+
right: 0;
|
1076 |
+
|
1077 |
+
|
1078 |
+
bottom: 0;
|
1079 |
+
|
1080 |
+
|
1081 |
+
left: 0;
|
1082 |
+
|
1083 |
+
|
1084 |
+
z-index: 100000 !important;
|
1085 |
+
|
1086 |
+
|
1087 |
+
|
1088 |
+
|
1089 |
+
|
1090 |
+
overflow: hidden !important;
|
1091 |
+
|
1092 |
+
|
1093 |
+
-webkit-overflow-scrolling: touch;
|
1094 |
+
|
1095 |
+
|
1096 |
+
outline: 0;
|
1097 |
+
|
1098 |
+
|
1099 |
+
|
1100 |
+
|
1101 |
+
|
1102 |
+
}
|
1103 |
+
|
1104 |
+
|
1105 |
+
|
1106 |
+
|
1107 |
+
|
1108 |
+
.mo2f_modal_inner {
|
1109 |
+
|
1110 |
+
|
1111 |
+
display: none;
|
1112 |
+
|
1113 |
+
|
1114 |
+
}
|
1115 |
+
|
1116 |
+
|
1117 |
+
|
1118 |
+
|
1119 |
+
|
1120 |
+
.mo2f_modal.fade .mo2f_modal-dialog {
|
1121 |
+
|
1122 |
+
|
1123 |
+
-webkit-transition: -webkit-transform .3s ease-out;
|
1124 |
+
|
1125 |
+
|
1126 |
+
-o-transition: -o-transform .3s ease-out;
|
1127 |
+
|
1128 |
+
|
1129 |
+
transition: transform .3s ease-out;
|
1130 |
+
|
1131 |
+
|
1132 |
+
-webkit-transform: translate(0, -25%);
|
1133 |
+
|
1134 |
+
|
1135 |
+
-ms-transform: translate(0, -25%);
|
1136 |
+
|
1137 |
+
|
1138 |
+
-o-transform: translate(0, -25%);
|
1139 |
+
|
1140 |
+
|
1141 |
+
transform: translate(0, -25%)
|
1142 |
+
|
1143 |
+
|
1144 |
+
}
|
1145 |
+
|
1146 |
+
|
1147 |
+
|
1148 |
+
|
1149 |
+
|
1150 |
+
.mo2f_modal.in .mo2f_modal-dialog {
|
1151 |
+
|
1152 |
+
|
1153 |
+
-webkit-transform: translate(0, 80px) !important;
|
1154 |
+
|
1155 |
+
|
1156 |
+
-ms-transform: translate(0, 80px) !important;
|
1157 |
+
|
1158 |
+
|
1159 |
+
-o-transform: translate(0, 80px) !important;
|
1160 |
+
|
1161 |
+
|
1162 |
+
transform: translate(0, 80px) !important;
|
1163 |
+
|
1164 |
+
|
1165 |
+
|
1166 |
+
|
1167 |
+
|
1168 |
+
}
|
1169 |
+
|
1170 |
+
|
1171 |
+
|
1172 |
+
|
1173 |
+
|
1174 |
+
.mo2f_modal-open .mo2f_modal {
|
1175 |
+
|
1176 |
+
|
1177 |
+
overflow-x: hidden;
|
1178 |
+
|
1179 |
+
|
1180 |
+
overflow-y: hidden;
|
1181 |
+
|
1182 |
+
|
1183 |
+
}
|
1184 |
+
|
1185 |
+
|
1186 |
+
|
1187 |
+
|
1188 |
+
|
1189 |
+
.mo2f_modal-dialog {
|
1190 |
+
|
1191 |
+
|
1192 |
+
position: relative;
|
1193 |
+
|
1194 |
+
|
1195 |
+
width: auto;
|
1196 |
+
|
1197 |
+
|
1198 |
+
margin: 10px;
|
1199 |
+
|
1200 |
+
|
1201 |
+
|
1202 |
+
|
1203 |
+
|
1204 |
+
}
|
1205 |
+
|
1206 |
+
|
1207 |
+
|
1208 |
+
|
1209 |
+
|
1210 |
+
.login mo_customer_validation-modal-content {
|
1211 |
+
|
1212 |
+
|
1213 |
+
position: relative !important;
|
1214 |
+
|
1215 |
+
|
1216 |
+
background-color: #fff !important;
|
1217 |
+
|
1218 |
+
|
1219 |
+
-webkit-background-clip: padding-box !important;
|
1220 |
+
|
1221 |
+
|
1222 |
+
background-clip: padding-box !important;
|
1223 |
+
|
1224 |
+
|
1225 |
+
border: 1px solid #999 !important;
|
1226 |
+
|
1227 |
+
|
1228 |
+
border: 1px solid rgba(0, 0, 0, .2) !important;
|
1229 |
+
|
1230 |
+
|
1231 |
+
border-radius: 6px !important;
|
1232 |
+
|
1233 |
+
|
1234 |
+
outline: 0 !important;
|
1235 |
+
|
1236 |
+
|
1237 |
+
|
1238 |
+
|
1239 |
+
|
1240 |
+
-webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5) !important;
|
1241 |
+
|
1242 |
+
|
1243 |
+
box-shadow: 0 3px 9px rgba(0, 0, 0, .5) !important;
|
1244 |
+
|
1245 |
+
|
1246 |
+
}
|
1247 |
+
|
1248 |
+
|
1249 |
+
|
1250 |
+
|
1251 |
+
|
1252 |
+
.mo2f-modal-backdrop {
|
1253 |
+
|
1254 |
+
|
1255 |
+
position: absolute;
|
1256 |
+
|
1257 |
+
|
1258 |
+
top: 0;
|
1259 |
+
|
1260 |
+
|
1261 |
+
right: 0;
|
1262 |
+
|
1263 |
+
|
1264 |
+
left: 0;
|
1265 |
+
|
1266 |
+
|
1267 |
+
background-color: #f1f1f1 !important;
|
1268 |
+
|
1269 |
+
|
1270 |
+
filter: alpha(opacity=50) !important;
|
1271 |
+
|
1272 |
+
|
1273 |
+
opacity: 0.8 !important;
|
1274 |
+
|
1275 |
+
|
1276 |
+
height: 100% !important;
|
1277 |
+
|
1278 |
+
|
1279 |
+
}
|
1280 |
+
|
1281 |
+
|
1282 |
+
|
1283 |
+
|
1284 |
+
|
1285 |
+
#smsAlertModal {
|
1286 |
+
|
1287 |
+
|
1288 |
+
background-color: black !important;
|
1289 |
+
|
1290 |
+
|
1291 |
+
opacity: 0.8 !important;
|
1292 |
+
|
1293 |
+
|
1294 |
+
filter: alpha(opacity=50) !important;
|
1295 |
+
|
1296 |
+
|
1297 |
+
}
|
1298 |
+
|
1299 |
+
|
1300 |
+
|
1301 |
+
|
1302 |
+
|
1303 |
+
.mo2f_modal-header {
|
1304 |
+
|
1305 |
+
|
1306 |
+
min-height: 14px;
|
1307 |
+
|
1308 |
+
|
1309 |
+
padding: 10px;
|
1310 |
+
|
1311 |
+
|
1312 |
+
border-bottom: 1px solid #e5e5e5
|
1313 |
+
|
1314 |
+
|
1315 |
+
}
|
1316 |
+
|
1317 |
+
|
1318 |
+
|
1319 |
+
|
1320 |
+
|
1321 |
+
.mo2f_modal-title {
|
1322 |
+
|
1323 |
+
|
1324 |
+
margin: 0 !important;
|
1325 |
+
|
1326 |
+
|
1327 |
+
line-height: 1.0 !important;
|
1328 |
+
|
1329 |
+
|
1330 |
+
}
|
1331 |
+
|
1332 |
+
|
1333 |
+
|
1334 |
+
|
1335 |
+
|
1336 |
+
.mo2f_modal-body {
|
1337 |
+
|
1338 |
+
|
1339 |
+
/ / width: 96 % !important;
|
1340 |
+
|
1341 |
+
|
1342 |
+
position: relative !important;
|
1343 |
+
|
1344 |
+
|
1345 |
+
padding: 15px !important;
|
1346 |
+
|
1347 |
+
|
1348 |
+
overflow-y: auto !important;
|
1349 |
+
|
1350 |
+
|
1351 |
+
max-height: 550px !important;
|
1352 |
+
|
1353 |
+
|
1354 |
+
}
|
1355 |
+
|
1356 |
+
|
1357 |
+
|
1358 |
+
|
1359 |
+
|
1360 |
+
.mo2f_modal-footer {
|
1361 |
+
|
1362 |
+
|
1363 |
+
padding: 15px;
|
1364 |
+
|
1365 |
+
|
1366 |
+
text-align: right;
|
1367 |
+
|
1368 |
+
|
1369 |
+
border-top: 1px solid #e5e5e5
|
1370 |
+
|
1371 |
+
|
1372 |
+
}
|
1373 |
+
|
1374 |
+
|
1375 |
+
|
1376 |
+
|
1377 |
+
|
1378 |
+
.mo2f_modal-footer .btn + .btn {
|
1379 |
+
|
1380 |
+
|
1381 |
+
margin-bottom: 0;
|
1382 |
+
|
1383 |
+
|
1384 |
+
margin-left: 5px
|
1385 |
+
|
1386 |
+
|
1387 |
+
}
|
1388 |
+
|
1389 |
+
|
1390 |
+
|
1391 |
+
|
1392 |
+
|
1393 |
+
.mo2f_modal-footer .btn-group .btn + .btn {
|
1394 |
+
|
1395 |
+
|
1396 |
+
margin-left: -1px
|
1397 |
+
|
1398 |
+
|
1399 |
+
}
|
1400 |
+
|
1401 |
+
|
1402 |
+
|
1403 |
+
|
1404 |
+
|
1405 |
+
.mo2f_modal-footer .btn-block + .btn-block {
|
1406 |
+
|
1407 |
+
|
1408 |
+
margin-left: 0
|
1409 |
+
|
1410 |
+
|
1411 |
+
}
|
1412 |
+
|
1413 |
+
|
1414 |
+
|
1415 |
+
|
1416 |
+
|
1417 |
+
.mo2f_modal-scrollbar-measure {
|
1418 |
+
|
1419 |
+
|
1420 |
+
position: absolute;
|
1421 |
+
|
1422 |
+
|
1423 |
+
top: -9999px;
|
1424 |
+
|
1425 |
+
|
1426 |
+
width: 50px;
|
1427 |
+
|
1428 |
+
|
1429 |
+
height: 50px;
|
1430 |
+
|
1431 |
+
|
1432 |
+
overflow: scroll
|
1433 |
+
|
1434 |
+
|
1435 |
+
}
|
1436 |
+
|
1437 |
+
|
1438 |
+
|
1439 |
+
|
1440 |
+
|
1441 |
+
@media ( min-width: 768px) {
|
1442 |
+
|
1443 |
+
|
1444 |
+
.mo2f_modal-dialog {
|
1445 |
+
|
1446 |
+
width: auto;
|
1447 |
+
margin: 0px auto
|
1448 |
+
|
1449 |
+
|
1450 |
+
}
|
1451 |
+
|
1452 |
+
|
1453 |
+
|
1454 |
+
|
1455 |
+
|
1456 |
+
.login mo_customer_validation-modal-content {
|
1457 |
+
|
1458 |
+
|
1459 |
+
-webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
|
1460 |
+
|
1461 |
+
|
1462 |
+
box-shadow: 0 5px 15px rgba(0, 0, 0, .5)
|
1463 |
+
|
1464 |
+
|
1465 |
+
}
|
1466 |
+
|
1467 |
+
|
1468 |
+
|
1469 |
+
|
1470 |
+
|
1471 |
+
.mo2f_modal-sm {
|
1472 |
+
|
1473 |
+
|
1474 |
+
width: 300px
|
1475 |
+
|
1476 |
+
|
1477 |
+
}
|
1478 |
+
|
1479 |
+
|
1480 |
+
|
1481 |
+
|
1482 |
+
|
1483 |
+
.mo2f_modal-md {
|
1484 |
+
|
1485 |
+
|
1486 |
+
width: 550px
|
1487 |
+
|
1488 |
+
|
1489 |
+
}
|
1490 |
+
|
1491 |
+
|
1492 |
+
}
|
1493 |
+
|
1494 |
+
|
1495 |
+
|
1496 |
+
|
1497 |
+
|
1498 |
+
@media ( min-width: 992px) {
|
1499 |
+
|
1500 |
+
|
1501 |
+
.mo2f_modal-lg {
|
1502 |
+
|
1503 |
+
|
1504 |
+
width: 900px;
|
1505 |
+
|
1506 |
+
|
1507 |
+
}
|
1508 |
+
|
1509 |
+
|
1510 |
+
|
1511 |
+
|
1512 |
+
|
1513 |
+
.mo2f_modal-md {
|
1514 |
+
|
1515 |
+
|
1516 |
+
width: 550px
|
1517 |
+
|
1518 |
+
|
1519 |
+
}
|
1520 |
+
|
1521 |
+
|
1522 |
+
}
|
1523 |
+
|
1524 |
+
|
1525 |
+
|
1526 |
+
|
1527 |
+
|
1528 |
+
.center{
|
1529 |
+
|
1530 |
+
|
1531 |
+
|
1532 |
+
|
1533 |
+
|
1534 |
+
text-align: center !important;
|
1535 |
+
|
1536 |
+
|
1537 |
+
}
|
1538 |
+
|
1539 |
+
|
1540 |
+
|
1541 |
+
|
1542 |
+
|
1543 |
+
#otpMessage {
|
1544 |
+
|
1545 |
+
|
1546 |
+
border-radius: 1px;
|
1547 |
+
|
1548 |
+
|
1549 |
+
padding: 1px 5px;
|
1550 |
+
|
1551 |
+
|
1552 |
+
background: #f1f1f1;
|
1553 |
+
|
1554 |
+
|
1555 |
+
}
|
1556 |
+
|
1557 |
+
|
1558 |
+
|
1559 |
+
|
1560 |
+
|
1561 |
+
.mo2f_carousel-indicators {
|
1562 |
+
|
1563 |
+
|
1564 |
+
position: absolute;
|
1565 |
+
|
1566 |
+
|
1567 |
+
bottom: -20px;
|
1568 |
+
|
1569 |
+
|
1570 |
+
z-index: 15;
|
1571 |
+
|
1572 |
+
|
1573 |
+
width: 60%;
|
1574 |
+
|
1575 |
+
|
1576 |
+
list-style: none;
|
1577 |
+
|
1578 |
+
|
1579 |
+
text-align: center;
|
1580 |
+
|
1581 |
+
|
1582 |
+
}
|
1583 |
+
|
1584 |
+
|
1585 |
+
|
1586 |
+
|
1587 |
+
|
1588 |
+
.miniorange_kba_validate:hover, .miniorange_validate_otp:hover, .miniorange_login_forgotphone:hover,
|
1589 |
+
|
1590 |
+
|
1591 |
+
.miniorange_login_offline:hover, .miniorange_login_forgotphone:hover, .miniorange_otp_token_submit:hover, .miniorange_button:hover
|
1592 |
+
|
1593 |
+
|
1594 |
+
{
|
1595 |
+
|
1596 |
+
|
1597 |
+
background-color:#0073AA!important
|
1598 |
+
|
1599 |
+
|
1600 |
+
}
|
1601 |
+
|
1602 |
+
|
1603 |
+
|
1604 |
+
|
1605 |
+
|
1606 |
+
.miniorange_kba_validate, .miniorange_validate_otp, .miniorange_login_forgotphone,
|
1607 |
+
|
1608 |
+
|
1609 |
+
.miniorange_login_offline, .miniorange_login_forgotphone , .miniorange_otp_token_submit,
|
1610 |
+
|
1611 |
+
|
1612 |
+
.miniorange_button
|
1613 |
+
|
1614 |
+
|
1615 |
+
{
|
1616 |
+
|
1617 |
+
|
1618 |
+
background:#00A0D2!important;
|
1619 |
+
|
1620 |
+
|
1621 |
+
border-color:#0073AA!important;
|
1622 |
+
|
1623 |
+
|
1624 |
+
box-shadow:0 1px 0 rgba(120,200,230,.5) inset,0 1px 0 rgba(0,0,0,.15)!important;
|
1625 |
+
|
1626 |
+
|
1627 |
+
color:#FFF!important;
|
1628 |
+
|
1629 |
+
|
1630 |
+
text-decoration:none!important;
|
1631 |
+
|
1632 |
+
|
1633 |
+
cursor:pointer!important;
|
1634 |
+
|
1635 |
+
|
1636 |
+
border-width:1px!important;
|
1637 |
+
|
1638 |
+
|
1639 |
+
border-style:solid!important;
|
1640 |
+
|
1641 |
+
|
1642 |
+
border-radius:3px!important;
|
1643 |
+
|
1644 |
+
|
1645 |
+
white-space:nowrap!important;
|
1646 |
+
|
1647 |
+
|
1648 |
+
box-sizing:border-box!important;
|
1649 |
+
|
1650 |
+
|
1651 |
+
line-height:28px!important;
|
1652 |
+
|
1653 |
+
|
1654 |
+
padding:0 12px!important;
|
1655 |
+
|
1656 |
+
|
1657 |
+
font-size:13px!important;
|
1658 |
+
|
1659 |
+
|
1660 |
+
}
|
1661 |
+
|
1662 |
+
|
1663 |
+
|
1664 |
+
|
1665 |
+
|
1666 |
+
.mo_customer_validation-modal.fade .mo_customer_validation-modal-dialog {
|
1667 |
+
|
1668 |
+
|
1669 |
+
-webkit-transition: -webkit-transform .3s ease-out;
|
1670 |
+
|
1671 |
+
|
1672 |
+
-o-transition: -o-transform .3s ease-out;
|
1673 |
+
|
1674 |
+
|
1675 |
+
transition: transform .3s ease-out;
|
1676 |
+
|
1677 |
+
|
1678 |
+
-webkit-transform: translate(0, -25%);
|
1679 |
+
|
1680 |
+
|
1681 |
+
-ms-transform: translate(0, -25%);
|
1682 |
+
|
1683 |
+
|
1684 |
+
-o-transform: translate(0, -25%);
|
1685 |
+
|
1686 |
+
|
1687 |
+
transform: translate(0, -25%)
|
1688 |
+
|
1689 |
+
|
1690 |
+
}
|
1691 |
+
|
1692 |
+
|
1693 |
+
|
1694 |
+
|
1695 |
+
|
1696 |
+
.mo_customer_validation-modal.in .mo_customer_validation-modal-dialog {
|
1697 |
+
|
1698 |
+
|
1699 |
+
-webkit-transform: translate(0, 80px) !important;
|
1700 |
+
|
1701 |
+
|
1702 |
+
-ms-transform: translate(0, 80px) !important;
|
1703 |
+
|
1704 |
+
|
1705 |
+
-o-transform: translate(0, 80px) !important;
|
1706 |
+
|
1707 |
+
|
1708 |
+
transform: translate(0, 80px) !important
|
1709 |
+
|
1710 |
+
|
1711 |
+
}
|
1712 |
+
|
1713 |
+
|
1714 |
+
|
1715 |
+
|
1716 |
+
|
1717 |
+
.mo_customer_validation-modal-open .mo_customer_validation-modal {
|
1718 |
+
|
1719 |
+
|
1720 |
+
overflow-x: hidden;
|
1721 |
+
|
1722 |
+
|
1723 |
+
overflow-y: hidden
|
1724 |
+
|
1725 |
+
|
1726 |
+
}
|
1727 |
+
|
1728 |
+
|
1729 |
+
|
1730 |
+
|
1731 |
+
|
1732 |
+
.mo_customer_validation-modal-dialog {
|
1733 |
+
|
1734 |
+
|
1735 |
+
position: relative;
|
1736 |
+
|
1737 |
+
|
1738 |
+
width: auto;
|
1739 |
+
|
1740 |
+
|
1741 |
+
margin: 10px
|
1742 |
+
|
1743 |
+
|
1744 |
+
}
|
1745 |
+
|
1746 |
+
|
1747 |
+
|
1748 |
+
|
1749 |
+
|
1750 |
+
.mo_customer_validation-modal-content {
|
1751 |
+
|
1752 |
+
|
1753 |
+
position: relative;
|
1754 |
+
|
1755 |
+
|
1756 |
+
-webkit-background-clip: padding-box;
|
1757 |
+
|
1758 |
+
|
1759 |
+
border: 1px solid #999;
|
1760 |
+
|
1761 |
+
|
1762 |
+
border: 1px solid rgba(0, 0, 0, .2);
|
1763 |
+
|
1764 |
+
|
1765 |
+
outline: 0;
|
1766 |
+
|
1767 |
+
|
1768 |
+
margin-top: 8%;
|
1769 |
+
|
1770 |
+
|
1771 |
+
margin-left: 0;
|
1772 |
+
|
1773 |
+
|
1774 |
+
padding: 15px 20px 0;
|
1775 |
+
|
1776 |
+
|
1777 |
+
font-family: "Open Sans", sans-serif;
|
1778 |
+
|
1779 |
+
|
1780 |
+
|
1781 |
+
font-size: 14px;
|
1782 |
+
|
1783 |
+
|
1784 |
+
line-height: 1.4em;
|
1785 |
+
|
1786 |
+
|
1787 |
+
background: #FFF;
|
1788 |
+
|
1789 |
+
|
1790 |
+
box-shadow: 0 1px 3px rgba(0, 0, 0, .13)
|
1791 |
+
|
1792 |
+
|
1793 |
+
}
|
1794 |
+
|
1795 |
+
|
1796 |
+
|
1797 |
+
|
1798 |
+
|
1799 |
+
.mo_customer_validation-modal-backdrop {
|
1800 |
+
|
1801 |
+
|
1802 |
+
position: absolute;
|
1803 |
+
|
1804 |
+
|
1805 |
+
top: 0;
|
1806 |
+
|
1807 |
+
|
1808 |
+
right: 0;
|
1809 |
+
|
1810 |
+
|
1811 |
+
left: 0;
|
1812 |
+
|
1813 |
+
|
1814 |
+
background-color: #000 !important;
|
1815 |
+
|
1816 |
+
|
1817 |
+
filter: alpha(opacity=50) !important;
|
1818 |
+
|
1819 |
+
|
1820 |
+
opacity: .9 !important;
|
1821 |
+
|
1822 |
+
|
1823 |
+
height: 100% !important
|
1824 |
+
|
1825 |
+
|
1826 |
+
}
|
1827 |
+
|
1828 |
+
|
1829 |
+
|
1830 |
+
|
1831 |
+
|
1832 |
+
.mo_customer_validation-modal-header {
|
1833 |
+
|
1834 |
+
|
1835 |
+
min-height: 14px;
|
1836 |
+
|
1837 |
+
|
1838 |
+
padding: 10px 10px 20px;
|
1839 |
+
|
1840 |
+
|
1841 |
+
border-bottom: 1px solid #e5e5e5
|
1842 |
+
|
1843 |
+
|
1844 |
+
}
|
1845 |
+
|
1846 |
+
|
1847 |
+
|
1848 |
+
|
1849 |
+
|
1850 |
+
.mo_customer_validation-modal-title {
|
1851 |
+
|
1852 |
+
|
1853 |
+
margin: 0 !important;
|
1854 |
+
|
1855 |
+
|
1856 |
+
line-height: 1 !important
|
1857 |
+
|
1858 |
+
|
1859 |
+
}
|
1860 |
+
|
1861 |
+
|
1862 |
+
|
1863 |
+
|
1864 |
+
|
1865 |
+
.mo_customer_validation-modal-body {
|
1866 |
+
|
1867 |
+
|
1868 |
+
position: relative;
|
1869 |
+
|
1870 |
+
|
1871 |
+
padding: 5%;
|
1872 |
+
|
1873 |
+
|
1874 |
+
overflow: hidden !important;
|
1875 |
+
|
1876 |
+
|
1877 |
+
max-height: 550px !important
|
1878 |
+
|
1879 |
+
|
1880 |
+
}
|
1881 |
+
|
1882 |
+
|
1883 |
+
|
1884 |
+
|
1885 |
+
|
1886 |
+
.mo_customer_validation-modal-footer {
|
1887 |
+
|
1888 |
+
|
1889 |
+
padding: 15px;
|
1890 |
+
|
1891 |
+
|
1892 |
+
text-align: right;
|
1893 |
+
|
1894 |
+
|
1895 |
+
border-top: 1px solid #e5e5e5
|
1896 |
+
|
1897 |
+
|
1898 |
+
}
|
1899 |
+
|
1900 |
+
|
1901 |
+
|
1902 |
+
|
1903 |
+
|
1904 |
+
.mo_customer_validation-modal-footer .btn + .btn {
|
1905 |
+
|
1906 |
+
|
1907 |
+
margin-bottom: 0;
|
1908 |
+
|
1909 |
+
|
1910 |
+
margin-left: 5px
|
1911 |
+
|
1912 |
+
|
1913 |
+
}
|
1914 |
+
|
1915 |
+
|
1916 |
+
|
1917 |
+
|
1918 |
+
|
1919 |
+
.mo_customer_validation-modal-footer .btn-group .btn + .btn {
|
1920 |
+
|
1921 |
+
|
1922 |
+
margin-left: -1px
|
1923 |
+
|
1924 |
+
|
1925 |
+
}
|
1926 |
+
|
1927 |
+
|
1928 |
+
|
1929 |
+
|
1930 |
+
|
1931 |
+
.mo_customer_validation-modal-footer .btn-block + .btn-block {
|
1932 |
+
|
1933 |
+
|
1934 |
+
margin-left: 0
|
1935 |
+
|
1936 |
+
|
1937 |
+
}
|
1938 |
+
|
1939 |
+
|
1940 |
+
|
1941 |
+
|
1942 |
+
|
1943 |
+
.mo_customer_validation-modal-scrollbar-measure {
|
1944 |
+
|
1945 |
+
|
1946 |
+
position: absolute;
|
1947 |
+
|
1948 |
+
|
1949 |
+
top: -9999px;
|
1950 |
+
|
1951 |
+
|
1952 |
+
width: 50px;
|
1953 |
+
|
1954 |
+
|
1955 |
+
height: 50px;
|
1956 |
+
|
1957 |
+
|
1958 |
+
overflow: scroll
|
1959 |
+
|
1960 |
+
|
1961 |
+
}
|
1962 |
+
|
1963 |
+
|
1964 |
+
|
1965 |
+
|
1966 |
+
|
1967 |
+
@media (min-width: 768px) {
|
1968 |
+
|
1969 |
+
|
1970 |
+
.mo_customer_validation-modal-dialog {
|
1971 |
+
|
1972 |
+
|
1973 |
+
width: auto;
|
1974 |
+
|
1975 |
+
|
1976 |
+
margin: 0 auto
|
1977 |
+
|
1978 |
+
|
1979 |
+
}
|
1980 |
+
|
1981 |
+
|
1982 |
+
|
1983 |
+
|
1984 |
+
|
1985 |
+
.mo_customer_validation-modal-content {
|
1986 |
+
|
1987 |
+
|
1988 |
+
-webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
|
1989 |
+
|
1990 |
+
|
1991 |
+
box-shadow: 0 5px 15px rgba(0, 0, 0, .5)
|
1992 |
+
|
1993 |
+
|
1994 |
+
}
|
1995 |
+
|
1996 |
+
|
1997 |
+
|
1998 |
+
|
1999 |
+
|
2000 |
+
.mo_customer_validation-modal-sm {
|
2001 |
+
|
2002 |
+
|
2003 |
+
width: 300px
|
2004 |
+
|
2005 |
+
|
2006 |
+
}
|
2007 |
+
|
2008 |
+
|
2009 |
+
|
2010 |
+
|
2011 |
+
|
2012 |
+
.mo_customer_validation-modal-md {
|
2013 |
+
|
2014 |
+
|
2015 |
+
width: 532px
|
2016 |
+
|
2017 |
+
|
2018 |
+
}
|
2019 |
+
|
2020 |
+
|
2021 |
+
|
2022 |
+
|
2023 |
+
|
2024 |
+
.mo_customer_validation-modal-lg {
|
2025 |
+
|
2026 |
+
|
2027 |
+
width: 50%
|
2028 |
+
|
2029 |
+
|
2030 |
+
}
|
2031 |
+
|
2032 |
+
|
2033 |
+
}
|
2034 |
+
|
2035 |
+
|
2036 |
+
|
2037 |
+
|
2038 |
+
|
2039 |
+
@media (min-width: 992px) {
|
2040 |
+
|
2041 |
+
|
2042 |
+
.mo_customer_validation-modal-dialog {
|
2043 |
+
|
2044 |
+
|
2045 |
+
width: auto;
|
2046 |
+
|
2047 |
+
|
2048 |
+
margin: 0 auto
|
2049 |
+
|
2050 |
+
|
2051 |
+
}
|
2052 |
+
|
2053 |
+
|
2054 |
+
|
2055 |
+
|
2056 |
+
|
2057 |
+
.mo_customer_validation-modal-lg {
|
2058 |
+
|
2059 |
+
|
2060 |
+
width: 490px
|
2061 |
+
|
2062 |
+
|
2063 |
+
}
|
2064 |
+
|
2065 |
+
|
2066 |
+
|
2067 |
+
|
2068 |
+
|
2069 |
+
.mo_customer_validation-modal-md {
|
2070 |
+
|
2071 |
+
|
2072 |
+
width: 532px
|
2073 |
+
|
2074 |
+
|
2075 |
+
}
|
2076 |
+
|
2077 |
+
|
2078 |
+
}
|
2079 |
+
|
2080 |
+
|
2081 |
+
|
2082 |
+
|
2083 |
+
|
2084 |
+
.mo_customer_validation-textbox {
|
2085 |
+
|
2086 |
+
|
2087 |
+
background: #FBFBFB;
|
2088 |
+
|
2089 |
+
|
2090 |
+
font-family: "Open Sans", sans-serif;
|
2091 |
+
|
2092 |
+
|
2093 |
+
font-size: 24px;
|
2094 |
+
|
2095 |
+
|
2096 |
+
width: 100%;
|
2097 |
+
|
2098 |
+
|
2099 |
+
border: 1px solid #DDD;
|
2100 |
+
|
2101 |
+
|
2102 |
+
padding: 3px;
|
2103 |
+
|
2104 |
+
|
2105 |
+
margin: 2px 6px 16px 0
|
2106 |
+
|
2107 |
+
|
2108 |
+
}
|
2109 |
+
|
2110 |
+
|
2111 |
+
|
2112 |
+
|
2113 |
+
|
2114 |
+
.mo_customer_validation-textbox:focus {
|
2115 |
+
|
2116 |
+
|
2117 |
+
border-color: #5B9DD9;
|
2118 |
+
|
2119 |
+
|
2120 |
+
box-shadow: 0 0 2px rgba(30, 140, 190, .8)
|
2121 |
+
|
2122 |
+
|
2123 |
+
}
|
2124 |
+
|
2125 |
+
|
2126 |
+
|
2127 |
+
|
2128 |
+
|
2129 |
+
.button-primary,
|
2130 |
+
|
2131 |
+
|
2132 |
+
.button-secondary {
|
2133 |
+
|
2134 |
+
|
2135 |
+
background: #00A0D2;
|
2136 |
+
|
2137 |
+
|
2138 |
+
border-color: #0073AA;
|
2139 |
+
|
2140 |
+
|
2141 |
+
box-shadow: 0 1px 0 rgba(120, 200, 230, .5) inset, 0 1px 0 rgba(0, 0, 0, .15);
|
2142 |
+
|
2143 |
+
|
2144 |
+
color: #FFF;
|
2145 |
+
|
2146 |
+
|
2147 |
+
text-decoration: none;
|
2148 |
+
|
2149 |
+
|
2150 |
+
cursor: pointer;
|
2151 |
+
|
2152 |
+
|
2153 |
+
border-width: 1px;
|
2154 |
+
|
2155 |
+
|
2156 |
+
border-style: solid;
|
2157 |
+
|
2158 |
+
|
2159 |
+
border-radius: 3px;
|
2160 |
+
|
2161 |
+
|
2162 |
+
white-space: nowrap;
|
2163 |
+
|
2164 |
+
|
2165 |
+
box-sizing: border-box;
|
2166 |
+
|
2167 |
+
|
2168 |
+
line-height: 28px;
|
2169 |
+
|
2170 |
+
|
2171 |
+
padding: 0 12px;
|
2172 |
+
|
2173 |
+
|
2174 |
+
font-size: 13px
|
2175 |
+
|
2176 |
+
|
2177 |
+
}
|
2178 |
+
|
2179 |
+
|
2180 |
+
|
2181 |
+
|
2182 |
+
|
2183 |
+
.button:hover {
|
2184 |
+
|
2185 |
+
|
2186 |
+
background-color: #0073AA
|
2187 |
+
|
2188 |
+
|
2189 |
+
}
|
2190 |
+
|
2191 |
+
|
2192 |
+
|
2193 |
+
|
2194 |
+
|
2195 |
+
.close {
|
2196 |
+
|
2197 |
+
|
2198 |
+
float: right;
|
2199 |
+
|
2200 |
+
|
2201 |
+
transition: color .1s ease-in-out, background .1s ease-in-out;
|
2202 |
+
|
2203 |
+
|
2204 |
+
text-decoration: none;
|
2205 |
+
|
2206 |
+
|
2207 |
+
color: #999;
|
2208 |
+
|
2209 |
+
|
2210 |
+
font-size: 13px
|
2211 |
+
|
2212 |
+
|
2213 |
+
}
|
2214 |
+
|
2215 |
+
|
2216 |
+
|
2217 |
+
|
2218 |
+
|
2219 |
+
.mo_validate_close:focus,
|
2220 |
+
|
2221 |
+
|
2222 |
+
.mo_validate_close:hover {
|
2223 |
+
|
2224 |
+
|
2225 |
+
color: #0085ba
|
2226 |
+
|
2227 |
+
|
2228 |
+
}
|
2229 |
+
|
2230 |
+
|
2231 |
+
|
2232 |
+
|
2233 |
+
|
2234 |
+
.mo_registration_pricing_text {
|
2235 |
+
|
2236 |
+
|
2237 |
+
font-size: 13px;
|
2238 |
+
|
2239 |
+
|
2240 |
+
color: darkblue;
|
2241 |
+
|
2242 |
+
|
2243 |
+
}
|
2244 |
+
|
2245 |
+
|
2246 |
+
|
2247 |
+
|
2248 |
+
|
2249 |
+
.mo_otp_token {
|
2250 |
+
|
2251 |
+
|
2252 |
+
font-size: 15px;
|
2253 |
+
|
2254 |
+
|
2255 |
+
color: #212F3C;
|
2256 |
+
|
2257 |
+
|
2258 |
+
border: none;
|
2259 |
+
|
2260 |
+
|
2261 |
+
display: block;
|
2262 |
+
|
2263 |
+
|
2264 |
+
border-bottom-style: solid;
|
2265 |
+
|
2266 |
+
|
2267 |
+
border-width: 2px;
|
2268 |
+
|
2269 |
+
|
2270 |
+
border-color: #D0D3D4;
|
2271 |
+
|
2272 |
+
|
2273 |
+
border-radius: 0px;
|
2274 |
+
|
2275 |
+
|
2276 |
+
outline: none;
|
2277 |
+
|
2278 |
+
|
2279 |
+
width: 140px;
|
2280 |
+
|
2281 |
+
|
2282 |
+
text-align: center;
|
2283 |
+
|
2284 |
+
|
2285 |
+
}
|
2286 |
+
|
2287 |
+
|
2288 |
+
|
2289 |
+
|
2290 |
+
|
2291 |
+
.container {
|
2292 |
+
|
2293 |
+
|
2294 |
+
max-width: 960px
|
2295 |
+
|
2296 |
+
|
2297 |
+
}
|
2298 |
+
|
2299 |
+
|
2300 |
+
|
2301 |
+
|
2302 |
+
|
2303 |
+
}
|
2304 |
+
|
2305 |
+
|
2306 |
+
@media (min-width: 1200px) {
|
2307 |
+
|
2308 |
+
|
2309 |
+
.container {
|
2310 |
+
|
2311 |
+
|
2312 |
+
max-width: 1140px
|
2313 |
+
|
2314 |
+
|
2315 |
+
}
|
2316 |
+
|
2317 |
+
|
2318 |
+
}
|
2319 |
+
|
2320 |
+
|
2321 |
+
|
2322 |
+
|
2323 |
+
|
2324 |
+
.container-fluid {
|
2325 |
+
|
2326 |
+
|
2327 |
+
width: 100%;
|
2328 |
+
|
2329 |
+
|
2330 |
+
padding-right: 15px;
|
2331 |
+
|
2332 |
+
|
2333 |
+
padding-left: 15px;
|
2334 |
+
|
2335 |
+
|
2336 |
+
margin-right: auto;
|
2337 |
+
|
2338 |
+
|
2339 |
+
margin-left: auto
|
2340 |
+
|
2341 |
+
|
2342 |
+
}
|
2343 |
+
|
2344 |
+
|
2345 |
+
|
2346 |
+
|
2347 |
+
|
2348 |
+
.row {
|
2349 |
+
|
2350 |
+
|
2351 |
+
display: -webkit-box;
|
2352 |
+
|
2353 |
+
|
2354 |
+
display: -ms-flexbox;
|
2355 |
+
|
2356 |
+
|
2357 |
+
display: flex;
|
2358 |
+
|
2359 |
+
|
2360 |
+
-ms-flex-wrap: wrap;
|
2361 |
+
|
2362 |
+
|
2363 |
+
flex-wrap: wrap;
|
2364 |
+
|
2365 |
+
|
2366 |
+
margin-right: -15px;
|
2367 |
+
|
2368 |
+
|
2369 |
+
margin-left: -15px
|
2370 |
+
|
2371 |
+
|
2372 |
+
}
|
2373 |
+
|
2374 |
+
|
2375 |
+
|
2376 |
+
|
2377 |
+
|
2378 |
+
|
2379 |
+
|
2380 |
+
|
2381 |
+
.no-gutters {
|
2382 |
+
|
2383 |
+
|
2384 |
+
margin-right: 0;
|
2385 |
+
|
2386 |
+
|
2387 |
+
margin-left: 0
|
2388 |
+
|
2389 |
+
|
2390 |
+
}
|
2391 |
+
|
2392 |
+
|
2393 |
+
|
2394 |
+
|
2395 |
+
|
2396 |
+
.no-gutters > .col, .no-gutters > [class*=col-] {
|
2397 |
+
|
2398 |
+
|
2399 |
+
padding-right: 0;
|
2400 |
+
|
2401 |
+
|
2402 |
+
padding-left: 0
|
2403 |
+
|
2404 |
+
|
2405 |
+
}
|
2406 |
+
|
2407 |
+
|
2408 |
+
|
2409 |
+
|
2410 |
+
|
2411 |
+
.col, .col-1, .col-10, .col-11, .col-12, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-auto, .col-lg, .col-lg-1, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-auto, .col-md, .col-md-1, .col-md-10, .col-md-11, .col-md-12, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-auto, .col-sm, .col-sm-1, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-auto, .col-xl, .col-xl-1, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-auto {
|
2412 |
+
|
2413 |
+
|
2414 |
+
position: relative;
|
2415 |
+
|
2416 |
+
|
2417 |
+
width: 100%;
|
2418 |
+
|
2419 |
+
|
2420 |
+
min-height: 1px;
|
2421 |
+
|
2422 |
+
|
2423 |
+
padding-right: 15px;
|
2424 |
+
|
2425 |
+
|
2426 |
+
padding-left: 15px
|
2427 |
+
|
2428 |
+
|
2429 |
+
}
|
2430 |
+
|
2431 |
+
|
2432 |
+
|
2433 |
+
|
2434 |
+
|
2435 |
+
.col {
|
2436 |
+
|
2437 |
+
|
2438 |
+
-ms-flex-preferred-size: 0;
|
2439 |
+
|
2440 |
+
|
2441 |
+
flex-basis: 0;
|
2442 |
+
|
2443 |
+
|
2444 |
+
-webkit-box-flex: 1;
|
2445 |
+
|
2446 |
+
|
2447 |
+
-ms-flex-positive: 1;
|
2448 |
+
|
2449 |
+
|
2450 |
+
flex-grow: 1;
|
2451 |
+
|
2452 |
+
|
2453 |
+
max-width: 100%
|
2454 |
+
|
2455 |
+
|
2456 |
+
}
|
2457 |
+
|
2458 |
+
|
2459 |
+
|
2460 |
+
|
2461 |
+
|
2462 |
+
.col-auto {
|
2463 |
+
|
2464 |
+
|
2465 |
+
-webkit-box-flex: 0;
|
2466 |
+
|
2467 |
+
|
2468 |
+
-ms-flex: 0 0 auto;
|
2469 |
+
|
2470 |
+
|
2471 |
+
flex: 0 0 auto;
|
2472 |
+
|
2473 |
+
|
2474 |
+
width: auto;
|
2475 |
+
|
2476 |
+
|
2477 |
+
max-width: none
|
2478 |
+
|
2479 |
+
|
2480 |
+
}
|
2481 |
+
|
2482 |
+
|
2483 |
+
|
2484 |
+
|
2485 |
+
|
2486 |
+
.col-1 {
|
2487 |
+
|
2488 |
+
|
2489 |
+
-webkit-box-flex: 0;
|
2490 |
+
|
2491 |
+
|
2492 |
+
-ms-flex: 0 0 8.333333%;
|
2493 |
+
|
2494 |
+
|
2495 |
+
flex: 0 0 8.333333%;
|
2496 |
+
|
2497 |
+
|
2498 |
+
max-width: 8.333333%
|
2499 |
+
|
2500 |
+
|
2501 |
+
}
|
2502 |
+
|
2503 |
+
|
2504 |
+
|
2505 |
+
|
2506 |
+
|
2507 |
+
.col-2 {
|
2508 |
+
|
2509 |
+
|
2510 |
+
-webkit-box-flex: 0;
|
2511 |
+
|
2512 |
+
|
2513 |
+
-ms-flex: 0 0 16.666667%;
|
2514 |
+
|
2515 |
+
|
2516 |
+
flex: 0 0 16.666667%;
|
2517 |
+
|
2518 |
+
|
2519 |
+
max-width: 16.666667%
|
2520 |
+
|
2521 |
+
|
2522 |
+
}
|
2523 |
+
|
2524 |
+
|
2525 |
+
|
2526 |
+
|
2527 |
+
|
2528 |
+
.col-3 {
|
2529 |
+
|
2530 |
+
|
2531 |
+
-webkit-box-flex: 0;
|
2532 |
+
|
2533 |
+
|
2534 |
+
-ms-flex: 0 0 25%;
|
2535 |
+
|
2536 |
+
|
2537 |
+
flex: 0 0 25%;
|
2538 |
+
|
2539 |
+
|
2540 |
+
max-width: 25%
|
2541 |
+
|
2542 |
+
|
2543 |
+
}
|
2544 |
+
|
2545 |
+
|
2546 |
+
|
2547 |
+
|
2548 |
+
|
2549 |
+
.col-4 {
|
2550 |
+
|
2551 |
+
|
2552 |
+
-webkit-box-flex: 0;
|
2553 |
+
|
2554 |
+
|
2555 |
+
-ms-flex: 0 0 33.333333%;
|
2556 |
+
|
2557 |
+
|
2558 |
+
flex: 0 0 33.333333%;
|
2559 |
+
|
2560 |
+
|
2561 |
+
max-width: 33.333333%
|
2562 |
+
|
2563 |
+
|
2564 |
+
}
|
2565 |
+
|
2566 |
+
|
2567 |
+
|
2568 |
+
|
2569 |
+
|
2570 |
+
.col-5 {
|
2571 |
+
|
2572 |
+
|
2573 |
+
-webkit-box-flex: 0;
|
2574 |
+
|
2575 |
+
|
2576 |
+
-ms-flex: 0 0 41.666667%;
|
2577 |
+
|
2578 |
+
|
2579 |
+
flex: 0 0 41.666667%;
|
2580 |
+
|
2581 |
+
|
2582 |
+
max-width: 41.666667%
|
2583 |
+
|
2584 |
+
|
2585 |
+
}
|
2586 |
+
|
2587 |
+
|
2588 |
+
|
2589 |
+
|
2590 |
+
|
2591 |
+
.col-6 {
|
2592 |
+
|
2593 |
+
|
2594 |
+
-webkit-box-flex: 0;
|
2595 |
+
|
2596 |
+
|
2597 |
+
-ms-flex: 0 0 50%;
|
2598 |
+
|
2599 |
+
|
2600 |
+
flex: 0 0 50%;
|
2601 |
+
|
2602 |
+
|
2603 |
+
max-width: 50%
|
2604 |
+
|
2605 |
+
|
2606 |
+
}
|
2607 |
+
|
2608 |
+
|
2609 |
+
|
2610 |
+
|
2611 |
+
|
2612 |
+
.col-7 {
|
2613 |
+
|
2614 |
+
|
2615 |
+
-webkit-box-flex: 0;
|
2616 |
+
|
2617 |
+
|
2618 |
+
-ms-flex: 0 0 58.333333%;
|
2619 |
+
|
2620 |
+
|
2621 |
+
flex: 0 0 58.333333%;
|
2622 |
+
|
2623 |
+
|
2624 |
+
max-width: 58.333333%
|
2625 |
+
|
2626 |
+
|
2627 |
+
}
|
2628 |
+
|
2629 |
+
|
2630 |
+
|
2631 |
+
|
2632 |
+
|
2633 |
+
.col-8 {
|
2634 |
+
|
2635 |
+
|
2636 |
+
-webkit-box-flex: 0;
|
2637 |
+
|
2638 |
+
|
2639 |
+
-ms-flex: 0 0 66.666667%;
|
2640 |
+
|
2641 |
+
|
2642 |
+
flex: 0 0 66.666667%;
|
2643 |
+
|
2644 |
+
|
2645 |
+
max-width: 66.666667%
|
2646 |
+
|
2647 |
+
|
2648 |
+
}
|
2649 |
+
|
2650 |
+
|
2651 |
+
|
2652 |
+
|
2653 |
+
|
2654 |
+
.col-9 {
|
2655 |
+
|
2656 |
+
|
2657 |
+
-webkit-box-flex: 0;
|
2658 |
+
|
2659 |
+
|
2660 |
+
-ms-flex: 0 0 75%;
|
2661 |
+
|
2662 |
+
|
2663 |
+
flex: 0 0 75%;
|
2664 |
+
|
2665 |
+
|
2666 |
+
max-width: 75%
|
2667 |
+
|
2668 |
+
|
2669 |
+
}
|
2670 |
+
|
2671 |
+
|
2672 |
+
|
2673 |
+
|
2674 |
+
|
2675 |
+
.col-10 {
|
2676 |
+
|
2677 |
+
|
2678 |
+
-webkit-box-flex: 0;
|
2679 |
+
|
2680 |
+
|
2681 |
+
-ms-flex: 0 0 83.333333%;
|
2682 |
+
|
2683 |
+
|
2684 |
+
flex: 0 0 83.333333%;
|
2685 |
+
|
2686 |
+
|
2687 |
+
max-width: 83.333333%
|
2688 |
+
|
2689 |
+
|
2690 |
+
}
|
2691 |
+
|
2692 |
+
|
2693 |
+
|
2694 |
+
|
2695 |
+
|
2696 |
+
.col-11 {
|
2697 |
+
|
2698 |
+
|
2699 |
+
-webkit-box-flex: 0;
|
2700 |
+
|
2701 |
+
|
2702 |
+
-ms-flex: 0 0 91.666667%;
|
2703 |
+
|
2704 |
+
|
2705 |
+
flex: 0 0 91.666667%;
|
2706 |
+
|
2707 |
+
|
2708 |
+
max-width: 91.666667%
|
2709 |
+
|
2710 |
+
|
2711 |
+
}
|
2712 |
+
|
2713 |
+
|
2714 |
+
|
2715 |
+
|
2716 |
+
|
2717 |
+
.col-12 {
|
2718 |
+
|
2719 |
+
|
2720 |
+
-webkit-box-flex: 0;
|
2721 |
+
|
2722 |
+
|
2723 |
+
-ms-flex: 0 0 100%;
|
2724 |
+
|
2725 |
+
|
2726 |
+
flex: 0 0 100%;
|
2727 |
+
|
2728 |
+
|
2729 |
+
max-width: 100%
|
2730 |
+
|
2731 |
+
|
2732 |
+
}
|
2733 |
+
|
2734 |
+
|
2735 |
+
|
2736 |
+
|
2737 |
+
|
2738 |
+
.order-first {
|
2739 |
+
|
2740 |
+
|
2741 |
+
-webkit-box-ordinal-group: 0;
|
2742 |
+
|
2743 |
+
|
2744 |
+
-ms-flex-order: -1;
|
2745 |
+
|
2746 |
+
|
2747 |
+
order: -1
|
2748 |
+
|
2749 |
+
|
2750 |
+
}
|
2751 |
+
|
2752 |
+
|
2753 |
+
|
2754 |
+
|
2755 |
+
|
2756 |
+
.order-last {
|
2757 |
+
|
2758 |
+
|
2759 |
+
-webkit-box-ordinal-group: 14;
|
2760 |
+
|
2761 |
+
|
2762 |
+
-ms-flex-order: 13;
|
2763 |
+
|
2764 |
+
|
2765 |
+
order: 13
|
2766 |
+
|
2767 |
+
|
2768 |
+
}
|
2769 |
+
|
2770 |
+
|
2771 |
+
|
2772 |
+
|
2773 |
+
|
2774 |
+
.order-0 {
|
2775 |
+
|
2776 |
+
|
2777 |
+
-webkit-box-ordinal-group: 1;
|
2778 |
+
|
2779 |
+
|
2780 |
+
-ms-flex-order: 0;
|
2781 |
+
|
2782 |
+
|
2783 |
+
order: 0
|
2784 |
+
|
2785 |
+
|
2786 |
+
}
|
2787 |
+
|
2788 |
+
|
2789 |
+
|
2790 |
+
|
2791 |
+
|
2792 |
+
.order-1 {
|
2793 |
+
|
2794 |
+
|
2795 |
+
-webkit-box-ordinal-group: 2;
|
2796 |
+
|
2797 |
+
|
2798 |
+
-ms-flex-order: 1;
|
2799 |
+
|
2800 |
+
|
2801 |
+
order: 1
|
2802 |
+
|
2803 |
+
|
2804 |
+
}
|
2805 |
+
|
2806 |
+
|
2807 |
+
|
2808 |
+
|
2809 |
+
|
2810 |
+
.order-2 {
|
2811 |
+
|
2812 |
+
|
2813 |
+
-webkit-box-ordinal-group: 3;
|
2814 |
+
|
2815 |
+
|
2816 |
+
-ms-flex-order: 2;
|
2817 |
+
|
2818 |
+
|
2819 |
+
order: 2
|
2820 |
+
|
2821 |
+
|
2822 |
+
}
|
2823 |
+
|
2824 |
+
|
2825 |
+
|
2826 |
+
|
2827 |
+
|
2828 |
+
.order-3 {
|
2829 |
+
|
2830 |
+
|
2831 |
+
-webkit-box-ordinal-group: 4;
|
2832 |
+
|
2833 |
+
|
2834 |
+
-ms-flex-order: 3;
|
2835 |
+
|
2836 |
+
|
2837 |
+
order: 3
|
2838 |
+
|
2839 |
+
|
2840 |
+
}
|
2841 |
+
|
2842 |
+
|
2843 |
+
|
2844 |
+
|
2845 |
+
|
2846 |
+
.order-4 {
|
2847 |
+
|
2848 |
+
|
2849 |
+
-webkit-box-ordinal-group: 5;
|
2850 |
+
|
2851 |
+
|
2852 |
+
-ms-flex-order: 4;
|
2853 |
+
|
2854 |
+
|
2855 |
+
order: 4
|
2856 |
+
|
2857 |
+
|
2858 |
+
}
|
2859 |
+
|
2860 |
+
|
2861 |
+
|
2862 |
+
|
2863 |
+
|
2864 |
+
.order-5 {
|
2865 |
+
|
2866 |
+
|
2867 |
+
-webkit-box-ordinal-group: 6;
|
2868 |
+
|
2869 |
+
|
2870 |
+
-ms-flex-order: 5;
|
2871 |
+
|
2872 |
+
|
2873 |
+
order: 5
|
2874 |
+
|
2875 |
+
|
2876 |
+
}
|
2877 |
+
|
2878 |
+
|
2879 |
+
|
2880 |
+
|
2881 |
+
|
2882 |
+
.order-6 {
|
2883 |
+
|
2884 |
+
|
2885 |
+
-webkit-box-ordinal-group: 7;
|
2886 |
+
|
2887 |
+
|
2888 |
+
-ms-flex-order: 6;
|
2889 |
+
|
2890 |
+
|
2891 |
+
order: 6
|
2892 |
+
|
2893 |
+
|
2894 |
+
}
|
2895 |
+
|
2896 |
+
|
2897 |
+
|
2898 |
+
|
2899 |
+
|
2900 |
+
.order-7 {
|
2901 |
+
|
2902 |
+
|
2903 |
+
-webkit-box-ordinal-group: 8;
|
2904 |
+
|
2905 |
+
|
2906 |
+
-ms-flex-order: 7;
|
2907 |
+
|
2908 |
+
|
2909 |
+
order: 7
|
2910 |
+
|
2911 |
+
|
2912 |
+
}
|
2913 |
+
|
2914 |
+
|
2915 |
+
|
2916 |
+
|
2917 |
+
|
2918 |
+
.order-8 {
|
2919 |
+
|
2920 |
+
|
2921 |
+
-webkit-box-ordinal-group: 9;
|
2922 |
+
|
2923 |
+
|
2924 |
+
-ms-flex-order: 8;
|
2925 |
+
|
2926 |
+
|
2927 |
+
order: 8
|
2928 |
+
|
2929 |
+
|
2930 |
+
}
|
2931 |
+
|
2932 |
+
|
2933 |
+
|
2934 |
+
|
2935 |
+
|
2936 |
+
.order-9 {
|
2937 |
+
|
2938 |
+
|
2939 |
+
-webkit-box-ordinal-group: 10;
|
2940 |
+
|
2941 |
+
|
2942 |
+
-ms-flex-order: 9;
|
2943 |
+
|
2944 |
+
|
2945 |
+
order: 9
|
2946 |
+
|
2947 |
+
|
2948 |
+
}
|
2949 |
+
|
2950 |
+
|
2951 |
+
|
2952 |
+
|
2953 |
+
|
2954 |
+
.order-10 {
|
2955 |
+
|
2956 |
+
|
2957 |
+
-webkit-box-ordinal-group: 11;
|
2958 |
+
|
2959 |
+
|
2960 |
+
-ms-flex-order: 10;
|
2961 |
+
|
2962 |
+
|
2963 |
+
order: 10
|
2964 |
+
|
2965 |
+
|
2966 |
+
}
|
2967 |
+
|
2968 |
+
|
2969 |
+
|
2970 |
+
|
2971 |
+
|
2972 |
+
.order-11 {
|
2973 |
+
|
2974 |
+
|
2975 |
+
-webkit-box-ordinal-group: 12;
|
2976 |
+
|
2977 |
+
|
2978 |
+
-ms-flex-order: 11;
|
2979 |
+
|
2980 |
+
|
2981 |
+
order: 11
|
2982 |
+
|
2983 |
+
|
2984 |
+
}
|
2985 |
+
|
2986 |
+
|
2987 |
+
|
2988 |
+
|
2989 |
+
|
2990 |
+
.order-12 {
|
2991 |
+
|
2992 |
+
|
2993 |
+
-webkit-box-ordinal-group: 13;
|
2994 |
+
|
2995 |
+
|
2996 |
+
-ms-flex-order: 12;
|
2997 |
+
|
2998 |
+
|
2999 |
+
order: 12
|
3000 |
+
|
3001 |
+
|
3002 |
+
}
|
3003 |
+
|
3004 |
+
|
3005 |
+
|
3006 |
+
|
3007 |
+
|
3008 |
+
.offset-1 {
|
3009 |
+
|
3010 |
+
|
3011 |
+
margin-left: 8.333333%
|
3012 |
+
|
3013 |
+
|
3014 |
+
}
|
3015 |
+
|
3016 |
+
|
3017 |
+
|
3018 |
+
|
3019 |
+
|
3020 |
+
.offset-2 {
|
3021 |
+
|
3022 |
+
|
3023 |
+
margin-left: 16.666667%
|
3024 |
+
|
3025 |
+
|
3026 |
+
}
|
3027 |
+
|
3028 |
+
|
3029 |
+
|
3030 |
+
|
3031 |
+
|
3032 |
+
.offset-3 {
|
3033 |
+
|
3034 |
+
|
3035 |
+
margin-left: 25%
|
3036 |
+
|
3037 |
+
|
3038 |
+
}
|
3039 |
+
|
3040 |
+
|
3041 |
+
|
3042 |
+
|
3043 |
+
|
3044 |
+
.offset-4 {
|
3045 |
+
|
3046 |
+
|
3047 |
+
margin-left: 33.333333%
|
3048 |
+
|
3049 |
+
|
3050 |
+
}
|
3051 |
+
|
3052 |
+
|
3053 |
+
|
3054 |
+
|
3055 |
+
|
3056 |
+
.offset-5 {
|
3057 |
+
|
3058 |
+
|
3059 |
+
margin-left: 41.666667%
|
3060 |
+
|
3061 |
+
|
3062 |
+
}
|
3063 |
+
|
3064 |
+
|
3065 |
+
|
3066 |
+
|
3067 |
+
|
3068 |
+
.offset-6 {
|
3069 |
+
|
3070 |
+
|
3071 |
+
margin-left: 50%
|
3072 |
+
|
3073 |
+
|
3074 |
+
}
|
3075 |
+
|
3076 |
+
|
3077 |
+
|
3078 |
+
|
3079 |
+
|
3080 |
+
.offset-7 {
|
3081 |
+
|
3082 |
+
|
3083 |
+
margin-left: 58.333333%
|
3084 |
+
|
3085 |
+
|
3086 |
+
}
|
3087 |
+
|
3088 |
+
|
3089 |
+
|
3090 |
+
|
3091 |
+
|
3092 |
+
.offset-8 {
|
3093 |
+
|
3094 |
+
|
3095 |
+
margin-left: 66.666667%
|
3096 |
+
|
3097 |
+
|
3098 |
+
}
|
3099 |
+
|
3100 |
+
|
3101 |
+
|
3102 |
+
|
3103 |
+
|
3104 |
+
.offset-9 {
|
3105 |
+
|
3106 |
+
|
3107 |
+
margin-left: 75%
|
3108 |
+
|
3109 |
+
|
3110 |
+
}
|
3111 |
+
|
3112 |
+
|
3113 |
+
|
3114 |
+
|
3115 |
+
|
3116 |
+
.offset-10 {
|
3117 |
+
|
3118 |
+
|
3119 |
+
margin-left: 83.333333%
|
3120 |
+
|
3121 |
+
|
3122 |
+
}
|
3123 |
+
|
3124 |
+
|
3125 |
+
|
3126 |
+
|
3127 |
+
|
3128 |
+
.offset-11 {
|
3129 |
+
|
3130 |
+
|
3131 |
+
margin-left: 91.666667%
|
3132 |
+
|
3133 |
+
|
3134 |
+
}
|
3135 |
+
|
3136 |
+
|
3137 |
+
|
3138 |
+
|
3139 |
+
|
3140 |
+
@media (min-width: 576px) {
|
3141 |
+
|
3142 |
+
|
3143 |
+
.col-sm {
|
3144 |
+
|
3145 |
+
|
3146 |
+
-ms-flex-preferred-size: 0;
|
3147 |
+
|
3148 |
+
|
3149 |
+
flex-basis: 0;
|
3150 |
+
|
3151 |
+
|
3152 |
+
-webkit-box-flex: 1;
|
3153 |
+
|
3154 |
+
|
3155 |
+
-ms-flex-positive: 1;
|
3156 |
+
|
3157 |
+
|
3158 |
+
flex-grow: 1;
|
3159 |
+
|
3160 |
+
|
3161 |
+
max-width: 100%
|
3162 |
+
|
3163 |
+
|
3164 |
+
}
|
3165 |
+
|
3166 |
+
|
3167 |
+
|
3168 |
+
|
3169 |
+
|
3170 |
+
.col-sm-auto {
|
3171 |
+
|
3172 |
+
|
3173 |
+
-webkit-box-flex: 0;
|
3174 |
+
|
3175 |
+
|
3176 |
+
-ms-flex: 0 0 auto;
|
3177 |
+
|
3178 |
+
|
3179 |
+
flex: 0 0 auto;
|
3180 |
+
|
3181 |
+
|
3182 |
+
width: auto;
|
3183 |
+
|
3184 |
+
|
3185 |
+
max-width: none
|
3186 |
+
|
3187 |
+
|
3188 |
+
}
|
3189 |
+
|
3190 |
+
|
3191 |
+
|
3192 |
+
|
3193 |
+
|
3194 |
+
.col-sm-1 {
|
3195 |
+
|
3196 |
+
|
3197 |
+
-webkit-box-flex: 0;
|
3198 |
+
|
3199 |
+
|
3200 |
+
-ms-flex: 0 0 8.333333%;
|
3201 |
+
|
3202 |
+
|
3203 |
+
flex: 0 0 8.333333%;
|
3204 |
+
|
3205 |
+
|
3206 |
+
max-width: 8.333333%
|
3207 |
+
|
3208 |
+
|
3209 |
+
}
|
3210 |
+
|
3211 |
+
|
3212 |
+
|
3213 |
+
|
3214 |
+
|
3215 |
+
.col-sm-2 {
|
3216 |
+
|
3217 |
+
|
3218 |
+
-webkit-box-flex: 0;
|
3219 |
+
|
3220 |
+
|
3221 |
+
-ms-flex: 0 0 16.666667%;
|
3222 |
+
|
3223 |
+
|
3224 |
+
flex: 0 0 16.666667%;
|
3225 |
+
|
3226 |
+
|
3227 |
+
max-width: 16.666667%
|
3228 |
+
|
3229 |
+
|
3230 |
+
}
|
3231 |
+
|
3232 |
+
|
3233 |
+
|
3234 |
+
|
3235 |
+
|
3236 |
+
.col-sm-3 {
|
3237 |
+
|
3238 |
+
|
3239 |
+
-webkit-box-flex: 0;
|
3240 |
+
|
3241 |
+
|
3242 |
+
-ms-flex: 0 0 25%;
|
3243 |
+
|
3244 |
+
|
3245 |
+
flex: 0 0 25%;
|
3246 |
+
|
3247 |
+
|
3248 |
+
max-width: 25%
|
3249 |
+
|
3250 |
+
|
3251 |
+
}
|
3252 |
+
|
3253 |
+
|
3254 |
+
|
3255 |
+
|
3256 |
+
|
3257 |
+
.col-sm-4 {
|
3258 |
+
|
3259 |
+
|
3260 |
+
-webkit-box-flex: 0;
|
3261 |
+
|
3262 |
+
|
3263 |
+
-ms-flex: 0 0 33.333333%;
|
3264 |
+
|
3265 |
+
|
3266 |
+
flex: 0 0 33.333333%;
|
3267 |
+
|
3268 |
+
|
3269 |
+
max-width: 33.333333%
|
3270 |
+
|
3271 |
+
|
3272 |
+
}
|
3273 |
+
|
3274 |
+
|
3275 |
+
|
3276 |
+
|
3277 |
+
|
3278 |
+
.col-sm-5 {
|
3279 |
+
|
3280 |
+
|
3281 |
+
-webkit-box-flex: 0;
|
3282 |
+
|
3283 |
+
|
3284 |
+
-ms-flex: 0 0 41.666667%;
|
3285 |
+
|
3286 |
+
|
3287 |
+
flex: 0 0 41.666667%;
|
3288 |
+
|
3289 |
+
|
3290 |
+
max-width: 41.666667%
|
3291 |
+
|
3292 |
+
|
3293 |
+
}
|
3294 |
+
|
3295 |
+
|
3296 |
+
|
3297 |
+
|
3298 |
+
|
3299 |
+
.col-sm-6 {
|
3300 |
+
|
3301 |
+
|
3302 |
+
-webkit-box-flex: 0;
|
3303 |
+
|
3304 |
+
|
3305 |
+
-ms-flex: 0 0 50%;
|
3306 |
+
|
3307 |
+
|
3308 |
+
flex: 0 0 50%;
|
3309 |
+
|
3310 |
+
|
3311 |
+
max-width: 50%
|
3312 |
+
|
3313 |
+
|
3314 |
+
}
|
3315 |
+
|
3316 |
+
|
3317 |
+
|
3318 |
+
|
3319 |
+
|
3320 |
+
.col-sm-7 {
|
3321 |
+
|
3322 |
+
|
3323 |
+
-webkit-box-flex: 0;
|
3324 |
+
|
3325 |
+
|
3326 |
+
-ms-flex: 0 0 58.333333%;
|
3327 |
+
|
3328 |
+
|
3329 |
+
flex: 0 0 58.333333%;
|
3330 |
+
|
3331 |
+
|
3332 |
+
max-width: 58.333333%
|
3333 |
+
|
3334 |
+
|
3335 |
+
}
|
3336 |
+
|
3337 |
+
|
3338 |
+
|
3339 |
+
|
3340 |
+
|
3341 |
+
.col-sm-8 {
|
3342 |
+
|
3343 |
+
|
3344 |
+
-webkit-box-flex: 0;
|
3345 |
+
|
3346 |
+
|
3347 |
+
-ms-flex: 0 0 66.666667%;
|
3348 |
+
|
3349 |
+
|
3350 |
+
flex: 0 0 66.666667%;
|
3351 |
+
|
3352 |
+
|
3353 |
+
max-width: 66.666667%
|
3354 |
+
|
3355 |
+
|
3356 |
+
}
|
3357 |
+
|
3358 |
+
|
3359 |
+
|
3360 |
+
|
3361 |
+
|
3362 |
+
.col-sm-9 {
|
3363 |
+
|
3364 |
+
|
3365 |
+
-webkit-box-flex: 0;
|
3366 |
+
|
3367 |
+
|
3368 |
+
-ms-flex: 0 0 75%;
|
3369 |
+
|
3370 |
+
|
3371 |
+
flex: 0 0 75%;
|
3372 |
+
|
3373 |
+
|
3374 |
+
max-width: 75%
|
3375 |
+
|
3376 |
+
|
3377 |
+
}
|
3378 |
+
|
3379 |
+
|
3380 |
+
|
3381 |
+
|
3382 |
+
|
3383 |
+
.col-sm-10 {
|
3384 |
+
|
3385 |
+
|
3386 |
+
-webkit-box-flex: 0;
|
3387 |
+
|
3388 |
+
|
3389 |
+
-ms-flex: 0 0 83.333333%;
|
3390 |
+
|
3391 |
+
|
3392 |
+
flex: 0 0 83.333333%;
|
3393 |
+
|
3394 |
+
|
3395 |
+
max-width: 83.333333%
|
3396 |
+
|
3397 |
+
|
3398 |
+
}
|
3399 |
+
|
3400 |
+
|
3401 |
+
|
3402 |
+
|
3403 |
+
|
3404 |
+
.col-sm-11 {
|
3405 |
+
|
3406 |
+
|
3407 |
+
-webkit-box-flex: 0;
|
3408 |
+
|
3409 |
+
|
3410 |
+
-ms-flex: 0 0 91.666667%;
|
3411 |
+
|
3412 |
+
|
3413 |
+
flex: 0 0 91.666667%;
|
3414 |
+
|
3415 |
+
|
3416 |
+
max-width: 91.666667%
|
3417 |
+
|
3418 |
+
|
3419 |
+
}
|
3420 |
+
|
3421 |
+
|
3422 |
+
|
3423 |
+
|
3424 |
+
|
3425 |
+
.col-sm-12 {
|
3426 |
+
|
3427 |
+
|
3428 |
+
-webkit-box-flex: 0;
|
3429 |
+
|
3430 |
+
|
3431 |
+
-ms-flex: 0 0 100%;
|
3432 |
+
|
3433 |
+
|
3434 |
+
flex: 0 0 100%;
|
3435 |
+
|
3436 |
+
|
3437 |
+
max-width: 100%
|
3438 |
+
|
3439 |
+
|
3440 |
+
}
|
3441 |
+
|
3442 |
+
|
3443 |
+
|
3444 |
+
|
3445 |
+
|
3446 |
+
.order-sm-first {
|
3447 |
+
|
3448 |
+
|
3449 |
+
-webkit-box-ordinal-group: 0;
|
3450 |
+
|
3451 |
+
|
3452 |
+
-ms-flex-order: -1;
|
3453 |
+
|
3454 |
+
|
3455 |
+
order: -1
|
3456 |
+
|
3457 |
+
|
3458 |
+
}
|
3459 |
+
|
3460 |
+
|
3461 |
+
|
3462 |
+
|
3463 |
+
|
3464 |
+
.order-sm-last {
|
3465 |
+
|
3466 |
+
|
3467 |
+
-webkit-box-ordinal-group: 14;
|
3468 |
+
|
3469 |
+
|
3470 |
+
-ms-flex-order: 13;
|
3471 |
+
|
3472 |
+
|
3473 |
+
order: 13
|
3474 |
+
|
3475 |
+
|
3476 |
+
}
|
3477 |
+
|
3478 |
+
|
3479 |
+
|
3480 |
+
|
3481 |
+
|
3482 |
+
.order-sm-0 {
|
3483 |
+
|
3484 |
+
|
3485 |
+
-webkit-box-ordinal-group: 1;
|
3486 |
+
|
3487 |
+
|
3488 |
+
-ms-flex-order: 0;
|
3489 |
+
|
3490 |
+
|
3491 |
+
order: 0
|
3492 |
+
|
3493 |
+
|
3494 |
+
}
|
3495 |
+
|
3496 |
+
|
3497 |
+
|
3498 |
+
|
3499 |
+
|
3500 |
+
.order-sm-1 {
|
3501 |
+
|
3502 |
+
|
3503 |
+
-webkit-box-ordinal-group: 2;
|
3504 |
+
|
3505 |
+
|
3506 |
+
-ms-flex-order: 1;
|
3507 |
+
|
3508 |
+
|
3509 |
+
order: 1
|
3510 |
+
|
3511 |
+
|
3512 |
+
}
|
3513 |
+
|
3514 |
+
|
3515 |
+
|
3516 |
+
|
3517 |
+
|
3518 |
+
.order-sm-2 {
|
3519 |
+
|
3520 |
+
|
3521 |
+
-webkit-box-ordinal-group: 3;
|
3522 |
+
|
3523 |
+
|
3524 |
+
-ms-flex-order: 2;
|
3525 |
+
|
3526 |
+
|
3527 |
+
order: 2
|
3528 |
+
|
3529 |
+
|
3530 |
+
}
|
3531 |
+
|
3532 |
+
|
3533 |
+
|
3534 |
+
|
3535 |
+
|
3536 |
+
.order-sm-3 {
|
3537 |
+
|
3538 |
+
|
3539 |
+
-webkit-box-ordinal-group: 4;
|
3540 |
+
|
3541 |
+
|
3542 |
+
-ms-flex-order: 3;
|
3543 |
+
|
3544 |
+
|
3545 |
+
order: 3
|
3546 |
+
|
3547 |
+
|
3548 |
+
}
|
3549 |
+
|
3550 |
+
|
3551 |
+
|
3552 |
+
|
3553 |
+
|
3554 |
+
.order-sm-4 {
|
3555 |
+
|
3556 |
+
|
3557 |
+
-webkit-box-ordinal-group: 5;
|
3558 |
+
|
3559 |
+
|
3560 |
+
-ms-flex-order: 4;
|
3561 |
+
|
3562 |
+
|
3563 |
+
order: 4
|
3564 |
+
|
3565 |
+
|
3566 |
+
}
|
3567 |
+
|
3568 |
+
|
3569 |
+
|
3570 |
+
|
3571 |
+
|
3572 |
+
.order-sm-5 {
|
3573 |
+
|
3574 |
+
|
3575 |
+
-webkit-box-ordinal-group: 6;
|
3576 |
+
|
3577 |
+
|
3578 |
+
-ms-flex-order: 5;
|
3579 |
+
|
3580 |
+
|
3581 |
+
order: 5
|
3582 |
+
|
3583 |
+
|
3584 |
+
}
|
3585 |
+
|
3586 |
+
|
3587 |
+
|
3588 |
+
|
3589 |
+
|
3590 |
+
.order-sm-6 {
|
3591 |
+
|
3592 |
+
|
3593 |
+
-webkit-box-ordinal-group: 7;
|
3594 |
+
|
3595 |
+
|
3596 |
+
-ms-flex-order: 6;
|
3597 |
+
|
3598 |
+
|
3599 |
+
order: 6
|
3600 |
+
|
3601 |
+
|
3602 |
+
}
|
3603 |
+
|
3604 |
+
|
3605 |
+
|
3606 |
+
|
3607 |
+
|
3608 |
+
.order-sm-7 {
|
3609 |
+
|
3610 |
+
|
3611 |
+
-webkit-box-ordinal-group: 8;
|
3612 |
+
|
3613 |
+
|
3614 |
+
-ms-flex-order: 7;
|
3615 |
+
|
3616 |
+
|
3617 |
+
order: 7
|
3618 |
+
|
3619 |
+
|
3620 |
+
}
|
3621 |
+
|
3622 |
+
|
3623 |
+
|
3624 |
+
|
3625 |
+
|
3626 |
+
.order-sm-8 {
|
3627 |
+
|
3628 |
+
|
3629 |
+
-webkit-box-ordinal-group: 9;
|
3630 |
+
|
3631 |
+
|
3632 |
+
-ms-flex-order: 8;
|
3633 |
+
|
3634 |
+
|
3635 |
+
order: 8
|
3636 |
+
|
3637 |
+
|
3638 |
+
}
|
3639 |
+
|
3640 |
+
|
3641 |
+
|
3642 |
+
|
3643 |
+
|
3644 |
+
.order-sm-9 {
|
3645 |
+
|
3646 |
+
|
3647 |
+
-webkit-box-ordinal-group: 10;
|
3648 |
+
|
3649 |
+
|
3650 |
+
-ms-flex-order: 9;
|
3651 |
+
|
3652 |
+
|
3653 |
+
order: 9
|
3654 |
+
|
3655 |
+
|
3656 |
+
}
|
3657 |
+
|
3658 |
+
|
3659 |
+
|
3660 |
+
|
3661 |
+
|
3662 |
+
.order-sm-10 {
|
3663 |
+
|
3664 |
+
|
3665 |
+
-webkit-box-ordinal-group: 11;
|
3666 |
+
|
3667 |
+
|
3668 |
+
-ms-flex-order: 10;
|
3669 |
+
|
3670 |
+
|
3671 |
+
order: 10
|
3672 |
+
|
3673 |
+
|
3674 |
+
}
|
3675 |
+
|
3676 |
+
|
3677 |
+
|
3678 |
+
|
3679 |
+
|
3680 |
+
.order-sm-11 {
|
3681 |
+
|
3682 |
+
|
3683 |
+
-webkit-box-ordinal-group: 12;
|
3684 |
+
|
3685 |
+
|
3686 |
+
-ms-flex-order: 11;
|
3687 |
+
|
3688 |
+
|
3689 |
+
order: 11
|
3690 |
+
|
3691 |
+
|
3692 |
+
}
|
3693 |
+
|
3694 |
+
|
3695 |
+
|
3696 |
+
|
3697 |
+
|
3698 |
+
.order-sm-12 {
|
3699 |
+
|
3700 |
+
|
3701 |
+
-webkit-box-ordinal-group: 13;
|
3702 |
+
|
3703 |
+
|
3704 |
+
-ms-flex-order: 12;
|
3705 |
+
|
3706 |
+
|
3707 |
+
order: 12
|
3708 |
+
|
3709 |
+
|
3710 |
+
}
|
3711 |
+
|
3712 |
+
|
3713 |
+
|
3714 |
+
|
3715 |
+
|
3716 |
+
.offset-sm-0 {
|
3717 |
+
|
3718 |
+
|
3719 |
+
margin-left: 0
|
3720 |
+
|
3721 |
+
|
3722 |
+
}
|
3723 |
+
|
3724 |
+
|
3725 |
+
|
3726 |
+
|
3727 |
+
|
3728 |
+
.offset-sm-1 {
|
3729 |
+
|
3730 |
+
|
3731 |
+
margin-left: 8.333333%
|
3732 |
+
|
3733 |
+
|
3734 |
+
}
|
3735 |
+
|
3736 |
+
|
3737 |
+
|
3738 |
+
|
3739 |
+
|
3740 |
+
.offset-sm-2 {
|
3741 |
+
|
3742 |
+
|
3743 |
+
margin-left: 16.666667%
|
3744 |
+
|
3745 |
+
|
3746 |
+
}
|
3747 |
+
|
3748 |
+
|
3749 |
+
|
3750 |
+
|
3751 |
+
|
3752 |
+
.offset-sm-3 {
|
3753 |
+
|
3754 |
+
|
3755 |
+
margin-left: 25%
|
3756 |
+
|
3757 |
+
|
3758 |
+
}
|
3759 |
+
|
3760 |
+
|
3761 |
+
|
3762 |
+
|
3763 |
+
|
3764 |
+
.offset-sm-4 {
|
3765 |
+
|
3766 |
+
|
3767 |
+
margin-left: 33.333333%
|
3768 |
+
|
3769 |
+
|
3770 |
+
}
|
3771 |
+
|
3772 |
+
|
3773 |
+
|
3774 |
+
|
3775 |
+
|
3776 |
+
.offset-sm-5 {
|
3777 |
+
|
3778 |
+
|
3779 |
+
margin-left: 41.666667%
|
3780 |
+
|
3781 |
+
|
3782 |
+
}
|
3783 |
+
|
3784 |
+
|
3785 |
+
|
3786 |
+
|
3787 |
+
|
3788 |
+
.offset-sm-6 {
|
3789 |
+
|
3790 |
+
|
3791 |
+
margin-left: 50%
|
3792 |
+
|
3793 |
+
|
3794 |
+
}
|
3795 |
+
|
3796 |
+
|
3797 |
+
|
3798 |
+
|
3799 |
+
|
3800 |
+
.offset-sm-7 {
|
3801 |
+
|
3802 |
+
|
3803 |
+
margin-left: 58.333333%
|
3804 |
+
|
3805 |
+
|
3806 |
+
}
|
3807 |
+
|
3808 |
+
|
3809 |
+
|
3810 |
+
|
3811 |
+
|
3812 |
+
.offset-sm-8 {
|
3813 |
+
|
3814 |
+
|
3815 |
+
margin-left: 66.666667%
|
3816 |
+
|
3817 |
+
|
3818 |
+
}
|
3819 |
+
|
3820 |
+
|
3821 |
+
|
3822 |
+
|
3823 |
+
|
3824 |
+
.offset-sm-9 {
|
3825 |
+
|
3826 |
+
|
3827 |
+
margin-left: 75%
|
3828 |
+
|
3829 |
+
|
3830 |
+
}
|
3831 |
+
|
3832 |
+
|
3833 |
+
|
3834 |
+
|
3835 |
+
|
3836 |
+
.offset-sm-10 {
|
3837 |
+
|
3838 |
+
|
3839 |
+
margin-left: 83.333333%
|
3840 |
+
|
3841 |
+
|
3842 |
+
}
|
3843 |
+
|
3844 |
+
|
3845 |
+
|
3846 |
+
|
3847 |
+
|
3848 |
+
.offset-sm-11 {
|
3849 |
+
|
3850 |
+
|
3851 |
+
margin-left: 91.666667%
|
3852 |
+
|
3853 |
+
|
3854 |
+
}
|
3855 |
+
|
3856 |
+
|
3857 |
+
}
|
3858 |
+
|
3859 |
+
|
3860 |
+
|
3861 |
+
|
3862 |
+
|
3863 |
+
@media (min-width: 768px) {
|
3864 |
+
|
3865 |
+
|
3866 |
+
.col-md {
|
3867 |
+
|
3868 |
+
|
3869 |
+
-ms-flex-preferred-size: 0;
|
3870 |
+
|
3871 |
+
|
3872 |
+
flex-basis: 0;
|
3873 |
+
|
3874 |
+
|
3875 |
+
-webkit-box-flex: 1;
|
3876 |
+
|
3877 |
+
|
3878 |
+
-ms-flex-positive: 1;
|
3879 |
+
|
3880 |
+
|
3881 |
+
flex-grow: 1;
|
3882 |
+
|
3883 |
+
|
3884 |
+
max-width: 100%
|
3885 |
+
|
3886 |
+
|
3887 |
+
}
|
3888 |
+
|
3889 |
+
|
3890 |
+
|
3891 |
+
|
3892 |
+
|
3893 |
+
.col-md-auto {
|
3894 |
+
|
3895 |
+
|
3896 |
+
-webkit-box-flex: 0;
|
3897 |
+
|
3898 |
+
|
3899 |
+
-ms-flex: 0 0 auto;
|
3900 |
+
|
3901 |
+
|
3902 |
+
flex: 0 0 auto;
|
3903 |
+
|
3904 |
+
|
3905 |
+
width: auto;
|
3906 |
+
|
3907 |
+
|
3908 |
+
max-width: none
|
3909 |
+
|
3910 |
+
|
3911 |
+
}
|
3912 |
+
|
3913 |
+
|
3914 |
+
|
3915 |
+
|
3916 |
+
|
3917 |
+
.col-md-1 {
|
3918 |
+
|
3919 |
+
|
3920 |
+
-webkit-box-flex: 0;
|
3921 |
+
|
3922 |
+
|
3923 |
+
-ms-flex: 0 0 8.333333%;
|
3924 |
+
|
3925 |
+
|
3926 |
+
flex: 0 0 8.333333%;
|
3927 |
+
|
3928 |
+
|
3929 |
+
max-width: 8.333333%
|
3930 |
+
|
3931 |
+
|
3932 |
+
}
|
3933 |
+
|
3934 |
+
|
3935 |
+
|
3936 |
+
|
3937 |
+
|
3938 |
+
.col-md-2 {
|
3939 |
+
|
3940 |
+
|
3941 |
+
-webkit-box-flex: 0;
|
3942 |
+
|
3943 |
+
|
3944 |
+
-ms-flex: 0 0 16.666667%;
|
3945 |
+
|
3946 |
+
|
3947 |
+
flex: 0 0 16.666667%;
|
3948 |
+
|
3949 |
+
|
3950 |
+
max-width: 16.666667%
|
3951 |
+
|
3952 |
+
|
3953 |
+
}
|
3954 |
+
|
3955 |
+
|
3956 |
+
|
3957 |
+
|
3958 |
+
|
3959 |
+
.col-md-3 {
|
3960 |
+
|
3961 |
+
|
3962 |
+
-webkit-box-flex: 0;
|
3963 |
+
|
3964 |
+
|
3965 |
+
-ms-flex: 0 0 25%;
|
3966 |
+
|
3967 |
+
|
3968 |
+
flex: 0 0 25%;
|
3969 |
+
|
3970 |
+
|
3971 |
+
max-width: 25%
|
3972 |
+
|
3973 |
+
|
3974 |
+
}
|
3975 |
+
|
3976 |
+
|
3977 |
+
|
3978 |
+
|
3979 |
+
|
3980 |
+
.col-md-4 {
|
3981 |
+
|
3982 |
+
|
3983 |
+
-webkit-box-flex: 0;
|
3984 |
+
|
3985 |
+
|
3986 |
+
-ms-flex: 0 0 33.333333%;
|
3987 |
+
|
3988 |
+
|
3989 |
+
flex: 0 0 33.333333%;
|
3990 |
+
|
3991 |
+
|
3992 |
+
max-width: 33.333333%
|
3993 |
+
|
3994 |
+
|
3995 |
+
}
|
3996 |
+
|
3997 |
+
|
3998 |
+
|
3999 |
+
|
4000 |
+
|
4001 |
+
.col-md-5 {
|
4002 |
+
|
4003 |
+
|
4004 |
+
-webkit-box-flex: 0;
|
4005 |
+
|
4006 |
+
|
4007 |
+
-ms-flex: 0 0 41.666667%;
|
4008 |
+
|
4009 |
+
|
4010 |
+
flex: 0 0 41.666667%;
|
4011 |
+
|
4012 |
+
|
4013 |
+
max-width: 41.666667%
|
4014 |
+
|
4015 |
+
|
4016 |
+
}
|
4017 |
+
|
4018 |
+
|
4019 |
+
|
4020 |
+
|
4021 |
+
|
4022 |
+
.col-md-6 {
|
4023 |
+
|
4024 |
+
|
4025 |
+
-webkit-box-flex: 0;
|
4026 |
+
|
4027 |
+
|
4028 |
+
-ms-flex: 0 0 50%;
|
4029 |
+
|
4030 |
+
|
4031 |
+
flex: 0 0 50%;
|
4032 |
+
|
4033 |
+
|
4034 |
+
max-width: 50%
|
4035 |
+
|
4036 |
+
|
4037 |
+
}
|
4038 |
+
|
4039 |
+
|
4040 |
+
|
4041 |
+
|
4042 |
+
|
4043 |
+
.col-md-7 {
|
4044 |
+
|
4045 |
+
|
4046 |
+
-webkit-box-flex: 0;
|
4047 |
+
|
4048 |
+
|
4049 |
+
-ms-flex: 0 0 58.333333%;
|
4050 |
+
|
4051 |
+
|
4052 |
+
flex: 0 0 58.333333%;
|
4053 |
+
|
4054 |
+
|
4055 |
+
max-width: 58.333333%
|
4056 |
+
|
4057 |
+
|
4058 |
+
}
|
4059 |
+
|
4060 |
+
|
4061 |
+
|
4062 |
+
|
4063 |
+
|
4064 |
+
.col-md-8 {
|
4065 |
+
|
4066 |
+
|
4067 |
+
-webkit-box-flex: 0;
|
4068 |
+
|
4069 |
+
|
4070 |
+
-ms-flex: 0 0 66.666667%;
|
4071 |
+
|
4072 |
+
|
4073 |
+
flex: 0 0 66.666667%;
|
4074 |
+
|
4075 |
+
|
4076 |
+
max-width: 66.666667%
|
4077 |
+
|
4078 |
+
|
4079 |
+
}
|
4080 |
+
|
4081 |
+
|
4082 |
+
|
4083 |
+
|
4084 |
+
|
4085 |
+
.col-md-9 {
|
4086 |
+
|
4087 |
+
|
4088 |
+
-webkit-box-flex: 0;
|
4089 |
+
|
4090 |
+
|
4091 |
+
-ms-flex: 0 0 75%;
|
4092 |
+
|
4093 |
+
|
4094 |
+
flex: 0 0 75%;
|
4095 |
+
|
4096 |
+
|
4097 |
+
max-width: 75%
|
4098 |
+
|
4099 |
+
|
4100 |
+
}
|
4101 |
+
|
4102 |
+
|
4103 |
+
|
4104 |
+
|
4105 |
+
|
4106 |
+
.col-md-10 {
|
4107 |
+
|
4108 |
+
|
4109 |
+
-webkit-box-flex: 0;
|
4110 |
+
|
4111 |
+
|
4112 |
+
-ms-flex: 0 0 83.333333%;
|
4113 |
+
|
4114 |
+
|
4115 |
+
flex: 0 0 83.333333%;
|
4116 |
+
|
4117 |
+
|
4118 |
+
max-width: 83.333333%
|
4119 |
+
|
4120 |
+
|
4121 |
+
}
|
4122 |
+
|
4123 |
+
|
4124 |
+
|
4125 |
+
|
4126 |
+
|
4127 |
+
.col-md-11 {
|
4128 |
+
|
4129 |
+
|
4130 |
+
-webkit-box-flex: 0;
|
4131 |
+
|
4132 |
+
|
4133 |
+
-ms-flex: 0 0 91.666667%;
|
4134 |
+
|
4135 |
+
|
4136 |
+
flex: 0 0 91.666667%;
|
4137 |
+
|
4138 |
+
|
4139 |
+
max-width: 91.666667%
|
4140 |
+
|
4141 |
+
|
4142 |
+
}
|
4143 |
+
|
4144 |
+
|
4145 |
+
|
4146 |
+
|
4147 |
+
|
4148 |
+
.col-md-12 {
|
4149 |
+
|
4150 |
+
|
4151 |
+
-webkit-box-flex: 0;
|
4152 |
+
|
4153 |
+
|
4154 |
+
-ms-flex: 0 0 100%;
|
4155 |
+
|
4156 |
+
|
4157 |
+
flex: 0 0 100%;
|
4158 |
+
|
4159 |
+
|
4160 |
+
max-width: 100%
|
4161 |
+
|
4162 |
+
|
4163 |
+
}
|
4164 |
+
|
4165 |
+
|
4166 |
+
|
4167 |
+
|
4168 |
+
|
4169 |
+
.order-md-first {
|
4170 |
+
|
4171 |
+
|
4172 |
+
-webkit-box-ordinal-group: 0;
|
4173 |
+
|
4174 |
+
|
4175 |
+
-ms-flex-order: -1;
|
4176 |
+
|
4177 |
+
|
4178 |
+
order: -1
|
4179 |
+
|
4180 |
+
|
4181 |
+
}
|
4182 |
+
|
4183 |
+
|
4184 |
+
|
4185 |
+
|
4186 |
+
|
4187 |
+
.order-md-last {
|
4188 |
+
|
4189 |
+
|
4190 |
+
-webkit-box-ordinal-group: 14;
|
4191 |
+
|
4192 |
+
|
4193 |
+
-ms-flex-order: 13;
|
4194 |
+
|
4195 |
+
|
4196 |
+
order: 13
|
4197 |
+
|
4198 |
+
|
4199 |
+
}
|
4200 |
+
|
4201 |
+
|
4202 |
+
|
4203 |
+
|
4204 |
+
|
4205 |
+
.order-md-0 {
|
4206 |
+
|
4207 |
+
|
4208 |
+
-webkit-box-ordinal-group: 1;
|
4209 |
+
|
4210 |
+
|
4211 |
+
-ms-flex-order: 0;
|
4212 |
+
|
4213 |
+
|
4214 |
+
order: 0
|
4215 |
+
|
4216 |
+
|
4217 |
+
}
|
4218 |
+
|
4219 |
+
|
4220 |
+
|
4221 |
+
|
4222 |
+
|
4223 |
+
.order-md-1 {
|
4224 |
+
|
4225 |
+
|
4226 |
+
-webkit-box-ordinal-group: 2;
|
4227 |
+
|
4228 |
+
|
4229 |
+
-ms-flex-order: 1;
|
4230 |
+
|
4231 |
+
|
4232 |
+
order: 1
|
4233 |
+
|
4234 |
+
|
4235 |
+
}
|
4236 |
+
|
4237 |
+
|
4238 |
+
|
4239 |
+
|
4240 |
+
|
4241 |
+
.order-md-2 {
|
4242 |
+
|
4243 |
+
|
4244 |
+
-webkit-box-ordinal-group: 3;
|
4245 |
+
|
4246 |
+
|
4247 |
+
-ms-flex-order: 2;
|
4248 |
+
|
4249 |
+
|
4250 |
+
order: 2
|
4251 |
+
|
4252 |
+
|
4253 |
+
}
|
4254 |
+
|
4255 |
+
|
4256 |
+
|
4257 |
+
|
4258 |
+
|
4259 |
+
.order-md-3 {
|
4260 |
+
|
4261 |
+
|
4262 |
+
-webkit-box-ordinal-group: 4;
|
4263 |
+
|
4264 |
+
|
4265 |
+
-ms-flex-order: 3;
|
4266 |
+
|
4267 |
+
|
4268 |
+
order: 3
|
4269 |
+
|
4270 |
+
|
4271 |
+
}
|
4272 |
+
|
4273 |
+
|
4274 |
+
|
4275 |
+
|
4276 |
+
|
4277 |
+
.order-md-4 {
|
4278 |
+
|
4279 |
+
|
4280 |
+
-webkit-box-ordinal-group: 5;
|
4281 |
+
|
4282 |
+
|
4283 |
+
-ms-flex-order: 4;
|
4284 |
+
|
4285 |
+
|
4286 |
+
order: 4
|
4287 |
+
|
4288 |
+
|
4289 |
+
}
|
4290 |
+
|
4291 |
+
|
4292 |
+
|
4293 |
+
|
4294 |
+
|
4295 |
+
.order-md-5 {
|
4296 |
+
|
4297 |
+
|
4298 |
+
-webkit-box-ordinal-group: 6;
|
4299 |
+
|
4300 |
+
|
4301 |
+
-ms-flex-order: 5;
|
4302 |
+
|
4303 |
+
|
4304 |
+
order: 5
|
4305 |
+
|
4306 |
+
|
4307 |
+
}
|
4308 |
+
|
4309 |
+
|
4310 |
+
|
4311 |
+
|
4312 |
+
|
4313 |
+
.order-md-6 {
|
4314 |
+
|
4315 |
+
|
4316 |
+
-webkit-box-ordinal-group: 7;
|
4317 |
+
|
4318 |
+
|
4319 |
+
-ms-flex-order: 6;
|
4320 |
+
|
4321 |
+
|
4322 |
+
order: 6
|
4323 |
+
|
4324 |
+
|
4325 |
+
}
|
4326 |
+
|
4327 |
+
|
4328 |
+
|
4329 |
+
|
4330 |
+
|
4331 |
+
.order-md-7 {
|
4332 |
+
|
4333 |
+
|
4334 |
+
-webkit-box-ordinal-group: 8;
|
4335 |
+
|
4336 |
+
|
4337 |
+
-ms-flex-order: 7;
|
4338 |
+
|
4339 |
+
|
4340 |
+
order: 7
|
4341 |
+
|
4342 |
+
|
4343 |
+
}
|
4344 |
+
|
4345 |
+
|
4346 |
+
|
4347 |
+
|
4348 |
+
|
4349 |
+
.order-md-8 {
|
4350 |
+
|
4351 |
+
|
4352 |
+
-webkit-box-ordinal-group: 9;
|
4353 |
+
|
4354 |
+
|
4355 |
+
-ms-flex-order: 8;
|
4356 |
+
|
4357 |
+
|
4358 |
+
order: 8
|
4359 |
+
|
4360 |
+
|
4361 |
+
}
|
4362 |
+
|
4363 |
+
|
4364 |
+
|
4365 |
+
|
4366 |
+
|
4367 |
+
.order-md-9 {
|
4368 |
+
|
4369 |
+
|
4370 |
+
-webkit-box-ordinal-group: 10;
|
4371 |
+
|
4372 |
+
|
4373 |
+
-ms-flex-order: 9;
|
4374 |
+
|
4375 |
+
|
4376 |
+
order: 9
|
4377 |
+
|
4378 |
+
|
4379 |
+
}
|
4380 |
+
|
4381 |
+
|
4382 |
+
|
4383 |
+
|
4384 |
+
|
4385 |
+
.order-md-10 {
|
4386 |
+
|
4387 |
+
|
4388 |
+
-webkit-box-ordinal-group: 11;
|
4389 |
+
|
4390 |
+
|
4391 |
+
-ms-flex-order: 10;
|
4392 |
+
|
4393 |
+
|
4394 |
+
order: 10
|
4395 |
+
|
4396 |
+
|
4397 |
+
}
|
4398 |
+
|
4399 |
+
|
4400 |
+
|
4401 |
+
|
4402 |
+
|
4403 |
+
.order-md-11 {
|
4404 |
+
|
4405 |
+
|
4406 |
+
-webkit-box-ordinal-group: 12;
|
4407 |
+
|
4408 |
+
|
4409 |
+
-ms-flex-order: 11;
|
4410 |
+
|
4411 |
+
|
4412 |
+
order: 11
|
4413 |
+
|
4414 |
+
|
4415 |
+
}
|
4416 |
+
|
4417 |
+
|
4418 |
+
|
4419 |
+
|
4420 |
+
|
4421 |
+
.order-md-12 {
|
4422 |
+
|
4423 |
+
|
4424 |
+
-webkit-box-ordinal-group: 13;
|
4425 |
+
|
4426 |
+
|
4427 |
+
-ms-flex-order: 12;
|
4428 |
+
|
4429 |
+
|
4430 |
+
order: 12
|
4431 |
+
|
4432 |
+
|
4433 |
+
}
|
4434 |
+
|
4435 |
+
|
4436 |
+
|
4437 |
+
|
4438 |
+
|
4439 |
+
.offset-md-0 {
|
4440 |
+
|
4441 |
+
|
4442 |
+
margin-left: 0
|
4443 |
+
|
4444 |
+
|
4445 |
+
}
|
4446 |
+
|
4447 |
+
|
4448 |
+
|
4449 |
+
|
4450 |
+
|
4451 |
+
.offset-md-1 {
|
4452 |
+
|
4453 |
+
|
4454 |
+
margin-left: 8.333333%
|
4455 |
+
|
4456 |
+
|
4457 |
+
}
|
4458 |
+
|
4459 |
+
|
4460 |
+
|
4461 |
+
|
4462 |
+
|
4463 |
+
.offset-md-2 {
|
4464 |
+
|
4465 |
+
|
4466 |
+
margin-left: 16.666667%
|
4467 |
+
|
4468 |
+
|
4469 |
+
}
|
4470 |
+
|
4471 |
+
|
4472 |
+
|
4473 |
+
|
4474 |
+
|
4475 |
+
.offset-md-3 {
|
4476 |
+
|
4477 |
+
|
4478 |
+
margin-left: 25%
|
4479 |
+
|
4480 |
+
|
4481 |
+
}
|
4482 |
+
|
4483 |
+
|
4484 |
+
|
4485 |
+
|
4486 |
+
|
4487 |
+
.offset-md-4 {
|
4488 |
+
|
4489 |
+
|
4490 |
+
margin-left: 33.333333%
|
4491 |
+
|
4492 |
+
|
4493 |
+
}
|
4494 |
+
|
4495 |
+
|
4496 |
+
|
4497 |
+
|
4498 |
+
|
4499 |
+
.offset-md-5 {
|
4500 |
+
|
4501 |
+
|
4502 |
+
margin-left: 41.666667%
|
4503 |
+
|
4504 |
+
|
4505 |
+
}
|
4506 |
+
|
4507 |
+
|
4508 |
+
|
4509 |
+
|
4510 |
+
|
4511 |
+
.offset-md-6 {
|
4512 |
+
|
4513 |
+
|
4514 |
+
margin-left: 50%
|
4515 |
+
|
4516 |
+
|
4517 |
+
}
|
4518 |
+
|
4519 |
+
|
4520 |
+
|
4521 |
+
|
4522 |
+
|
4523 |
+
.offset-md-7 {
|
4524 |
+
|
4525 |
+
|
4526 |
+
margin-left: 58.333333%
|
4527 |
+
|
4528 |
+
|
4529 |
+
}
|
4530 |
+
|
4531 |
+
|
4532 |
+
|
4533 |
+
|
4534 |
+
|
4535 |
+
.offset-md-8 {
|
4536 |
+
|
4537 |
+
|
4538 |
+
margin-left: 66.666667%
|
4539 |
+
|
4540 |
+
|
4541 |
+
}
|
4542 |
+
|
4543 |
+
|
4544 |
+
|
4545 |
+
|
4546 |
+
|
4547 |
+
.offset-md-9 {
|
4548 |
+
|
4549 |
+
|
4550 |
+
margin-left: 75%
|
4551 |
+
|
4552 |
+
|
4553 |
+
}
|
4554 |
+
|
4555 |
+
|
4556 |
+
|
4557 |
+
|
4558 |
+
|
4559 |
+
.offset-md-10 {
|
4560 |
+
|
4561 |
+
|
4562 |
+
margin-left: 83.333333%
|
4563 |
+
|
4564 |
+
|
4565 |
+
}
|
4566 |
+
|
4567 |
+
|
4568 |
+
|
4569 |
+
|
4570 |
+
|
4571 |
+
.offset-md-11 {
|
4572 |
+
|
4573 |
+
|
4574 |
+
margin-left: 91.666667%
|
4575 |
+
|
4576 |
+
|
4577 |
+
}
|
4578 |
+
|
4579 |
+
|
4580 |
+
}
|
4581 |
+
|
4582 |
+
|
4583 |
+
|
4584 |
+
|
4585 |
+
|
4586 |
+
@media (min-width: 992px) {
|
4587 |
+
|
4588 |
+
|
4589 |
+
.col-lg {
|
4590 |
+
|
4591 |
+
|
4592 |
+
-ms-flex-preferred-size: 0;
|
4593 |
+
|
4594 |
+
|
4595 |
+
flex-basis: 0;
|
4596 |
+
|
4597 |
+
|
4598 |
+
-webkit-box-flex: 1;
|
4599 |
+
|
4600 |
+
|
4601 |
+
-ms-flex-positive: 1;
|
4602 |
+
|
4603 |
+
|
4604 |
+
flex-grow: 1;
|
4605 |
+
|
4606 |
+
|
4607 |
+
max-width: 100%
|
4608 |
+
|
4609 |
+
|
4610 |
+
}
|
4611 |
+
|
4612 |
+
|
4613 |
+
|
4614 |
+
|
4615 |
+
|
4616 |
+
.col-lg-auto {
|
4617 |
+
|
4618 |
+
|
4619 |
+
-webkit-box-flex: 0;
|
4620 |
+
|
4621 |
+
|
4622 |
+
-ms-flex: 0 0 auto;
|
4623 |
+
|
4624 |
+
|
4625 |
+
flex: 0 0 auto;
|
4626 |
+
|
4627 |
+
|
4628 |
+
width: auto;
|
4629 |
+
|
4630 |
+
|
4631 |
+
max-width: none
|
4632 |
+
|
4633 |
+
|
4634 |
+
}
|
4635 |
+
|
4636 |
+
|
4637 |
+
|
4638 |
+
|
4639 |
+
|
4640 |
+
.col-lg-1 {
|
4641 |
+
|
4642 |
+
|
4643 |
+
-webkit-box-flex: 0;
|
4644 |
+
|
4645 |
+
|
4646 |
+
-ms-flex: 0 0 8.333333%;
|
4647 |
+
|
4648 |
+
|
4649 |
+
flex: 0 0 8.333333%;
|
4650 |
+
|
4651 |
+
|
4652 |
+
max-width: 8.333333%
|
4653 |
+
|
4654 |
+
|
4655 |
+
}
|
4656 |
+
|
4657 |
+
|
4658 |
+
|
4659 |
+
|
4660 |
+
|
4661 |
+
.col-lg-2 {
|
4662 |
+
|
4663 |
+
|
4664 |
+
-webkit-box-flex: 0;
|
4665 |
+
|
4666 |
+
|
4667 |
+
-ms-flex: 0 0 16.666667%;
|
4668 |
+
|
4669 |
+
|
4670 |
+
flex: 0 0 16.666667%;
|
4671 |
+
|
4672 |
+
|
4673 |
+
max-width: 16.666667%
|
4674 |
+
|
4675 |
+
|
4676 |
+
}
|
4677 |
+
|
4678 |
+
|
4679 |
+
|
4680 |
+
|
4681 |
+
|
4682 |
+
.col-lg-3 {
|
4683 |
+
|
4684 |
+
|
4685 |
+
-webkit-box-flex: 0;
|
4686 |
+
|
4687 |
+
|
4688 |
+
-ms-flex: 0 0 25%;
|
4689 |
+
|
4690 |
+
|
4691 |
+
flex: 0 0 25%;
|
4692 |
+
|
4693 |
+
|
4694 |
+
max-width: 25%
|
4695 |
+
|
4696 |
+
|
4697 |
+
}
|
4698 |
+
|
4699 |
+
|
4700 |
+
|
4701 |
+
|
4702 |
+
|
4703 |
+
.col-lg-4 {
|
4704 |
+
|
4705 |
+
|
4706 |
+
-webkit-box-flex: 0;
|
4707 |
+
|
4708 |
+
|
4709 |
+
-ms-flex: 0 0 33.333333%;
|
4710 |
+
|
4711 |
+
|
4712 |
+
flex: 0 0 33.333333%;
|
4713 |
+
|
4714 |
+
|
4715 |
+
max-width: 33.333333%
|
4716 |
+
|
4717 |
+
|
4718 |
+
}
|
4719 |
+
|
4720 |
+
|
4721 |
+
|
4722 |
+
|
4723 |
+
|
4724 |
+
.col-lg-5 {
|
4725 |
+
|
4726 |
+
|
4727 |
+
-webkit-box-flex: 0;
|
4728 |
+
|
4729 |
+
|
4730 |
+
-ms-flex: 0 0 41.666667%;
|
4731 |
+
|
4732 |
+
|
4733 |
+
flex: 0 0 41.666667%;
|
4734 |
+
|
4735 |
+
|
4736 |
+
max-width: 41.666667%
|
4737 |
+
|
4738 |
+
|
4739 |
+
}
|
4740 |
+
|
4741 |
+
|
4742 |
+
|
4743 |
+
|
4744 |
+
|
4745 |
+
.col-lg-6 {
|
4746 |
+
|
4747 |
+
|
4748 |
+
-webkit-box-flex: 0;
|
4749 |
+
|
4750 |
+
|
4751 |
+
-ms-flex: 0 0 50%;
|
4752 |
+
|
4753 |
+
|
4754 |
+
flex: 0 0 50%;
|
4755 |
+
|
4756 |
+
|
4757 |
+
max-width: 50%
|
4758 |
+
|
4759 |
+
|
4760 |
+
}
|
4761 |
+
|
4762 |
+
|
4763 |
+
|
4764 |
+
|
4765 |
+
|
4766 |
+
.col-lg-7 {
|
4767 |
+
|
4768 |
+
|
4769 |
+
-webkit-box-flex: 0;
|
4770 |
+
|
4771 |
+
|
4772 |
+
-ms-flex: 0 0 58.333333%;
|
4773 |
+
|
4774 |
+
|
4775 |
+
flex: 0 0 58.333333%;
|
4776 |
+
|
4777 |
+
|
4778 |
+
max-width: 58.333333%
|
4779 |
+
|
4780 |
+
|
4781 |
+
}
|
4782 |
+
|
4783 |
+
|
4784 |
+
|
4785 |
+
|
4786 |
+
|
4787 |
+
.col-lg-8 {
|
4788 |
+
|
4789 |
+
|
4790 |
+
-webkit-box-flex: 0;
|
4791 |
+
|
4792 |
+
|
4793 |
+
-ms-flex: 0 0 66.666667%;
|
4794 |
+
|
4795 |
+
|
4796 |
+
flex: 0 0 66.666667%;
|
4797 |
+
|
4798 |
+
|
4799 |
+
max-width: 66.666667%
|
4800 |
+
|
4801 |
+
|
4802 |
+
}
|
4803 |
+
|
4804 |
+
|
4805 |
+
|
4806 |
+
|
4807 |
+
|
4808 |
+
.col-lg-9 {
|
4809 |
+
|
4810 |
+
|
4811 |
+
-webkit-box-flex: 0;
|
4812 |
+
|
4813 |
+
|
4814 |
+
-ms-flex: 0 0 75%;
|
4815 |
+
|
4816 |
+
|
4817 |
+
flex: 0 0 75%;
|
4818 |
+
|
4819 |
+
|
4820 |
+
max-width: 75%
|
4821 |
+
|
4822 |
+
|
4823 |
+
}
|
4824 |
+
|
4825 |
+
|
4826 |
+
|
4827 |
+
|
4828 |
+
|
4829 |
+
.col-lg-10 {
|
4830 |
+
|
4831 |
+
|
4832 |
+
-webkit-box-flex: 0;
|
4833 |
+
|
4834 |
+
|
4835 |
+
-ms-flex: 0 0 83.333333%;
|
4836 |
+
|
4837 |
+
|
4838 |
+
flex: 0 0 83.333333%;
|
4839 |
+
|
4840 |
+
|
4841 |
+
max-width: 83.333333%
|
4842 |
+
|
4843 |
+
|
4844 |
+
}
|
4845 |
+
|
4846 |
+
|
4847 |
+
|
4848 |
+
|
4849 |
+
|
4850 |
+
.col-lg-11 {
|
4851 |
+
|
4852 |
+
|
4853 |
+
-webkit-box-flex: 0;
|
4854 |
+
|
4855 |
+
|
4856 |
+
-ms-flex: 0 0 91.666667%;
|
4857 |
+
|
4858 |
+
|
4859 |
+
flex: 0 0 91.666667%;
|
4860 |
+
|
4861 |
+
|
4862 |
+
max-width: 91.666667%
|
4863 |
+
|
4864 |
+
|
4865 |
+
}
|
4866 |
+
|
4867 |
+
|
4868 |
+
|
4869 |
+
|
4870 |
+
|
4871 |
+
.col-lg-12 {
|
4872 |
+
|
4873 |
+
|
4874 |
+
-webkit-box-flex: 0;
|
4875 |
+
|
4876 |
+
|
4877 |
+
-ms-flex: 0 0 100%;
|
4878 |
+
|
4879 |
+
|
4880 |
+
flex: 0 0 100%;
|
4881 |
+
|
4882 |
+
|
4883 |
+
max-width: 100%
|
4884 |
+
|
4885 |
+
|
4886 |
+
}
|
4887 |
+
|
4888 |
+
|
4889 |
+
|
4890 |
+
|
4891 |
+
|
4892 |
+
.order-lg-first {
|
4893 |
+
|
4894 |
+
|
4895 |
+
-webkit-box-ordinal-group: 0;
|
4896 |
+
|
4897 |
+
|
4898 |
+
-ms-flex-order: -1;
|
4899 |
+
|
4900 |
+
|
4901 |
+
order: -1
|
4902 |
+
|
4903 |
+
|
4904 |
+
}
|
4905 |
+
|
4906 |
+
|
4907 |
+
|
4908 |
+
|
4909 |
+
|
4910 |
+
.order-lg-last {
|
4911 |
+
|
4912 |
+
|
4913 |
+
-webkit-box-ordinal-group: 14;
|
4914 |
+
|
4915 |
+
|
4916 |
+
-ms-flex-order: 13;
|
4917 |
+
|
4918 |
+
|
4919 |
+
order: 13
|
4920 |
+
|
4921 |
+
|
4922 |
+
}
|
4923 |
+
|
4924 |
+
|
4925 |
+
|
4926 |
+
|
4927 |
+
|
4928 |
+
.order-lg-0 {
|
4929 |
+
|
4930 |
+
|
4931 |
+
-webkit-box-ordinal-group: 1;
|
4932 |
+
|
4933 |
+
|
4934 |
+
-ms-flex-order: 0;
|
4935 |
+
|
4936 |
+
|
4937 |
+
order: 0
|
4938 |
+
|
4939 |
+
|
4940 |
+
}
|
4941 |
+
|
4942 |
+
|
4943 |
+
|
4944 |
+
|
4945 |
+
|
4946 |
+
.order-lg-1 {
|
4947 |
+
|
4948 |
+
|
4949 |
+
-webkit-box-ordinal-group: 2;
|
4950 |
+
|
4951 |
+
|
4952 |
+
-ms-flex-order: 1;
|
4953 |
+
|
4954 |
+
|
4955 |
+
order: 1
|
4956 |
+
|
4957 |
+
|
4958 |
+
}
|
4959 |
+
|
4960 |
+
|
4961 |
+
|
4962 |
+
|
4963 |
+
|
4964 |
+
.order-lg-2 {
|
4965 |
+
|
4966 |
+
|
4967 |
+
-webkit-box-ordinal-group: 3;
|
4968 |
+
|
4969 |
+
|
4970 |
+
-ms-flex-order: 2;
|
4971 |
+
|
4972 |
+
|
4973 |
+
order: 2
|
4974 |
+
|
4975 |
+
|
4976 |
+
}
|
4977 |
+
|
4978 |
+
|
4979 |
+
|
4980 |
+
|
4981 |
+
|
4982 |
+
.order-lg-3 {
|
4983 |
+
|
4984 |
+
|
4985 |
+
-webkit-box-ordinal-group: 4;
|
4986 |
+
|
4987 |
+
|
4988 |
+
-ms-flex-order: 3;
|
4989 |
+
|
4990 |
+
|
4991 |
+
order: 3
|
4992 |
+
|
4993 |
+
|
4994 |
+
}
|
4995 |
+
|
4996 |
+
|
4997 |
+
|
4998 |
+
|
4999 |
+
|
5000 |
+
.order-lg-4 {
|
5001 |
+
|
5002 |
+
|
5003 |
+
-webkit-box-ordinal-group: 5;
|
5004 |
+
|
5005 |
+
|
5006 |
+
-ms-flex-order: 4;
|
5007 |
+
|
5008 |
+
|
5009 |
+
order: 4
|
5010 |
+
|
5011 |
+
|
5012 |
+
}
|
5013 |
+
|
5014 |
+
|
5015 |
+
|
5016 |
+
|
5017 |
+
|
5018 |
+
.order-lg-5 {
|
5019 |
+
|
5020 |
+
|
5021 |
+
-webkit-box-ordinal-group: 6;
|
5022 |
+
|
5023 |
+
|
5024 |
+
-ms-flex-order: 5;
|
5025 |
+
|
5026 |
+
|
5027 |
+
order: 5
|
5028 |
+
|
5029 |
+
|
5030 |
+
}
|
5031 |
+
|
5032 |
+
|
5033 |
+
|
5034 |
+
|
5035 |
+
|
5036 |
+
.order-lg-6 {
|
5037 |
+
|
5038 |
+
|
5039 |
+
-webkit-box-ordinal-group: 7;
|
5040 |
+
|
5041 |
+
|
5042 |
+
-ms-flex-order: 6;
|
5043 |
+
|
5044 |
+
|
5045 |
+
order: 6
|
5046 |
+
|
5047 |
+
|
5048 |
+
}
|
5049 |
+
|
5050 |
+
|
5051 |
+
|
5052 |
+
|
5053 |
+
|
5054 |
+
.order-lg-7 {
|
5055 |
+
|
5056 |
+
|
5057 |
+
-webkit-box-ordinal-group: 8;
|
5058 |
+
|
5059 |
+
|
5060 |
+
-ms-flex-order: 7;
|
5061 |
+
|
5062 |
+
|
5063 |
+
order: 7
|
5064 |
+
|
5065 |
+
|
5066 |
+
}
|
5067 |
+
|
5068 |
+
|
5069 |
+
|
5070 |
+
|
5071 |
+
|
5072 |
+
.order-lg-8 {
|
5073 |
+
|
5074 |
+
|
5075 |
+
-webkit-box-ordinal-group: 9;
|
5076 |
+
|
5077 |
+
|
5078 |
+
-ms-flex-order: 8;
|
5079 |
+
|
5080 |
+
|
5081 |
+
order: 8
|
5082 |
+
|
5083 |
+
|
5084 |
+
}
|
5085 |
+
|
5086 |
+
|
5087 |
+
|
5088 |
+
|
5089 |
+
|
5090 |
+
.order-lg-9 {
|
5091 |
+
|
5092 |
+
|
5093 |
+
-webkit-box-ordinal-group: 10;
|
5094 |
+
|
5095 |
+
|
5096 |
+
-ms-flex-order: 9;
|
5097 |
+
|
5098 |
+
|
5099 |
+
order: 9
|
5100 |
+
|
5101 |
+
|
5102 |
+
}
|
5103 |
+
|
5104 |
+
|
5105 |
+
|
5106 |
+
|
5107 |
+
|
5108 |
+
.order-lg-10 {
|
5109 |
+
|
5110 |
+
|
5111 |
+
-webkit-box-ordinal-group: 11;
|
5112 |
+
|
5113 |
+
|
5114 |
+
-ms-flex-order: 10;
|
5115 |
+
|
5116 |
+
|
5117 |
+
order: 10
|
5118 |
+
|
5119 |
+
|
5120 |
+
}
|
5121 |
+
|
5122 |
+
|
5123 |
+
|
5124 |
+
|
5125 |
+
|
5126 |
+
.order-lg-11 {
|
5127 |
+
|
5128 |
+
|
5129 |
+
-webkit-box-ordinal-group: 12;
|
5130 |
+
|
5131 |
+
|
5132 |
+
-ms-flex-order: 11;
|
5133 |
+
|
5134 |
+
|
5135 |
+
order: 11
|
5136 |
+
|
5137 |
+
|
5138 |
+
}
|
5139 |
+
|
5140 |
+
|
5141 |
+
|
5142 |
+
|
5143 |
+
|
5144 |
+
.order-lg-12 {
|
5145 |
+
|
5146 |
+
|
5147 |
+
-webkit-box-ordinal-group: 13;
|
5148 |
+
|
5149 |
+
|
5150 |
+
-ms-flex-order: 12;
|
5151 |
+
|
5152 |
+
|
5153 |
+
order: 12
|
5154 |
+
|
5155 |
+
|
5156 |
+
}
|
5157 |
+
|
5158 |
+
|
5159 |
+
|
5160 |
+
|
5161 |
+
|
5162 |
+
.offset-lg-0 {
|
5163 |
+
|
5164 |
+
|
5165 |
+
margin-left: 0
|
5166 |
+
|
5167 |
+
|
5168 |
+
}
|
5169 |
+
|
5170 |
+
|
5171 |
+
|
5172 |
+
|
5173 |
+
|
5174 |
+
.offset-lg-1 {
|
5175 |
+
|
5176 |
+
|
5177 |
+
margin-left: 8.333333%
|
5178 |
+
|
5179 |
+
|
5180 |
+
}
|
5181 |
+
|
5182 |
+
|
5183 |
+
|
5184 |
+
|
5185 |
+
|
5186 |
+
.offset-lg-2 {
|
5187 |
+
|
5188 |
+
|
5189 |
+
margin-left: 16.666667%
|
5190 |
+
|
5191 |
+
|
5192 |
+
}
|
5193 |
+
|
5194 |
+
|
5195 |
+
|
5196 |
+
|
5197 |
+
|
5198 |
+
.offset-lg-3 {
|
5199 |
+
|
5200 |
+
|
5201 |
+
margin-left: 25%
|
5202 |
+
|
5203 |
+
|
5204 |
+
}
|
5205 |
+
|
5206 |
+
|
5207 |
+
|
5208 |
+
|
5209 |
+
|
5210 |
+
.offset-lg-4 {
|
5211 |
+
|
5212 |
+
|
5213 |
+
margin-left: 33.333333%
|
5214 |
+
|
5215 |
+
|
5216 |
+
}
|
5217 |
+
|
5218 |
+
|
5219 |
+
|
5220 |
+
|
5221 |
+
|
5222 |
+
.offset-lg-5 {
|
5223 |
+
|
5224 |
+
|
5225 |
+
margin-left: 41.666667%
|
5226 |
+
|
5227 |
+
|
5228 |
+
}
|
5229 |
+
|
5230 |
+
|
5231 |
+
|
5232 |
+
|
5233 |
+
|
5234 |
+
.offset-lg-6 {
|
5235 |
+
|
5236 |
+
|
5237 |
+
margin-left: 50%
|
5238 |
+
|
5239 |
+
|
5240 |
+
}
|
5241 |
+
|
5242 |
+
|
5243 |
+
|
5244 |
+
|
5245 |
+
|
5246 |
+
.offset-lg-7 {
|
5247 |
+
|
5248 |
+
|
5249 |
+
margin-left: 58.333333%
|
5250 |
+
|
5251 |
+
|
5252 |
+
}
|
5253 |
+
|
5254 |
+
|
5255 |
+
|
5256 |
+
|
5257 |
+
|
5258 |
+
.offset-lg-8 {
|
5259 |
+
|
5260 |
+
|
5261 |
+
margin-left: 66.666667%
|
5262 |
+
|
5263 |
+
|
5264 |
+
}
|
5265 |
+
|
5266 |
+
|
5267 |
+
|
5268 |
+
|
5269 |
+
|
5270 |
+
.offset-lg-9 {
|
5271 |
+
|
5272 |
+
|
5273 |
+
margin-left: 75%
|
5274 |
+
|
5275 |
+
|
5276 |
+
}
|
5277 |
+
|
5278 |
+
|
5279 |
+
|
5280 |
+
|
5281 |
+
|
5282 |
+
.offset-lg-10 {
|
5283 |
+
|
5284 |
+
|
5285 |
+
margin-left: 83.333333%
|
5286 |
+
|
5287 |
+
|
5288 |
+
}
|
5289 |
+
|
5290 |
+
|
5291 |
+
|
5292 |
+
|
5293 |
+
|
5294 |
+
.offset-lg-11 {
|
5295 |
+
|
5296 |
+
|
5297 |
+
margin-left: 91.666667%
|
5298 |
+
|
5299 |
+
|
5300 |
+
}
|
5301 |
+
|
5302 |
+
|
5303 |
+
}
|
5304 |
+
|
5305 |
+
|
5306 |
+
|
5307 |
+
|
5308 |
+
|
5309 |
+
@media (min-width: 1200px) {
|
5310 |
+
|
5311 |
+
|
5312 |
+
.col-xl {
|
5313 |
+
|
5314 |
+
|
5315 |
+
-ms-flex-preferred-size: 0;
|
5316 |
+
|
5317 |
+
|
5318 |
+
flex-basis: 0;
|
5319 |
+
|
5320 |
+
|
5321 |
+
-webkit-box-flex: 1;
|
5322 |
+
|
5323 |
+
|
5324 |
+
-ms-flex-positive: 1;
|
5325 |
+
|
5326 |
+
|
5327 |
+
flex-grow: 1;
|
5328 |
+
|
5329 |
+
|
5330 |
+
max-width: 100%
|
5331 |
+
|
5332 |
+
|
5333 |
+
}
|
5334 |
+
|
5335 |
+
|
5336 |
+
|
5337 |
+
|
5338 |
+
|
5339 |
+
.col-xl-auto {
|
5340 |
+
|
5341 |
+
|
5342 |
+
-webkit-box-flex: 0;
|
5343 |
+
|
5344 |
+
|
5345 |
+
-ms-flex: 0 0 auto;
|
5346 |
+
|
5347 |
+
|
5348 |
+
flex: 0 0 auto;
|
5349 |
+
|
5350 |
+
|
5351 |
+
width: auto;
|
5352 |
+
|
5353 |
+
|
5354 |
+
max-width: none
|
5355 |
+
|
5356 |
+
|
5357 |
+
}
|
5358 |
+
|
5359 |
+
|
5360 |
+
|
5361 |
+
|
5362 |
+
|
5363 |
+
.col-xl-1 {
|
5364 |
+
|
5365 |
+
|
5366 |
+
-webkit-box-flex: 0;
|
5367 |
+
|
5368 |
+
|
5369 |
+
-ms-flex: 0 0 8.333333%;
|
5370 |
+
|
5371 |
+
|
5372 |
+
flex: 0 0 8.333333%;
|
5373 |
+
|
5374 |
+
|
5375 |
+
max-width: 8.333333%
|
5376 |
+
|
5377 |
+
|
5378 |
+
}
|
5379 |
+
|
5380 |
+
|
5381 |
+
|
5382 |
+
|
5383 |
+
|
5384 |
+
.col-xl-2 {
|
5385 |
+
|
5386 |
+
|
5387 |
+
-webkit-box-flex: 0;
|
5388 |
+
|
5389 |
+
|
5390 |
+
-ms-flex: 0 0 16.666667%;
|
5391 |
+
|
5392 |
+
|
5393 |
+
flex: 0 0 16.666667%;
|
5394 |
+
|
5395 |
+
|
5396 |
+
max-width: 16.666667%
|
5397 |
+
|
5398 |
+
|
5399 |
+
}
|
5400 |
+
|
5401 |
+
|
5402 |
+
|
5403 |
+
|
5404 |
+
|
5405 |
+
.col-xl-3 {
|
5406 |
+
|
5407 |
+
|
5408 |
+
-webkit-box-flex: 0;
|
5409 |
+
|
5410 |
+
|
5411 |
+
-ms-flex: 0 0 25%;
|
5412 |
+
|
5413 |
+
|
5414 |
+
flex: 0 0 25%;
|
5415 |
+
|
5416 |
+
|
5417 |
+
max-width: 25%
|
5418 |
+
|
5419 |
+
|
5420 |
+
}
|
5421 |
+
|
5422 |
+
|
5423 |
+
|
5424 |
+
|
5425 |
+
|
5426 |
+
.col-xl-4 {
|
5427 |
+
|
5428 |
+
|
5429 |
+
-webkit-box-flex: 0;
|
5430 |
+
|
5431 |
+
|
5432 |
+
-ms-flex: 0 0 33.333333%;
|
5433 |
+
|
5434 |
+
|
5435 |
+
flex: 0 0 33.333333%;
|
5436 |
+
|
5437 |
+
|
5438 |
+
max-width: 33.333333%
|
5439 |
+
|
5440 |
+
|
5441 |
+
}
|
5442 |
+
|
5443 |
+
|
5444 |
+
|
5445 |
+
|
5446 |
+
|
5447 |
+
.col-xl-5 {
|
5448 |
+
|
5449 |
+
|
5450 |
+
-webkit-box-flex: 0;
|
5451 |
+
|
5452 |
+
|
5453 |
+
-ms-flex: 0 0 41.666667%;
|
5454 |
+
|
5455 |
+
|
5456 |
+
flex: 0 0 41.666667%;
|
5457 |
+
|
5458 |
+
|
5459 |
+
max-width: 41.666667%
|
5460 |
+
|
5461 |
+
|
5462 |
+
}
|
5463 |
+
|
5464 |
+
|
5465 |
+
|
5466 |
+
|
5467 |
+
|
5468 |
+
.col-xl-6 {
|
5469 |
+
|
5470 |
+
|
5471 |
+
-webkit-box-flex: 0;
|
5472 |
+
|
5473 |
+
|
5474 |
+
-ms-flex: 0 0 50%;
|
5475 |
+
|
5476 |
+
|
5477 |
+
flex: 0 0 50%;
|
5478 |
+
|
5479 |
+
|
5480 |
+
max-width: 50%
|
5481 |
+
|
5482 |
+
|
5483 |
+
}
|
5484 |
+
|
5485 |
+
|
5486 |
+
|
5487 |
+
|
5488 |
+
|
5489 |
+
.col-xl-7 {
|
5490 |
+
|
5491 |
+
|
5492 |
+
-webkit-box-flex: 0;
|
5493 |
+
|
5494 |
+
|
5495 |
+
-ms-flex: 0 0 58.333333%;
|
5496 |
+
|
5497 |
+
|
5498 |
+
flex: 0 0 58.333333%;
|
5499 |
+
|
5500 |
+
|
5501 |
+
max-width: 58.333333%
|
5502 |
+
|
5503 |
+
|
5504 |
+
}
|
5505 |
+
|
5506 |
+
|
5507 |
+
|
5508 |
+
|
5509 |
+
|
5510 |
+
.col-xl-8 {
|
5511 |
+
|
5512 |
+
|
5513 |
+
-webkit-box-flex: 0;
|
5514 |
+
|
5515 |
+
|
5516 |
+
-ms-flex: 0 0 66.666667%;
|
5517 |
+
|
5518 |
+
|
5519 |
+
flex: 0 0 66.666667%;
|
5520 |
+
|
5521 |
+
|
5522 |
+
max-width: 66.666667%
|
5523 |
+
|
5524 |
+
|
5525 |
+
}
|
5526 |
+
|
5527 |
+
|
5528 |
+
|
5529 |
+
|
5530 |
+
|
5531 |
+
.col-xl-9 {
|
5532 |
+
|
5533 |
+
|
5534 |
+
-webkit-box-flex: 0;
|
5535 |
+
|
5536 |
+
|
5537 |
+
-ms-flex: 0 0 75%;
|
5538 |
+
|
5539 |
+
|
5540 |
+
flex: 0 0 75%;
|
5541 |
+
|
5542 |
+
|
5543 |
+
max-width: 75%
|
5544 |
+
|
5545 |
+
|
5546 |
+
}
|
5547 |
+
|
5548 |
+
|
5549 |
+
|
5550 |
+
|
5551 |
+
|
5552 |
+
.col-xl-10 {
|
5553 |
+
|
5554 |
+
|
5555 |
+
-webkit-box-flex: 0;
|
5556 |
+
|
5557 |
+
|
5558 |
+
-ms-flex: 0 0 83.333333%;
|
5559 |
+
|
5560 |
+
|
5561 |
+
flex: 0 0 83.333333%;
|
5562 |
+
|
5563 |
+
|
5564 |
+
max-width: 83.333333%
|
5565 |
+
|
5566 |
+
|
5567 |
+
}
|
5568 |
+
|
5569 |
+
|
5570 |
+
|
5571 |
+
|
5572 |
+
|
5573 |
+
.col-xl-11 {
|
5574 |
+
|
5575 |
+
|
5576 |
+
-webkit-box-flex: 0;
|
5577 |
+
|
5578 |
+
|
5579 |
+
-ms-flex: 0 0 91.666667%;
|
5580 |
+
|
5581 |
+
|
5582 |
+
flex: 0 0 91.666667%;
|
5583 |
+
|
5584 |
+
|
5585 |
+
max-width: 91.666667%
|
5586 |
+
|
5587 |
+
|
5588 |
+
}
|
5589 |
+
|
5590 |
+
|
5591 |
+
|
5592 |
+
|
5593 |
+
|
5594 |
+
.col-xl-12 {
|
5595 |
+
|
5596 |
+
|
5597 |
+
-webkit-box-flex: 0;
|
5598 |
+
|
5599 |
+
|
5600 |
+
-ms-flex: 0 0 100%;
|
5601 |
+
|
5602 |
+
|
5603 |
+
flex: 0 0 100%;
|
5604 |
+
|
5605 |
+
|
5606 |
+
max-width: 100%
|
5607 |
+
|
5608 |
+
|
5609 |
+
}
|
5610 |
+
|
5611 |
+
|
5612 |
+
}
|
5613 |
+
|
5614 |
+
|
5615 |
+
|
5616 |
+
|
5617 |
+
|
5618 |
+
|
5619 |
+
|
5620 |
+
|
5621 |
+
.mo_otp_token, .mo2f_user_email, .mo2f_IR_phone,
|
5622 |
+
|
5623 |
+
|
5624 |
+
.mo_IR_otp_token, .mo2f_IR_GA_token, .mo2f_IR_phone_OTP {
|
5625 |
+
|
5626 |
+
|
5627 |
+
color:#212F3C;
|
5628 |
+
|
5629 |
+
|
5630 |
+
border:none;
|
5631 |
+
|
5632 |
+
|
5633 |
+
display:block;
|
5634 |
+
|
5635 |
+
|
5636 |
+
border-bottom-style: solid;
|
5637 |
+
|
5638 |
+
|
5639 |
+
border-width: 2px;
|
5640 |
+
|
5641 |
+
|
5642 |
+
border-color:#D0D3D4;
|
5643 |
+
|
5644 |
+
|
5645 |
+
border-radius:0px;
|
5646 |
+
|
5647 |
+
|
5648 |
+
outline:none;
|
5649 |
+
|
5650 |
+
|
5651 |
+
padding:5px;
|
5652 |
+
|
5653 |
+
|
5654 |
+
}
|
5655 |
+
|
5656 |
+
|
5657 |
+
|
5658 |
+
|
5659 |
+
|
5660 |
+
.mo_otp_token {
|
5661 |
+
|
5662 |
+
|
5663 |
+
font-size:15px;
|
5664 |
+
|
5665 |
+
|
5666 |
+
width:130px;
|
5667 |
+
|
5668 |
+
|
5669 |
+
text-align:center;
|
5670 |
+
|
5671 |
+
|
5672 |
+
}
|
5673 |
+
|
5674 |
+
|
5675 |
+
|
5676 |
+
|
5677 |
+
|
5678 |
+
.mo2f_user_email{
|
5679 |
+
|
5680 |
+
|
5681 |
+
font-size:16px;
|
5682 |
+
|
5683 |
+
|
5684 |
+
width:220px;
|
5685 |
+
|
5686 |
+
|
5687 |
+
text-align:center;
|
5688 |
+
|
5689 |
+
|
5690 |
+
}
|
5691 |
+
|
5692 |
+
|
5693 |
+
|
5694 |
+
|
5695 |
+
|
5696 |
+
.mo2f_IR_phone{
|
5697 |
+
|
5698 |
+
|
5699 |
+
font-size:14px;
|
5700 |
+
|
5701 |
+
|
5702 |
+
width:170px !important;
|
5703 |
+
|
5704 |
+
|
5705 |
+
}
|
5706 |
+
|
5707 |
+
|
5708 |
+
|
5709 |
+
|
5710 |
+
|
5711 |
+
.mo2f_IR_GA_token{
|
5712 |
+
|
5713 |
+
|
5714 |
+
font-size:15px;
|
5715 |
+
|
5716 |
+
|
5717 |
+
width:100px !important;
|
5718 |
+
|
5719 |
+
|
5720 |
+
}
|
5721 |
+
|
5722 |
+
|
5723 |
+
|
5724 |
+
|
5725 |
+
|
5726 |
+
.mo2f_IR_phone_OTP{
|
5727 |
+
|
5728 |
+
|
5729 |
+
font-size:15px;
|
5730 |
+
|
5731 |
+
|
5732 |
+
width:150px !important;
|
5733 |
+
|
5734 |
+
|
5735 |
}
|
includes/css/button_styles.css
CHANGED
@@ -1,111 +1,111 @@
|
|
1 |
-
.mo_wpns_switch {
|
2 |
-
position: relative;
|
3 |
-
display: inline-block;
|
4 |
-
width: 60px;
|
5 |
-
height: 34px;
|
6 |
-
}
|
7 |
-
|
8 |
-
.mo_wpns_switch input {
|
9 |
-
opacity: 0;
|
10 |
-
width: 0;
|
11 |
-
height: 0;
|
12 |
-
}
|
13 |
-
|
14 |
-
.mo_wpns_slider {
|
15 |
-
position: absolute;
|
16 |
-
cursor: pointer;
|
17 |
-
top: 0;
|
18 |
-
left: 0;
|
19 |
-
right: 0;
|
20 |
-
bottom: 0;
|
21 |
-
background-color: #ccc;
|
22 |
-
-webkit-transition: .4s;
|
23 |
-
transition: .4s;
|
24 |
-
}
|
25 |
-
|
26 |
-
.mo_wpns_slider:before {
|
27 |
-
position: absolute;
|
28 |
-
content: "";
|
29 |
-
height: 26px;
|
30 |
-
width: 26px;
|
31 |
-
left: 4px;
|
32 |
-
bottom: 4px;
|
33 |
-
background-color: white;
|
34 |
-
-webkit-transition: .4s;
|
35 |
-
transition: .4s;
|
36 |
-
}
|
37 |
-
|
38 |
-
input:checked + .mo_wpns_slider {
|
39 |
-
background-color: #20b2aa;
|
40 |
-
}
|
41 |
-
|
42 |
-
input:focus + .mo_wpns_slider {
|
43 |
-
box-shadow: 0 0 1px #20b2aa;
|
44 |
-
}
|
45 |
-
|
46 |
-
input:checked + .mo_wpns_slider:before {
|
47 |
-
-webkit-transform: translateX(26px);
|
48 |
-
-ms-transform: translateX(26px);
|
49 |
-
transform: translateX(26px);
|
50 |
-
}
|
51 |
-
|
52 |
-
/* Rounded sliders */
|
53 |
-
.mo_wpns_slider.mo_wpns_round {
|
54 |
-
border-radius: 34px;
|
55 |
-
}
|
56 |
-
|
57 |
-
.mo_wpns_slider.mo_wpns_round:before {
|
58 |
-
border-radius: 50%;
|
59 |
-
}
|
60 |
-
.mo_wpns_switch_small {
|
61 |
-
position: relative;
|
62 |
-
display: inline-block;
|
63 |
-
width: 44px;
|
64 |
-
height: 24px;
|
65 |
-
}
|
66 |
-
.mo_wpns_switch_small input {
|
67 |
-
opacity: 0;
|
68 |
-
width: 0;
|
69 |
-
height: 0;
|
70 |
-
}
|
71 |
-
.mo_wpns_slider_small {
|
72 |
-
position: absolute;
|
73 |
-
cursor: pointer;
|
74 |
-
top: 0;
|
75 |
-
left: 0;
|
76 |
-
right: 0;
|
77 |
-
bottom: 0;
|
78 |
-
background-color: #ccc;
|
79 |
-
-webkit-transition: .4s;
|
80 |
-
transition: .4s;
|
81 |
-
}
|
82 |
-
.mo_wpns_slider_small:before {
|
83 |
-
position: absolute;
|
84 |
-
content: "";
|
85 |
-
height: 18px;
|
86 |
-
width: 18px;
|
87 |
-
left: 3px;
|
88 |
-
bottom: 3px;
|
89 |
-
background-color: white;
|
90 |
-
-webkit-transition: .4s;
|
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 {
|
101 |
-
-webkit-transform: translateX(17px);
|
102 |
-
-ms-transform: translateX(17px);
|
103 |
-
transform: translateX(17px);
|
104 |
-
}
|
105 |
-
.mo_wpns_slider_small.mo_wpns_round_small {
|
106 |
-
border-radius: 24px;
|
107 |
-
}
|
108 |
-
|
109 |
-
.mo_wpns_slider_small.mo_wpns_round_small:before {
|
110 |
-
border-radius: 50%;
|
111 |
}
|
1 |
+
.mo_wpns_switch {
|
2 |
+
position: relative;
|
3 |
+
display: inline-block;
|
4 |
+
width: 60px;
|
5 |
+
height: 34px;
|
6 |
+
}
|
7 |
+
|
8 |
+
.mo_wpns_switch input {
|
9 |
+
opacity: 0;
|
10 |
+
width: 0;
|
11 |
+
height: 0;
|
12 |
+
}
|
13 |
+
|
14 |
+
.mo_wpns_slider {
|
15 |
+
position: absolute;
|
16 |
+
cursor: pointer;
|
17 |
+
top: 0;
|
18 |
+
left: 0;
|
19 |
+
right: 0;
|
20 |
+
bottom: 0;
|
21 |
+
background-color: #ccc;
|
22 |
+
-webkit-transition: .4s;
|
23 |
+
transition: .4s;
|
24 |
+
}
|
25 |
+
|
26 |
+
.mo_wpns_slider:before {
|
27 |
+
position: absolute;
|
28 |
+
content: "";
|
29 |
+
height: 26px;
|
30 |
+
width: 26px;
|
31 |
+
left: 4px;
|
32 |
+
bottom: 4px;
|
33 |
+
background-color: white;
|
34 |
+
-webkit-transition: .4s;
|
35 |
+
transition: .4s;
|
36 |
+
}
|
37 |
+
|
38 |
+
input:checked + .mo_wpns_slider {
|
39 |
+
background-color: #20b2aa;
|
40 |
+
}
|
41 |
+
|
42 |
+
input:focus + .mo_wpns_slider {
|
43 |
+
box-shadow: 0 0 1px #20b2aa;
|
44 |
+
}
|
45 |
+
|
46 |
+
input:checked + .mo_wpns_slider:before {
|
47 |
+
-webkit-transform: translateX(26px);
|
48 |
+
-ms-transform: translateX(26px);
|
49 |
+
transform: translateX(26px);
|
50 |
+
}
|
51 |
+
|
52 |
+
/* Rounded sliders */
|
53 |
+
.mo_wpns_slider.mo_wpns_round {
|
54 |
+
border-radius: 34px;
|
55 |
+
}
|
56 |
+
|
57 |
+
.mo_wpns_slider.mo_wpns_round:before {
|
58 |
+
border-radius: 50%;
|
59 |
+
}
|
60 |
+
.mo_wpns_switch_small {
|
61 |
+
position: relative;
|
62 |
+
display: inline-block;
|
63 |
+
width: 44px;
|
64 |
+
height: 24px;
|
65 |
+
}
|
66 |
+
.mo_wpns_switch_small input {
|
67 |
+
opacity: 0;
|
68 |
+
width: 0;
|
69 |
+
height: 0;
|
70 |
+
}
|
71 |
+
.mo_wpns_slider_small {
|
72 |
+
position: absolute;
|
73 |
+
cursor: pointer;
|
74 |
+
top: 0;
|
75 |
+
left: 0;
|
76 |
+
right: 0;
|
77 |
+
bottom: 0;
|
78 |
+
background-color: #ccc;
|
79 |
+
-webkit-transition: .4s;
|
80 |
+
transition: .4s;
|
81 |
+
}
|
82 |
+
.mo_wpns_slider_small:before {
|
83 |
+
position: absolute;
|
84 |
+
content: "";
|
85 |
+
height: 18px;
|
86 |
+
width: 18px;
|
87 |
+
left: 3px;
|
88 |
+
bottom: 3px;
|
89 |
+
background-color: white;
|
90 |
+
-webkit-transition: .4s;
|
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 {
|
101 |
+
-webkit-transform: translateX(17px);
|
102 |
+
-ms-transform: translateX(17px);
|
103 |
+
transform: translateX(17px);
|
104 |
+
}
|
105 |
+
.mo_wpns_slider_small.mo_wpns_round_small {
|
106 |
+
border-radius: 24px;
|
107 |
+
}
|
108 |
+
|
109 |
+
.mo_wpns_slider_small.mo_wpns_round_small:before {
|
110 |
+
border-radius: 50%;
|
111 |
}
|
includes/css/front_end_login.css
CHANGED
@@ -1,618 +1,618 @@
|
|
1 |
-
.mo2f_powered_by_miniorange {
|
2 |
-
|
3 |
-
|
4 |
-
width: 100px;
|
5 |
-
|
6 |
-
|
7 |
-
height: 30px;
|
8 |
-
|
9 |
-
|
10 |
-
-webkit-background-size: 100px 25px;
|
11 |
-
|
12 |
-
|
13 |
-
background-size: 100px 25px;
|
14 |
-
|
15 |
-
|
16 |
-
background-repeat: no-repeat;
|
17 |
-
|
18 |
-
|
19 |
-
display: inline-block;
|
20 |
-
|
21 |
-
|
22 |
-
vertical-align: middle;
|
23 |
-
|
24 |
-
|
25 |
-
}
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
.mo2f_powered_by_div {
|
32 |
-
|
33 |
-
|
34 |
-
text-align: right;
|
35 |
-
|
36 |
-
|
37 |
-
font-size: 9px;
|
38 |
-
|
39 |
-
|
40 |
-
padding-right: 5px;
|
41 |
-
|
42 |
-
|
43 |
-
background-color: #FFFFFF;
|
44 |
-
|
45 |
-
|
46 |
-
width: 92%;
|
47 |
-
|
48 |
-
|
49 |
-
border-radius: 6px;
|
50 |
-
|
51 |
-
|
52 |
-
}
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
.mo2f-login-container {
|
59 |
-
|
60 |
-
|
61 |
-
display: inline-block !important;
|
62 |
-
|
63 |
-
|
64 |
-
display: -moz-inline-stack !important;
|
65 |
-
|
66 |
-
|
67 |
-
text-align: center !important;
|
68 |
-
|
69 |
-
|
70 |
-
width: 100%;
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
}
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
.mo2f-textbox {
|
83 |
-
|
84 |
-
|
85 |
-
width: 160px;
|
86 |
-
|
87 |
-
|
88 |
-
margin: 15px 0px !important;
|
89 |
-
|
90 |
-
|
91 |
-
background-color: rgba(123, 110, 110, 0.06) !important;
|
92 |
-
|
93 |
-
|
94 |
-
border-radius: 4px !important;
|
95 |
-
|
96 |
-
|
97 |
-
padding: 3px !important;
|
98 |
-
|
99 |
-
|
100 |
-
}
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
.mo2f-button {
|
107 |
-
|
108 |
-
|
109 |
-
width: 100% !important;
|
110 |
-
|
111 |
-
|
112 |
-
color: #fff !important;
|
113 |
-
|
114 |
-
|
115 |
-
line-height: normal;
|
116 |
-
|
117 |
-
|
118 |
-
height: 30px !important;
|
119 |
-
|
120 |
-
|
121 |
-
margin: 0px !important;
|
122 |
-
|
123 |
-
|
124 |
-
font-size: 14px !important;
|
125 |
-
|
126 |
-
|
127 |
-
padding: 7px !important;
|
128 |
-
|
129 |
-
|
130 |
-
background-color: #f0ad4e !important;
|
131 |
-
|
132 |
-
|
133 |
-
border-color: #eea236 !important;
|
134 |
-
|
135 |
-
|
136 |
-
-webkit-appearance: none;
|
137 |
-
|
138 |
-
|
139 |
-
-webkit-border-radius: 3px !important;
|
140 |
-
|
141 |
-
|
142 |
-
border-radius: 3px !important;
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
}
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
.mo2fa_display_message_login {
|
155 |
-
|
156 |
-
|
157 |
-
text-align: left !important;
|
158 |
-
|
159 |
-
|
160 |
-
font-size: 13px !important;
|
161 |
-
|
162 |
-
|
163 |
-
}
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
.mo2f-link {
|
170 |
-
|
171 |
-
|
172 |
-
color: #0191BF !important;
|
173 |
-
|
174 |
-
|
175 |
-
font-size: 14px !important;
|
176 |
-
|
177 |
-
|
178 |
-
font-weight: bold !important;
|
179 |
-
|
180 |
-
|
181 |
-
cursor: pointer !important;
|
182 |
-
|
183 |
-
|
184 |
-
}
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
.mo_green {
|
191 |
-
|
192 |
-
|
193 |
-
background: #2ECC71 !important;
|
194 |
-
|
195 |
-
|
196 |
-
border-color: #2ECC71 !important;
|
197 |
-
|
198 |
-
|
199 |
-
width: 26% !important;
|
200 |
-
|
201 |
-
|
202 |
-
border-width: 1px;
|
203 |
-
|
204 |
-
|
205 |
-
vertical-align: middle !important;
|
206 |
-
|
207 |
-
|
208 |
-
border-radius: 3px !important;
|
209 |
-
|
210 |
-
|
211 |
-
color: white;
|
212 |
-
|
213 |
-
|
214 |
-
height: 30px;
|
215 |
-
|
216 |
-
|
217 |
-
cursor: pointer;
|
218 |
-
|
219 |
-
|
220 |
-
}
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
.mo_red {
|
227 |
-
|
228 |
-
|
229 |
-
background: #E74C3C !important;
|
230 |
-
|
231 |
-
|
232 |
-
border-color: #E74C3C !important;
|
233 |
-
|
234 |
-
|
235 |
-
width: 26% !important;
|
236 |
-
|
237 |
-
|
238 |
-
border-width: 1px;
|
239 |
-
|
240 |
-
|
241 |
-
vertical-align: middle !important;
|
242 |
-
|
243 |
-
|
244 |
-
border-radius: 3px !important;
|
245 |
-
|
246 |
-
|
247 |
-
color: white;
|
248 |
-
|
249 |
-
|
250 |
-
height: 30px;
|
251 |
-
|
252 |
-
|
253 |
-
cursor: pointer;
|
254 |
-
|
255 |
-
|
256 |
-
}
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
.showQRHelp, .showOTPHelp {
|
263 |
-
|
264 |
-
|
265 |
-
text-align: center !important;
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
}
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
.mo2f_device {
|
278 |
-
|
279 |
-
|
280 |
-
padding-left: 200 px !important;
|
281 |
-
|
282 |
-
|
283 |
-
vertical-align: -webkit-baseline-middle !important;
|
284 |
-
|
285 |
-
|
286 |
-
line-height: 3 !important;
|
287 |
-
|
288 |
-
|
289 |
-
}
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
.miniorange-button {
|
296 |
-
|
297 |
-
|
298 |
-
height: 30px;
|
299 |
-
|
300 |
-
|
301 |
-
font-size: 14px !important;
|
302 |
-
|
303 |
-
|
304 |
-
line-height: 5px !important;
|
305 |
-
|
306 |
-
|
307 |
-
padding: 16px !important;
|
308 |
-
|
309 |
-
|
310 |
-
border-width: 1px;
|
311 |
-
|
312 |
-
|
313 |
-
vertical-align: middle !important;
|
314 |
-
|
315 |
-
|
316 |
-
background-color: #f0ad4e !important;
|
317 |
-
|
318 |
-
|
319 |
-
border-color: #eea236 !important;
|
320 |
-
|
321 |
-
|
322 |
-
-webkit-appearance: none;
|
323 |
-
|
324 |
-
|
325 |
-
border-style: solid;
|
326 |
-
|
327 |
-
|
328 |
-
-webkit-border-radius: 3px !important;
|
329 |
-
|
330 |
-
|
331 |
-
border-radius: 3px !important;
|
332 |
-
|
333 |
-
|
334 |
-
white-space: nowrap;
|
335 |
-
|
336 |
-
|
337 |
-
-webkit-box-sizing: border-box;
|
338 |
-
|
339 |
-
|
340 |
-
-moz-box-sizing: border-box;
|
341 |
-
|
342 |
-
|
343 |
-
box-sizing: border-box;
|
344 |
-
|
345 |
-
|
346 |
-
color: #fff;
|
347 |
-
|
348 |
-
|
349 |
-
text-decoration: none;
|
350 |
-
|
351 |
-
|
352 |
-
cursor: pointer;
|
353 |
-
|
354 |
-
|
355 |
-
}
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
.mo_hr {
|
362 |
-
|
363 |
-
|
364 |
-
border-top: 1px solid rgba(220, 214, 214, 0.25) !important;
|
365 |
-
|
366 |
-
|
367 |
-
margin-top: 5px !important;
|
368 |
-
|
369 |
-
|
370 |
-
margin-right: 10px !important;
|
371 |
-
|
372 |
-
|
373 |
-
}
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
.mo_margin_left {
|
380 |
-
|
381 |
-
|
382 |
-
margin-left: 20px !important;
|
383 |
-
|
384 |
-
|
385 |
-
}
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
.mo_app_link {
|
392 |
-
|
393 |
-
|
394 |
-
text-decoration: none !important;
|
395 |
-
|
396 |
-
|
397 |
-
color: #000 !important;
|
398 |
-
|
399 |
-
|
400 |
-
}
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
.mo2f_td_show {
|
407 |
-
|
408 |
-
|
409 |
-
display: grid !important;
|
410 |
-
|
411 |
-
|
412 |
-
}
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
.mo2f_td_hide {
|
419 |
-
|
420 |
-
|
421 |
-
display: none !important;
|
422 |
-
|
423 |
-
|
424 |
-
}
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
.mo2f_label {
|
431 |
-
|
432 |
-
|
433 |
-
font-weight: 100 !important;
|
434 |
-
|
435 |
-
|
436 |
-
margin-left: 10px !important;
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
}
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
.mo2f_kba_ques {
|
449 |
-
|
450 |
-
|
451 |
-
width: 394px !important;
|
452 |
-
|
453 |
-
|
454 |
-
border-radius: 4px !important;
|
455 |
-
|
456 |
-
|
457 |
-
height: 40px !important;
|
458 |
-
|
459 |
-
|
460 |
-
font-size: 14px !important;
|
461 |
-
|
462 |
-
|
463 |
-
}
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
.mo2f_kba_table {
|
470 |
-
|
471 |
-
|
472 |
-
padding: 0 10px;
|
473 |
-
|
474 |
-
|
475 |
-
width: 100%;
|
476 |
-
|
477 |
-
|
478 |
-
border: hidden !important;
|
479 |
-
|
480 |
-
|
481 |
-
}
|
482 |
-
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
.mo2f_kba_tb_data {
|
488 |
-
|
489 |
-
|
490 |
-
padding-left: 15px;
|
491 |
-
|
492 |
-
|
493 |
-
}
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
.mo2f_table_textbox_1 {
|
500 |
-
|
501 |
-
|
502 |
-
width: 150px;
|
503 |
-
|
504 |
-
|
505 |
-
height: 30px !important;
|
506 |
-
|
507 |
-
|
508 |
-
font-size: 14px !important;
|
509 |
-
|
510 |
-
|
511 |
-
}
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
.mo2f_table_textbox {
|
518 |
-
|
519 |
-
|
520 |
-
width: 200px;
|
521 |
-
|
522 |
-
|
523 |
-
height: 40px !important;
|
524 |
-
|
525 |
-
|
526 |
-
font-size: 14px !important;
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
|
531 |
-
|
532 |
-
}
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
.mo2f_kba_header {
|
539 |
-
|
540 |
-
|
541 |
-
font-weight: bold;
|
542 |
-
|
543 |
-
|
544 |
-
border: hidden !important;
|
545 |
-
|
546 |
-
|
547 |
-
}
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
.mo2f_kba_body {
|
554 |
-
|
555 |
-
|
556 |
-
border: hidden !important;
|
557 |
-
|
558 |
-
|
559 |
-
}
|
560 |
-
|
561 |
-
|
562 |
-
|
563 |
-
|
564 |
-
|
565 |
-
.mo2f_separator {
|
566 |
-
|
567 |
-
|
568 |
-
border-left: 1px solid #EBECEC;
|
569 |
-
|
570 |
-
|
571 |
-
padding: 5px;
|
572 |
-
|
573 |
-
|
574 |
-
}
|
575 |
-
|
576 |
-
|
577 |
-
|
578 |
-
|
579 |
-
|
580 |
-
.mo2f_authn_header {
|
581 |
-
|
582 |
-
|
583 |
-
font-size: 14px !important;
|
584 |
-
|
585 |
-
|
586 |
-
}
|
587 |
-
|
588 |
-
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
#mo2f_inline_table {
|
593 |
-
|
594 |
-
|
595 |
-
border: hidden !important;
|
596 |
-
|
597 |
-
|
598 |
-
}
|
599 |
-
|
600 |
-
|
601 |
-
|
602 |
-
|
603 |
-
|
604 |
-
.mo2f_ordered_list {
|
605 |
-
|
606 |
-
|
607 |
-
margin: 0 0 0 1em !important;
|
608 |
-
|
609 |
-
|
610 |
-
}
|
611 |
-
|
612 |
-
.mo2f_list {
|
613 |
-
|
614 |
-
|
615 |
-
font-size: 14px !important;
|
616 |
-
|
617 |
-
|
618 |
-
}
|
1 |
+
.mo2f_powered_by_miniorange {
|
2 |
+
|
3 |
+
|
4 |
+
width: 100px;
|
5 |
+
|
6 |
+
|
7 |
+
height: 30px;
|
8 |
+
|
9 |
+
|
10 |
+
-webkit-background-size: 100px 25px;
|
11 |
+
|
12 |
+
|
13 |
+
background-size: 100px 25px;
|
14 |
+
|
15 |
+
|
16 |
+
background-repeat: no-repeat;
|
17 |
+
|
18 |
+
|
19 |
+
display: inline-block;
|
20 |
+
|
21 |
+
|
22 |
+
vertical-align: middle;
|
23 |
+
|
24 |
+
|
25 |
+
}
|
26 |
+
|
27 |
+
|
28 |
+
|
29 |
+
|
30 |
+
|
31 |
+
.mo2f_powered_by_div {
|
32 |
+
|
33 |
+
|
34 |
+
text-align: right;
|
35 |
+
|
36 |
+
|
37 |
+
font-size: 9px;
|
38 |
+
|
39 |
+
|
40 |
+
padding-right: 5px;
|
41 |
+
|
42 |
+
|
43 |
+
background-color: #FFFFFF;
|
44 |
+
|
45 |
+
|
46 |
+
width: 92%;
|
47 |
+
|
48 |
+
|
49 |
+
border-radius: 6px;
|
50 |
+
|
51 |
+
|
52 |
+
}
|
53 |
+
|
54 |
+
|
55 |
+
|
56 |
+
|
57 |
+
|
58 |
+
.mo2f-login-container {
|
59 |
+
|
60 |
+
|
61 |
+
display: inline-block !important;
|
62 |
+
|
63 |
+
|
64 |
+
display: -moz-inline-stack !important;
|
65 |
+
|
66 |
+
|
67 |
+
text-align: center !important;
|
68 |
+
|
69 |
+
|
70 |
+
width: 100%;
|
71 |
+
|
72 |
+
|
73 |
+
|
74 |
+
|
75 |
+
|
76 |
+
}
|
77 |
+
|
78 |
+
|
79 |
+
|
80 |
+
|
81 |
+
|
82 |
+
.mo2f-textbox {
|
83 |
+
|
84 |
+
|
85 |
+
width: 160px;
|
86 |
+
|
87 |
+
|
88 |
+
margin: 15px 0px !important;
|
89 |
+
|
90 |
+
|
91 |
+
background-color: rgba(123, 110, 110, 0.06) !important;
|
92 |
+
|
93 |
+
|
94 |
+
border-radius: 4px !important;
|
95 |
+
|
96 |
+
|
97 |
+
padding: 3px !important;
|
98 |
+
|
99 |
+
|
100 |
+
}
|
101 |
+
|
102 |
+
|
103 |
+
|
104 |
+
|
105 |
+
|
106 |
+
.mo2f-button {
|
107 |
+
|
108 |
+
|
109 |
+
width: 100% !important;
|
110 |
+
|
111 |
+
|
112 |
+
color: #fff !important;
|
113 |
+
|
114 |
+
|
115 |
+
line-height: normal;
|
116 |
+
|
117 |
+
|
118 |
+
height: 30px !important;
|
119 |
+
|
120 |
+
|
121 |
+
margin: 0px !important;
|
122 |
+
|
123 |
+
|
124 |
+
font-size: 14px !important;
|
125 |
+
|
126 |
+
|
127 |
+
padding: 7px !important;
|
128 |
+
|
129 |
+
|
130 |
+
background-color: #f0ad4e !important;
|
131 |
+
|
132 |
+
|
133 |
+
border-color: #eea236 !important;
|
134 |
+
|
135 |
+
|
136 |
+
-webkit-appearance: none;
|
137 |
+
|
138 |
+
|
139 |
+
-webkit-border-radius: 3px !important;
|
140 |
+
|
141 |
+
|
142 |
+
border-radius: 3px !important;
|
143 |
+
|
144 |
+
|
145 |
+
|
146 |
+
|
147 |
+
|
148 |
+
}
|
149 |
+
|
150 |
+
|
151 |
+
|
152 |
+
|
153 |
+
|
154 |
+
.mo2fa_display_message_login {
|
155 |
+
|
156 |
+
|
157 |
+
text-align: left !important;
|
158 |
+
|
159 |
+
|
160 |
+
font-size: 13px !important;
|
161 |
+
|
162 |
+
|
163 |
+
}
|
164 |
+
|
165 |
+
|
166 |
+
|
167 |
+
|
168 |
+
|
169 |
+
.mo2f-link {
|
170 |
+
|
171 |
+
|
172 |
+
color: #0191BF !important;
|
173 |
+
|
174 |
+
|
175 |
+
font-size: 14px !important;
|
176 |
+
|
177 |
+
|
178 |
+
font-weight: bold !important;
|
179 |
+
|
180 |
+
|
181 |
+
cursor: pointer !important;
|
182 |
+
|
183 |
+
|
184 |
+
}
|
185 |
+
|
186 |
+
|
187 |
+
|
188 |
+
|
189 |
+
|
190 |
+
.mo_green {
|
191 |
+
|
192 |
+
|
193 |
+
background: #2ECC71 !important;
|
194 |
+
|
195 |
+
|
196 |
+
border-color: #2ECC71 !important;
|
197 |
+
|
198 |
+
|
199 |
+
width: 26% !important;
|
200 |
+
|
201 |
+
|
202 |
+
border-width: 1px;
|
203 |
+
|
204 |
+
|
205 |
+
vertical-align: middle !important;
|
206 |
+
|
207 |
+
|
208 |
+
border-radius: 3px !important;
|
209 |
+
|
210 |
+
|
211 |
+
color: white;
|
212 |
+
|
213 |
+
|
214 |
+
height: 30px;
|
215 |
+
|
216 |
+
|
217 |
+
cursor: pointer;
|
218 |
+
|
219 |
+
|
220 |
+
}
|
221 |
+
|
222 |
+
|
223 |
+
|
224 |
+
|
225 |
+
|
226 |
+
.mo_red {
|
227 |
+
|
228 |
+
|
229 |
+
background: #E74C3C !important;
|
230 |
+
|
231 |
+
|
232 |
+
border-color: #E74C3C !important;
|
233 |
+
|
234 |
+
|
235 |
+
width: 26% !important;
|
236 |
+
|
237 |
+
|
238 |
+
border-width: 1px;
|
239 |
+
|
240 |
+
|
241 |
+
vertical-align: middle !important;
|
242 |
+
|
243 |
+
|
244 |
+
border-radius: 3px !important;
|
245 |
+
|
246 |
+
|
247 |
+
color: white;
|
248 |
+
|
249 |
+
|
250 |
+
height: 30px;
|
251 |
+
|
252 |
+
|
253 |
+
cursor: pointer;
|
254 |
+
|
255 |
+
|
256 |
+
}
|
257 |
+
|
258 |
+
|
259 |
+
|
260 |
+
|
261 |
+
|
262 |
+
.showQRHelp, .showOTPHelp {
|
263 |
+
|
264 |
+
|
265 |
+
text-align: center !important;
|
266 |
+
|
267 |
+
|
268 |
+
|
269 |
+
|
270 |
+
|
271 |
+
}
|
272 |
+
|
273 |
+
|
274 |
+
|
275 |
+
|
276 |
+
|
277 |
+
.mo2f_device {
|
278 |
+
|
279 |
+
|
280 |
+
padding-left: 200 px !important;
|
281 |
+
|
282 |
+
|
283 |
+
vertical-align: -webkit-baseline-middle !important;
|
284 |
+
|
285 |
+
|
286 |
+
line-height: 3 !important;
|
287 |
+
|
288 |
+
|
289 |
+
}
|
290 |
+
|
291 |
+
|
292 |
+
|
293 |
+
|
294 |
+
|
295 |
+
.miniorange-button {
|
296 |
+
|
297 |
+
|
298 |
+
height: 30px;
|
299 |
+
|
300 |
+
|
301 |
+
font-size: 14px !important;
|
302 |
+
|
303 |
+
|
304 |
+
line-height: 5px !important;
|
305 |
+
|
306 |
+
|
307 |
+
padding: 16px !important;
|
308 |
+
|
309 |
+
|
310 |
+
border-width: 1px;
|
311 |
+
|
312 |
+
|
313 |
+
vertical-align: middle !important;
|
314 |
+
|
315 |
+
|
316 |
+
background-color: #f0ad4e !important;
|
317 |
+
|
318 |
+
|
319 |
+
border-color: #eea236 !important;
|
320 |
+
|
321 |
+
|
322 |
+
-webkit-appearance: none;
|
323 |
+
|
324 |
+
|
325 |
+
border-style: solid;
|
326 |
+
|
327 |
+
|
328 |
+
-webkit-border-radius: 3px !important;
|
329 |
+
|
330 |
+
|
331 |
+
border-radius: 3px !important;
|
332 |
+
|
333 |
+
|
334 |
+
white-space: nowrap;
|
335 |
+
|
336 |
+
|
337 |
+
-webkit-box-sizing: border-box;
|
338 |
+
|
339 |
+
|
340 |
+
-moz-box-sizing: border-box;
|
341 |
+
|
342 |
+
|
343 |
+
box-sizing: border-box;
|
344 |
+
|
345 |
+
|
346 |
+
color: #fff;
|
347 |
+
|
348 |
+
|
349 |
+
text-decoration: none;
|
350 |
+
|
351 |
+
|
352 |
+
cursor: pointer;
|
353 |
+
|
354 |
+
|
355 |
+
}
|
356 |
+
|
357 |
+
|
358 |
+
|
359 |
+
|
360 |
+
|
361 |
+
.mo_hr {
|
362 |
+
|
363 |
+
|
364 |
+
border-top: 1px solid rgba(220, 214, 214, 0.25) !important;
|
365 |
+
|
366 |
+
|
367 |
+
margin-top: 5px !important;
|
368 |
+
|
369 |
+
|
370 |
+
margin-right: 10px !important;
|
371 |
+
|
372 |
+
|
373 |
+
}
|
374 |
+
|
375 |
+
|
376 |
+
|
377 |
+
|
378 |
+
|
379 |
+
.mo_margin_left {
|
380 |
+
|
381 |
+
|
382 |
+
margin-left: 20px !important;
|
383 |
+
|
384 |
+
|
385 |
+
}
|
386 |
+
|
387 |
+
|
388 |
+
|
389 |
+
|
390 |
+
|
391 |
+
.mo_app_link {
|
392 |
+
|
393 |
+
|
394 |
+
text-decoration: none !important;
|
395 |
+
|
396 |
+
|
397 |
+
color: #000 !important;
|
398 |
+
|
399 |
+
|
400 |
+
}
|
401 |
+
|
402 |
+
|
403 |
+
|
404 |
+
|
405 |
+
|
406 |
+
.mo2f_td_show {
|
407 |
+
|
408 |
+
|
409 |
+
display: grid !important;
|
410 |
+
|
411 |
+
|
412 |
+
}
|
413 |
+
|
414 |
+
|
415 |
+
|
416 |
+
|
417 |
+
|
418 |
+
.mo2f_td_hide {
|
419 |
+
|
420 |
+
|
421 |
+
display: none !important;
|
422 |
+
|
423 |
+
|
424 |
+
}
|
425 |
+
|
426 |
+
|
427 |
+
|
428 |
+
|
429 |
+
|
430 |
+
.mo2f_label {
|
431 |
+
|
432 |
+
|
433 |
+
font-weight: 100 !important;
|
434 |
+
|
435 |
+
|
436 |
+
margin-left: 10px !important;
|
437 |
+
|
438 |
+
|
439 |
+
|
440 |
+
|
441 |
+
|
442 |
+
}
|
443 |
+
|
444 |
+
|
445 |
+
|
446 |
+
|
447 |
+
|
448 |
+
.mo2f_kba_ques {
|
449 |
+
|
450 |
+
|
451 |
+
width: 394px !important;
|
452 |
+
|
453 |
+
|
454 |
+
border-radius: 4px !important;
|
455 |
+
|
456 |
+
|
457 |
+
height: 40px !important;
|
458 |
+
|
459 |
+
|
460 |
+
font-size: 14px !important;
|
461 |
+
|
462 |
+
|
463 |
+
}
|
464 |
+
|
465 |
+
|
466 |
+
|
467 |
+
|
468 |
+
|
469 |
+
.mo2f_kba_table {
|
470 |
+
|
471 |
+
|
472 |
+
padding: 0 10px;
|
473 |
+
|
474 |
+
|
475 |
+
width: 100%;
|
476 |
+
|
477 |
+
|
478 |
+
border: hidden !important;
|
479 |
+
|
480 |
+
|
481 |
+
}
|
482 |
+
|
483 |
+
|
484 |
+
|
485 |
+
|
486 |
+
|
487 |
+
.mo2f_kba_tb_data {
|
488 |
+
|
489 |
+
|
490 |
+
padding-left: 15px;
|
491 |
+
|
492 |
+
|
493 |
+
}
|
494 |
+
|
495 |
+
|
496 |
+
|
497 |
+
|
498 |
+
|
499 |
+
.mo2f_table_textbox_1 {
|
500 |
+
|
501 |
+
|
502 |
+
width: 150px;
|
503 |
+
|
504 |
+
|
505 |
+
height: 30px !important;
|
506 |
+
|
507 |
+
|
508 |
+
font-size: 14px !important;
|
509 |
+
|
510 |
+
|
511 |
+
}
|
512 |
+
|
513 |
+
|
514 |
+
|
515 |
+
|
516 |
+
|
517 |
+
.mo2f_table_textbox {
|
518 |
+
|
519 |
+
|
520 |
+
width: 200px;
|
521 |
+
|
522 |
+
|
523 |
+
height: 40px !important;
|
524 |
+
|
525 |
+
|
526 |
+
font-size: 14px !important;
|
527 |
+
|
528 |
+
|
529 |
+
|
530 |
+
|
531 |
+
|
532 |
+
}
|
533 |
+
|
534 |
+
|
535 |
+
|
536 |
+
|
537 |
+
|
538 |
+
.mo2f_kba_header {
|
539 |
+
|
540 |
+
|
541 |
+
font-weight: bold;
|
542 |
+
|
543 |
+
|
544 |
+
border: hidden !important;
|
545 |
+
|
546 |
+
|
547 |
+
}
|
548 |
+
|
549 |
+
|
550 |
+
|
551 |
+
|
552 |
+
|
553 |
+
.mo2f_kba_body {
|
554 |
+
|
555 |
+
|
556 |
+
border: hidden !important;
|
557 |
+
|
558 |
+
|
559 |
+
}
|
560 |
+
|
561 |
+
|
562 |
+
|
563 |
+
|
564 |
+
|
565 |
+
.mo2f_separator {
|
566 |
+
|
567 |
+
|
568 |
+
border-left: 1px solid #EBECEC;
|
569 |
+
|
570 |
+
|
571 |
+
padding: 5px;
|
572 |
+
|
573 |
+
|
574 |
+
}
|
575 |
+
|
576 |
+
|
577 |
+
|
578 |
+
|
579 |
+
|
580 |
+
.mo2f_authn_header {
|
581 |
+
|
582 |
+
|
583 |
+
font-size: 14px !important;
|
584 |
+
|
585 |
+
|
586 |
+
}
|
587 |
+
|
588 |
+
|
589 |
+
|
590 |
+
|
591 |
+
|
592 |
+
#mo2f_inline_table {
|
593 |
+
|
594 |
+
|
595 |
+
border: hidden !important;
|
596 |
+
|
597 |
+
|
598 |
+
}
|
599 |
+
|
600 |
+
|
601 |
+
|
602 |
+
|
603 |
+
|
604 |
+
.mo2f_ordered_list {
|
605 |
+
|
606 |
+
|
607 |
+
margin: 0 0 0 1em !important;
|
608 |
+
|
609 |
+
|
610 |
+
}
|
611 |
+
|
612 |
+
.mo2f_list {
|
613 |
+
|
614 |
+
|
615 |
+
font-size: 14px !important;
|
616 |
+
|
617 |
+
|
618 |
+
}
|
includes/css/hide-login.css
CHANGED
@@ -1,317 +1,317 @@
|
|
1 |
-
body.login-action-login div#login {
|
2 |
-
display: none;
|
3 |
-
}
|
4 |
-
|
5 |
-
body.login-action-login div#login form#loginform input#user_login {
|
6 |
-
display: none;
|
7 |
-
}
|
8 |
-
|
9 |
-
body.login-action-login div#login form#loginform p.forgetmenot {
|
10 |
-
display: none;
|
11 |
-
}
|
12 |
-
|
13 |
-
body.login-action-login div#login form#loginform p.submit input#wp-submit {
|
14 |
-
display: none;
|
15 |
-
}
|
16 |
-
|
17 |
-
body.login-action-login div#login form#loginform p label {
|
18 |
-
display: none;
|
19 |
-
}
|
20 |
-
|
21 |
-
body.login-action-login div#login p#nav {
|
22 |
-
display: none;
|
23 |
-
}
|
24 |
-
|
25 |
-
body.login-action-login div#login form#loginform input#user_pass {
|
26 |
-
display: none;
|
27 |
-
}
|
28 |
-
|
29 |
-
body.login-action-login div#login div#login_error {
|
30 |
-
display: none;
|
31 |
-
}
|
32 |
-
|
33 |
-
body.login-action-login p.message {
|
34 |
-
display: none;
|
35 |
-
}
|
36 |
-
|
37 |
-
body.login-action-login div#login #loginform {
|
38 |
-
box-shadow: inherit;
|
39 |
-
}
|
40 |
-
|
41 |
-
body.login-action-login div#login div#login_error1 {
|
42 |
-
border-left: 4px solid #dd3d36;
|
43 |
-
margin-left: 0;
|
44 |
-
padding: 12px;
|
45 |
-
background: #fff;
|
46 |
-
-webkit-box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1);
|
47 |
-
box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1);
|
48 |
-
}
|
49 |
-
|
50 |
-
.mo2f_header {
|
51 |
-
font-size: 28px;
|
52 |
-
font-family: -webkit-body;
|
53 |
-
color: #777;
|
54 |
-
}
|
55 |
-
|
56 |
-
.mo2f_powered_by_miniorange {
|
57 |
-
width: 100px;
|
58 |
-
height: 25px;
|
59 |
-
-webkit-background-size: 100px 25px;
|
60 |
-
background-size: 100px 25px;
|
61 |
-
background-repeat: no-repeat;
|
62 |
-
display: inline-block;
|
63 |
-
vertical-align: middle;
|
64 |
-
}
|
65 |
-
|
66 |
-
.mo2f_powered_by_div {
|
67 |
-
text-align: right;
|
68 |
-
font-size: 9px;
|
69 |
-
padding-right: 2%;
|
70 |
-
background-color: #FFFFFF;
|
71 |
-
}
|
72 |
-
|
73 |
-
.button-green {
|
74 |
-
color: rgb(0, 160, 210);
|
75 |
-
background: none !important;
|
76 |
-
border: none;
|
77 |
-
padding: 0 !important;
|
78 |
-
font: inherit;
|
79 |
-
border-color: transparent !important;
|
80 |
-
/*border is optional*/
|
81 |
-
border-bottom: 1px solid #444;
|
82 |
-
cursor: pointer;
|
83 |
-
}
|
84 |
-
|
85 |
-
.mo2fa_display_message {
|
86 |
-
padding: 12px;
|
87 |
-
border-left: 4px solid #00a0d2;
|
88 |
-
background-color: #fff;
|
89 |
-
-webkit-box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .1);
|
90 |
-
box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .1);
|
91 |
-
|
92 |
-
}
|
93 |
-
|
94 |
-
.mo2fa_messages_container {
|
95 |
-
width: 300px;
|
96 |
-
}
|
97 |
-
|
98 |
-
.mo2fa_otp_messages_container {
|
99 |
-
width: 400px;
|
100 |
-
}
|
101 |
-
|
102 |
-
.mo2fa_push_messages_container {
|
103 |
-
width: 300px;
|
104 |
-
}
|
105 |
-
|
106 |
-
.miniorange_mobile_auth, .miniorange_app_setup_page {
|
107 |
-
border: 1px none transparent;
|
108 |
-
padding: 10% 24px 10px 20px;
|
109 |
-
min-height: 360px;
|
110 |
-
background: transparent;
|
111 |
-
z-index: 99999;
|
112 |
-
}
|
113 |
-
|
114 |
-
.miniorange_kba_page {
|
115 |
-
border: 1px none transparent;
|
116 |
-
padding: 10% 24px 10px 20px;
|
117 |
-
min-height: 360px;
|
118 |
-
background: transparent;
|
119 |
-
z-index: 99999;
|
120 |
-
|
121 |
-
}
|
122 |
-
|
123 |
-
.miniorange_push_oobemail_auth, .miniorange_trust_device {
|
124 |
-
border: 1px none transparent;
|
125 |
-
padding: 10% 24px 10px 20px;
|
126 |
-
min-height: 360px;
|
127 |
-
background: transparent;
|
128 |
-
z-index: 99999;
|
129 |
-
}
|
130 |
-
|
131 |
-
.miniorange_soft_auth {
|
132 |
-
border: 1px none transparent;
|
133 |
-
padding: 10% 24px 10px 20px;
|
134 |
-
min-height: 360px;
|
135 |
-
background: transparent;
|
136 |
-
z-index: 99999;
|
137 |
-
}
|
138 |
-
|
139 |
-
.miniorange-inner-login-container {
|
140 |
-
background-color: #fff;
|
141 |
-
margin: 0px auto !important;
|
142 |
-
width: 400px;
|
143 |
-
border-radius: 5px;
|
144 |
-
border: 1px solid rgba(128, 128, 128, 0.06);
|
145 |
-
}
|
146 |
-
|
147 |
-
.miniorange-inner-kba-login-container {
|
148 |
-
background-color: #fff;
|
149 |
-
margin: 0px auto !important;
|
150 |
-
width: 500px;
|
151 |
-
border-radius: 5px;
|
152 |
-
z-index: 99999;
|
153 |
-
border: 1px solid rgba(128, 128, 128, 0.06);
|
154 |
-
}
|
155 |
-
|
156 |
-
.miniorange-inner-push-login-container {
|
157 |
-
background-color: #fff;
|
158 |
-
margin: 0px auto !important;
|
159 |
-
width: 300px;
|
160 |
-
border-radius: 5px;
|
161 |
-
|
162 |
-
z-index: 99999;
|
163 |
-
border: 1px solid rgba(128, 128, 128, 0.06);
|
164 |
-
}
|
165 |
-
|
166 |
-
.miniorange-button {
|
167 |
-
height: 30px;
|
168 |
-
display: inline-block;
|
169 |
-
font-size: 14px;
|
170 |
-
line-height: 28px;
|
171 |
-
padding: 0 12px 2px;
|
172 |
-
border-width: 1px;
|
173 |
-
vertical-align: baseline;
|
174 |
-
background: #00a0d2;
|
175 |
-
border-style: solid;
|
176 |
-
border-color: #0073aa;
|
177 |
-
-webkit-appearance: none;
|
178 |
-
-webkit-border-radius: 3px;
|
179 |
-
border-radius: 3px;
|
180 |
-
white-space: nowrap;
|
181 |
-
-webkit-box-sizing: border-box;
|
182 |
-
-moz-box-sizing: border-box;
|
183 |
-
box-sizing: border-box;
|
184 |
-
-webkit-box-shadow: inset 0 1px 0 rgba(120, 200, 230, .5), 0 1px 0 rgba(0, 0, 0, .15);
|
185 |
-
box-shadow: inset 0 1px 0 rgba(120, 200, 230, .5), 0 1px 0 rgba(0, 0, 0, .15);
|
186 |
-
color: #fff;
|
187 |
-
text-decoration: none;
|
188 |
-
cursor: pointer;
|
189 |
-
}
|
190 |
-
|
191 |
-
.mo_green {
|
192 |
-
background: #2ECC71;
|
193 |
-
border-color: #2ECC71;
|
194 |
-
width: 37%;
|
195 |
-
}
|
196 |
-
|
197 |
-
.mo_red {
|
198 |
-
background: #E74C3C;
|
199 |
-
border-color: #E74C3C;
|
200 |
-
width: 37%;
|
201 |
-
}
|
202 |
-
|
203 |
-
.showQRHelp, .showOTPHelp {
|
204 |
-
text-align: center !important;
|
205 |
-
}
|
206 |
-
|
207 |
-
.mo_email_textbox {
|
208 |
-
width: 48%;
|
209 |
-
text-align: center;
|
210 |
-
height: 40px;
|
211 |
-
font-size: 18px;
|
212 |
-
border-radius: 5px;
|
213 |
-
}
|
214 |
-
|
215 |
-
.mo_header_background {
|
216 |
-
padding: 5px !important;
|
217 |
-
background-color: beige !important;
|
218 |
-
}
|
219 |
-
|
220 |
-
.mo2f_textbox {
|
221 |
-
width: 60% !important;
|
222 |
-
border-radius: 4px !important;
|
223 |
-
height: 30px !important;
|
224 |
-
font-size: 14px !important;
|
225 |
-
}
|
226 |
-
|
227 |
-
.mo2f_kba_textbox {
|
228 |
-
width: 100% !important;
|
229 |
-
border-radius: 4px !important;
|
230 |
-
height: 30px !important;
|
231 |
-
font-size: 14px !important;
|
232 |
-
}
|
233 |
-
|
234 |
-
.mo_hr {
|
235 |
-
border-top: 1px solid rgba(220, 214, 214, 0.25) !important;
|
236 |
-
margin-top: 5px !important;
|
237 |
-
margin-right: 10px !important;
|
238 |
-
}
|
239 |
-
|
240 |
-
.mo_margin_left {
|
241 |
-
margin-left: 20px !important;
|
242 |
-
}
|
243 |
-
|
244 |
-
.miniorange-app-setup-container {
|
245 |
-
background-color: #fff;
|
246 |
-
margin: 0px auto !important;
|
247 |
-
width: 700px;
|
248 |
-
border-radius: 5px;
|
249 |
-
margin-top: -100px !important;
|
250 |
-
z-index: 99999;
|
251 |
-
border: 1px solid rgba(128, 128, 128, 0.06);
|
252 |
-
|
253 |
-
}
|
254 |
-
|
255 |
-
.miniorange-ga-setup-container {
|
256 |
-
background-color: #fff;
|
257 |
-
margin: 0px auto !important;
|
258 |
-
width: 900px;
|
259 |
-
border-radius: 5px;
|
260 |
-
margin-top: -50px !important;
|
261 |
-
z-index: 99999;
|
262 |
-
border: 1px solid rgba(128, 128, 128, 0.06);
|
263 |
-
}
|
264 |
-
|
265 |
-
.mo_app_link {
|
266 |
-
text-decoration: none !important;
|
267 |
-
color: #000 !important;
|
268 |
-
}
|
269 |
-
|
270 |
-
.mo2fa_app_setup_messages {
|
271 |
-
width: 700px;
|
272 |
-
}
|
273 |
-
|
274 |
-
.mo2f_td_show {
|
275 |
-
display: grid !important;
|
276 |
-
}
|
277 |
-
|
278 |
-
.mo2f_td_hide {
|
279 |
-
display: none !important;
|
280 |
-
}
|
281 |
-
|
282 |
-
.mo2f_kba_ques {
|
283 |
-
width: 370px !important;
|
284 |
-
border-radius: 4px !important;
|
285 |
-
height: 30px !important;
|
286 |
-
font-size: 14px !important;
|
287 |
-
}
|
288 |
-
|
289 |
-
.mo2f_kba_table {
|
290 |
-
padding: 0 10px;
|
291 |
-
width: 100%;
|
292 |
-
}
|
293 |
-
|
294 |
-
.mo2f_kba_tb_data {
|
295 |
-
padding-left: 15px;
|
296 |
-
}
|
297 |
-
|
298 |
-
.mo2f_table_textbox {
|
299 |
-
width: 150px;
|
300 |
-
height: 30px !important;
|
301 |
-
font-size: 14px !important;
|
302 |
-
|
303 |
-
}
|
304 |
-
|
305 |
-
.mo2f_kba_header {
|
306 |
-
font-weight: bold;
|
307 |
-
}
|
308 |
-
|
309 |
-
.mo2f_separator {
|
310 |
-
border-left: 1px solid #EBECEC;
|
311 |
-
padding: 5px;
|
312 |
-
}
|
313 |
-
|
314 |
-
.mo2f_inline_padding {
|
315 |
-
padding-left: 20px;
|
316 |
-
padding-right: 20px;
|
317 |
-
}
|
1 |
+
body.login-action-login div#login {
|
2 |
+
display: none;
|
3 |
+
}
|
4 |
+
|
5 |
+
body.login-action-login div#login form#loginform input#user_login {
|
6 |
+
display: none;
|
7 |
+
}
|
8 |
+
|
9 |
+
body.login-action-login div#login form#loginform p.forgetmenot {
|
10 |
+
display: none;
|
11 |
+
}
|
12 |
+
|
13 |
+
body.login-action-login div#login form#loginform p.submit input#wp-submit {
|
14 |
+
display: none;
|
15 |
+
}
|
16 |
+
|
17 |
+
body.login-action-login div#login form#loginform p label {
|
18 |
+
display: none;
|
19 |
+
}
|
20 |
+
|
21 |
+
body.login-action-login div#login p#nav {
|
22 |
+
display: none;
|
23 |
+
}
|
24 |
+
|
25 |
+
body.login-action-login div#login form#loginform input#user_pass {
|
26 |
+
display: none;
|
27 |
+
}
|
28 |
+
|
29 |
+
body.login-action-login div#login div#login_error {
|
30 |
+
display: none;
|
31 |
+
}
|
32 |
+
|
33 |
+
body.login-action-login p.message {
|
34 |
+
display: none;
|
35 |
+
}
|
36 |
+
|
37 |
+
body.login-action-login div#login #loginform {
|
38 |
+
box-shadow: inherit;
|
39 |
+
}
|
40 |
+
|
41 |
+
body.login-action-login div#login div#login_error1 {
|
42 |
+
border-left: 4px solid #dd3d36;
|
43 |
+
margin-left: 0;
|
44 |
+
padding: 12px;
|
45 |
+
background: #fff;
|
46 |
+
-webkit-box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1);
|
47 |
+
box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1);
|
48 |
+
}
|
49 |
+
|
50 |
+
.mo2f_header {
|
51 |
+
font-size: 28px;
|
52 |
+
font-family: -webkit-body;
|
53 |
+
color: #777;
|
54 |
+
}
|
55 |
+
|
56 |
+
.mo2f_powered_by_miniorange {
|
57 |
+
width: 100px;
|
58 |
+
height: 25px;
|
59 |
+
-webkit-background-size: 100px 25px;
|
60 |
+
background-size: 100px 25px;
|
61 |
+
background-repeat: no-repeat;
|
62 |
+
display: inline-block;
|
63 |
+
vertical-align: middle;
|
64 |
+
}
|
65 |
+
|
66 |
+
.mo2f_powered_by_div {
|
67 |
+
text-align: right;
|
68 |
+
font-size: 9px;
|
69 |
+
padding-right: 2%;
|
70 |
+
background-color: #FFFFFF;
|
71 |
+
}
|
72 |
+
|
73 |
+
.button-green {
|
74 |
+
color: rgb(0, 160, 210);
|
75 |
+
background: none !important;
|
76 |
+
border: none;
|
77 |
+
padding: 0 !important;
|
78 |
+
font: inherit;
|
79 |
+
border-color: transparent !important;
|
80 |
+
/*border is optional*/
|
81 |
+
border-bottom: 1px solid #444;
|
82 |
+
cursor: pointer;
|
83 |
+
}
|
84 |
+
|
85 |
+
.mo2fa_display_message {
|
86 |
+
padding: 12px;
|
87 |
+
border-left: 4px solid #00a0d2;
|
88 |
+
background-color: #fff;
|
89 |
+
-webkit-box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .1);
|
90 |
+
box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .1);
|
91 |
+
|
92 |
+
}
|
93 |
+
|
94 |
+
.mo2fa_messages_container {
|
95 |
+
width: 300px;
|
96 |
+
}
|
97 |
+
|
98 |
+
.mo2fa_otp_messages_container {
|
99 |
+
width: 400px;
|
100 |
+
}
|
101 |
+
|
102 |
+
.mo2fa_push_messages_container {
|
103 |
+
width: 300px;
|
104 |
+
}
|
105 |
+
|
106 |
+
.miniorange_mobile_auth, .miniorange_app_setup_page {
|
107 |
+
border: 1px none transparent;
|
108 |
+
padding: 10% 24px 10px 20px;
|
109 |
+
min-height: 360px;
|
110 |
+
background: transparent;
|
111 |
+
z-index: 99999;
|
112 |
+
}
|
113 |
+
|
114 |
+
.miniorange_kba_page {
|
115 |
+
border: 1px none transparent;
|
116 |
+
padding: 10% 24px 10px 20px;
|
117 |
+
min-height: 360px;
|
118 |
+
background: transparent;
|
119 |
+
z-index: 99999;
|
120 |
+
|
121 |
+
}
|
122 |
+
|
123 |
+
.miniorange_push_oobemail_auth, .miniorange_trust_device {
|
124 |
+
border: 1px none transparent;
|
125 |
+
padding: 10% 24px 10px 20px;
|
126 |
+
min-height: 360px;
|
127 |
+
background: transparent;
|
128 |
+
z-index: 99999;
|
129 |
+
}
|
130 |
+
|
131 |
+
.miniorange_soft_auth {
|
132 |
+
border: 1px none transparent;
|
133 |
+
padding: 10% 24px 10px 20px;
|
134 |
+
min-height: 360px;
|
135 |
+
background: transparent;
|
136 |
+
z-index: 99999;
|
137 |
+
}
|
138 |
+
|
139 |
+
.miniorange-inner-login-container {
|
140 |
+
background-color: #fff;
|
141 |
+
margin: 0px auto !important;
|
142 |
+
width: 400px;
|
143 |
+
border-radius: 5px;
|
144 |
+
border: 1px solid rgba(128, 128, 128, 0.06);
|
145 |
+
}
|
146 |
+
|
147 |
+
.miniorange-inner-kba-login-container {
|
148 |
+
background-color: #fff;
|
149 |
+
margin: 0px auto !important;
|
150 |
+
width: 500px;
|
151 |
+
border-radius: 5px;
|
152 |
+
z-index: 99999;
|
153 |
+
border: 1px solid rgba(128, 128, 128, 0.06);
|
154 |
+
}
|
155 |
+
|
156 |
+
.miniorange-inner-push-login-container {
|
157 |
+
background-color: #fff;
|
158 |
+
margin: 0px auto !important;
|
159 |
+
width: 300px;
|
160 |
+
border-radius: 5px;
|
161 |
+
|
162 |
+
z-index: 99999;
|
163 |
+
border: 1px solid rgba(128, 128, 128, 0.06);
|
164 |
+
}
|
165 |
+
|
166 |
+
.miniorange-button {
|
167 |
+
height: 30px;
|
168 |
+
display: inline-block;
|
169 |
+
font-size: 14px;
|
170 |
+
line-height: 28px;
|
171 |
+
padding: 0 12px 2px;
|
172 |
+
border-width: 1px;
|
173 |
+
vertical-align: baseline;
|
174 |
+
background: #00a0d2;
|
175 |
+
border-style: solid;
|
176 |
+
border-color: #0073aa;
|
177 |
+
-webkit-appearance: none;
|
178 |
+
-webkit-border-radius: 3px;
|
179 |
+
border-radius: 3px;
|
180 |
+
white-space: nowrap;
|
181 |
+
-webkit-box-sizing: border-box;
|
182 |
+
-moz-box-sizing: border-box;
|
183 |
+
box-sizing: border-box;
|
184 |
+
-webkit-box-shadow: inset 0 1px 0 rgba(120, 200, 230, .5), 0 1px 0 rgba(0, 0, 0, .15);
|
185 |
+
box-shadow: inset 0 1px 0 rgba(120, 200, 230, .5), 0 1px 0 rgba(0, 0, 0, .15);
|
186 |
+
color: #fff;
|
187 |
+
text-decoration: none;
|
188 |
+
cursor: pointer;
|
189 |
+
}
|
190 |
+
|
191 |
+
.mo_green {
|
192 |
+
background: #2ECC71;
|
193 |
+
border-color: #2ECC71;
|
194 |
+
width: 37%;
|
195 |
+
}
|
196 |
+
|
197 |
+
.mo_red {
|
198 |
+
background: #E74C3C;
|
199 |
+
border-color: #E74C3C;
|
200 |
+
width: 37%;
|
201 |
+
}
|
202 |
+
|
203 |
+
.showQRHelp, .showOTPHelp {
|
204 |
+
text-align: center !important;
|
205 |
+
}
|
206 |
+
|
207 |
+
.mo_email_textbox {
|
208 |
+
width: 48%;
|
209 |
+
text-align: center;
|
210 |
+
height: 40px;
|
211 |
+
font-size: 18px;
|
212 |
+
border-radius: 5px;
|
213 |
+
}
|
214 |
+
|
215 |
+
.mo_header_background {
|
216 |
+
padding: 5px !important;
|
217 |
+
background-color: beige !important;
|
218 |
+
}
|
219 |
+
|
220 |
+
.mo2f_textbox {
|
221 |
+
width: 60% !important;
|
222 |
+
border-radius: 4px !important;
|
223 |
+
height: 30px !important;
|
224 |
+
font-size: 14px !important;
|
225 |
+
}
|
226 |
+
|
227 |
+
.mo2f_kba_textbox {
|
228 |
+
width: 100% !important;
|
229 |
+
border-radius: 4px !important;
|
230 |
+
height: 30px !important;
|
231 |
+
font-size: 14px !important;
|
232 |
+
}
|
233 |
+
|
234 |
+
.mo_hr {
|
235 |
+
border-top: 1px solid rgba(220, 214, 214, 0.25) !important;
|
236 |
+
margin-top: 5px !important;
|
237 |
+
margin-right: 10px !important;
|
238 |
+
}
|
239 |
+
|
240 |
+
.mo_margin_left {
|
241 |
+
margin-left: 20px !important;
|
242 |
+
}
|
243 |
+
|
244 |
+
.miniorange-app-setup-container {
|
245 |
+
background-color: #fff;
|
246 |
+
margin: 0px auto !important;
|
247 |
+
width: 700px;
|
248 |
+
border-radius: 5px;
|
249 |
+
margin-top: -100px !important;
|
250 |
+
z-index: 99999;
|
251 |
+
border: 1px solid rgba(128, 128, 128, 0.06);
|
252 |
+
|
253 |
+
}
|
254 |
+
|
255 |
+
.miniorange-ga-setup-container {
|
256 |
+
background-color: #fff;
|
257 |
+
margin: 0px auto !important;
|
258 |
+
width: 900px;
|
259 |
+
border-radius: 5px;
|
260 |
+
margin-top: -50px !important;
|
261 |
+
z-index: 99999;
|
262 |
+
border: 1px solid rgba(128, 128, 128, 0.06);
|
263 |
+
}
|
264 |
+
|
265 |
+
.mo_app_link {
|
266 |
+
text-decoration: none !important;
|
267 |
+
color: #000 !important;
|
268 |
+
}
|
269 |
+
|
270 |
+
.mo2fa_app_setup_messages {
|
271 |
+
width: 700px;
|
272 |
+
}
|
273 |
+
|
274 |
+
.mo2f_td_show {
|
275 |
+
display: grid !important;
|
276 |
+
}
|
277 |
+
|
278 |
+
.mo2f_td_hide {
|
279 |
+
display: none !important;
|
280 |
+
}
|
281 |
+
|
282 |
+
.mo2f_kba_ques {
|
283 |
+
width: 370px !important;
|
284 |
+
border-radius: 4px !important;
|
285 |
+
height: 30px !important;
|
286 |
+
font-size: 14px !important;
|
287 |
+
}
|
288 |
+
|
289 |
+
.mo2f_kba_table {
|
290 |
+
padding: 0 10px;
|
291 |
+
width: 100%;
|
292 |
+
}
|
293 |
+
|
294 |
+
.mo2f_kba_tb_data {
|
295 |
+
padding-left: 15px;
|
296 |
+
}
|
297 |
+
|
298 |
+
.mo2f_table_textbox {
|
299 |
+
width: 150px;
|
300 |
+
height: 30px !important;
|
301 |
+
font-size: 14px !important;
|
302 |
+
|
303 |
+
}
|
304 |
+
|
305 |
+
.mo2f_kba_header {
|
306 |
+
font-weight: bold;
|
307 |
+
}
|
308 |
+
|
309 |
+
.mo2f_separator {
|
310 |
+
border-left: 1px solid #EBECEC;
|
311 |
+
padding: 5px;
|
312 |
+
}
|
313 |
+
|
314 |
+
.mo2f_inline_padding {
|
315 |
+
padding-left: 20px;
|
316 |
+
padding-right: 20px;
|
317 |
+
}
|
includes/css/phone.css
CHANGED
@@ -1,3 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
.intl-number-input { position: inherit; }
|
2 |
.intl-number-input .hide { display: none; }
|
3 |
.intl-number-input .flag-dropdown { position: absolute; cursor: pointer; }
|
1 |
+
|
2 |
+
.buttonInsideEmail{
|
3 |
+
position:relative;
|
4 |
+
margin-bottom:10px;
|
5 |
+
}
|
6 |
+
|
7 |
+
.buttonInsidePhone{
|
8 |
+
position:relative;
|
9 |
+
margin-bottom:10px;
|
10 |
+
}
|
11 |
+
|
12 |
+
.mo2f_send_emailotp_button {
|
13 |
+
position:absolute;
|
14 |
+
right: 0px;
|
15 |
+
top: 0%;
|
16 |
+
border:none;
|
17 |
+
height:100%;
|
18 |
+
width:max-content;
|
19 |
+
outline:none;
|
20 |
+
text-align:center;
|
21 |
+
padding:2px;
|
22 |
+
}
|
23 |
+
|
24 |
+
.mo2f_send_phoneotp_button {
|
25 |
+
position:absolute;
|
26 |
+
right: 0px;
|
27 |
+
top: 0%;
|
28 |
+
border:none;
|
29 |
+
height:100%;
|
30 |
+
width:max-content;
|
31 |
+
outline:none;
|
32 |
+
text-align:center;
|
33 |
+
padding:2px;
|
34 |
+
}
|
35 |
+
|
36 |
.intl-number-input { position: inherit; }
|
37 |
.intl-number-input .hide { display: none; }
|
38 |
.intl-number-input .flag-dropdown { position: absolute; cursor: pointer; }
|
includes/css/popup.css
CHANGED
@@ -1,82 +1,82 @@
|
|
1 |
-
|
2 |
-
.mo_popup {
|
3 |
-
display: flex;
|
4 |
-
flex-flow: row wrap;
|
5 |
-
width:100%;
|
6 |
-
}
|
7 |
-
.mo_popup_div {
|
8 |
-
flex: 1;
|
9 |
-
padding: 0.5rem;
|
10 |
-
}
|
11 |
-
#mo_popup_id input[type="radio"] {
|
12 |
-
display: none;
|
13 |
-
&:not(:disabled) ~ label {
|
14 |
-
cursor: pointer;
|
15 |
-
}
|
16 |
-
&:disabled ~ label {
|
17 |
-
color: hsla(150, 5%, 75%, 1);
|
18 |
-
border-color: hsla(150, 5%, 75%, 1);
|
19 |
-
box-shadow: none;
|
20 |
-
cursor: not-allowed;
|
21 |
-
}
|
22 |
-
}
|
23 |
-
.mo_popup_lable {
|
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;
|
31 |
-
/*//margin: 1rem;*/
|
32 |
-
text-align: center;
|
33 |
-
box-shadow: 0px 3px 10px -2px hsla(150, 5%, 65%, 0.5);
|
34 |
-
position: relative;
|
35 |
-
margin-top: 10px;
|
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);
|
43 |
-
font-family: FontAwesome;
|
44 |
-
border: 2px solid hsla(150, 75%, 45%, 1);
|
45 |
-
content: "\f00c";
|
46 |
-
font-size: 24px;
|
47 |
-
position: absolute;
|
48 |
-
top: -25px;
|
49 |
-
left: 50%;
|
50 |
-
transform: translateX(-50%);
|
51 |
-
height: 50px;
|
52 |
-
width: 50px;
|
53 |
-
line-height: 50px;
|
54 |
-
text-align: center;
|
55 |
-
border-radius: 50%;
|
56 |
-
background: white;
|
57 |
-
box-shadow: 0px 2px 5px -2px hsla(0, 0%, 0%, 0.25);
|
58 |
-
}
|
59 |
-
}
|
60 |
-
|
61 |
-
#mo_popup_id input[type="radio"]#control_05:checked + label {
|
62 |
-
background: red;
|
63 |
-
border-color: red;
|
64 |
-
}
|
65 |
-
|
66 |
-
|
67 |
-
@media only screen and (max-width: 700px) {
|
68 |
-
section {
|
69 |
-
flex-direction: column;
|
70 |
-
}
|
71 |
-
}
|
72 |
-
|
73 |
-
|
74 |
-
.logout:hover{
|
75 |
-
/*border: 2px solid black;*/
|
76 |
-
text-decoration: underline;
|
77 |
-
}
|
78 |
-
.modalhover:hover{
|
79 |
-
border:2px solid #2EB150;
|
80 |
-
background: #2EB150 !important;
|
81 |
-
color:white !important;
|
82 |
-
}
|
1 |
+
|
2 |
+
.mo_popup {
|
3 |
+
display: flex;
|
4 |
+
flex-flow: row wrap;
|
5 |
+
width:100%;
|
6 |
+
}
|
7 |
+
.mo_popup_div {
|
8 |
+
flex: 1;
|
9 |
+
padding: 0.5rem;
|
10 |
+
}
|
11 |
+
#mo_popup_id input[type="radio"] {
|
12 |
+
display: none;
|
13 |
+
&:not(:disabled) ~ label {
|
14 |
+
cursor: pointer;
|
15 |
+
}
|
16 |
+
&:disabled ~ label {
|
17 |
+
color: hsla(150, 5%, 75%, 1);
|
18 |
+
border-color: hsla(150, 5%, 75%, 1);
|
19 |
+
box-shadow: none;
|
20 |
+
cursor: not-allowed;
|
21 |
+
}
|
22 |
+
}
|
23 |
+
.mo_popup_lable {
|
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;
|
31 |
+
/*//margin: 1rem;*/
|
32 |
+
text-align: center;
|
33 |
+
box-shadow: 0px 3px 10px -2px hsla(150, 5%, 65%, 0.5);
|
34 |
+
position: relative;
|
35 |
+
margin-top: 10px;
|
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);
|
43 |
+
font-family: FontAwesome;
|
44 |
+
border: 2px solid hsla(150, 75%, 45%, 1);
|
45 |
+
content: "\f00c";
|
46 |
+
font-size: 24px;
|
47 |
+
position: absolute;
|
48 |
+
top: -25px;
|
49 |
+
left: 50%;
|
50 |
+
transform: translateX(-50%);
|
51 |
+
height: 50px;
|
52 |
+
width: 50px;
|
53 |
+
line-height: 50px;
|
54 |
+
text-align: center;
|
55 |
+
border-radius: 50%;
|
56 |
+
background: white;
|
57 |
+
box-shadow: 0px 2px 5px -2px hsla(0, 0%, 0%, 0.25);
|
58 |
+
}
|
59 |
+
}
|
60 |
+
|
61 |
+
#mo_popup_id input[type="radio"]#control_05:checked + label {
|
62 |
+
background: red;
|
63 |
+
border-color: red;
|
64 |
+
}
|
65 |
+
|
66 |
+
|
67 |
+
@media only screen and (max-width: 700px) {
|
68 |
+
section {
|
69 |
+
flex-direction: column;
|
70 |
+
}
|
71 |
+
}
|
72 |
+
|
73 |
+
|
74 |
+
.logout:hover{
|
75 |
+
/*border: 2px solid black;*/
|
76 |
+
text-decoration: underline;
|
77 |
+
}
|
78 |
+
.modalhover:hover{
|
79 |
+
border:2px solid #2EB150;
|
80 |
+
background: #2EB150 !important;
|
81 |
+
color:white !important;
|
82 |
+
}
|
includes/css/style_settings.css
CHANGED
@@ -249,7 +249,8 @@
|
|
249 |
}
|
250 |
.mo2f_black_background
|
251 |
{
|
252 |
-
background:
|
|
|
253 |
}
|
254 |
.mo2f_2fa_plan_title
|
255 |
{
|
@@ -259,6 +260,7 @@
|
|
259 |
.mo2f_padding_style
|
260 |
{
|
261 |
padding: 2px 0px;
|
|
|
262 |
}
|
263 |
.mo2f_white_color_style
|
264 |
{
|
@@ -266,8 +268,8 @@
|
|
266 |
}
|
267 |
.mo2f_2fa_lite_plan_title
|
268 |
{
|
269 |
-
background-color: #
|
270 |
-
border:
|
271 |
width: 25%
|
272 |
}
|
273 |
.mo2f_tooltip {
|
@@ -466,24 +468,24 @@
|
|
466 |
.mo_wpns_upgrade_security_title
|
467 |
{
|
468 |
width: 23%;
|
469 |
-
min-height:
|
470 |
background-color: white;
|
471 |
float: left;
|
472 |
border: 2px solid black;
|
|
|
473 |
}
|
474 |
.mo_wpns_upgrade_title_2fa_lite
|
475 |
{
|
476 |
width: 23%;
|
477 |
-
min-height:
|
478 |
background-color: white;
|
479 |
float: left;
|
480 |
-
border:
|
481 |
}
|
482 |
.mo_wpns_upgrade_page_title_name
|
483 |
{
|
484 |
text-align: center;
|
485 |
-
background-color:
|
486 |
-
text-shadow: 3px 2px 2px black;
|
487 |
min-height: 62px;
|
488 |
|
489 |
}
|
@@ -492,7 +494,7 @@
|
|
492 |
margin-top: 0%;
|
493 |
padding: 6% 0% 0% 0%;
|
494 |
color: white;
|
495 |
-
font-size:
|
496 |
}
|
497 |
.mo_wpns_upgrade_page_2fa_integration_plan_name
|
498 |
{
|
@@ -503,7 +505,7 @@
|
|
503 |
}
|
504 |
.mo_wpns_upgrade_page_hr
|
505 |
{
|
506 |
-
border:1px solid
|
507 |
}
|
508 |
.mo_wpns_upgrade_page_2fa_background
|
509 |
{
|
@@ -513,9 +515,9 @@
|
|
513 |
}
|
514 |
.mo_wpns_upgrade_page_2fa_lite_background
|
515 |
{
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
}
|
520 |
.mo_wpns_upgrade_page_show_feature_arrow
|
521 |
{
|
@@ -536,8 +538,8 @@
|
|
536 |
}
|
537 |
.mo_wpns_upgrade_page_space_in_div
|
538 |
{
|
539 |
-
width: 1%;
|
540 |
-
min-height:
|
541 |
background-color: none;
|
542 |
float: left;
|
543 |
}
|
@@ -547,48 +549,48 @@
|
|
547 |
}
|
548 |
.mo_wpns_upgrade_pade_pricing
|
549 |
{
|
550 |
-
color:
|
551 |
font-size: 350%;
|
552 |
}
|
553 |
.mo_wpns_upgrade_page_starting_price
|
554 |
{
|
555 |
-
color:
|
556 |
padding-top: 2%;
|
|
|
557 |
}
|
558 |
.mo_wpns_upgrade_page_2fa_ns
|
559 |
{
|
560 |
-
width: 96.
|
561 |
-
background-color: white;
|
562 |
color: #6cd3cd;
|
563 |
float: left;
|
564 |
text-align: center;
|
565 |
-
border-top: 4px solid #24a49d;
|
566 |
}
|
567 |
.mo_wpns_upgrade_page_show_feature
|
568 |
{
|
569 |
-
color: #
|
570 |
background-color: white;
|
571 |
font-size: 250%;
|
572 |
font-weight: 500;
|
|
|
573 |
}
|
574 |
.mo_wpns_upgrade_page_hide_feature
|
575 |
{
|
576 |
-
color: #
|
577 |
background-color: white;
|
578 |
font-size: 250%;
|
579 |
font-weight: 500;
|
580 |
-
|
581 |
}
|
582 |
.mo_wpns_upgrade_page_2fa_ns_1
|
583 |
{
|
584 |
-
color:
|
585 |
font-size: 250%;
|
586 |
}
|
587 |
.mo_wpns_upgrade_page_ns_background
|
588 |
{
|
589 |
width: 100%;
|
590 |
min-height: 277px;
|
591 |
-
background-color:
|
592 |
}
|
593 |
.mo_wpns_button_info_tab {
|
594 |
background-color: #20b2aa;
|
@@ -667,7 +669,8 @@
|
|
667 |
}
|
668 |
.overlay_error {
|
669 |
width: min-content;
|
670 |
-
height:
|
|
|
671 |
position: fixed;
|
672 |
float: right;
|
673 |
z-index: 1;
|
@@ -1018,23 +1021,8 @@
|
|
1018 |
text-align: center;
|
1019 |
color: black;
|
1020 |
box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
|
1021 |
-
/*margin-top: 20px;
|
1022 |
-
padding: 5px 20px;
|
1023 |
-
background-color: #20b2aa;
|
1024 |
-
border: 1px solid #CCCCCC;
|
1025 |
-
float: left;
|
1026 |
-
width: 227px;
|
1027 |
-
height: 170px;
|
1028 |
-
margin-left: 1%;
|
1029 |
-
color: white;
|
1030 |
-
box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);*/
|
1031 |
}
|
1032 |
-
|
1033 |
-
|
1034 |
-
width: 1100px;
|
1035 |
-
background-color: yellow;
|
1036 |
-
height: auto;
|
1037 |
-
}*/
|
1038 |
|
1039 |
h2.mo_wpns_nav-tab-wrapper
|
1040 |
{
|
@@ -1110,7 +1098,6 @@ h2.mo_wpns_nav-tab-wrapper
|
|
1110 |
height: auto;
|
1111 |
width: 100%;
|
1112 |
float: left;
|
1113 |
-
/*background-color: yellow;*/
|
1114 |
}
|
1115 |
.mo_wpns_setting_layout
|
1116 |
{
|
@@ -1121,7 +1108,6 @@ h2.mo_wpns_nav-tab-wrapper
|
|
1121 |
border: 2px solid #20b2aa;
|
1122 |
float: left;
|
1123 |
width: 94%;
|
1124 |
-
/*margin-left: 1%;*/
|
1125 |
|
1126 |
overflow: hidden;
|
1127 |
text-align: left;
|
@@ -1142,8 +1128,6 @@ h2.mo_wpns_nav-tab-wrapper
|
|
1142 |
box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
|
1143 |
}
|
1144 |
.mo_wpns_sub_nav_tab {
|
1145 |
-
/*overflow: hidden;*/
|
1146 |
-
/*border: 1px solid #ccc;*/
|
1147 |
background-color: #f1f1f1;
|
1148 |
margin:22px;
|
1149 |
}
|
@@ -1276,11 +1260,10 @@ h2.mo_wpns_nav-tab-wrapper
|
|
1276 |
}
|
1277 |
.mo_wpns_upgrade_page_button
|
1278 |
{
|
1279 |
-
border: 1px solid;
|
1280 |
-
background-color:
|
1281 |
-
padding:
|
1282 |
-
|
1283 |
-
box-shadow: 0px 2px 10px black;
|
1284 |
}
|
1285 |
.mo_wpns_products-dollar-amount {
|
1286 |
color: #797878;
|
@@ -2838,7 +2821,6 @@ padding-right: 11px;
|
|
2838 |
border-color: lightgrey;
|
2839 |
border-radius: 4px;
|
2840 |
border-width: 1px;
|
2841 |
-
padding: 10px;
|
2842 |
}
|
2843 |
|
2844 |
.mo2f_licensing_plans_tr {
|
@@ -3420,3 +3402,100 @@ a.mo2f_thumbnail:hover, a.mo2f_thumbnail:focus, a.mo2f_thumbnail.active {
|
|
3420 |
background-color: #2EB150;
|
3421 |
color: white;
|
3422 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
249 |
}
|
250 |
.mo2f_black_background
|
251 |
{
|
252 |
+
background: #f1f1f1;
|
253 |
+
width: 1.4%;
|
254 |
}
|
255 |
.mo2f_2fa_plan_title
|
256 |
{
|
260 |
.mo2f_padding_style
|
261 |
{
|
262 |
padding: 2px 0px;
|
263 |
+
width: 23%;
|
264 |
}
|
265 |
.mo2f_white_color_style
|
266 |
{
|
268 |
}
|
269 |
.mo2f_2fa_lite_plan_title
|
270 |
{
|
271 |
+
background-color: #7ccbc7;
|
272 |
+
border: 1.5px solid black;
|
273 |
width: 25%
|
274 |
}
|
275 |
.mo2f_tooltip {
|
468 |
.mo_wpns_upgrade_security_title
|
469 |
{
|
470 |
width: 23%;
|
471 |
+
min-height: 480px;
|
472 |
background-color: white;
|
473 |
float: left;
|
474 |
border: 2px solid black;
|
475 |
+
border-top: none;
|
476 |
}
|
477 |
.mo_wpns_upgrade_title_2fa_lite
|
478 |
{
|
479 |
width: 23%;
|
480 |
+
min-height: 332px;
|
481 |
background-color: white;
|
482 |
float: left;
|
483 |
+
border-top: none;
|
484 |
}
|
485 |
.mo_wpns_upgrade_page_title_name
|
486 |
{
|
487 |
text-align: center;
|
488 |
+
background-color: #393939;
|
|
|
489 |
min-height: 62px;
|
490 |
|
491 |
}
|
494 |
margin-top: 0%;
|
495 |
padding: 6% 0% 0% 0%;
|
496 |
color: white;
|
497 |
+
font-size: 220%;
|
498 |
}
|
499 |
.mo_wpns_upgrade_page_2fa_integration_plan_name
|
500 |
{
|
505 |
}
|
506 |
.mo_wpns_upgrade_page_hr
|
507 |
{
|
508 |
+
border:1px solid #393939;
|
509 |
}
|
510 |
.mo_wpns_upgrade_page_2fa_background
|
511 |
{
|
515 |
}
|
516 |
.mo_wpns_upgrade_page_2fa_lite_background
|
517 |
{
|
518 |
+
min-height: 231px;
|
519 |
+
background-color: white;
|
520 |
+
padding: 5px;
|
521 |
}
|
522 |
.mo_wpns_upgrade_page_show_feature_arrow
|
523 |
{
|
538 |
}
|
539 |
.mo_wpns_upgrade_page_space_in_div
|
540 |
{
|
541 |
+
width: 1.3%;
|
542 |
+
min-height: 332px;
|
543 |
background-color: none;
|
544 |
float: left;
|
545 |
}
|
549 |
}
|
550 |
.mo_wpns_upgrade_pade_pricing
|
551 |
{
|
552 |
+
color: #2ca29c;
|
553 |
font-size: 350%;
|
554 |
}
|
555 |
.mo_wpns_upgrade_page_starting_price
|
556 |
{
|
557 |
+
color: black;
|
558 |
padding-top: 2%;
|
559 |
+
margin-top: 0px;
|
560 |
}
|
561 |
.mo_wpns_upgrade_page_2fa_ns
|
562 |
{
|
563 |
+
width: 96.8%;
|
|
|
564 |
color: #6cd3cd;
|
565 |
float: left;
|
566 |
text-align: center;
|
|
|
567 |
}
|
568 |
.mo_wpns_upgrade_page_show_feature
|
569 |
{
|
570 |
+
color: #007cba;
|
571 |
background-color: white;
|
572 |
font-size: 250%;
|
573 |
font-weight: 500;
|
574 |
+
display: none;
|
575 |
}
|
576 |
.mo_wpns_upgrade_page_hide_feature
|
577 |
{
|
578 |
+
color: #007cba;
|
579 |
background-color: white;
|
580 |
font-size: 250%;
|
581 |
font-weight: 500;
|
582 |
+
|
583 |
}
|
584 |
.mo_wpns_upgrade_page_2fa_ns_1
|
585 |
{
|
586 |
+
color: white;
|
587 |
font-size: 250%;
|
588 |
}
|
589 |
.mo_wpns_upgrade_page_ns_background
|
590 |
{
|
591 |
width: 100%;
|
592 |
min-height: 277px;
|
593 |
+
background-color: white;
|
594 |
}
|
595 |
.mo_wpns_button_info_tab {
|
596 |
background-color: #20b2aa;
|
669 |
}
|
670 |
.overlay_error {
|
671 |
width: min-content;
|
672 |
+
height: min-content;
|
673 |
+
padding-bottom: 1%;
|
674 |
position: fixed;
|
675 |
float: right;
|
676 |
z-index: 1;
|
1021 |
text-align: center;
|
1022 |
color: black;
|
1023 |
box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1024 |
}
|
1025 |
+
|
|
|
|
|
|
|
|
|
|
|
1026 |
|
1027 |
h2.mo_wpns_nav-tab-wrapper
|
1028 |
{
|
1098 |
height: auto;
|
1099 |
width: 100%;
|
1100 |
float: left;
|
|
|
1101 |
}
|
1102 |
.mo_wpns_setting_layout
|
1103 |
{
|
1108 |
border: 2px solid #20b2aa;
|
1109 |
float: left;
|
1110 |
width: 94%;
|
|
|
1111 |
|
1112 |
overflow: hidden;
|
1113 |
text-align: left;
|
1128 |
box-shadow: 0 0px 0px 0 rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.19);
|
1129 |
}
|
1130 |
.mo_wpns_sub_nav_tab {
|
|
|
|
|
1131 |
background-color: #f1f1f1;
|
1132 |
margin:22px;
|
1133 |
}
|
1260 |
}
|
1261 |
.mo_wpns_upgrade_page_button
|
1262 |
{
|
1263 |
+
border: 1px solid black;
|
1264 |
+
background-color: #7ccbc7;
|
1265 |
+
padding: 12px 0px;
|
1266 |
+
width: 98.5%;
|
|
|
1267 |
}
|
1268 |
.mo_wpns_products-dollar-amount {
|
1269 |
color: #797878;
|
2821 |
border-color: lightgrey;
|
2822 |
border-radius: 4px;
|
2823 |
border-width: 1px;
|
|
|
2824 |
}
|
2825 |
|
2826 |
.mo2f_licensing_plans_tr {
|
3402 |
background-color: #2EB150;
|
3403 |
color: white;
|
3404 |
}
|
3405 |
+
.mo2f_boder_radius
|
3406 |
+
{
|
3407 |
+
border-bottom-left-radius: 25px;
|
3408 |
+
}
|
3409 |
+
.mo2f_back_button
|
3410 |
+
{
|
3411 |
+
margin-left: 4px;
|
3412 |
+
padding: 4px 8px;
|
3413 |
+
position: relative;
|
3414 |
+
top: -3px;
|
3415 |
+
text-decoration: none;
|
3416 |
+
border: 1px solid #0071a1;
|
3417 |
+
border-radius: 2px;
|
3418 |
+
text-shadow: none;
|
3419 |
+
font-weight: 600;
|
3420 |
+
font-size: 13px;
|
3421 |
+
line-height: normal;
|
3422 |
+
color: #0071a1;
|
3423 |
+
background: #f3f5f6;
|
3424 |
+
cursor: pointer;
|
3425 |
+
}
|
3426 |
+
.mo2f_back_button:hover
|
3427 |
+
{
|
3428 |
+
background-color: #daf0f2;
|
3429 |
+
}
|
3430 |
+
.mo2f_plan_based_title
|
3431 |
+
{
|
3432 |
+
width: 47%;
|
3433 |
+
background-color: #7ccbc7;
|
3434 |
+
float: left;
|
3435 |
+
border: 2px solid black;
|
3436 |
+
border-bottom: none;
|
3437 |
+
border-top-left-radius: 10px;
|
3438 |
+
border-top-right-radius: 10px;
|
3439 |
+
}
|
3440 |
+
.mo2f_plan_based_title_div
|
3441 |
+
{
|
3442 |
+
color: white;
|
3443 |
+
font-size: 264%;
|
3444 |
+
|
3445 |
+
}
|
3446 |
+
.mo2f_addons_alignment
|
3447 |
+
{
|
3448 |
+
color:#20b2aa;
|
3449 |
+
font-size: large;
|
3450 |
+
float: left;
|
3451 |
+
margin-right: 5px;
|
3452 |
+
}
|
3453 |
+
.mo2f_addons_not_included
|
3454 |
+
{
|
3455 |
+
color:red;
|
3456 |
+
font-size: x-large;
|
3457 |
+
float: left;
|
3458 |
+
margin-right: 5px;
|
3459 |
+
}
|
3460 |
+
.mo2f_auth_method_style
|
3461 |
+
{
|
3462 |
+
font-size: 15px;
|
3463 |
+
line-height: initial;
|
3464 |
+
}
|
3465 |
+
.mo2f_active_plan
|
3466 |
+
{
|
3467 |
+
background-color: #7ccbc7;
|
3468 |
+
border-radius: 50em;
|
3469 |
+
}
|
3470 |
+
.mo_wpns_upgrade_page_2fa_ns_styles
|
3471 |
+
{
|
3472 |
+
background-color: #7ccbc7;
|
3473 |
+
border: 2px solid black;
|
3474 |
+
border-top-left-radius: 25px;
|
3475 |
+
border-top-right-radius: 25px;
|
3476 |
+
border-bottom: none;
|
3477 |
+
}
|
3478 |
+
.mo2f_tooltip .mo2f_site_based_vs_user_based
|
3479 |
+
{
|
3480 |
+
min-height: 200px;
|
3481 |
+
margin-top: 10%;
|
3482 |
+
background-color: #ffffff;
|
3483 |
+
color: black;
|
3484 |
+
border: 1px solid black;
|
3485 |
+
width: 300px;
|
3486 |
+
padding: 0px;
|
3487 |
+
margin-left: -146px;
|
3488 |
+
box-shadow: 0 12px 16px 0 rgba(0,0,0,0.24), 0 17px 50px 0 rgba(0,0,0,0.19);
|
3489 |
+
}
|
3490 |
+
.mo2f_tooltip .mo2f_site_based_vs_user_based_title
|
3491 |
+
{
|
3492 |
+
background-color: #ccf2f1;
|
3493 |
+
color: black;
|
3494 |
+
padding: 10px;
|
3495 |
+
}
|
3496 |
+
.mo2f_site_based_vs_user_based_info_icon
|
3497 |
+
{
|
3498 |
+
font-size: 25px;
|
3499 |
+
color: #ffffff;
|
3500 |
+
margin-left: 15px;
|
3501 |
+
}
|
includes/jquery-qrcode/jquery-qrcode.min.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1 |
-
/*! jquery-qrcode v0.14.0 - https://larsjung.de/jquery-qrcode/ */
|
2 |
!function(r){"use strict";function t(t,e,n,o){function a(r,t){return r-=o,t-=o,0>r||r>=c||0>t||t>=c?!1:f.isDark(r,t)}function i(r,t,e,n){var o=u.isDark,a=1/l;u.isDark=function(i,u){var f=u*a,c=i*a,l=f+a,g=c+a;return o(i,u)&&(r>l||f>e||t>g||c>n)}}var u={},f=r(n,e);f.addData(t),f.make(),o=o||0;var c=f.getModuleCount(),l=f.getModuleCount()+2*o;return u.text=t,u.level=e,u.version=n,u.moduleCount=l,u.isDark=a,u.addBlank=i,u}function e(r,e,n,o,a){n=Math.max(1,n||1),o=Math.min(40,o||40);for(var i=n;o>=i;i+=1)try{return t(r,e,i,a)}catch(u){}}function n(r,t,e){var n=e.size,o="bold "+e.mSize*n+"px "+e.fontname,a=w("<canvas/>")[0].getContext("2d");a.font=o;var i=a.measureText(e.label).width,u=e.mSize,f=i/n,c=(1-f)*e.mPosX,l=(1-u)*e.mPosY,g=c+f,s=l+u,v=.01;1===e.mode?r.addBlank(0,l-v,n,s+v):r.addBlank(c-v,l-v,g+v,s+v),t.fillStyle=e.fontcolor,t.font=o,t.fillText(e.label,c*n,l*n+.75*e.mSize*n)}function o(r,t,e){var n=e.size,o=e.image.naturalWidth||1,a=e.image.naturalHeight||1,i=e.mSize,u=i*o/a,f=(1-u)*e.mPosX,c=(1-i)*e.mPosY,l=f+u,g=c+i,s=.01;3===e.mode?r.addBlank(0,c-s,n,g+s):r.addBlank(f-s,c-s,l+s,g+s),t.drawImage(e.image,f*n,c*n,u*n,i*n)}function a(r,t,e){w(e.background).is("img")?t.drawImage(e.background,0,0,e.size,e.size):e.background&&(t.fillStyle=e.background,t.fillRect(e.left,e.top,e.size,e.size));var a=e.mode;1===a||2===a?n(r,t,e):(3===a||4===a)&&o(r,t,e)}function i(r,t,e,n,o,a,i,u){r.isDark(i,u)&&t.rect(n,o,a,a)}function u(r,t,e,n,o,a,i,u,f,c){i?r.moveTo(t+a,e):r.moveTo(t,e),u?(r.lineTo(n-a,e),r.arcTo(n,e,n,o,a)):r.lineTo(n,e),f?(r.lineTo(n,o-a),r.arcTo(n,o,t,o,a)):r.lineTo(n,o),c?(r.lineTo(t+a,o),r.arcTo(t,o,t,e,a)):r.lineTo(t,o),i?(r.lineTo(t,e+a),r.arcTo(t,e,n,e,a)):r.lineTo(t,e)}function f(r,t,e,n,o,a,i,u,f,c){i&&(r.moveTo(t+a,e),r.lineTo(t,e),r.lineTo(t,e+a),r.arcTo(t,e,t+a,e,a)),u&&(r.moveTo(n-a,e),r.lineTo(n,e),r.lineTo(n,e+a),r.arcTo(n,e,n-a,e,a)),f&&(r.moveTo(n-a,o),r.lineTo(n,o),r.lineTo(n,o-a),r.arcTo(n,o,n-a,o,a)),c&&(r.moveTo(t+a,o),r.lineTo(t,o),r.lineTo(t,o-a),r.arcTo(t,o,t+a,o,a))}function c(r,t,e,n,o,a,i,c){var l=r.isDark,g=n+a,s=o+a,v=e.radius*a,h=i-1,d=i+1,w=c-1,m=c+1,y=l(i,c),T=l(h,w),p=l(h,c),B=l(h,m),A=l(i,m),E=l(d,m),k=l(d,c),M=l(d,w),C=l(i,w);y?u(t,n,o,g,s,v,!p&&!C,!p&&!A,!k&&!A,!k&&!C):f(t,n,o,g,s,v,p&&C&&T,p&&A&&B,k&&A&&E,k&&C&&M)}function l(r,t,e){var n,o,a=r.moduleCount,u=e.size/a,f=i;for(e.radius>0&&e.radius<=.5&&(f=c),t.beginPath(),n=0;a>n;n+=1)for(o=0;a>o;o+=1){var l=e.left+o*u,g=e.top+n*u,s=u;f(r,t,e,l,g,s,n,o)}if(w(e.fill).is("img")){t.strokeStyle="rgba(0,0,0,0.5)",t.lineWidth=2,t.stroke();var v=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",t.fill(),t.globalCompositeOperation=v,t.clip(),t.drawImage(e.fill,0,0,e.size,e.size),t.restore()}else t.fillStyle=e.fill,t.fill()}function g(r,t){var n=e(t.text,t.ecLevel,t.minVersion,t.maxVersion,t.quiet);if(!n)return null;var o=w(r).data("qrcode",n),i=o[0].getContext("2d");return a(n,i,t),l(n,i,t),o}function s(r){var t=w("<canvas/>").attr("width",r.size).attr("height",r.size);return g(t,r)}function v(r){return w("<img/>").attr("src",s(r)[0].toDataURL("image/png"))}function h(r){var t=e(r.text,r.ecLevel,r.minVersion,r.maxVersion,r.quiet);if(!t)return null;var n,o,a=r.size,i=r.background,u=Math.floor,f=t.moduleCount,c=u(a/f),l=u(.5*(a-c*f)),g={position:"relative",left:0,top:0,padding:0,margin:0,width:a,height:a},s={position:"absolute",padding:0,margin:0,width:c,height:c,"background-color":r.fill},v=w("<div/>").data("qrcode",t).css(g);for(i&&v.css("background-color",i),n=0;f>n;n+=1)for(o=0;f>o;o+=1)t.isDark(n,o)&&w("<div/>").css(s).css({left:l+o*c,top:l+n*c}).appendTo(v);return v}function d(r){return m&&"canvas"===r.render?s(r):m&&"image"===r.render?v(r):h(r)}var w=window.jQuery,m=function(){var r=document.createElement("canvas");return!(!r.getContext||!r.getContext("2d"))}(),y={render:"canvas",minVersion:1,maxVersion:40,ecLevel:"L",left:0,top:0,size:200,fill:"#000",background:null,text:"no text",radius:0,quiet:0,mode:0,mSize:.1,mPosX:.5,mPosY:.5,label:"no label",fontname:"sans",fontcolor:"#000",image:null};w.fn.qrcode=function(r){var t=w.extend({},y,r);return this.each(function(r,e){"canvas"===e.nodeName.toLowerCase()?g(e,t):w(e).append(d(t))})}}(function(){var r=function(){function r(t,e){if("undefined"==typeof t.length)throw new Error(t.length+"/"+e);var n=function(){for(var r=0;r<t.length&&0==t[r];)r+=1;for(var n=new Array(t.length-r+e),o=0;o<t.length-r;o+=1)n[o]=t[o+r];return n}(),o={};return o.getAt=function(r){return n[r]},o.getLength=function(){return n.length},o.multiply=function(t){for(var e=new Array(o.getLength()+t.getLength()-1),n=0;n<o.getLength();n+=1)for(var a=0;a<t.getLength();a+=1)e[n+a]^=i.gexp(i.glog(o.getAt(n))+i.glog(t.getAt(a)));return r(e,0)},o.mod=function(t){if(o.getLength()-t.getLength()<0)return o;for(var e=i.glog(o.getAt(0))-i.glog(t.getAt(0)),n=new Array(o.getLength()),a=0;a<o.getLength();a+=1)n[a]=o.getAt(a);for(var a=0;a<t.getLength();a+=1)n[a]^=i.gexp(i.glog(t.getAt(a))+e);return r(n,0).mod(t)},o}var t=function(t,e){var o=236,i=17,l=t,g=n[e],s=null,v=0,d=null,w=new Array,m={},y=function(r,t){v=4*l+17,s=function(r){for(var t=new Array(r),e=0;r>e;e+=1){t[e]=new Array(r);for(var n=0;r>n;n+=1)t[e][n]=null}return t}(v),T(0,0),T(v-7,0),T(0,v-7),A(),B(),k(r,t),l>=7&&E(r),null==d&&(d=D(l,g,w)),M(d,t)},T=function(r,t){for(var e=-1;7>=e;e+=1)if(!(-1>=r+e||r+e>=v))for(var n=-1;7>=n;n+=1)-1>=t+n||t+n>=v||(e>=0&&6>=e&&(0==n||6==n)||n>=0&&6>=n&&(0==e||6==e)||e>=2&&4>=e&&n>=2&&4>=n?s[r+e][t+n]=!0:s[r+e][t+n]=!1)},p=function(){for(var r=0,t=0,e=0;8>e;e+=1){y(!0,e);var n=a.getLostPoint(m);(0==e||r>n)&&(r=n,t=e)}return t},B=function(){for(var r=8;v-8>r;r+=1)null==s[r][6]&&(s[r][6]=r%2==0);for(var t=8;v-8>t;t+=1)null==s[6][t]&&(s[6][t]=t%2==0)},A=function(){for(var r=a.getPatternPosition(l),t=0;t<r.length;t+=1)for(var e=0;e<r.length;e+=1){var n=r[t],o=r[e];if(null==s[n][o])for(var i=-2;2>=i;i+=1)for(var u=-2;2>=u;u+=1)-2==i||2==i||-2==u||2==u||0==i&&0==u?s[n+i][o+u]=!0:s[n+i][o+u]=!1}},E=function(r){for(var t=a.getBCHTypeNumber(l),e=0;18>e;e+=1){var n=!r&&1==(t>>e&1);s[Math.floor(e/3)][e%3+v-8-3]=n}for(var e=0;18>e;e+=1){var n=!r&&1==(t>>e&1);s[e%3+v-8-3][Math.floor(e/3)]=n}},k=function(r,t){for(var e=g<<3|t,n=a.getBCHTypeInfo(e),o=0;15>o;o+=1){var i=!r&&1==(n>>o&1);6>o?s[o][8]=i:8>o?s[o+1][8]=i:s[v-15+o][8]=i}for(var o=0;15>o;o+=1){var i=!r&&1==(n>>o&1);8>o?s[8][v-o-1]=i:9>o?s[8][15-o-1+1]=i:s[8][15-o-1]=i}s[v-8][8]=!r},M=function(r,t){for(var e=-1,n=v-1,o=7,i=0,u=a.getMaskFunction(t),f=v-1;f>0;f-=2)for(6==f&&(f-=1);;){for(var c=0;2>c;c+=1)if(null==s[n][f-c]){var l=!1;i<r.length&&(l=1==(r[i]>>>o&1));var g=u(n,f-c);g&&(l=!l),s[n][f-c]=l,o-=1,-1==o&&(i+=1,o=7)}if(n+=e,0>n||n>=v){n-=e,e=-e;break}}},C=function(t,e){for(var n=0,o=0,i=0,u=new Array(e.length),f=new Array(e.length),c=0;c<e.length;c+=1){var l=e[c].dataCount,g=e[c].totalCount-l;o=Math.max(o,l),i=Math.max(i,g),u[c]=new Array(l);for(var s=0;s<u[c].length;s+=1)u[c][s]=255&t.getBuffer()[s+n];n+=l;var v=a.getErrorCorrectPolynomial(g),h=r(u[c],v.getLength()-1),d=h.mod(v);f[c]=new Array(v.getLength()-1);for(var s=0;s<f[c].length;s+=1){var w=s+d.getLength()-f[c].length;f[c][s]=w>=0?d.getAt(w):0}}for(var m=0,s=0;s<e.length;s+=1)m+=e[s].totalCount;for(var y=new Array(m),T=0,s=0;o>s;s+=1)for(var c=0;c<e.length;c+=1)s<u[c].length&&(y[T]=u[c][s],T+=1);for(var s=0;i>s;s+=1)for(var c=0;c<e.length;c+=1)s<f[c].length&&(y[T]=f[c][s],T+=1);return y},D=function(r,t,e){for(var n=u.getRSBlocks(r,t),c=f(),l=0;l<e.length;l+=1){var g=e[l];c.put(g.getMode(),4),c.put(g.getLength(),a.getLengthInBits(g.getMode(),r)),g.write(c)}for(var s=0,l=0;l<n.length;l+=1)s+=n[l].dataCount;if(c.getLengthInBits()>8*s)throw new Error("code length overflow. ("+c.getLengthInBits()+">"+8*s+")");for(c.getLengthInBits()+4<=8*s&&c.put(0,4);c.getLengthInBits()%8!=0;)c.putBit(!1);for(;;){if(c.getLengthInBits()>=8*s)break;if(c.put(o,8),c.getLengthInBits()>=8*s)break;c.put(i,8)}return C(c,n)};return m.addData=function(r){var t=c(r);w.push(t),d=null},m.isDark=function(r,t){if(0>r||r>=v||0>t||t>=v)throw new Error(r+","+t);return s[r][t]},m.getModuleCount=function(){return v},m.make=function(){y(!1,p())},m.createTableTag=function(r,t){r=r||2,t="undefined"==typeof t?4*r:t;var e="";e+='<table style="',e+=" border-width: 0px; border-style: none;",e+=" border-collapse: collapse;",e+=" padding: 0px; margin: "+t+"px;",e+='">',e+="<tbody>";for(var n=0;n<m.getModuleCount();n+=1){e+="<tr>";for(var o=0;o<m.getModuleCount();o+=1)e+='<td style="',e+=" border-width: 0px; border-style: none;",e+=" border-collapse: collapse;",e+=" padding: 0px; margin: 0px;",e+=" width: "+r+"px;",e+=" height: "+r+"px;",e+=" background-color: ",e+=m.isDark(n,o)?"#000000":"#ffffff",e+=";",e+='"/>';e+="</tr>"}return e+="</tbody>",e+="</table>"},m.createImgTag=function(r,t){r=r||2,t="undefined"==typeof t?4*r:t;var e=m.getModuleCount()*r+2*t,n=t,o=e-t;return h(e,e,function(t,e){if(t>=n&&o>t&&e>=n&&o>e){var a=Math.floor((t-n)/r),i=Math.floor((e-n)/r);return m.isDark(i,a)?0:1}return 1})},m};t.stringToBytes=function(r){for(var t=new Array,e=0;e<r.length;e+=1){var n=r.charCodeAt(e);t.push(255&n)}return t},t.createStringToBytes=function(r,t){var e=function(){for(var e=s(r),n=function(){var r=e.read();if(-1==r)throw new Error;return r},o=0,a={};;){var i=e.read();if(-1==i)break;var u=n(),f=n(),c=n(),l=String.fromCharCode(i<<8|u),g=f<<8|c;a[l]=g,o+=1}if(o!=t)throw new Error(o+" != "+t);return a}(),n="?".charCodeAt(0);return function(r){for(var t=new Array,o=0;o<r.length;o+=1){var a=r.charCodeAt(o);if(128>a)t.push(a);else{var i=e[r.charAt(o)];"number"==typeof i?(255&i)==i?t.push(i):(t.push(i>>>8),t.push(255&i)):t.push(n)}}return t}};var e={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8},n={L:1,M:0,Q:3,H:2},o={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7},a=function(){var t=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],n=1335,a=7973,u=21522,f={},c=function(r){for(var t=0;0!=r;)t+=1,r>>>=1;return t};return f.getBCHTypeInfo=function(r){for(var t=r<<10;c(t)-c(n)>=0;)t^=n<<c(t)-c(n);return(r<<10|t)^u},f.getBCHTypeNumber=function(r){for(var t=r<<12;c(t)-c(a)>=0;)t^=a<<c(t)-c(a);return r<<12|t},f.getPatternPosition=function(r){return t[r-1]},f.getMaskFunction=function(r){switch(r){case o.PATTERN000:return function(r,t){return(r+t)%2==0};case o.PATTERN001:return function(r,t){return r%2==0};case o.PATTERN010:return function(r,t){return t%3==0};case o.PATTERN011:return function(r,t){return(r+t)%3==0};case o.PATTERN100:return function(r,t){return(Math.floor(r/2)+Math.floor(t/3))%2==0};case o.PATTERN101:return function(r,t){return r*t%2+r*t%3==0};case o.PATTERN110:return function(r,t){return(r*t%2+r*t%3)%2==0};case o.PATTERN111:return function(r,t){return(r*t%3+(r+t)%2)%2==0};default:throw new Error("bad maskPattern:"+r)}},f.getErrorCorrectPolynomial=function(t){for(var e=r([1],0),n=0;t>n;n+=1)e=e.multiply(r([1,i.gexp(n)],0));return e},f.getLengthInBits=function(r,t){if(t>=1&&10>t)switch(r){case e.MODE_NUMBER:return 10;case e.MODE_ALPHA_NUM:return 9;case e.MODE_8BIT_BYTE:return 8;case e.MODE_KANJI:return 8;default:throw new Error("mode:"+r)}else if(27>t)switch(r){case e.MODE_NUMBER:return 12;case e.MODE_ALPHA_NUM:return 11;case e.MODE_8BIT_BYTE:return 16;case e.MODE_KANJI:return 10;default:throw new Error("mode:"+r)}else{if(!(41>t))throw new Error("type:"+t);switch(r){case e.MODE_NUMBER:return 14;case e.MODE_ALPHA_NUM:return 13;case e.MODE_8BIT_BYTE:return 16;case e.MODE_KANJI:return 12;default:throw new Error("mode:"+r)}}},f.getLostPoint=function(r){for(var t=r.getModuleCount(),e=0,n=0;t>n;n+=1)for(var o=0;t>o;o+=1){for(var a=0,i=r.isDark(n,o),u=-1;1>=u;u+=1)if(!(0>n+u||n+u>=t))for(var f=-1;1>=f;f+=1)0>o+f||o+f>=t||(0!=u||0!=f)&&i==r.isDark(n+u,o+f)&&(a+=1);a>5&&(e+=3+a-5)}for(var n=0;t-1>n;n+=1)for(var o=0;t-1>o;o+=1){var c=0;r.isDark(n,o)&&(c+=1),r.isDark(n+1,o)&&(c+=1),r.isDark(n,o+1)&&(c+=1),r.isDark(n+1,o+1)&&(c+=1),(0==c||4==c)&&(e+=3)}for(var n=0;t>n;n+=1)for(var o=0;t-6>o;o+=1)r.isDark(n,o)&&!r.isDark(n,o+1)&&r.isDark(n,o+2)&&r.isDark(n,o+3)&&r.isDark(n,o+4)&&!r.isDark(n,o+5)&&r.isDark(n,o+6)&&(e+=40);for(var o=0;t>o;o+=1)for(var n=0;t-6>n;n+=1)r.isDark(n,o)&&!r.isDark(n+1,o)&&r.isDark(n+2,o)&&r.isDark(n+3,o)&&r.isDark(n+4,o)&&!r.isDark(n+5,o)&&r.isDark(n+6,o)&&(e+=40);for(var l=0,o=0;t>o;o+=1)for(var n=0;t>n;n+=1)r.isDark(n,o)&&(l+=1);var g=Math.abs(100*l/t/t-50)/5;return e+=10*g},f}(),i=function(){for(var r=new Array(256),t=new Array(256),e=0;8>e;e+=1)r[e]=1<<e;for(var e=8;256>e;e+=1)r[e]=r[e-4]^r[e-5]^r[e-6]^r[e-8];for(var e=0;255>e;e+=1)t[r[e]]=e;var n={};return n.glog=function(r){if(1>r)throw new Error("glog("+r+")");return t[r]},n.gexp=function(t){for(;0>t;)t+=255;for(;t>=256;)t-=255;return r[t]},n}(),u=function(){var r=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12,7,37,13],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]],t=function(r,t){var e={};return e.totalCount=r,e.dataCount=t,e},e={},o=function(t,e){switch(e){case n.L:return r[4*(t-1)+0];case n.M:return r[4*(t-1)+1];case n.Q:return r[4*(t-1)+2];case n.H:return r[4*(t-1)+3];default:return}};return e.getRSBlocks=function(r,e){var n=o(r,e);if("undefined"==typeof n)throw new Error("bad rs block @ typeNumber:"+r+"/errorCorrectLevel:"+e);for(var a=n.length/3,i=new Array,u=0;a>u;u+=1)for(var f=n[3*u+0],c=n[3*u+1],l=n[3*u+2],g=0;f>g;g+=1)i.push(t(c,l));return i},e}(),f=function(){var r=new Array,t=0,e={};return e.getBuffer=function(){return r},e.getAt=function(t){var e=Math.floor(t/8);return 1==(r[e]>>>7-t%8&1)},e.put=function(r,t){for(var n=0;t>n;n+=1)e.putBit(1==(r>>>t-n-1&1))},e.getLengthInBits=function(){return t},e.putBit=function(e){var n=Math.floor(t/8);r.length<=n&&r.push(0),e&&(r[n]|=128>>>t%8),t+=1},e},c=function(r){var n=e.MODE_8BIT_BYTE,o=t.stringToBytes(r),a={};return a.getMode=function(){return n},a.getLength=function(r){return o.length},a.write=function(r){for(var t=0;t<o.length;t+=1)r.put(o[t],8)},a},l=function(){var r=new Array,t={};return t.writeByte=function(t){r.push(255&t)},t.writeShort=function(r){t.writeByte(r),t.writeByte(r>>>8)},t.writeBytes=function(r,e,n){e=e||0,n=n||r.length;for(var o=0;n>o;o+=1)t.writeByte(r[o+e])},t.writeString=function(r){for(var e=0;e<r.length;e+=1)t.writeByte(r.charCodeAt(e))},t.toByteArray=function(){return r},t.toString=function(){var t="";t+="[";for(var e=0;e<r.length;e+=1)e>0&&(t+=","),t+=r[e];return t+="]"},t},g=function(){var r=0,t=0,e=0,n="",o={},a=function(r){n+=String.fromCharCode(i(63&r))},i=function(r){if(0>r);else{if(26>r)return 65+r;if(52>r)return 97+(r-26);if(62>r)return 48+(r-52);if(62==r)return 43;if(63==r)return 47}throw new Error("n:"+r)};return o.writeByte=function(n){for(r=r<<8|255&n,t+=8,e+=1;t>=6;)a(r>>>t-6),t-=6},o.flush=function(){if(t>0&&(a(r<<6-t),r=0,t=0),e%3!=0)for(var o=3-e%3,i=0;o>i;i+=1)n+="="},o.toString=function(){return n},o},s=function(r){var t=r,e=0,n=0,o=0,a={};a.read=function(){for(;8>o;){if(e>=t.length){if(0==o)return-1;throw new Error("unexpected end of file./"+o)}var r=t.charAt(e);if(e+=1,"="==r)return o=0,-1;r.match(/^\s$/)||(n=n<<6|i(r.charCodeAt(0)),o+=6)}var a=n>>>o-8&255;return o-=8,a};var i=function(r){if(r>=65&&90>=r)return r-65;if(r>=97&&122>=r)return r-97+26;if(r>=48&&57>=r)return r-48+52;if(43==r)return 62;if(47==r)return 63;throw new Error("c:"+r)};return a},v=function(r,t){var e=r,n=t,o=new Array(r*t),a={};a.setPixel=function(r,t,n){o[t*e+r]=n},a.write=function(r){r.writeString("GIF87a"),r.writeShort(e),r.writeShort(n),r.writeByte(128),r.writeByte(0),r.writeByte(0),r.writeByte(0),r.writeByte(0),r.writeByte(0),r.writeByte(255),r.writeByte(255),r.writeByte(255),r.writeString(","),r.writeShort(0),r.writeShort(0),r.writeShort(e),r.writeShort(n),r.writeByte(0);var t=2,o=u(t);r.writeByte(t);for(var a=0;o.length-a>255;)r.writeByte(255),r.writeBytes(o,a,255),a+=255;r.writeByte(o.length-a),r.writeBytes(o,a,o.length-a),r.writeByte(0),r.writeString(";")};var i=function(r){var t=r,e=0,n=0,o={};return o.write=function(r,o){if(r>>>o!=0)throw new Error("length over");for(;e+o>=8;)t.writeByte(255&(r<<e|n)),o-=8-e,r>>>=8-e,n=0,e=0;n=r<<e|n,e+=o},o.flush=function(){e>0&&t.writeByte(n)},o},u=function(r){for(var t=1<<r,e=(1<<r)+1,n=r+1,a=f(),u=0;t>u;u+=1)a.add(String.fromCharCode(u));a.add(String.fromCharCode(t)),a.add(String.fromCharCode(e));var c=l(),g=i(c);g.write(t,n);var s=0,v=String.fromCharCode(o[s]);for(s+=1;s<o.length;){var h=String.fromCharCode(o[s]);s+=1,a.contains(v+h)?v+=h:(g.write(a.indexOf(v),n),a.size()<4095&&(a.size()==1<<n&&(n+=1),a.add(v+h)),v=h)}return g.write(a.indexOf(v),n),g.write(e,n),g.flush(),c.toByteArray()},f=function(){var r={},t=0,e={};return e.add=function(n){if(e.contains(n))throw new Error("dup key:"+n);r[n]=t,t+=1},e.size=function(){return t},e.indexOf=function(t){return r[t]},e.contains=function(t){return"undefined"!=typeof r[t]},e};return a},h=function(r,t,e,n){for(var o=v(r,t),a=0;t>a;a+=1)for(var i=0;r>i;i+=1)o.setPixel(i,a,e(i,a));var u=l();o.write(u);for(var f=g(),c=u.toByteArray(),s=0;s<c.length;s+=1)f.writeByte(c[s]);f.flush();var h="";return h+="<img",h+=' src="',h+="data:image/gif;base64,",h+=f,h+='"',h+=' width="',h+=r,h+='"',h+=' height="',h+=t,h+='"',n&&(h+=' alt="',h+=n,h+='"'),h+="/>"};return t}();return function(r){"function"==typeof define&&define.amd?define([],r):"object"==typeof exports&&(module.exports=r())}(function(){return r}),!function(r){r.stringToBytes=function(r){function t(r){for(var t=[],e=0;e<r.length;e++){var n=r.charCodeAt(e);128>n?t.push(n):2048>n?t.push(192|n>>6,128|63&n):55296>n||n>=57344?t.push(224|n>>12,128|n>>6&63,128|63&n):(e++,n=65536+((1023&n)<<10|1023&r.charCodeAt(e)),t.push(240|n>>18,128|n>>12&63,128|n>>6&63,128|63&n))}return t}return t(r)}}(r),r}());
|
1 |
+
/*! jquery-qrcode v0.14.0 - https://larsjung.de/jquery-qrcode/ */
|
2 |
!function(r){"use strict";function t(t,e,n,o){function a(r,t){return r-=o,t-=o,0>r||r>=c||0>t||t>=c?!1:f.isDark(r,t)}function i(r,t,e,n){var o=u.isDark,a=1/l;u.isDark=function(i,u){var f=u*a,c=i*a,l=f+a,g=c+a;return o(i,u)&&(r>l||f>e||t>g||c>n)}}var u={},f=r(n,e);f.addData(t),f.make(),o=o||0;var c=f.getModuleCount(),l=f.getModuleCount()+2*o;return u.text=t,u.level=e,u.version=n,u.moduleCount=l,u.isDark=a,u.addBlank=i,u}function e(r,e,n,o,a){n=Math.max(1,n||1),o=Math.min(40,o||40);for(var i=n;o>=i;i+=1)try{return t(r,e,i,a)}catch(u){}}function n(r,t,e){var n=e.size,o="bold "+e.mSize*n+"px "+e.fontname,a=w("<canvas/>")[0].getContext("2d");a.font=o;var i=a.measureText(e.label).width,u=e.mSize,f=i/n,c=(1-f)*e.mPosX,l=(1-u)*e.mPosY,g=c+f,s=l+u,v=.01;1===e.mode?r.addBlank(0,l-v,n,s+v):r.addBlank(c-v,l-v,g+v,s+v),t.fillStyle=e.fontcolor,t.font=o,t.fillText(e.label,c*n,l*n+.75*e.mSize*n)}function o(r,t,e){var n=e.size,o=e.image.naturalWidth||1,a=e.image.naturalHeight||1,i=e.mSize,u=i*o/a,f=(1-u)*e.mPosX,c=(1-i)*e.mPosY,l=f+u,g=c+i,s=.01;3===e.mode?r.addBlank(0,c-s,n,g+s):r.addBlank(f-s,c-s,l+s,g+s),t.drawImage(e.image,f*n,c*n,u*n,i*n)}function a(r,t,e){w(e.background).is("img")?t.drawImage(e.background,0,0,e.size,e.size):e.background&&(t.fillStyle=e.background,t.fillRect(e.left,e.top,e.size,e.size));var a=e.mode;1===a||2===a?n(r,t,e):(3===a||4===a)&&o(r,t,e)}function i(r,t,e,n,o,a,i,u){r.isDark(i,u)&&t.rect(n,o,a,a)}function u(r,t,e,n,o,a,i,u,f,c){i?r.moveTo(t+a,e):r.moveTo(t,e),u?(r.lineTo(n-a,e),r.arcTo(n,e,n,o,a)):r.lineTo(n,e),f?(r.lineTo(n,o-a),r.arcTo(n,o,t,o,a)):r.lineTo(n,o),c?(r.lineTo(t+a,o),r.arcTo(t,o,t,e,a)):r.lineTo(t,o),i?(r.lineTo(t,e+a),r.arcTo(t,e,n,e,a)):r.lineTo(t,e)}function f(r,t,e,n,o,a,i,u,f,c){i&&(r.moveTo(t+a,e),r.lineTo(t,e),r.lineTo(t,e+a),r.arcTo(t,e,t+a,e,a)),u&&(r.moveTo(n-a,e),r.lineTo(n,e),r.lineTo(n,e+a),r.arcTo(n,e,n-a,e,a)),f&&(r.moveTo(n-a,o),r.lineTo(n,o),r.lineTo(n,o-a),r.arcTo(n,o,n-a,o,a)),c&&(r.moveTo(t+a,o),r.lineTo(t,o),r.lineTo(t,o-a),r.arcTo(t,o,t+a,o,a))}function c(r,t,e,n,o,a,i,c){var l=r.isDark,g=n+a,s=o+a,v=e.radius*a,h=i-1,d=i+1,w=c-1,m=c+1,y=l(i,c),T=l(h,w),p=l(h,c),B=l(h,m),A=l(i,m),E=l(d,m),k=l(d,c),M=l(d,w),C=l(i,w);y?u(t,n,o,g,s,v,!p&&!C,!p&&!A,!k&&!A,!k&&!C):f(t,n,o,g,s,v,p&&C&&T,p&&A&&B,k&&A&&E,k&&C&&M)}function l(r,t,e){var n,o,a=r.moduleCount,u=e.size/a,f=i;for(e.radius>0&&e.radius<=.5&&(f=c),t.beginPath(),n=0;a>n;n+=1)for(o=0;a>o;o+=1){var l=e.left+o*u,g=e.top+n*u,s=u;f(r,t,e,l,g,s,n,o)}if(w(e.fill).is("img")){t.strokeStyle="rgba(0,0,0,0.5)",t.lineWidth=2,t.stroke();var v=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",t.fill(),t.globalCompositeOperation=v,t.clip(),t.drawImage(e.fill,0,0,e.size,e.size),t.restore()}else t.fillStyle=e.fill,t.fill()}function g(r,t){var n=e(t.text,t.ecLevel,t.minVersion,t.maxVersion,t.quiet);if(!n)return null;var o=w(r).data("qrcode",n),i=o[0].getContext("2d");return a(n,i,t),l(n,i,t),o}function s(r){var t=w("<canvas/>").attr("width",r.size).attr("height",r.size);return g(t,r)}function v(r){return w("<img/>").attr("src",s(r)[0].toDataURL("image/png"))}function h(r){var t=e(r.text,r.ecLevel,r.minVersion,r.maxVersion,r.quiet);if(!t)return null;var n,o,a=r.size,i=r.background,u=Math.floor,f=t.moduleCount,c=u(a/f),l=u(.5*(a-c*f)),g={position:"relative",left:0,top:0,padding:0,margin:0,width:a,height:a},s={position:"absolute",padding:0,margin:0,width:c,height:c,"background-color":r.fill},v=w("<div/>").data("qrcode",t).css(g);for(i&&v.css("background-color",i),n=0;f>n;n+=1)for(o=0;f>o;o+=1)t.isDark(n,o)&&w("<div/>").css(s).css({left:l+o*c,top:l+n*c}).appendTo(v);return v}function d(r){return m&&"canvas"===r.render?s(r):m&&"image"===r.render?v(r):h(r)}var w=window.jQuery,m=function(){var r=document.createElement("canvas");return!(!r.getContext||!r.getContext("2d"))}(),y={render:"canvas",minVersion:1,maxVersion:40,ecLevel:"L",left:0,top:0,size:200,fill:"#000",background:null,text:"no text",radius:0,quiet:0,mode:0,mSize:.1,mPosX:.5,mPosY:.5,label:"no label",fontname:"sans",fontcolor:"#000",image:null};w.fn.qrcode=function(r){var t=w.extend({},y,r);return this.each(function(r,e){"canvas"===e.nodeName.toLowerCase()?g(e,t):w(e).append(d(t))})}}(function(){var r=function(){function r(t,e){if("undefined"==typeof t.length)throw new Error(t.length+"/"+e);var n=function(){for(var r=0;r<t.length&&0==t[r];)r+=1;for(var n=new Array(t.length-r+e),o=0;o<t.length-r;o+=1)n[o]=t[o+r];return n}(),o={};return o.getAt=function(r){return n[r]},o.getLength=function(){return n.length},o.multiply=function(t){for(var e=new Array(o.getLength()+t.getLength()-1),n=0;n<o.getLength();n+=1)for(var a=0;a<t.getLength();a+=1)e[n+a]^=i.gexp(i.glog(o.getAt(n))+i.glog(t.getAt(a)));return r(e,0)},o.mod=function(t){if(o.getLength()-t.getLength()<0)return o;for(var e=i.glog(o.getAt(0))-i.glog(t.getAt(0)),n=new Array(o.getLength()),a=0;a<o.getLength();a+=1)n[a]=o.getAt(a);for(var a=0;a<t.getLength();a+=1)n[a]^=i.gexp(i.glog(t.getAt(a))+e);return r(n,0).mod(t)},o}var t=function(t,e){var o=236,i=17,l=t,g=n[e],s=null,v=0,d=null,w=new Array,m={},y=function(r,t){v=4*l+17,s=function(r){for(var t=new Array(r),e=0;r>e;e+=1){t[e]=new Array(r);for(var n=0;r>n;n+=1)t[e][n]=null}return t}(v),T(0,0),T(v-7,0),T(0,v-7),A(),B(),k(r,t),l>=7&&E(r),null==d&&(d=D(l,g,w)),M(d,t)},T=function(r,t){for(var e=-1;7>=e;e+=1)if(!(-1>=r+e||r+e>=v))for(var n=-1;7>=n;n+=1)-1>=t+n||t+n>=v||(e>=0&&6>=e&&(0==n||6==n)||n>=0&&6>=n&&(0==e||6==e)||e>=2&&4>=e&&n>=2&&4>=n?s[r+e][t+n]=!0:s[r+e][t+n]=!1)},p=function(){for(var r=0,t=0,e=0;8>e;e+=1){y(!0,e);var n=a.getLostPoint(m);(0==e||r>n)&&(r=n,t=e)}return t},B=function(){for(var r=8;v-8>r;r+=1)null==s[r][6]&&(s[r][6]=r%2==0);for(var t=8;v-8>t;t+=1)null==s[6][t]&&(s[6][t]=t%2==0)},A=function(){for(var r=a.getPatternPosition(l),t=0;t<r.length;t+=1)for(var e=0;e<r.length;e+=1){var n=r[t],o=r[e];if(null==s[n][o])for(var i=-2;2>=i;i+=1)for(var u=-2;2>=u;u+=1)-2==i||2==i||-2==u||2==u||0==i&&0==u?s[n+i][o+u]=!0:s[n+i][o+u]=!1}},E=function(r){for(var t=a.getBCHTypeNumber(l),e=0;18>e;e+=1){var n=!r&&1==(t>>e&1);s[Math.floor(e/3)][e%3+v-8-3]=n}for(var e=0;18>e;e+=1){var n=!r&&1==(t>>e&1);s[e%3+v-8-3][Math.floor(e/3)]=n}},k=function(r,t){for(var e=g<<3|t,n=a.getBCHTypeInfo(e),o=0;15>o;o+=1){var i=!r&&1==(n>>o&1);6>o?s[o][8]=i:8>o?s[o+1][8]=i:s[v-15+o][8]=i}for(var o=0;15>o;o+=1){var i=!r&&1==(n>>o&1);8>o?s[8][v-o-1]=i:9>o?s[8][15-o-1+1]=i:s[8][15-o-1]=i}s[v-8][8]=!r},M=function(r,t){for(var e=-1,n=v-1,o=7,i=0,u=a.getMaskFunction(t),f=v-1;f>0;f-=2)for(6==f&&(f-=1);;){for(var c=0;2>c;c+=1)if(null==s[n][f-c]){var l=!1;i<r.length&&(l=1==(r[i]>>>o&1));var g=u(n,f-c);g&&(l=!l),s[n][f-c]=l,o-=1,-1==o&&(i+=1,o=7)}if(n+=e,0>n||n>=v){n-=e,e=-e;break}}},C=function(t,e){for(var n=0,o=0,i=0,u=new Array(e.length),f=new Array(e.length),c=0;c<e.length;c+=1){var l=e[c].dataCount,g=e[c].totalCount-l;o=Math.max(o,l),i=Math.max(i,g),u[c]=new Array(l);for(var s=0;s<u[c].length;s+=1)u[c][s]=255&t.getBuffer()[s+n];n+=l;var v=a.getErrorCorrectPolynomial(g),h=r(u[c],v.getLength()-1),d=h.mod(v);f[c]=new Array(v.getLength()-1);for(var s=0;s<f[c].length;s+=1){var w=s+d.getLength()-f[c].length;f[c][s]=w>=0?d.getAt(w):0}}for(var m=0,s=0;s<e.length;s+=1)m+=e[s].totalCount;for(var y=new Array(m),T=0,s=0;o>s;s+=1)for(var c=0;c<e.length;c+=1)s<u[c].length&&(y[T]=u[c][s],T+=1);for(var s=0;i>s;s+=1)for(var c=0;c<e.length;c+=1)s<f[c].length&&(y[T]=f[c][s],T+=1);return y},D=function(r,t,e){for(var n=u.getRSBlocks(r,t),c=f(),l=0;l<e.length;l+=1){var g=e[l];c.put(g.getMode(),4),c.put(g.getLength(),a.getLengthInBits(g.getMode(),r)),g.write(c)}for(var s=0,l=0;l<n.length;l+=1)s+=n[l].dataCount;if(c.getLengthInBits()>8*s)throw new Error("code length overflow. ("+c.getLengthInBits()+">"+8*s+")");for(c.getLengthInBits()+4<=8*s&&c.put(0,4);c.getLengthInBits()%8!=0;)c.putBit(!1);for(;;){if(c.getLengthInBits()>=8*s)break;if(c.put(o,8),c.getLengthInBits()>=8*s)break;c.put(i,8)}return C(c,n)};return m.addData=function(r){var t=c(r);w.push(t),d=null},m.isDark=function(r,t){if(0>r||r>=v||0>t||t>=v)throw new Error(r+","+t);return s[r][t]},m.getModuleCount=function(){return v},m.make=function(){y(!1,p())},m.createTableTag=function(r,t){r=r||2,t="undefined"==typeof t?4*r:t;var e="";e+='<table style="',e+=" border-width: 0px; border-style: none;",e+=" border-collapse: collapse;",e+=" padding: 0px; margin: "+t+"px;",e+='">',e+="<tbody>";for(var n=0;n<m.getModuleCount();n+=1){e+="<tr>";for(var o=0;o<m.getModuleCount();o+=1)e+='<td style="',e+=" border-width: 0px; border-style: none;",e+=" border-collapse: collapse;",e+=" padding: 0px; margin: 0px;",e+=" width: "+r+"px;",e+=" height: "+r+"px;",e+=" background-color: ",e+=m.isDark(n,o)?"#000000":"#ffffff",e+=";",e+='"/>';e+="</tr>"}return e+="</tbody>",e+="</table>"},m.createImgTag=function(r,t){r=r||2,t="undefined"==typeof t?4*r:t;var e=m.getModuleCount()*r+2*t,n=t,o=e-t;return h(e,e,function(t,e){if(t>=n&&o>t&&e>=n&&o>e){var a=Math.floor((t-n)/r),i=Math.floor((e-n)/r);return m.isDark(i,a)?0:1}return 1})},m};t.stringToBytes=function(r){for(var t=new Array,e=0;e<r.length;e+=1){var n=r.charCodeAt(e);t.push(255&n)}return t},t.createStringToBytes=function(r,t){var e=function(){for(var e=s(r),n=function(){var r=e.read();if(-1==r)throw new Error;return r},o=0,a={};;){var i=e.read();if(-1==i)break;var u=n(),f=n(),c=n(),l=String.fromCharCode(i<<8|u),g=f<<8|c;a[l]=g,o+=1}if(o!=t)throw new Error(o+" != "+t);return a}(),n="?".charCodeAt(0);return function(r){for(var t=new Array,o=0;o<r.length;o+=1){var a=r.charCodeAt(o);if(128>a)t.push(a);else{var i=e[r.charAt(o)];"number"==typeof i?(255&i)==i?t.push(i):(t.push(i>>>8),t.push(255&i)):t.push(n)}}return t}};var e={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8},n={L:1,M:0,Q:3,H:2},o={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7},a=function(){var t=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],n=1335,a=7973,u=21522,f={},c=function(r){for(var t=0;0!=r;)t+=1,r>>>=1;return t};return f.getBCHTypeInfo=function(r){for(var t=r<<10;c(t)-c(n)>=0;)t^=n<<c(t)-c(n);return(r<<10|t)^u},f.getBCHTypeNumber=function(r){for(var t=r<<12;c(t)-c(a)>=0;)t^=a<<c(t)-c(a);return r<<12|t},f.getPatternPosition=function(r){return t[r-1]},f.getMaskFunction=function(r){switch(r){case o.PATTERN000:return function(r,t){return(r+t)%2==0};case o.PATTERN001:return function(r,t){return r%2==0};case o.PATTERN010:return function(r,t){return t%3==0};case o.PATTERN011:return function(r,t){return(r+t)%3==0};case o.PATTERN100:return function(r,t){return(Math.floor(r/2)+Math.floor(t/3))%2==0};case o.PATTERN101:return function(r,t){return r*t%2+r*t%3==0};case o.PATTERN110:return function(r,t){return(r*t%2+r*t%3)%2==0};case o.PATTERN111:return function(r,t){return(r*t%3+(r+t)%2)%2==0};default:throw new Error("bad maskPattern:"+r)}},f.getErrorCorrectPolynomial=function(t){for(var e=r([1],0),n=0;t>n;n+=1)e=e.multiply(r([1,i.gexp(n)],0));return e},f.getLengthInBits=function(r,t){if(t>=1&&10>t)switch(r){case e.MODE_NUMBER:return 10;case e.MODE_ALPHA_NUM:return 9;case e.MODE_8BIT_BYTE:return 8;case e.MODE_KANJI:return 8;default:throw new Error("mode:"+r)}else if(27>t)switch(r){case e.MODE_NUMBER:return 12;case e.MODE_ALPHA_NUM:return 11;case e.MODE_8BIT_BYTE:return 16;case e.MODE_KANJI:return 10;default:throw new Error("mode:"+r)}else{if(!(41>t))throw new Error("type:"+t);switch(r){case e.MODE_NUMBER:return 14;case e.MODE_ALPHA_NUM:return 13;case e.MODE_8BIT_BYTE:return 16;case e.MODE_KANJI:return 12;default:throw new Error("mode:"+r)}}},f.getLostPoint=function(r){for(var t=r.getModuleCount(),e=0,n=0;t>n;n+=1)for(var o=0;t>o;o+=1){for(var a=0,i=r.isDark(n,o),u=-1;1>=u;u+=1)if(!(0>n+u||n+u>=t))for(var f=-1;1>=f;f+=1)0>o+f||o+f>=t||(0!=u||0!=f)&&i==r.isDark(n+u,o+f)&&(a+=1);a>5&&(e+=3+a-5)}for(var n=0;t-1>n;n+=1)for(var o=0;t-1>o;o+=1){var c=0;r.isDark(n,o)&&(c+=1),r.isDark(n+1,o)&&(c+=1),r.isDark(n,o+1)&&(c+=1),r.isDark(n+1,o+1)&&(c+=1),(0==c||4==c)&&(e+=3)}for(var n=0;t>n;n+=1)for(var o=0;t-6>o;o+=1)r.isDark(n,o)&&!r.isDark(n,o+1)&&r.isDark(n,o+2)&&r.isDark(n,o+3)&&r.isDark(n,o+4)&&!r.isDark(n,o+5)&&r.isDark(n,o+6)&&(e+=40);for(var o=0;t>o;o+=1)for(var n=0;t-6>n;n+=1)r.isDark(n,o)&&!r.isDark(n+1,o)&&r.isDark(n+2,o)&&r.isDark(n+3,o)&&r.isDark(n+4,o)&&!r.isDark(n+5,o)&&r.isDark(n+6,o)&&(e+=40);for(var l=0,o=0;t>o;o+=1)for(var n=0;t>n;n+=1)r.isDark(n,o)&&(l+=1);var g=Math.abs(100*l/t/t-50)/5;return e+=10*g},f}(),i=function(){for(var r=new Array(256),t=new Array(256),e=0;8>e;e+=1)r[e]=1<<e;for(var e=8;256>e;e+=1)r[e]=r[e-4]^r[e-5]^r[e-6]^r[e-8];for(var e=0;255>e;e+=1)t[r[e]]=e;var n={};return n.glog=function(r){if(1>r)throw new Error("glog("+r+")");return t[r]},n.gexp=function(t){for(;0>t;)t+=255;for(;t>=256;)t-=255;return r[t]},n}(),u=function(){var r=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12,7,37,13],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]],t=function(r,t){var e={};return e.totalCount=r,e.dataCount=t,e},e={},o=function(t,e){switch(e){case n.L:return r[4*(t-1)+0];case n.M:return r[4*(t-1)+1];case n.Q:return r[4*(t-1)+2];case n.H:return r[4*(t-1)+3];default:return}};return e.getRSBlocks=function(r,e){var n=o(r,e);if("undefined"==typeof n)throw new Error("bad rs block @ typeNumber:"+r+"/errorCorrectLevel:"+e);for(var a=n.length/3,i=new Array,u=0;a>u;u+=1)for(var f=n[3*u+0],c=n[3*u+1],l=n[3*u+2],g=0;f>g;g+=1)i.push(t(c,l));return i},e}(),f=function(){var r=new Array,t=0,e={};return e.getBuffer=function(){return r},e.getAt=function(t){var e=Math.floor(t/8);return 1==(r[e]>>>7-t%8&1)},e.put=function(r,t){for(var n=0;t>n;n+=1)e.putBit(1==(r>>>t-n-1&1))},e.getLengthInBits=function(){return t},e.putBit=function(e){var n=Math.floor(t/8);r.length<=n&&r.push(0),e&&(r[n]|=128>>>t%8),t+=1},e},c=function(r){var n=e.MODE_8BIT_BYTE,o=t.stringToBytes(r),a={};return a.getMode=function(){return n},a.getLength=function(r){return o.length},a.write=function(r){for(var t=0;t<o.length;t+=1)r.put(o[t],8)},a},l=function(){var r=new Array,t={};return t.writeByte=function(t){r.push(255&t)},t.writeShort=function(r){t.writeByte(r),t.writeByte(r>>>8)},t.writeBytes=function(r,e,n){e=e||0,n=n||r.length;for(var o=0;n>o;o+=1)t.writeByte(r[o+e])},t.writeString=function(r){for(var e=0;e<r.length;e+=1)t.writeByte(r.charCodeAt(e))},t.toByteArray=function(){return r},t.toString=function(){var t="";t+="[";for(var e=0;e<r.length;e+=1)e>0&&(t+=","),t+=r[e];return t+="]"},t},g=function(){var r=0,t=0,e=0,n="",o={},a=function(r){n+=String.fromCharCode(i(63&r))},i=function(r){if(0>r);else{if(26>r)return 65+r;if(52>r)return 97+(r-26);if(62>r)return 48+(r-52);if(62==r)return 43;if(63==r)return 47}throw new Error("n:"+r)};return o.writeByte=function(n){for(r=r<<8|255&n,t+=8,e+=1;t>=6;)a(r>>>t-6),t-=6},o.flush=function(){if(t>0&&(a(r<<6-t),r=0,t=0),e%3!=0)for(var o=3-e%3,i=0;o>i;i+=1)n+="="},o.toString=function(){return n},o},s=function(r){var t=r,e=0,n=0,o=0,a={};a.read=function(){for(;8>o;){if(e>=t.length){if(0==o)return-1;throw new Error("unexpected end of file./"+o)}var r=t.charAt(e);if(e+=1,"="==r)return o=0,-1;r.match(/^\s$/)||(n=n<<6|i(r.charCodeAt(0)),o+=6)}var a=n>>>o-8&255;return o-=8,a};var i=function(r){if(r>=65&&90>=r)return r-65;if(r>=97&&122>=r)return r-97+26;if(r>=48&&57>=r)return r-48+52;if(43==r)return 62;if(47==r)return 63;throw new Error("c:"+r)};return a},v=function(r,t){var e=r,n=t,o=new Array(r*t),a={};a.setPixel=function(r,t,n){o[t*e+r]=n},a.write=function(r){r.writeString("GIF87a"),r.writeShort(e),r.writeShort(n),r.writeByte(128),r.writeByte(0),r.writeByte(0),r.writeByte(0),r.writeByte(0),r.writeByte(0),r.writeByte(255),r.writeByte(255),r.writeByte(255),r.writeString(","),r.writeShort(0),r.writeShort(0),r.writeShort(e),r.writeShort(n),r.writeByte(0);var t=2,o=u(t);r.writeByte(t);for(var a=0;o.length-a>255;)r.writeByte(255),r.writeBytes(o,a,255),a+=255;r.writeByte(o.length-a),r.writeBytes(o,a,o.length-a),r.writeByte(0),r.writeString(";")};var i=function(r){var t=r,e=0,n=0,o={};return o.write=function(r,o){if(r>>>o!=0)throw new Error("length over");for(;e+o>=8;)t.writeByte(255&(r<<e|n)),o-=8-e,r>>>=8-e,n=0,e=0;n=r<<e|n,e+=o},o.flush=function(){e>0&&t.writeByte(n)},o},u=function(r){for(var t=1<<r,e=(1<<r)+1,n=r+1,a=f(),u=0;t>u;u+=1)a.add(String.fromCharCode(u));a.add(String.fromCharCode(t)),a.add(String.fromCharCode(e));var c=l(),g=i(c);g.write(t,n);var s=0,v=String.fromCharCode(o[s]);for(s+=1;s<o.length;){var h=String.fromCharCode(o[s]);s+=1,a.contains(v+h)?v+=h:(g.write(a.indexOf(v),n),a.size()<4095&&(a.size()==1<<n&&(n+=1),a.add(v+h)),v=h)}return g.write(a.indexOf(v),n),g.write(e,n),g.flush(),c.toByteArray()},f=function(){var r={},t=0,e={};return e.add=function(n){if(e.contains(n))throw new Error("dup key:"+n);r[n]=t,t+=1},e.size=function(){return t},e.indexOf=function(t){return r[t]},e.contains=function(t){return"undefined"!=typeof r[t]},e};return a},h=function(r,t,e,n){for(var o=v(r,t),a=0;t>a;a+=1)for(var i=0;r>i;i+=1)o.setPixel(i,a,e(i,a));var u=l();o.write(u);for(var f=g(),c=u.toByteArray(),s=0;s<c.length;s+=1)f.writeByte(c[s]);f.flush();var h="";return h+="<img",h+=' src="',h+="data:image/gif;base64,",h+=f,h+='"',h+=' width="',h+=r,h+='"',h+=' height="',h+=t,h+='"',n&&(h+=' alt="',h+=n,h+='"'),h+="/>"};return t}();return function(r){"function"==typeof define&&define.amd?define([],r):"object"==typeof exports&&(module.exports=r())}(function(){return r}),!function(r){r.stringToBytes=function(r){function t(r){for(var t=[],e=0;e<r.length;e++){var n=r.charCodeAt(e);128>n?t.push(n):2048>n?t.push(192|n>>6,128|63&n):55296>n||n>=57344?t.push(224|n>>12,128|n>>6&63,128|63&n):(e++,n=65536+((1023&n)<<10|1023&r.charCodeAt(e)),t.push(240|n>>18,128|n>>12&63,128|n>>6&63,128|63&n))}return t}return t(r)}}(r),r}());
|
includes/js/bootstrap.min.js
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
-
/*!
|
2 |
-
* Bootstrap v3.3.4 (http://getbootstrap.com)
|
3 |
-
* Copyright 2011-2015 Twitter, Inc.
|
4 |
-
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
5 |
-
*/
|
6 |
-
if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.4",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.4",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active"));a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.mo2f_carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.mo2f_carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".mo2f_carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.mo2f_carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.mo2f_carousel",a.proxy(this.pause,this)).on("mouseleave.bs.mo2f_carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.4",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.mo2f_carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.mo2f_carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.mo2f_carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("mo2f_carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.mo2f_carousel").to(h),c.preventDefault()}};a(document).on("click.bs.mo2f_carousel.data-api","[data-slide]",e).on("click.bs.mo2f_carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.mo2f_collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.mo2f_collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.4",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .mo2f_collapsing");if(!(e&&e.length&&(b=e.data("bs.mo2f_collapse"),b&&b.transitioning))){var f=a.Event("show.bs.mo2f_collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.mo2f_collapse",null));var g=this.dimension();this.$element.removeClass("mo2f_collapse").addClass("mo2f_collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("mo2f_collapsing").addClass("mo2f_collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.mo2f_collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.mo2f_collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("mo2f_collapsing").removeClass("mo2f_collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("mo2f_collapsing").addClass("mo2f_collapse").trigger("hidden.bs.mo2f_collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.mo2f_collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.mo2f_collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=c(d),f={relatedTarget:this};e.hasClass("open")&&(e.trigger(b=a.Event("hide.bs.dropdown",f)),b.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger("hidden.bs.dropdown",f)))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.4",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(b){if(/(38|40|27|32)/.test(b.which)&&!/input|textarea/i.test(b.target.tagName)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var e=c(d),g=e.hasClass("open");if(!g&&27!=b.which||g&&27==b.which)return 27==b.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find('[role="menu"]'+h+', [role="listbox"]'+h);if(i.length){var j=i.index(b.target);38==b.which&&j>0&&j--,40==b.which&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f,g.prototype.keydown).on("keydown.bs.dropdown.data-api",'[role="menu"]',g.prototype.keydown).on("keydown.bs.dropdown.data-api",'[role="listbox"]',g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.mo2f_modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.mo2f_modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$dialog=this.$element.find(".mo2f_modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.options.remote&&this.$element.find(".mo2f_modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.mo2f_modal")},this))};c.VERSION="3.3.4",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event("show.bs.mo2f_modal",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("mo2f_modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.mo2f_modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.mo2f_modal",function(){d.$element.one("mouseup.dismiss.bs.mo2f_modal",function(b){a(b.target).is(d.$element)&&(d.ignoreBackdropClick=!0)})}),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass("fade");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),d.adjustDialog(),e&&d.$element[0].offsetWidth,d.$element.addClass("in").attr("aria-hidden",!1),d.enforceFocus();var f=a.Event("shown.bs.mo2f_modal",{relatedTarget:b});e?d.$dialog.one("bsTransitionEnd",function(){d.$element.trigger("focus").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger("focus").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.mo2f_modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off("focusin.bs.mo2f_modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.mo2f_modal").off("mouseup.dismiss.bs.mo2f_modal"),this.$dialog.off("mousedown.dismiss.bs.mo2f_modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.mo2f_modal").on("focusin.bs.mo2f_modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.mo2f_modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.mo2f_modal")},c.prototype.resize=function(){this.isShown?a(window).on("resize.bs.mo2f_modal",a.proxy(this.handleUpdate,this)):a(window).off("resize.bs.mo2f_modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass("mo2f_modal-open"),a.resetAdjustments(),a.resetScrollbar(),a.$element.trigger("hidden.bs.mo2f_modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a('<div class="mo2f-modal-backdrop '+e+'" />').appendTo(this.$body),this.$element.on("click.dismiss.bs.mo2f_modal",a.proxy(function(a){return this.ignoreBackdropClick?void(this.ignoreBackdropClick=!1):void(a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide()))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.adjustDialog()},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth<a,this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"",this.bodyIsOverflowing&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad)},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="mo2f_modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.mo2f_modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.mo2f_modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.mo2f_modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.mo2f_modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.init("tooltip",a,b)};c.VERSION="3.3.4",c.TRANSITION_DURATION=150,c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport),this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c&&c.$tip&&c.$tip.is(":visible")?void(c.hoverState="in"):(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.options.container?a(this.options.container):this.$element.parent(),p=this.getPosition(o);h="bottom"==h&&k.bottom+m>p.bottom?"top":"top"==h&&k.top-m<p.top?"bottom":"right"==h&&k.right+l>p.width?"left":"left"==h&&k.left-l<p.left?"right":h,f.removeClass(n).addClass(h)}var q=this.getCalculatedOffset(h,k,l,m);this.applyPlacement(q,h);var r=function(){var a=e.hoverState;e.$element.trigger("shown.bs."+e.type),e.hoverState=null,"out"==a&&e.leave(e)};a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",r).emulateTransitionEnd(c.TRANSITION_DURATION):r()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top=b.top+g,b.left=b.left+h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=/top|bottom/.test(c),m=l?2*k.left-e+i:2*k.top-f+j,n=l?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(m,d[0][n],l)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c?"left":"top",50*(1-a/b)+"%").css(c?"top":"left","")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(b){function d(){"in"!=e.hoverState&&f.detach(),e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),b&&b()}var e=this,f=a(this.$tip),g=a.Event("hide.bs."+this.type);return this.$element.trigger(g),g.isDefaultPrevented()?void 0:(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",d).emulateTransitionEnd(c.TRANSITION_DURATION):d(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName,e=c.getBoundingClientRect();null==e.width&&(e=a.extend({},e,{width:e.right-e.left,height:e.bottom-e.top}));var f=d?{top:0,left:0}:b.offset(),g={scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop()},h=d?{width:a(window).width(),height:a(window).height()}:null;return a.extend({},e,g,h,f)},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type)})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.4",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.4",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<e[0])return this.activeTarget=null,this.clear();for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(void 0===e[a+1]||b<e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,this.clear();var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.3.4",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){
|
7 |
var e=c.find(".active:last a"),f=a.Event("hide.bs.tab",{relatedTarget:b[0]}),g=a.Event("show.bs.tab",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest("li"),c),this.activate(h,h.parent(),function(){e.trigger({type:"hidden.bs.tab",relatedTarget:b[0]}),b.trigger({type:"shown.bs.tab",relatedTarget:e[0]})})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.4",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=a(document.body).height();"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);
|
1 |
+
/*!
|
2 |
+
* Bootstrap v3.3.4 (http://getbootstrap.com)
|
3 |
+
* Copyright 2011-2015 Twitter, Inc.
|
4 |
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
5 |
+
*/
|
6 |
+
if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.4",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.4",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active"));a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.mo2f_carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.mo2f_carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".mo2f_carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.mo2f_carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.mo2f_carousel",a.proxy(this.pause,this)).on("mouseleave.bs.mo2f_carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.4",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.mo2f_carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.mo2f_carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.mo2f_carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("mo2f_carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.mo2f_carousel").to(h),c.preventDefault()}};a(document).on("click.bs.mo2f_carousel.data-api","[data-slide]",e).on("click.bs.mo2f_carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.mo2f_collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.mo2f_collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.4",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .mo2f_collapsing");if(!(e&&e.length&&(b=e.data("bs.mo2f_collapse"),b&&b.transitioning))){var f=a.Event("show.bs.mo2f_collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.mo2f_collapse",null));var g=this.dimension();this.$element.removeClass("mo2f_collapse").addClass("mo2f_collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("mo2f_collapsing").addClass("mo2f_collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.mo2f_collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.mo2f_collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("mo2f_collapsing").removeClass("mo2f_collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("mo2f_collapsing").addClass("mo2f_collapse").trigger("hidden.bs.mo2f_collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.mo2f_collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.mo2f_collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=c(d),f={relatedTarget:this};e.hasClass("open")&&(e.trigger(b=a.Event("hide.bs.dropdown",f)),b.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger("hidden.bs.dropdown",f)))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.4",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(b){if(/(38|40|27|32)/.test(b.which)&&!/input|textarea/i.test(b.target.tagName)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var e=c(d),g=e.hasClass("open");if(!g&&27!=b.which||g&&27==b.which)return 27==b.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find('[role="menu"]'+h+', [role="listbox"]'+h);if(i.length){var j=i.index(b.target);38==b.which&&j>0&&j--,40==b.which&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f,g.prototype.keydown).on("keydown.bs.dropdown.data-api",'[role="menu"]',g.prototype.keydown).on("keydown.bs.dropdown.data-api",'[role="listbox"]',g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.mo2f_modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.mo2f_modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$dialog=this.$element.find(".mo2f_modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.options.remote&&this.$element.find(".mo2f_modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.mo2f_modal")},this))};c.VERSION="3.3.4",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event("show.bs.mo2f_modal",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("mo2f_modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.mo2f_modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.mo2f_modal",function(){d.$element.one("mouseup.dismiss.bs.mo2f_modal",function(b){a(b.target).is(d.$element)&&(d.ignoreBackdropClick=!0)})}),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass("fade");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),d.adjustDialog(),e&&d.$element[0].offsetWidth,d.$element.addClass("in").attr("aria-hidden",!1),d.enforceFocus();var f=a.Event("shown.bs.mo2f_modal",{relatedTarget:b});e?d.$dialog.one("bsTransitionEnd",function(){d.$element.trigger("focus").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger("focus").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.mo2f_modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off("focusin.bs.mo2f_modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.mo2f_modal").off("mouseup.dismiss.bs.mo2f_modal"),this.$dialog.off("mousedown.dismiss.bs.mo2f_modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.mo2f_modal").on("focusin.bs.mo2f_modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.mo2f_modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.mo2f_modal")},c.prototype.resize=function(){this.isShown?a(window).on("resize.bs.mo2f_modal",a.proxy(this.handleUpdate,this)):a(window).off("resize.bs.mo2f_modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass("mo2f_modal-open"),a.resetAdjustments(),a.resetScrollbar(),a.$element.trigger("hidden.bs.mo2f_modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a('<div class="mo2f-modal-backdrop '+e+'" />').appendTo(this.$body),this.$element.on("click.dismiss.bs.mo2f_modal",a.proxy(function(a){return this.ignoreBackdropClick?void(this.ignoreBackdropClick=!1):void(a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide()))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.adjustDialog()},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth<a,this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"",this.bodyIsOverflowing&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad)},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="mo2f_modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.mo2f_modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.mo2f_modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.mo2f_modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.mo2f_modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.init("tooltip",a,b)};c.VERSION="3.3.4",c.TRANSITION_DURATION=150,c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport),this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c&&c.$tip&&c.$tip.is(":visible")?void(c.hoverState="in"):(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.options.container?a(this.options.container):this.$element.parent(),p=this.getPosition(o);h="bottom"==h&&k.bottom+m>p.bottom?"top":"top"==h&&k.top-m<p.top?"bottom":"right"==h&&k.right+l>p.width?"left":"left"==h&&k.left-l<p.left?"right":h,f.removeClass(n).addClass(h)}var q=this.getCalculatedOffset(h,k,l,m);this.applyPlacement(q,h);var r=function(){var a=e.hoverState;e.$element.trigger("shown.bs."+e.type),e.hoverState=null,"out"==a&&e.leave(e)};a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",r).emulateTransitionEnd(c.TRANSITION_DURATION):r()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top=b.top+g,b.left=b.left+h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=/top|bottom/.test(c),m=l?2*k.left-e+i:2*k.top-f+j,n=l?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(m,d[0][n],l)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c?"left":"top",50*(1-a/b)+"%").css(c?"top":"left","")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(b){function d(){"in"!=e.hoverState&&f.detach(),e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),b&&b()}var e=this,f=a(this.$tip),g=a.Event("hide.bs."+this.type);return this.$element.trigger(g),g.isDefaultPrevented()?void 0:(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",d).emulateTransitionEnd(c.TRANSITION_DURATION):d(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName,e=c.getBoundingClientRect();null==e.width&&(e=a.extend({},e,{width:e.right-e.left,height:e.bottom-e.top}));var f=d?{top:0,left:0}:b.offset(),g={scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop()},h=d?{width:a(window).width(),height:a(window).height()}:null;return a.extend({},e,g,h,f)},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type)})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.4",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.4",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<e[0])return this.activeTarget=null,this.clear();for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(void 0===e[a+1]||b<e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,this.clear();var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.3.4",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){
|
7 |
var e=c.find(".active:last a"),f=a.Event("hide.bs.tab",{relatedTarget:b[0]}),g=a.Event("show.bs.tab",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest("li"),c),this.activate(h,h.parent(),function(){e.trigger({type:"hidden.bs.tab",relatedTarget:b[0]}),b.trigger({type:"shown.bs.tab",relatedTarget:e[0]})})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.4",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=a(document.body).height();"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);
|
includes/js/custom-ajax-mepr.js
ADDED
@@ -0,0 +1,278 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
jQuery(document).ready(function()
|
2 |
+
{
|
3 |
+
let $mo = jQuery;
|
4 |
+
|
5 |
+
let ajaxurl = otpverificationObj.siteURL;
|
6 |
+
let nonce = otpverificationObj.nonce;
|
7 |
+
let submitSelector = otpverificationObj.submitSelector;
|
8 |
+
let formName = otpverificationObj.formname;
|
9 |
+
let emailSelector = otpverificationObj.emailselector;
|
10 |
+
let phoneSelector = otpverificationObj.phoneSelector;
|
11 |
+
let loaderUrl = otpverificationObj.loaderUrl;
|
12 |
+
let isValidated = false
|
13 |
+
let isEmailValidated = false
|
14 |
+
let isPhoneValidated = false
|
15 |
+
let email_txId = ""
|
16 |
+
let sms_txId = ""
|
17 |
+
let validated = false
|
18 |
+
let isBoth = false
|
19 |
+
let authType = otpverificationObj.authType;
|
20 |
+
let isShortEnabled = otpverificationObj.isEnabledShortcode;
|
21 |
+
let formAction = jQuery(formName).attr('action');
|
22 |
+
let formMethod = jQuery(formName).attr('method');
|
23 |
+
let submitSelectorName = jQuery(submitSelector).attr('name');
|
24 |
+
let submitSelectorId = jQuery(submitSelector).attr('id')
|
25 |
+
let submitSelectorClass = jQuery(submitSelector).attr('class');
|
26 |
+
|
27 |
+
const otp_over_email = '<label for="mo2f_reg_email">OTP Over Email <span class="required">*</span></label> <input type="text" name="mo2f_email_otp" id="mo2f_email_otp" placeholder="Enter OTP sent on email" />';
|
28 |
+
const otp_over_sms = '<label for="mo2f_reg_sms">OTP Over SMS <span class="required">*</span></label> <input type="text" name="mo2f_phone_otp" id="mo2f_phone_otp" placeholder="Enter OTP sent on phone number" />';
|
29 |
+
authType = 'email';
|
30 |
+
|
31 |
+
switch (authType)
|
32 |
+
{
|
33 |
+
case 'phone':
|
34 |
+
jQuery(phoneSelector).wrap( "<div class='buttonInsidePhone'></div>" );
|
35 |
+
jQuery(phoneSelector).after('<button class="mo2f_send_phoneotp_button" id="mo2f_send_ajax_sms">Send OTP</button> ');
|
36 |
+
mo2f_ajax_before_reg();
|
37 |
+
break;
|
38 |
+
|
39 |
+
case 'email':
|
40 |
+
jQuery(emailSelector).wrap( "<div class='buttonInsideEmail'></div>" );
|
41 |
+
jQuery(emailSelector).after('<button class="mo2f_send_emailotp_button" id="mo2f_send_ajax_email">Send OTP</button>');
|
42 |
+
mo2f_ajax_before_reg();
|
43 |
+
break;
|
44 |
+
|
45 |
+
case 'both':
|
46 |
+
isBoth = true;
|
47 |
+
jQuery(phoneSelector).wrap( "<div class='buttonInsidePhone'></div>" );
|
48 |
+
jQuery(phoneSelector).after('<button class="mo2f_send_phoneotp_button" id="mo2f_send_ajax_sms">Send OTP</button> ');
|
49 |
+
jQuery(emailSelector).wrap( "<div class='buttonInsideEmail'></div>" );
|
50 |
+
jQuery(emailSelector).after('<button class="mo2f_send_emailotp_button" id="mo2f_send_ajax_email">Send OTP</button>');
|
51 |
+
mo2f_ajax_before_reg();
|
52 |
+
break;
|
53 |
+
|
54 |
+
default:
|
55 |
+
break;
|
56 |
+
}
|
57 |
+
|
58 |
+
|
59 |
+
jQuery("#mo2f_send_ajax_email").click(function(e){
|
60 |
+
e.preventDefault();
|
61 |
+
var mo2f_email = jQuery(emailSelector).val();
|
62 |
+
if (validateEmail(mo2f_email))
|
63 |
+
{
|
64 |
+
let data =
|
65 |
+
{
|
66 |
+
'action' : 'mo_ajax_register',
|
67 |
+
'mo_action' : 'send_otp_over_email',
|
68 |
+
'email' : mo2f_email,
|
69 |
+
'nonce' : nonce,
|
70 |
+
'authTypeSend' : 'email'
|
71 |
+
}
|
72 |
+
|
73 |
+
$mo.post(ajaxurl, data,function (response){
|
74 |
+
jQuery("#mo2f_send_ajax_email").html("Resend OTP");
|
75 |
+
if(response.status=='SUCCESS'){
|
76 |
+
email_txId = response.txId;
|
77 |
+
if(typeof jQuery('#mo2f_email_otp').val() == 'undefined')
|
78 |
+
jQuery(".buttonInsideEmail").after(otp_over_email);
|
79 |
+
}
|
80 |
+
});
|
81 |
+
}else
|
82 |
+
{ jQuery("#mo2f_error").empty();
|
83 |
+
jQuery(".buttonInsideEmail").after("<p class='mepr-form-has-errors' style='display:block;'><span id='mo2f_error'>Please enter valid email address</span></p>");
|
84 |
+
}
|
85 |
+
|
86 |
+
});
|
87 |
+
|
88 |
+
jQuery("#mo2f_send_ajax_sms").click(function(e){
|
89 |
+
e.preventDefault();
|
90 |
+
var mo2f_phone = jQuery(phoneSelector).val();
|
91 |
+
if (validatePhone(mo2f_phone))
|
92 |
+
{
|
93 |
+
let data =
|
94 |
+
{
|
95 |
+
'action' : 'mo_ajax_register',
|
96 |
+
'mo_action' : 'send_otp_over_sms',
|
97 |
+
'phone' : mo2f_phone,
|
98 |
+
'nonce' : nonce,
|
99 |
+
'authTypeSend' : 'phone'
|
100 |
+
}
|
101 |
+
|
102 |
+
$mo.post(ajaxurl, data,function (response){
|
103 |
+
jQuery("#mo2f_send_ajax_sms").html("Resend OTP");
|
104 |
+
if(response.status=='SUCCESS'){
|
105 |
+
sms_txId = response.txId;
|
106 |
+
jQuery(".buttonInsidePhone").after(otp_over_sms);
|
107 |
+
}
|
108 |
+
});
|
109 |
+
}else{
|
110 |
+
jQuery("#mo2f_error").empty();
|
111 |
+
jQuery(".buttonInsidePhone").after("<p class='mepr-form-has-errors' style='display:block;'><span id='mo2f_error'>Please enter valid phone number</span></p>");
|
112 |
+
}
|
113 |
+
|
114 |
+
});
|
115 |
+
|
116 |
+
function validate_otp(txId,otp,authType,isBoth){
|
117 |
+
let data =
|
118 |
+
{
|
119 |
+
'action' : 'mo_ajax_register',
|
120 |
+
'mo_action' : 'validate',
|
121 |
+
'otp' : otp,
|
122 |
+
'nonce' : nonce,
|
123 |
+
'txId' : txId,
|
124 |
+
}
|
125 |
+
|
126 |
+
$mo.post(ajaxurl,data,function(response)
|
127 |
+
{
|
128 |
+
if(response.status == 'SUCCESS'){
|
129 |
+
if(authType == 'email'){
|
130 |
+
isEmailValidated = true;
|
131 |
+
if(!isBoth)
|
132 |
+
mo2f_rcp_ajax();
|
133 |
+
}
|
134 |
+
else if(authType == 'phone'){
|
135 |
+
isPhoneValidated = true;
|
136 |
+
if(!isBoth)
|
137 |
+
mo2f_rcp_ajax();
|
138 |
+
}
|
139 |
+
|
140 |
+
if(isBoth){
|
141 |
+
if(isEmailValidated && isPhoneValidated)
|
142 |
+
mo2f_rcp_ajax();
|
143 |
+
}
|
144 |
+
}else{
|
145 |
+
jQuery("#mo2f_error").empty();
|
146 |
+
jQuery(".buttonInsideEmail").after("<p class='mepr-form-has-errors' style='display:block;'><span id='mo2f_error'>Please enter valid OTP</span></p>");
|
147 |
+
jQuery('#loading').css('display', 'none');
|
148 |
+
jQuery("#miniorange_submit").prop('disabled',false);
|
149 |
+
}
|
150 |
+
|
151 |
+
});
|
152 |
+
}
|
153 |
+
|
154 |
+
jQuery("#miniorange_submit").click(function(e){
|
155 |
+
e.preventDefault();
|
156 |
+
if(!validated){
|
157 |
+
jQuery("#miniorange_submit").after("<div id='loading' ><div id='loaderMsg'></div><div><img src='"+loaderUrl+"' alt='' /></div></div>");
|
158 |
+
jQuery("#miniorange_submit").prop('disabled',true);
|
159 |
+
switch(authType){
|
160 |
+
case 'email':
|
161 |
+
if(isEmailValidated)
|
162 |
+
mo2f_rcp_ajax();
|
163 |
+
else{
|
164 |
+
otp = jQuery("#mo2f_email_otp").val();
|
165 |
+
if(typeof otp != 'undefined'){
|
166 |
+
addLoaderMessage("Validating Email");
|
167 |
+
validate_otp(email_txId,otp,'email',isBoth);
|
168 |
+
}
|
169 |
+
else{
|
170 |
+
jQuery("#mo2f_error").empty();
|
171 |
+
jQuery(".buttonInsideEmail").after("<p class='mepr-form-has-errors' style='display:block;'><span id='mo2f_error'>Please validate Email</span></p>");
|
172 |
+
jQuery("#loading").css('display','none');
|
173 |
+
jQuery("#miniorange_submit").prop('disabled',false);
|
174 |
+
}
|
175 |
+
}
|
176 |
+
break;
|
177 |
+
case 'phone':
|
178 |
+
if(isPhoneValidated)
|
179 |
+
mo2f_rcp_ajax();
|
180 |
+
else{
|
181 |
+
otp = jQuery("#mo2f_phone_otp").val();
|
182 |
+
if(typeof otp != 'undefined'){
|
183 |
+
addLoaderMessage("Validating Phone");
|
184 |
+
validate_otp(sms_txId,otp,'phone',isBoth);
|
185 |
+
}
|
186 |
+
else{
|
187 |
+
jQuery("#mo2f_error").empty();
|
188 |
+
jQuery(".buttonInsidePhone").after("<p class='mepr-form-has-errors' style='display:block;'><span id='mo2f_error'>Please validate Phone</span></p>");
|
189 |
+
jQuery("#loading").css('display','none');
|
190 |
+
jQuery("#miniorange_submit").prop('disabled',false);
|
191 |
+
}
|
192 |
+
}
|
193 |
+
break;
|
194 |
+
default:
|
195 |
+
if(isEmailValidated && isPhoneValidated)
|
196 |
+
mo2f_rcp_ajax();
|
197 |
+
else{
|
198 |
+
if(!isEmailValidated)
|
199 |
+
otp = jQuery("#mo2f_email_otp").val();
|
200 |
+
if(typeof otp != 'undefined'){
|
201 |
+
addLoaderMessage("Validating Email");
|
202 |
+
validate_otp(email_txId,otp,'email',isBoth);
|
203 |
+
}
|
204 |
+
else{
|
205 |
+
jQuery("#mo2f_error").empty();
|
206 |
+
jQuery(".buttonInsideEmail").after("<p class='mepr-form-has-errors' style='display:block;'><span id='mo2f_error'>Please validate Email</span></p>");
|
207 |
+
jQuery("#loading").css('display','none');
|
208 |
+
jQuery("#miniorange_submit").prop('disabled',false);
|
209 |
+
}
|
210 |
+
if(!isPhoneValidated){
|
211 |
+
otp = jQuery("#mo2f_phone_otp").val();
|
212 |
+
if(typeof otp != 'undefined'){
|
213 |
+
addLoaderMessage("Validating Phone");
|
214 |
+
validate_otp(sms_txId,otp,'phone',isBoth);
|
215 |
+
}
|
216 |
+
else{
|
217 |
+
jQuery("#mo2f_error").empty();
|
218 |
+
jQuery(".buttonInsidePhone").after("<p class='mepr-form-has-errors' style='display:block;'><span id='mo2f_error'>Please validate Phone</span></p>");
|
219 |
+
jQuery("#loading").css('display','none');
|
220 |
+
jQuery("#miniorange_submit").prop('disabled',false);
|
221 |
+
}
|
222 |
+
}
|
223 |
+
}
|
224 |
+
break;
|
225 |
+
}
|
226 |
+
}
|
227 |
+
|
228 |
+
});
|
229 |
+
|
230 |
+
function validateEmail(email_address){
|
231 |
+
let email_regex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/i
|
232 |
+
if (!email_regex.test(email_address))
|
233 |
+
{
|
234 |
+
return false
|
235 |
+
}
|
236 |
+
return true
|
237 |
+
}
|
238 |
+
|
239 |
+
function validatePhone(phone){
|
240 |
+
let intRegex = /[0-9 -()+]+$/;
|
241 |
+
if(phone.length < 10 || phone.length == 0 || (!intRegex.test(phone)))
|
242 |
+
{
|
243 |
+
return false
|
244 |
+
}
|
245 |
+
return true
|
246 |
+
}
|
247 |
+
|
248 |
+
function mo2f_ajax_before_reg(){
|
249 |
+
jQuery(formName).removeAttr('action');
|
250 |
+
jQuery(formName).removeAttr('method');
|
251 |
+
|
252 |
+
if(/^#/.test(submitSelector)){
|
253 |
+
jQuery(submitSelector).attr('name','miniorange_submit');
|
254 |
+
jQuery('input[name="miniorange_submit"]').attr('id','miniorange_submit');
|
255 |
+
}else{
|
256 |
+
jQuery(submitSelector).attr('id','miniorange_submit');
|
257 |
+
jQuery('#miniorange_submit').attr('name','miniorange_submit');
|
258 |
+
}
|
259 |
+
jQuery('#miniorange_submit').removeAttr('class');
|
260 |
+
}
|
261 |
+
|
262 |
+
function mo2f_rcp_ajax(){
|
263 |
+
validated = true;
|
264 |
+
jQuery("#loading").css('display','none');
|
265 |
+
jQuery("#miniorange_submit").prop('disabled',false);
|
266 |
+
jQuery(formName).attr('action',formAction);
|
267 |
+
jQuery(formName).attr('method',formMethod);
|
268 |
+
jQuery("#miniorange_submit").attr('class',submitSelectorClass);
|
269 |
+
jQuery('.'+submitSelectorClass).removeAttr('id');
|
270 |
+
jQuery('.'+submitSelectorClass).attr('id', submitSelectorId);
|
271 |
+
jQuery(submitSelector).click();
|
272 |
+
}
|
273 |
+
|
274 |
+
function addLoaderMessage(msg){
|
275 |
+
jQuery("#loaderMsg").empty();
|
276 |
+
jQuery("#loaderMsg").append(msg);
|
277 |
+
}
|
278 |
+
});
|
includes/js/custom-ajax-rcp.js
ADDED
@@ -0,0 +1,268 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
jQuery(document).ready(function()
|
2 |
+
{
|
3 |
+
let $mo = jQuery;
|
4 |
+
|
5 |
+
let ajaxurl = otpverificationObj.siteURL;
|
6 |
+
let nonce = otpverificationObj.nonce;
|
7 |
+
let submitSelector = otpverificationObj.submitSelector;
|
8 |
+
let formName = otpverificationObj.formname;
|
9 |
+
let emailSelector = otpverificationObj.emailselector;
|
10 |
+
let phoneSelector = otpverificationObj.phoneSelector;
|
11 |
+
let loaderUrl = otpverificationObj.loaderUrl;
|
12 |
+
let isValidated = false
|
13 |
+
let isEmailValidated = false
|
14 |
+
let isPhoneValidated = false
|
15 |
+
let email_txId = ""
|
16 |
+
let sms_txId = ""
|
17 |
+
let validated = false
|
18 |
+
let isBoth = false
|
19 |
+
let authType = otpverificationObj.authType;
|
20 |
+
let isShortEnabled = otpverificationObj.isEnabledShortcode;
|
21 |
+
let formAction = jQuery(formName).attr('action');
|
22 |
+
let formMethod = jQuery(formName).attr('method');
|
23 |
+
let submitSelectorName = jQuery(submitSelector).attr('name');
|
24 |
+
let submitSelectorId = jQuery(submitSelector).attr('id')
|
25 |
+
|
26 |
+
const otp_over_email = '<label for="mo2f_reg_email">OTP Over Email <span class="required">*</span></label> <input type="text" name="mo2f_email_otp" id="mo2f_email_otp" placeholder="Enter OTP sent on email" />';
|
27 |
+
const otp_over_sms = '<label for="mo2f_reg_sms">OTP Over SMS <span class="required">*</span></label> <input type="text" name="mo2f_phone_otp" id="mo2f_phone_otp" placeholder="Enter OTP sent on phone number" />';
|
28 |
+
authType = 'email';
|
29 |
+
|
30 |
+
switch (authType)
|
31 |
+
{
|
32 |
+
case 'phone':
|
33 |
+
jQuery(phoneSelector).wrap( "<div class='buttonInsidePhone'></div>" );
|
34 |
+
jQuery(phoneSelector).after('<button class="mo2f_send_phoneotp_button" id="mo2f_send_ajax_sms">Send OTP</button> ');
|
35 |
+
mo2f_ajax_before_reg();
|
36 |
+
break;
|
37 |
+
|
38 |
+
case 'email':
|
39 |
+
jQuery(emailSelector).wrap( "<div class='buttonInsideEmail'></div>" );
|
40 |
+
jQuery(emailSelector).after('<button class="mo2f_send_emailotp_button" id="mo2f_send_ajax_email">Send OTP</button>');
|
41 |
+
mo2f_ajax_before_reg();
|
42 |
+
break;
|
43 |
+
|
44 |
+
case 'both':
|
45 |
+
isBoth = true;
|
46 |
+
jQuery(phoneSelector).wrap( "<div class='buttonInsidePhone'></div>" );
|
47 |
+
jQuery(phoneSelector).after('<button class="mo2f_send_phoneotp_button" id="mo2f_send_ajax_sms">Send OTP</button> ');
|
48 |
+
jQuery(emailSelector).wrap( "<div class='buttonInsideEmail'></div>" );
|
49 |
+
jQuery(emailSelector).after('<button class="mo2f_send_emailotp_button" id="mo2f_send_ajax_email">Send OTP</button>');
|
50 |
+
mo2f_ajax_before_reg();
|
51 |
+
break;
|
52 |
+
|
53 |
+
default:
|
54 |
+
break;
|
55 |
+
}
|
56 |
+
|
57 |
+
|
58 |
+
jQuery("#mo2f_send_ajax_email").click(function(e){
|
59 |
+
e.preventDefault();
|
60 |
+
var mo2f_email = jQuery(emailSelector).val();
|
61 |
+
if (validateEmail(mo2f_email))
|
62 |
+
{
|
63 |
+
let data =
|
64 |
+
{
|
65 |
+
'action' : 'mo_ajax_register',
|
66 |
+
'mo_action' : 'send_otp_over_email',
|
67 |
+
'email' : mo2f_email,
|
68 |
+
'nonce' : nonce,
|
69 |
+
'authTypeSend' : 'email'
|
70 |
+
}
|
71 |
+
|
72 |
+
$mo.post(ajaxurl, data,function (response){
|
73 |
+
jQuery("#mo2f_send_ajax_email").html("Resend OTP");
|
74 |
+
if(response.status=='SUCCESS'){
|
75 |
+
email_txId = response.txId;
|
76 |
+
if(typeof jQuery('#mo2f_email_otp').val() == 'undefined')
|
77 |
+
jQuery(".buttonInsideEmail").after(otp_over_email);
|
78 |
+
}
|
79 |
+
});
|
80 |
+
}else{
|
81 |
+
jQuery("<p class='rc-error rcp-error'><span>Please enter valid email address</span></p>").insertBefore("#miniorange_submit");
|
82 |
+
}
|
83 |
+
|
84 |
+
});
|
85 |
+
|
86 |
+
jQuery("#mo2f_send_ajax_sms").click(function(e){
|
87 |
+
e.preventDefault();
|
88 |
+
var mo2f_phone = jQuery(phoneSelector).val();
|
89 |
+
if (validatePhone(mo2f_phone))
|
90 |
+
{
|
91 |
+
let data =
|
92 |
+
{
|
93 |
+
'action' : 'mo_ajax_register',
|
94 |
+
'mo_action' : 'send_otp_over_sms',
|
95 |
+
'phone' : mo2f_phone,
|
96 |
+
'nonce' : nonce,
|
97 |
+
'authTypeSend' : 'phone'
|
98 |
+
}
|
99 |
+
|
100 |
+
$mo.post(ajaxurl, data,function (response){
|
101 |
+
jQuery("#mo2f_send_ajax_sms").html("Resend OTP");
|
102 |
+
if(response.status=='SUCCESS'){
|
103 |
+
sms_txId = response.txId;
|
104 |
+
jQuery(".buttonInsidePhone").after(otp_over_sms);
|
105 |
+
}
|
106 |
+
});
|
107 |
+
}else{
|
108 |
+
jQuery("<p class='rc-error rcp-error'><span>Please enter valid phone number</span></p>").insertBefore("#miniorange_submit");
|
109 |
+
}
|
110 |
+
|
111 |
+
});
|
112 |
+
|
113 |
+
function validate_otp(txId,otp,authType,isBoth){
|
114 |
+
let data =
|
115 |
+
{
|
116 |
+
'action' : 'mo_ajax_register',
|
117 |
+
'mo_action' : 'validate',
|
118 |
+
'otp' : otp,
|
119 |
+
'nonce' : nonce,
|
120 |
+
'txId' : txId,
|
121 |
+
}
|
122 |
+
|
123 |
+
$mo.post(ajaxurl,data,function(response)
|
124 |
+
{
|
125 |
+
if(response.status == 'SUCCESS'){
|
126 |
+
if(authType == 'email'){
|
127 |
+
isEmailValidated = true;
|
128 |
+
if(!isBoth)
|
129 |
+
mo2f_rcp_ajax();
|
130 |
+
}
|
131 |
+
else if(authType == 'phone'){
|
132 |
+
isPhoneValidated = true;
|
133 |
+
if(!isBoth)
|
134 |
+
mo2f_rcp_ajax();
|
135 |
+
}
|
136 |
+
|
137 |
+
if(isBoth){
|
138 |
+
if(isEmailValidated && isPhoneValidated)
|
139 |
+
mo2f_rcp_ajax();
|
140 |
+
}
|
141 |
+
}else{
|
142 |
+
jQuery("<p class='rc-error rcp-error'><span>Please enter valid OTP</span></p>").insertBefore("#miniorange_submit");
|
143 |
+
jQuery('#loading').css('display', 'none');
|
144 |
+
jQuery("#miniorange_submit").prop('disabled',false);
|
145 |
+
}
|
146 |
+
|
147 |
+
});
|
148 |
+
}
|
149 |
+
|
150 |
+
jQuery("#miniorange_submit").click(function(e){
|
151 |
+
e.preventDefault();
|
152 |
+
if(!validated){
|
153 |
+
jQuery("#miniorange_submit").after("<div id='loading' ><div id='loaderMsg'></div><div><img src='"+loaderUrl+"' alt='' /></div></div>");
|
154 |
+
jQuery("#miniorange_submit").prop('disabled',true);
|
155 |
+
switch(authType){
|
156 |
+
case 'email':
|
157 |
+
if(isEmailValidated)
|
158 |
+
mo2f_rcp_ajax();
|
159 |
+
else{
|
160 |
+
otp = jQuery("#mo2f_email_otp").val();
|
161 |
+
if(typeof otp != 'undefined'){
|
162 |
+
addLoaderMessage("Validating Email");
|
163 |
+
validate_otp(email_txId,otp,'email',isBoth);
|
164 |
+
}
|
165 |
+
else{
|
166 |
+
jQuery("<p class='rc-error rcp-error'><span>Please validate Email</span></p>").insertBefore("#miniorange_submit");
|
167 |
+
jQuery("#loading").css('display','none');
|
168 |
+
jQuery("#miniorange_submit").prop('disabled',false);
|
169 |
+
}
|
170 |
+
}
|
171 |
+
break;
|
172 |
+
case 'phone':
|
173 |
+
if(isPhoneValidated)
|
174 |
+
mo2f_rcp_ajax();
|
175 |
+
else{
|
176 |
+
otp = jQuery("#mo2f_phone_otp").val();
|
177 |
+
if(typeof otp != 'undefined'){
|
178 |
+
addLoaderMessage("Validating Phone");
|
179 |
+
validate_otp(sms_txId,otp,'phone',isBoth);
|
180 |
+
}
|
181 |
+
else{
|
182 |
+
jQuery("<p class='rc-error rcp-error'><span>Please validate Phone</span></p>").insertBefore("#miniorange_submit");
|
183 |
+
jQuery("#loading").css('display','none');
|
184 |
+
jQuery("#miniorange_submit").prop('disabled',false);
|
185 |
+
}
|
186 |
+
}
|
187 |
+
break;
|
188 |
+
default:
|
189 |
+
if(isEmailValidated && isPhoneValidated)
|
190 |
+
mo2f_rcp_ajax();
|
191 |
+
else{
|
192 |
+
if(!isEmailValidated)
|
193 |
+
otp = jQuery("#mo2f_email_otp").val();
|
194 |
+
if(typeof otp != 'undefined'){
|
195 |
+
addLoaderMessage("Validating Email");
|
196 |
+
validate_otp(email_txId,otp,'email',isBoth);
|
197 |
+
}
|
198 |
+
else{
|
199 |
+
jQuery("<p class='rc-error rcp-error'><span>Please validate Email</span></p>").insertBefore("#miniorange_submit");
|
200 |
+
jQuery("#loading").css('display','none');
|
201 |
+
jQuery("#miniorange_submit").prop('disabled',false);
|
202 |
+
}
|
203 |
+
if(!isPhoneValidated){
|
204 |
+
otp = jQuery("#mo2f_phone_otp").val();
|
205 |
+
if(typeof otp != 'undefined'){
|
206 |
+
addLoaderMessage("Validating Phone");
|
207 |
+
validate_otp(sms_txId,otp,'phone',isBoth);
|
208 |
+
}
|
209 |
+
else{
|
210 |
+
jQuery("<p class='rc-error rcp-error'><span>Please validate Phone</span></p>").insertBefore("#miniorange_submit");
|
211 |
+
jQuery("#loading").css('display','none');
|
212 |
+
jQuery("#miniorange_submit").prop('disabled',false);
|
213 |
+
}
|
214 |
+
}
|
215 |
+
}
|
216 |
+
break;
|
217 |
+
}
|
218 |
+
}
|
219 |
+
|
220 |
+
});
|
221 |
+
|
222 |
+
function validateEmail(email_address){
|
223 |
+
let email_regex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/i
|
224 |
+
if (!email_regex.test(email_address))
|
225 |
+
{
|
226 |
+
return false
|
227 |
+
}
|
228 |
+
return true
|
229 |
+
}
|
230 |
+
|
231 |
+
function validatePhone(phone){
|
232 |
+
let intRegex = /[0-9 -()+]+$/;
|
233 |
+
if(phone.length < 10 || phone.length == 0 || (!intRegex.test(phone)))
|
234 |
+
{
|
235 |
+
return false
|
236 |
+
}
|
237 |
+
return true
|
238 |
+
}
|
239 |
+
|
240 |
+
function mo2f_ajax_before_reg(){
|
241 |
+
jQuery(formName).removeAttr('action');
|
242 |
+
jQuery(formName).removeAttr('method');
|
243 |
+
if(/^#/.test(submitSelector)){
|
244 |
+
jQuery(submitSelector).attr('name','miniorange_submit');
|
245 |
+
jQuery('input[name="miniorange_submit"]').attr('id','miniorange_submit');
|
246 |
+
}else{
|
247 |
+
jQuery(submitSelector).attr('id','miniorange_submit');
|
248 |
+
jQuery('#miniorange_submit').attr('name','miniorange_submit');
|
249 |
+
}
|
250 |
+
}
|
251 |
+
|
252 |
+
function mo2f_rcp_ajax(){
|
253 |
+
validated = true;
|
254 |
+
jQuery("#loading").css('display','none');
|
255 |
+
jQuery("#miniorange_submit").prop('disabled',false);
|
256 |
+
jQuery(formName).attr('action',formAction);
|
257 |
+
jQuery(formName).attr('method',formMethod);
|
258 |
+
jQuery("#miniorange_submit").attr('name',submitSelectorName);
|
259 |
+
jQuery('input[name="'+submitSelectorName+'"').removeAttr('id');
|
260 |
+
jQuery('input[name="'+submitSelectorName+'"').attr('id', submitSelectorId);
|
261 |
+
jQuery(submitSelector).click();
|
262 |
+
}
|
263 |
+
|
264 |
+
function addLoaderMessage(msg){
|
265 |
+
jQuery("#loaderMsg").empty();
|
266 |
+
jQuery("#loaderMsg").append(msg);
|
267 |
+
}
|
268 |
+
});
|
includes/js/custom-form-ajax.js
ADDED
@@ -0,0 +1,487 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
jQuery(document).ready(function()
|
2 |
+
{
|
3 |
+
let $mo = jQuery;
|
4 |
+
let ajaxurl = otpverificationObj.siteURL;
|
5 |
+
let nonce = otpverificationObj.nonce;
|
6 |
+
let submitSelector = otpverificationObj.submitSelector;
|
7 |
+
let formName = otpverificationObj.formname;
|
8 |
+
let emailSelector = otpverificationObj.emailselector;
|
9 |
+
let phoneSelector = otpverificationObj.phoneSelector
|
10 |
+
let txId="";
|
11 |
+
let txIdNew =""
|
12 |
+
let isValidated = false
|
13 |
+
let isEmailResend = false
|
14 |
+
let isSecond = false
|
15 |
+
let authType = otpverificationObj.authType;
|
16 |
+
let isShortEnabled = otpverificationObj.isEnabledShortcode;
|
17 |
+
let isRegistered = otpverificationObj.isRegistered;
|
18 |
+
|
19 |
+
|
20 |
+
const otpEdit = '<input type="text"' +
|
21 |
+
'name="edit_otp"' +
|
22 |
+
'id="edit_otp"' +
|
23 |
+
'placeholder="Enter the OTP you have received"' +
|
24 |
+
'style="display:none;"><br>';
|
25 |
+
const messageTextMobile='<br><p id="otpmessage"> An OTP will be sent to your Mobile Number</p>';
|
26 |
+
const messageTextBoth = ' <p id="otpmessage">An OTP will be sent to your Mobile Number and Email</p>'
|
27 |
+
const messageTextEmail = '<br><p id="otpmessage"> An OTP will be sent to your Email ID</p>';
|
28 |
+
|
29 |
+
const sendButton = '<div class="button" ' +
|
30 |
+
'id ="otp_send_button">Send OTP</div> ' +
|
31 |
+
'<div class="button" ' +
|
32 |
+
'id ="timer" ' +
|
33 |
+
'style="visibility:hidden;">00</div><br><br>';
|
34 |
+
|
35 |
+
const phonelabel = '<label for="reg_phone">Phone Number <span class="required">*</span></label>';
|
36 |
+
|
37 |
+
if(isRegistered === 'false')
|
38 |
+
{
|
39 |
+
const messageNotRegistered = '<p id="registermessage" style="color: red;font-size: 18px;border: red 1px solid;padding: 5px" > miniOrange : Register/Login with miniOrange to Enable 2FA for this Form</p>';
|
40 |
+
$mo(emailSelector).after('<br>'+messageNotRegistered);
|
41 |
+
}
|
42 |
+
else
|
43 |
+
if(($mo(formName).length || $mo(submitSelector).length) && isRegistered!==false && isShortEnabled !== 'false')
|
44 |
+
|
45 |
+
{ let counter = 0
|
46 |
+
|
47 |
+
function setMessage(message,color) {
|
48 |
+
$mo('#otpmessage').text("")
|
49 |
+
$mo('#otpmessage').text(message).css('color',color)
|
50 |
+
}
|
51 |
+
function sendChallenge(authType, phone, email,nonce, ajaxurl) {
|
52 |
+
txId = ""
|
53 |
+
let timeLeft = 0
|
54 |
+
let timerId
|
55 |
+
let data =
|
56 |
+
{
|
57 |
+
'action' : 'mo_shortcode',
|
58 |
+
'mo_action' : 'challenge',
|
59 |
+
'email' : email,
|
60 |
+
'phone' : phone,
|
61 |
+
'nonce' : nonce ,
|
62 |
+
'authTypeSend' : authType
|
63 |
+
}
|
64 |
+
|
65 |
+
$mo("#otp_send_button").text("Sending")
|
66 |
+
$mo.post(ajaxurl, data,function (response)
|
67 |
+
{
|
68 |
+
if(response === null)
|
69 |
+
{
|
70 |
+
setMessage('Contact Site Administrator','red')
|
71 |
+
}
|
72 |
+
else
|
73 |
+
{
|
74 |
+
switch (response.status)
|
75 |
+
{
|
76 |
+
case "SUCCESS":
|
77 |
+
$mo("#edit_otp").css("display", "inherit")
|
78 |
+
setMessage(response.message, 'green')
|
79 |
+
|
80 |
+
if(isSecond)
|
81 |
+
{
|
82 |
+
txIdNew = response.txId
|
83 |
+
clearInterval(timerId)
|
84 |
+
}
|
85 |
+
|
86 |
+
else
|
87 |
+
{
|
88 |
+
txId = response.txId
|
89 |
+
timeLeft = 30
|
90 |
+
}
|
91 |
+
|
92 |
+
timerId = setInterval(countdown, 1000)
|
93 |
+
|
94 |
+
function countdown() {
|
95 |
+
if (timeLeft === 0)
|
96 |
+
{
|
97 |
+
clearTimeout(timerId)
|
98 |
+
$mo("#otp_send_button").css("display", "initial");
|
99 |
+
$mo("#timer").css("visibility", "hidden");
|
100 |
+
$mo("#otp_send_button").text("Resend");
|
101 |
+
|
102 |
+
} else {
|
103 |
+
$mo("#timer").css("visibility", "visible");
|
104 |
+
$mo("#otp_send_button").css("display", "none");
|
105 |
+
$mo("#timer").text(timeLeft);
|
106 |
+
timeLeft--;
|
107 |
+
}
|
108 |
+
}
|
109 |
+
break;
|
110 |
+
case "FAILED":
|
111 |
+
setMessage(response.message,'red')
|
112 |
+
break;
|
113 |
+
case "ERROR":
|
114 |
+
setMessage(response.message,'red')
|
115 |
+
break
|
116 |
+
}
|
117 |
+
}
|
118 |
+
})
|
119 |
+
|
120 |
+
|
121 |
+
}
|
122 |
+
|
123 |
+
function validateOTP(otp,nonce,phone,txId,email){
|
124 |
+
|
125 |
+
let data =
|
126 |
+
{
|
127 |
+
'action' : 'mo_shortcode',
|
128 |
+
'mo_action' : 'validate',
|
129 |
+
'otp' : otp,
|
130 |
+
'nonce' : nonce,
|
131 |
+
'mobile' : phone,
|
132 |
+
'txId' : txId,
|
133 |
+
'email' : email
|
134 |
+
}
|
135 |
+
|
136 |
+
if(isValidated === false)
|
137 |
+
{
|
138 |
+
|
139 |
+
$mo.post(ajaxurl,data,function(response)
|
140 |
+
{
|
141 |
+
if(response === null)
|
142 |
+
{
|
143 |
+
setMessage('Error Validating OTP','red')
|
144 |
+
$mo(formName).unbind('submit')
|
145 |
+
isValidated = false
|
146 |
+
}
|
147 |
+
else
|
148 |
+
switch (response.status)
|
149 |
+
{
|
150 |
+
case "SUCCESS":
|
151 |
+
setMessage(response.message,'green')
|
152 |
+
isValidated = true
|
153 |
+
$mo(submitSelector).removeAttr("disabled")
|
154 |
+
$mo(submitSelector).prop('disabled',false)
|
155 |
+
$mo(formName).unbind('submit')
|
156 |
+
$mo(submitSelector).unbind('click').click()
|
157 |
+
break
|
158 |
+
case "FAILED":
|
159 |
+
setMessage(response.message,'red')
|
160 |
+
$mo(submitSelector).removeAttr("disabled")
|
161 |
+
$mo(submitSelector).prop('disabled',false)
|
162 |
+
break
|
163 |
+
case "ERROR":
|
164 |
+
$mo(submitSelector).removeAttr("disabled")
|
165 |
+
setMessage('Invalid OTP','red')
|
166 |
+
$mo(submitSelector).prop('disabled',false)
|
167 |
+
break
|
168 |
+
}
|
169 |
+
})
|
170 |
+
}
|
171 |
+
}
|
172 |
+
function validateBoth(otp,nonce,phone,txId,email,isFirst) {
|
173 |
+
let data =
|
174 |
+
{
|
175 |
+
'action' : 'mo_shortcode',
|
176 |
+
'mo_action' : 'validate',
|
177 |
+
'otp' : otp,
|
178 |
+
'nonce' : nonce,
|
179 |
+
'mobile' : phone,
|
180 |
+
'txId' : txId,
|
181 |
+
'email' : email
|
182 |
+
}
|
183 |
+
|
184 |
+
if(isValidated == false)
|
185 |
+
{
|
186 |
+
if(isFirst)
|
187 |
+
$mo.post(ajaxurl,data,function(response)
|
188 |
+
{
|
189 |
+
isFirst = false
|
190 |
+
if(response === null)
|
191 |
+
{
|
192 |
+
setMessage('Error Validating OTP','red')
|
193 |
+
isValidated = false
|
194 |
+
}
|
195 |
+
else
|
196 |
+
switch (response.status)
|
197 |
+
{
|
198 |
+
case "SUCCESS":
|
199 |
+
$mo(submitSelector).removeAttr("disabled");
|
200 |
+
setMessage(phone+' '+response.message +' '+ 'Sending OTP on '+email,'green')
|
201 |
+
isValidated = false
|
202 |
+
isSecond = true
|
203 |
+
|
204 |
+
setTimeout(function () {
|
205 |
+
sendChallenge('email',null,email,nonce,ajaxurl)
|
206 |
+
},3000)
|
207 |
+
|
208 |
+
$mo('#edit_otp').val("")
|
209 |
+
$mo('#edit_otp').css('placeholder','Enter OTP Sent on your email')
|
210 |
+
$mo(phoneSelector).after('<br><p style="color:green;"> Phone Number Validated ☑</p>')
|
211 |
+
$mo(phoneSelector).attr('disabled','true')
|
212 |
+
$mo(submitSelector).text('Register')
|
213 |
+
|
214 |
+
$mo(submitSelector).click(function(e) {
|
215 |
+
if (isValidated == false)
|
216 |
+
{
|
217 |
+
e.preventDefault()
|
218 |
+
otp = $mo('#edit_otp').val()
|
219 |
+
validateOTP(otp, nonce, phone, txIdNew, email)
|
220 |
+
}
|
221 |
+
})
|
222 |
+
break;
|
223 |
+
case "FAILED":
|
224 |
+
setMessage(response.message,'red')
|
225 |
+
$mo(submitSelector).removeAttr("disabled");
|
226 |
+
break
|
227 |
+
case "ERROR":
|
228 |
+
setMessage(response.message,'red')
|
229 |
+
$mo(submitSelector).removeAttr("disabled");
|
230 |
+
break
|
231 |
+
}
|
232 |
+
})
|
233 |
+
}
|
234 |
+
else
|
235 |
+
{
|
236 |
+
setMessage('Already Validated', 'red')
|
237 |
+
jQuery.reload()
|
238 |
+
}
|
239 |
+
}
|
240 |
+
|
241 |
+
let phone,email,otp;
|
242 |
+
|
243 |
+
|
244 |
+
switch (authType)
|
245 |
+
{
|
246 |
+
case 'phone':
|
247 |
+
$mo(phoneSelector).after(messageTextMobile+ otpEdit+ sendButton);
|
248 |
+
$mo(phoneSelector).intlTelInput({})
|
249 |
+
|
250 |
+
if (!$mo(phoneSelector).length)
|
251 |
+
{
|
252 |
+
const messageNotRegistered = '<p id="phoneFieldLabel" style="color: red;font-size: 18px;border: red 1px solid;padding: 5px" > miniOrange : Phone Field not Found.</p>';
|
253 |
+
$mo(emailSelector).after('<br>'+messageNotRegistered)
|
254 |
+
return
|
255 |
+
}
|
256 |
+
|
257 |
+
$mo( "#otp_send_button" ).click(function()
|
258 |
+
{
|
259 |
+
phone = $mo(phoneSelector).val()
|
260 |
+
phone = phone.replace(/\s+/g, '')
|
261 |
+
email = $mo(emailSelector).val()
|
262 |
+
if(!validatePhone(phone)) {
|
263 |
+
$mo('#otpmessage').text('Invalid Phone Number').css('color','red')
|
264 |
+
return
|
265 |
+
}
|
266 |
+
if(!validateEmail(email)) {
|
267 |
+
$mo('#otpmessage').text('Invalid Email Address').css('color','red')
|
268 |
+
return
|
269 |
+
}
|
270 |
+
isSecond = false
|
271 |
+
sendChallenge(authType,phone,null,nonce,ajaxurl)
|
272 |
+
})
|
273 |
+
|
274 |
+
$mo(submitSelector).click(function(e)
|
275 |
+
{
|
276 |
+
e.preventDefault()
|
277 |
+
if(isValidated === false)
|
278 |
+
{
|
279 |
+
otp = $mo('#edit_otp').val()
|
280 |
+
if(!otp || !txId)
|
281 |
+
{
|
282 |
+
setMessage("Please Validate Phone first", "red")
|
283 |
+
}
|
284 |
+
else
|
285 |
+
validateOTP(otp, nonce, phone, txId, email)
|
286 |
+
}
|
287 |
+
else
|
288 |
+
{
|
289 |
+
|
290 |
+
}
|
291 |
+
$mo(submitSelector).unbind('click')
|
292 |
+
|
293 |
+
})
|
294 |
+
|
295 |
+
$mo(formName).on("submit", function(e){
|
296 |
+
e.preventDefault()
|
297 |
+
|
298 |
+
if(isValidated === false)
|
299 |
+
{
|
300 |
+
otp = $mo('#edit_otp').val()
|
301 |
+
if(!otp || !txId)
|
302 |
+
{
|
303 |
+
setMessage("Please Validate Email first","red")
|
304 |
+
$mo(submitSelector).prop("disabled",false)
|
305 |
+
$mo(submitSelector).removeAttr("disabled")
|
306 |
+
return true
|
307 |
+
}
|
308 |
+
else
|
309 |
+
validateOTP(otp, nonce, phone, txId, email)
|
310 |
+
}
|
311 |
+
|
312 |
+
else
|
313 |
+
{
|
314 |
+
|
315 |
+
}
|
316 |
+
|
317 |
+
})
|
318 |
+
break;
|
319 |
+
|
320 |
+
case 'email':
|
321 |
+
if (!$mo(emailSelector).length)
|
322 |
+
{
|
323 |
+
const messageNotRegistered = '<p id="emailFieldLabel" style="color: red;font-size: 18px;border: red 1px solid;padding: 5px" > miniOrange : Email Field '+emailSelector+' not Found. Please check Selector</p>';
|
324 |
+
if($mo(formName).length)
|
325 |
+
$mo(formName).after('<br>'+messageNotRegistered)
|
326 |
+
else if($mo(submitSelector).length)
|
327 |
+
$mo(submitSelector).after('<br>'+messageNotRegistered)
|
328 |
+
return
|
329 |
+
}
|
330 |
+
$mo(emailSelector).after(messageTextEmail + otpEdit + sendButton)
|
331 |
+
$mo( "#otp_send_button" ).click(function()
|
332 |
+
{
|
333 |
+
email = $mo(emailSelector).val()
|
334 |
+
if(!validateEmail(email) || !email) {
|
335 |
+
setMessage("Email Address is Invalid or Empty", "red")
|
336 |
+
return
|
337 |
+
}
|
338 |
+
isSecond = false
|
339 |
+
sendChallenge(authType,null,email,nonce,ajaxurl)
|
340 |
+
})
|
341 |
+
|
342 |
+
$mo(submitSelector).click(function(e)
|
343 |
+
{
|
344 |
+
e.preventDefault()
|
345 |
+
if(isValidated === false)
|
346 |
+
{
|
347 |
+
otp = $mo('#edit_otp').val()
|
348 |
+
if(!otp || !txId)
|
349 |
+
{
|
350 |
+
setMessage("Please Validate Email first", "red")
|
351 |
+
}
|
352 |
+
else
|
353 |
+
validateOTP(otp, nonce, phone, txId, email)
|
354 |
+
}
|
355 |
+
else
|
356 |
+
{
|
357 |
+
|
358 |
+
}
|
359 |
+
$mo(submitSelector).unbind('click')
|
360 |
+
|
361 |
+
})
|
362 |
+
|
363 |
+
$mo(formName).on("submit", function(e){
|
364 |
+
e.preventDefault()
|
365 |
+
|
366 |
+
if(isValidated === false)
|
367 |
+
{
|
368 |
+
otp = $mo('#edit_otp').val()
|
369 |
+
if(!otp || !txId)
|
370 |
+
{
|
371 |
+
setMessage("Please Validate Email first","red")
|
372 |
+
$mo(submitSelector).prop("disabled",false)
|
373 |
+
$mo(submitSelector).removeAttr("disabled")
|
374 |
+
return true
|
375 |
+
}
|
376 |
+
else
|
377 |
+
validateOTP(otp, nonce, phone, txId, email)
|
378 |
+
}
|
379 |
+
|
380 |
+
else
|
381 |
+
{
|
382 |
+
|
383 |
+
}
|
384 |
+
|
385 |
+
})
|
386 |
+
break;
|
387 |
+
|
388 |
+
case 'both':
|
389 |
+
|
390 |
+
$mo(phoneSelector).after(messageTextBoth + otpEdit + sendButton);
|
391 |
+
$mo(phoneSelector).intlTelInput({})
|
392 |
+
|
393 |
+
if (!$mo(phoneSelector).length)
|
394 |
+
{
|
395 |
+
const messageNotRegistered = '<p id="phoneFieldLabel" style="color: red;font-size: 18px;border: red 1px solid;padding: 5px" > miniOrange : Phone Field not Found.</p>';
|
396 |
+
$mo(emailSelector).after('<br>'+messageNotRegistered)
|
397 |
+
return
|
398 |
+
}
|
399 |
+
|
400 |
+
$mo( "#otp_send_button" ).click(function() {
|
401 |
+
phone = $mo(phoneSelector).val()
|
402 |
+
phone = phone.replace(/\s+/g, '')
|
403 |
+
email = $mo(emailSelector).val()
|
404 |
+
if (!validatePhone(phone)) {
|
405 |
+
$mo('#otpmessage').text('Invalid Phone Number').css('color', 'red')
|
406 |
+
return
|
407 |
+
}
|
408 |
+
if (!validateEmail(email)) {
|
409 |
+
$mo('#otpmessage').text('Invalid Email Address').css('color', 'red')
|
410 |
+
return
|
411 |
+
}
|
412 |
+
if (!isSecond)
|
413 |
+
sendChallenge('phone', phone, null, nonce, ajaxurl)
|
414 |
+
else
|
415 |
+
{
|
416 |
+
sendChallenge('email', null, email, nonce, ajaxurl)
|
417 |
+
$mo(submitSelector).text('Register')
|
418 |
+
$(submitSelector).removeAttr("disabled")
|
419 |
+
}
|
420 |
+
$mo(submitSelector).text('Validate')
|
421 |
+
})
|
422 |
+
|
423 |
+
$mo(submitSelector).click(function(e)
|
424 |
+
{
|
425 |
+
e.preventDefault()
|
426 |
+
if(isValidated === false)
|
427 |
+
{
|
428 |
+
otp = $mo('#edit_otp').val()
|
429 |
+
if(!otp || !txId)
|
430 |
+
{
|
431 |
+
setMessage("Please Validate Email and Phone first", "red")
|
432 |
+
}
|
433 |
+
else
|
434 |
+
validateBoth(otp, nonce, phone, txId, email,true)
|
435 |
+
}
|
436 |
+
else
|
437 |
+
{
|
438 |
+
|
439 |
+
}
|
440 |
+
$mo(submitSelector).unbind('click')
|
441 |
+
|
442 |
+
})
|
443 |
+
|
444 |
+
$mo(formName).on("submit", function(e){
|
445 |
+
e.preventDefault()
|
446 |
+
|
447 |
+
if(isValidated === false)
|
448 |
+
{
|
449 |
+
otp = $mo('#edit_otp').val()
|
450 |
+
if(!otp || !txId)
|
451 |
+
{
|
452 |
+
setMessage("Please Validate Email and Phone first","red")
|
453 |
+
$mo(submitSelector).prop("disabled",false)
|
454 |
+
$mo(submitSelector).removeAttr("disabled")
|
455 |
+
return true
|
456 |
+
}
|
457 |
+
else
|
458 |
+
validateBoth(otp, nonce, phone, txId, email)
|
459 |
+
}
|
460 |
+
|
461 |
+
else
|
462 |
+
{
|
463 |
+
|
464 |
+
}
|
465 |
+
|
466 |
+
})
|
467 |
+
|
468 |
+
}
|
469 |
+
|
470 |
+
function validateEmail(email_address) {
|
471 |
+
let email_regex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/i
|
472 |
+
return email_regex.test(email_address);
|
473 |
+
|
474 |
+
}
|
475 |
+
function validatePhone(phone) {
|
476 |
+
let intRegex = /[0-9 -()+]+$/;
|
477 |
+
return !(phone.length < 10 || phone.length === 0 || (!intRegex.test(phone)));
|
478 |
+
|
479 |
+
}
|
480 |
+
|
481 |
+
}
|
482 |
+
else
|
483 |
+
{
|
484 |
+
}
|
485 |
+
|
486 |
+
|
487 |
+
});
|
includes/js/custom-form.js
ADDED
@@ -0,0 +1,407 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
jQuery(document).ready(function()
|
2 |
+
{
|
3 |
+
let $mo = jQuery;
|
4 |
+
let ajaxurl = otpverificationObj.siteURL;
|
5 |
+
let nonce = otpverificationObj.nonce;
|
6 |
+
let submitSelector = otpverificationObj.submitSelector;
|
7 |
+
let formName = otpverificationObj.formname;
|
8 |
+
let emailSelector = otpverificationObj.emailselector;
|
9 |
+
let phoneSelector = otpverificationObj.phoneSelector
|
10 |
+
let txId="";
|
11 |
+
let txIdNew =""
|
12 |
+
let isValidated = false
|
13 |
+
let isEmailResend = false
|
14 |
+
let isSecond = false
|
15 |
+
let authType = otpverificationObj.authType;
|
16 |
+
let isShortEnabled = otpverificationObj.isEnabledShortcode;
|
17 |
+
let isRegistered = otpverificationObj.isRegistered;
|
18 |
+
const otpEdit = '<input type="text"' +
|
19 |
+
'name="edit_otp"' +
|
20 |
+
'id="edit_otp"' +
|
21 |
+
'placeholder="Enter OTP"' +
|
22 |
+
'style="display:none; ">';
|
23 |
+
const messageTextMobile='<br><p id="otpmessage"> An OTP will be sent to your Mobile Number</p>';
|
24 |
+
const messageTextBoth = ' <p id="otpmessage">An OTP will be sent to your Mobile Number and Email</p>'
|
25 |
+
const messageTextEmail = '<br><p id="otpmessage"> An OTP will be sent to your Email ID</p>';
|
26 |
+
const sendButton = '<div class="button" ' +
|
27 |
+
'id ="otp_send_button">Send OTP</div> ' +
|
28 |
+
'<div class="button" ' +
|
29 |
+
'id ="timer" ' +
|
30 |
+
'style="visibility:hidden;">00</div><br>';
|
31 |
+
|
32 |
+
const phonelabel = '<label for="reg_phone">Phone Number <span class="required">*</span></label>';
|
33 |
+
|
34 |
+
if(isRegistered === 'false')
|
35 |
+
{
|
36 |
+
const messageNotRegistered = '<p id="registermessage" style="color: red;font-size: 18px;border: red 1px solid;padding: 5px" > miniOrange : Register/Login with miniOrange to Enable 2FA for this Form</p>';
|
37 |
+
$mo(emailSelector).after('<br>'+messageNotRegistered);
|
38 |
+
}
|
39 |
+
else
|
40 |
+
if(($mo(formName).length || $mo(submitSelector).length) && isRegistered!==false && isShortEnabled !== 'false')
|
41 |
+
{
|
42 |
+
function setMessage(message,color) {
|
43 |
+
$mo('#otpmessage').text("")
|
44 |
+
$mo('#otpmessage').text(message).css('color',color)
|
45 |
+
}
|
46 |
+
|
47 |
+
function sendChallenge(authType, phone, email,nonce, ajaxurl) {
|
48 |
+
txId = ""
|
49 |
+
let timeLeft = 0
|
50 |
+
let timerId
|
51 |
+
let data =
|
52 |
+
{
|
53 |
+
'action' : 'mo_shortcode',
|
54 |
+
'mo_action' : 'challenge',
|
55 |
+
'email' : email,
|
56 |
+
'phone' : phone,
|
57 |
+
'nonce' : nonce ,
|
58 |
+
'authTypeSend' : authType
|
59 |
+
}
|
60 |
+
|
61 |
+
$mo("#otp_send_button").text("Sending")
|
62 |
+
$mo.post(ajaxurl, data,function (response)
|
63 |
+
{
|
64 |
+
if(response === null)
|
65 |
+
{
|
66 |
+
setMessage('Contact Site Administrator','red')
|
67 |
+
}
|
68 |
+
else
|
69 |
+
{
|
70 |
+
switch (response.status)
|
71 |
+
{
|
72 |
+
case "SUCCESS":
|
73 |
+
$mo("#edit_otp").css("display", "inherit")
|
74 |
+
setMessage(response.message, 'green')
|
75 |
+
|
76 |
+
if(isSecond)
|
77 |
+
{
|
78 |
+
txIdNew = response.txId
|
79 |
+
clearInterval(timerId)
|
80 |
+
}
|
81 |
+
|
82 |
+
else
|
83 |
+
{
|
84 |
+
txId = response.txId
|
85 |
+
timeLeft = 30
|
86 |
+
}
|
87 |
+
|
88 |
+
timerId = setInterval(countdown, 1000)
|
89 |
+
|
90 |
+
function countdown() {
|
91 |
+
if (timeLeft === 0)
|
92 |
+
{
|
93 |
+
clearTimeout(timerId)
|
94 |
+
$mo("#otp_send_button").css("display", "initial");
|
95 |
+
$mo("#timer").css("visibility", "hidden");
|
96 |
+
$mo("#otp_send_button").text("Resend");
|
97 |
+
|
98 |
+
} else {
|
99 |
+
$mo("#timer").css("visibility", "visible");
|
100 |
+
$mo("#otp_send_button").css("display", "none");
|
101 |
+
$mo("#timer").text(timeLeft);
|
102 |
+
timeLeft--;
|
103 |
+
}
|
104 |
+
}
|
105 |
+
break;
|
106 |
+
case "FAILED":
|
107 |
+
setMessage(response.message,'red')
|
108 |
+
break;
|
109 |
+
case "ERROR":
|
110 |
+
setMessage(response.message,'red')
|
111 |
+
break
|
112 |
+
}
|
113 |
+
}
|
114 |
+
})
|
115 |
+
|
116 |
+
|
117 |
+
}
|
118 |
+
function validateOTP(otp,nonce,phone,txId,email){
|
119 |
+
|
120 |
+
let data =
|
121 |
+
{
|
122 |
+
'action' : 'mo_shortcode',
|
123 |
+
'mo_action' : 'validate',
|
124 |
+
'otp' : otp,
|
125 |
+
'nonce' : nonce,
|
126 |
+
'mobile' : phone,
|
127 |
+
'txId' : txId,
|
128 |
+
'email' : email
|
129 |
+
}
|
130 |
+
|
131 |
+
if(isValidated === false)
|
132 |
+
{
|
133 |
+
$mo.post(ajaxurl,data,function(response)
|
134 |
+
{
|
135 |
+
if(response === null)
|
136 |
+
{
|
137 |
+
setMessage('Error Validating OTP','red')
|
138 |
+
isValidated = false
|
139 |
+
}
|
140 |
+
else
|
141 |
+
switch (response.status)
|
142 |
+
{
|
143 |
+
case "SUCCESS":
|
144 |
+
setMessage(response.message,'green')
|
145 |
+
isValidated = true
|
146 |
+
if(submitSelector === ".ur-submit-button")
|
147 |
+
{
|
148 |
+
setTimeout(function () {
|
149 |
+
location.reload()
|
150 |
+
}, 15000)
|
151 |
+
}
|
152 |
+
$mo(submitSelector).unbind("click").click()
|
153 |
+
return true
|
154 |
+
case "FAILED":
|
155 |
+
setMessage(response.message,'red')
|
156 |
+
$mo(submitSelector).removeAttr("disabled");
|
157 |
+
return false
|
158 |
+
case "ERROR":
|
159 |
+
$mo(submitSelector).removeAttr("disabled");
|
160 |
+
return false
|
161 |
+
}
|
162 |
+
})
|
163 |
+
}
|
164 |
+
else {
|
165 |
+
|
166 |
+
}
|
167 |
+
}
|
168 |
+
function validateBoth(otp,nonce,phone,txId,email,isFirst) {
|
169 |
+
let data =
|
170 |
+
{
|
171 |
+
'action' : 'mo_shortcode',
|
172 |
+
'mo_action' : 'validate',
|
173 |
+
'otp' : otp,
|
174 |
+
'nonce' : nonce,
|
175 |
+
'mobile' : phone,
|
176 |
+
'txId' : txId,
|
177 |
+
'email' : email
|
178 |
+
}
|
179 |
+
|
180 |
+
if(isValidated === false)
|
181 |
+
{
|
182 |
+
if(isFirst)
|
183 |
+
$mo.post(ajaxurl,data,function(response)
|
184 |
+
{
|
185 |
+
isFirst = false
|
186 |
+
|
187 |
+
if(response === null)
|
188 |
+
{
|
189 |
+
setMessage('Error Validating OTP','red')
|
190 |
+
isValidated = false
|
191 |
+
}
|
192 |
+
else
|
193 |
+
switch (response.status)
|
194 |
+
{
|
195 |
+
case "SUCCESS":
|
196 |
+
setMessage(phone+' '+response.message +' '+ 'Sending OTP on '+email,'green')
|
197 |
+
|
198 |
+
isValidated = false
|
199 |
+
isSecond = true
|
200 |
+
|
201 |
+
setTimeout(function () {
|
202 |
+
sendChallenge('email',null,email,nonce,ajaxurl)
|
203 |
+
},3000)
|
204 |
+
|
205 |
+
$mo('#edit_otp').val("")
|
206 |
+
$mo('#edit_otp').css('placeholder','Enter OTP Sent on your email')
|
207 |
+
$mo('#reg_phone').after('<br><p style="color:green;"> Phone Number Validated ☑</p>')
|
208 |
+
$mo("#reg_phone").attr('disabled','true')
|
209 |
+
$mo(submitSelector).text('Register')
|
210 |
+
|
211 |
+
$mo(submitSelector).click(function(e) {
|
212 |
+
if (isValidated == false)
|
213 |
+
{
|
214 |
+
e.preventDefault()
|
215 |
+
otp = $mo('#edit_otp').val()
|
216 |
+
validateOTP(otp, nonce, phone, txIdNew, email)
|
217 |
+
}
|
218 |
+
})
|
219 |
+
break;
|
220 |
+
case "FAILED":
|
221 |
+
setMessage(response.message,'red')
|
222 |
+
break
|
223 |
+
case "ERROR":
|
224 |
+
setMessage(response.message,'red')
|
225 |
+
break
|
226 |
+
}
|
227 |
+
})
|
228 |
+
}
|
229 |
+
else
|
230 |
+
{
|
231 |
+
setMessage('Already Validated', 'red')
|
232 |
+
jQuery.reload()
|
233 |
+
}
|
234 |
+
}
|
235 |
+
|
236 |
+
let phone,email,otp;
|
237 |
+
switch (authType) {
|
238 |
+
case 'phone':
|
239 |
+
if (!$mo(phoneSelector).length)
|
240 |
+
{
|
241 |
+
const messageNotRegistered = '<p id="phoneFieldLabel" style="color: red;font-size: 18px;border: red 1px solid;padding: 5px" > miniOrange : Phone Field not Found.</p>';
|
242 |
+
$mo(emailSelector).after('<br>'+messageNotRegistered)
|
243 |
+
return
|
244 |
+
}
|
245 |
+
$mo(phoneSelector).after(messageTextMobile + otpEdit+ sendButton);
|
246 |
+
$mo(phoneSelector).intlTelInput({})
|
247 |
+
$mo( "#otp_send_button" ).click(function()
|
248 |
+
{
|
249 |
+
phone = $mo(phoneSelector).val()
|
250 |
+
phone = phone.replace(/\s+/g, '')
|
251 |
+
email = $mo(emailSelector).val()
|
252 |
+
if(!validatePhone(phone)) {
|
253 |
+
$mo('#otpmessage').text('Invalid Phone Number').css('color','red')
|
254 |
+
return
|
255 |
+
}
|
256 |
+
if(!validateEmail(email)) {
|
257 |
+
$mo('#otpmessage').text('Invalid Email Address').css('color','red')
|
258 |
+
return
|
259 |
+
}
|
260 |
+
isSecond = false
|
261 |
+
sendChallenge(authType,phone,null,nonce,ajaxurl)
|
262 |
+
})
|
263 |
+
|
264 |
+
|
265 |
+
$mo(submitSelector).click(function(e) {
|
266 |
+
e.preventDefault()
|
267 |
+
if(isValidated === false)
|
268 |
+
{
|
269 |
+
otp = $mo('#edit_otp').val()
|
270 |
+
if(!otp)
|
271 |
+
{
|
272 |
+
setMessage("Please Validate Phone first", "red")
|
273 |
+
}
|
274 |
+
else
|
275 |
+
validateOTP(otp, nonce, phone, txId, email)
|
276 |
+
}
|
277 |
+
else
|
278 |
+
{
|
279 |
+
|
280 |
+
}
|
281 |
+
})
|
282 |
+
|
283 |
+
|
284 |
+
break;
|
285 |
+
|
286 |
+
case 'email':
|
287 |
+
if (!$mo(emailSelector).length)
|
288 |
+
{
|
289 |
+
const messageNotRegistered = '<p id="emailFieldLabel" style="color: red;font-size: 18px;border: red 1px solid;padding: 5px" > miniOrange : Email Field '+emailSelector+' not Found. Please check Selector</p>';
|
290 |
+
if($mo(formName).length)
|
291 |
+
$mo(formName).after('<br>'+messageNotRegistered)
|
292 |
+
else if($mo(submitSelector).length)
|
293 |
+
$mo(submitSelector).after('<br>'+messageNotRegistered)
|
294 |
+
return
|
295 |
+
}
|
296 |
+
$mo(emailSelector).after(messageTextEmail + otpEdit + sendButton)
|
297 |
+
$mo( "#otp_send_button" ).click(function()
|
298 |
+
{ email = $mo(emailSelector).val()
|
299 |
+
if(!validateEmail(email)) {
|
300 |
+
$mo('#otpmessage').text('Invalid Email Address').css('color','red')
|
301 |
+
return
|
302 |
+
}
|
303 |
+
isSecond = false
|
304 |
+
sendChallenge(authType,null,email,nonce,ajaxurl)
|
305 |
+
})
|
306 |
+
|
307 |
+
$mo(submitSelector).click(function(e)
|
308 |
+
{
|
309 |
+
e.preventDefault()
|
310 |
+
if(isValidated === false)
|
311 |
+
{
|
312 |
+
otp = $mo('#edit_otp').val()
|
313 |
+
if(!otp)
|
314 |
+
{
|
315 |
+
setMessage("Please Validate Email first", "red")
|
316 |
+
}
|
317 |
+
else
|
318 |
+
validateOTP(otp, nonce, phone, txId, email)
|
319 |
+
}
|
320 |
+
else
|
321 |
+
{
|
322 |
+
|
323 |
+
}
|
324 |
+
|
325 |
+
})
|
326 |
+
|
327 |
+
break;
|
328 |
+
|
329 |
+
case 'both':
|
330 |
+
$mo(emailSelector).after('<br>'+ messageTextBoth + otpEdit + sendButton);
|
331 |
+
$mo(phoneSelector).intlTelInput({})
|
332 |
+
if (!$mo(phoneSelector).length)
|
333 |
+
{
|
334 |
+
const messageNotRegistered = '<p id="phoneFieldLabel" style="color: red;font-size: 18px;border: red 1px solid;padding: 5px" > miniOrange : Phone Field not Found.</p>';
|
335 |
+
$mo(emailSelector).after('<br>'+messageNotRegistered)
|
336 |
+
return
|
337 |
+
}
|
338 |
+
$mo( "#otp_send_button" ).click(function() {
|
339 |
+
phone = $mo(phoneSelector).val()
|
340 |
+
phone = phone.replace(/\s+/g, '')
|
341 |
+
email = $mo(emailSelector).val()
|
342 |
+
if (!validatePhone(phone)) {
|
343 |
+
$mo('#otpmessage').text('Invalid Phone Number').css('color', 'red')
|
344 |
+
return
|
345 |
+
}
|
346 |
+
if (!validateEmail(email)) {
|
347 |
+
$mo('#otpmessage').text('Invalid Email Address').css('color', 'red')
|
348 |
+
return
|
349 |
+
}
|
350 |
+
if (!isSecond)
|
351 |
+
sendChallenge('phone', phone, null, nonce, ajaxurl)
|
352 |
+
else
|
353 |
+
{
|
354 |
+
sendChallenge('email', null, email, nonce, ajaxurl)
|
355 |
+
$mo(submitSelector).text('Register')
|
356 |
+
}
|
357 |
+
$mo(submitSelector).text('Validate')
|
358 |
+
})
|
359 |
+
|
360 |
+
|
361 |
+
|
362 |
+
$mo(submitSelector).click(function(e)
|
363 |
+
{
|
364 |
+
e.preventDefault()
|
365 |
+
if(isValidated === false)
|
366 |
+
{
|
367 |
+
email = $mo(emailSelector).val()
|
368 |
+
otp = $mo('#edit_otp').val()
|
369 |
+
if(!otp || !email)
|
370 |
+
{
|
371 |
+
setMessage("Please Validate Email and Phone first", "red")
|
372 |
+
}
|
373 |
+
else
|
374 |
+
validateBoth(otp,nonce,phone,txId,email,true)
|
375 |
+
}
|
376 |
+
else
|
377 |
+
{
|
378 |
+
|
379 |
+
}
|
380 |
+
|
381 |
+
})
|
382 |
+
}
|
383 |
+
|
384 |
+
function validateEmail(email_address) {
|
385 |
+
let email_regex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/i
|
386 |
+
if (!email_regex.test(email_address))
|
387 |
+
{
|
388 |
+
return false
|
389 |
+
}
|
390 |
+
return true
|
391 |
+
}
|
392 |
+
function validatePhone(phone) {
|
393 |
+
let intRegex = /[0-9 -()+]+$/;
|
394 |
+
if(phone.length < 10 || phone.length == 0 || (!intRegex.test(phone)))
|
395 |
+
{
|
396 |
+
return false
|
397 |
+
}
|
398 |
+
return true
|
399 |
+
}
|
400 |
+
|
401 |
+
}
|
402 |
+
else
|
403 |
+
{
|
404 |
+
|
405 |
+
}
|
406 |
+
|
407 |
+
});
|
includes/js/dmajax.js
ADDED
@@ -0,0 +1,58 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
mo2f_has_dm_class = jQuery('.dm_signin_form');
|
2 |
+
if(mo2f_has_dm_class.length){
|
3 |
+
jQuery('form[name="login_1_form"]').removeAttr('action');
|
4 |
+
jQuery('form[name="login_1_form"]').removeAttr('method');
|
5 |
+
jQuery('form[name="login_1_form"]').attr('data-ajax','2');
|
6 |
+
jQuery('form[name="login_1_form"]').prepend( "<div id='mo2f_msg'></div>" );
|
7 |
+
jQuery('input[name="save"]').removeAttr('onclick');
|
8 |
+
|
9 |
+
jQuery('#ncore_username0').keypress(function (e) {
|
10 |
+
if (e.which == 13) {//Enter key pressed
|
11 |
+
e.preventDefault();
|
12 |
+
mo2f_dmajax();
|
13 |
+
}
|
14 |
+
});
|
15 |
+
jQuery('#ncore_password0').keypress(function (e) {
|
16 |
+
if (e.which == 13) {//Enter key pressed
|
17 |
+
e.preventDefault();
|
18 |
+
mo2f_dmajax();
|
19 |
+
}
|
20 |
+
});
|
21 |
+
|
22 |
+
jQuery('input[name="save"]' ).click(function(e){
|
23 |
+
e.preventDefault();
|
24 |
+
mo2f_dmajax();
|
25 |
+
});
|
26 |
+
|
27 |
+
function mo2f_dmajax(){
|
28 |
+
jQuery('#ncore_ajax_wait').attr('class','ncore_waiting');
|
29 |
+
if(typeof jQuery('#miniorange_rba_attribures').val() != 'undefined'){
|
30 |
+
jQuery('#miniorange_rba_attribures').val(JSON.stringify(rbaAttributes.attributes));
|
31 |
+
var rba = jQuery('#miniorange_rba_attribures').val();
|
32 |
+
}
|
33 |
+
else
|
34 |
+
var rba = "";
|
35 |
+
var data = {
|
36 |
+
'action' : 'mo2f_ajax',
|
37 |
+
'mo2f_ajax_option' : 'mo2f_ajax_login',
|
38 |
+
'username' : jQuery('#ncore_username0').val(),
|
39 |
+
'password' : jQuery('#ncore_password0').val(),
|
40 |
+
'mo_softtoken' : jQuery('#mo2f_2fa_code').val(),
|
41 |
+
'nonce' : jQuery("input[name=miniorange_login_nonce]").val(),
|
42 |
+
'miniorange_rba_attribures' : rba,
|
43 |
+
};
|
44 |
+
jQuery.post(my_ajax_object.ajax_url, data, function(response) {
|
45 |
+
if ( typeof response.data === "undefined") {
|
46 |
+
jQuery("html").html(response);
|
47 |
+
}
|
48 |
+
else if ( response.data.notice ) {
|
49 |
+
jQuery("#mo2f_msg").append( response.data.notice ).fadeIn();
|
50 |
+
jQuery('#ncore_ajax_wait').removeAttr('class');
|
51 |
+
}
|
52 |
+
else if(response.data.reload)
|
53 |
+
location.reload( true );
|
54 |
+
else
|
55 |
+
location.href = response.data.redirect;
|
56 |
+
});
|
57 |
+
}
|
58 |
+
}
|
includes/js/phone.js
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
-
/*
|
2 |
-
intl-tel-input
|
3 |
-
version: 0.8.3
|
4 |
-
description: A jQuery plugin for entering international telephone numbers
|
5 |
-
repository: https://github.com/Bluefieldscom/intl-tel-input.git
|
6 |
-
license: MIT
|
7 |
-
author: Jack O'Connor (http://jackocnr.com)
|
8 |
-
*/
|
9 |
!function(a,b,c){function d(b,c){this.element=b,this.options=a.extend({},f,c),this._defaults=f,this._name=e,this.init()}var e="intlTelInput",f={preferredCountries:["IN","US"],americaMode:false};d.prototype={init:function(){var b=this,d=[];a.each(this.options.preferredCountries,function(b,c){var e=a.grep(intlTelInput.countries,function(a){return a.cca2==c});e.length&&d.push(e[0])});var e=a(this.element);""!==e.val()||this.options.americaMode||e.val("+1 "),e.wrap(a("<div>",{"class":"intl-number-input"}));var f=a("<div>",{"class":"flag-dropdown f16"}).insertBefore(e),g=a("<div>",{"class":"selected-flag"}).appendTo(f),h=d[0].cca2.toLowerCase(),i=a("<div>",{"class":"flag "+h}).appendTo(g);a("<div>",{"class":"down-arrow"}).appendTo(i);var j=a("<ul>",{"class":"country-list hide"}).appendTo(f);this.appendListItems(d,j),a("<li>",{"class":"divider"}).appendTo(j),this.appendListItems(intlTelInput.countries,j);var k=j.children(".country");k.first().addClass("active"),e.keyup(function(){var c=b.getDialCode(e.val())||"1",d=intlTelInput.countryCodes[c],f=!1;if(a.each(d,function(a,b){i.hasClass(b.toLowerCase())&&(f=!0)}),!f){var g=intlTelInput.countryCodes[c][0].toLowerCase();i.attr("class","flag "+g),k.removeClass("active"),k.children(".flag."+g).parent().addClass("active")}}),e.keyup(),g.click(function(d){if(d.stopPropagation(),j.hasClass("hide")){k.removeClass("highlight");var f=j.children(".active").addClass("highlight");b.scrollTo(f,j),j.removeClass("hide"),a(c).bind("keydown.intlTelInput",function(c){if(38==c.which||40==c.which){var d=j.children(".highlight").first(),f=38==c.which?d.prev():d.next();f&&(f.hasClass("divider")&&(f=38==c.which?f.prev():f.next()),k.removeClass("highlight"),f.addClass("highlight"),b.scrollTo(f,j))}else if(13==c.which){var h=j.children(".highlight").first();h.length&&b.selectCountry(h,g,e,j)}else if(9==c.which||27==c.which)b.closeDropdown(j);else if(c.which>=97&&c.which<=122||c.which>=65&&c.which<=90){var i=String.fromCharCode(c.which),l=k.filter(function(){return a(this).text().charAt(0)==i});if(l.length){var m,n=l.filter(".highlight").first();m=n&&n.next()&&n.next().text().charAt(0)==i?n.next():l.first(),k.removeClass("highlight"),m.addClass("highlight"),b.scrollTo(m,j)}}})}else b.closeDropdown(j)}),k.mouseover(function(){k.removeClass("highlight"),a(this).addClass("highlight")}),k.click(function(c){var d=a(c.currentTarget);b.selectCountry(d,g,e,j)}),a("html").click(function(c){a(c.target).closest(".country-list").length||b.closeDropdown(j)})},selectCountry:function(a,b,c,d){var e=a.attr("data-country-code").toLowerCase();b.find(".flag").attr("class","flag "+e);var f=this.updateNumber(c.val(),a.attr("data-dial-code"));c.val(f),this.closeDropdown(d),c.focus(),d.children(".country").removeClass("active highlight"),a.addClass("active")},closeDropdown:function(b){b.addClass("hide"),a(c).unbind("keydown.intlTelInput")},scrollTo:function(a,b){var c=b.height(),d=b.offset().top,e=d+c,f=a.outerHeight(),g=a.offset().top,h=g+f,i=g-d+b.scrollTop();if(d>g)b.scrollTop(i);else if(h>e){var j=c-f;b.scrollTop(i-j)}},updateNumber:function(a,b){var c,d="+"+this.getDialCode(a),e="+"+b;return d.length>1?(c=a.replace(d,e),a==d&&(c+=" ")):c=a.length&&"+"!=a.substr(0,1)?e+" "+a.trim():e+" ",this.options.americaMode&&"+1 "==c.substring(0,3)&&(c=c.substring(3)),c},getDialCode:function(a){var b=a.trim().split(" ")[0];if("+"==b.substring(0,1))for(var c=b.replace(/\D/g,"").substring(0,4),d=c.length;d>0;d--)if(c=c.substring(0,d),intlTelInput.countryCodes[c])return c;return""},appendListItems:function(b,c){var d="";a.each(b,function(a,b){d+="<li class='country' data-dial-code='"+b["calling-code"]+"' data-country-code='"+b.cca2+"'>",d+="<div class='flag "+b.cca2.toLowerCase()+"'></div>",d+="<span class='country-name'>"+b.name+"</span>",d+="<span class='dial-code'>+"+b["calling-code"]+"</span>",d+="</li>"}),c.append(d)}},a.fn[e]=function(b){return this.each(function(){a.data(this,"plugin_"+e)||a.data(this,"plugin_"+e,new d(this,b))})}}(jQuery,window,document);var intlTelInput={countries:[{name:"Afghanistan",cca2:"AF","calling-code":"93"},{name:"Albania",cca2:"AL","calling-code":"355"},{name:"Algeria",cca2:"DZ","calling-code":"213"},{name:"American Samoa",cca2:"AS","calling-code":"1684"},{name:"Andorra",cca2:"AD","calling-code":"376"},{name:"Angola",cca2:"AO","calling-code":"244"},{name:"Anguilla",cca2:"AI","calling-code":"1264"},{name:"Antigua and Barbuda",cca2:"AG","calling-code":"1268"},{name:"Argentina",cca2:"AR","calling-code":"54"},{name:"Armenia",cca2:"AM","calling-code":"374"},{name:"Aruba",cca2:"AW","calling-code":"297"},{name:"Australia",cca2:"AU","calling-code":"61"},{name:"Austria",cca2:"AT","calling-code":"43"},{name:"Azerbaijan",cca2:"AZ","calling-code":"994"},{name:"Bahamas",cca2:"BS","calling-code":"1242"},{name:"Bahrain",cca2:"BH","calling-code":"973"},{name:"Bangladesh",cca2:"BD","calling-code":"880"},{name:"Barbados",cca2:"BB","calling-code":"1246"},{name:"Belarus",cca2:"BY","calling-code":"375"},{name:"Belgium",cca2:"BE","calling-code":"32"},{name:"Belize",cca2:"BZ","calling-code":"501"},{name:"Benin",cca2:"BJ","calling-code":"229"},{name:"Bermuda",cca2:"BM","calling-code":"1441"},{name:"Bhutan",cca2:"BT","calling-code":"975"},{name:"Bolivia",cca2:"BO","calling-code":"591"},{name:"Bosnia and Herzegovina",cca2:"BA","calling-code":"387"},{name:"Botswana",cca2:"BW","calling-code":"267"},{name:"Brazil",cca2:"BR","calling-code":"55"},{name:"Brunei Darussalam",cca2:"BN","calling-code":"673"},{name:"Bulgaria",cca2:"BG","calling-code":"359"},{name:"Burkina Faso",cca2:"BF","calling-code":"226"},{name:"Burundi",cca2:"BI","calling-code":"257"},{name:"Cambodia",cca2:"KH","calling-code":"855"},{name:"Cameroon",cca2:"CM","calling-code":"237"},{name:"Canada",cca2:"CA","calling-code":"1"},{name:"Cape Verde",cca2:"CV","calling-code":"238"},{name:"Cayman Islands",cca2:"KY","calling-code":"1345"},{name:"Central African Republic",cca2:"CF","calling-code":"236"},{name:"Chad",cca2:"TD","calling-code":"235"},{name:"Chile",cca2:"CL","calling-code":"56"},{name:"China",cca2:"CN","calling-code":"86"},{name:"Colombia",cca2:"CO","calling-code":"57"},{name:"Comoros",cca2:"KM","calling-code":"269"},{name:"Congo (DRC)",cca2:"CD","calling-code":"243"},{name:"Congo (Republic)",cca2:"CG","calling-code":"242"},{name:"Cook Islands",cca2:"CK","calling-code":"682"},{name:"Costa Rica",cca2:"CR","calling-code":"506"},{name:"Côte d'Ivoire",cca2:"CI","calling-code":"225"},{name:"Croatia",cca2:"HR","calling-code":"385"},{name:"Cuba",cca2:"CU","calling-code":"53"},{name:"Cyprus",cca2:"CY","calling-code":"357"},{name:"Czech Republic",cca2:"CZ","calling-code":"420"},{name:"Denmark",cca2:"DK","calling-code":"45"},{name:"Djibouti",cca2:"DJ","calling-code":"253"},{name:"Dominica",cca2:"DM","calling-code":"1767"},{name:"Dominican Republic",cca2:"DO","calling-code":"1809"},{name:"Ecuador",cca2:"EC","calling-code":"593"},{name:"Egypt",cca2:"EG","calling-code":"20"},{name:"El Salvador",cca2:"SV","calling-code":"503"},{name:"Equatorial Guinea",cca2:"GQ","calling-code":"240"},{name:"Eritrea",cca2:"ER","calling-code":"291"},{name:"Estonia",cca2:"EE","calling-code":"372"},{name:"Ethiopia",cca2:"ET","calling-code":"251"},{name:"Faroe Islands",cca2:"FO","calling-code":"298"},{name:"Fiji",cca2:"FJ","calling-code":"679"},{name:"Finland",cca2:"FI","calling-code":"358"},{name:"France",cca2:"FR","calling-code":"33"},{name:"French Polynesia",cca2:"PF","calling-code":"689"},{name:"Gabon",cca2:"GA","calling-code":"241"},{name:"Gambia",cca2:"GM","calling-code":"220"},{name:"Georgia",cca2:"GE","calling-code":"995"},{name:"Germany",cca2:"DE","calling-code":"49"},{name:"Ghana",cca2:"GH","calling-code":"233"},{name:"Gibraltar",cca2:"GI","calling-code":"350"},{name:"Greece",cca2:"GR","calling-code":"30"},{name:"Greenland",cca2:"GL","calling-code":"299"},{name:"Grenada",cca2:"GD","calling-code":"1473"},{name:"Guadeloupe",cca2:"GP","calling-code":"590"},{name:"Guam",cca2:"GU","calling-code":"1671"},{name:"Guatemala",cca2:"GT","calling-code":"502"},{name:"Guernsey",cca2:"GG","calling-code":"44"},{name:"Guinea",cca2:"GN","calling-code":"224"},{name:"Guinea-Bissau",cca2:"GW","calling-code":"245"},{name:"Guyana",cca2:"GY","calling-code":"592"},{name:"Haiti",cca2:"HT","calling-code":"509"},{name:"Honduras",cca2:"HN","calling-code":"504"},{name:"Hong Kong",cca2:"HK","calling-code":"852"},{name:"Hungary",cca2:"HU","calling-code":"36"},{name:"Iceland",cca2:"IS","calling-code":"354"},{name:"India",cca2:"IN","calling-code":"91"},{name:"Indonesia",cca2:"ID","calling-code":"62"},{name:"Iran",cca2:"IR","calling-code":"98"},{name:"Iraq",cca2:"IQ","calling-code":"964"},{name:"Ireland",cca2:"IE","calling-code":"353"},{name:"Isle of Man",cca2:"IM","calling-code":"44"},{name:"Israel",cca2:"IL","calling-code":"972"},{name:"Italy",cca2:"IT","calling-code":"39"},{name:"Jamaica",cca2:"JM","calling-code":"1876"},{name:"Japan",cca2:"JP","calling-code":"81"},{name:"Jersey",cca2:"JE","calling-code":"44"},{name:"Jordan",cca2:"JO","calling-code":"962"},{name:"Kazakhstan",cca2:"KZ","calling-code":"7"},{name:"Kenya",cca2:"KE","calling-code":"254"},{name:"Kiribati",cca2:"KI","calling-code":"686"},{name:"Kuwait",cca2:"KW","calling-code":"965"},{name:"Kyrgyzstan",cca2:"KG","calling-code":"996"},{name:"Laos",cca2:"LA","calling-code":"856"},{name:"Latvia",cca2:"LV","calling-code":"371"},{name:"Lebanon",cca2:"LB","calling-code":"961"},{name:"Lesotho",cca2:"LS","calling-code":"266"},{name:"Liberia",cca2:"LR","calling-code":"231"},{name:"Libya",cca2:"LY","calling-code":"218"},{name:"Liechtenstein",cca2:"LI","calling-code":"423"},{name:"Lithuania",cca2:"LT","calling-code":"370"},{name:"Luxembourg",cca2:"LU","calling-code":"352"},{name:"Macao",cca2:"MO","calling-code":"853"},{name:"Macedonia",cca2:"MK","calling-code":"389"},{name:"Madagascar",cca2:"MG","calling-code":"261"},{name:"Malawi",cca2:"MW","calling-code":"265"},{name:"Malaysia",cca2:"MY","calling-code":"60"},{name:"Maldives",cca2:"MV","calling-code":"960"},{name:"Mali",cca2:"ML","calling-code":"223"},{name:"Malta",cca2:"MT","calling-code":"356"},{name:"Marshall Islands",cca2:"MH","calling-code":"692"},{name:"Martinique",cca2:"MQ","calling-code":"596"},{name:"Mauritania",cca2:"MR","calling-code":"222"},{name:"Mauritius",cca2:"MU","calling-code":"230"},{name:"Mexico",cca2:"MX","calling-code":"52"},{name:"Micronesia",cca2:"FM","calling-code":"691"},{name:"Moldova",cca2:"MD","calling-code":"373"},{name:"Monaco",cca2:"MC","calling-code":"377"},{name:"Mongolia",cca2:"MN","calling-code":"976"},{name:"Montenegro",cca2:"ME","calling-code":"382"},{name:"Montserrat",cca2:"MS","calling-code":"1664"},{name:"Morocco",cca2:"MA","calling-code":"212"},{name:"Mozambique",cca2:"MZ","calling-code":"258"},{name:"Myanmar (Burma)",cca2:"MM","calling-code":"95"},{name:"Namibia",cca2:"NA","calling-code":"264"},{name:"Nauru",cca2:"NR","calling-code":"674"},{name:"Nepal",cca2:"NP","calling-code":"977"},{name:"Netherlands",cca2:"NL","calling-code":"31"},{name:"New Caledonia",cca2:"NC","calling-code":"687"},{name:"New Zealand",cca2:"NZ","calling-code":"64"},{name:"Nicaragua",cca2:"NI","calling-code":"505"},{name:"Niger",cca2:"NE","calling-code":"227"},{name:"Nigeria",cca2:"NG","calling-code":"234"},{name:"North Korea",cca2:"KP","calling-code":"850"},{name:"Norway",cca2:"NO","calling-code":"47"},{name:"Oman",cca2:"OM","calling-code":"968"},{name:"Pakistan",cca2:"PK","calling-code":"92"},{name:"Palau",cca2:"PW","calling-code":"680"},{name:"Palestinian Territory",cca2:"PS","calling-code":"970"},{name:"Panama",cca2:"PA","calling-code":"507"},{name:"Papua New Guinea",cca2:"PG","calling-code":"675"},{name:"Paraguay",cca2:"PY","calling-code":"595"},{name:"Peru",cca2:"PE","calling-code":"51"},{name:"Philippines",cca2:"PH","calling-code":"63"},{name:"Poland",cca2:"PL","calling-code":"48"},{name:"Portugal",cca2:"PT","calling-code":"351"},{name:"Puerto Rico",cca2:"PR","calling-code":"1787"},{name:"Qatar",cca2:"QA","calling-code":"974"},{name:"Réunion",cca2:"RE","calling-code":"262"},{name:"Romania",cca2:"RO","calling-code":"40"},{name:"Russian Federation",cca2:"RU","calling-code":"7"},{name:"Rwanda",cca2:"RW","calling-code":"250"},{name:"Saint Kitts and Nevis",cca2:"KN","calling-code":"1869"},{name:"Saint Lucia",cca2:"LC","calling-code":"1758"},{name:"Saint Vincent and the Grenadines",cca2:"VC","calling-code":"1784"},{name:"Samoa",cca2:"WS","calling-code":"685"},{name:"San Marino",cca2:"SM","calling-code":"378"},{name:"São Tomé and Príncipe",cca2:"ST","calling-code":"239"},{name:"Saudi Arabia",cca2:"SA","calling-code":"966"},{name:"Senegal",cca2:"SN","calling-code":"221"},{name:"Serbia",cca2:"RS","calling-code":"381"},{name:"Seychelles",cca2:"SC","calling-code":"248"},{name:"Sierra Leone",cca2:"SL","calling-code":"232"},{name:"Singapore",cca2:"SG","calling-code":"65"},{name:"Slovakia",cca2:"SK","calling-code":"421"},{name:"Slovenia",cca2:"SI","calling-code":"386"},{name:"Solomon Islands",cca2:"SB","calling-code":"677"},{name:"Somalia",cca2:"SO","calling-code":"252"},{name:"South Africa",cca2:"ZA","calling-code":"27"},{name:"South Korea",cca2:"KR","calling-code":"82"},{name:"Spain",cca2:"ES","calling-code":"34"},{name:"Sri Lanka",cca2:"LK","calling-code":"94"},{name:"Sudan",cca2:"SD","calling-code":"249"},{name:"Suriname",cca2:"SR","calling-code":"597"},{name:"Swaziland",cca2:"SZ","calling-code":"268"},{name:"Sweden",cca2:"SE","calling-code":"46"},{name:"Switzerland",cca2:"CH","calling-code":"41"},{name:"Syrian Arab Republic",cca2:"SY","calling-code":"963"},{name:"Taiwan, Province of China",cca2:"TW","calling-code":"886"},{name:"Tajikistan",cca2:"TJ","calling-code":"992"},{name:"Tanzania",cca2:"TZ","calling-code":"255"},{name:"Thailand",cca2:"TH","calling-code":"66"},{name:"Timor-Leste",cca2:"TL","calling-code":"670"},{name:"Togo",cca2:"TG","calling-code":"228"},{name:"Tonga",cca2:"TO","calling-code":"676"},{name:"Trinidad and Tobago",cca2:"TT","calling-code":"1868"},{name:"Tunisia",cca2:"TN","calling-code":"216"},{name:"Turkey",cca2:"TR","calling-code":"90"},{name:"Turkmenistan",cca2:"TM","calling-code":"993"},{name:"Turks and Caicos Islands",cca2:"TC","calling-code":"1649"},{name:"Tuvalu",cca2:"TV","calling-code":"688"},{name:"Uganda",cca2:"UG","calling-code":"256"},{name:"Ukraine",cca2:"UA","calling-code":"380"},{name:"United Arab Emirates",cca2:"AE","calling-code":"971"},{name:"United Kingdom",cca2:"GB","calling-code":"44"},{name:"United States",cca2:"US","calling-code":"1"},{name:"Uruguay",cca2:"UY","calling-code":"598"},{name:"Uzbekistan",cca2:"UZ","calling-code":"998"},{name:"Vanuatu",cca2:"VU","calling-code":"678"},{name:"Vatican City",cca2:"VA","calling-code":"379"},{name:"Venezuela",cca2:"VE","calling-code":"58"},{name:"Viet Nam",cca2:"VN","calling-code":"84"},{name:"Virgin Islands (British)",cca2:"VG","calling-code":"1284"},{name:"Virgin Islands (U.S.)",cca2:"VI","calling-code":"1340"},{name:"Western Sahara",cca2:"EH","calling-code":"212"},{name:"Yemen",cca2:"YE","calling-code":"967"},{name:"Zambia",cca2:"ZM","calling-code":"260"},{name:"Zimbabwe",cca2:"ZW","calling-code":"263"}],countryCodes:{1:["US"],7:["RU","KZ"],20:["EG"],27:["ZA"],30:["GR"],31:["NL"],32:["BE"],33:["FR"],34:["ES"],36:["HU"],39:["IT"],40:["RO"],41:["CH"],43:["AT"],44:["GB","GG","IM","JE"],45:["DK"],46:["SE"],47:["NO","SJ"],48:["PL"],49:["DE"],51:["PE"],52:["MX"],53:["CU"],54:["AR"],55:["BR"],56:["CL"],57:["CO"],58:["VE"],60:["MY"],61:["AU","CC","CX"],62:["ID"],63:["PH"],64:["NZ"],65:["SG"],66:["TH"],81:["JP"],82:["KR"],84:["VN"],86:["CN"],90:["TR"],91:["IN"],92:["PK"],93:["AF"],94:["LK"],95:["MM"],98:["IR"],211:["SS"],212:["MA","EH"],213:["DZ"],216:["TN"],218:["LY"],220:["GM"],221:["SN"],222:["MR"],223:["ML"],224:["GN"],225:["CI"],226:["BF"],227:["NE"],228:["TG"],229:["BJ"],230:["MU"],231:["LR"],232:["SL"],233:["GH"],234:["NG"],235:["TD"],236:["CF"],237:["CM"],238:["CV"],239:["ST"],240:["GQ"],241:["GA"],242:["CG"],243:["CD"],244:["AO"],245:["GW"],246:["IO"],247:["AC"],248:["SC"],249:["SD"],250:["RW"],251:["ET"],252:["SO"],253:["DJ"],254:["KE"],255:["TZ"],256:["UG"],257:["BI"],258:["MZ"],260:["ZM"],261:["MG"],262:["RE","YT"],263:["ZW"],264:["NA"],265:["MW"],266:["LS"],267:["BW"],268:["SZ"],269:["KM"],290:["SH"],291:["ER"],297:["AW"],298:["FO"],299:["GL"],350:["GI"],351:["PT"],352:["LU"],353:["IE"],354:["IS"],355:["AL"],356:["MT"],357:["CY"],358:["FI","AX"],359:["BG"],370:["LT"],371:["LV"],372:["EE"],373:["MD"],374:["AM"],375:["BY"],376:["AD"],377:["MC"],378:["SM"],379:["VA"],380:["UA"],381:["RS"],382:["ME"],385:["HR"],386:["SI"],387:["BA"],389:["MK"],420:["CZ"],421:["SK"],423:["LI"],500:["FK"],501:["BZ"],502:["GT"],503:["SV"],504:["HN"],505:["NI"],506:["CR"],507:["PA"],508:["PM"],509:["HT"],590:["GP","BL","MF"],591:["BO"],592:["GY"],593:["EC"],594:["GF"],595:["PY"],596:["MQ"],597:["SR"],598:["UY"],599:["CW","BQ"],670:["TL"],672:["NF"],673:["BN"],674:["NR"],675:["PG"],676:["TO"],677:["SB"],678:["VU"],679:["FJ"],680:["PW"],681:["WF"],682:["CK"],683:["NU"],685:["WS"],686:["KI"],687:["NC"],688:["TV"],689:["PF"],690:["TK"],691:["FM"],692:["MH"],850:["KP"],852:["HK"],853:["MO"],855:["KH"],856:["LA"],880:["BD"],886:["TW"],960:["MV"],961:["LB"],962:["JO"],963:["SY"],964:["IQ"],965:["KW"],966:["SA"],967:["YE"],968:["OM"],970:["PS"],971:["AE"],972:["IL"],973:["BH"],974:["QA"],975:["BT"],976:["MN"],977:["NP"],992:["TJ"],993:["TM"],994:["AZ"],995:["GE"],996:["KG"],998:["UZ"],1242:["BS"],1246:["BB"],1264:["AI"],1268:["AG"],1284:["VG"],1340:["VI"],1345:["KY"],1441:["BM"],1473:["GD"],1649:["TC"],1664:["MS"],1671:["GU"],1684:["AS"],1758:["LC"],1767:["DM"],1784:["VC"],1787:["PR"],1809:["DO"],1868:["TT"],1869:["KN"],1876:["JM"]}};
|
1 |
+
/*
|
2 |
+
intl-tel-input
|
3 |
+
version: 0.8.3
|
4 |
+
description: A jQuery plugin for entering international telephone numbers
|
5 |
+
repository: https://github.com/Bluefieldscom/intl-tel-input.git
|
6 |
+
license: MIT
|
7 |
+
author: Jack O'Connor (http://jackocnr.com)
|
8 |
+
*/
|
9 |
!function(a,b,c){function d(b,c){this.element=b,this.options=a.extend({},f,c),this._defaults=f,this._name=e,this.init()}var e="intlTelInput",f={preferredCountries:["IN","US"],americaMode:false};d.prototype={init:function(){var b=this,d=[];a.each(this.options.preferredCountries,function(b,c){var e=a.grep(intlTelInput.countries,function(a){return a.cca2==c});e.length&&d.push(e[0])});var e=a(this.element);""!==e.val()||this.options.americaMode||e.val("+1 "),e.wrap(a("<div>",{"class":"intl-number-input"}));var f=a("<div>",{"class":"flag-dropdown f16"}).insertBefore(e),g=a("<div>",{"class":"selected-flag"}).appendTo(f),h=d[0].cca2.toLowerCase(),i=a("<div>",{"class":"flag "+h}).appendTo(g);a("<div>",{"class":"down-arrow"}).appendTo(i);var j=a("<ul>",{"class":"country-list hide"}).appendTo(f);this.appendListItems(d,j),a("<li>",{"class":"divider"}).appendTo(j),this.appendListItems(intlTelInput.countries,j);var k=j.children(".country");k.first().addClass("active"),e.keyup(function(){var c=b.getDialCode(e.val())||"1",d=intlTelInput.countryCodes[c],f=!1;if(a.each(d,function(a,b){i.hasClass(b.toLowerCase())&&(f=!0)}),!f){var g=intlTelInput.countryCodes[c][0].toLowerCase();i.attr("class","flag "+g),k.removeClass("active"),k.children(".flag."+g).parent().addClass("active")}}),e.keyup(),g.click(function(d){if(d.stopPropagation(),j.hasClass("hide")){k.removeClass("highlight");var f=j.children(".active").addClass("highlight");b.scrollTo(f,j),j.removeClass("hide"),a(c).bind("keydown.intlTelInput",function(c){if(38==c.which||40==c.which){var d=j.children(".highlight").first(),f=38==c.which?d.prev():d.next();f&&(f.hasClass("divider")&&(f=38==c.which?f.prev():f.next()),k.removeClass("highlight"),f.addClass("highlight"),b.scrollTo(f,j))}else if(13==c.which){var h=j.children(".highlight").first();h.length&&b.selectCountry(h,g,e,j)}else if(9==c.which||27==c.which)b.closeDropdown(j);else if(c.which>=97&&c.which<=122||c.which>=65&&c.which<=90){var i=String.fromCharCode(c.which),l=k.filter(function(){return a(this).text().charAt(0)==i});if(l.length){var m,n=l.filter(".highlight").first();m=n&&n.next()&&n.next().text().charAt(0)==i?n.next():l.first(),k.removeClass("highlight"),m.addClass("highlight"),b.scrollTo(m,j)}}})}else b.closeDropdown(j)}),k.mouseover(function(){k.removeClass("highlight"),a(this).addClass("highlight")}),k.click(function(c){var d=a(c.currentTarget);b.selectCountry(d,g,e,j)}),a("html").click(function(c){a(c.target).closest(".country-list").length||b.closeDropdown(j)})},selectCountry:function(a,b,c,d){var e=a.attr("data-country-code").toLowerCase();b.find(".flag").attr("class","flag "+e);var f=this.updateNumber(c.val(),a.attr("data-dial-code"));c.val(f),this.closeDropdown(d),c.focus(),d.children(".country").removeClass("active highlight"),a.addClass("active")},closeDropdown:function(b){b.addClass("hide"),a(c).unbind("keydown.intlTelInput")},scrollTo:function(a,b){var c=b.height(),d=b.offset().top,e=d+c,f=a.outerHeight(),g=a.offset().top,h=g+f,i=g-d+b.scrollTop();if(d>g)b.scrollTop(i);else if(h>e){var j=c-f;b.scrollTop(i-j)}},updateNumber:function(a,b){var c,d="+"+this.getDialCode(a),e="+"+b;return d.length>1?(c=a.replace(d,e),a==d&&(c+=" ")):c=a.length&&"+"!=a.substr(0,1)?e+" "+a.trim():e+" ",this.options.americaMode&&"+1 "==c.substring(0,3)&&(c=c.substring(3)),c},getDialCode:function(a){var b=a.trim().split(" ")[0];if("+"==b.substring(0,1))for(var c=b.replace(/\D/g,"").substring(0,4),d=c.length;d>0;d--)if(c=c.substring(0,d),intlTelInput.countryCodes[c])return c;return""},appendListItems:function(b,c){var d="";a.each(b,function(a,b){d+="<li class='country' data-dial-code='"+b["calling-code"]+"' data-country-code='"+b.cca2+"'>",d+="<div class='flag "+b.cca2.toLowerCase()+"'></div>",d+="<span class='country-name'>"+b.name+"</span>",d+="<span class='dial-code'>+"+b["calling-code"]+"</span>",d+="</li>"}),c.append(d)}},a.fn[e]=function(b){return this.each(function(){a.data(this,"plugin_"+e)||a.data(this,"plugin_"+e,new d(this,b))})}}(jQuery,window,document);var intlTelInput={countries:[{name:"Afghanistan",cca2:"AF","calling-code":"93"},{name:"Albania",cca2:"AL","calling-code":"355"},{name:"Algeria",cca2:"DZ","calling-code":"213"},{name:"American Samoa",cca2:"AS","calling-code":"1684"},{name:"Andorra",cca2:"AD","calling-code":"376"},{name:"Angola",cca2:"AO","calling-code":"244"},{name:"Anguilla",cca2:"AI","calling-code":"1264"},{name:"Antigua and Barbuda",cca2:"AG","calling-code":"1268"},{name:"Argentina",cca2:"AR","calling-code":"54"},{name:"Armenia",cca2:"AM","calling-code":"374"},{name:"Aruba",cca2:"AW","calling-code":"297"},{name:"Australia",cca2:"AU","calling-code":"61"},{name:"Austria",cca2:"AT","calling-code":"43"},{name:"Azerbaijan",cca2:"AZ","calling-code":"994"},{name:"Bahamas",cca2:"BS","calling-code":"1242"},{name:"Bahrain",cca2:"BH","calling-code":"973"},{name:"Bangladesh",cca2:"BD","calling-code":"880"},{name:"Barbados",cca2:"BB","calling-code":"1246"},{name:"Belarus",cca2:"BY","calling-code":"375"},{name:"Belgium",cca2:"BE","calling-code":"32"},{name:"Belize",cca2:"BZ","calling-code":"501"},{name:"Benin",cca2:"BJ","calling-code":"229"},{name:"Bermuda",cca2:"BM","calling-code":"1441"},{name:"Bhutan",cca2:"BT","calling-code":"975"},{name:"Bolivia",cca2:"BO","calling-code":"591"},{name:"Bosnia and Herzegovina",cca2:"BA","calling-code":"387"},{name:"Botswana",cca2:"BW","calling-code":"267"},{name:"Brazil",cca2:"BR","calling-code":"55"},{name:"Brunei Darussalam",cca2:"BN","calling-code":"673"},{name:"Bulgaria",cca2:"BG","calling-code":"359"},{name:"Burkina Faso",cca2:"BF","calling-code":"226"},{name:"Burundi",cca2:"BI","calling-code":"257"},{name:"Cambodia",cca2:"KH","calling-code":"855"},{name:"Cameroon",cca2:"CM","calling-code":"237"},{name:"Canada",cca2:"CA","calling-code":"1"},{name:"Cape Verde",cca2:"CV","calling-code":"238"},{name:"Cayman Islands",cca2:"KY","calling-code":"1345"},{name:"Central African Republic",cca2:"CF","calling-code":"236"},{name:"Chad",cca2:"TD","calling-code":"235"},{name:"Chile",cca2:"CL","calling-code":"56"},{name:"China",cca2:"CN","calling-code":"86"},{name:"Colombia",cca2:"CO","calling-code":"57"},{name:"Comoros",cca2:"KM","calling-code":"269"},{name:"Congo (DRC)",cca2:"CD","calling-code":"243"},{name:"Congo (Republic)",cca2:"CG","calling-code":"242"},{name:"Cook Islands",cca2:"CK","calling-code":"682"},{name:"Costa Rica",cca2:"CR","calling-code":"506"},{name:"Côte d'Ivoire",cca2:"CI","calling-code":"225"},{name:"Croatia",cca2:"HR","calling-code":"385"},{name:"Cuba",cca2:"CU","calling-code":"53"},{name:"Cyprus",cca2:"CY","calling-code":"357"},{name:"Czech Republic",cca2:"CZ","calling-code":"420"},{name:"Denmark",cca2:"DK","calling-code":"45"},{name:"Djibouti",cca2:"DJ","calling-code":"253"},{name:"Dominica",cca2:"DM","calling-code":"1767"},{name:"Dominican Republic",cca2:"DO","calling-code":"1809"},{name:"Ecuador",cca2:"EC","calling-code":"593"},{name:"Egypt",cca2:"EG","calling-code":"20"},{name:"El Salvador",cca2:"SV","calling-code":"503"},{name:"Equatorial Guinea",cca2:"GQ","calling-code":"240"},{name:"Eritrea",cca2:"ER","calling-code":"291"},{name:"Estonia",cca2:"EE","calling-code":"372"},{name:"Ethiopia",cca2:"ET","calling-code":"251"},{name:"Faroe Islands",cca2:"FO","calling-code":"298"},{name:"Fiji",cca2:"FJ","calling-code":"679"},{name:"Finland",cca2:"FI","calling-code":"358"},{name:"France",cca2:"FR","calling-code":"33"},{name:"French Polynesia",cca2:"PF","calling-code":"689"},{name:"Gabon",cca2:"GA","calling-code":"241"},{name:"Gambia",cca2:"GM","calling-code":"220"},{name:"Georgia",cca2:"GE","calling-code":"995"},{name:"Germany",cca2:"DE","calling-code":"49"},{name:"Ghana",cca2:"GH","calling-code":"233"},{name:"Gibraltar",cca2:"GI","calling-code":"350"},{name:"Greece",cca2:"GR","calling-code":"30"},{name:"Greenland",cca2:"GL","calling-code":"299"},{name:"Grenada",cca2:"GD","calling-code":"1473"},{name:"Guadeloupe",cca2:"GP","calling-code":"590"},{name:"Guam",cca2:"GU","calling-code":"1671"},{name:"Guatemala",cca2:"GT","calling-code":"502"},{name:"Guernsey",cca2:"GG","calling-code":"44"},{name:"Guinea",cca2:"GN","calling-code":"224"},{name:"Guinea-Bissau",cca2:"GW","calling-code":"245"},{name:"Guyana",cca2:"GY","calling-code":"592"},{name:"Haiti",cca2:"HT","calling-code":"509"},{name:"Honduras",cca2:"HN","calling-code":"504"},{name:"Hong Kong",cca2:"HK","calling-code":"852"},{name:"Hungary",cca2:"HU","calling-code":"36"},{name:"Iceland",cca2:"IS","calling-code":"354"},{name:"India",cca2:"IN","calling-code":"91"},{name:"Indonesia",cca2:"ID","calling-code":"62"},{name:"Iran",cca2:"IR","calling-code":"98"},{name:"Iraq",cca2:"IQ","calling-code":"964"},{name:"Ireland",cca2:"IE","calling-code":"353"},{name:"Isle of Man",cca2:"IM","calling-code":"44"},{name:"Israel",cca2:"IL","calling-code":"972"},{name:"Italy",cca2:"IT","calling-code":"39"},{name:"Jamaica",cca2:"JM","calling-code":"1876"},{name:"Japan",cca2:"JP","calling-code":"81"},{name:"Jersey",cca2:"JE","calling-code":"44"},{name:"Jordan",cca2:"JO","calling-code":"962"},{name:"Kazakhstan",cca2:"KZ","calling-code":"7"},{name:"Kenya",cca2:"KE","calling-code":"254"},{name:"Kiribati",cca2:"KI","calling-code":"686"},{name:"Kuwait",cca2:"KW","calling-code":"965"},{name:"Kyrgyzstan",cca2:"KG","calling-code":"996"},{name:"Laos",cca2:"LA","calling-code":"856"},{name:"Latvia",cca2:"LV","calling-code":"371"},{name:"Lebanon",cca2:"LB","calling-code":"961"},{name:"Lesotho",cca2:"LS","calling-code":"266"},{name:"Liberia",cca2:"LR","calling-code":"231"},{name:"Libya",cca2:"LY","calling-code":"218"},{name:"Liechtenstein",cca2:"LI","calling-code":"423"},{name:"Lithuania",cca2:"LT","calling-code":"370"},{name:"Luxembourg",cca2:"LU","calling-code":"352"},{name:"Macao",cca2:"MO","calling-code":"853"},{name:"Macedonia",cca2:"MK","calling-code":"389"},{name:"Madagascar",cca2:"MG","calling-code":"261"},{name:"Malawi",cca2:"MW","calling-code":"265"},{name:"Malaysia",cca2:"MY","calling-code":"60"},{name:"Maldives",cca2:"MV","calling-code":"960"},{name:"Mali",cca2:"ML","calling-code":"223"},{name:"Malta",cca2:"MT","calling-code":"356"},{name:"Marshall Islands",cca2:"MH","calling-code":"692"},{name:"Martinique",cca2:"MQ","calling-code":"596"},{name:"Mauritania",cca2:"MR","calling-code":"222"},{name:"Mauritius",cca2:"MU","calling-code":"230"},{name:"Mexico",cca2:"MX","calling-code":"52"},{name:"Micronesia",cca2:"FM","calling-code":"691"},{name:"Moldova",cca2:"MD","calling-code":"373"},{name:"Monaco",cca2:"MC","calling-code":"377"},{name:"Mongolia",cca2:"MN","calling-code":"976"},{name:"Montenegro",cca2:"ME","calling-code":"382"},{name:"Montserrat",cca2:"MS","calling-code":"1664"},{name:"Morocco",cca2:"MA","calling-code":"212"},{name:"Mozambique",cca2:"MZ","calling-code":"258"},{name:"Myanmar (Burma)",cca2:"MM","calling-code":"95"},{name:"Namibia",cca2:"NA","calling-code":"264"},{name:"Nauru",cca2:"NR","calling-code":"674"},{name:"Nepal",cca2:"NP","calling-code":"977"},{name:"Netherlands",cca2:"NL","calling-code":"31"},{name:"New Caledonia",cca2:"NC","calling-code":"687"},{name:"New Zealand",cca2:"NZ","calling-code":"64"},{name:"Nicaragua",cca2:"NI","calling-code":"505"},{name:"Niger",cca2:"NE","calling-code":"227"},{name:"Nigeria",cca2:"NG","calling-code":"234"},{name:"North Korea",cca2:"KP","calling-code":"850"},{name:"Norway",cca2:"NO","calling-code":"47"},{name:"Oman",cca2:"OM","calling-code":"968"},{name:"Pakistan",cca2:"PK","calling-code":"92"},{name:"Palau",cca2:"PW","calling-code":"680"},{name:"Palestinian Territory",cca2:"PS","calling-code":"970"},{name:"Panama",cca2:"PA","calling-code":"507"},{name:"Papua New Guinea",cca2:"PG","calling-code":"675"},{name:"Paraguay",cca2:"PY","calling-code":"595"},{name:"Peru",cca2:"PE","calling-code":"51"},{name:"Philippines",cca2:"PH","calling-code":"63"},{name:"Poland",cca2:"PL","calling-code":"48"},{name:"Portugal",cca2:"PT","calling-code":"351"},{name:"Puerto Rico",cca2:"PR","calling-code":"1787"},{name:"Qatar",cca2:"QA","calling-code":"974"},{name:"Réunion",cca2:"RE","calling-code":"262"},{name:"Romania",cca2:"RO","calling-code":"40"},{name:"Russian Federation",cca2:"RU","calling-code":"7"},{name:"Rwanda",cca2:"RW","calling-code":"250"},{name:"Saint Kitts and Nevis",cca2:"KN","calling-code":"1869"},{name:"Saint Lucia",cca2:"LC","calling-code":"1758"},{name:"Saint Vincent and the Grenadines",cca2:"VC","calling-code":"1784"},{name:"Samoa",cca2:"WS","calling-code":"685"},{name:"San Marino",cca2:"SM","calling-code":"378"},{name:"São Tomé and Príncipe",cca2:"ST","calling-code":"239"},{name:"Saudi Arabia",cca2:"SA","calling-code":"966"},{name:"Senegal",cca2:"SN","calling-code":"221"},{name:"Serbia",cca2:"RS","calling-code":"381"},{name:"Seychelles",cca2:"SC","calling-code":"248"},{name:"Sierra Leone",cca2:"SL","calling-code":"232"},{name:"Singapore",cca2:"SG","calling-code":"65"},{name:"Slovakia",cca2:"SK","calling-code":"421"},{name:"Slovenia",cca2:"SI","calling-code":"386"},{name:"Solomon Islands",cca2:"SB","calling-code":"677"},{name:"Somalia",cca2:"SO","calling-code":"252"},{name:"South Africa",cca2:"ZA","calling-code":"27"},{name:"South Korea",cca2:"KR","calling-code":"82"},{name:"Spain",cca2:"ES","calling-code":"34"},{name:"Sri Lanka",cca2:"LK","calling-code":"94"},{name:"Sudan",cca2:"SD","calling-code":"249"},{name:"Suriname",cca2:"SR","calling-code":"597"},{name:"Swaziland",cca2:"SZ","calling-code":"268"},{name:"Sweden",cca2:"SE","calling-code":"46"},{name:"Switzerland",cca2:"CH","calling-code":"41"},{name:"Syrian Arab Republic",cca2:"SY","calling-code":"963"},{name:"Taiwan, Province of China",cca2:"TW","calling-code":"886"},{name:"Tajikistan",cca2:"TJ","calling-code":"992"},{name:"Tanzania",cca2:"TZ","calling-code":"255"},{name:"Thailand",cca2:"TH","calling-code":"66"},{name:"Timor-Leste",cca2:"TL","calling-code":"670"},{name:"Togo",cca2:"TG","calling-code":"228"},{name:"Tonga",cca2:"TO","calling-code":"676"},{name:"Trinidad and Tobago",cca2:"TT","calling-code":"1868"},{name:"Tunisia",cca2:"TN","calling-code":"216"},{name:"Turkey",cca2:"TR","calling-code":"90"},{name:"Turkmenistan",cca2:"TM","calling-code":"993"},{name:"Turks and Caicos Islands",cca2:"TC","calling-code":"1649"},{name:"Tuvalu",cca2:"TV","calling-code":"688"},{name:"Uganda",cca2:"UG","calling-code":"256"},{name:"Ukraine",cca2:"UA","calling-code":"380"},{name:"United Arab Emirates",cca2:"AE","calling-code":"971"},{name:"United Kingdom",cca2:"GB","calling-code":"44"},{name:"United States",cca2:"US","calling-code":"1"},{name:"Uruguay",cca2:"UY","calling-code":"598"},{name:"Uzbekistan",cca2:"UZ","calling-code":"998"},{name:"Vanuatu",cca2:"VU","calling-code":"678"},{name:"Vatican City",cca2:"VA","calling-code":"379"},{name:"Venezuela",cca2:"VE","calling-code":"58"},{name:"Viet Nam",cca2:"VN","calling-code":"84"},{name:"Virgin Islands (British)",cca2:"VG","calling-code":"1284"},{name:"Virgin Islands (U.S.)",cca2:"VI","calling-code":"1340"},{name:"Western Sahara",cca2:"EH","calling-code":"212"},{name:"Yemen",cca2:"YE","calling-code":"967"},{name:"Zambia",cca2:"ZM","calling-code":"260"},{name:"Zimbabwe",cca2:"ZW","calling-code":"263"}],countryCodes:{1:["US"],7:["RU","KZ"],20:["EG"],27:["ZA"],30:["GR"],31:["NL"],32:["BE"],33:["FR"],34:["ES"],36:["HU"],39:["IT"],40:["RO"],41:["CH"],43:["AT"],44:["GB","GG","IM","JE"],45:["DK"],46:["SE"],47:["NO","SJ"],48:["PL"],49:["DE"],51:["PE"],52:["MX"],53:["CU"],54:["AR"],55:["BR"],56:["CL"],57:["CO"],58:["VE"],60:["MY"],61:["AU","CC","CX"],62:["ID"],63:["PH"],64:["NZ"],65:["SG"],66:["TH"],81:["JP"],82:["KR"],84:["VN"],86:["CN"],90:["TR"],91:["IN"],92:["PK"],93:["AF"],94:["LK"],95:["MM"],98:["IR"],211:["SS"],212:["MA","EH"],213:["DZ"],216:["TN"],218:["LY"],220:["GM"],221:["SN"],222:["MR"],223:["ML"],224:["GN"],225:["CI"],226:["BF"],227:["NE"],228:["TG"],229:["BJ"],230:["MU"],231:["LR"],232:["SL"],233:["GH"],234:["NG"],235:["TD"],236:["CF"],237:["CM"],238:["CV"],239:["ST"],240:["GQ"],241:["GA"],242:["CG"],243:["CD"],244:["AO"],245:["GW"],246:["IO"],247:["AC"],248:["SC"],249:["SD"],250:["RW"],251:["ET"],252:["SO"],253:["DJ"],254:["KE"],255:["TZ"],256:["UG"],257:["BI"],258:["MZ"],260:["ZM"],261:["MG"],262:["RE","YT"],263:["ZW"],264:["NA"],265:["MW"],266:["LS"],267:["BW"],268:["SZ"],269:["KM"],290:["SH"],291:["ER"],297:["AW"],298:["FO"],299:["GL"],350:["GI"],351:["PT"],352:["LU"],353:["IE"],354:["IS"],355:["AL"],356:["MT"],357:["CY"],358:["FI","AX"],359:["BG"],370:["LT"],371:["LV"],372:["EE"],373:["MD"],374:["AM"],375:["BY"],376:["AD"],377:["MC"],378:["SM"],379:["VA"],380:["UA"],381:["RS"],382:["ME"],385:["HR"],386:["SI"],387:["BA"],389:["MK"],420:["CZ"],421:["SK"],423:["LI"],500:["FK"],501:["BZ"],502:["GT"],503:["SV"],504:["HN"],505:["NI"],506:["CR"],507:["PA"],508:["PM"],509:["HT"],590:["GP","BL","MF"],591:["BO"],592:["GY"],593:["EC"],594:["GF"],595:["PY"],596:["MQ"],597:["SR"],598:["UY"],599:["CW","BQ"],670:["TL"],672:["NF"],673:["BN"],674:["NR"],675:["PG"],676:["TO"],677:["SB"],678:["VU"],679:["FJ"],680:["PW"],681:["WF"],682:["CK"],683:["NU"],685:["WS"],686:["KI"],687:["NC"],688:["TV"],689:["PF"],690:["TK"],691:["FM"],692:["MH"],850:["KP"],852:["HK"],853:["MO"],855:["KH"],856:["LA"],880:["BD"],886:["TW"],960:["MV"],961:["LB"],962:["JO"],963:["SY"],964:["IQ"],965:["KW"],966:["SA"],967:["YE"],968:["OM"],970:["PS"],971:["AE"],972:["IL"],973:["BH"],974:["QA"],975:["BT"],976:["MN"],977:["NP"],992:["TJ"],993:["TM"],994:["AZ"],995:["GE"],996:["KG"],998:["UZ"],1242:["BS"],1246:["BB"],1264:["AI"],1268:["AG"],1284:["VG"],1340:["VI"],1345:["KY"],1441:["BM"],1473:["GD"],1649:["TC"],1664:["MS"],1671:["GU"],1684:["AS"],1758:["LC"],1767:["DM"],1784:["VC"],1787:["PR"],1809:["DO"],1868:["TT"],1869:["KN"],1876:["JM"]}};
|
includes/js/pointers.js
CHANGED
@@ -171,7 +171,7 @@
|
|
171 |
scrollTop: $pointer.offset().top-120
|
172 |
}, 300, function() { // when scroll complete
|
173 |
|
174 |
-
|
175 |
MAP.last_pointer = $pointer;
|
176 |
|
177 |
var $widget = $pointer.pointer('widget');
|
@@ -427,7 +427,7 @@
|
|
427 |
$('html, body').animate({ // scroll page to pointer
|
428 |
scrollTop: $pointer.offset().top+30
|
429 |
}, 100, function() { // when scroll complete
|
430 |
-
|
431 |
MAP.last_pointer = $pointer;
|
432 |
var $widget = $pointer.pointer('widget');
|
433 |
MAP.setNext( $widget, MAP.current_pointer.data );
|
171 |
scrollTop: $pointer.offset().top-120
|
172 |
}, 300, function() { // when scroll complete
|
173 |
|
174 |
+
|
175 |
MAP.last_pointer = $pointer;
|
176 |
|
177 |
var $widget = $pointer.pointer('widget');
|
427 |
$('html, body').animate({ // scroll page to pointer
|
428 |
scrollTop: $pointer.offset().top+30
|
429 |
}, 100, function() { // when scroll complete
|
430 |
+
|
431 |
MAP.last_pointer = $pointer;
|
432 |
var $widget = $pointer.pointer('widget');
|
433 |
MAP.setNext( $widget, MAP.current_pointer.data );
|
includes/js/rba/js/jquery-1.9.1.js
CHANGED
@@ -1,182 +1,182 @@
|
|
1 |
-
(function(r,m){function ya(a){var b=a.length,d=c.type(a);return c.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===d||"function"!==d&&(0===b||"number"===typeof b&&0<b&&b-1 in a)}function Rb(a){var b=Ua[a]={};c.each(a.match(O)||[],function(a,c){b[c]=!0});return b}function Va(a,b,d,e){if(c.acceptData(a)){var f=c.expando,g="string"===typeof b,h=a.nodeType,k=h?c.cache:a,l=h?a[f]:a[f]&&f;if(l&&k[l]&&(e||k[l].data)||!g||d!==m){l||(h?a[f]=l=I.pop()||c.guid++:l=f);k[l]||(k[l]={},h||(k[l].toJSON=c.noop));if("object"===
|
2 |
-
typeof b||"function"===typeof b)e?k[l]=c.extend(k[l],b):k[l].data=c.extend(k[l].data,b);a=k[l];e||(a.data||(a.data={}),a=a.data);d!==m&&(a[c.camelCase(b)]=d);g?(d=a[b],null==d&&(d=a[c.camelCase(b)])):d=a;return d}}}function Wa(a,b,d){if(c.acceptData(a)){var e,f,g,h=a.nodeType,k=h?c.cache:a,l=h?a[c.expando]:c.expando;if(k[l]){if(b&&(g=d?k[l]:k[l].data)){c.isArray(b)?b=b.concat(c.map(b,c.camelCase)):b in g?b=[b]:(b=c.camelCase(b),b=b in g?[b]:b.split(" "));e=0;for(f=b.length;e<f;e++)delete g[b[e]];
|
3 |
-
if(!(d?za:c.isEmptyObject)(g))return}if(!d&&(delete k[l].data,!za(k[l])))return;h?c.cleanData([a],!0):c.support.deleteExpando||k!=k.window?delete k[l]:k[l]=null}}}function Xa(a,b,d){if(d===m&&1===a.nodeType)if(d="data-"+b.replace(Sb,"-$1").toLowerCase(),d=a.getAttribute(d),"string"===typeof d){try{d="true"===d?!0:"false"===d?!1:"null"===d?null:+d+""===d?+d:Tb.test(d)?c.parseJSON(d):d}catch(e){}c.data(a,b,d)}else d=m;return d}function za(a){for(var b in a)if(("data"!==b||!c.isEmptyObject(a[b]))&&"toJSON"!==
|
4 |
-
b)return!1;return!0}function ba(){return!0}function R(){return!1}function Ya(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}function Za(a,b,d){b=b||0;if(c.isFunction(b))return c.grep(a,function(a,c){return!!b.call(a,c,a)===d});if(b.nodeType)return c.grep(a,function(a){return a===b===d});if("string"===typeof b){var e=c.grep(a,function(a){return 1===a.nodeType});if(Ub.test(b))return c.filter(b,e,!d);b=c.filter(b,e)}return c.grep(a,function(a){return 0<=c.inArray(a,b)===d})}function $a(a){var b=ab.split("|");
|
5 |
-
a=a.createDocumentFragment();if(a.createElement)for(;b.length;)a.createElement(b.pop());return a}function Vb(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function bb(a){var b=a.getAttributeNode("type");a.type=(b&&b.specified)+"/"+a.type;return a}function cb(a){var b=Wb.exec(a.type);b?a.type=b[1]:a.removeAttribute("type");return a}function Aa(a,b){for(var d,e=0;null!=(d=a[e]);e++)c._data(d,"globalEval",!b||c._data(b[e],"globalEval"))}function db(a,b){if(1===
|
6 |
-
b.nodeType&&c.hasData(a)){var d,e,f;e=c._data(a);var g=c._data(b,e),h=e.events;if(h)for(d in delete g.handle,g.events={},h)for(e=0,f=h[d].length;e<f;e++)c.event.add(b,d,h[d][e]);g.data&&(g.data=c.extend({},g.data))}}function B(a,b){var d,e,f=0,g=typeof a.getElementsByTagName!==z?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==z?a.querySelectorAll(b||"*"):m;if(!g)for(g=[],d=a.childNodes||a;null!=(e=d[f]);f++)!b||c.nodeName(e,b)?g.push(e):c.merge(g,B(e,b));return b===m||b&&c.nodeName(a,b)?
|
7 |
-
c.merge([a],g):g}function Xb(a){Ba.test(a.type)&&(a.defaultChecked=a.checked)}function eb(a,b){if(b in a)return b;for(var c=b.charAt(0).toUpperCase()+b.slice(1),e=b,f=fb.length;f--;)if(b=fb[f]+c,b in a)return b;return e}function fa(a,b){a=b||a;return"none"===c.css(a,"display")||!c.contains(a.ownerDocument,a)}function gb(a,b){for(var d,e,f,g=[],h=0,k=a.length;h<k;h++)e=a[h],e.style&&(g[h]=c._data(e,"olddisplay"),d=e.style.display,b?(g[h]||"none"!==d||(e.style.display=""),""===e.style.display&&fa(e)&&
|
8 |
-
(g[h]=c._data(e,"olddisplay",hb(e.nodeName)))):g[h]||(f=fa(e),(d&&"none"!==d||!f)&&c._data(e,"olddisplay",f?d:c.css(e,"display"))));for(h=0;h<k;h++)e=a[h],!e.style||b&&"none"!==e.style.display&&""!==e.style.display||(e.style.display=b?g[h]||"":"none");return a}function ib(a,b,c){return(a=Yb.exec(b))?Math.max(0,a[1]-(c||0))+(a[2]||"px"):b}function jb(a,b,d,e,f){b=d===(e?"border":"content")?4:"width"===b?1:0;for(var g=0;4>b;b+=2)"margin"===d&&(g+=c.css(a,d+S[b],!0,f)),e?("content"===d&&(g-=c.css(a,
|
9 |
-
"padding"+S[b],!0,f)),"margin"!==d&&(g-=c.css(a,"border"+S[b]+"Width",!0,f))):(g+=c.css(a,"padding"+S[b],!0,f),"padding"!==d&&(g+=c.css(a,"border"+S[b]+"Width",!0,f)));return g}function kb(a,b,d){var e=!0,f="width"===b?a.offsetWidth:a.offsetHeight,g=T(a),h=c.support.boxSizing&&"border-box"===c.css(a,"boxSizing",!1,g);if(0>=f||null==f){f=U(a,b,g);if(0>f||null==f)f=a.style[b];if(ka.test(f))return f;e=h&&(c.support.boxSizingReliable||f===a.style[b]);f=parseFloat(f)||0}return f+jb(a,b,d||(h?"border":
|
10 |
-
"content"),e,g)+"px"}function hb(a){var b=p,d=lb[a];d||(d=mb(a,b),"none"!==d&&d||(ga=(ga||c("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(b.documentElement),b=(ga[0].contentWindow||ga[0].contentDocument).document,b.write("<!doctype html><html><body>"),b.close(),d=mb(a,b),ga.detach()),lb[a]=d);return d}function mb(a,b){var d=c(b.createElement(a)).appendTo(b.body),e=c.css(d[0],"display");d.remove();return e}function Ca(a,b,d,e){var f;if(c.isArray(b))c.each(b,
|
11 |
-
function(b,c){d||Zb.test(a)?e(a,c):Ca(a+"["+("object"===typeof c?b:"")+"]",c,d,e)});else if(d||"object"!==c.type(b))e(a,b);else for(f in b)Ca(a+"["+f+"]",b[f],d,e)}function nb(a){return function(b,d){"string"!==typeof b&&(d=b,b="*");var e,f=0,g=b.toLowerCase().match(O)||[];if(c.isFunction(d))for(;e=g[f++];)"+"===e[0]?(e=e.slice(1)||"*",(a[e]=a[e]||[]).unshift(d)):(a[e]=a[e]||[]).push(d)}}function ob(a,b,d,e){function f(k){var l;g[k]=!0;c.each(a[k]||[],function(a,c){var k=c(b,d,e);if("string"===typeof k&&
|
12 |
-
!h&&!g[k])return b.dataTypes.unshift(k),f(k),!1;if(h)return!(l=k)});return l}var g={},h=a===Da;return f(b.dataTypes[0])||!g["*"]&&f("*")}function Ea(a,b){var d,e,f=c.ajaxSettings.flatOptions||{};for(e in b)b[e]!==m&&((f[e]?a:d||(d={}))[e]=b[e]);d&&c.extend(!0,a,d);return a}function pb(){try{return new r.XMLHttpRequest}catch(a){}}function qb(){setTimeout(function(){Y=m});return Y=c.now()}function $b(a,b){c.each(b,function(b,c){for(var f=(ha[b]||[]).concat(ha["*"]),g=0,h=f.length;g<h&&!f[g].call(a,
|
13 |
-
b,c);g++);})}function rb(a,b,d){var e,f=0,g=la.length,h=c.Deferred().always(function(){delete k.elem}),k=function(){if(e)return!1;for(var b=Y||qb(),b=Math.max(0,l.startTime+l.duration-b),c=1-(b/l.duration||0),d=0,f=l.tweens.length;d<f;d++)l.tweens[d].run(c);h.notifyWith(a,[l,c,b]);if(1>c&&f)return b;h.resolveWith(a,[l]);return!1},l=h.promise({elem:a,props:c.extend({},b),opts:c.extend(!0,{specialEasing:{}},d),originalProperties:b,originalOptions:d,startTime:Y||qb(),duration:d.duration,tweens:[],createTween:function(b,
|
14 |
-
d){var e=c.Tween(a,l.opts,b,d,l.opts.specialEasing[b]||l.opts.easing);l.tweens.push(e);return e},stop:function(b){var c=0,d=b?l.tweens.length:0;if(e)return this;for(e=!0;c<d;c++)l.tweens[c].run(1);b?h.resolveWith(a,[l,b]):h.rejectWith(a,[l,b]);return this}});d=l.props;for(ac(d,l.opts.specialEasing);f<g;f++)if(b=la[f].call(l,a,d,l.opts))return b;$b(l,d);c.isFunction(l.opts.start)&&l.opts.start.call(a,l);c.fx.timer(c.extend(k,{elem:a,anim:l,queue:l.opts.queue}));return l.progress(l.opts.progress).done(l.opts.done,
|
15 |
-
l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function ac(a,b){var d,e,f,g,h;for(f in a)if(e=c.camelCase(f),g=b[e],d=a[f],c.isArray(d)&&(g=d[1],d=a[f]=d[0]),f!==e&&(a[e]=d,delete a[f]),(h=c.cssHooks[e])&&"expand"in h)for(f in d=h.expand(d),delete a[e],d)f in a||(a[f]=d[f],b[f]=g);else b[e]=g}function A(a,b,c,e,f){return new A.prototype.init(a,b,c,e,f)}function ma(a,b){var c,e={height:a},f=0;for(b=b?1:0;4>f;f+=2-b)c=S[f],e["margin"+c]=e["padding"+c]=a;b&&(e.opacity=e.width=a);return e}function sb(a){return c.isWindow(a)?
|
16 |
-
a:9===a.nodeType?a.defaultView||a.parentWindow:!1}var na,tb,z=typeof m,p=r.document,bc=r.location,cc=r.jQuery,dc=r.$,oa={},I=[],ub=I.concat,Fa=I.push,C=I.slice,vb=I.indexOf,ec=oa.toString,ia=oa.hasOwnProperty,Ga="1.9.1".trim,c=function(a,b){return new c.fn.init(a,b,tb)},pa=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,O=/\S+/g,fc=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,gc=/^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,wb=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,hc=/^[\],:{}\s]*$/,ic=/(?:^|:|,)(?:\s*\[)+/g,jc=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,
|
17 |
-
kc=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,lc=/^-ms-/,mc=/-([\da-z])/gi,nc=function(a,b){return b.toUpperCase()},L=function(a){if(p.addEventListener||"load"===a.type||"complete"===p.readyState)xb(),c.ready()},xb=function(){p.addEventListener?(p.removeEventListener("DOMContentLoaded",L,!1),r.removeEventListener("load",L,!1)):(p.detachEvent("onreadystatechange",L),r.detachEvent("onload",L))};c.fn=c.prototype={jquery:"1.9.1",constructor:c,init:function(a,b,d){var e;if(!a)return this;
|
18 |
-
if("string"===typeof a){e="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&3<=a.length?[null,a,null]:gc.exec(a);if(!e||!e[1]&&b)return!b||b.jquery?(b||d).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof c?b[0]:b,c.merge(this,c.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:p,!0)),wb.test(e[1])&&c.isPlainObject(b))for(e in b)if(c.isFunction(this[e]))this[e](b[e]);else this.attr(e,b[e])}else{if((b=p.getElementById(e[2]))&&b.parentNode){if(b.id!==e[2])return d.find(a);this.length=1;this[0]=
|
19 |
-
b}this.context=p;this.selector=a}return this}if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(c.isFunction(a))return d.ready(a);a.selector!==m&&(this.selector=a.selector,this.context=a.context);return c.makeArray(a,this)},selector:"",length:0,size:function(){return this.length},toArray:function(){return C.call(this)},get:function(a){return null==a?this.toArray():0>a?this[this.length+a]:this[a]},pushStack:function(a){a=c.merge(this.constructor(),a);a.prevObject=this;a.context=this.context;
|
20 |
-
return a},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.ready.promise().done(a);return this},slice:function(){return this.pushStack(C.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length;a=+a+(0>a?b:0);return this.pushStack(0<=a&&a<b?[this[a]]:[])},map:function(a){return this.pushStack(c.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:Fa,
|
21 |
-
sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a,b,d,e,f,g=arguments[0]||{},h=1,k=arguments.length,l=!1;"boolean"===typeof g&&(l=g,g=arguments[1]||{},h=2);"object"===typeof g||c.isFunction(g)||(g={});k===h&&(g=this,--h);for(;h<k;h++)if(null!=(f=arguments[h]))for(e in f)a=g[e],d=f[e],g!==d&&(l&&d&&(c.isPlainObject(d)||(b=c.isArray(d)))?(b?(b=!1,a=a&&c.isArray(a)?a:[]):a=a&&c.isPlainObject(a)?a:{},g[e]=c.extend(l,a,d)):d!==m&&(g[e]=d));return g};c.extend({noConflict:function(a){r.$===
|
22 |
-
c&&(r.$=dc);a&&r.jQuery===c&&(r.jQuery=cc);return c},isReady:!1,readyWait:1,holdReady:function(a){a?c.readyWait++:c.ready(!0)},ready:function(a){if(!0===a?!--c.readyWait:!c.isReady){if(!p.body)return setTimeout(c.ready);c.isReady=!0;!0!==a&&0<--c.readyWait||(na.resolveWith(p,[c]),c.fn.trigger&&c(p).trigger("ready").off("ready"))}},isFunction:function(a){return"function"===c.type(a)},isArray:Array.isArray||function(a){return"array"===c.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&
|
23 |
-
isFinite(a)},type:function(a){return null==a?String(a):"object"===typeof a||"function"===typeof a?oa[ec.call(a)]||"object":typeof a},isPlainObject:function(a){if(!a||"object"!==c.type(a)||a.nodeType||c.isWindow(a))return!1;try{if(a.constructor&&!ia.call(a,"constructor")&&!ia.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(d){return!1}for(var b in a);return b===m||ia.call(a,b)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw Error(a);},parseHTML:function(a,
|
24 |
-
b,d){if(!a||"string"!==typeof a)return null;"boolean"===typeof b&&(d=b,b=!1);b=b||p;var e=wb.exec(a);d=!d&&[];if(e)return[b.createElement(e[1])];e=c.buildFragment([a],b,d);d&&c(d).remove();return c.merge([],e.childNodes)},parseJSON:function(a){if(r.JSON&&r.JSON.parse)return r.JSON.parse(a);if(null===a)return a;if("string"===typeof a&&(a=c.trim(a))&&hc.test(a.replace(jc,"@").replace(kc,"]").replace(ic,"")))return(new Function("return "+a))();c.error("Invalid JSON: "+a)},parseXML:function(a){var b,
|
25 |
-
d;if(!a||"string"!==typeof a)return null;try{r.DOMParser?(d=new DOMParser,b=d.parseFromString(a,"text/xml")):(b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a))}catch(e){b=m}b&&b.documentElement&&!b.getElementsByTagName("parsererror").length||c.error("Invalid XML: "+a);return b},noop:function(){},globalEval:function(a){a&&c.trim(a)&&(r.execScript||function(a){r.eval.call(r,a)})(a)},camelCase:function(a){return a.replace(lc,"ms-").replace(mc,nc)},nodeName:function(a,b){return a.nodeName&&
|
26 |
-
a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var e,f=0,g=a.length;e=ya(a);if(c)if(e)for(;f<g&&(e=b.apply(a[f],c),!1!==e);f++);else for(f in a){if(e=b.apply(a[f],c),!1===e)break}else if(e)for(;f<g&&(e=b.call(a[f],f,a[f]),!1!==e);f++);else for(f in a)if(e=b.call(a[f],f,a[f]),!1===e)break;return a},trim:Ga&&!Ga.call("\ufeff\u00a0")?function(a){return null==a?"":Ga.call(a)}:function(a){return null==a?"":(a+"").replace(fc,"")},makeArray:function(a,b){var d=b||[];null!=a&&(ya(Object(a))?
|
27 |
-
c.merge(d,"string"===typeof a?[a]:a):Fa.call(d,a));return d},inArray:function(a,b,c){var e;if(b){if(vb)return vb.call(b,a,c);e=b.length;for(c=c?0>c?Math.max(0,e+c):c:0;c<e;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=b.length,e=a.length,f=0;if("number"===typeof c)for(;f<c;f++)a[e++]=b[f];else for(;b[f]!==m;)a[e++]=b[f++];a.length=e;return a},grep:function(a,b,c){var e,f=[],g=0,h=a.length;for(c=!!c;g<h;g++)e=!!b(a[g],g),c!==e&&f.push(a[g]);return f},map:function(a,b,c){var e,
|
28 |
-
f=0,g=a.length,h=[];if(ya(a))for(;f<g;f++)e=b(a[f],f,c),null!=e&&(h[h.length]=e);else for(f in a)e=b(a[f],f,c),null!=e&&(h[h.length]=e);return ub.apply([],h)},guid:1,proxy:function(a,b){var d,e;"string"===typeof b&&(e=a[b],b=a,a=e);if(!c.isFunction(a))return m;d=C.call(arguments,2);e=function(){return a.apply(b||this,d.concat(C.call(arguments)))};e.guid=a.guid=a.guid||c.guid++;return e},access:function(a,b,d,e,f,g,h){var k=0,l=a.length,u=null==d;if("object"===c.type(d))for(k in f=!0,d)c.access(a,
|
29 |
-
b,k,d[k],!0,g,h);else if(e!==m&&(f=!0,c.isFunction(e)||(h=!0),u&&(h?(b.call(a,e),b=null):(u=b,b=function(a,b,d){return u.call(c(a),d)})),b))for(;k<l;k++)b(a[k],d,h?e:e.call(a[k],k,b(a[k],d)));return f?a:u?b.call(a):l?b(a[0],d):g},now:function(){return(new Date).getTime()}});c.ready.promise=function(a){if(!na)if(na=c.Deferred(),"complete"===p.readyState)setTimeout(c.ready);else if(p.addEventListener)p.addEventListener("DOMContentLoaded",L,!1),r.addEventListener("load",L,!1);else{p.attachEvent("onreadystatechange",
|
30 |
-
L);r.attachEvent("onload",L);var b=!1;try{b=null==r.frameElement&&p.documentElement}catch(d){}b&&b.doScroll&&function e(){if(!c.isReady){try{b.doScroll("left")}catch(a){return setTimeout(e,50)}xb();c.ready()}}()}return na.promise(a)};c.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){oa["[object "+b+"]"]=b.toLowerCase()});tb=c(p);var Ua={};c.Callbacks=function(a){a="string"===typeof a?Ua[a]||Rb(a):c.extend({},a);var b,d,e,f,g,h,k=[],l=!a.once&&[],u=function(c){d=
|
31 |
-
a.memory&&c;e=!0;g=h||0;h=0;f=k.length;for(b=!0;k&&g<f;g++)if(!1===k[g].apply(c[0],c[1])&&a.stopOnFalse){d=!1;break}b=!1;k&&(l?l.length&&u(l.shift()):d?k=[]:t.disable())},t={add:function(){if(k){var e=k.length;(function oc(b){c.each(b,function(b,d){var e=c.type(d);"function"===e?a.unique&&t.has(d)||k.push(d):d&&d.length&&"string"!==e&&oc(d)})})(arguments);b?f=k.length:d&&(h=e,u(d))}return this},remove:function(){k&&c.each(arguments,function(a,d){for(var e;-1<(e=c.inArray(d,k,e));)k.splice(e,1),b&&
|
32 |
-
(e<=f&&f--,e<=g&&g--)});return this},has:function(a){return a?-1<c.inArray(a,k):!(!k||!k.length)},empty:function(){k=[];return this},disable:function(){k=l=d=m;return this},disabled:function(){return!k},lock:function(){l=m;d||t.disable();return this},locked:function(){return!l},fireWith:function(a,c){c=c||[];c=[a,c.slice?c.slice():c];!k||e&&!l||(b?l.push(c):u(c));return this},fire:function(){t.fireWith(this,arguments);return this},fired:function(){return!!e}};return t};c.extend({Deferred:function(a){var b=
|
33 |
-
[["resolve","done",c.Callbacks("once memory"),"resolved"],["reject","fail",c.Callbacks("once memory"),"rejected"],["notify","progress",c.Callbacks("memory")]],d="pending",e={state:function(){return d},always:function(){f.done(arguments).fail(arguments);return this},then:function(){var a=arguments;return c.Deferred(function(d){c.each(b,function(b,l){var u=l[0],m=c.isFunction(a[b])&&a[b];f[l[1]](function(){var a=m&&m.apply(this,arguments);if(a&&c.isFunction(a.promise))a.promise().done(d.resolve).fail(d.reject).progress(d.notify);
|
34 |
-
else d[u+"With"](this===e?d.promise():this,m?[a]:arguments)})});a=null}).promise()},promise:function(a){return null!=a?c.extend(a,e):e}},f={};e.pipe=e.then;c.each(b,function(a,c){var k=c[2],l=c[3];e[c[1]]=k.add;l&&k.add(function(){d=l},b[a^1][2].disable,b[2][2].lock);f[c[0]]=function(){f[c[0]+"With"](this===f?e:this,arguments);return this};f[c[0]+"With"]=k.fireWith});e.promise(f);a&&a.call(f,f);return f},when:function(a){var b=0,d=C.call(arguments),e=d.length,f=1!==e||a&&c.isFunction(a.promise)?e:
|
35 |
-
0,g=1===f?a:c.Deferred(),h=function(a,b,c){return function(d){b[a]=this;c[a]=1<arguments.length?C.call(arguments):d;c===k?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},k,l,u;if(1<e)for(k=Array(e),l=Array(e),u=Array(e);b<e;b++)d[b]&&c.isFunction(d[b].promise)?d[b].promise().done(h(b,u,d)).fail(g.reject).progress(h(b,l,k)):--f;f||g.resolveWith(u,d);return g.promise()}});c.support=function(){var a,b,d,e,f,g,h,k=p.createElement("div");k.setAttribute("className","t");k.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";
|
36 |
-
b=k.getElementsByTagName("*");d=k.getElementsByTagName("a")[0];if(!b||!d||!b.length)return{};e=p.createElement("select");f=e.appendChild(p.createElement("option"));b=k.getElementsByTagName("input")[0];d.style.cssText="top:1px;float:left;opacity:.5";a={getSetAttribute:"t"!==k.className,leadingWhitespace:3===k.firstChild.nodeType,tbody:!k.getElementsByTagName("tbody").length,htmlSerialize:!!k.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:"/a"===d.getAttribute("href"),
|
37 |
-
opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:!!b.value,optSelected:f.selected,enctype:!!p.createElement("form").enctype,html5Clone:"<:nav></:nav>"!==p.createElement("nav").cloneNode(!0).outerHTML,boxModel:"CSS1Compat"===p.compatMode,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1};b.checked=!0;a.noCloneChecked=b.cloneNode(!0).checked;e.disabled=!0;a.optDisabled=!f.disabled;try{delete k.test}catch(l){a.deleteExpando=
|
38 |
-
!1}b=p.createElement("input");b.setAttribute("value","");a.input=""===b.getAttribute("value");b.value="t";b.setAttribute("type","radio");a.radioValue="t"===b.value;b.setAttribute("checked","t");b.setAttribute("name","t");d=p.createDocumentFragment();d.appendChild(b);a.appendChecked=b.checked;a.checkClone=d.cloneNode(!0).cloneNode(!0).lastChild.checked;k.attachEvent&&(k.attachEvent("onclick",function(){a.noCloneEvent=!1}),k.cloneNode(!0).click());for(h in{submit:!0,change:!0,focusin:!0})k.setAttribute(d=
|
39 |
-
"on"+h,"t"),a[h+"Bubbles"]=d in r||!1===k.attributes[d].expando;k.style.backgroundClip="content-box";k.cloneNode(!0).style.backgroundClip="";a.clearCloneStyle="content-box"===k.style.backgroundClip;c(function(){var b,c,d=p.getElementsByTagName("body")[0];d&&(b=p.createElement("div"),b.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",d.appendChild(b).appendChild(k),k.innerHTML="<table><tr><td></td><td>t</td></tr></table>",c=k.getElementsByTagName("td"),
|
40 |
-
c[0].style.cssText="padding:0;margin:0;border:0;display:none",g=0===c[0].offsetHeight,c[0].style.display="",c[1].style.display="none",a.reliableHiddenOffsets=g&&0===c[0].offsetHeight,k.innerHTML="",k.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",a.boxSizing=4===k.offsetWidth,a.doesNotIncludeMarginInBodyOffset=1!==d.offsetTop,r.getComputedStyle&&(a.pixelPosition="1%"!==
|
41 |
-
(r.
|
42 |
-
"padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;width:1px;padding:1px;display:inline;zoom:1",a.inlineBlockNeedsLayout=3===k.offsetWidth,k.style.display="block",k.innerHTML="<div></div>",k.firstChild.style.width="5px",a.shrinkWrapBlocks=3!==k.offsetWidth,a.inlineBlockNeedsLayout&&(d.style.zoom=1)),d.removeChild(b),k=null)});b=e=d=f=d=b=null;return a}();var Tb=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,Sb=/([A-Z])/g;c.extend({cache:{},
|
43 |
-
expando:"jQuery"+("1.9.1"+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?c.cache[a[c.expando]]:a[c.expando];return!!a&&!za(a)},data:function(a,b,c){return Va(a,b,c)},removeData:function(a,b){return Wa(a,b)},_data:function(a,b,c){return Va(a,b,c,!0)},_removeData:function(a,b){return Wa(a,b,!0)},acceptData:function(a){if(a.nodeType&&1!==a.nodeType&&9!==a.nodeType)return!1;var b=a.nodeName&&c.noData[a.nodeName.toLowerCase()];
|
44 |
-
return!b||!0!==b&&a.getAttribute("classid")===b}});c.fn.extend({data:function(a,b){var d,e,f=this[0],g=0,h=null;if(a===m){if(this.length&&(h=c.data(f),1===f.nodeType&&!c._data(f,"parsedAttrs"))){for(d=f.attributes;g<d.length;g++)e=d[g].name,e.indexOf("data-")||(e=c.camelCase(e.slice(5)),Xa(f,e,h[e]));c._data(f,"parsedAttrs",!0)}return h}return"object"===typeof a?this.each(function(){c.data(this,a)}):c.access(this,function(b){if(b===m)return f?Xa(f,a,c.data(f,a)):null;this.each(function(){c.data(this,
|
45 |
-
a,b)})},null,b,1<arguments.length,null,!0)},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){var e;if(a)return b=(b||"fx")+"queue",e=c._data(a,b),d&&(!e||c.isArray(d)?e=c._data(a,b,c.makeArray(d)):e.push(d)),e||[]},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),e=d.length,f=d.shift(),g=c._queueHooks(a,b),h=function(){c.dequeue(a,b)};"inprogress"===f&&(f=d.shift(),e--);if(g.cur=f)"fx"===b&&d.unshift("inprogress"),delete g.stop,f.call(a,
|
46 |
-
h,g);!e&&g&&g.empty.fire()},_queueHooks:function(a,b){var d=b+"queueHooks";return c._data(a,d)||c._data(a,d,{empty:c.Callbacks("once memory").add(function(){c._removeData(a,b+"queue");c._removeData(a,d)})})}});c.fn.extend({queue:function(a,b){var d=2;"string"!==typeof a&&(b=a,a="fx",d--);return arguments.length<d?c.queue(this[0],a):b===m?this:this.each(function(){var d=c.queue(this,a,b);c._queueHooks(this,a);"fx"===a&&"inprogress"!==d[0]&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,
|
47 |
-
a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;return this.queue(b||"fx",function(b,c){var f=setTimeout(b,a);c.stop=function(){clearTimeout(f)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var d,e=1,f=c.Deferred(),g=this,h=this.length,k=function(){--e||f.resolveWith(g,[g])};"string"!==typeof a&&(b=a,a=m);for(a=a||"fx";h--;)(d=c._data(g[h],a+"queueHooks"))&&d.empty&&(e++,d.empty.add(k));k();return f.promise(b)}});var V,yb,Ha=/[\t\r\n]/g,pc=/\r/g,qc=/^(?:input|select|textarea|button|object)$/i,
|
48 |
-
rc=/^(?:a|area)$/i,zb=/^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,Ia=/^(?:checked|selected)$/i,Z=c.support.getSetAttribute,Ja=c.support.input;c.fn.extend({attr:function(a,b){return c.access(this,c.attr,a,b,1<arguments.length)},removeAttr:function(a){return this.each(function(){c.removeAttr(this,a)})},prop:function(a,b){return c.access(this,c.prop,a,b,1<arguments.length)},removeProp:function(a){a=c.propFix[a]||a;return this.each(function(){try{this[a]=
|
49 |
-
m,delete this[a]}catch(b){}})},addClass:function(a){var b,d,e,f,g,h=0,k=this.length;b="string"===typeof a&&a;if(c.isFunction(a))return this.each(function(b){c(this).addClass(a.call(this,b,this.className))});if(b)for(b=(a||"").match(O)||[];h<k;h++)if(d=this[h],e=1===d.nodeType&&(d.className?(" "+d.className+" ").replace(Ha," "):" ")){for(g=0;f=b[g++];)0>e.indexOf(" "+f+" ")&&(e+=f+" ");d.className=c.trim(e)}return this},removeClass:function(a){var b,d,e,f,g,h=0,k=this.length;b=0===arguments.length||
|
50 |
-
"string"===typeof a&&a;if(c.isFunction(a))return this.each(function(b){c(this).removeClass(a.call(this,b,this.className))});if(b)for(b=(a||"").match(O)||[];h<k;h++)if(d=this[h],e=1===d.nodeType&&(d.className?(" "+d.className+" ").replace(Ha," "):"")){for(g=0;f=b[g++];)for(;0<=e.indexOf(" "+f+" ");)e=e.replace(" "+f+" "," ");d.className=a?c.trim(e):""}return this},toggleClass:function(a,b){var d=typeof a,e="boolean"===typeof b;return c.isFunction(a)?this.each(function(d){c(this).toggleClass(a.call(this,
|
51 |
-
d,this.className,b),b)}):this.each(function(){if("string"===d)for(var f,g=0,h=c(this),k=b,l=a.match(O)||[];f=l[g++];)k=e?k:!h.hasClass(f),h[k?"addClass":"removeClass"](f);else if(d===z||"boolean"===d)this.className&&c._data(this,"__className__",this.className),this.className=this.className||!1===a?"":c._data(this,"__className__")||""})},hasClass:function(a){a=" "+a+" ";for(var b=0,c=this.length;b<c;b++)if(1===this[b].nodeType&&0<=(" "+this[b].className+" ").replace(Ha," ").indexOf(a))return!0;return!1},
|
52 |
-
val:function(a){var b,d,e,f=this[0];if(arguments.length)return e=c.isFunction(a),this.each(function(b){var f=c(this);1===this.nodeType&&(b=e?a.call(this,b,f.val()):a,null==b?b="":"number"===typeof b?b+="":c.isArray(b)&&(b=c.map(b,function(a){return null==a?"":a+""})),d=c.valHooks[this.type]||c.valHooks[this.nodeName.toLowerCase()],d&&"set"in d&&d.set(this,b,"value")!==m||(this.value=b))});if(f){if((d=c.valHooks[f.type]||c.valHooks[f.nodeName.toLowerCase()])&&"get"in d&&(b=d.get(f,"value"))!==m)return b;
|
53 |
-
b=f.value;return"string"===typeof b?b.replace(pc,""):null==b?"":b}}});c.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){for(var b,d=a.options,e=a.selectedIndex,f=(a="select-one"===a.type||0>e)?null:[],g=a?e+1:d.length,h=0>e?g:a?e:0;h<g;h++)if(b=d[h],!(!b.selected&&h!==e||(c.support.optDisabled?b.disabled:null!==b.getAttribute("disabled"))||b.parentNode.disabled&&c.nodeName(b.parentNode,"optgroup"))){b=c(b).val();if(a)return b;
|
54 |
-
f.push(b)}return f},set:function(a,b){var d=c.makeArray(b);c(a).find("option").each(function(){this.selected=0<=c.inArray(c(this).val(),d)});d.length||(a.selectedIndex=-1);return d}}},attr:function(a,b,d){var e,f,g;f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f){if(typeof a.getAttribute===z)return c.prop(a,b,d);if(f=1!==f||!c.isXMLDoc(a))b=b.toLowerCase(),e=c.attrHooks[b]||(zb.test(b)?yb:V);if(d!==m)if(null===d)c.removeAttr(a,b);else{if(e&&f&&"set"in e&&(g=e.set(a,d,b))!==m)return g;a.setAttribute(b,d+"");
|
55 |
-
return d}else{if(e&&f&&"get"in e&&null!==(g=e.get(a,b)))return g;typeof a.getAttribute!==z&&(g=a.getAttribute(b));return null==g?m:g}}},removeAttr:function(a,b){var d,e,f=0,g=b&&b.match(O);if(g&&1===a.nodeType)for(;d=g[f++];)e=c.propFix[d]||d,zb.test(d)?!Z&&Ia.test(d)?a[c.camelCase("default-"+d)]=a[e]=!1:a[e]=!1:c.attr(a,d,""),a.removeAttribute(Z?d:e)},attrHooks:{type:{set:function(a,b){if(!c.support.radioValue&&"radio"===b&&c.nodeName(a,"input")){var d=a.value;a.setAttribute("type",b);d&&(a.value=
|
56 |
-
d);return b}}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,b,d){var e,f,g;g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g){if(g=1!==g||!c.isXMLDoc(a))b=c.propFix[b]||b,f=c.propHooks[b];return d!==m?f&&"set"in f&&(e=f.set(a,d,b))!==m?e:a[b]=d:f&&"get"in f&&null!==(e=
|
57 |
-
f.get(a,b))?e:a[b]}},propHooks:{tabIndex:{get:function(a){var b=a.getAttributeNode("tabindex");return b&&b.specified?parseInt(b.value,10):qc.test(a.nodeName)||rc.test(a.nodeName)&&a.href?0:m}}}});yb={get:function(a,b){var d=c.prop(a,b),e="boolean"===typeof d&&a.getAttribute(b);return(d="boolean"===typeof d?Ja&&Z?null!=e:Ia.test(b)?a[c.camelCase("default-"+b)]:!!e:a.getAttributeNode(b))&&!1!==d.value?b.toLowerCase():m},set:function(a,b,d){!1===b?c.removeAttr(a,d):Ja&&Z||!Ia.test(d)?a.setAttribute(!Z&&
|
58 |
-
c.propFix[d]||d,d):a[c.camelCase("default-"+d)]=a[d]=!0;return d}};Ja&&Z||(c.attrHooks.value={get:function(a,b){var d=a.getAttributeNode(b);return c.nodeName(a,"input")?a.defaultValue:d&&d.specified?d.value:m},set:function(a,b,d){if(c.nodeName(a,"input"))a.defaultValue=b;else return V&&V.set(a,b,d)}});Z||(V=c.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&("id"===b||"name"===b||"coords"===b?""!==c.value:c.specified)?c.value:m},set:function(a,b,c){var e=a.getAttributeNode(c);
|
59 |
-
e||a.setAttributeNode(e=a.ownerDocument.createAttribute(c));e.value=b+="";return"value"===c||b===a.getAttribute(c)?b:m}},c.attrHooks.contenteditable={get:V.get,set:function(a,b,c){V.set(a,""===b?!1:b,c)}},c.each(["width","height"],function(a,b){c.attrHooks[b]=c.extend(c.attrHooks[b],{set:function(a,c){if(""===c)return a.setAttribute(b,"auto"),c}})}));c.support.hrefNormalized||(c.each(["href","src","width","height"],function(a,b){c.attrHooks[b]=c.extend(c.attrHooks[b],{get:function(a){a=a.getAttribute(b,
|
60 |
-
2);return null==a?m:a}})}),c.each(["href","src"],function(a,b){c.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}));c.support.style||(c.attrHooks.style={get:function(a){return a.style.cssText||m},set:function(a,b){return a.style.cssText=b+""}});c.support.optSelected||(c.propHooks.selected=c.extend(c.propHooks.selected,{get:function(a){if(a=a.parentNode)a.selectedIndex,a.parentNode&&a.parentNode.selectedIndex;return null}}));c.support.enctype||(c.propFix.enctype="encoding");c.support.checkOn||
|
61 |
-
c.each(["radio","checkbox"],function(){c.valHooks[this]={get:function(a){return null===a.getAttribute("value")?"on":a.value}}});c.each(["radio","checkbox"],function(){c.valHooks[this]=c.extend(c.valHooks[this],{set:function(a,b){if(c.isArray(b))return a.checked=0<=c.inArray(c(a).val(),b)}})});var Ka=/^(?:input|select|textarea)$/i,sc=/^key/,tc=/^(?:mouse|contextmenu)|click/,Ab=/^(?:focusinfocus|focusoutblur)$/,Bb=/^([^.]*)(?:\.(.+)|)$/;c.event={global:{},add:function(a,b,d,e,f){var g,h,k,l,u,t,n,q,
|
62 |
-
p;if(k=c._data(a)){d.handler&&(l=d,d=l.handler,f=l.selector);d.guid||(d.guid=c.guid++);(h=k.events)||(h=k.events={});(u=k.handle)||(u=k.handle=function(a){return typeof c===z||a&&c.event.triggered===a.type?m:c.event.dispatch.apply(u.elem,arguments)},u.elem=a);b=(b||"").match(O)||[""];for(k=b.length;k--;)g=Bb.exec(b[k])||[],q=t=g[1],p=(g[2]||"").split(".").sort(),g=c.event.special[q]||{},q=(f?g.delegateType:g.bindType)||q,g=c.event.special[q]||{},t=c.extend({type:q,origType:t,data:e,handler:d,guid:d.guid,
|
63 |
-
selector:f,needsContext:f&&c.expr.match.needsContext.test(f),namespace:p.join(".")},l),(n=h[q])||(n=h[q]=[],n.delegateCount=0,g.setup&&!1!==g.setup.call(a,e,p,u)||(a.addEventListener?a.addEventListener(q,u,!1):a.attachEvent&&a.attachEvent("on"+q,u))),g.add&&(g.add.call(a,t),t.handler.guid||(t.handler.guid=d.guid)),f?n.splice(n.delegateCount++,0,t):n.push(t),c.event.global[q]=!0;a=null}},remove:function(a,b,d,e,f){var g,h,k,l,u,m,n,q,p,r,B,A=c.hasData(a)&&c._data(a);if(A&&(m=A.events)){b=(b||"").match(O)||
|
64 |
-
[""];for(u=b.length;u--;)if(k=Bb.exec(b[u])||[],p=B=k[1],r=(k[2]||"").split(".").sort(),p){n=c.event.special[p]||{};p=(e?n.delegateType:n.bindType)||p;q=m[p]||[];k=k[2]&&new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)");for(l=g=q.length;g--;)h=q[g],!f&&B!==h.origType||d&&d.guid!==h.guid||k&&!k.test(h.namespace)||e&&e!==h.selector&&("**"!==e||!h.selector)||(q.splice(g,1),h.selector&&q.delegateCount--,n.remove&&n.remove.call(a,h));l&&!q.length&&(n.teardown&&!1!==n.teardown.call(a,r,A.handle)||
|
65 |
-
c.removeEvent(a,p,A.handle),delete m[p])}else for(p in m)c.event.remove(a,p+b[u],d,e,!0);c.isEmptyObject(m)&&(delete A.handle,c._removeData(a,"events"))}},trigger:function(a,b,d,e){var f,g,h,k,l,u,t=[d||p],n=ia.call(a,"type")?a.type:a;l=ia.call(a,"namespace")?a.namespace.split("."):[];h=f=d=d||p;if(3!==d.nodeType&&8!==d.nodeType&&!Ab.test(n+c.event.triggered)&&(0<=n.indexOf(".")&&(l=n.split("."),n=l.shift(),l.sort()),g=0>n.indexOf(":")&&"on"+n,a=a[c.expando]?a:new c.Event(n,"object"===typeof a&&a),
|
66 |
-
a.isTrigger=!0,a.namespace=l.join("."),a.namespace_re=a.namespace?new RegExp("(^|\\.)"+l.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,a.result=m,a.target||(a.target=d),b=null==b?[a]:c.makeArray(b,[a]),l=c.event.special[n]||{},e||!l.trigger||!1!==l.trigger.apply(d,b))){if(!e&&!l.noBubble&&!c.isWindow(d)){k=l.delegateType||n;Ab.test(k+n)||(h=h.parentNode);for(;h;h=h.parentNode)t.push(h),f=h;f===(d.ownerDocument||p)&&t.push(f.defaultView||f.parentWindow||r)}for(u=0;(h=t[u++])&&!a.isPropagationStopped();)a.type=
|
67 |
-
1<u?k:l.bindType||n,(f=(c._data(h,"events")||{})[a.type]&&c._data(h,"handle"))&&f.apply(h,b),(f=g&&h[g])&&c.acceptData(h)&&f.apply&&!1===f.apply(h,b)&&a.preventDefault();a.type=n;if(!(e||a.isDefaultPrevented()||l._default&&!1!==l._default.apply(d.ownerDocument,b)||"click"===n&&c.nodeName(d,"a"))&&c.acceptData(d)&&g&&d[n]&&!c.isWindow(d)){(f=d[g])&&(d[g]=null);c.event.triggered=n;try{d[n]()}catch(q){}c.event.triggered=m;f&&(d[g]=f)}return a.result}},dispatch:function(a){a=c.event.fix(a);var b,d,e,
|
68 |
-
f,g=[],h=C.call(arguments);b=(c._data(this,"events")||{})[a.type]||[];var k=c.event.special[a.type]||{};h[0]=a;a.delegateTarget=this;if(!k.preDispatch||!1!==k.preDispatch.call(this,a)){g=c.event.handlers.call(this,a,b);for(b=0;(e=g[b++])&&!a.isPropagationStopped();)for(a.currentTarget=e.elem,f=0;(d=e.handlers[f++])&&!a.isImmediatePropagationStopped();)if(!a.namespace_re||a.namespace_re.test(d.namespace))a.handleObj=d,a.data=d.data,d=((c.event.special[d.origType]||{}).handle||d.handler).apply(e.elem,
|
69 |
-
h),d!==m&&!1===(a.result=d)&&(a.preventDefault(),a.stopPropagation());k.postDispatch&&k.postDispatch.call(this,a);return a.result}},handlers:function(a,b){var d,e,f,g,h=[],k=b.delegateCount,l=a.target;if(k&&l.nodeType&&(!a.button||"click"!==a.type))for(;l!=this;l=l.parentNode||this)if(1===l.nodeType&&(!0!==l.disabled||"click"!==a.type)){f=[];for(g=0;g<k;g++)e=b[g],d=e.selector+" ",f[d]===m&&(f[d]=e.needsContext?0<=c(d,this).index(l):c.find(d,this,null,[l]).length),f[d]&&f.push(e);f.length&&h.push({elem:l,
|
70 |
-
handlers:f})}k<b.length&&h.push({elem:this,handlers:b.slice(k)});return h},fix:function(a){if(a[c.expando])return a;var b,d,e;b=a.type;var f=a,g=this.fixHooks[b];g||(this.fixHooks[b]=g=tc.test(b)?this.mouseHooks:sc.test(b)?this.keyHooks:{});e=g.props?this.props.concat(g.props):this.props;a=new c.Event(f);for(b=e.length;b--;)d=e[b],a[d]=f[d];a.target||(a.target=f.srcElement||p);3===a.target.nodeType&&(a.target=a.target.parentNode);a.metaKey=!!a.metaKey;return g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
|
71 |
-
fixHooks:{},keyHooks:{props:["char","charCode","key","keyCode"],filter:function(a,b){null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,e,f=b.button,g=b.fromElement;null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||p,e=c.documentElement,c=c.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||
|
72 |
-
c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0));!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g);a.which||f===m||(a.which=f&1?1:f&2?3:f&4?2:0);return a}},special:{load:{noBubble:!0},click:{trigger:function(){if(c.nodeName(this,"input")&&"checkbox"===this.type&&this.click)return this.click(),!1}},focus:{trigger:function(){if(this!==p.activeElement&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},
|
73 |
-
blur:{trigger:function(){if(this===p.activeElement&&this.blur)return this.blur(),!1},delegateType:"focusout"},beforeunload:{postDispatch:function(a){a.result!==m&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,d,e){a=c.extend(new c.Event,d,{type:a,isSimulated:!0,originalEvent:{}});e?c.event.trigger(a,null,b):c.event.dispatch.call(b,a);a.isDefaultPrevented()&&d.preventDefault()}};c.removeEvent=p.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:
|
74 |
-
function(a,b,c){b="on"+b;a.detachEvent&&(typeof a[b]===z&&(a[b]=null),a.detachEvent(b,c))};c.Event=function(a,b){if(!(this instanceof c.Event))return new c.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||!1===a.returnValue||a.getPreventDefault&&a.getPreventDefault()?ba:R):this.type=a;b&&c.extend(this,b);this.timeStamp=a&&a.timeStamp||c.now();this[c.expando]=!0};c.Event.prototype={isDefaultPrevented:R,isPropagationStopped:R,isImmediatePropagationStopped:R,
|
75 |
-
preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ba;a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ba;a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=ba;this.stopPropagation()}};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={delegateType:b,bindType:b,handle:function(a){var e,
|
76 |
-
f=a.relatedTarget,g=a.handleObj;if(!f||f!==this&&!c.contains(this,f))a.type=g.origType,e=g.handler.apply(this,arguments),a.type=b;return e}}});c.support.submitBubbles||(c.event.special.submit={setup:function(){if(c.nodeName(this,"form"))return!1;c.event.add(this,"click._submit keypress._submit",function(a){a=a.target;(a=c.nodeName(a,"input")||c.nodeName(a,"button")?a.form:m)&&!c._data(a,"submitBubbles")&&(c.event.add(a,"submit._submit",function(a){a._submit_bubble=!0}),c._data(a,"submitBubbles",!0))})},
|
77 |
-
postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&c.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){if(c.nodeName(this,"form"))return!1;c.event.remove(this,"._submit")}});c.support.changeBubbles||(c.event.special.change={setup:function(){if(Ka.test(this.nodeName)){if("checkbox"===this.type||"radio"===this.type)c.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),
|
78 |
-
c.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1);c.event.simulate("change",this,a,!0)});return!1}c.event.add(this,"beforeactivate._change",function(a){a=a.target;Ka.test(a.nodeName)&&!c._data(a,"changeBubbles")&&(c.event.add(a,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||c.event.simulate("change",this.parentNode,a,!0)}),c._data(a,"changeBubbles",!0))})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||
|
79 |
-
a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type)return a.handleObj.handler.apply(this,arguments)},teardown:function(){c.event.remove(this,"._change");return!Ka.test(this.nodeName)}});c.support.focusinBubbles||c.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){c.event.simulate(b,a.target,c.event.fix(a),!0)};c.event.special[b]={setup:function(){0===d++&&p.addEventListener(a,e,!0)},teardown:function(){0===--d&&p.removeEventListener(a,e,!0)}}});c.fn.extend({on:function(a,
|
80 |
-
b,d,e,f){var g,h;if("object"===typeof a){"string"!==typeof b&&(d=d||b,b=m);for(g in a)this.on(g,b,d,a[g],f);return this}null==d&&null==e?(e=b,d=b=m):null==e&&("string"===typeof b?(e=d,d=m):(e=d,d=b,b=m));if(!1===e)e=R;else if(!e)return this;1===f&&(h=e,e=function(a){c().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=c.guid++));return this.each(function(){c.event.add(this,a,e,d,b)})},one:function(a,b,c,e){return this.on(a,b,c,e,1)},off:function(a,b,d){var e;if(a&&a.preventDefault&&a.handleObj)return e=
|
81 |
-
a.handleObj,c(a.delegateTarget).off(e.namespace?e.origType+"."+e.namespace:e.origType,e.selector,e.handler),this;if("object"===typeof a){for(e in a)this.off(e,b,a[e]);return this}if(!1===b||"function"===typeof b)d=b,b=m;!1===d&&(d=R);return this.each(function(){c.event.remove(this,a,d,b)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,e){return this.on(b,a,c,e)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,
|
82 |
-
"**"):this.off(b,a||"**",c)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){var d=this[0];if(d)return c.event.trigger(a,b,d,!0)}});(function(a,b){function d(a){return ka.test(a+"")}function e(){var a,b=[];return a=function(c,d){b.push(c+=" ")>w.cacheLength&&delete a[b.shift()];return a[c]=d}}function f(a){a[D]=!0;return a}function g(a){var b=E.createElement("div");try{return a(b)}catch(c){return!1}finally{}}function h(a,b,c,d){var e,f,g,
|
83 |
-
h,k;(b?b.ownerDocument||b:ja)!==E&&J(b);b=b||E;c=c||[];if(!a||"string"!==typeof a)return c;if(1!==(h=b.nodeType)&&9!==h)return[];if(!P&&!d){if(e=la.exec(a))if(g=e[1])if(9===h)if((f=b.getElementById(g))&&f.parentNode){if(f.id===g)return c.push(f),c}else return c;else{if(b.ownerDocument&&(f=b.ownerDocument.getElementById(g))&&sa(b,f)&&f.id===g)return c.push(f),c}else{if(e[2])return F.apply(c,I.call(b.getElementsByTagName(a),0)),c;if((g=e[3])&&x.getByClassName&&b.getElementsByClassName)return F.apply(c,
|
84 |
-
I.call(b.getElementsByClassName(g),0)),c}if(x.qsa&&!K.test(a)){e=!0;f=D;g=b;k=9===h&&a;if(1===h&&"object"!==b.nodeName.toLowerCase()){h=n(a);(e=b.getAttribute("id"))?f=e.replace(oa,"\\$&"):b.setAttribute("id",f);f="[id='"+f+"'] ";for(g=h.length;g--;)h[g]=f+p(h[g]);g=ba.test(a)&&b.parentNode||b;k=h.join(",")}if(k)try{return F.apply(c,I.call(g.querySelectorAll(k),0)),c}catch(l){}finally{e||b.removeAttribute("id")}}}var m;a:{a=a.replace(Q,"$1");f=n(a);if(!d&&1===f.length){e=f[0]=f[0].slice(0);if(2<e.length&&
|
85 |
-
"ID"===(m=e[0]).type&&9===b.nodeType&&!P&&w.relative[e[1].type]){b=w.find.ID(m.matches[0].replace(da,ea),b)[0];if(!b){m=c;break a}a=a.slice(e.shift().value.length)}for(h=X.needsContext.test(a)?0:e.length;h--;){m=e[h];if(w.relative[g=m.type])break;if(g=w.find[g])if(d=g(m.matches[0].replace(da,ea),ba.test(e[0].type)&&b.parentNode||b)){e.splice(h,1);a=d.length&&p(e);if(!a){F.apply(c,I.call(d,0));m=c;break a}break}}}L(a,f)(d,b,P,c,ba.test(a));m=c}return m}function k(a,b){var c=b&&a,d=c&&(~b.sourceIndex||
|
86 |
-
-2147483648)-(~a.sourceIndex||-2147483648);if(d)return d;if(c)for(;c=c.nextSibling;)if(c===b)return-1;return a?1:-1}function l(a){return function(b){return"input"===b.nodeName.toLowerCase()&&b.type===a}}function u(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function m(a){return f(function(b){b=+b;return f(function(c,d){for(var e,f=a([],c.length,b),g=f.length;g--;)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function n(a,b){var c,d,e,f,g,k,l;if(g=T[a+" "])return b?
|
87 |
-
0:g.slice(0);g=a;k=[];for(l=w.preFilter;g;){if(!c||(d=fa.exec(g)))d&&(g=g.slice(d[0].length)||g),k.push(e=[]);c=!1;if(d=ga.exec(g))c=d.shift(),e.push({value:c,type:d[0].replace(Q," ")}),g=g.slice(c.length);for(f in w.filter)!(d=X[f].exec(g))||l[f]&&!(d=l[f](d))||(c=d.shift(),e.push({value:c,type:f,matches:d}),g=g.slice(c.length));if(!c)break}return b?g.length:g?h.error(a):T(a,k).slice(0)}function p(a){for(var b=0,c=a.length,d="";b<c;b++)d+=a[b].value;return d}function r(a,b,c){var d=b.dir,e=c&&"parentNode"===
|
88 |
-
d,f=W++;return b.first?function(b,c,f){for(;b=b[d];)if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,k,La,l=N+" "+f;if(g)for(;b=b[d];){if((1===b.nodeType||e)&&a(b,c,g))return!0}else for(;b=b[d];)if(1===b.nodeType||e)if(La=b[D]||(b[D]={}),(k=La[d])&&k[0]===l){if(!0===(h=k[1])||h===v)return!0===h}else if(k=La[d]=[l],k[1]=a(b,c,g)||v,!0===k[1])return!0}}function A(a){return 1<a.length?function(b,c,d){for(var e=a.length;e--;)if(!a[e](b,c,d))return!1;return!0}:a[0]}function B(a,b,c,d,e){for(var f,
|
89 |
-
g=[],h=0,k=a.length,l=null!=b;h<k;h++)if(f=a[h])if(!c||c(f,d,e))g.push(f),l&&b.push(h);return g}function H(a,b,c,d,e,g){d&&!d[D]&&(d=H(d));e&&!e[D]&&(e=H(e,g));return f(function(f,g,k,l){var n,m,u=[],p=[],w=g.length,t;if(!(t=f)){t=b||"*";for(var q=k.nodeType?[k]:k,r=[],ca=0,v=q.length;ca<v;ca++)h(t,q[ca],r);t=r}t=!a||!f&&b?t:B(t,u,a,k,l);q=c?e||(f?a:w||d)?[]:g:t;c&&c(t,q,k,l);if(d)for(n=B(q,p),d(n,[],k,l),k=n.length;k--;)if(m=n[k])q[p[k]]=!(t[p[k]]=m);if(f){if(e||a){if(e){n=[];for(k=q.length;k--;)(m=
|
90 |
-
q[k])&&n.push(t[k]=m);e(null,q=[],n,l)}for(k=q.length;k--;)(m=q[k])&&-1<(n=e?R.call(f,m):u[k])&&(f[n]=!(g[n]=m))}}else q=B(q===g?q.splice(w,q.length):q),e?e(null,g,q,l):F.apply(g,q)})}function z(a){var b,c,d,e=a.length,f=w.relative[a[0].type];c=f||w.relative[" "];for(var g=f?1:0,h=r(function(a){return a===b},c,!0),k=r(function(a){return-1<R.call(b,a)},c,!0),l=[function(a,c,d){return!f&&(d||c!==ua)||((b=c).nodeType?h(a,c,d):k(a,c,d))}];g<e;g++)if(c=w.relative[a[g].type])l=[r(A(l),c)];else{c=w.filter[a[g].type].apply(null,
|
91 |
-
a[g].matches);if(c[D]){for(d=++g;d<e&&!w.relative[a[d].type];d++);return H(1<g&&A(l),1<g&&p(a.slice(0,g-1)).replace(Q,"$1"),c,g<d&&z(a.slice(g,d)),d<e&&z(a=a.slice(d)),d<e&&p(a))}l.push(c)}return A(l)}function O(a,b){var c=0,d=0<b.length,e=0<a.length,g=function(f,g,k,l,n){var m,u,p=[],q=0,t="0",r=f&&[],ca=null!=n,x=ua,y=f||e&&w.find.TAG("*",n&&g.parentNode||g),ta=N+=null==x?1:Math.random()||.1;ca&&(ua=g!==E&&g,v=c);for(;null!=(n=y[t]);t++){if(e&&n){for(m=0;u=a[m++];)if(u(n,g,k)){l.push(n);break}ca&&
|
92 |
-
(N=ta,v=++c)}d&&((n=!u&&n)&&q--,f&&r.push(n))}q+=t;if(d&&t!==q){for(m=0;u=b[m++];)u(r,p,g,k);if(f){if(0<q)for(;t--;)r[t]||p[t]||(p[t]=Z.call(l));p=B(p)}F.apply(l,p);ca&&!f&&0<p.length&&1<q+b.length&&h.uniqueSort(l)}ca&&(N=ta,ua=x);return r};return d?f(g):g}function M(){}var qa,v,w,va,ta,L,ra,ua,J,E,y,P,K,G,wa,sa,Ma,D="sizzle"+-new Date,ja=a.document,x={},N=0,W=0,S=e(),T=e(),U=e(),aa=typeof b,C=[],Z=C.pop,F=C.push,I=C.slice,R=C.indexOf||function(a){for(var b=0,c=this.length;b<c;b++)if(this[b]===a)return b;
|
93 |
-
return-1},C="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+".replace("w","w#"),Y="\\[[\\x20\\t\\r\\n\\f]*((?:\\\\.|[\\w-]|[^\\x00-\\xa0])+)[\\x20\\t\\r\\n\\f]*(?:([*^$|!~]?=)[\\x20\\t\\r\\n\\f]*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+C+")|)|)[\\x20\\t\\r\\n\\f]*\\]",V=":((?:\\\\.|[\\w-]|[^\\x00-\\xa0])+)(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+Y.replace(3,8)+")*)|.*)\\)|)",Q=RegExp("^[\\x20\\t\\r\\n\\f]+|((?:^|[^\\\\])(?:\\\\.)*)[\\x20\\t\\r\\n\\f]+$","g"),fa=/^[\x20\t\r\n\f]*,[\x20\t\r\n\f]*/,
|
94 |
-
ga=/^[\x20\t\r\n\f]*([\x20\t\r\n\f>+~])[\x20\t\r\n\f]*/,ha=new RegExp(V),ia=new RegExp("^"+C+"$"),X={ID:/^#((?:\\.|[\w-]|[^\x00-\xa0])+)/,CLASS:/^\.((?:\\.|[\w-]|[^\x00-\xa0])+)/,NAME:/^\[name=['"]?((?:\\.|[\w-]|[^\x00-\xa0])+)['"]?\]/,TAG:new RegExp("^("+"(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+".replace("w","w*")+")"),ATTR:new RegExp("^"+Y),PSEUDO:new RegExp("^"+V),CHILD:/^:(only|first|last|nth|nth-last)-(child|of-type)(?:\([\x20\t\r\n\f]*(even|odd|(([+-]|)(\d*)n|)[\x20\t\r\n\f]*(?:([+-]|)[\x20\t\r\n\f]*(\d+)|))[\x20\t\r\n\f]*\)|)/i,
|
95 |
-
needsContext:/^[\x20\t\r\n\f]*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\([\x20\t\r\n\f]*((?:-\d)?\d*)[\x20\t\r\n\f]*\)|)(?=[^-]|$)/i},ba=/[\x20\t\r\n\f]*[+~]/,ka=/^[^{]+\{\s*\[native code/,la=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ma=/^(?:input|select|textarea|button)$/i,na=/^h\d$/i,oa=/'|\\/g,pa=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,da=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,ea=function(a,b){var c="0x"+b-65536;return c!==c?b:0>c?String.fromCharCode(c+65536):String.fromCharCode(c>>10|55296,
|
96 |
-
c&1023|56320)};try{I.call(ja.documentElement.childNodes,0)[0].nodeType}catch(Sc){I=function(a){for(var b,c=[];b=this[a++];)c.push(b);return c}}ta=h.isXML=function(a){return(a=a&&(a.ownerDocument||a).documentElement)?"HTML"!==a.nodeName:!1};J=h.setDocument=function(a){var c=a?a.ownerDocument||a:ja;if(c===E||9!==c.nodeType||!c.documentElement)return E;E=c;y=c.documentElement;P=ta(c);x.tagNameNoComments=g(function(a){a.appendChild(c.createComment(""));return!a.getElementsByTagName("*").length});x.attributes=
|
97 |
-
g(function(a){a.innerHTML="<select></select>";a=typeof a.lastChild.getAttribute("multiple");return"boolean"!==a&&"string"!==a});x.getByClassName=g(function(a){a.innerHTML="<div class='hidden e'></div><div class='hidden'></div>";if(!a.getElementsByClassName||!a.getElementsByClassName("e").length)return!1;a.lastChild.className="e";return 2===a.getElementsByClassName("e").length});x.getByName=g(function(a){a.id=D+0;a.innerHTML="<a name='"+D+"'></a><div name='"+D+"'></div>";y.insertBefore(a,y.firstChild);
|
98 |
-
var b=c.getElementsByName&&c.getElementsByName(D).length===2+c.getElementsByName(D+0).length;x.getIdNotName=!c.getElementById(D);y.removeChild(a);return b});w.attrHandle=g(function(a){a.innerHTML="<a href='#'></a>";return a.firstChild&&typeof a.firstChild.getAttribute!==aa&&"#"===a.firstChild.getAttribute("href")})?{}:{href:function(a){return a.getAttribute("href",2)},type:function(a){return a.getAttribute("type")}};x.getIdNotName?(w.find.ID=function(a,b){if(typeof b.getElementById!==aa&&!P){var c=
|
99 |
-
b.getElementById(a);return c&&c.parentNode?[c]:[]}},w.filter.ID=function(a){var b=a.replace(da,ea);return function(a){return a.getAttribute("id")===b}}):(w.find.ID=function(a,c){if(typeof c.getElementById!==aa&&!P){var d=c.getElementById(a);return d?d.id===a||typeof d.getAttributeNode!==aa&&d.getAttributeNode("id").value===a?[d]:b:[]}},w.filter.ID=function(a){var b=a.replace(da,ea);return function(a){return(a=typeof a.getAttributeNode!==aa&&a.getAttributeNode("id"))&&a.value===b}});w.find.TAG=x.tagNameNoComments?
|
100 |
-
function(a,b){if(typeof b.getElementsByTagName!==aa)return b.getElementsByTagName(a)}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){for(;c=f[e++];)1===c.nodeType&&d.push(c);return d}return f};w.find.NAME=x.getByName&&function(a,b){if(typeof b.getElementsByName!==aa)return b.getElementsByName(name)};w.find.CLASS=x.getByClassName&&function(a,b){if(typeof b.getElementsByClassName!==aa&&!P)return b.getElementsByClassName(a)};G=[];K=[":focus"];if(x.qsa=d(c.querySelectorAll))g(function(a){a.innerHTML=
|
101 |
-
"<select><option selected=''></option></select>";a.querySelectorAll("[selected]").length||K.push("\\[[\\x20\\t\\r\\n\\f]*(?:checked|disabled|ismap|multiple|readonly|selected|value)");a.querySelectorAll(":checked").length||K.push(":checked")}),g(function(a){a.innerHTML="<input type='hidden' i=''/>";a.querySelectorAll("[i^='']").length&&K.push("[*^$]=[\\x20\\t\\r\\n\\f]*(?:\"\"|'')");a.querySelectorAll(":enabled").length||K.push(":enabled",":disabled");a.querySelectorAll("*,:x");K.push(",.*:")});(x.matchesSelector=
|
102 |
-
d(wa=y.matchesSelector||y.mozMatchesSelector||y.webkitMatchesSelector||y.oMatchesSelector||y.msMatchesSelector))&&g(function(a){x.disconnectedMatch=wa.call(a,"div");wa.call(a,"[s!='']:x");G.push("!=",V)});K=new RegExp(K.join("|"));G=new RegExp(G.join("|"));sa=d(y.contains)||y.compareDocumentPosition?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!!(d&&1===d.nodeType&&(c.contains?c.contains(d):a.compareDocumentPosition&&a.compareDocumentPosition(d)&16))}:function(a,
|
103 |
-
b){if(b)for(;b=b.parentNode;)if(b===a)return!0;return!1};Ma=y.compareDocumentPosition?function(a,b){var d;return a===b?(ra=!0,0):(d=b.compareDocumentPosition&&a.compareDocumentPosition&&a.compareDocumentPosition(b))?d&1||a.parentNode&&11===a.parentNode.nodeType?a===c||sa(ja,a)?-1:b===c||sa(ja,b)?1:0:d&4?-1:1:a.compareDocumentPosition?-1:1}:function(a,b){var d,e=0;d=a.parentNode;var f=b.parentNode,g=[a],h=[b];if(a===b)return ra=!0,0;if(!d||!f)return a===c?-1:b===c?1:d?-1:f?1:0;if(d===f)return k(a,
|
104 |
-
b);for(d=a;d=d.parentNode;)g.unshift(d);for(d=b;d=d.parentNode;)h.unshift(d);for(;g[e]===h[e];)e++;return e?k(g[e],h[e]):g[e]===ja?-1:h[e]===ja?1:0};ra=!1;[0,0].sort(Ma);x.detectDuplicates=ra;return E};h.matches=function(a,b){return h(a,null,null,b)};h.matchesSelector=function(a,b){(a.ownerDocument||a)!==E&&J(a);b=b.replace(pa,"='$1']");if(!(!x.matchesSelector||P||G&&G.test(b)||K.test(b)))try{var c=wa.call(a,b);if(c||x.disconnectedMatch||a.document&&11!==a.document.nodeType)return c}catch(d){}return 0<
|
105 |
-
h(b,E,null,[a]).length};h.contains=function(a,b){(a.ownerDocument||a)!==E&&J(a);return sa(a,b)};h.attr=function(a,b){var c;(a.ownerDocument||a)!==E&&J(a);P||(b=b.toLowerCase());return(c=w.attrHandle[b])?c(a):P||x.attributes?a.getAttribute(b):((c=a.getAttributeNode(b))||a.getAttribute(b))&&!0===a[b]?b:c&&c.specified?c.value:null};h.error=function(a){throw Error("Syntax error, unrecognized expression: "+a);};h.uniqueSort=function(a){var b,c=[],d=1,e=0;ra=!x.detectDuplicates;a.sort(Ma);if(ra){for(;b=
|
106 |
-
a[d];d++)b===a[d-1]&&(e=c.push(d));for(;e--;)a.splice(c[e],1)}return a};va=h.getText=function(a){var b,c="",d=0;b=a.nodeType;if(!b)for(;b=a[d];d++)c+=va(b);else if(1===b||9===b||11===b){if("string"===typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=va(a)}else if(3===b||4===b)return a.nodeValue;return c};w=h.selectors={cacheLength:50,createPseudo:f,match:X,find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},
|
107 |
-
"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){a[1]=a[1].replace(da,ea);a[3]=(a[4]||a[5]||"").replace(da,ea);"~="===a[2]&&(a[3]=" "+a[3]+" ");return a.slice(0,4)},CHILD:function(a){a[1]=a[1].toLowerCase();"nth"===a[1].slice(0,3)?(a[3]||h.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&h.error(a[0]);return a},PSEUDO:function(a){var b,c=!a[5]&&a[2];if(X.CHILD.test(a[0]))return null;a[4]?a[2]=a[4]:c&&ha.test(c)&&(b=n(c,!0))&&(b=
|
108 |
-
c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b));return a.slice(0,3)}},filter:{TAG:function(a){if("*"===a)return function(){return!0};a=a.replace(da,ea).toLowerCase();return function(b){return b.nodeName&&b.nodeName.toLowerCase()===a}},CLASS:function(a){var b=S[a+" "];return b||(b=new RegExp("(^|[\\x20\\t\\r\\n\\f])"+a+"([\\x20\\t\\r\\n\\f]|$)"))&&S(a,function(a){return b.test(a.className||typeof a.getAttribute!==aa&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){d=
|
109 |
-
h.attr(d,a);if(null==d)return"!="===b;if(!b)return!0;d+="";return"="===b?d===c:"!="===b?d!==c:"^="===b?c&&0===d.indexOf(c):"*="===b?c&&-1<d.indexOf(c):"$="===b?c&&d.slice(-c.length)===c:"~="===b?-1<(" "+d+" ").indexOf(c):"|="===b?d===c||d.slice(0,c.length+1)===c+"-":!1}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,k){var l,n,m,u,p;c=f!==g?"nextSibling":"previousSibling";var q=b.parentNode,
|
110 |
-
t=h&&b.nodeName.toLowerCase();k=!k&&!h;if(q){if(f){for(;c;){for(n=b;n=n[c];)if(h?n.nodeName.toLowerCase()===t:1===n.nodeType)return!1;p=c="only"===a&&!p&&"nextSibling"}return!0}p=[g?q.firstChild:q.lastChild];if(g&&k)for(k=q[D]||(q[D]={}),l=k[a]||[],u=l[0]===N&&l[1],m=l[0]===N&&l[2],n=u&&q.childNodes[u];n=++u&&n&&n[c]||(m=u=0)||p.pop();){if(1===n.nodeType&&++m&&n===b){k[a]=[N,u,m];break}}else if(k&&(l=(b[D]||(b[D]={}))[a])&&l[0]===N)m=l[1];else for(;(n=++u&&n&&n[c]||(m=u=0)||p.pop())&&((h?n.nodeName.toLowerCase()!==
|
111 |
-
t:1!==n.nodeType)||!++m||(k&&((n[D]||(n[D]={}))[a]=[N,m]),n!==b)););m-=e;return m===d||0===m%d&&0<=m/d}}},PSEUDO:function(a,b){var c,d=w.pseudos[a]||w.setFilters[a.toLowerCase()]||h.error("unsupported pseudo: "+a);return d[D]?d(b):1<d.length?(c=[a,a,"",b],w.setFilters.hasOwnProperty(a.toLowerCase())?f(function(a,c){for(var e,f=d(a,b),g=f.length;g--;)e=R.call(a,f[g]),a[e]=!(c[e]=f[g])}):function(a){return d(a,0,c)}):d}},pseudos:{not:f(function(a){var b=[],c=[],d=L(a.replace(Q,"$1"));return d[D]?f(function(a,
|
112 |
-
b,c,e){e=d(a,null,e,[]);for(var f=a.length;f--;)if(c=e[f])a[f]=!(b[f]=c)}):function(a,e,f){b[0]=a;d(b,null,f,c);return!c.pop()}}),has:f(function(a){return function(b){return 0<h(a,b).length}}),contains:f(function(a){return function(b){return-1<(b.textContent||b.innerText||va(b)).indexOf(a)}}),lang:f(function(a){ia.test(a||"")||h.error("unsupported lang: "+a);a=a.replace(da,ea).toLowerCase();return function(b){var c;do if(c=P?b.getAttribute("xml:lang")||b.getAttribute("lang"):b.lang)return c=c.toLowerCase(),
|
113 |
-
c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===y},focus:function(a){return a===E.activeElement&&(!E.hasFocus||E.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return!1===a.disabled},disabled:function(a){return!0===a.disabled},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){a.parentNode&&
|
114 |
-
a.parentNode.selectedIndex;return!0===a.selected},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if("@"<a.nodeName||3===a.nodeType||4===a.nodeType)return!1;return!0},parent:function(a){return!w.pseudos.empty(a)},header:function(a){return na.test(a.nodeName)},input:function(a){return ma.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==
|
115 |
-
(b=a.getAttribute("type"))||b.toLowerCase()===a.type)},first:m(function(){return[0]}),last:m(function(a,b){return[b-1]}),eq:m(function(a,b,c){return[0>c?c+b:c]}),even:m(function(a,b){for(var c=0;c<b;c+=2)a.push(c);return a}),odd:m(function(a,b){for(var c=1;c<b;c+=2)a.push(c);return a}),lt:m(function(a,b,c){for(b=0>c?c+b:c;0<=--b;)a.push(b);return a}),gt:m(function(a,b,c){for(c=0>c?c+b:c;++c<b;)a.push(c);return a})}};for(qa in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})w.pseudos[qa]=l(qa);
|
116 |
-
for(qa in{submit:!0,reset:!0})w.pseudos[qa]=u(qa);L=h.compile=function(a,b){var c,d=[],e=[],f=U[a+" "];if(!f){b||(b=n(a));for(c=b.length;c--;)f=z(b[c]),f[D]?d.push(f):e.push(f);f=U(a,O(e,d))}return f};w.pseudos.nth=w.pseudos.eq;w.filters=M.prototype=w.pseudos;w.setFilters=new M;J();h.attr=c.attr;c.find=h;c.expr=h.selectors;c.expr[":"]=c.expr.pseudos;c.unique=h.uniqueSort;c.text=h.getText;c.isXMLDoc=h.isXML;c.contains=h.contains})(r);var uc=/Until$/,vc=/^(?:parents|prev(?:Until|All))/,Ub=/^.[^:#\[\.,]*$/,
|
117 |
-
Cb=c.expr.match.needsContext,wc={children:!0,contents:!0,next:!0,prev:!0};c.fn.extend({find:function(a){var b,d,e,f=this.length;if("string"!==typeof a)return e=this,this.pushStack(c(a).filter(function(){for(b=0;b<f;b++)if(c.contains(e[b],this))return!0}));d=[];for(b=0;b<f;b++)c.find(a,this[b],d);d=this.pushStack(1<f?c.unique(d):d);d.selector=(this.selector?this.selector+" ":"")+a;return d},has:function(a){var b,d=c(a,this),e=d.length;return this.filter(function(){for(b=0;b<e;b++)if(c.contains(this,
|
118 |
-
d[b]))return!0})},not:function(a){return this.pushStack(Za(this,a,!1))},filter:function(a){return this.pushStack(Za(this,a,!0))},is:function(a){return!!a&&("string"===typeof a?Cb.test(a)?0<=c(a,this.context).index(this[0]):0<c.filter(a,this).length:0<this.filter(a).length)},closest:function(a,b){for(var d,e=0,f=this.length,g=[],h=Cb.test(a)||"string"!==typeof a?c(a,b||this.context):0;e<f;e++)for(d=this[e];d&&d.ownerDocument&&d!==b&&11!==d.nodeType;){if(h?-1<h.index(d):c.find.matchesSelector(d,a)){g.push(d);
|
119 |
-
break}d=d.parentNode}return this.pushStack(1<g.length?c.unique(g):g)},index:function(a){return a?"string"===typeof a?c.inArray(this[0],c(a)):c.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){var d="string"===typeof a?c(a,b):c.makeArray(a&&a.nodeType?[a]:a),d=c.merge(this.get(),d);return this.pushStack(c.unique(d))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});c.fn.andSelf=c.fn.addBack;c.each({parent:function(a){return(a=
|
120 |
-
a.parentNode)&&11!==a.nodeType?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",d)},next:function(a){return Ya(a,"nextSibling")},prev:function(a){return Ya(a,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling((a.parentNode||
|
121 |
-
{}).firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:c.merge([],a.childNodes)}},function(a,b){c.fn[a]=function(d,e){var f=c.map(this,b,d);uc.test(a)||(e=d);e&&"string"===typeof e&&(f=c.filter(e,f));f=1<this.length&&!wc[a]?c.unique(f):f;1<this.length&&vc.test(a)&&(f=f.reverse());return this.pushStack(f)}});c.extend({filter:function(a,b,d){d&&(a=":not("+a+")");return 1===b.length?c.find.matchesSelector(b[0],
|
122 |
-
a)?[b[0]]:[]:c.find.matches(a,b)},dir:function(a,b,d){var e=[];for(a=a[b];a&&9!==a.nodeType&&(d===m||1!==a.nodeType||!c(a).is(d));)1===a.nodeType&&e.push(a),a=a[b];return e},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}});var ab="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",xc=/ jQuery\d+="(?:null|\d+)"/g,Db=new RegExp("<(?:"+ab+")[\\s/>]",
|
123 |
-
"i"),Na=/^\s+/,Eb=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,Fb=/<([\w:]+)/,Gb=/<tbody/i,yc=/<|&#?\w+;/,zc=/<(?:script|style|link)/i,Ba=/^(?:checkbox|radio)$/i,Ac=/checked\s*(?:[^=]|=\s*.checked.)/i,Hb=/^$|\/(?:java|ecma)script/i,Wb=/^true\/(.*)/,Bc=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,H={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],
|
124 |
-
tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:c.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},Oa=$a(p).appendChild(p.createElement("div"));H.optgroup=H.option;H.tbody=H.tfoot=H.colgroup=H.caption=H.thead;H.th=H.td;c.fn.extend({text:function(a){return c.access(this,function(a){return a===m?c.text(this):this.empty().append((this[0]&&this[0].ownerDocument||p).createTextNode(a))},
|
125 |
-
null,a,arguments.length)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapAll(a.call(this,b))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var a=this;a.firstChild&&1===a.firstChild.nodeType;)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return c.isFunction(a)?this.each(function(b){c(this).wrapInner(a.call(this,b))}):this.each(function(){var b=c(this),d=b.contents();
|
126 |
-
d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){var b=c.isFunction(a);return this.each(function(d){c(this).wrapAll(b?a.call(this,d):a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){1!==this.nodeType&&11!==
|
127 |
-
this.nodeType&&9!==this.nodeType||this.insertBefore(a,this.firstChild)})},before:function(){return this.domManip(arguments,!1,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,!1,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var d,e=0;null!=(d=this[e]);e++)if(!a||0<c.filter(a,[d]).length)b||1!==d.nodeType||c.cleanData(B(d)),d.parentNode&&(b&&c.contains(d.ownerDocument,d)&&
|
128 |
-
Aa(B(d,"script")),d.parentNode.removeChild(d));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){for(1===a.nodeType&&c.cleanData(B(a,!1));a.firstChild;)a.removeChild(a.firstChild);a.options&&c.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){a=null==a?!1:a;b=null==b?a:b;return this.map(function(){return c.clone(this,a,b)})},html:function(a){return c.access(this,function(a){var d=this[0]||{},e=0,f=this.length;if(a===m)return 1===d.nodeType?d.innerHTML.replace(xc,
|
129 |
-
""):m;if(!("string"!==typeof a||zc.test(a)||!c.support.htmlSerialize&&Db.test(a)||!c.support.leadingWhitespace&&Na.test(a)||H[(Fb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(Eb,"<$1></$2>");try{for(;e<f;e++)d=this[e]||{},1===d.nodeType&&(c.cleanData(B(d,!1)),d.innerHTML=a);d=0}catch(g){}}d&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){c.isFunction(a)||"string"===typeof a||(a=c(a).not(this).detach());return this.domManip([a],!0,function(a){var d=this.nextSibling,
|
130 |
-
e=this.parentNode;e&&(c(this).remove(),e.insertBefore(a,d))})},detach:function(a){return this.remove(a,!0)},domManip:function(a,b,d){a=ub.apply([],a);var e,f,g,h,k=0,l=this.length,u=this,p=l-1,n=a[0],q=c.isFunction(n);if(q||!(1>=l||"string"!==typeof n||c.support.checkClone)&&Ac.test(n))return this.each(function(c){var e=u.eq(c);q&&(a[0]=n.call(this,c,b?e.html():m));e.domManip(a,b,d)});if(l&&(h=c.buildFragment(a,this[0].ownerDocument,!1,this),e=h.firstChild,1===h.childNodes.length&&(h=e),e)){b=b&&
|
131 |
-
c.nodeName(e,"tr");g=c.map(B(h,"script"),bb);for(f=g.length;k<l;k++)e=h,k!==p&&(e=c.clone(e,!0,!0),f&&c.merge(g,B(e,"script"))),d.call(b&&c.nodeName(this[k],"table")?Vb(this[k],"tbody"):this[k],e,k);if(f)for(h=g[g.length-1].ownerDocument,c.map(g,cb),k=0;k<f;k++)e=g[k],Hb.test(e.type||"")&&!c._data(e,"globalEval")&&c.contains(h,e)&&(e.src?c.ajax({url:e.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):c.globalEval((e.text||e.textContent||e.innerHTML||"").replace(Bc,"")));h=e=null}return this}});
|
132 |
-
c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(a){for(var e=0,f=[],g=c(a),h=g.length-1;e<=h;e++)a=e===h?this:this.clone(!0),c(g[e])[b](a),Fa.apply(f,a.get());return this.pushStack(f)}});c.extend({clone:function(a,b,d){var e,f,g,h,k,l=c.contains(a.ownerDocument,a);c.support.html5Clone||c.isXMLDoc(a)||!Db.test("<"+a.nodeName+">")?g=a.cloneNode(!0):(Oa.innerHTML=a.outerHTML,Oa.removeChild(g=Oa.firstChild));
|
133 |
-
if(!(c.support.noCloneEvent&&c.support.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||c.isXMLDoc(a)))for(e=B(g),k=B(a),h=0;null!=(f=k[h]);++h)if(e[h]){var m=e[h],p=void 0,n=void 0,q=void 0;if(1===m.nodeType){p=m.nodeName.toLowerCase();if(!c.support.noCloneEvent&&m[c.expando]){q=c._data(m);for(n in q.events)c.removeEvent(m,n,q.handle);m.removeAttribute(c.expando)}if("script"===p&&m.text!==f.text)bb(m).text=f.text,cb(m);else if("object"===p)m.parentNode&&(m.outerHTML=f.outerHTML),c.support.html5Clone&&
|
134 |
-
f.innerHTML&&!c.trim(m.innerHTML)&&(m.innerHTML=f.innerHTML);else if("input"===p&&Ba.test(f.type))m.defaultChecked=m.checked=f.checked,m.value!==f.value&&(m.value=f.value);else if("option"===p)m.defaultSelected=m.selected=f.defaultSelected;else if("input"===p||"textarea"===p)m.defaultValue=f.defaultValue}}if(b)if(d)for(k=k||B(a),e=e||B(g),h=0;null!=(f=k[h]);h++)db(f,e[h]);else db(a,g);e=B(g,"script");0<e.length&&Aa(e,!l&&B(a,"script"));return g},buildFragment:function(a,b,d,e){for(var f,g,h,k,l,m,
|
135 |
-
p=a.length,n=$a(b),q=[],r=0;r<p;r++)if((g=a[r])||0===g)if("object"===c.type(g))c.merge(q,g.nodeType?[g]:g);else if(yc.test(g)){h=h||n.appendChild(b.createElement("div"));k=(Fb.exec(g)||["",""])[1].toLowerCase();m=H[k]||H._default;h.innerHTML=m[1]+g.replace(Eb,"<$1></$2>")+m[2];for(f=m[0];f--;)h=h.lastChild;!c.support.leadingWhitespace&&Na.test(g)&&q.push(b.createTextNode(Na.exec(g)[0]));if(!c.support.tbody)for(f=(g="table"!==k||Gb.test(g)?"<table>"!==m[1]||Gb.test(g)?0:h:h.firstChild)&&g.childNodes.length;f--;)c.nodeName(l=
|
136 |
-
g.childNodes[f],"tbody")&&!l.childNodes.length&&g.removeChild(l);c.merge(q,h.childNodes);for(h.textContent="";h.firstChild;)h.removeChild(h.firstChild);h=n.lastChild}else q.push(b.createTextNode(g));h&&n.removeChild(h);c.support.appendChecked||c.grep(B(q,"input"),Xb);for(r=0;g=q[r++];)if(!e||-1===c.inArray(g,e))if(a=c.contains(g.ownerDocument,g),h=B(n.appendChild(g),"script"),a&&Aa(h),d)for(f=0;g=h[f++];)Hb.test(g.type||"")&&d.push(g);return n},cleanData:function(a,b){for(var d,e,f,g,h=0,k=c.expando,
|
137 |
-
l=c.cache,m=c.support.deleteExpando,p=c.event.special;null!=(d=a[h]);h++)if(b||c.acceptData(d))if(g=(f=d[k])&&l[f]){if(g.events)for(e in g.events)p[e]?c.event.remove(d,e):c.removeEvent(d,e,g.handle);l[f]&&(delete l[f],m?delete d[k]:typeof d.removeAttribute!==z?d.removeAttribute(k):d[k]=null,I.push(f))}}});var ga,T,U,Pa=/alpha\([^)]*\)/i,Cc=/opacity\s*=\s*([^)]*)/,Dc=/^(top|right|bottom|left)$/,Ec=/^(none|table(?!-c[ea]).+)/,Ib=/^margin/,Yb=new RegExp("^("+pa+")(.*)$","i"),ka=new RegExp("^("+pa+")(?!px)[a-z%]+$",
|
138 |
-
"i"),Fc=new RegExp("^([+-])=("+pa+")","i"),lb={BODY:"block"},Gc={position:"absolute",visibility:"hidden",display:"block"},Jb={letterSpacing:0,fontWeight:400},S=["Top","Right","Bottom","Left"],fb=["Webkit","O","Moz","ms"];c.fn.extend({css:function(a,b){return c.access(this,function(a,b,f){var g,h={},k=0;if(c.isArray(b)){g=T(a);for(f=b.length;k<f;k++)h[b[k]]=c.css(a,b[k],!1,g);return h}return f!==m?c.style(a,b,f):c.css(a,b)},a,b,1<arguments.length)},show:function(){return gb(this,!0)},hide:function(){return gb(this)},
|
139 |
-
toggle:function(a){var b="boolean"===typeof a;return this.each(function(){(b?a:fa(this))?c(this).show():c(this).hide()})}});c.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=U(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":c.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,d,e){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var f,g,h,k=c.camelCase(b),
|
140 |
-
l=a.style;b=c.cssProps[k]||(c.cssProps[k]=eb(l,k));h=c.cssHooks[b]||c.cssHooks[k];if(d!==m){if(g=typeof d,"string"===g&&(f=Fc.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(c.css(a,b)),g="number"),!(null==d||"number"===g&&isNaN(d)||("number"!==g||c.cssNumber[k]||(d+="px"),c.support.clearCloneStyle||""!==d||0!==b.indexOf("background")||(l[b]="inherit"),h&&"set"in h&&(d=h.set(a,d,e))===m)))try{l[b]=d}catch(p){}}else return h&&"get"in h&&(f=h.get(a,!1,e))!==m?f:l[b]}},css:function(a,b,d,e){var f,g;g=c.camelCase(b);
|
141 |
-
b=c.cssProps[g]||(c.cssProps[g]=eb(a.style,g));(g=c.cssHooks[b]||c.cssHooks[g])&&"get"in g&&(f=g.get(a,!0,d));f===m&&(f=U(a,b,e));"normal"===f&&b in Jb&&(f=Jb[b]);return""===d||d?(a=parseFloat(f),!0===d||c.isNumeric(a)?a||0:f):f},swap:function(a,b,c,e){var f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];c=c.apply(a,e||[]);for(f in b)a.style[f]=g[f];return c}});r.getComputedStyle?(T=function(a){return r.getComputedStyle(a,null)},U=function(a,b,d){var e,f=(d=d||T(a))?d.getPropertyValue(b)||d[b]:m,
|
142 |
-
g=a.style;d&&(""!==f||c.contains(a.ownerDocument,a)||(f=c.style(a,b)),ka.test(f)&&Ib.test(b)&&(a=g.width,b=g.minWidth,e=g.maxWidth,g.minWidth=g.maxWidth=g.width=f,f=d.width,g.width=a,g.minWidth=b,g.maxWidth=e));return f}):p.documentElement.currentStyle&&(T=function(a){return a.currentStyle},U=function(a,b,c){var e,f,g=(c=c||T(a))?c[b]:m,h=a.style;null==g&&h&&h[b]&&(g=h[b]);if(ka.test(g)&&!Dc.test(b)){c=h.left;if(f=(e=a.runtimeStyle)&&e.left)e.left=a.currentStyle.left;h.left="fontSize"===b?"1em":g;
|
143 |
-
g=h.pixelLeft+"px";h.left=c;f&&(e.left=f)}return""===g?"auto":g});c.each(["height","width"],function(a,b){c.cssHooks[b]={get:function(a,e,f){if(e)return 0===a.offsetWidth&&Ec.test(c.css(a,"display"))?c.swap(a,Gc,function(){return kb(a,b,f)}):kb(a,b,f)},set:function(a,e,f){var g=f&&T(a);return ib(a,e,f?jb(a,b,f,c.support.boxSizing&&"border-box"===c.css(a,"boxSizing",!1,g),g):0)}}});c.support.opacity||(c.cssHooks.opacity={get:function(a,b){return Cc.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||
|
144 |
-
"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var d=a.style,e=a.currentStyle,f=c.isNumeric(b)?"alpha(opacity="+100*b+")":"",g=e&&e.filter||d.filter||"";d.zoom=1;if((1<=b||""===b)&&""===c.trim(g.replace(Pa,""))&&d.removeAttribute&&(d.removeAttribute("filter"),""===b||e&&!e.filter))return;d.filter=Pa.test(g)?g.replace(Pa,f):g+" "+f}});c(function(){c.support.reliableMarginRight||(c.cssHooks.marginRight={get:function(a,b){if(b)return c.swap(a,{display:"inline-block"},U,[a,"marginRight"])}});
|
145 |
-
!c.support.pixelPosition&&c.fn.position&&c.each(["top","left"],function(a,b){c.cssHooks[b]={get:function(a,e){if(e)return e=U(a,b),ka.test(e)?c(a).position()[b]+"px":e}}})});c.expr&&c.expr.filters&&(c.expr.filters.hidden=function(a){return 0>=a.offsetWidth&&0>=a.offsetHeight||!c.support.reliableHiddenOffsets&&"none"===(a.style&&a.style.display||c.css(a,"display"))},c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)});c.each({margin:"",padding:"",border:"Width"},function(a,b){c.cssHooks[a+
|
146 |
-
b]={expand:function(c){var e=0,f={};for(c="string"===typeof c?c.split(" "):[c];4>e;e++)f[a+S[e]+b]=c[e]||c[e-2]||c[0];return f}};Ib.test(a)||(c.cssHooks[a+b].set=ib)});var Hc=/%20/g,Zb=/\[\]$/,Kb=/\r?\n/g,Ic=/^(?:submit|button|image|reset|file)$/i,Jc=/^(?:input|select|textarea|keygen)/i;c.fn.extend({serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=c.prop(this,"elements");return a?c.makeArray(a):this}).filter(function(){var a=this.type;
|
147 |
-
return this.name&&!c(this).is(":disabled")&&Jc.test(this.nodeName)&&!Ic.test(a)&&(this.checked||!Ba.test(a))}).map(function(a,b){var d=c(this).val();return null==d?null:c.isArray(d)?c.map(d,function(a){return{name:b.name,value:a.replace(Kb,"\r\n")}}):{name:b.name,value:d.replace(Kb,"\r\n")}}).get()}});c.param=function(a,b){var d,e=[],f=function(a,b){b=c.isFunction(b)?b():null==b?"":b;e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};b===m&&(b=c.ajaxSettings&&c.ajaxSettings.traditional);
|
148 |
-
if(c.isArray(a)||a.jquery&&!c.isPlainObject(a))c.each(a,function(){f(this.name,this.value)});else for(d in a)Ca(d,a[d],b,f);return e.join("&").replace(Hc,"+")};c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){c.fn[b]=function(a,c){return 0<arguments.length?this.on(b,null,a,c):this.trigger(b)}});c.fn.hover=function(a,
|
149 |
-
b){return this.mouseenter(a).mouseleave(b||a)};var F,W,Qa=c.now(),Ra=/\?/,Kc=/#.*$/,Lb=/([?&])_=[^&]*/,Lc=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,Mc=/^(?:GET|HEAD)$/,Nc=/^\/\//,Mb=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Nb=c.fn.load,Ob={},Da={},Pb="*/".concat("*");try{W=bc.href}catch(a){W=p.createElement("a"),W.href="",W=W.href}F=Mb.exec(W.toLowerCase())||[];c.fn.load=function(a,b,d){if("string"!==typeof a&&Nb)return Nb.apply(this,arguments);var e,f,g,h=this,k=a.indexOf(" ");0<=k&&(e=a.slice(k,a.length),
|
150 |
-
a=a.slice(0,k));c.isFunction(b)?(d=b,b=m):b&&"object"===typeof b&&(g="POST");0<h.length&&c.ajax({url:a,type:g,dataType:"html",data:b}).done(function(a){f=arguments;h.html(e?c("<div>").append(c.parseHTML(a)).find(e):a)}).complete(d&&function(a,b){h.each(d,f||[a.responseText,b,a])});return this};c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){c.fn[b]=function(a){return this.on(b,a)}});c.each(["get","post"],function(a,b){c[b]=function(a,e,f,g){c.isFunction(e)&&
|
151 |
-
(g=g||f,f=e,e=m);return c.ajax({url:a,type:b,dataType:g,data:e,success:f})}});c.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:W,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(F[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Pb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",
|
152 |
-
text:"responseText"},converters:{"* text":r.String,"text html":!0,"text json":c.parseJSON,"text xml":c.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Ea(Ea(a,c.ajaxSettings),b):Ea(c.ajaxSettings,a)},ajaxPrefilter:nb(Ob),ajaxTransport:nb(Da),ajax:function(a,b){function d(a,b,d,e){var f,t,J,E,y=b;if(2!==M){M=2;k&&clearTimeout(k);p=m;h=e||"";v.readyState=0<a?4:0;if(d){E=n;e=v;var C,K,G,z,I=E.contents,F=E.dataTypes,D=E.responseFields;for(z in D)z in d&&(e[D[z]]=d[z]);for(;"*"===
|
153 |
-
F[0];)F.shift(),K===m&&(K=E.mimeType||e.getResponseHeader("Content-Type"));if(K)for(z in I)if(I[z]&&I[z].test(K)){F.unshift(z);break}if(F[0]in d)G=F[0];else{for(z in d){if(!F[0]||E.converters[z+" "+F[0]]){G=z;break}C||(C=z)}G=G||C}G?(G!==F[0]&&F.unshift(G),E=d[G]):E=void 0}if(200<=a&&300>a||304===a)if(n.ifModified&&((d=v.getResponseHeader("Last-Modified"))&&(c.lastModified[g]=d),(d=v.getResponseHeader("etag"))&&(c.etag[g]=d)),204===a)f=!0,y="nocontent";else if(304===a)f=!0,y="notmodified";else{a:{t=
|
154 |
-
n;J=E;var L,x,y={};C=0;K=t.dataTypes.slice();G=K[0];t.dataFilter&&(J=t.dataFilter(J,t.dataType));if(K[1])for(x in t.converters)y[x.toLowerCase()]=t.converters[x];for(;d=K[++C];)if("*"!==d){if("*"!==G&&G!==d){x=y[G+" "+d]||y["* "+d];if(!x)for(L in y)if(f=L.split(" "),f[1]===d&&(x=y[G+" "+f[0]]||y["* "+f[0]])){!0===x?x=y[L]:!0!==y[L]&&(d=f[0],K.splice(C--,0,d));break}if(!0!==x)if(x&&t["throws"])J=x(J);else try{J=x(J)}catch(N){f={state:"parsererror",error:x?N:"No conversion from "+G+" to "+d};break a}}G=
|
155 |
-
d}f={state:"success",data:J}}y=f.state;t=f.data;J=f.error;f=!J}else if(J=y,a||!y)y="error",0>a&&(a=0);v.status=a;v.statusText=(b||y)+"";f?A.resolveWith(q,[t,y,v]):A.rejectWith(q,[v,y,J]);v.statusCode(H);H=m;l&&r.trigger(f?"ajaxSuccess":"ajaxError",[v,n,f?t:J]);B.fireWith(q,[v,y]);l&&(r.trigger("ajaxComplete",[v,n]),--c.active||c.event.trigger("ajaxStop"))}}"object"===typeof a&&(b=a,a=m);b=b||{};var e,f,g,h,k,l,p,t,n=c.ajaxSetup({},b),q=n.context||n,r=n.context&&(q.nodeType||q.jquery)?c(q):c.event,
|
156 |
-
A=c.Deferred(),B=c.Callbacks("once memory"),H=n.statusCode||{},C={},z={},M=0,I="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===M){if(!t)for(t={};b=Lc.exec(h);)t[b[1].toLowerCase()]=b[2];b=t[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===M?h:null},setRequestHeader:function(a,b){var c=a.toLowerCase();M||(a=z[c]=z[c]||a,C[a]=b);return this},overrideMimeType:function(a){M||(n.mimeType=a);return this},statusCode:function(a){var b;if(a)if(2>M)for(b in a)H[b]=
|
157 |
-
[H[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){a=a||I;p&&p.abort(a);d(0,a);return this}};A.promise(v).complete=B.add;v.success=v.done;v.error=v.fail;n.url=((a||n.url||W)+"").replace(Kc,"").replace(Nc,F[1]+"//");n.type=b.method||b.type||n.method||n.type;n.dataTypes=c.trim(n.dataType||"*").toLowerCase().match(O)||[""];null==n.crossDomain&&(e=Mb.exec(n.url.toLowerCase()),n.crossDomain=!(!e||e[1]===F[1]&&e[2]===F[2]&&(e[3]||("http:"===e[1]?80:443))==(F[3]||("http:"===F[1]?80:443))));
|
158 |
-
n.data&&n.processData&&"string"!==typeof n.data&&(n.data=c.param(n.data,n.traditional));ob(Ob,n,b,v);if(2===M)return v;(l=n.global)&&0===c.active++&&c.event.trigger("ajaxStart");n.type=n.type.toUpperCase();n.hasContent=!Mc.test(n.type);g=n.url;n.hasContent||(n.data&&(g=n.url+=(Ra.test(g)?"&":"?")+n.data,delete n.data),!1===n.cache&&(n.url=Lb.test(g)?g.replace(Lb,"$1_="+Qa++):g+(Ra.test(g)?"&":"?")+"_="+Qa++));n.ifModified&&(c.lastModified[g]&&v.setRequestHeader("If-Modified-Since",c.lastModified[g]),
|
159 |
-
c.etag[g]&&v.setRequestHeader("If-None-Match",c.etag[g]));(n.data&&n.hasContent&&!1!==n.contentType||b.contentType)&&v.setRequestHeader("Content-Type",n.contentType);v.setRequestHeader("Accept",n.dataTypes[0]&&n.accepts[n.dataTypes[0]]?n.accepts[n.dataTypes[0]]+("*"!==n.dataTypes[0]?", "+Pb+"; q=0.01":""):n.accepts["*"]);for(f in n.headers)v.setRequestHeader(f,n.headers[f]);if(n.beforeSend&&(!1===n.beforeSend.call(q,v,n)||2===M))return v.abort();I="abort";for(f in{success:1,error:1,complete:1})v[f](n[f]);
|
160 |
-
if(p=ob(Da,n,b,v)){v.readyState=1;l&&r.trigger("ajaxSend",[v,n]);n.async&&0<n.timeout&&(k=setTimeout(function(){v.abort("timeout")},n.timeout));try{M=1,p.send(C,d)}catch(w){if(2>M)d(-1,w);else throw w;}}else d(-1,"No Transport");return v},getScript:function(a,b){return c.get(a,m,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")}});c.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},
|
161 |
-
converters:{"text script":function(a){c.globalEval(a);return a}}});c.ajaxPrefilter("script",function(a){a.cache===m&&(a.cache=!1);a.crossDomain&&(a.type="GET",a.global=!1)});c.ajaxTransport("script",function(a){if(a.crossDomain){var b,d=p.head||c("head")[0]||p.documentElement;return{send:function(c,f){b=p.createElement("script");b.async=!0;a.scriptCharset&&(b.charset=a.scriptCharset);b.src=a.url;b.onload=b.onreadystatechange=function(a,c){if(c||!b.readyState||/loaded|complete/.test(b.readyState))b.onload=
|
162 |
-
b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||f(200,"success")};d.insertBefore(b,d.firstChild)},abort:function(){if(b)b.onload(m,!0)}}}});var Qb=[],Sa=/(=)\?(?=&|$)|\?\?/;c.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Qb.pop()||c.expando+"_"+Qa++;this[a]=!0;return a}});c.ajaxPrefilter("json jsonp",function(a,b,d){var e,f,g,h=!1!==a.jsonp&&(Sa.test(a.url)?"url":"string"===typeof a.data&&!(a.contentType||"").indexOf("application/x-www-form-urlencoded")&&
|
163 |
-
Sa.test(a.data)&&"data");if(h||"jsonp"===a.dataTypes[0])return e=a.jsonpCallback=c.isFunction(a.jsonpCallback)?a.jsonpCallback():a.jsonpCallback,h?a[h]=a[h].replace(Sa,"$1"+e):!1!==a.jsonp&&(a.url+=(Ra.test(a.url)?"&":"?")+a.jsonp+"="+e),a.converters["script json"]=function(){g||c.error(e+" was not called");return g[0]},a.dataTypes[0]="json",f=r[e],r[e]=function(){g=arguments},d.always(function(){r[e]=f;a[e]&&(a.jsonpCallback=b.jsonpCallback,Qb.push(e));g&&c.isFunction(f)&&f(g[0]);g=f=m}),"script"});
|
164 |
-
var Q,X,Oc=0,Ta=r.ActiveXObject&&function(){for(var a in Q)Q[a](m,!0)};c.ajaxSettings.xhr=r.ActiveXObject?function(){var a;if(!(a=!this.isLocal&&pb()))a:{try{a=new r.ActiveXObject("Microsoft.XMLHTTP");break a}catch(b){}a=void 0}return a}:pb;X=c.ajaxSettings.xhr();c.support.cors=!!X&&"withCredentials"in X;(X=c.support.ajax=!!X)&&c.ajaxTransport(function(a){if(!a.crossDomain||c.support.cors){var b;return{send:function(d,e){var f,g,h=a.xhr();a.username?h.open(a.type,a.url,a.async,a.username,a.password):
|
165 |
-
h.open(a.type,a.url,a.async);if(a.xhrFields)for(g in a.xhrFields)h[g]=a.xhrFields[g];a.mimeType&&h.overrideMimeType&&h.overrideMimeType(a.mimeType);a.crossDomain||d["X-Requested-With"]||(d["X-Requested-With"]="XMLHttpRequest");try{for(g in d)h.setRequestHeader(g,d[g])}catch(k){}h.send(a.hasContent&&a.data||null);b=function(d,g){var p,t,n,q;try{if(b&&(g||4===h.readyState))if(b=m,f&&(h.onreadystatechange=c.noop,Ta&&delete Q[f]),g)4!==h.readyState&&h.abort();else{q={};p=h.status;t=h.getAllResponseHeaders();
|
166 |
-
"string"===typeof h.responseText&&(q.text=h.responseText);try{n=h.statusText}catch(r){n=""}p||!a.isLocal||a.crossDomain?1223===p&&(p=204):p=q.text?200:404}}catch(r){g||e(-1,r)}q&&e(p,n,q,t)};a.async?4===h.readyState?setTimeout(b):(f=++Oc,Ta&&(Q||(Q={},c(r).unload(Ta)),Q[f]=b),h.onreadystatechange=b):b()},abort:function(){b&&b(m,!0)}}}});var Y,xa,Pc=/^(?:toggle|show|hide)$/,Qc=new RegExp("^(?:([+-])=|)("+pa+")([a-z%]*)$","i"),Rc=/queueHooks$/,la=[function(a,b,d){var e,f,g,h,k,l,m=this,p=a.style,n=
|
167 |
-
{},q=[],r=a.nodeType&&fa(a);d.queue||(k=c._queueHooks(a,"fx"),null==k.unqueued&&(k.unqueued=0,l=k.empty.fire,k.empty.fire=function(){k.unqueued||l()}),k.unqueued++,m.always(function(){m.always(function(){k.unqueued--;c.queue(a,"fx").length||k.empty.fire()})}));1===a.nodeType&&("height"in b||"width"in b)&&(d.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===c.css(a,"display")&&"none"===c.css(a,"float")&&(c.support.inlineBlockNeedsLayout&&"inline"!==hb(a.nodeName)?p.zoom=1:p.display="inline-block"));
|
168 |
-
d.overflow&&(p.overflow="hidden",c.support.shrinkWrapBlocks||m.always(function(){p.overflow=d.overflow[0];p.overflowX=d.overflow[1];p.overflowY=d.overflow[2]}));for(f in b)g=b[f],Pc.exec(g)&&(delete b[f],e=e||"toggle"===g,g!==(r?"hide":"show")&&q.push(f));if(b=q.length)for(g=c._data(a,"fxshow")||c._data(a,"fxshow",{}),("hidden"in g)&&(r=g.hidden),e&&(g.hidden=!r),r?c(a).show():m.done(function(){c(a).hide()}),m.done(function(){var b;c._removeData(a,"fxshow");for(b in n)c.style(a,b,n[b])}),f=0;f<b;f++)e=
|
169 |
-
q[f],h=m.createTween(e,r?g[e]:0),n[e]=g[e]||c.style(a,e),e in g||(g[e]=h.start,r&&(h.end=h.start,h.start="width"===e||"height"===e?1:0))}],ha={"*":[function(a,b){var d,e,f=this.createTween(a,b),g=Qc.exec(b),h=f.cur(),k=+h||0,l=1,m=20;if(g){d=+g[2];e=g[3]||(c.cssNumber[a]?"":"px");if("px"!==e&&k){k=c.css(f.elem,a,!0)||d||1;do l=l||".5",k/=l,c.style(f.elem,a,k+e);while(l!==(l=f.cur()/h)&&1!==l&&--m)}f.unit=e;f.start=k;f.end=g[1]?k+(g[1]+1)*d:d}return f}]};c.Animation=c.extend(rb,{tweener:function(a,
|
170 |
-
b){c.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var d,e=0,f=a.length;e<f;e++)d=a[e],ha[d]=ha[d]||[],ha[d].unshift(b)},prefilter:function(a,b){b?la.unshift(a):la.push(a)}});c.Tween=A;A.prototype={constructor:A,init:function(a,b,d,e,f,g){this.elem=a;this.prop=d;this.easing=f||"swing";this.options=b;this.start=this.now=this.cur();this.end=e;this.unit=g||(c.cssNumber[d]?"":"px")},cur:function(){var a=A.propHooks[this.prop];return a&&a.get?a.get(this):A.propHooks._default.get(this)},run:function(a){var b,
|
171 |
-
d=A.propHooks[this.prop];this.pos=this.options.duration?b=c.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):b=a;this.now=(this.end-this.start)*b+this.start;this.options.step&&this.options.step.call(this.elem,this.now,this);d&&d.set?d.set(this):A.propHooks._default.set(this);return this}};A.prototype.init.prototype=A.prototype;A.propHooks={_default:{get:function(a){return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(a=c.css(a.elem,a.prop,""))&&"auto"!==a?
|
172 |
-
a:0:a.elem[a.prop]},set:function(a){if(c.fx.step[a.prop])c.fx.step[a.prop](a);else a.elem.style&&(null!=a.elem.style[c.cssProps[a.prop]]||c.cssHooks[a.prop])?c.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}};A.propHooks.scrollTop=A.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}};c.each(["toggle","show","hide"],function(a,b){var d=c.fn[b];c.fn[b]=function(a,c,g){return null==a||"boolean"===typeof a?d.apply(this,arguments):this.animate(ma(b,
|
173 |
-
!0),a,c,g)}});c.fn.extend({fadeTo:function(a,b,c,e){return this.filter(fa).css("opacity",0).show().end().animate({opacity:b},a,c,e)},animate:function(a,b,d,e){var f=c.isEmptyObject(a),g=c.speed(b,d,e),h=function(){var b=rb(this,c.extend({},a),g);h.finish=function(){b.stop(!0)};(f||c._data(this,"finish"))&&b.stop(!0)};h.finish=h;return f||!1===g.queue?this.each(h):this.queue(g.queue,h)},stop:function(a,b,d){var e=function(a){var b=a.stop;delete a.stop;b(d)};"string"!==typeof a&&(d=b,b=a,a=m);b&&!1!==
|
174 |
-
a&&this.queue(a||"fx",[]);return this.each(function(){var b=!0,g=null!=a&&a+"queueHooks",h=c.timers,k=c._data(this);if(g)k[g]&&k[g].stop&&e(k[g]);else for(g in k)k[g]&&k[g].stop&&Rc.test(g)&&e(k[g]);for(g=h.length;g--;)h[g].elem!==this||null!=a&&h[g].queue!==a||(h[g].anim.stop(d),b=!1,h.splice(g,1));!b&&d||c.dequeue(this,a)})},finish:function(a){!1!==a&&(a=a||"fx");return this.each(function(){var b,d=c._data(this),e=d[a+"queue"];b=d[a+"queueHooks"];var f=c.timers,g=e?e.length:0;d.finish=!0;c.queue(this,
|
175 |
-
a,[]);b&&b.cur&&b.cur.finish&&b.cur.finish.call(this);for(b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;b<g;b++)e[b]&&e[b].finish&&e[b].finish.call(this);delete d.finish})}});c.each({slideDown:ma("show"),slideUp:ma("hide"),slideToggle:ma("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){c.fn[a]=function(a,c,f){return this.animate(b,a,c,f)}});c.speed=function(a,b,d){var e=a&&"object"===typeof a?c.extend({},
|
176 |
-
a):{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};e.duration=c.fx.off?0:"number"===typeof e.duration?e.duration:e.duration in c.fx.speeds?c.fx.speeds[e.duration]:c.fx.speeds._default;if(null==e.queue||!0===e.queue)e.queue="fx";e.old=e.complete;e.complete=function(){c.isFunction(e.old)&&e.old.call(this);e.queue&&c.dequeue(this,e.queue)};return e};c.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}};c.timers=[];c.fx=A.prototype.init;
|
177 |
-
c.fx.tick=function(){var a,b=c.timers,d=0;for(Y=c.now();d<b.length;d++)a=b[d],a()||b[d]!==a||b.splice(d--,1);b.length||c.fx.stop();Y=m};c.fx.timer=function(a){a()&&c.timers.push(a)&&c.fx.start()};c.fx.interval=13;c.fx.start=function(){xa||(xa=setInterval(c.fx.tick,c.fx.interval))};c.fx.stop=function(){clearInterval(xa);xa=null};c.fx.speeds={slow:600,fast:200,_default:400};c.fx.step={};c.expr&&c.expr.filters&&(c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length});
|
178 |
-
c.fn.offset=function(a){if(arguments.length)return a===m?this:this.each(function(b){c.offset.setOffset(this,a,b)});var b,d,e={top:0,left:0},f=(d=this[0])&&d.ownerDocument;if(f){b=f.documentElement;if(!c.contains(b,d))return e;typeof d.getBoundingClientRect!==z&&(e=d.getBoundingClientRect());d=sb(f);return{top:e.top+(d.pageYOffset||b.scrollTop)-(b.clientTop||0),left:e.left+(d.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}}};c.offset={setOffset:function(a,b,d){var e=c.css(a,"position");"static"===e&&
|
179 |
-
(a.style.position="relative");var f=c(a),g=f.offset(),h=c.css(a,"top"),k=c.css(a,"left"),l={},m={};("absolute"===e||"fixed"===e)&&-1<c.inArray("auto",[h,k])?(m=f.position(),e=m.top,k=m.left):(e=parseFloat(h)||0,k=parseFloat(k)||0);c.isFunction(b)&&(b=b.call(a,d,g));null!=b.top&&(l.top=b.top-g.top+e);null!=b.left&&(l.left=b.left-g.left+k);"using"in b?b.using.call(a,l):f.css(l)}};c.fn.extend({position:function(){if(this[0]){var a,b,d={top:0,left:0},e=this[0];"fixed"===c.css(e,"position")?b=e.getBoundingClientRect():
|
180 |
-
(a=this.offsetParent(),b=this.offset(),c.nodeName(a[0],"html")||(d=a.offset()),d.top+=c.css(a[0],"borderTopWidth",!0),d.left+=c.css(a[0],"borderLeftWidth",!0));return{top:b.top-d.top-c.css(e,"marginTop",!0),left:b.left-d.left-c.css(e,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||p.documentElement;a&&!c.nodeName(a,"html")&&"static"===c.css(a,"position");)a=a.offsetParent;return a||p.documentElement})}});c.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},
|
181 |
-
function(a,b){var d=/Y/.test(b);c.fn[a]=function(e){return c.access(this,function(a,e,h){var k=sb(a);if(h===m)return k?b in k?k[b]:k.document.documentElement[e]:a[e];k?k.scrollTo(d?c(k).scrollLeft():h,d?h:c(k).scrollTop()):a[e]=h},a,e,arguments.length,null)}});c.each({Height:"height",Width:"width"},function(a,b){c.each({padding:"inner"+a,content:b,"":"outer"+a},function(d,e){c.fn[e]=function(e,g){var h=arguments.length&&(d||"boolean"!==typeof e),k=d||(!0===e||!0===g?"margin":"border");return c.access(this,
|
1 |
+
(function(r,m){function ya(a){var b=a.length,d=c.type(a);return c.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===d||"function"!==d&&(0===b||"number"===typeof b&&0<b&&b-1 in a)}function Rb(a){var b=Ua[a]={};c.each(a.match(O)||[],function(a,c){b[c]=!0});return b}function Va(a,b,d,e){if(c.acceptData(a)){var f=c.expando,g="string"===typeof b,h=a.nodeType,k=h?c.cache:a,l=h?a[f]:a[f]&&f;if(l&&k[l]&&(e||k[l].data)||!g||d!==m){l||(h?a[f]=l=I.pop()||c.guid++:l=f);k[l]||(k[l]={},h||(k[l].toJSON=c.noop));if("object"===
|
2 |
+
typeof b||"function"===typeof b)e?k[l]=c.extend(k[l],b):k[l].data=c.extend(k[l].data,b);a=k[l];e||(a.data||(a.data={}),a=a.data);d!==m&&(a[c.camelCase(b)]=d);g?(d=a[b],null==d&&(d=a[c.camelCase(b)])):d=a;return d}}}function Wa(a,b,d){if(c.acceptData(a)){var e,f,g,h=a.nodeType,k=h?c.cache:a,l=h?a[c.expando]:c.expando;if(k[l]){if(b&&(g=d?k[l]:k[l].data)){c.isArray(b)?b=b.concat(c.map(b,c.camelCase)):b in g?b=[b]:(b=c.camelCase(b),b=b in g?[b]:b.split(" "));e=0;for(f=b.length;e<f;e++)delete g[b[e]];
|
3 |
+
if(!(d?za:c.isEmptyObject)(g))return}if(!d&&(delete k[l].data,!za(k[l])))return;h?c.cleanData([a],!0):c.support.deleteExpando||k!=k.window?delete k[l]:k[l]=null}}}function Xa(a,b,d){if(d===m&&1===a.nodeType)if(d="data-"+b.replace(Sb,"-$1").toLowerCase(),d=a.getAttribute(d),"string"===typeof d){try{d="true"===d?!0:"false"===d?!1:"null"===d?null:+d+""===d?+d:Tb.test(d)?c.parseJSON(d):d}catch(e){}c.data(a,b,d)}else d=m;return d}function za(a){for(var b in a)if(("data"!==b||!c.isEmptyObject(a[b]))&&"toJSON"!==
|
4 |
+
b)return!1;return!0}function ba(){return!0}function R(){return!1}function Ya(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}function Za(a,b,d){b=b||0;if(c.isFunction(b))return c.grep(a,function(a,c){return!!b.call(a,c,a)===d});if(b.nodeType)return c.grep(a,function(a){return a===b===d});if("string"===typeof b){var e=c.grep(a,function(a){return 1===a.nodeType});if(Ub.test(b))return c.filter(b,e,!d);b=c.filter(b,e)}return c.grep(a,function(a){return 0<=c.inArray(a,b)===d})}function $a(a){var b=ab.split("|");
|
5 |
+
a=a.createDocumentFragment();if(a.createElement)for(;b.length;)a.createElement(b.pop());return a}function Vb(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function bb(a){var b=a.getAttributeNode("type");a.type=(b&&b.specified)+"/"+a.type;return a}function cb(a){var b=Wb.exec(a.type);b?a.type=b[1]:a.removeAttribute("type");return a}function Aa(a,b){for(var d,e=0;null!=(d=a[e]);e++)c._data(d,"globalEval",!b||c._data(b[e],"globalEval"))}function db(a,b){if(1===
|
6 |
+
b.nodeType&&c.hasData(a)){var d,e,f;e=c._data(a);var g=c._data(b,e),h=e.events;if(h)for(d in delete g.handle,g.events={},h)for(e=0,f=h[d].length;e<f;e++)c.event.add(b,d,h[d][e]);g.data&&(g.data=c.extend({},g.data))}}function B(a,b){var d,e,f=0,g=typeof a.getElementsByTagName!==z?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==z?a.querySelectorAll(b||"*"):m;if(!g)for(g=[],d=a.childNodes||a;null!=(e=d[f]);f++)!b||c.nodeName(e,b)?g.push(e):c.merge(g,B(e,b));return b===m||b&&c.nodeName(a,b)?
|
7 |
+
c.merge([a],g):g}function Xb(a){Ba.test(a.type)&&(a.defaultChecked=a.checked)}function eb(a,b){if(b in a)return b;for(var c=b.charAt(0).toUpperCase()+b.slice(1),e=b,f=fb.length;f--;)if(b=fb[f]+c,b in a)return b;return e}function fa(a,b){a=b||a;return"none"===c.css(a,"display")||!c.contains(a.ownerDocument,a)}function gb(a,b){for(var d,e,f,g=[],h=0,k=a.length;h<k;h++)e=a[h],e.style&&(g[h]=c._data(e,"olddisplay"),d=e.style.display,b?(g[h]||"none"!==d||(e.style.display=""),""===e.style.display&&fa(e)&&
|
8 |
+
(g[h]=c._data(e,"olddisplay",hb(e.nodeName)))):g[h]||(f=fa(e),(d&&"none"!==d||!f)&&c._data(e,"olddisplay",f?d:c.css(e,"display"))));for(h=0;h<k;h++)e=a[h],!e.style||b&&"none"!==e.style.display&&""!==e.style.display||(e.style.display=b?g[h]||"":"none");return a}function ib(a,b,c){return(a=Yb.exec(b))?Math.max(0,a[1]-(c||0))+(a[2]||"px"):b}function jb(a,b,d,e,f){b=d===(e?"border":"content")?4:"width"===b?1:0;for(var g=0;4>b;b+=2)"margin"===d&&(g+=c.css(a,d+S[b],!0,f)),e?("content"===d&&(g-=c.css(a,
|
9 |
+
"padding"+S[b],!0,f)),"margin"!==d&&(g-=c.css(a,"border"+S[b]+"Width",!0,f))):(g+=c.css(a,"padding"+S[b],!0,f),"padding"!==d&&(g+=c.css(a,"border"+S[b]+"Width",!0,f)));return g}function kb(a,b,d){var e=!0,f="width"===b?a.offsetWidth:a.offsetHeight,g=T(a),h=c.support.boxSizing&&"border-box"===c.css(a,"boxSizing",!1,g);if(0>=f||null==f){f=U(a,b,g);if(0>f||null==f)f=a.style[b];if(ka.test(f))return f;e=h&&(c.support.boxSizingReliable||f===a.style[b]);f=parseFloat(f)||0}return f+jb(a,b,d||(h?"border":
|
10 |
+
"content"),e,g)+"px"}function hb(a){var b=p,d=lb[a];d||(d=mb(a,b),"none"!==d&&d||(ga=(ga||c("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(b.documentElement),b=(ga[0].contentWindow||ga[0].contentDocument).document,b.write("<!doctype html><html><body>"),b.close(),d=mb(a,b),ga.detach()),lb[a]=d);return d}function mb(a,b){var d=c(b.createElement(a)).appendTo(b.body),e=c.css(d[0],"display");d.remove();return e}function Ca(a,b,d,e){var f;if(c.isArray(b))c.each(b,
|
11 |
+
function(b,c){d||Zb.test(a)?e(a,c):Ca(a+"["+("object"===typeof c?b:"")+"]",c,d,e)});else if(d||"object"!==c.type(b))e(a,b);else for(f in b)Ca(a+"["+f+"]",b[f],d,e)}function nb(a){return function(b,d){"string"!==typeof b&&(d=b,b="*");var e,f=0,g=b.toLowerCase().match(O)||[];if(c.isFunction(d))for(;e=g[f++];)"+"===e[0]?(e=e.slice(1)||"*",(a[e]=a[e]||[]).unshift(d)):(a[e]=a[e]||[]).push(d)}}function ob(a,b,d,e){function f(k){var l;g[k]=!0;c.each(a[k]||[],function(a,c){var k=c(b,d,e);if("string"===typeof k&&
|
12 |
+
!h&&!g[k])return b.dataTypes.unshift(k),f(k),!1;if(h)return!(l=k)});return l}var g={},h=a===Da;return f(b.dataTypes[0])||!g["*"]&&f("*")}function Ea(a,b){var d,e,f=c.ajaxSettings.flatOptions||{};for(e in b)b[e]!==m&&((f[e]?a:d||(d={}))[e]=b[e]);d&&c.extend(!0,a,d);return a}function pb(){try{return new r.XMLHttpRequest}catch(a){}}function qb(){setTimeout(function(){Y=m});return Y=c.now()}function $b(a,b){c.each(b,function(b,c){for(var f=(ha[b]||[]).concat(ha["*"]),g=0,h=f.length;g<h&&!f[g].call(a,
|
13 |
+
b,c);g++);})}function rb(a,b,d){var e,f=0,g=la.length,h=c.Deferred().always(function(){delete k.elem}),k=function(){if(e)return!1;for(var b=Y||qb(),b=Math.max(0,l.startTime+l.duration-b),c=1-(b/l.duration||0),d=0,f=l.tweens.length;d<f;d++)l.tweens[d].run(c);h.notifyWith(a,[l,c,b]);if(1>c&&f)return b;h.resolveWith(a,[l]);return!1},l=h.promise({elem:a,props:c.extend({},b),opts:c.extend(!0,{specialEasing:{}},d),originalProperties:b,originalOptions:d,startTime:Y||qb(),duration:d.duration,tweens:[],createTween:function(b,
|
14 |
+
d){var e=c.Tween(a,l.opts,b,d,l.opts.specialEasing[b]||l.opts.easing);l.tweens.push(e);return e},stop:function(b){var c=0,d=b?l.tweens.length:0;if(e)return this;for(e=!0;c<d;c++)l.tweens[c].run(1);b?h.resolveWith(a,[l,b]):h.rejectWith(a,[l,b]);return this}});d=l.props;for(ac(d,l.opts.specialEasing);f<g;f++)if(b=la[f].call(l,a,d,l.opts))return b;$b(l,d);c.isFunction(l.opts.start)&&l.opts.start.call(a,l);c.fx.timer(c.extend(k,{elem:a,anim:l,queue:l.opts.queue}));return l.progress(l.opts.progress).done(l.opts.done,
|
15 |
+
l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function ac(a,b){var d,e,f,g,h;for(f in a)if(e=c.camelCase(f),g=b[e],d=a[f],c.isArray(d)&&(g=d[1],d=a[f]=d[0]),f!==e&&(a[e]=d,delete a[f]),(h=c.cssHooks[e])&&"expand"in h)for(f in d=h.expand(d),delete a[e],d)f in a||(a[f]=d[f],b[f]=g);else b[e]=g}function A(a,b,c,e,f){return new A.prototype.init(a,b,c,e,f)}function ma(a,b){var c,e={height:a},f=0;for(b=b?1:0;4>f;f+=2-b)c=S[f],e["margin"+c]=e["padding"+c]=a;b&&(e.opacity=e.width=a);return e}function sb(a){return c.isWindow(a)?
|
16 |
+
a:9===a.nodeType?a.defaultView||a.parentWindow:!1}var na,tb,z=typeof m,p=r.document,bc=r.location,cc=r.jQuery,dc=r.$,oa={},I=[],ub=I.concat,Fa=I.push,C=I.slice,vb=I.indexOf,ec=oa.toString,ia=oa.hasOwnProperty,Ga="1.9.1".trim,c=function(a,b){return new c.fn.init(a,b,tb)},pa=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,O=/\S+/g,fc=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,gc=/^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,wb=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,hc=/^[\],:{}\s]*$/,ic=/(?:^|:|,)(?:\s*\[)+/g,jc=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,
|
17 |
+
kc=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,lc=/^-ms-/,mc=/-([\da-z])/gi,nc=function(a,b){return b.toUpperCase()},L=function(a){if(p.addEventListener||"load"===a.type||"complete"===p.readyState)xb(),c.ready()},xb=function(){p.addEventListener?(p.removeEventListener("DOMContentLoaded",L,!1),r.removeEventListener("load",L,!1)):(p.detachEvent("onreadystatechange",L),r.detachEvent("onload",L))};c.fn=c.prototype={jquery:"1.9.1",constructor:c,init:function(a,b,d){var e;if(!a)return this;
|
18 |
+
if("string"===typeof a){e="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&3<=a.length?[null,a,null]:gc.exec(a);if(!e||!e[1]&&b)return!b||b.jquery?(b||d).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof c?b[0]:b,c.merge(this,c.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:p,!0)),wb.test(e[1])&&c.isPlainObject(b))for(e in b)if(c.isFunction(this[e]))this[e](b[e]);else this.attr(e,b[e])}else{if((b=p.getElementById(e[2]))&&b.parentNode){if(b.id!==e[2])return d.find(a);this.length=1;this[0]=
|
19 |
+
b}this.context=p;this.selector=a}return this}if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(c.isFunction(a))return d.ready(a);a.selector!==m&&(this.selector=a.selector,this.context=a.context);return c.makeArray(a,this)},selector:"",length:0,size:function(){return this.length},toArray:function(){return C.call(this)},get:function(a){return null==a?this.toArray():0>a?this[this.length+a]:this[a]},pushStack:function(a){a=c.merge(this.constructor(),a);a.prevObject=this;a.context=this.context;
|
20 |
+
return a},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.ready.promise().done(a);return this},slice:function(){return this.pushStack(C.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length;a=+a+(0>a?b:0);return this.pushStack(0<=a&&a<b?[this[a]]:[])},map:function(a){return this.pushStack(c.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:Fa,
|
21 |
+
sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a,b,d,e,f,g=arguments[0]||{},h=1,k=arguments.length,l=!1;"boolean"===typeof g&&(l=g,g=arguments[1]||{},h=2);"object"===typeof g||c.isFunction(g)||(g={});k===h&&(g=this,--h);for(;h<k;h++)if(null!=(f=arguments[h]))for(e in f)a=g[e],d=f[e],g!==d&&(l&&d&&(c.isPlainObject(d)||(b=c.isArray(d)))?(b?(b=!1,a=a&&c.isArray(a)?a:[]):a=a&&c.isPlainObject(a)?a:{},g[e]=c.extend(l,a,d)):d!==m&&(g[e]=d));return g};c.extend({noConflict:function(a){r.$===
|
22 |
+
c&&(r.$=dc);a&&r.jQuery===c&&(r.jQuery=cc);return c},isReady:!1,readyWait:1,holdReady:function(a){a?c.readyWait++:c.ready(!0)},ready:function(a){if(!0===a?!--c.readyWait:!c.isReady){if(!p.body)return setTimeout(c.ready);c.isReady=!0;!0!==a&&0<--c.readyWait||(na.resolveWith(p,[c]),c.fn.trigger&&c(p).trigger("ready").off("ready"))}},isFunction:function(a){return"function"===c.type(a)},isArray:Array.isArray||function(a){return"array"===c.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&
|
23 |
+
isFinite(a)},type:function(a){return null==a?String(a):"object"===typeof a||"function"===typeof a?oa[ec.call(a)]||"object":typeof a},isPlainObject:function(a){if(!a||"object"!==c.type(a)||a.nodeType||c.isWindow(a))return!1;try{if(a.constructor&&!ia.call(a,"constructor")&&!ia.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(d){return!1}for(var b in a);return b===m||ia.call(a,b)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw Error(a);},parseHTML:function(a,
|
24 |
+
b,d){if(!a||"string"!==typeof a)return null;"boolean"===typeof b&&(d=b,b=!1);b=b||p;var e=wb.exec(a);d=!d&&[];if(e)return[b.createElement(e[1])];e=c.buildFragment([a],b,d);d&&c(d).remove();return c.merge([],e.childNodes)},parseJSON:function(a){if(r.JSON&&r.JSON.parse)return r.JSON.parse(a);if(null===a)return a;if("string"===typeof a&&(a=c.trim(a))&&hc.test(a.replace(jc,"@").replace(kc,"]").replace(ic,"")))return(new Function("return "+a))();c.error("Invalid JSON: "+a)},parseXML:function(a){var b,
|
25 |
+
d;if(!a||"string"!==typeof a)return null;try{r.DOMParser?(d=new DOMParser,b=d.parseFromString(a,"text/xml")):(b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a))}catch(e){b=m}b&&b.documentElement&&!b.getElementsByTagName("parsererror").length||c.error("Invalid XML: "+a);return b},noop:function(){},globalEval:function(a){a&&c.trim(a)&&(r.execScript||function(a){r.eval.call(r,a)})(a)},camelCase:function(a){return a.replace(lc,"ms-").replace(mc,nc)},nodeName:function(a,b){return a.nodeName&&
|
26 |
+
a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var e,f=0,g=a.length;e=ya(a);if(c)if(e)for(;f<g&&(e=b.apply(a[f],c),!1!==e);f++);else for(f in a){if(e=b.apply(a[f],c),!1===e)break}else if(e)for(;f<g&&(e=b.call(a[f],f,a[f]),!1!==e);f++);else for(f in a)if(e=b.call(a[f],f,a[f]),!1===e)break;return a},trim:Ga&&!Ga.call("\ufeff\u00a0")?function(a){return null==a?"":Ga.call(a)}:function(a){return null==a?"":(a+"").replace(fc,"")},makeArray:function(a,b){var d=b||[];null!=a&&(ya(Object(a))?
|
27 |
+
c.merge(d,"string"===typeof a?[a]:a):Fa.call(d,a));return d},inArray:function(a,b,c){var e;if(b){if(vb)return vb.call(b,a,c);e=b.length;for(c=c?0>c?Math.max(0,e+c):c:0;c<e;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=b.length,e=a.length,f=0;if("number"===typeof c)for(;f<c;f++)a[e++]=b[f];else for(;b[f]!==m;)a[e++]=b[f++];a.length=e;return a},grep:function(a,b,c){var e,f=[],g=0,h=a.length;for(c=!!c;g<h;g++)e=!!b(a[g],g),c!==e&&f.push(a[g]);return f},map:function(a,b,c){var e,
|
28 |
+
f=0,g=a.length,h=[];if(ya(a))for(;f<g;f++)e=b(a[f],f,c),null!=e&&(h[h.length]=e);else for(f in a)e=b(a[f],f,c),null!=e&&(h[h.length]=e);return ub.apply([],h)},guid:1,proxy:function(a,b){var d,e;"string"===typeof b&&(e=a[b],b=a,a=e);if(!c.isFunction(a))return m;d=C.call(arguments,2);e=function(){return a.apply(b||this,d.concat(C.call(arguments)))};e.guid=a.guid=a.guid||c.guid++;return e},access:function(a,b,d,e,f,g,h){var k=0,l=a.length,u=null==d;if("object"===c.type(d))for(k in f=!0,d)c.access(a,
|
29 |
+
b,k,d[k],!0,g,h);else if(e!==m&&(f=!0,c.isFunction(e)||(h=!0),u&&(h?(b.call(a,e),b=null):(u=b,b=function(a,b,d){return u.call(c(a),d)})),b))for(;k<l;k++)b(a[k],d,h?e:e.call(a[k],k,b(a[k],d)));return f?a:u?b.call(a):l?b(a[0],d):g},now:function(){return(new Date).getTime()}});c.ready.promise=function(a){if(!na)if(na=c.Deferred(),"complete"===p.readyState)setTimeout(c.ready);else if(p.addEventListener)p.addEventListener("DOMContentLoaded",L,!1),r.addEventListener("load",L,!1);else{p.attachEvent("onreadystatechange",
|
30 |
+
L);r.attachEvent("onload",L);var b=!1;try{b=null==r.frameElement&&p.documentElement}catch(d){}b&&b.doScroll&&function e(){if(!c.isReady){try{b.doScroll("left")}catch(a){return setTimeout(e,50)}xb();c.ready()}}()}return na.promise(a)};c.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){oa["[object "+b+"]"]=b.toLowerCase()});tb=c(p);var Ua={};c.Callbacks=function(a){a="string"===typeof a?Ua[a]||Rb(a):c.extend({},a);var b,d,e,f,g,h,k=[],l=!a.once&&[],u=function(c){d=
|
31 |
+
a.memory&&c;e=!0;g=h||0;h=0;f=k.length;for(b=!0;k&&g<f;g++)if(!1===k[g].apply(c[0],c[1])&&a.stopOnFalse){d=!1;break}b=!1;k&&(l?l.length&&u(l.shift()):d?k=[]:t.disable())},t={add:function(){if(k){var e=k.length;(function oc(b){c.each(b,function(b,d){var e=c.type(d);"function"===e?a.unique&&t.has(d)||k.push(d):d&&d.length&&"string"!==e&&oc(d)})})(arguments);b?f=k.length:d&&(h=e,u(d))}return this},remove:function(){k&&c.each(arguments,function(a,d){for(var e;-1<(e=c.inArray(d,k,e));)k.splice(e,1),b&&
|
32 |
+
(e<=f&&f--,e<=g&&g--)});return this},has:function(a){return a?-1<c.inArray(a,k):!(!k||!k.length)},empty:function(){k=[];return this},disable:function(){k=l=d=m;return this},disabled:function(){return!k},lock:function(){l=m;d||t.disable();return this},locked:function(){return!l},fireWith:function(a,c){c=c||[];c=[a,c.slice?c.slice():c];!k||e&&!l||(b?l.push(c):u(c));return this},fire:function(){t.fireWith(this,arguments);return this},fired:function(){return!!e}};return t};c.extend({Deferred:function(a){var b=
|
33 |
+
[["resolve","done",c.Callbacks("once memory"),"resolved"],["reject","fail",c.Callbacks("once memory"),"rejected"],["notify","progress",c.Callbacks("memory")]],d="pending",e={state:function(){return d},always:function(){f.done(arguments).fail(arguments);return this},then:function(){var a=arguments;return c.Deferred(function(d){c.each(b,function(b,l){var u=l[0],m=c.isFunction(a[b])&&a[b];f[l[1]](function(){var a=m&&m.apply(this,arguments);if(a&&c.isFunction(a.promise))a.promise().done(d.resolve).fail(d.reject).progress(d.notify);
|
34 |
+
else d[u+"With"](this===e?d.promise():this,m?[a]:arguments)})});a=null}).promise()},promise:function(a){return null!=a?c.extend(a,e):e}},f={};e.pipe=e.then;c.each(b,function(a,c){var k=c[2],l=c[3];e[c[1]]=k.add;l&&k.add(function(){d=l},b[a^1][2].disable,b[2][2].lock);f[c[0]]=function(){f[c[0]+"With"](this===f?e:this,arguments);return this};f[c[0]+"With"]=k.fireWith});e.promise(f);a&&a.call(f,f);return f},when:function(a){var b=0,d=C.call(arguments),e=d.length,f=1!==e||a&&c.isFunction(a.promise)?e:
|
35 |
+
0,g=1===f?a:c.Deferred(),h=function(a,b,c){return function(d){b[a]=this;c[a]=1<arguments.length?C.call(arguments):d;c===k?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},k,l,u;if(1<e)for(k=Array(e),l=Array(e),u=Array(e);b<e;b++)d[b]&&c.isFunction(d[b].promise)?d[b].promise().done(h(b,u,d)).fail(g.reject).progress(h(b,l,k)):--f;f||g.resolveWith(u,d);return g.promise()}});c.support=function(){var a,b,d,e,f,g,h,k=p.createElement("div");k.setAttribute("className","t");k.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";
|
36 |
+
b=k.getElementsByTagName("*");d=k.getElementsByTagName("a")[0];if(!b||!d||!b.length)return{};e=p.createElement("select");f=e.appendChild(p.createElement("option"));b=k.getElementsByTagName("input")[0];d.style.cssText="top:1px;float:left;opacity:.5";a={getSetAttribute:"t"!==k.className,leadingWhitespace:3===k.firstChild.nodeType,tbody:!k.getElementsByTagName("tbody").length,htmlSerialize:!!k.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:"/a"===d.getAttribute("href"),
|
37 |
+
opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:!!b.value,optSelected:f.selected,enctype:!!p.createElement("form").enctype,html5Clone:"<:nav></:nav>"!==p.createElement("nav").cloneNode(!0).outerHTML,boxModel:"CSS1Compat"===p.compatMode,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1};b.checked=!0;a.noCloneChecked=b.cloneNode(!0).checked;e.disabled=!0;a.optDisabled=!f.disabled;try{delete k.test}catch(l){a.deleteExpando=
|
38 |
+
!1}b=p.createElement("input");b.setAttribute("value","");a.input=""===b.getAttribute("value");b.value="t";b.setAttribute("type","radio");a.radioValue="t"===b.value;b.setAttribute("checked","t");b.setAttribute("name","t");d=p.createDocumentFragment();d.appendChild(b);a.appendChecked=b.checked;a.checkClone=d.cloneNode(!0).cloneNode(!0).lastChild.checked;k.attachEvent&&(k.attachEvent("onclick",function(){a.noCloneEvent=!1}),k.cloneNode(!0).click());for(h in{submit:!0,change:!0,focusin:!0})k.setAttribute(d=
|
39 |
+
"on"+h,"t"),a[h+"Bubbles"]=d in r||!1===k.attributes[d].expando;k.style.backgroundClip="content-box";k.cloneNode(!0).style.backgroundClip="";a.clearCloneStyle="content-box"===k.style.backgroundClip;c(function(){var b,c,d=p.getElementsByTagName("body")[0];d&&(b=p.createElement("div"),b.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",d.appendChild(b).appendChild(k),k.innerHTML="<table><tr><td></td><td>t</td></tr></table>",c=k.getElementsByTagName("td"),
|
40 |
+
c[0].style.cssText="padding:0;margin:0;border:0;display:none",g=0===c[0].offsetHeight,c[0].style.display="",c[1].style.display="none",a.reliableHiddenOffsets=g&&0===c[0].offsetHeight,k.innerHTML="",k.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",a.boxSizing=4===k.offsetWidth,a.doesNotIncludeMarginInBodyOffset=1!==d.offsetTop,r.getComputedStyle&&(a.pixelPosition="1%"!==
|
41 |
+
(r.get
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|