{% extends "base.html" %} {% block content %}
{# GitHub logo #} {# Back to dashboard link #}
← Back to Dashboard
{# Page header #}

{{ ip_address }} {% if stats.category %} {{ stats.category | replace('_', ' ') | title }} {% endif %}

{% if stats.city or stats.country %}

{{ stats.city | default('') }}{% if stats.city and stats.country %}, {% endif %}{{ stats.country | default(stats.country_code | default('')) }}

{% endif %}
{# Main content grid #}
{# Left column: IP Info + Map #}
{# IP Information Card #}

IP Information

Activity

Total Requests: {{ stats.total_requests | default('N/A') }}
First Seen: {{ stats.first_seen | format_ts }}
Last Seen: {{ stats.last_seen | format_ts }}
{% if stats.last_analysis %}
Last Analysis: {{ stats.last_analysis | format_ts }}
{% endif %}

Geo & Network

{% if stats.city or stats.country %}
Location: {{ stats.city | default('') | e }}{% if stats.city and stats.country %}, {% endif %}{{ stats.country | default(stats.country_code | default('')) | e }}
{% endif %} {% if stats.timezone %}
Timezone: {{ stats.timezone | e }}
{% endif %} {% if stats.isp %}
ISP: {{ stats.isp | e }}
{% endif %} {% if stats.asn_org %}
Organization: {{ stats.asn_org | e }}
{% endif %} {% if stats.asn %}
ASN: AS{{ stats.asn }}
{% endif %} {% if stats.reverse_dns %}
Reverse DNS: {{ stats.reverse_dns | e }}
{% endif %}

Reputation

{% set flags = [] %} {% if stats.is_proxy %}{% set _ = flags.append('Proxy') %}{% endif %} {% if stats.is_hosting %}{% set _ = flags.append('Hosting') %}{% endif %} {% if flags %}
Flags: {% for flag in flags %} {{ flag }} {% endfor %}
{% endif %} {% if stats.reputation_score is not none %}
Score: {{ stats.reputation_score }}/100
{% endif %} {% if stats.blocklist_memberships %}
Listed On:
{% for bl in stats.blocklist_memberships %} {{ bl | e }} {% endfor %}
{% else %}
Blocklists: Clean
{% endif %}
{# Single IP Map #}

Location

{# Right column: Radar Chart + Timeline #}
{# Category Analysis Card #} {% if stats.category_scores %}

Category Analysis

{% endif %} {# Behavior Timeline #} {% if stats.category_history %}

Behavior Timeline

{% for entry in stats.category_history %}
{{ entry.new_category | default('unknown') | replace('_', ' ') | title }} {% if entry.old_category %} from {{ entry.old_category | replace('_', ' ') | title }} {% endif %}
{{ entry.timestamp | format_ts }}
{% endfor %}
{% endif %}
{# Access History table #}

Access History

Loading...
{# Raw Request Modal #}

Raw Request

×

            
{% endblock %} {% block scripts %} {% endblock %}