diff --git a/decnet_web/src/components/AttackerDetail.tsx b/decnet_web/src/components/AttackerDetail.tsx index 40453967..2564c7aa 100644 --- a/decnet_web/src/components/AttackerDetail.tsx +++ b/decnet_web/src/components/AttackerDetail.tsx @@ -61,6 +61,9 @@ interface AttackerData { commands: { service: string; decky: string; command: string; timestamp: string }[]; country_code: string | null; country_source: string | null; + asn: number | null; + as_name: string | null; + asn_source: string | null; ptr_record: string | null; updated_at: string; behavior: AttackerBehavior | null; @@ -1262,6 +1265,26 @@ const AttackerDetail: React.FC = () => { unknown )} +
+ AS: + {attacker.asn != null ? ( + + AS{attacker.asn} + {attacker.as_name && ( + + {attacker.as_name} + + )} + {attacker.asn_source && ( + + ({attacker.asn_source}) + + )} + + ) : ( + unknown + )} +
REVERSE DNS: {attacker.ptr_record ? ( diff --git a/decnet_web/src/components/Attackers.css b/decnet_web/src/components/Attackers.css index 1de6638c..aeb60fbb 100644 --- a/decnet_web/src/components/Attackers.css +++ b/decnet_web/src/components/Attackers.css @@ -92,6 +92,16 @@ font-size: 0.72rem; opacity: 0.7; } +.attackers-root .ak-card .ak-asn { + font-size: 0.62rem; + letter-spacing: 1px; + padding: 1px 6px; + border: 1px solid var(--border); + color: var(--matrix); + opacity: 0.75; + font-weight: 600; + cursor: help; +} .attackers-root .ak-stats { display: flex; diff --git a/decnet_web/src/components/Attackers.tsx b/decnet_web/src/components/Attackers.tsx index f3e6a5fc..c83f0d01 100644 --- a/decnet_web/src/components/Attackers.tsx +++ b/decnet_web/src/components/Attackers.tsx @@ -25,6 +25,9 @@ interface AttackerEntry { commands: any[]; country_code: string | null; country_source: string | null; + asn: number | null; + as_name: string | null; + asn_source: string | null; updated_at: string; } @@ -209,6 +212,14 @@ const Attackers: React.FC = () => {
First: {new Date(a.first_seen).toLocaleDateString()} Last: {timeAgo(a.last_seen)} + {a.asn != null && ( + + AS{a.asn} + + )} {a.is_traversal && TRAVERSAL}