ip user info
This commit is contained in:
@@ -3,7 +3,8 @@ let filteredResults = [];
|
||||
let selectedFilters = {
|
||||
countries: new Set(),
|
||||
asns: new Set(),
|
||||
owners: new Set()
|
||||
owners: new Set(),
|
||||
users: new Set()
|
||||
};
|
||||
|
||||
// Theme Management
|
||||
@@ -148,6 +149,19 @@ function displayFilters(stats) {
|
||||
${shortOwner} (${count})
|
||||
</span>`;
|
||||
}).join('');
|
||||
|
||||
// Users (top 15)
|
||||
const users = Object.entries(stats.users || {})
|
||||
.sort((a, b) => b[1] - a[1])
|
||||
.slice(0, 15);
|
||||
|
||||
document.getElementById('userFilters').innerHTML = users.map(([user, count]) => {
|
||||
const shortUser = user.length > 30 ? user.substring(0, 30) + '...' : user;
|
||||
return `<span class="filter-chip" data-type="users" data-value="${user}"
|
||||
onclick="toggleFilter('users', '${escapeHtml(user)}')" title="${user}">
|
||||
${shortUser} (${count})
|
||||
</span>`;
|
||||
}).join('');
|
||||
}
|
||||
|
||||
// Toggle Filter
|
||||
@@ -167,7 +181,7 @@ function toggleFilter(type, value) {
|
||||
|
||||
// Clear All Filters
|
||||
function clearFilters() {
|
||||
selectedFilters = { countries: new Set(), asns: new Set(), owners: new Set() };
|
||||
selectedFilters = { countries: new Set(), asns: new Set(), owners: new Set(), users: new Set() };
|
||||
document.querySelectorAll('.filter-chip').forEach(chip => chip.classList.remove('active'));
|
||||
applyFilters();
|
||||
}
|
||||
@@ -176,7 +190,8 @@ function clearFilters() {
|
||||
function applyFilters() {
|
||||
const hasFilters = selectedFilters.countries.size > 0 ||
|
||||
selectedFilters.asns.size > 0 ||
|
||||
selectedFilters.owners.size > 0;
|
||||
selectedFilters.owners.size > 0 ||
|
||||
selectedFilters.users.size > 0;
|
||||
|
||||
if (!hasFilters) {
|
||||
filteredResults = [...allResults];
|
||||
@@ -184,7 +199,8 @@ function applyFilters() {
|
||||
filteredResults = allResults.filter(item => {
|
||||
return (selectedFilters.countries.size === 0 || selectedFilters.countries.has(item.country)) &&
|
||||
(selectedFilters.asns.size === 0 || selectedFilters.asns.has(item.asn)) &&
|
||||
(selectedFilters.owners.size === 0 || selectedFilters.owners.has(item.owner));
|
||||
(selectedFilters.owners.size === 0 || selectedFilters.owners.has(item.owner)) &&
|
||||
(selectedFilters.users.size === 0 || selectedFilters.users.has(item.user || 'Unknown'));
|
||||
});
|
||||
}
|
||||
|
||||
@@ -194,7 +210,7 @@ function applyFilters() {
|
||||
|
||||
// Update Filter Count
|
||||
function updateFilterCount() {
|
||||
const total = selectedFilters.countries.size + selectedFilters.asns.size + selectedFilters.owners.size;
|
||||
const total = selectedFilters.countries.size + selectedFilters.asns.size + selectedFilters.owners.size + selectedFilters.users.size;
|
||||
const countEl = document.getElementById('filterCount');
|
||||
if (countEl) {
|
||||
countEl.textContent = total > 0
|
||||
@@ -214,6 +230,7 @@ function displayTable(results) {
|
||||
<td class="ip-cell">${item.ip}</td>
|
||||
<td><span class="badge-custom">${item.asn}</span></td>
|
||||
<td><small>${escapeHtml(item.owner)}</small></td>
|
||||
<td><small>${escapeHtml(item.user || 'Unknown')}</small></td>
|
||||
<td>${item.country}</td>
|
||||
<td><code>${item.network}</code></td>
|
||||
</tr>
|
||||
|
||||
Reference in New Issue
Block a user