#!/usr/bin/env python3
"""
Dashboard template for viewing honeypot statistics.
Customize this template to change the dashboard appearance.
"""
def generate_dashboard(stats: dict) -> str:
"""Generate dashboard HTML with access statistics"""
top_ips_rows = '\n'.join([
f'
| {i+1} | {ip} | {count} |
'
for i, (ip, count) in enumerate(stats['top_ips'])
]) or '| No data |
'
# Generate paths rows
top_paths_rows = '\n'.join([
f'| {i+1} | {path} | {count} |
'
for i, (path, count) in enumerate(stats['top_paths'])
]) or '| No data |
'
# Generate User-Agent rows
top_ua_rows = '\n'.join([
f'| {i+1} | {ua[:80]} | {count} |
'
for i, (ua, count) in enumerate(stats['top_user_agents'])
]) or '| No data |
'
# Generate suspicious accesses rows
suspicious_rows = '\n'.join([
f'| {log["ip"]} | {log["path"]} | {log["user_agent"][:60]} | {log["timestamp"].split("T")[1][:8]} |
'
for log in stats['recent_suspicious'][-10:]
]) or '| No suspicious activity detected |
'
return f"""
Krawl Dashboard
🕷️ Krawl Dashboard
{stats['total_accesses']}
Total Accesses
{stats['unique_ips']}
Unique IPs
{stats['unique_paths']}
Unique Paths
{stats['suspicious_accesses']}
Suspicious Accesses
⚠️ Recent Suspicious Activity
| IP Address |
Path |
User-Agent |
Time |
{suspicious_rows}
Top IP Addresses
| # |
IP Address |
Access Count |
{top_ips_rows}
Top Paths
| # |
Path |
Access Count |
{top_paths_rows}
Top User-Agents
| # |
User-Agent |
Count |
{top_ua_rows}
"""