feat: hide IP addresses by default, click to reveal
Added maskIp() helper that replaces IPs with ••••••••. A global delegated click handler reveals the address on click. Applied to: - Player list 'Address' column - Player info 'Address' field Styled .ip-masked with dimmed text and purple hover glow. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -109,6 +109,23 @@
|
||||
|
||||
Router.start('#app-view');
|
||||
|
||||
// ---- IP address masking ----
|
||||
window.maskIp = function (ip) {
|
||||
if (!ip) return '';
|
||||
return '<span class="ip-masked" data-ip="' + ip + '" title="Click to reveal IP">••••••••</span>';
|
||||
};
|
||||
|
||||
document.addEventListener('click', function (e) {
|
||||
var el = e.target.closest('.ip-masked');
|
||||
if (el) {
|
||||
el.classList.remove('ip-masked');
|
||||
el.classList.add('ip-revealed');
|
||||
el.textContent = el.dataset.ip;
|
||||
el.title = '';
|
||||
e.preventDefault();
|
||||
}
|
||||
});
|
||||
|
||||
// ---- Initial state ----
|
||||
showDisconnected();
|
||||
})();
|
||||
|
||||
@@ -59,7 +59,11 @@ function PlayerInfoPage(params, container) {
|
||||
var fieldsHtml = '';
|
||||
for (var key in info) {
|
||||
if (info.hasOwnProperty(key)) {
|
||||
fieldsHtml += '<div class="col-sm-4"><p>' + key + ': <span class="badge">' + info[key] + '</span></p></div>';
|
||||
var value = info[key];
|
||||
if (key === 'Address') {
|
||||
value = maskIp(value);
|
||||
}
|
||||
fieldsHtml += '<div class="col-sm-4"><p>' + key + ': <span class="badge">' + value + '</span></p></div>';
|
||||
}
|
||||
}
|
||||
document.getElementById('pi-fields').innerHTML = fieldsHtml;
|
||||
|
||||
@@ -84,7 +84,7 @@ function PlayerListPage(params, container) {
|
||||
'<td><a href="#/' + address + '/player/' + p.SteamID + '/">' + (p.DisplayName || '') + '</a></td>' +
|
||||
'<td class="text-end"><a href="#/' + address + '/player/' + p.SteamID + '/">' + p.SteamID + '</a></td>' +
|
||||
'<td class="text-end"' + fadeClass + '>' + (p.VoiationLevel || 0) + '</td>' +
|
||||
'<td class="text-end">' + (p.Address || '') + '</td>' +
|
||||
'<td class="text-end ip-cell">' + maskIp(p.Address) + '</td>' +
|
||||
'<td class="text-end">' + (p.Ping || 0) + '</td>' +
|
||||
'<td class="text-end">' + secondsToDuration(p.ConnectedSeconds || 0) + '</td>' +
|
||||
'</tr>';
|
||||
|
||||
Reference in New Issue
Block a user