Version Description
- Added infinite scroll for cloud logs.
Download this release
Release Info
Developer | wpchefgadget |
Plugin | Limit Login Attempts Reloaded |
Version | 2.23.1 |
Comparing to | |
See all releases |
Code changes from version 2.23.0 to 2.23.1
- assets/css/limit-login-attempts.css +1 -1
- assets/sass/limit-login-attempts.scss +31 -0
- core/App.php +1 -0
- core/LimitLoginAttempts.php +18 -44
- limit-login-attempts-reloaded.php +1 -1
- readme.txt +5 -2
- views/app-widgets/acl-rules.php +116 -29
- views/app-widgets/active-lockouts.php +33 -67
- views/app-widgets/event-log.php +43 -58
assets/css/limit-login-attempts.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.limit-login-page-settings .field-col{display:inline-block;margin-right:20px}.limit-login-page-settings .limit-login-log table{background-color:#fff}.limit-login-page-settings .limit-login-log table th,.limit-login-page-settings .limit-login-log table td{padding:10px}.limit-login-page-settings .limit-login-log table tr:nth-child(even){background-color:rgba(0,0,0,0.09)}.limit-login-page-settings #limit-login-app-setup-code{width:85%}.limit-login-page-settings .nav-tab-wrapper{position:relative}.limit-login-page-settings .nav-tab-wrapper .llar-failover-link{font-size:14px;float:right;line-height:2}.limit-login-page-settings .limit-login-app-dashboard .llar-table-scroll-wrap{max-height:400px;overflow-y:auto}.limit-login-page-settings .limit-login-app-dashboard .form-table{background-color:#fff;border:1px solid #f4f4f4;border-top:3px solid #3c8dbc;position:relative}.limit-login-page-settings .limit-login-app-dashboard .form-table.llar-preloader:before{content:"";display:block;width:100%;height:100%;background-color:rgba(255,255,255,0.7);z-index:999;position:absolute;top:0;left:0}.limit-login-page-settings .limit-login-app-dashboard .form-table th{font-weight:bold;border-bottom:1px solid #dbdbdb !important}.limit-login-page-settings .limit-login-app-dashboard .form-table th,.limit-login-page-settings .limit-login-app-dashboard .form-table td{padding:10px;border:1px solid #b9b9b9}.limit-login-page-settings .limit-login-app-dashboard .form-table th.llar-col-nowrap,.limit-login-page-settings .limit-login-app-dashboard .form-table td.llar-col-nowrap{white-space:nowrap}.limit-login-page-settings .limit-login-app-dashboard .form-table td button{line-height:1;margin-right:5px}.limit-login-page-settings .limit-login-app-dashboard .form-table td button:last-child{margin-right:0}.limit-login-page-settings .limit-login-app-dashboard .form-table td button .dashicons{vertical-align:middle}.limit-login-page-settings .limit-login-app-dashboard .form-table td.llar-app-log-actions{text-align:center}.limit-login-page-settings .limit-login-app-dashboard .form-table td.llar-app-log-actions .llar-app-log-action-btn{display:inline-block;line-height:20px;cursor:pointer}.limit-login-page-settings .limit-login-app-dashboard .form-table td.llar-app-log-actions .llar-app-log-action-btn i{vertical-align:middle}.limit-login-page-settings .limit-login-app-dashboard .form-table td.llar-app-log-actions .llar-app-log-action-btn:hover i{color:#3c8dbc}.limit-login-page-settings .limit-login-app-dashboard .form-table tr:nth-child(even){background-color:#f9f9f9}.limit-login-page-settings .limit-login-app-dashboard .llar-app-log-pagination>a{font-size:16px;line-height:1.625}.limit-login-page-settings .limit-login-app-dashboard .llar-app-log-pagination .spinner{float:none}.limit-login-page-settings .limit-login-app-dashboard .llar-app-acl-rules{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.limit-login-page-settings .limit-login-app-dashboard .llar-app-acl-rules .app-rules-col{-webkit-box-flex:0;-ms-flex:0 0 49%;flex:0 0 49%}.limit-login-page-settings .limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .form-table select{width:100%}.limit-login-page-settings .limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .form-table .origin{float:right;opacity:0.5}.limit-login-page-settings .limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .form-table .llar-app-acl-action-col{text-align:center}.limit-login-page-settings .limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .form-table .llar-app-rule-pass{background-color:#cffbe8}.limit-login-page-settings .limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .form-table .llar-app-rule-allow{background-color:#abdfff}.limit-login-page-settings .limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .form-table .llar-app-rule-deny{background-color:#fd2c2c3d}.limit-login-page-settings .limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .form-table .llar-app-acl-remove{color:crimson;border-color:crimson}.limit-login-page-settings .limit-login-app-dashboard .llar-block-country-section{background-color:#fff;padding:15px;border:1px solid #b9b9b9;border-top:3px solid #3c8dbc}.limit-login-page-settings .limit-login-app-dashboard .llar-block-country-section .llar-block-country-mode{display:inline-block;margin-right:5px;vertical-align:top}.limit-login-page-settings .limit-login-app-dashboard .llar-block-country-section .llar-toggle-countries-list{-webkit-text-decoration-style:dotted;text-decoration-style:dotted;vertical-align:middle;line-height:1.6}.limit-login-page-settings .limit-login-app-dashboard .llar-block-country-section .llar-block-country-list{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;max-height:400px;overflow-y:auto}.limit-login-page-settings .limit-login-app-dashboard .llar-block-country-section .llar-block-country-list:first-child{margin-top:0}.limit-login-page-settings .limit-login-app-dashboard .llar-block-country-section .llar-block-country-list .llar-country{-webkit-box-flex:0;-ms-flex:0 0 10%;flex:0 0 10%}.limit-login-page-settings .limit-login-app-dashboard .llar-block-country-section .llar-block-country-list .llar-country label{padding-bottom:10px;display:inline-block}.limit-login-page-settings .limit-login-app-dashboard .llar-block-country-section .llar-block-country-list.llar-all-countries-selected{display:inline;vertical-align:middle;overflow:hidden}.limit-login-page-settings .limit-login-app-dashboard .llar-block-country-section .llar-block-country-list.llar-all-countries-selected .llar-country{margin-bottom:0;display:inline-block;margin-right:10px}.limit-login-page-settings .limit-login-app-dashboard .llar-block-country-section .llar-block-country-list.llar-all-countries-selected .llar-country label{padding-bottom:0;white-space:nowrap}.limit-login-page-settings .limit-login-app-dashboard .llar-block-country-section .llar-block-country-list.llar-all-countries-list{display:none;margin:10px 0}.limit-login-page-settings .limit-login-app-dashboard .llar-block-country-section .llar-block-country-list.llar-all-countries-list.visible{display:-webkit-box;display:-ms-flexbox;display:flex;border-top:1px solid #dddada;padding-top:10px}.limit-login-page-settings .llar-app-notice{background-color:#fff;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);padding:15px;border-radius:3px;margin-top:20px;margin-bottom:20px;font-size:14px;border-left:5px solid #ffba00}.limit-login-page-settings .llar-app-notice.success{border-color:#46b450}.limit-login-page-settings .llar-app-notice p{font-size:inherit;margin:0 0 20px}.limit-login-page-settings .llar-app-notice p:last-child{margin-bottom:0}.limit-login-page-settings input[name="admin_notify_email"]{min-width:243px}.limit-login-page-settings .llar-protect-notice{font-size:15px;color:#848484;margin-left:10px}.limit-login-page-settings .llar-protect-notice a{color:#222222;text-decoration:none;border-bottom:1px dashed}.limit-login-page-settings .llar-show-app-fields{position:absolute;right:15px;top:15px;color:#bdbdbd}.limit-login-page-settings .llar-show-app-fields:hover{color:#222}.limit-login-page-settings .llar-app-field{display:none}.limit-login-page-settings .llar-app-field.active{display:table-row}.llar-notice-review,.llar-notice-notify{display:-webkit-box;display:-ms-flexbox;display:flex;padding:15px 20px 0 !important;border-left:4px solid #333 !important}.llar-notice-review .llar-review-image img,.llar-notice-notify .llar-review-image img{margin-top:10px;margin-bottom:20px}.llar-notice-review .llar-review-image span,.llar-notice-notify .llar-review-image span{font-size:80px;color:orange;width:80px;height:auto;margin-bottom:20px}.llar-notice-review .llar-review-info,.llar-notice-notify .llar-review-info{-webkit-box-flex:1;-ms-flex:1;flex:1;margin-left:30px}.llar-notice-review .llar-review-info .llar-buttons,.llar-notice-notify .llar-review-info .llar-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.llar-notice-review .llar-review-info .llar-buttons li,.llar-notice-notify .llar-review-info .llar-buttons li{margin-right:10px}.llar-notice-review .llar-review-info .llar-buttons li .dashicons,.llar-notice-notify .llar-review-info .llar-buttons li .dashicons{margin-right:5px}.llar-accordion .ui-accordion-header{font-weight:bold;background:#778899;color:#fff}.llar-accordion .ui-accordion-header.ui-accordion-header-active{background:#87CEFA}.custom-app-tab{position:relative}.custom-app-tab .spinner{float:none}.custom-app-tab .llar-app-ajax-msg{font-size:13px;margin-top:5px;display:block}.custom-app-tab .llar-app-ajax-msg.error{color:red}.custom-app-tab .llar-app-ajax-msg.success{color:green}.custom-app-tab .llar-delete-app{color:#dc3232;position:absolute;bottom:15px;right:15px}.custom-app-tab .llar-delete-app:hover{opacity:0.8}.custom-app-tab .llar-why-use-premium-text{margin-top:20px}.custom-app-tab .llar-why-use-premium-text .title{font-weight:bold;font-size:16px;color:#4d4d4d}.custom-app-tab .llar-why-use-premium-text ul li .dashicons{color:#3ab54a;font-size:25px;width:25px;top:-2px;position:relative}#llar-progress-bar{position:fixed;top:0;height:6px;left:0;width:100%;z-index:999999;background-color:#eee}#llar-progress-bar span{height:100%;position:absolute;display:block;width:0;background-color:#00b357;-webkit-transition:width 0.4s;transition:width 0.4s}#llar-header-upgrade-message{text-align:center;background-color:#f5f0c0;color:#222;padding:10px;margin-left:-20px;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.2);box-shadow:0 0 3px rgba(0,0,0,0.2)}#llar-header-upgrade-message p{margin:0}#llar-header-upgrade-message p .dashicons{color:#f2a64c;margin-right:5px}.settings_page_limit-login-attempts .update-nag{display:none}#llar-welcome-page{padding:50px 0}#llar-welcome-page img{max-width:100%;height:auto}#llar-welcome-page .llar-welcome-page-container{width:100%;max-width:760px;margin:0 auto 30px;background-color:#fff;border-radius:4px;-webkit-box-shadow:0 0 4px rgba(0,0,0,0.1);box-shadow:0 0 4px rgba(0,0,0,0.1)}#llar-welcome-page .llar-welcome-page-container.llar-premium{border-top:5px solid #50c1cd}#llar-welcome-page .llar-welcome-page-container .llar-welcome-page-section{padding:20px;text-align:center}#llar-welcome-page .llar-welcome-page-container .llar-welcome-page-section .llar-logo{text-align:center;margin-top:20px;margin-bottom:30px}#llar-welcome-page .llar-welcome-page-container .llar-welcome-page-section h2{font-size:2.4em;line-height:1.4}#llar-welcome-page .llar-welcome-page-container .llar-welcome-page-section h3{font-size:1.5em;line-height:1.4}#llar-welcome-page .llar-welcome-page-container .llar-welcome-page-section p{font-size:17px;color:#444}#llar-welcome-page .llar-welcome-page-container .llar-welcome-page-video-wrap img{width:100%;height:auto;cursor:pointer}#llar-welcome-page .llar-welcome-page-features{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0 15px;counter-reset:cnt1}#llar-welcome-page .llar-welcome-page-features .llar-feature-item{-webkit-box-flex:0;-ms-flex:0 0 24%;flex:0 0 24%;text-align:center;margin-bottom:40px;position:relative;padding-bottom:60px}#llar-welcome-page .llar-welcome-page-features .llar-feature-item:before{content:counter(cnt1);counter-increment:cnt1;position:absolute;left:50%;-webkit-transform:translatex(-50%);transform:translatex(-50%);bottom:0;font-size:1em;font-weight:600;width:40px;height:40px;line-height:40px;text-align:center;border-radius:50%;background-color:#ecedef;color:#979aaa}#llar-welcome-page .llar-welcome-page-features .llar-feature-item:after{position:absolute;content:'';left:-39%;width:69%;height:1px;bottom:1.4em;background-color:#ecedef}#llar-welcome-page .llar-welcome-page-features .llar-feature-item:nth-child(4n+1):after{display:none}#llar-welcome-page .llar-welcome-page-features .llar-feature-item .llar-feature-image{margin-bottom:15px}#llar-welcome-page .llar-welcome-page-features .llar-feature-item .llar-feature-info .llar-feature-title{font-weight:bold;margin-bottom:15px}#llar-welcome-page .llar-welcome-page-features .llar-feature-item .llar-feature-info .llar-feature-desc{color:#979aaa}@media (max-width: 768px){#llar-welcome-page .llar-welcome-page-features{display:block}}#llar-welcome-page .llar-why-recommend{text-align:left;font-size:17px}#llar-welcome-page .llar-why-recommend ul li span{margin-right:5px;width:auto;height:auto;font-size:25px;vertical-align:middle;color:green}#llar-welcome-page .llar-welcome-list{font-size:17px;text-align:left;line-height:1.4;list-style:none}#llar-welcome-page .llar-welcome-list li span{margin-right:10px;width:auto;height:auto;font-size:22px;vertical-align:top;color:orange}#llar-welcome-page .llar-upgrade-btn-wrap{padding:20px}#llar-welcome-page .llar-upgrade-btn-wrap a{display:inline-block;background-color:#e27800;color:#fff;font-size:22px;padding:20px;text-decoration:none;font-weight:600}#llar-welcome-page .llar-upgrade-btn-wrap a:hover{background-color:#af5d00}#llar-welcome-page .llar-upgrade-questions{font-size:17px}.dashboard_page_llar-welcome .update-nag,.dashboard_page_llar-welcome .notice,.toplevel_page_limit-login-attempts .update-nag,.toplevel_page_limit-login-attempts .notice{display:none}.dashboard_page_llar-welcome .video-container,.toplevel_page_limit-login-attempts .video-container{position:relative;padding-bottom:56.1%;height:0;overflow:hidden}.dashboard_page_llar-welcome .video-container iframe,.toplevel_page_limit-login-attempts .video-container iframe{position:absolute;top:0;left:0;width:100%;height:100%}.jconfirm .jconfirm-box div.jconfirm-closeIcon{top:-2px !important;right:-2px !important}.llar-tooltip{text-decoration:underline;-webkit-text-decoration-style:dotted;text-decoration-style:dotted;cursor:pointer;position:relative}.llar-tooltip:before{content:attr(data-text);position:absolute;width:200px;padding:5px;background-color:rgba(0,0,0,0.8);color:#fff;font-size:13px;top:100%;z-index:999;visibility:hidden;opacity:0;-webkit-transition:all .2s;transition:all .2s;font-weight:300;cursor:auto}.llar-tooltip:hover:before{visibility:visible;opacity:1}#toplevel_page_limit-login-attempts .wp-menu-image.svg{background-size:25px auto !important;margin-top:7px}#llar-dashboard-page{padding-top:10px}#llar-dashboard-page *{-webkit-box-sizing:border-box;box-sizing:border-box}#llar-dashboard-page ul,#llar-dashboard-page ol{margin-left:0}#llar-dashboard-page ul li,#llar-dashboard-page ol li{list-style-position:inside}#llar-dashboard-page .dashboard-header{background-color:#0071a0;color:#fff;text-align:center;padding:15px}#llar-dashboard-page .dashboard-header h1{color:#fff}#llar-dashboard-page .section-title{font-weight:bold;padding:15px;border-bottom:1px solid #e4e4e4;font-size:14px;text-align:left}#llar-dashboard-page .section-content{padding:15px}#llar-dashboard-page .dashboard-section-1{margin-bottom:20px;background-color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}#llar-dashboard-page .dashboard-section-1>[class^="info-box-"]{text-align:center;-webkit-box-flex:0;-ms-flex:0 0 33.333%;flex:0 0 33.333%;max-width:33.333%;border-right:1px solid #e4e4e4}#llar-dashboard-page .dashboard-section-1>[class^="info-box-"]:last-child{border:0}#llar-dashboard-page .dashboard-section-1>[class^="info-box-"] .title{font-weight:600;font-size:16px;line-height:1.5;margin-bottom:10px}#llar-dashboard-page .dashboard-section-1 .info-box-1 .chart{max-width:300px;position:relative;margin-bottom:15px;margin-left:auto;margin-right:auto}#llar-dashboard-page .dashboard-section-1 .info-box-1 .chart .llar-retries-count{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);font-size:28px;font-weight:bold}#llar-dashboard-page .dashboard-section-1 .info-box-1 .desc{font-size:15px}#llar-dashboard-page .dashboard-section-1 .info-box-1 .actions{margin-top:5px}#llar-dashboard-page .dashboard-section-1 .info-box-2 .llar-chart-wrap{width:100%;max-width:80%;margin:0 auto;clear:both}#llar-dashboard-page .dashboard-section-1 .info-box-2 .llar-chart-wrap canvas{height:300px}#llar-dashboard-page .dashboard-section-1 .info-box-2 .chart-stats-legend{text-align:center;margin-top:10px}#llar-dashboard-page .dashboard-section-1 .info-box-3{text-align:left}#llar-dashboard-page .dashboard-section-1 .info-box-3 .desc{margin-bottom:20px}#llar-dashboard-page .dashboard-section-1 .info-box-3 .actions{text-align:center;padding-top:20px}#llar-dashboard-page .dashboard-section-1 .info-box-3 .actions a{text-transform:uppercase;font-size:16px;margin-bottom:5px}#llar-dashboard-page .dashboard-section-1.custom .info-box-2{-webkit-box-flex:0;-ms-flex:0 0 66.666%;flex:0 0 66.666%;max-width:66.666%}#llar-dashboard-page .dashboard-section-2{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:20px}#llar-dashboard-page .dashboard-section-2>[class^="info-box-"]{-webkit-box-flex:0;-ms-flex:0 0 calc(50% - 10px);flex:0 0 calc(50% - 10px);min-height:100px;background-color:#fff;border:1px solid #e4e4e4;padding:15px}#llar-dashboard-page .dashboard-section-2>[class^="info-box-"]:last-child{margin-right:0}#llar-dashboard-page .dashboard-section-2 .info-box-1{padding:0}#llar-dashboard-page .dashboard-section-2 .info-box-1 .notifications-list{padding:0;margin:0}#llar-dashboard-page .dashboard-section-2 .info-box-1 .notifications-list li{margin:0;border-bottom:1px solid #e4e4e4}#llar-dashboard-page .dashboard-section-2 .info-box-1 .notifications-list li:last-child{border:0}#llar-dashboard-page .dashboard-section-2 .info-box-1 .notifications-list li a{text-decoration:none;padding:15px;font-size:15px;display:block}#llar-dashboard-page .dashboard-section-2 .info-box-1 .notifications-list li a:hover{background-color:#f9f9f9}#llar-dashboard-page .dashboard-section-2 .info-box-2{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}#llar-dashboard-page .dashboard-section-2 .info-box-2 .info-box-icon{-webkit-box-flex:0;-ms-flex:0 0 100px;flex:0 0 100px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-right:15px}#llar-dashboard-page .dashboard-section-2 .info-box-2 .info-box-icon .dashicons{color:#0073a0;font-size:50px;width:auto;height:auto}#llar-dashboard-page .dashboard-section-2 .info-box-2 .info-box-content{-webkit-box-flex:1;-ms-flex:1;flex:1}#llar-dashboard-page .dashboard-section-2 .info-box-2 .info-box-content .title{font-size:20px;font-weight:bold;margin-bottom:10px;line-height:1.5}#llar-dashboard-page .dashboard-section-2 .info-box-2 .info-box-content .desc{font-size:15px;margin-bottom:15px}#llar-dashboard-page .dashboard-section-2 .info-box-2 .info-box-content .actions{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}#llar-dashboard-page .dashboard-section-3{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;background-color:#fff;margin-bottom:20px}#llar-dashboard-page .dashboard-section-3>[class^="info-box-"]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:30px 15px 30px 0;-webkit-box-flex:1;-ms-flex:1;flex:1;border-right:1px solid #e4e4e4}#llar-dashboard-page .dashboard-section-3>[class^="info-box-"] .info-box-icon{-webkit-box-flex:0;-ms-flex:0 0 100px;flex:0 0 100px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}#llar-dashboard-page .dashboard-section-3>[class^="info-box-"] .info-box-icon .dashicons{color:#a1a2a2;font-size:60px;width:auto;height:auto}#llar-dashboard-page .dashboard-section-3>[class^="info-box-"] .info-box-content{-webkit-box-flex:1;-ms-flex:1;flex:1}#llar-dashboard-page .dashboard-section-3>[class^="info-box-"] .info-box-content .title{font-size:20px;font-weight:bold;margin-bottom:10px;line-height:1.3}#llar-dashboard-page .dashboard-section-3>[class^="info-box-"] .info-box-content .title a{text-decoration:none}#llar-dashboard-page .dashboard-section-3>[class^="info-box-"] .info-box-content .desc{font-size:15px;margin-bottom:15px}#llar-dashboard-page .dashboard-section-3>[class^="info-box-"] .info-box-content .actions{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}#llar-dashboard-page .dashboard-section-4{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:20px}#llar-dashboard-page .dashboard-section-4>[class^="info-box-"]{-webkit-box-flex:0;-ms-flex:0 0 calc(50% - 10px);flex:0 0 calc(50% - 10px);min-height:100px;background-color:#fff;border:1px solid #e4e4e4;padding:15px}#llar-dashboard-page .dashboard-section-4>[class^="info-box-"]:last-child{margin-right:0}#llar-dashboard-page .dashboard-section-4 .info-box-1{padding:0}#llar-dashboard-page .dashboard-section-4 .info-box-1 .section-title{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}#llar-dashboard-page .dashboard-section-4 .info-box-1 .section-title .section-title-info{color:#a7a7a7;font-weight:400}#llar-dashboard-page .dashboard-section-4 .info-box-1 .lockouts-by-country-table{width:100%;border-collapse:collapse}#llar-dashboard-page .dashboard-section-4 .info-box-1 .lockouts-by-country-table tr th,#llar-dashboard-page .dashboard-section-4 .info-box-1 .lockouts-by-country-table tr td{padding:10px;border:1px solid #cecece}#llar-dashboard-page .dashboard-section-4 .info-box-1 .lockouts-by-country-table tr th{background-color:#000;color:#fff;text-align:left}#llar-dashboard-page .dashboard-section-4 .info-box-1 .lockouts-by-country-table tr:nth-child(odd) td{background-color:#eff0ef}#llar-dashboard-page .dashboard-section-4 .info-box-1 .lockouts-by-country-table tr td .flag-icon{width:24px;vertical-align:middle;margin-right:10px}#llar-dashboard-page .dashboard-section-4 .info-box-1 .countries-table-info{color:#a7a7a7;font-weight:400;margin-top:5px;margin-bottom:0}#llar-dashboard-page .dashboard-section-4 .info-box-2{padding:0}#llar-dashboard-page .dashboard-section-4 .info-box-2 .section-title{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}#llar-dashboard-page .dashboard-section-4 .info-box-2 .section-title .section-title-info{color:#a7a7a7;font-weight:400}#llar-dashboard-page .dashboard-section-4 .info-box-2 .llar-chart-wrap{width:100%;max-width:80%;margin:0 auto;clear:both}#llar-dashboard-page .dashboard-section-4 .info-box-2 .llar-chart-wrap canvas{height:300px}
|
1 |
+
.limit-login-page-settings .field-col{display:inline-block;margin-right:20px}.limit-login-page-settings .limit-login-log table{background-color:#fff}.limit-login-page-settings .limit-login-log table th,.limit-login-page-settings .limit-login-log table td{padding:10px}.limit-login-page-settings .limit-login-log table tr:nth-child(even){background-color:rgba(0,0,0,0.09)}.limit-login-page-settings #limit-login-app-setup-code{width:85%}.limit-login-page-settings .nav-tab-wrapper{position:relative}.limit-login-page-settings .nav-tab-wrapper .llar-failover-link{font-size:14px;float:right;line-height:2}.limit-login-page-settings .limit-login-app-dashboard .llar-table-scroll-wrap{max-height:400px;overflow-y:auto}.limit-login-page-settings .limit-login-app-dashboard .form-table{background-color:#fff;border:1px solid #f4f4f4;border-top:3px solid #3c8dbc;position:relative}.limit-login-page-settings .limit-login-app-dashboard .form-table.llar-preloader:before{content:"";display:block;width:100%;height:100%;background-color:rgba(255,255,255,0.7);z-index:999;position:absolute;top:0;left:0}.limit-login-page-settings .limit-login-app-dashboard .form-table th{font-weight:bold;border-bottom:1px solid #dbdbdb !important}.limit-login-page-settings .limit-login-app-dashboard .form-table th,.limit-login-page-settings .limit-login-app-dashboard .form-table td{padding:10px;border:1px solid #b9b9b9}.limit-login-page-settings .limit-login-app-dashboard .form-table th.llar-col-nowrap,.limit-login-page-settings .limit-login-app-dashboard .form-table td.llar-col-nowrap{white-space:nowrap}.limit-login-page-settings .limit-login-app-dashboard .form-table td button{line-height:1;margin-right:5px}.limit-login-page-settings .limit-login-app-dashboard .form-table td button:last-child{margin-right:0}.limit-login-page-settings .limit-login-app-dashboard .form-table td button .dashicons{vertical-align:middle}.limit-login-page-settings .limit-login-app-dashboard .form-table td.llar-app-log-actions{text-align:center}.limit-login-page-settings .limit-login-app-dashboard .form-table td.llar-app-log-actions .llar-app-log-action-btn{display:inline-block;line-height:20px;cursor:pointer}.limit-login-page-settings .limit-login-app-dashboard .form-table td.llar-app-log-actions .llar-app-log-action-btn i{vertical-align:middle}.limit-login-page-settings .limit-login-app-dashboard .form-table td.llar-app-log-actions .llar-app-log-action-btn:hover i{color:#3c8dbc}.limit-login-page-settings .limit-login-app-dashboard .form-table tr:nth-child(even){background-color:#f9f9f9}.limit-login-page-settings .limit-login-app-dashboard .llar-table-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin:15px 0 5px}.limit-login-page-settings .limit-login-app-dashboard .llar-table-header h3{margin:0}.limit-login-page-settings .limit-login-app-dashboard .llar-table-header .right-link{line-height:1.625}.limit-login-page-settings .limit-login-app-dashboard .llar-table-header .right-link a{font-size:14px}.limit-login-page-settings .limit-login-app-dashboard .llar-table-header .right-link .llar-tooltip{text-decoration:none;font-size:12px;display:inline-block}.limit-login-page-settings .limit-login-app-dashboard .llar-table-header .right-link .llar-tooltip:before{display:none}.limit-login-page-settings .limit-login-app-dashboard .llar-table-header .right-link .llar-tooltip:hover:before{display:block;right:0;left:auto}.limit-login-page-settings .limit-login-app-dashboard .llar-app-log-pagination>a{font-size:16px;line-height:1.625}.limit-login-page-settings .limit-login-app-dashboard .llar-app-log-pagination .spinner{float:none}.limit-login-page-settings .limit-login-app-dashboard .llar-app-acl-rules{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.limit-login-page-settings .limit-login-app-dashboard .llar-app-acl-rules .app-rules-col{-webkit-box-flex:0;-ms-flex:0 0 49%;flex:0 0 49%}.limit-login-page-settings .limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .form-table select{width:100%}.limit-login-page-settings .limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .form-table .origin{float:right;opacity:0.5}.limit-login-page-settings .limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .form-table .llar-app-acl-action-col{text-align:center}.limit-login-page-settings .limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .form-table .llar-app-rule-pass{background-color:#cffbe8}.limit-login-page-settings .limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .form-table .llar-app-rule-allow{background-color:#abdfff}.limit-login-page-settings .limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .form-table .llar-app-rule-deny{background-color:#fd2c2c3d}.limit-login-page-settings .limit-login-app-dashboard .llar-app-acl-rules .app-rules-col .form-table .llar-app-acl-remove{color:crimson;border-color:crimson}.limit-login-page-settings .limit-login-app-dashboard .llar-block-country-section{background-color:#fff;padding:15px;border:1px solid #b9b9b9;border-top:3px solid #3c8dbc}.limit-login-page-settings .limit-login-app-dashboard .llar-block-country-section .llar-block-country-mode{display:inline-block;margin-right:5px;vertical-align:top}.limit-login-page-settings .limit-login-app-dashboard .llar-block-country-section .llar-toggle-countries-list{-webkit-text-decoration-style:dotted;text-decoration-style:dotted;vertical-align:middle;line-height:1.6}.limit-login-page-settings .limit-login-app-dashboard .llar-block-country-section .llar-block-country-list{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;max-height:400px;overflow-y:auto}.limit-login-page-settings .limit-login-app-dashboard .llar-block-country-section .llar-block-country-list:first-child{margin-top:0}.limit-login-page-settings .limit-login-app-dashboard .llar-block-country-section .llar-block-country-list .llar-country{-webkit-box-flex:0;-ms-flex:0 0 10%;flex:0 0 10%}.limit-login-page-settings .limit-login-app-dashboard .llar-block-country-section .llar-block-country-list .llar-country label{padding-bottom:10px;display:inline-block}.limit-login-page-settings .limit-login-app-dashboard .llar-block-country-section .llar-block-country-list.llar-all-countries-selected{display:inline;vertical-align:middle;overflow:hidden}.limit-login-page-settings .limit-login-app-dashboard .llar-block-country-section .llar-block-country-list.llar-all-countries-selected .llar-country{margin-bottom:0;display:inline-block;margin-right:10px}.limit-login-page-settings .limit-login-app-dashboard .llar-block-country-section .llar-block-country-list.llar-all-countries-selected .llar-country label{padding-bottom:0;white-space:nowrap}.limit-login-page-settings .limit-login-app-dashboard .llar-block-country-section .llar-block-country-list.llar-all-countries-list{display:none;margin:10px 0}.limit-login-page-settings .limit-login-app-dashboard .llar-block-country-section .llar-block-country-list.llar-all-countries-list.visible{display:-webkit-box;display:-ms-flexbox;display:flex;border-top:1px solid #dddada;padding-top:10px}.limit-login-page-settings .llar-app-notice{background-color:#fff;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);padding:15px;border-radius:3px;margin-top:20px;margin-bottom:20px;font-size:14px;border-left:5px solid #ffba00}.limit-login-page-settings .llar-app-notice.success{border-color:#46b450}.limit-login-page-settings .llar-app-notice p{font-size:inherit;margin:0 0 20px}.limit-login-page-settings .llar-app-notice p:last-child{margin-bottom:0}.limit-login-page-settings input[name="admin_notify_email"]{min-width:243px}.limit-login-page-settings .llar-protect-notice{font-size:15px;color:#848484;margin-left:10px}.limit-login-page-settings .llar-protect-notice a{color:#222222;text-decoration:none;border-bottom:1px dashed}.limit-login-page-settings .llar-show-app-fields{position:absolute;right:15px;top:15px;color:#bdbdbd}.limit-login-page-settings .llar-show-app-fields:hover{color:#222}.limit-login-page-settings .llar-app-field{display:none}.limit-login-page-settings .llar-app-field.active{display:table-row}.llar-notice-review,.llar-notice-notify{display:-webkit-box;display:-ms-flexbox;display:flex;padding:15px 20px 0 !important;border-left:4px solid #333 !important}.llar-notice-review .llar-review-image img,.llar-notice-notify .llar-review-image img{margin-top:10px;margin-bottom:20px}.llar-notice-review .llar-review-image span,.llar-notice-notify .llar-review-image span{font-size:80px;color:orange;width:80px;height:auto;margin-bottom:20px}.llar-notice-review .llar-review-info,.llar-notice-notify .llar-review-info{-webkit-box-flex:1;-ms-flex:1;flex:1;margin-left:30px}.llar-notice-review .llar-review-info .llar-buttons,.llar-notice-notify .llar-review-info .llar-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.llar-notice-review .llar-review-info .llar-buttons li,.llar-notice-notify .llar-review-info .llar-buttons li{margin-right:10px}.llar-notice-review .llar-review-info .llar-buttons li .dashicons,.llar-notice-notify .llar-review-info .llar-buttons li .dashicons{margin-right:5px}.llar-accordion .ui-accordion-header{font-weight:bold;background:#778899;color:#fff}.llar-accordion .ui-accordion-header.ui-accordion-header-active{background:#87CEFA}.custom-app-tab{position:relative}.custom-app-tab .spinner{float:none}.custom-app-tab .llar-app-ajax-msg{font-size:13px;margin-top:5px;display:block}.custom-app-tab .llar-app-ajax-msg.error{color:red}.custom-app-tab .llar-app-ajax-msg.success{color:green}.custom-app-tab .llar-delete-app{color:#dc3232;position:absolute;bottom:15px;right:15px}.custom-app-tab .llar-delete-app:hover{opacity:0.8}.custom-app-tab .llar-why-use-premium-text{margin-top:20px}.custom-app-tab .llar-why-use-premium-text .title{font-weight:bold;font-size:16px;color:#4d4d4d}.custom-app-tab .llar-why-use-premium-text ul li .dashicons{color:#3ab54a;font-size:25px;width:25px;top:-2px;position:relative}#llar-progress-bar{position:fixed;top:0;height:6px;left:0;width:100%;z-index:999999;background-color:#eee}#llar-progress-bar span{height:100%;position:absolute;display:block;width:0;background-color:#00b357;-webkit-transition:width 0.4s;transition:width 0.4s}#llar-header-upgrade-message{text-align:center;background-color:#f5f0c0;color:#222;padding:10px;margin-left:-20px;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.2);box-shadow:0 0 3px rgba(0,0,0,0.2)}#llar-header-upgrade-message p{margin:0}#llar-header-upgrade-message p .dashicons{color:#f2a64c;margin-right:5px}.settings_page_limit-login-attempts .update-nag{display:none}#llar-welcome-page{padding:50px 0}#llar-welcome-page img{max-width:100%;height:auto}#llar-welcome-page .llar-welcome-page-container{width:100%;max-width:760px;margin:0 auto 30px;background-color:#fff;border-radius:4px;-webkit-box-shadow:0 0 4px rgba(0,0,0,0.1);box-shadow:0 0 4px rgba(0,0,0,0.1)}#llar-welcome-page .llar-welcome-page-container.llar-premium{border-top:5px solid #50c1cd}#llar-welcome-page .llar-welcome-page-container .llar-welcome-page-section{padding:20px;text-align:center}#llar-welcome-page .llar-welcome-page-container .llar-welcome-page-section .llar-logo{text-align:center;margin-top:20px;margin-bottom:30px}#llar-welcome-page .llar-welcome-page-container .llar-welcome-page-section h2{font-size:2.4em;line-height:1.4}#llar-welcome-page .llar-welcome-page-container .llar-welcome-page-section h3{font-size:1.5em;line-height:1.4}#llar-welcome-page .llar-welcome-page-container .llar-welcome-page-section p{font-size:17px;color:#444}#llar-welcome-page .llar-welcome-page-container .llar-welcome-page-video-wrap img{width:100%;height:auto;cursor:pointer}#llar-welcome-page .llar-welcome-page-features{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0 15px;counter-reset:cnt1}#llar-welcome-page .llar-welcome-page-features .llar-feature-item{-webkit-box-flex:0;-ms-flex:0 0 24%;flex:0 0 24%;text-align:center;margin-bottom:40px;position:relative;padding-bottom:60px}#llar-welcome-page .llar-welcome-page-features .llar-feature-item:before{content:counter(cnt1);counter-increment:cnt1;position:absolute;left:50%;-webkit-transform:translatex(-50%);transform:translatex(-50%);bottom:0;font-size:1em;font-weight:600;width:40px;height:40px;line-height:40px;text-align:center;border-radius:50%;background-color:#ecedef;color:#979aaa}#llar-welcome-page .llar-welcome-page-features .llar-feature-item:after{position:absolute;content:'';left:-39%;width:69%;height:1px;bottom:1.4em;background-color:#ecedef}#llar-welcome-page .llar-welcome-page-features .llar-feature-item:nth-child(4n+1):after{display:none}#llar-welcome-page .llar-welcome-page-features .llar-feature-item .llar-feature-image{margin-bottom:15px}#llar-welcome-page .llar-welcome-page-features .llar-feature-item .llar-feature-info .llar-feature-title{font-weight:bold;margin-bottom:15px}#llar-welcome-page .llar-welcome-page-features .llar-feature-item .llar-feature-info .llar-feature-desc{color:#979aaa}@media (max-width: 768px){#llar-welcome-page .llar-welcome-page-features{display:block}}#llar-welcome-page .llar-why-recommend{text-align:left;font-size:17px}#llar-welcome-page .llar-why-recommend ul li span{margin-right:5px;width:auto;height:auto;font-size:25px;vertical-align:middle;color:green}#llar-welcome-page .llar-welcome-list{font-size:17px;text-align:left;line-height:1.4;list-style:none}#llar-welcome-page .llar-welcome-list li span{margin-right:10px;width:auto;height:auto;font-size:22px;vertical-align:top;color:orange}#llar-welcome-page .llar-upgrade-btn-wrap{padding:20px}#llar-welcome-page .llar-upgrade-btn-wrap a{display:inline-block;background-color:#e27800;color:#fff;font-size:22px;padding:20px;text-decoration:none;font-weight:600}#llar-welcome-page .llar-upgrade-btn-wrap a:hover{background-color:#af5d00}#llar-welcome-page .llar-upgrade-questions{font-size:17px}.dashboard_page_llar-welcome .update-nag,.dashboard_page_llar-welcome .notice,.toplevel_page_limit-login-attempts .update-nag,.toplevel_page_limit-login-attempts .notice{display:none}.dashboard_page_llar-welcome .video-container,.toplevel_page_limit-login-attempts .video-container{position:relative;padding-bottom:56.1%;height:0;overflow:hidden}.dashboard_page_llar-welcome .video-container iframe,.toplevel_page_limit-login-attempts .video-container iframe{position:absolute;top:0;left:0;width:100%;height:100%}.jconfirm .jconfirm-box div.jconfirm-closeIcon{top:-2px !important;right:-2px !important}.llar-tooltip{text-decoration:underline;-webkit-text-decoration-style:dotted;text-decoration-style:dotted;cursor:pointer;position:relative}.llar-tooltip:before{content:attr(data-text);position:absolute;width:200px;padding:5px;background-color:rgba(0,0,0,0.8);color:#fff;font-size:13px;top:100%;z-index:999;visibility:hidden;opacity:0;-webkit-transition:all .2s;transition:all .2s;font-weight:300;cursor:auto}.llar-tooltip:hover:before{visibility:visible;opacity:1}#toplevel_page_limit-login-attempts .wp-menu-image.svg{background-size:25px auto !important;margin-top:7px}#llar-dashboard-page{padding-top:10px}#llar-dashboard-page *{-webkit-box-sizing:border-box;box-sizing:border-box}#llar-dashboard-page ul,#llar-dashboard-page ol{margin-left:0}#llar-dashboard-page ul li,#llar-dashboard-page ol li{list-style-position:inside}#llar-dashboard-page .dashboard-header{background-color:#0071a0;color:#fff;text-align:center;padding:15px}#llar-dashboard-page .dashboard-header h1{color:#fff}#llar-dashboard-page .section-title{font-weight:bold;padding:15px;border-bottom:1px solid #e4e4e4;font-size:14px;text-align:left}#llar-dashboard-page .section-content{padding:15px}#llar-dashboard-page .dashboard-section-1{margin-bottom:20px;background-color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}#llar-dashboard-page .dashboard-section-1>[class^="info-box-"]{text-align:center;-webkit-box-flex:0;-ms-flex:0 0 33.333%;flex:0 0 33.333%;max-width:33.333%;border-right:1px solid #e4e4e4}#llar-dashboard-page .dashboard-section-1>[class^="info-box-"]:last-child{border:0}#llar-dashboard-page .dashboard-section-1>[class^="info-box-"] .title{font-weight:600;font-size:16px;line-height:1.5;margin-bottom:10px}#llar-dashboard-page .dashboard-section-1 .info-box-1 .chart{max-width:300px;position:relative;margin-bottom:15px;margin-left:auto;margin-right:auto}#llar-dashboard-page .dashboard-section-1 .info-box-1 .chart .llar-retries-count{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);font-size:28px;font-weight:bold}#llar-dashboard-page .dashboard-section-1 .info-box-1 .desc{font-size:15px}#llar-dashboard-page .dashboard-section-1 .info-box-1 .actions{margin-top:5px}#llar-dashboard-page .dashboard-section-1 .info-box-2 .llar-chart-wrap{width:100%;max-width:80%;margin:0 auto;clear:both}#llar-dashboard-page .dashboard-section-1 .info-box-2 .llar-chart-wrap canvas{height:300px}#llar-dashboard-page .dashboard-section-1 .info-box-2 .chart-stats-legend{text-align:center;margin-top:10px}#llar-dashboard-page .dashboard-section-1 .info-box-3{text-align:left}#llar-dashboard-page .dashboard-section-1 .info-box-3 .desc{margin-bottom:20px}#llar-dashboard-page .dashboard-section-1 .info-box-3 .actions{text-align:center;padding-top:20px}#llar-dashboard-page .dashboard-section-1 .info-box-3 .actions a{text-transform:uppercase;font-size:16px;margin-bottom:5px}#llar-dashboard-page .dashboard-section-1.custom .info-box-2{-webkit-box-flex:0;-ms-flex:0 0 66.666%;flex:0 0 66.666%;max-width:66.666%}#llar-dashboard-page .dashboard-section-2{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:20px}#llar-dashboard-page .dashboard-section-2>[class^="info-box-"]{-webkit-box-flex:0;-ms-flex:0 0 calc(50% - 10px);flex:0 0 calc(50% - 10px);min-height:100px;background-color:#fff;border:1px solid #e4e4e4;padding:15px}#llar-dashboard-page .dashboard-section-2>[class^="info-box-"]:last-child{margin-right:0}#llar-dashboard-page .dashboard-section-2 .info-box-1{padding:0}#llar-dashboard-page .dashboard-section-2 .info-box-1 .notifications-list{padding:0;margin:0}#llar-dashboard-page .dashboard-section-2 .info-box-1 .notifications-list li{margin:0;border-bottom:1px solid #e4e4e4}#llar-dashboard-page .dashboard-section-2 .info-box-1 .notifications-list li:last-child{border:0}#llar-dashboard-page .dashboard-section-2 .info-box-1 .notifications-list li a{text-decoration:none;padding:15px;font-size:15px;display:block}#llar-dashboard-page .dashboard-section-2 .info-box-1 .notifications-list li a:hover{background-color:#f9f9f9}#llar-dashboard-page .dashboard-section-2 .info-box-2{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}#llar-dashboard-page .dashboard-section-2 .info-box-2 .info-box-icon{-webkit-box-flex:0;-ms-flex:0 0 100px;flex:0 0 100px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-right:15px}#llar-dashboard-page .dashboard-section-2 .info-box-2 .info-box-icon .dashicons{color:#0073a0;font-size:50px;width:auto;height:auto}#llar-dashboard-page .dashboard-section-2 .info-box-2 .info-box-content{-webkit-box-flex:1;-ms-flex:1;flex:1}#llar-dashboard-page .dashboard-section-2 .info-box-2 .info-box-content .title{font-size:20px;font-weight:bold;margin-bottom:10px;line-height:1.5}#llar-dashboard-page .dashboard-section-2 .info-box-2 .info-box-content .desc{font-size:15px;margin-bottom:15px}#llar-dashboard-page .dashboard-section-2 .info-box-2 .info-box-content .actions{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}#llar-dashboard-page .dashboard-section-3{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;background-color:#fff;margin-bottom:20px}#llar-dashboard-page .dashboard-section-3>[class^="info-box-"]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:30px 15px 30px 0;-webkit-box-flex:1;-ms-flex:1;flex:1;border-right:1px solid #e4e4e4}#llar-dashboard-page .dashboard-section-3>[class^="info-box-"] .info-box-icon{-webkit-box-flex:0;-ms-flex:0 0 100px;flex:0 0 100px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}#llar-dashboard-page .dashboard-section-3>[class^="info-box-"] .info-box-icon .dashicons{color:#a1a2a2;font-size:60px;width:auto;height:auto}#llar-dashboard-page .dashboard-section-3>[class^="info-box-"] .info-box-content{-webkit-box-flex:1;-ms-flex:1;flex:1}#llar-dashboard-page .dashboard-section-3>[class^="info-box-"] .info-box-content .title{font-size:20px;font-weight:bold;margin-bottom:10px;line-height:1.3}#llar-dashboard-page .dashboard-section-3>[class^="info-box-"] .info-box-content .title a{text-decoration:none}#llar-dashboard-page .dashboard-section-3>[class^="info-box-"] .info-box-content .desc{font-size:15px;margin-bottom:15px}#llar-dashboard-page .dashboard-section-3>[class^="info-box-"] .info-box-content .actions{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}#llar-dashboard-page .dashboard-section-4{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:20px}#llar-dashboard-page .dashboard-section-4>[class^="info-box-"]{-webkit-box-flex:0;-ms-flex:0 0 calc(50% - 10px);flex:0 0 calc(50% - 10px);min-height:100px;background-color:#fff;border:1px solid #e4e4e4;padding:15px}#llar-dashboard-page .dashboard-section-4>[class^="info-box-"]:last-child{margin-right:0}#llar-dashboard-page .dashboard-section-4 .info-box-1{padding:0}#llar-dashboard-page .dashboard-section-4 .info-box-1 .section-title{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}#llar-dashboard-page .dashboard-section-4 .info-box-1 .section-title .section-title-info{color:#a7a7a7;font-weight:400}#llar-dashboard-page .dashboard-section-4 .info-box-1 .lockouts-by-country-table{width:100%;border-collapse:collapse}#llar-dashboard-page .dashboard-section-4 .info-box-1 .lockouts-by-country-table tr th,#llar-dashboard-page .dashboard-section-4 .info-box-1 .lockouts-by-country-table tr td{padding:10px;border:1px solid #cecece}#llar-dashboard-page .dashboard-section-4 .info-box-1 .lockouts-by-country-table tr th{background-color:#000;color:#fff;text-align:left}#llar-dashboard-page .dashboard-section-4 .info-box-1 .lockouts-by-country-table tr:nth-child(odd) td{background-color:#eff0ef}#llar-dashboard-page .dashboard-section-4 .info-box-1 .lockouts-by-country-table tr td .flag-icon{width:24px;vertical-align:middle;margin-right:10px}#llar-dashboard-page .dashboard-section-4 .info-box-1 .countries-table-info{color:#a7a7a7;font-weight:400;margin-top:5px;margin-bottom:0}#llar-dashboard-page .dashboard-section-4 .info-box-2{padding:0}#llar-dashboard-page .dashboard-section-4 .info-box-2 .section-title{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}#llar-dashboard-page .dashboard-section-4 .info-box-2 .section-title .section-title-info{color:#a7a7a7;font-weight:400}#llar-dashboard-page .dashboard-section-4 .info-box-2 .llar-chart-wrap{width:100%;max-width:80%;margin:0 auto;clear:both}#llar-dashboard-page .dashboard-section-4 .info-box-2 .llar-chart-wrap canvas{height:300px}
|
assets/sass/limit-login-attempts.scss
CHANGED
@@ -106,6 +106,37 @@
|
|
106 |
background-color: #f9f9f9;
|
107 |
}
|
108 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
109 |
.llar-app-log-pagination {
|
110 |
> a {
|
111 |
font-size: 16px;
|
106 |
background-color: #f9f9f9;
|
107 |
}
|
108 |
}
|
109 |
+
.llar-table-header {
|
110 |
+
display: flex;
|
111 |
+
justify-content: space-between;
|
112 |
+
margin: 15px 0 5px;
|
113 |
+
|
114 |
+
h3 {
|
115 |
+
margin: 0;
|
116 |
+
}
|
117 |
+
.right-link {
|
118 |
+
line-height: 1.625;
|
119 |
+
a {
|
120 |
+
font-size: 14px;
|
121 |
+
}
|
122 |
+
.llar-tooltip {
|
123 |
+
text-decoration: none;
|
124 |
+
font-size: 12px;
|
125 |
+
display: inline-block;
|
126 |
+
|
127 |
+
&:before {
|
128 |
+
display: none;
|
129 |
+
}
|
130 |
+
&:hover {
|
131 |
+
&:before {
|
132 |
+
display: block;
|
133 |
+
right: 0;
|
134 |
+
left: auto;
|
135 |
+
}
|
136 |
+
}
|
137 |
+
}
|
138 |
+
}
|
139 |
+
}
|
140 |
.llar-app-log-pagination {
|
141 |
> a {
|
142 |
font-size: 16px;
|
core/App.php
CHANGED
@@ -244,6 +244,7 @@ class LLAR_App {
|
|
244 |
|
245 |
$data['limit'] = $limit;
|
246 |
$data['offset'] = $offset;
|
|
|
247 |
|
248 |
return $this->request( 'log', 'get', $data );
|
249 |
}
|
244 |
|
245 |
$data['limit'] = $limit;
|
246 |
$data['offset'] = $offset;
|
247 |
+
$data['is_short'] = 1;
|
248 |
|
249 |
return $this->request( 'log', 'get', $data );
|
250 |
}
|
core/LimitLoginAttempts.php
CHANGED
@@ -2226,27 +2226,14 @@ into a must-use (MU) folder. You can read more <a href="%s" target="_blank">here
|
|
2226 |
check_ajax_referer('llar-action', 'sec');
|
2227 |
|
2228 |
$offset = sanitize_text_field( $_POST['offset'] );
|
|
|
2229 |
|
2230 |
-
$log = $this->app->log(
|
2231 |
|
2232 |
if( $log ) {
|
2233 |
|
2234 |
-
ob_start();
|
2235 |
-
|
2236 |
-
<tr>
|
2237 |
-
<th scope="col"><?php _e( "Time", 'limit-login-attempts-reloaded' ); ?></th>
|
2238 |
-
<th scope="col"><?php _e( "IP", 'limit-login-attempts-reloaded' ); ?></th>
|
2239 |
-
<th scope="col"><?php _e( "Gateway", 'limit-login-attempts-reloaded' ); ?></th>
|
2240 |
-
<th scope="col"><?php _e( "Login", 'limit-login-attempts-reloaded' ); ?></th>
|
2241 |
-
<th scope="col"><?php _e( "Rule", 'limit-login-attempts-reloaded' ); ?></th>
|
2242 |
-
<th scope="col"><?php _e( "Reason", 'limit-login-attempts-reloaded' ); ?></th>
|
2243 |
-
<th scope="col"><?php _e( "Pattern", 'limit-login-attempts-reloaded' ); ?></th>
|
2244 |
-
<th scope="col"><?php _e( "Attempts Left", 'limit-login-attempts-reloaded' ); ?></th>
|
2245 |
-
<th scope="col"><?php _e( "Lockout Duration", 'limit-login-attempts-reloaded' ); ?></th>
|
2246 |
-
<th scope="col"><?php _e( "Actions", 'limit-login-attempts-reloaded' ); ?></th>
|
2247 |
-
</tr>
|
2248 |
|
2249 |
-
<?php
|
2250 |
$date_format = get_option('date_format') . ' ' . get_option('time_format');
|
2251 |
?>
|
2252 |
|
@@ -2282,13 +2269,16 @@ into a must-use (MU) folder. You can read more <a href="%s" target="_blank">here
|
|
2282 |
</tr>
|
2283 |
<?php endforeach; ?>
|
2284 |
<?php else : ?>
|
2285 |
-
|
|
|
|
|
2286 |
<?php endif; ?>
|
2287 |
<?php
|
2288 |
|
2289 |
wp_send_json_success(array(
|
2290 |
'html' => ob_get_clean(),
|
2291 |
-
'offset' => $log['offset']
|
|
|
2292 |
));
|
2293 |
|
2294 |
} else {
|
@@ -2309,20 +2299,14 @@ into a must-use (MU) folder. You can read more <a href="%s" target="_blank">here
|
|
2309 |
check_ajax_referer('llar-action', 'sec');
|
2310 |
|
2311 |
$offset = sanitize_text_field( $_POST['offset'] );
|
|
|
2312 |
|
2313 |
-
$lockouts = $this->app->get_lockouts(
|
2314 |
|
2315 |
if( $lockouts ) {
|
2316 |
|
2317 |
ob_start(); ?>
|
2318 |
|
2319 |
-
<tr>
|
2320 |
-
<th scope="col"><?php _e( "IP", 'limit-login-attempts-reloaded' ); ?></th>
|
2321 |
-
<th scope="col"><?php _e( "Login", 'limit-login-attempts-reloaded' ); ?></th>
|
2322 |
-
<th scope="col"><?php _e( "Count", 'limit-login-attempts-reloaded' ); ?></th>
|
2323 |
-
<th scope="col"><?php _e( "Expires in (minutes)", 'limit-login-attempts-reloaded' ); ?></th>
|
2324 |
-
</tr>
|
2325 |
-
|
2326 |
<?php if( $lockouts['items'] ) : ?>
|
2327 |
<?php foreach ( $lockouts['items'] as $item ) : ?>
|
2328 |
<tr>
|
@@ -2334,7 +2318,9 @@ into a must-use (MU) folder. You can read more <a href="%s" target="_blank">here
|
|
2334 |
<?php endforeach; ?>
|
2335 |
|
2336 |
<?php else: ?>
|
|
|
2337 |
<tr class="empty-row"><td colspan="4" style="text-align: center"><?php _e('No lockouts yet.', 'limit-login-attempts-reloaded' ); ?></td></tr>
|
|
|
2338 |
<?php endif; ?>
|
2339 |
<?php
|
2340 |
|
@@ -2370,32 +2356,19 @@ into a must-use (MU) folder. You can read more <a href="%s" target="_blank">here
|
|
2370 |
check_ajax_referer('llar-action', 'sec');
|
2371 |
|
2372 |
$type = sanitize_text_field( $_POST['type'] );
|
|
|
|
|
2373 |
|
2374 |
$acl_list = $this->app->acl( array(
|
2375 |
-
'type' => $type
|
|
|
|
|
2376 |
) );
|
2377 |
|
2378 |
if( $acl_list ) {
|
2379 |
|
2380 |
ob_start(); ?>
|
2381 |
|
2382 |
-
<tr>
|
2383 |
-
<th scope="col"><?php _e( 'Pattern', 'limit-login-attempts-reloaded' ); ?></th>
|
2384 |
-
<th scope="col"><?php _e( 'Rule', 'limit-login-attempts-reloaded' ); ?></th>
|
2385 |
-
<th class="llar-app-acl-action-col" scope="col"><?php _e( 'Action', 'limit-login-attempts-reloaded' ); ?></th>
|
2386 |
-
</tr>
|
2387 |
-
<tr>
|
2388 |
-
<td><input class="regular-text llar-app-acl-pattern" type="text" placeholder="<?php esc_attr_e( 'Pattern', 'limit-login-attempts-reloaded' ); ?>"></td>
|
2389 |
-
<td>
|
2390 |
-
<select class="llar-app-acl-rule">
|
2391 |
-
<option value="deny" selected><?php esc_html_e( 'Deny', 'limit-login-attempts-reloaded' ); ?></option>
|
2392 |
-
<option value="allow"><?php esc_html_e( 'Allow', 'limit-login-attempts-reloaded' ); ?></option>
|
2393 |
-
<option value="pass"><?php esc_html_e( 'Pass', 'limit-login-attempts-reloaded' ); ?></option>
|
2394 |
-
</select>
|
2395 |
-
</td>
|
2396 |
-
<td class="llar-app-acl-action-col"><button class="button llar-app-acl-add-rule" data-type="<?php echo esc_attr( $type ); ?>"><?php _e( 'Add', 'limit-login-attempts-reloaded' ); ?></button></td>
|
2397 |
-
</tr>
|
2398 |
-
|
2399 |
<?php if( $acl_list['items'] ) : ?>
|
2400 |
<?php foreach ( $acl_list['items'] as $item ) : ?>
|
2401 |
<tr class="llar-app-rule-<?php echo esc_attr( $item['rule'] ); ?>">
|
@@ -2411,6 +2384,7 @@ into a must-use (MU) folder. You can read more <a href="%s" target="_blank">here
|
|
2411 |
|
2412 |
wp_send_json_success(array(
|
2413 |
'html' => ob_get_clean(),
|
|
|
2414 |
));
|
2415 |
|
2416 |
} else {
|
2226 |
check_ajax_referer('llar-action', 'sec');
|
2227 |
|
2228 |
$offset = sanitize_text_field( $_POST['offset'] );
|
2229 |
+
$limit = sanitize_text_field( $_POST['limit'] );
|
2230 |
|
2231 |
+
$log = $this->app->log( $limit, $offset );
|
2232 |
|
2233 |
if( $log ) {
|
2234 |
|
2235 |
+
ob_start();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2236 |
|
|
|
2237 |
$date_format = get_option('date_format') . ' ' . get_option('time_format');
|
2238 |
?>
|
2239 |
|
2269 |
</tr>
|
2270 |
<?php endforeach; ?>
|
2271 |
<?php else : ?>
|
2272 |
+
<?php if( empty( $offset ) ) : ?>
|
2273 |
+
<tr class="empty-row"><td colspan="100%" style="text-align: center"><?php _e('No events yet.', 'limit-login-attempts-reloaded' ); ?></td></tr>
|
2274 |
+
<?php endif; ?>
|
2275 |
<?php endif; ?>
|
2276 |
<?php
|
2277 |
|
2278 |
wp_send_json_success(array(
|
2279 |
'html' => ob_get_clean(),
|
2280 |
+
'offset' => $log['offset'],
|
2281 |
+
'total_items' => count( $log['items'] )
|
2282 |
));
|
2283 |
|
2284 |
} else {
|
2299 |
check_ajax_referer('llar-action', 'sec');
|
2300 |
|
2301 |
$offset = sanitize_text_field( $_POST['offset'] );
|
2302 |
+
$limit = sanitize_text_field( $_POST['limit'] );
|
2303 |
|
2304 |
+
$lockouts = $this->app->get_lockouts( $limit, $offset );
|
2305 |
|
2306 |
if( $lockouts ) {
|
2307 |
|
2308 |
ob_start(); ?>
|
2309 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2310 |
<?php if( $lockouts['items'] ) : ?>
|
2311 |
<?php foreach ( $lockouts['items'] as $item ) : ?>
|
2312 |
<tr>
|
2318 |
<?php endforeach; ?>
|
2319 |
|
2320 |
<?php else: ?>
|
2321 |
+
<?php if( empty( $offset ) ) : ?>
|
2322 |
<tr class="empty-row"><td colspan="4" style="text-align: center"><?php _e('No lockouts yet.', 'limit-login-attempts-reloaded' ); ?></td></tr>
|
2323 |
+
<?php endif; ?>
|
2324 |
<?php endif; ?>
|
2325 |
<?php
|
2326 |
|
2356 |
check_ajax_referer('llar-action', 'sec');
|
2357 |
|
2358 |
$type = sanitize_text_field( $_POST['type'] );
|
2359 |
+
$limit = sanitize_text_field( $_POST['limit'] );
|
2360 |
+
$offset = sanitize_text_field( $_POST['offset'] );
|
2361 |
|
2362 |
$acl_list = $this->app->acl( array(
|
2363 |
+
'type' => $type,
|
2364 |
+
'limit' => $limit,
|
2365 |
+
'offset' => $offset
|
2366 |
) );
|
2367 |
|
2368 |
if( $acl_list ) {
|
2369 |
|
2370 |
ob_start(); ?>
|
2371 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2372 |
<?php if( $acl_list['items'] ) : ?>
|
2373 |
<?php foreach ( $acl_list['items'] as $item ) : ?>
|
2374 |
<tr class="llar-app-rule-<?php echo esc_attr( $item['rule'] ); ?>">
|
2384 |
|
2385 |
wp_send_json_success(array(
|
2386 |
'html' => ob_get_clean(),
|
2387 |
+
'offset' => $acl_list['offset']
|
2388 |
));
|
2389 |
|
2390 |
} else {
|
limit-login-attempts-reloaded.php
CHANGED
@@ -5,7 +5,7 @@ Description: Limit the rate of login attempts for each IP address.
|
|
5 |
Author: Limit Login Attempts Reloaded
|
6 |
Author URI: https://www.limitloginattempts.com/
|
7 |
Text Domain: limit-login-attempts-reloaded
|
8 |
-
Version: 2.23.
|
9 |
|
10 |
Copyright 2008 - 2012 Johan Eenfeldt, 2016 - 2021 Limit Login Attempts Reloaded
|
11 |
*/
|
5 |
Author: Limit Login Attempts Reloaded
|
6 |
Author URI: https://www.limitloginattempts.com/
|
7 |
Text Domain: limit-login-attempts-reloaded
|
8 |
+
Version: 2.23.1
|
9 |
|
10 |
Copyright 2008 - 2012 Johan Eenfeldt, 2016 - 2021 Limit Login Attempts Reloaded
|
11 |
*/
|
readme.txt
CHANGED
@@ -3,8 +3,8 @@ Contributors: wpchefgadget
|
|
3 |
Donate link: https://www.paypal.com/donate?hosted_button_id=FKD4MYFCMNVQQ
|
4 |
Tags: brute force, login, security, firewall, protection
|
5 |
Requires at least: 3.0
|
6 |
-
Tested up to: 5.
|
7 |
-
Stable tag: 2.23.
|
8 |
|
9 |
Reloaded version of the original Limit Login Attempts plugin for Login Protection by a team of WordPress developers. GDPR compliant.
|
10 |
|
@@ -98,6 +98,9 @@ Please follow this link: <a href="https://www.limitloginattempts.com/resources/"
|
|
98 |
|
99 |
== Changelog ==
|
100 |
|
|
|
|
|
|
|
101 |
= 2.23.0 =
|
102 |
* Reduced plugin size by removing obsolete translations.
|
103 |
* Cleaned up the dashboard.
|
3 |
Donate link: https://www.paypal.com/donate?hosted_button_id=FKD4MYFCMNVQQ
|
4 |
Tags: brute force, login, security, firewall, protection
|
5 |
Requires at least: 3.0
|
6 |
+
Tested up to: 5.8
|
7 |
+
Stable tag: 2.23.1
|
8 |
|
9 |
Reloaded version of the original Limit Login Attempts plugin for Login Protection by a team of WordPress developers. GDPR compliant.
|
10 |
|
98 |
|
99 |
== Changelog ==
|
100 |
|
101 |
+
= 2.23.1 =
|
102 |
+
* Added infinite scroll for cloud logs.
|
103 |
+
|
104 |
= 2.23.0 =
|
105 |
* Reduced plugin size by removing obsolete translations.
|
106 |
* Cleaned up the dashboard.
|
views/app-widgets/acl-rules.php
CHANGED
@@ -5,23 +5,49 @@ if( !defined( 'ABSPATH' ) ) exit();
|
|
5 |
<div class="llar-app-acl-rules">
|
6 |
<div class="app-rules-col">
|
7 |
<h3><?php _e( 'Login Access Rules', 'limit-login-attempts-reloaded' ); ?></h3>
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
</div>
|
16 |
<div class="app-rules-col">
|
17 |
<h3><?php _e( 'IP Access Rules', 'limit-login-attempts-reloaded' ); ?></h3>
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
</div>
|
26 |
|
27 |
<script type="text/javascript">
|
@@ -29,7 +55,25 @@ if( !defined( 'ABSPATH' ) ) exit();
|
|
29 |
|
30 |
$(document).ready(function () {
|
31 |
|
32 |
-
var $app_acl_rules = $('.llar-app-acl-rules')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
|
34 |
load_rules_data('login');
|
35 |
load_rules_data('ip');
|
@@ -129,26 +173,69 @@ if( !defined( 'ABSPATH' ) ) exit();
|
|
129 |
|
130 |
});
|
131 |
|
132 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
133 |
|
134 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
135 |
|
136 |
-
|
137 |
|
138 |
-
|
139 |
-
action: 'app_load_acl_rules',
|
140 |
-
type: type,
|
141 |
-
sec: '<?php echo wp_create_nonce( "llar-action" ); ?>'
|
142 |
-
}, function(response){
|
143 |
|
144 |
-
|
145 |
|
146 |
-
|
147 |
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
152 |
|
153 |
})(jQuery);
|
154 |
</script>
|
5 |
<div class="llar-app-acl-rules">
|
6 |
<div class="app-rules-col">
|
7 |
<h3><?php _e( 'Login Access Rules', 'limit-login-attempts-reloaded' ); ?></h3>
|
8 |
+
<div class="llar-table-scroll-wrap llar-app-login-access-rules-infinity-scroll">
|
9 |
+
<table class="form-table llar-app-login-access-rules-table">
|
10 |
+
<tr>
|
11 |
+
<th scope="col"><?php _e( 'Pattern', 'limit-login-attempts-reloaded' ); ?></th>
|
12 |
+
<th scope="col"><?php _e( 'Rule', 'limit-login-attempts-reloaded' ); ?></th>
|
13 |
+
<th class="llar-app-acl-action-col" scope="col"><?php _e( 'Action', 'limit-login-attempts-reloaded' ); ?></th>
|
14 |
+
</tr>
|
15 |
+
<tr>
|
16 |
+
<td><input class="regular-text llar-app-acl-pattern" type="text" placeholder="<?php esc_attr_e( 'Pattern', 'limit-login-attempts-reloaded' ); ?>"></td>
|
17 |
+
<td>
|
18 |
+
<select class="llar-app-acl-rule">
|
19 |
+
<option value="deny" selected><?php esc_html_e( 'Deny', 'limit-login-attempts-reloaded' ); ?></option>
|
20 |
+
<option value="allow"><?php esc_html_e( 'Allow', 'limit-login-attempts-reloaded' ); ?></option>
|
21 |
+
<option value="pass"><?php esc_html_e( 'Pass', 'limit-login-attempts-reloaded' ); ?></option>
|
22 |
+
</select>
|
23 |
+
</td>
|
24 |
+
<td class="llar-app-acl-action-col"><button class="button llar-app-acl-add-rule" data-type="login"><?php _e( 'Add', 'limit-login-attempts-reloaded' ); ?></button></td>
|
25 |
+
</tr>
|
26 |
+
</table>
|
27 |
+
</div>
|
28 |
</div>
|
29 |
<div class="app-rules-col">
|
30 |
<h3><?php _e( 'IP Access Rules', 'limit-login-attempts-reloaded' ); ?></h3>
|
31 |
+
<div class="llar-table-scroll-wrap llar-app-ip-access-rules-infinity-scroll">
|
32 |
+
<table class="form-table llar-app-ip-access-rules-table">
|
33 |
+
<tr>
|
34 |
+
<th scope="col"><?php _e( 'Pattern', 'limit-login-attempts-reloaded' ); ?></th>
|
35 |
+
<th scope="col"><?php _e( 'Rule', 'limit-login-attempts-reloaded' ); ?></th>
|
36 |
+
<th class="llar-app-acl-action-col" scope="col"><?php _e( 'Action', 'limit-login-attempts-reloaded' ); ?></th>
|
37 |
+
</tr>
|
38 |
+
<tr>
|
39 |
+
<td><input class="regular-text llar-app-acl-pattern" type="text" placeholder="<?php esc_attr_e( 'Pattern', 'limit-login-attempts-reloaded' ); ?>"></td>
|
40 |
+
<td>
|
41 |
+
<select class="llar-app-acl-rule">
|
42 |
+
<option value="deny" selected><?php esc_html_e( 'Deny', 'limit-login-attempts-reloaded' ); ?></option>
|
43 |
+
<option value="allow"><?php esc_html_e( 'Allow', 'limit-login-attempts-reloaded' ); ?></option>
|
44 |
+
<option value="pass"><?php esc_html_e( 'Pass', 'limit-login-attempts-reloaded' ); ?></option>
|
45 |
+
</select>
|
46 |
+
</td>
|
47 |
+
<td class="llar-app-acl-action-col"><button class="button llar-app-acl-add-rule" data-type="ip"><?php _e( 'Add', 'limit-login-attempts-reloaded' ); ?></button></td>
|
48 |
+
</tr>
|
49 |
+
</table>
|
50 |
+
</div>
|
51 |
</div>
|
52 |
|
53 |
<script type="text/javascript">
|
55 |
|
56 |
$(document).ready(function () {
|
57 |
|
58 |
+
var $app_acl_rules = $('.llar-app-acl-rules'),
|
59 |
+
$infinity_box1 = $('.llar-app-login-access-rules-infinity-scroll'),
|
60 |
+
$infinity_box2 = $('.llar-app-ip-access-rules-infinity-scroll'),
|
61 |
+
loading_data1 = false,
|
62 |
+
loading_data2 = false,
|
63 |
+
page_offset1 = '',
|
64 |
+
page_offset2 = '',
|
65 |
+
page_limit = 10;
|
66 |
+
|
67 |
+
$infinity_box1.on('scroll', function (){
|
68 |
+
if (!loading_data1 && $infinity_box1.get(0).scrollTop + $infinity_box1.get(0).clientHeight >= $infinity_box1.get(0).scrollHeight - 1) {
|
69 |
+
load_rules_data('login');
|
70 |
+
}
|
71 |
+
});
|
72 |
+
$infinity_box2.on('scroll', function (){
|
73 |
+
if (!loading_data2 && $infinity_box2.get(0).scrollTop + $infinity_box2.get(0).clientHeight >= $infinity_box2.get(0).scrollHeight - 1) {
|
74 |
+
load_rules_data('ip');
|
75 |
+
}
|
76 |
+
});
|
77 |
|
78 |
load_rules_data('login');
|
79 |
load_rules_data('ip');
|
173 |
|
174 |
});
|
175 |
|
176 |
+
function load_rules_data(type) {
|
177 |
+
|
178 |
+
if(type === 'login') {
|
179 |
+
|
180 |
+
if(page_offset1 === false) {
|
181 |
+
return;
|
182 |
+
}
|
183 |
+
|
184 |
+
loading_data1 = true;
|
185 |
+
} else if(type === 'ip') {
|
186 |
+
|
187 |
+
if(page_offset2 === false) {
|
188 |
+
return;
|
189 |
+
}
|
190 |
+
|
191 |
+
loading_data2 = true;
|
192 |
+
}
|
193 |
+
|
194 |
+
llar.progressbar.start();
|
195 |
|
196 |
+
$.post(ajaxurl, {
|
197 |
+
action: 'app_load_acl_rules',
|
198 |
+
type: type,
|
199 |
+
limit: page_limit,
|
200 |
+
offset: (type === 'login') ? page_offset1 : page_offset2,
|
201 |
+
sec: '<?php echo wp_create_nonce( "llar-action" ); ?>'
|
202 |
+
}, function(response){
|
203 |
|
204 |
+
llar.progressbar.stop();
|
205 |
|
206 |
+
if(response.success) {
|
|
|
|
|
|
|
|
|
207 |
|
208 |
+
$('.llar-app-'+type+'-access-rules-table').append(response.data.html);
|
209 |
|
210 |
+
if(type === 'login') {
|
211 |
|
212 |
+
if(response.data.offset) {
|
213 |
+
page_offset1 = response.data.offset;
|
214 |
+
} else {
|
215 |
+
page_offset1 = false;
|
216 |
+
}
|
217 |
+
|
218 |
+
} else if(type === 'ip') {
|
219 |
+
|
220 |
+
if(response.data.offset) {
|
221 |
+
page_offset2 = response.data.offset;
|
222 |
+
} else {
|
223 |
+
page_offset2 = false;
|
224 |
+
}
|
225 |
+
}
|
226 |
+
}
|
227 |
+
|
228 |
+
if(type === 'login') {
|
229 |
+
|
230 |
+
loading_data1 = false;
|
231 |
+
} else if(type === 'ip') {
|
232 |
+
|
233 |
+
loading_data2 = false;
|
234 |
+
}
|
235 |
+
});
|
236 |
+
}
|
237 |
+
|
238 |
+
});
|
239 |
|
240 |
})(jQuery);
|
241 |
</script>
|
views/app-widgets/active-lockouts.php
CHANGED
@@ -4,75 +4,50 @@ if( !defined( 'ABSPATH' ) ) exit();
|
|
4 |
|
5 |
<h3><?php _e( 'Active Lockouts', 'limit-login-attempts-reloaded' ); ?></h3>
|
6 |
|
7 |
-
<div class="llar-app-lockouts-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
|
|
|
|
14 |
</div>
|
15 |
|
16 |
-
<table class="form-table llar-table-app-lockouts">
|
17 |
-
<tr>
|
18 |
-
<th scope="col"><?php _e( "IP", 'limit-login-attempts-reloaded' ); ?></th>
|
19 |
-
<th scope="col"><?php _e( "Login", 'limit-login-attempts-reloaded' ); ?></th>
|
20 |
-
<th scope="col"><?php _e( "Count", 'limit-login-attempts-reloaded' ); ?></th>
|
21 |
-
<th scope="col"><?php _e( "Expires in (minutes)", 'limit-login-attempts-reloaded' ); ?></th>
|
22 |
-
</tr>
|
23 |
-
</table>
|
24 |
-
|
25 |
<script type="text/javascript">
|
26 |
;(function($){
|
27 |
|
28 |
$(document).ready(function () {
|
29 |
|
30 |
var $log_table = $('.llar-table-app-lockouts'),
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
$('.llar-app-lockouts-pagination').on('click', '.llar-prev-page:not(.disabled)', function(e){
|
37 |
-
e.preventDefault();
|
38 |
-
|
39 |
-
load_lockouts_data(page_offsets[--current_page]);
|
40 |
-
|
41 |
-
toggle_next_btn(true);
|
42 |
-
});
|
43 |
-
|
44 |
-
$('.llar-app-lockouts-pagination').on('click', '.llar-next-page:not(.disabled)', function(e){
|
45 |
-
e.preventDefault();
|
46 |
-
|
47 |
-
load_lockouts_data(page_offsets[++current_page]);
|
48 |
-
});
|
49 |
-
|
50 |
-
function toggle_prev_btn(enable) {
|
51 |
-
if(enable) {
|
52 |
|
53 |
-
|
54 |
-
|
|
|
|
|
|
|
55 |
|
56 |
-
|
57 |
-
}
|
58 |
-
}
|
59 |
-
function toggle_next_btn(enable) {
|
60 |
-
if(enable) {
|
61 |
|
62 |
-
|
63 |
-
} else {
|
64 |
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
|
69 |
-
|
70 |
|
71 |
llar.progressbar.start();
|
72 |
|
73 |
$.post(ajaxurl, {
|
74 |
action: 'app_load_lockouts',
|
75 |
-
|
|
|
76 |
sec: '<?php echo wp_create_nonce( "llar-action" ); ?>'
|
77 |
}, function(response){
|
78 |
|
@@ -80,31 +55,22 @@ if( !defined( 'ABSPATH' ) ) exit();
|
|
80 |
|
81 |
if(response.success) {
|
82 |
|
83 |
-
|
84 |
-
|
85 |
-
if(current_page > 0) {
|
86 |
-
toggle_prev_btn(true);
|
87 |
-
} else {
|
88 |
-
toggle_prev_btn(false);
|
89 |
-
|
90 |
-
}
|
91 |
-
|
92 |
-
if(response.data.offset) {
|
93 |
-
page_offsets.push(response.data.offset);
|
94 |
-
toggle_next_btn(true);
|
95 |
-
} else {
|
96 |
-
toggle_next_btn(false);
|
97 |
-
}
|
98 |
|
|
|
|
|
|
|
|
|
|
|
99 |
} else {
|
100 |
|
101 |
if(response.data.error_notice) {
|
102 |
$('.limit-login-app-dashboard').find('.llar-app-notice').remove();
|
103 |
$('.limit-login-app-dashboard').prepend(response.data.error_notice);
|
104 |
}
|
105 |
-
|
106 |
}
|
107 |
|
|
|
108 |
});
|
109 |
|
110 |
}
|
4 |
|
5 |
<h3><?php _e( 'Active Lockouts', 'limit-login-attempts-reloaded' ); ?></h3>
|
6 |
|
7 |
+
<div class="llar-table-scroll-wrap llar-app-lockouts-infinity-scroll">
|
8 |
+
<table class="form-table llar-table-app-lockouts">
|
9 |
+
<tr>
|
10 |
+
<th scope="col"><?php _e( "IP", 'limit-login-attempts-reloaded' ); ?></th>
|
11 |
+
<th scope="col"><?php _e( "Login", 'limit-login-attempts-reloaded' ); ?></th>
|
12 |
+
<th scope="col"><?php _e( "Count", 'limit-login-attempts-reloaded' ); ?></th>
|
13 |
+
<th scope="col"><?php _e( "Expires in (minutes)", 'limit-login-attempts-reloaded' ); ?></th>
|
14 |
+
</tr>
|
15 |
+
</table>
|
16 |
</div>
|
17 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
18 |
<script type="text/javascript">
|
19 |
;(function($){
|
20 |
|
21 |
$(document).ready(function () {
|
22 |
|
23 |
var $log_table = $('.llar-table-app-lockouts'),
|
24 |
+
$infinity_box = $('.llar-app-lockouts-infinity-scroll'),
|
25 |
+
loading_data = false,
|
26 |
+
page_offset = '',
|
27 |
+
page_limit = 10;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
|
29 |
+
$infinity_box.on('scroll', function (){
|
30 |
+
if (!loading_data && $infinity_box.get(0).scrollTop + $infinity_box.get(0).clientHeight >= $infinity_box.get(0).scrollHeight - 1) {
|
31 |
+
load_lockouts_data();
|
32 |
+
}
|
33 |
+
});
|
34 |
|
35 |
+
load_lockouts_data();
|
|
|
|
|
|
|
|
|
36 |
|
37 |
+
function load_lockouts_data() {
|
|
|
38 |
|
39 |
+
if(page_offset === false) {
|
40 |
+
return;
|
41 |
+
}
|
42 |
|
43 |
+
loading_data = true;
|
44 |
|
45 |
llar.progressbar.start();
|
46 |
|
47 |
$.post(ajaxurl, {
|
48 |
action: 'app_load_lockouts',
|
49 |
+
offset: page_offset,
|
50 |
+
limit: page_limit,
|
51 |
sec: '<?php echo wp_create_nonce( "llar-action" ); ?>'
|
52 |
}, function(response){
|
53 |
|
55 |
|
56 |
if(response.success) {
|
57 |
|
58 |
+
$log_table.append(response.data.html);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
59 |
|
60 |
+
if(response.data.offset) {
|
61 |
+
page_offset = response.data.offset;
|
62 |
+
} else {
|
63 |
+
page_offset = false;
|
64 |
+
}
|
65 |
} else {
|
66 |
|
67 |
if(response.data.error_notice) {
|
68 |
$('.limit-login-app-dashboard').find('.llar-app-notice').remove();
|
69 |
$('.limit-login-app-dashboard').prepend(response.data.error_notice);
|
70 |
}
|
|
|
71 |
}
|
72 |
|
73 |
+
loading_data = false;
|
74 |
});
|
75 |
|
76 |
}
|
views/app-widgets/event-log.php
CHANGED
@@ -1,19 +1,21 @@
|
|
1 |
<?php
|
2 |
if( !defined( 'ABSPATH' ) ) exit();
|
3 |
?>
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
<div class="llar-
|
8 |
-
<
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
|
|
|
|
14 |
</div>
|
15 |
|
16 |
-
<div class="llar-table-scroll-wrap">
|
17 |
<table class="form-table llar-table-app-log">
|
18 |
<tr>
|
19 |
<th scope="col"><?php _e( "Time", 'limit-login-attempts-reloaded' ); ?></th>
|
@@ -35,25 +37,20 @@ if( !defined( 'ABSPATH' ) ) exit();
|
|
35 |
$(document).ready(function () {
|
36 |
|
37 |
var $log_table = $('.llar-table-app-log'),
|
38 |
-
|
39 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
|
41 |
load_log_data();
|
42 |
|
43 |
-
$('.llar-app-log-pagination').on('click', '.llar-prev-page:not(.disabled)', function(e){
|
44 |
-
e.preventDefault();
|
45 |
-
|
46 |
-
load_log_data(page_offsets[--current_page]);
|
47 |
-
|
48 |
-
toggle_next_btn(true);
|
49 |
-
});
|
50 |
-
|
51 |
-
$('.llar-app-log-pagination').on('click', '.llar-next-page:not(.disabled)', function(e){
|
52 |
-
e.preventDefault();
|
53 |
-
|
54 |
-
load_log_data(page_offsets[++current_page]);
|
55 |
-
});
|
56 |
-
|
57 |
$log_table.on('click', '.js-app-log-action', function (e) {
|
58 |
e.preventDefault();
|
59 |
|
@@ -83,32 +80,19 @@ if( !defined( 'ABSPATH' ) ) exit();
|
|
83 |
});
|
84 |
});
|
85 |
|
86 |
-
function
|
87 |
-
if(enable) {
|
88 |
-
|
89 |
-
$('.llar-app-log-pagination .llar-prev-page').removeClass('disabled');
|
90 |
-
} else {
|
91 |
-
|
92 |
-
$('.llar-app-log-pagination .llar-prev-page').addClass('disabled');
|
93 |
-
}
|
94 |
-
}
|
95 |
-
function toggle_next_btn(enable) {
|
96 |
-
if(enable) {
|
97 |
-
|
98 |
-
$('.llar-app-log-pagination .llar-next-page').removeClass('disabled');
|
99 |
-
} else {
|
100 |
-
|
101 |
-
$('.llar-app-log-pagination .llar-next-page').addClass('disabled');
|
102 |
-
}
|
103 |
-
}
|
104 |
|
105 |
-
|
|
|
|
|
106 |
|
107 |
llar.progressbar.start();
|
|
|
108 |
|
109 |
$.post(ajaxurl, {
|
110 |
action: 'app_load_log',
|
111 |
-
offset:
|
|
|
112 |
sec: '<?php echo wp_create_nonce( "llar-action" ); ?>'
|
113 |
}, function(response){
|
114 |
|
@@ -116,22 +100,23 @@ if( !defined( 'ABSPATH' ) ) exit();
|
|
116 |
|
117 |
if(response.success) {
|
118 |
|
119 |
-
$log_table.
|
120 |
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
|
126 |
-
|
|
|
|
|
|
|
127 |
|
128 |
-
if(response.data.offset) {
|
129 |
-
page_offsets.push(response.data.offset);
|
130 |
-
toggle_next_btn(true);
|
131 |
} else {
|
132 |
-
|
133 |
-
|
134 |
|
|
|
135 |
}
|
136 |
|
137 |
});
|
1 |
<?php
|
2 |
if( !defined( 'ABSPATH' ) ) exit();
|
3 |
?>
|
4 |
+
<?php
|
5 |
+
$app_config = $this->get_custom_app_config();
|
6 |
+
?>
|
7 |
+
<div class="llar-table-header">
|
8 |
+
<h3><?php _e( 'Event Log', 'limit-login-attempts-reloaded' ); ?></h3>
|
9 |
+
<?php if( !empty( $app_config['key'] ) ): ?>
|
10 |
+
<span class="right-link"><a href="https://my.limitloginattempts.com/logs?key=<?php echo esc_attr( $app_config['key'] ); ?>" target="_blank"><?php _e( 'Full Logs', 'limit-login-attempts-reloaded' ); ?></a>
|
11 |
+
<i class="llar-tooltip" data-text="<?php esc_attr_e( 'All attempts blocked by access rules are hidden by default. You can see the full log at this link.' ); ?>">
|
12 |
+
<span class="dashicons dashicons-editor-help"></span>
|
13 |
+
</i>
|
14 |
+
</span>
|
15 |
+
<?php endif; ?>
|
16 |
</div>
|
17 |
|
18 |
+
<div class="llar-table-scroll-wrap llar-app-log-infinity-scroll">
|
19 |
<table class="form-table llar-table-app-log">
|
20 |
<tr>
|
21 |
<th scope="col"><?php _e( "Time", 'limit-login-attempts-reloaded' ); ?></th>
|
37 |
$(document).ready(function () {
|
38 |
|
39 |
var $log_table = $('.llar-table-app-log'),
|
40 |
+
$infinity_box = $('.llar-app-log-infinity-scroll'),
|
41 |
+
loading_data = false,
|
42 |
+
page_offset = '',
|
43 |
+
page_limit = 10,
|
44 |
+
total_loaded = 0;
|
45 |
+
|
46 |
+
$infinity_box.on('scroll', function (){
|
47 |
+
if (!loading_data && $infinity_box.get(0).scrollTop + $infinity_box.get(0).clientHeight >= $infinity_box.get(0).scrollHeight - 1) {
|
48 |
+
load_log_data();
|
49 |
+
}
|
50 |
+
});
|
51 |
|
52 |
load_log_data();
|
53 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
54 |
$log_table.on('click', '.js-app-log-action', function (e) {
|
55 |
e.preventDefault();
|
56 |
|
80 |
});
|
81 |
});
|
82 |
|
83 |
+
function load_log_data() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
84 |
|
85 |
+
if(page_offset === false) {
|
86 |
+
return;
|
87 |
+
}
|
88 |
|
89 |
llar.progressbar.start();
|
90 |
+
loading_data = true;
|
91 |
|
92 |
$.post(ajaxurl, {
|
93 |
action: 'app_load_log',
|
94 |
+
offset: page_offset,
|
95 |
+
limit: page_limit,
|
96 |
sec: '<?php echo wp_create_nonce( "llar-action" ); ?>'
|
97 |
}, function(response){
|
98 |
|
100 |
|
101 |
if(response.success) {
|
102 |
|
103 |
+
$log_table.append(response.data.html);
|
104 |
|
105 |
+
total_loaded += response.data.total_items;
|
106 |
+
|
107 |
+
if(response.data.offset) {
|
108 |
+
page_offset = response.data.offset;
|
109 |
|
110 |
+
if(response.data.total_items < page_limit && total_loaded < page_limit) {
|
111 |
+
console.log('extra load');
|
112 |
+
load_log_data();
|
113 |
+
}
|
114 |
|
|
|
|
|
|
|
115 |
} else {
|
116 |
+
page_offset = false;
|
117 |
+
}
|
118 |
|
119 |
+
loading_data = false;
|
120 |
}
|
121 |
|
122 |
});
|