Version Description
- Dashboard widged added.
- Security indicator added.
Download this release
Release Info
Developer | wpchefgadget |
Plugin | Limit Login Attempts Reloaded |
Version | 2.25.0 |
Comparing to | |
See all releases |
Code changes from version 2.24.1 to 2.25.0
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-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;overflow:hidden}#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;float:left}#llar-dashboard-page .dashboard-section-4 .info-box-1 .countries-table-info-right{color:#2271b1;font-weight:400;margin-top:5px;margin-bottom:0;float:right}#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-alert-icon-animation{-webkit-animation-duration:10s;animation-duration:10s;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out;-webkit-animation-delay:3s;animation-delay:3s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-direction:normal;animation-direction:normal;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:running;animation-play-state:running;-webkit-animation-name:shake;animation-name:shake}#menu-settings li{position:relative}#menu-settings li .llar-alert-icon-animation{position:absolute;right:5px;top:7px;min-width:15px;line-height:15px;height:15px}@-webkit-keyframes shake{1%, 9%{-webkit-transform:translate3d(-1px, 0, 0);transform:translate3d(-1px, 0, 0)}2%, 8%{-webkit-transform:translate3d(2px, 0, 0);transform:translate3d(2px, 0, 0)}3%, 5%, 7%{-webkit-transform:translate3d(-3px, 0, 0);transform:translate3d(-3px, 0, 0)}4%, 6%{-webkit-transform:translate3d(3px, 0, 0);transform:translate3d(3px, 0, 0)}}@keyframes shake{1%, 9%{-webkit-transform:translate3d(-1px, 0, 0);transform:translate3d(-1px, 0, 0)}2%, 8%{-webkit-transform:translate3d(2px, 0, 0);transform:translate3d(2px, 0, 0)}3%, 5%, 7%{-webkit-transform:translate3d(-3px, 0, 0);transform:translate3d(-3px, 0, 0)}4%, 6%{-webkit-transform:translate3d(3px, 0, 0);transform:translate3d(3px, 0, 0)}}#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;overflow:hidden}#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;float:left}#llar-dashboard-page .dashboard-section-4 .info-box-1 .countries-table-info-right{color:#2271b1;font-weight:400;margin-top:5px;margin-bottom:0;float:right}#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}#llar-admin-dashboard-widgets .widget-title{padding-bottom:15px;border-bottom:1px solid #e4e4e4;font-size:14px;text-align:left}#llar-admin-dashboard-widgets .widget-content{overflow:hidden}#llar-admin-dashboard-widgets .llar-widget{margin-bottom:20px;background-color:#fff;text-align:center}#llar-admin-dashboard-widgets .llar-widget .chart{max-width:300px;position:relative;margin-bottom:15px;margin-left:auto;margin-right:auto}#llar-admin-dashboard-widgets .llar-widget .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-admin-dashboard-widgets .llar-widget .title{font-weight:600;font-size:16px;line-height:1.5;margin-bottom:10px}#llar-admin-dashboard-widgets .llar-widget .desc{font-size:15px}#llar-admin-dashboard-widgets .llar-widget .actions{margin-top:5px}#llar-admin-dashboard-widgets .llar-widget.widget-2 .llar-chart-wrap{width:100%;margin:0 auto;clear:both}#llar-admin-dashboard-widgets .llar-widget.widget-2 .llar-chart-wrap canvas{height:300px}#llar-admin-dashboard-widgets .llar-widget.widget-2 .chart-stats-legend{text-align:center;margin-top:10px}
|
assets/sass/_admin-dashboard-widgets.scss
ADDED
@@ -0,0 +1,71 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
#llar-admin-dashboard-widgets {
|
2 |
+
|
3 |
+
.widget-title {
|
4 |
+
//font-weight: bold;
|
5 |
+
padding-bottom: 15px;
|
6 |
+
border-bottom: 1px solid #e4e4e4;
|
7 |
+
font-size: 14px;
|
8 |
+
text-align: left;
|
9 |
+
}
|
10 |
+
.widget-content {
|
11 |
+
overflow: hidden;
|
12 |
+
}
|
13 |
+
|
14 |
+
.llar-widget {
|
15 |
+
margin-bottom: 20px;
|
16 |
+
background-color: #fff;
|
17 |
+
text-align: center;
|
18 |
+
|
19 |
+
.chart {
|
20 |
+
//margin-bottom: 10px;
|
21 |
+
max-width: 300px;
|
22 |
+
//display: inline-block;
|
23 |
+
position: relative;
|
24 |
+
margin-bottom: 15px;
|
25 |
+
margin-left: auto;
|
26 |
+
margin-right: auto;
|
27 |
+
|
28 |
+
.llar-retries-count {
|
29 |
+
position: absolute;
|
30 |
+
top: 50%;
|
31 |
+
left: 50%;
|
32 |
+
transform: translate(-50%, -50%);
|
33 |
+
font-size: 28px;
|
34 |
+
font-weight: bold;
|
35 |
+
}
|
36 |
+
}
|
37 |
+
|
38 |
+
.title {
|
39 |
+
font-weight: 600;
|
40 |
+
font-size: 16px;
|
41 |
+
line-height: 1.5;
|
42 |
+
margin-bottom: 10px;
|
43 |
+
}
|
44 |
+
|
45 |
+
.desc {
|
46 |
+
font-size: 15px;
|
47 |
+
}
|
48 |
+
|
49 |
+
.actions {
|
50 |
+
margin-top: 5px;
|
51 |
+
}
|
52 |
+
|
53 |
+
&.widget-2 {
|
54 |
+
|
55 |
+
.llar-chart-wrap {
|
56 |
+
width: 100%;
|
57 |
+
margin: 0 auto;
|
58 |
+
clear: both;
|
59 |
+
|
60 |
+
canvas {
|
61 |
+
height: 300px;
|
62 |
+
}
|
63 |
+
}
|
64 |
+
|
65 |
+
.chart-stats-legend {
|
66 |
+
text-align: center;
|
67 |
+
margin-top: 10px;
|
68 |
+
}
|
69 |
+
}
|
70 |
+
}
|
71 |
+
}
|
assets/sass/limit-login-attempts.scss
CHANGED
@@ -708,4 +708,48 @@
|
|
708 |
Â
}
|
709 |
Â
}
|
710 |
Â
|
711 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
708 |
Â
}
|
709 |
Â
}
|
710 |
Â
|
711 |
+
.llar-alert-icon-animation {
|
712 |
+
animation-duration: 10s;
|
713 |
+
animation-timing-function: ease-out;
|
714 |
+
animation-delay: 3s;
|
715 |
+
animation-iteration-count: infinite;
|
716 |
+
animation-direction: normal;
|
717 |
+
animation-fill-mode: both;
|
718 |
+
animation-play-state: running;
|
719 |
+
animation-name: shake;
|
720 |
+
}
|
721 |
+
|
722 |
+
#menu-settings {
|
723 |
+
li {
|
724 |
+
position: relative;
|
725 |
+
.llar-alert-icon-animation {
|
726 |
+
position: absolute;
|
727 |
+
right: 5px;
|
728 |
+
top: 7px;
|
729 |
+
min-width: 15px;
|
730 |
+
line-height: 15px;
|
731 |
+
height: 15px;
|
732 |
+
}
|
733 |
+
}
|
734 |
+
}
|
735 |
+
|
736 |
+
@keyframes shake {
|
737 |
+
1%, 9% {
|
738 |
+
transform: translate3d(-1px, 0, 0);
|
739 |
+
}
|
740 |
+
|
741 |
+
2%, 8% {
|
742 |
+
transform: translate3d(2px, 0, 0);
|
743 |
+
}
|
744 |
+
|
745 |
+
3%, 5%, 7% {
|
746 |
+
transform: translate3d(-3px, 0, 0);
|
747 |
+
}
|
748 |
+
|
749 |
+
4%, 6% {
|
750 |
+
transform: translate3d(3px, 0, 0);
|
751 |
+
}
|
752 |
+
}
|
753 |
+
|
754 |
+
@import "dashboard-page";
|
755 |
+
@import "admin-dashboard-widgets";
|
core/LimitLoginAttempts.php
CHANGED
@@ -129,13 +129,19 @@ class Limit_Login_Attempts {
|
|
129 |
Â
|
130 |
Â
add_action( 'admin_print_scripts-toplevel_page_limit-login-attempts', array( $this, 'load_admin_scripts' ) );
|
131 |
Â
add_action( 'admin_print_scripts-settings_page_limit-login-attempts', array( $this, 'load_admin_scripts' ) );
|
Â
|
|
132 |
Â
|
133 |
Â
add_action( 'admin_init', array( $this, 'welcome_page_redirect' ), 9999 );
|
Â
|
|
134 |
Â
add_action( 'admin_head', array( $this, 'welcome_page_hide_menu' ) );
|
135 |
Â
|
Â
|
|
Â
|
|
136 |
Â
add_action( 'login_footer', array( $this, 'login_page_gdpr_message' ) );
|
137 |
Â
add_action( 'login_footer', array( $this, 'login_page_render_js' ), 9999 );
|
138 |
Â
|
Â
|
|
Â
|
|
139 |
Â
register_activation_hook( LLA_PLUGIN_FILE, array( $this, 'activation' ) );
|
140 |
Â
}
|
141 |
Â
|
@@ -147,6 +153,33 @@ class Limit_Login_Attempts {
|
|
147 |
Â
set_transient( 'llar_welcome_redirect', true, 30 );
|
148 |
Â
}
|
149 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
150 |
Â
/**
|
151 |
Â
* Redirect to Welcome page after installed
|
152 |
Â
*/
|
@@ -617,7 +650,7 @@ class Limit_Login_Attempts {
|
|
617 |
Â
|
618 |
Â
add_menu_page(
|
619 |
Â
'Limit Login Attempts',
|
620 |
-
'Limit Login Attempts',
|
621 |
Â
'manage_options',
|
622 |
Â
$this->_options_page_slug,
|
623 |
Â
array( $this, 'options_page' ),
|
@@ -625,7 +658,7 @@ class Limit_Login_Attempts {
|
|
625 |
Â
);
|
626 |
Â
}
|
627 |
Â
|
628 |
-
add_options_page( 'Limit Login Attempts', 'Limit Login Attempts', 'manage_options', $this->_options_page_slug, array( $this, 'options_page' ) );
|
629 |
Â
|
630 |
Â
add_dashboard_page(
|
631 |
Â
'Welcome to Limit Login Attempts Reloaded',
|
@@ -640,6 +673,31 @@ class Limit_Login_Attempts {
|
|
640 |
Â
return file_get_contents( LLA_PLUGIN_DIR . '/assets/img/logo.svg' );
|
641 |
Â
}
|
642 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
643 |
Â
/**
|
644 |
Â
* Get the correct options page URI
|
645 |
Â
*
|
129 |
Â
|
130 |
Â
add_action( 'admin_print_scripts-toplevel_page_limit-login-attempts', array( $this, 'load_admin_scripts' ) );
|
131 |
Â
add_action( 'admin_print_scripts-settings_page_limit-login-attempts', array( $this, 'load_admin_scripts' ) );
|
132 |
+
add_action( 'admin_print_scripts-index.php', array( $this, 'load_admin_scripts' ) );
|
133 |
Â
|
134 |
Â
add_action( 'admin_init', array( $this, 'welcome_page_redirect' ), 9999 );
|
135 |
+
add_action( 'admin_init', array( $this, 'setup_cookie' ), 10 );
|
136 |
Â
add_action( 'admin_head', array( $this, 'welcome_page_hide_menu' ) );
|
137 |
Â
|
138 |
+
add_action( 'admin_menu', array( $this, 'setting_menu_alert_icon' ) );
|
139 |
+
|
140 |
Â
add_action( 'login_footer', array( $this, 'login_page_gdpr_message' ) );
|
141 |
Â
add_action( 'login_footer', array( $this, 'login_page_render_js' ), 9999 );
|
142 |
Â
|
143 |
+
add_action( 'wp_dashboard_setup', array( $this, 'register_dashboard_widgets' ) );
|
144 |
+
|
145 |
Â
register_activation_hook( LLA_PLUGIN_FILE, array( $this, 'activation' ) );
|
146 |
Â
}
|
147 |
Â
|
153 |
Â
set_transient( 'llar_welcome_redirect', true, 30 );
|
154 |
Â
}
|
155 |
Â
|
156 |
+
public function setup_cookie() {
|
157 |
+
|
158 |
+
if (empty($_GET['page']) || $_GET['page'] !== $this->_options_page_slug) return;
|
159 |
+
|
160 |
+
$cookie_name = 'llar_menu_alert_icon_shown';
|
161 |
+
|
162 |
+
if (empty($_COOKIE[$cookie_name])) {
|
163 |
+
setcookie($cookie_name, '1', time() + 24 * 3600);
|
164 |
+
}
|
165 |
+
}
|
166 |
+
|
167 |
+
public function register_dashboard_widgets() {
|
168 |
+
wp_add_dashboard_widget(
|
169 |
+
'llar_stats_widget',
|
170 |
+
__( 'Limit Login Attempts Reloaded', 'limit-login-attempts-reloaded' ),
|
171 |
+
array( $this, 'dashboard_widgets_content' ),
|
172 |
+
null,
|
173 |
+
null,
|
174 |
+
'normal',
|
175 |
+
'high'
|
176 |
+
);
|
177 |
+
}
|
178 |
+
|
179 |
+
public function dashboard_widgets_content() {
|
180 |
+
include_once( LLA_PLUGIN_DIR . '/views/admin-dashboard-widgets.php' );
|
181 |
+
}
|
182 |
+
|
183 |
Â
/**
|
184 |
Â
* Redirect to Welcome page after installed
|
185 |
Â
*/
|
650 |
Â
|
651 |
Â
add_menu_page(
|
652 |
Â
'Limit Login Attempts',
|
653 |
+
'Limit Login Attempts' . $this->menu_alert_icon(),
|
654 |
Â
'manage_options',
|
655 |
Â
$this->_options_page_slug,
|
656 |
Â
array( $this, 'options_page' ),
|
658 |
Â
);
|
659 |
Â
}
|
660 |
Â
|
661 |
+
add_options_page( 'Limit Login Attempts', 'Limit Login Attempts' . $this->menu_alert_icon(), 'manage_options', $this->_options_page_slug, array( $this, 'options_page' ) );
|
662 |
Â
|
663 |
Â
add_dashboard_page(
|
664 |
Â
'Welcome to Limit Login Attempts Reloaded',
|
673 |
Â
return file_get_contents( LLA_PLUGIN_DIR . '/assets/img/logo.svg' );
|
674 |
Â
}
|
675 |
Â
|
676 |
+
private function menu_alert_icon() {
|
677 |
+
|
678 |
+
if( !empty( $_COOKIE['llar_menu_alert_icon_shown'] ) || $this->get_option( 'active_app' ) !== 'local')
|
679 |
+
return '';
|
680 |
+
|
681 |
+
$retries_count = 0;
|
682 |
+
$retries_stats = $this->get_option( 'retries_stats' );
|
683 |
+
|
684 |
+
if( $retries_stats && array_key_exists( date_i18n( 'Y-m-d' ), $retries_stats ) ) {
|
685 |
+
$retries_count = (int) $retries_stats[date_i18n( 'Y-m-d' )];
|
686 |
+
}
|
687 |
+
|
688 |
+
if( $retries_count < 100 ) return '';
|
689 |
+
|
690 |
+
return ' <span class="update-plugins count-1 llar-alert-icon-animation"><span class="plugin-count">!</span></span>';
|
691 |
+
}
|
692 |
+
|
693 |
+
public function setting_menu_alert_icon() {
|
694 |
+
global $menu;
|
695 |
+
if( !$this->get_option( 'show_top_level_menu_item' ) && !empty( $menu[80][0] ) ) {
|
696 |
+
|
697 |
+
$menu[80][0] .= $this->menu_alert_icon();
|
698 |
+
}
|
699 |
+
}
|
700 |
+
|
701 |
Â
/**
|
702 |
Â
* Get the correct options page URI
|
703 |
Â
*
|
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.
|
9 |
Â
|
10 |
Â
Copyright 2008 - 2012 Johan Eenfeldt, 2016 - 2022 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.25.0
|
9 |
Â
|
10 |
Â
Copyright 2008 - 2012 Johan Eenfeldt, 2016 - 2022 Limit Login Attempts Reloaded
|
11 |
Â
*/
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ 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.9
|
7 |
-
Stable tag: 2.
|
8 |
Â
|
9 |
Â
Block excessive login attempts and protect your site against brute force attacks. Simple, yet powerful tools to improve site performance.
|
10 |
Â
|
@@ -98,6 +98,10 @@ Please follow this link: <a href="https://www.limitloginattempts.com/resources/"
|
|
98 |
Â
|
99 |
Â
== Changelog ==
|
100 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
101 |
Â
= 2.24.1 =
|
102 |
Â
* Fixed E_ERROR occurring in rare cases when the log table is corrupted.
|
103 |
Â
|
4 |
Â
Tags: brute force, login, security, firewall, protection
|
5 |
Â
Requires at least: 3.0
|
6 |
Â
Tested up to: 5.9
|
7 |
+
Stable tag: 2.25.0
|
8 |
Â
|
9 |
Â
Block excessive login attempts and protect your site against brute force attacks. Simple, yet powerful tools to improve site performance.
|
10 |
Â
|
98 |
Â
|
99 |
Â
== Changelog ==
|
100 |
Â
|
101 |
+
= 2.25.0 =
|
102 |
+
* Dashboard widged added.
|
103 |
+
* Security indicator added.
|
104 |
+
|
105 |
Â
= 2.24.1 =
|
106 |
Â
* Fixed E_ERROR occurring in rare cases when the log table is corrupted.
|
107 |
Â
|
views/admin-dashboard-widgets.php
ADDED
@@ -0,0 +1,250 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if (!defined('ABSPATH')) exit();
|
4 |
+
|
5 |
+
$active_app = ( $this->get_option( 'active_app' ) === 'custom' && $this->app ) ? 'custom' : 'local';
|
6 |
+
|
7 |
+
$retries_chart_title = '';
|
8 |
+
$retries_chart_desc = '';
|
9 |
+
$retries_chart_color = '';
|
10 |
+
$retries_chart_show_actions = false;
|
11 |
+
|
12 |
+
$api_stats = false;
|
13 |
+
$retries_count = 0;
|
14 |
+
if ($active_app === 'local') {
|
15 |
+
|
16 |
+
$retries_stats = $this->get_option('retries_stats');
|
17 |
+
|
18 |
+
if ($retries_stats) {
|
19 |
+
if (array_key_exists(date_i18n('Y-m-d'), $retries_stats)) {
|
20 |
+
$retries_count = (int)$retries_stats[date_i18n('Y-m-d')];
|
21 |
+
}
|
22 |
+
}
|
23 |
+
|
24 |
+
if ($retries_count === 0) {
|
25 |
+
|
26 |
+
$retries_chart_title = __('Hooray! Zero failed login attempts today', 'limit-login-attempts-reloaded');
|
27 |
+
$retries_chart_color = '#66CC66';
|
28 |
+
} else if ($retries_count < 100) {
|
29 |
+
|
30 |
+
$retries_chart_title = sprintf(_n('%d failed login attempt ', '%d failed login attempts ', $retries_count, 'limit-login-attempts-reloaded'), $retries_count);
|
31 |
+
$retries_chart_title .= __('today', 'limit-login-attempts-reloaded');
|
32 |
+
$retries_chart_desc = __('Your site might have been discovered by hackers', 'limit-login-attempts-reloaded');
|
33 |
+
$retries_chart_color = '#FFCC66';
|
34 |
+
} else {
|
35 |
+
|
36 |
+
$retries_chart_title = __('Warning: More than 100 failed login attempts today', 'limit-login-attempts-reloaded');
|
37 |
+
$retries_chart_desc = __('Your site is likely under a brute-force attack', 'limit-login-attempts-reloaded');
|
38 |
+
$retries_chart_color = '#FF6633';
|
39 |
+
$retries_chart_show_actions = true;
|
40 |
+
}
|
41 |
+
|
42 |
+
} else {
|
43 |
+
|
44 |
+
$api_stats = $this->app->stats();
|
45 |
+
|
46 |
+
if ($api_stats && !empty($api_stats['attempts']['count'])) {
|
47 |
+
|
48 |
+
$retries_count = (int)end($api_stats['attempts']['count']);
|
49 |
+
}
|
50 |
+
|
51 |
+
$retries_chart_title = __('Failed Login Attempts Today', 'limit-login-attempts-reloaded');
|
52 |
+
$retries_chart_desc = __('All failed login attempts have been neutralized in the cloud', 'limit-login-attempts-reloaded');
|
53 |
+
$retries_chart_color = '#66CC66';
|
54 |
+
}
|
55 |
+
|
56 |
+
?>
|
57 |
+
|
58 |
+
<div id="llar-admin-dashboard-widgets">
|
59 |
+
<div class="llar-widget">
|
60 |
+
<div class="widget-content">
|
61 |
+
<div class="chart">
|
62 |
+
<canvas id="llar-attack-velocity-chart"></canvas>
|
63 |
+
<span class="llar-retries-count"><?php echo esc_html($retries_count); ?></span>
|
64 |
+
</div>
|
65 |
+
<script type="text/javascript">
|
66 |
+
(function () {
|
67 |
+
|
68 |
+
var ctx = document.getElementById('llar-attack-velocity-chart').getContext('2d');
|
69 |
+
var llar_retries_chart = new Chart(ctx, {
|
70 |
+
type: 'doughnut',
|
71 |
+
data: {
|
72 |
+
datasets: [{
|
73 |
+
data: [1],
|
74 |
+
value: <?php echo esc_js($retries_count); ?>,
|
75 |
+
backgroundColor: ['<?php echo esc_js($retries_chart_color); ?>'],
|
76 |
+
borderWidth: [0]
|
77 |
+
}]
|
78 |
+
},
|
79 |
+
options: {
|
80 |
+
responsive: true,
|
81 |
+
cutoutPercentage: 70,
|
82 |
+
title: {
|
83 |
+
display: false,
|
84 |
+
// text: 'Local Attack Velocity'
|
85 |
+
},
|
86 |
+
tooltips: {
|
87 |
+
enabled: false
|
88 |
+
},
|
89 |
+
layout: {
|
90 |
+
padding: {
|
91 |
+
// bottom: 40
|
92 |
+
}
|
93 |
+
},
|
94 |
+
valueLabel: {
|
95 |
+
display: true,
|
96 |
+
fontSize: 25,
|
97 |
+
color: '#3e76c1',
|
98 |
+
backgroundColor: 'rgba(0,0,0,0)',
|
99 |
+
bottomMarginPercentage: -6
|
100 |
+
},
|
101 |
+
}
|
102 |
+
});
|
103 |
+
|
104 |
+
})();
|
105 |
+
</script>
|
106 |
+
<div class="title"><?php echo esc_html($retries_chart_title); ?></div>
|
107 |
+
<div class="desc"><?php echo $retries_chart_desc; ?></div>
|
108 |
+
<?php if ($retries_chart_show_actions) : ?>
|
109 |
+
<div class="actions">
|
110 |
+
<ol>
|
111 |
+
<li><?php _e('Change your password to something more secure.', 'limit-login-attempts-reloaded'); ?></li>
|
112 |
+
<li><?php _e('Make sure WordPress and all your plugins are updated.', 'limit-login-attempts-reloaded'); ?></li>
|
113 |
+
<li><?php echo sprintf(__('<a href="%s" target="_blank">Update to Premium</a> Limit Login Attempts Reloaded.', 'limit-login-attempts-reloaded'), 'https://www.limitloginattempts.com/info.php?from=dashboard-widget'); ?></li>
|
114 |
+
</ol>
|
115 |
+
</div>
|
116 |
+
<?php endif; ?>
|
117 |
+
</div>
|
118 |
+
</div>
|
119 |
+
<div class="llar-widget widget-2">
|
120 |
+
<div class="widget-content">
|
121 |
+
<?php
|
122 |
+
$chart2_label = '';
|
123 |
+
$chart2_labels = array();
|
124 |
+
$chart2_datasets = array();
|
125 |
+
|
126 |
+
if ($active_app === 'custom') {
|
127 |
+
|
128 |
+
$stats_dates = array();
|
129 |
+
$stats_values = array();
|
130 |
+
$date_format = trim(get_option('date_format'), ' yY,._:;-/\\');
|
131 |
+
$date_format = str_replace('F', 'M', $date_format);
|
132 |
+
|
133 |
+
$dataset = array(
|
134 |
+
'label' => __('Failed Login Attempts', 'limit-login-attempts-reloaded'),
|
135 |
+
'data' => [],
|
136 |
+
'backgroundColor' => 'rgb(54, 162, 235)',
|
137 |
+
'borderColor' => 'rgb(54, 162, 235)',
|
138 |
+
'fill' => false,
|
139 |
+
);
|
140 |
+
|
141 |
+
if ($api_stats && !empty($api_stats['attempts'])) {
|
142 |
+
|
143 |
+
foreach ($api_stats['attempts']['at'] as $timest) {
|
144 |
+
|
145 |
+
$stats_dates[] = date($date_format, $timest);
|
146 |
+
}
|
147 |
+
|
148 |
+
$chart2_label = __('Requests', 'limit-login-attempts-reloaded');
|
149 |
+
$chart2_labels = $stats_dates;
|
150 |
+
|
151 |
+
$dataset['data'] = $api_stats['attempts']['count'];
|
152 |
+
}
|
153 |
+
|
154 |
+
$chart2_datasets[] = $dataset;
|
155 |
+
|
156 |
+
} else {
|
157 |
+
|
158 |
+
$date_format = trim(get_option('date_format'), ' yY,._:;-/\\');
|
159 |
+
$date_format = str_replace('F', 'M', $date_format);
|
160 |
+
|
161 |
+
$retries_stats = $this->get_option('retries_stats');
|
162 |
+
|
163 |
+
if (is_array($retries_stats) && $retries_stats) {
|
164 |
+
|
165 |
+
$daterange = new DatePeriod(
|
166 |
+
new DateTime(key($retries_stats)),
|
167 |
+
new DateInterval('P1D'),
|
168 |
+
new DateTime()
|
169 |
+
);
|
170 |
+
|
171 |
+
$chart2_data = array();
|
172 |
+
foreach ($daterange as $date) {
|
173 |
+
|
174 |
+
$chart2_labels[] = $date->format($date_format);
|
175 |
+
$chart2_data[] = (!empty($retries_stats[$date->format("Y-m-d")])) ? $retries_stats[$date->format("Y-m-d")] : 0;
|
176 |
+
}
|
177 |
+
|
178 |
+
} else {
|
179 |
+
|
180 |
+
$chart2_labels[] = (new DateTime())->format($date_format);
|
181 |
+
$chart2_data[] = 0;
|
182 |
+
}
|
183 |
+
|
184 |
+
|
185 |
+
$chart2_datasets[] = array(
|
186 |
+
'label' => __('Failed Login Attempts', 'limit-login-attempts-reloaded'),
|
187 |
+
'data' => $chart2_data,
|
188 |
+
'backgroundColor' => 'rgb(54, 162, 235)',
|
189 |
+
'borderColor' => 'rgb(54, 162, 235)',
|
190 |
+
'fill' => false,
|
191 |
+
);
|
192 |
+
}
|
193 |
+
|
194 |
+
?>
|
195 |
+
|
196 |
+
<div class="llar-chart-wrap">
|
197 |
+
<canvas id="llar-api-requests-chart" style=""></canvas>
|
198 |
+
</div>
|
199 |
+
|
200 |
+
<script type="text/javascript">
|
201 |
+
(function () {
|
202 |
+
|
203 |
+
var ctx = document.getElementById('llar-api-requests-chart').getContext('2d');
|
204 |
+
var llar_stat_chart = new Chart(ctx, {
|
205 |
+
type: 'line',
|
206 |
+
data: {
|
207 |
+
labels: <?php echo json_encode($chart2_labels); ?>,
|
208 |
+
datasets: <?php echo json_encode($chart2_datasets); ?>
|
209 |
+
},
|
210 |
+
options: {
|
211 |
+
responsive: true,
|
212 |
+
maintainAspectRatio: false,
|
213 |
+
tooltips: {
|
214 |
+
mode: 'index',
|
215 |
+
intersect: false,
|
216 |
+
},
|
217 |
+
hover: {
|
218 |
+
mode: 'nearest',
|
219 |
+
intersect: true
|
220 |
+
},
|
221 |
+
scales: {
|
222 |
+
xAxes: [{
|
223 |
+
display: true,
|
224 |
+
scaleLabel: {
|
225 |
+
display: false
|
226 |
+
}
|
227 |
+
}],
|
228 |
+
yAxes: [{
|
229 |
+
display: true,
|
230 |
+
scaleLabel: {
|
231 |
+
display: false
|
232 |
+
},
|
233 |
+
ticks: {
|
234 |
+
beginAtZero: true,
|
235 |
+
userCallback: function (label, index, labels) {
|
236 |
+
if (Math.floor(label) === label) {
|
237 |
+
return label;
|
238 |
+
}
|
239 |
+
},
|
240 |
+
}
|
241 |
+
}]
|
242 |
+
}
|
243 |
+
}
|
244 |
+
});
|
245 |
+
|
246 |
+
})();
|
247 |
+
</script>
|
248 |
+
</div>
|
249 |
+
</div>
|
250 |
+
</div>
|