substr($fingerprint, 0, 16) . '...', 'reason' => $reason]); } else { $error_message = "Failed to ban fingerprint."; } break; case 'unban': if (VFingerprint::unbanFingerprint($fingerprint)) { $success_message = "Fingerprint has been unbanned successfully."; VIPTracker::logActivity('fingerprint_unbanned', ['fingerprint' => substr($fingerprint, 0, 16) . '...']); } else { $error_message = "Failed to unban fingerprint."; } break; } } // Get fingerprint statistics if fingerprint is provided $fingerprint_stats = null; $threat_info = null; $ban_info = null; if ($fingerprint && strlen($fingerprint) === 64) { $fingerprint_stats = VFingerprint::getFingerprintStats($fingerprint); $threat_info = VFingerprint::detectFingerprintThreats($fingerprint); $ban_info = VFingerprint::isBanned($fingerprint); } // Get recent fingerprints global $db; $recent_fingerprints = []; try { $sql = "SELECT fingerprint_hash, first_seen, last_seen, visit_count, last_ip, last_user_id, user_agent FROM db_fingerprints ORDER BY last_seen DESC LIMIT 20"; $result = $db->Execute($sql); while ($result && !$result->EOF) { $recent_fingerprints[] = [ 'fingerprint' => $result->fields['fingerprint_hash'], 'first_seen' => $result->fields['first_seen'], 'last_seen' => $result->fields['last_seen'], 'visit_count' => $result->fields['visit_count'], 'last_ip' => $result->fields['last_ip'], 'last_user_id' => $result->fields['last_user_id'], 'user_agent' => $result->fields['user_agent'] ]; $result->MoveNext(); } } catch (Exception $e) { // Handle error } // Get current fingerprint bans $current_bans = []; try { $sql = "SELECT fingerprint_hash, ban_reason, ban_date, ban_expires, banned_by FROM db_fingerprint_bans WHERE ban_active = 1 ORDER BY ban_date DESC LIMIT 50"; $result = $db->Execute($sql); while ($result && !$result->EOF) { $current_bans[] = [ 'fingerprint' => $result->fields['fingerprint_hash'], 'reason' => $result->fields['ban_reason'], 'ban_date' => $result->fields['ban_date'], 'expires' => $result->fields['ban_expires'], 'banned_by' => $result->fields['banned_by'] ]; $result->MoveNext(); } } catch (Exception $e) { // Handle error } // Get suspicious fingerprints $suspicious_fingerprints = []; try { $sql = "SELECT fingerprint_hash, visit_count, last_seen, last_ip, user_agent FROM db_fingerprints WHERE visit_count > 100 OR (TIMESTAMPDIFF(HOUR, first_seen, last_seen) > 0 AND (visit_count / TIMESTAMPDIFF(HOUR, first_seen, last_seen)) > 50) ORDER BY visit_count DESC LIMIT 20"; $result = $db->Execute($sql); while ($result && !$result->EOF) { $fp = $result->fields['fingerprint_hash']; $threats = VFingerprint::detectFingerprintThreats($fp); $suspicious_fingerprints[] = [ 'fingerprint' => $fp, 'visit_count' => $result->fields['visit_count'], 'last_seen' => $result->fields['last_seen'], 'last_ip' => $result->fields['last_ip'], 'user_agent' => $result->fields['user_agent'], 'threat_level' => $threats['risk_assessment'], 'threats' => $threats['threats'] ]; $result->MoveNext(); } } catch (Exception $e) { // Handle error } ?>
= secure_output($fingerprint) ?>
= $fingerprint_stats['visit_count'] ?>
= secure_output($fingerprint_stats['first_seen']) ?>
= secure_output($fingerprint_stats['last_seen']) ?>
= secure_output($fingerprint_stats['last_ip']) ?>
Risk Level: = $threat_info['risk_assessment'] ?>
| Fingerprint | Visits | Last Seen | Last IP | Threat Level | Threats | Actions |
|---|---|---|---|---|---|---|
| = substr($fp['fingerprint'], 0, 16) ?>... | = $fp['visit_count'] ?> | = secure_output($fp['last_seen']) ?> | = secure_output($fp['last_ip']) ?> | = $fp['threat_level'] ?> | = secure_output(implode('; ', array_slice($fp['threats'], 0, 2))) ?> 2): ?>... | View |
| Fingerprint | First Seen | Last Seen | Visits | Last IP | User ID | User Agent | Actions |
|---|---|---|---|---|---|---|---|
| = substr($fp['fingerprint'], 0, 16) ?>... | = secure_output($fp['first_seen']) ?> | = secure_output($fp['last_seen']) ?> | = $fp['visit_count'] ?> | = secure_output($fp['last_ip']) ?> | = $fp['last_user_id'] ?: 'Guest' ?> | = secure_output(substr($fp['user_agent'], 0, 50)) ?>... | View |
| Fingerprint | Reason | Banned Date | Expires | Banned By | Actions |
|---|---|---|---|---|---|
| = substr($ban['fingerprint'], 0, 16) ?>... | = secure_output($ban['reason']) ?> | = secure_output($ban['ban_date']) ?> | = $ban['expires'] ? secure_output($ban['expires']) : 'Permanent' ?> | = secure_output($ban['banned_by']) ?> |