secutorpro's picture
🐳 15/07 - 00:03 - ok
4c2069d verified
Raw
History Blame Contribute Delete
21.7 kB
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Inverse SEO: De-referencing / No-index -->
<meta name="robots" content="noindex, nofollow, noarchive, nosnippet, noimageindex, notranslate, none">
<meta name="googlebot" content="noindex, nofollow, noarchive, nosnippet, noimageindex, none">
<meta name="bingbot" content="noindex, nofollow, noarchive, nosnippet, none">
<meta name="duckduckbot" content="noindex, nofollow, none">
<meta name="yandexbot" content="noindex, nofollow, none">
<meta name="baiduspider" content="noindex, nofollow, none">
<meta name="slurp" content="noindex, nofollow, noarchive, none">
<meta name="twitter" content="noindex, nofollow, none">
<meta name="referrer" content="no-referrer">
<meta http-equiv="x-dns-prefetch-control" content="off">
<meta http-equiv="cache-control" content="no-cache, no-store, must-revalidate">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="expires" content="0">
<link rel="canonical" href="#">
<title>Network - SentinelAI Command Center</title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&family=JetBrains+Mono:wght@400;500;600;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="network.css">
<script>
tailwind.config = {
theme: {
extend: {
fontFamily: {
sans: ['Inter', 'sans-serif'],
mono: ['JetBrains Mono', 'monospace'],
}
}
}
}
</script>
</head>
<body class="bg-slate-950 text-slate-200 font-sans antialiased min-h-screen overflow-x-hidden">
<!-- Animated Background -->
<div class="fixed inset-0 z-0 pointer-events-none">
<div class="grid-bg"></div>
<div class="absolute top-0 left-1/4 w-[600px] h-[600px] bg-cyan-600/5 rounded-full blur-3xl animate-pulse-slow"></div>
<div class="absolute bottom-0 right-1/4 w-[600px] h-[600px] bg-blue-600/5 rounded-full blur-3xl animate-pulse-slow-delayed"></div>
</div>
<!-- Top Navigation Bar -->
<nav class="relative z-20 border-b border-slate-800/60 backdrop-blur-xl bg-slate-950/90 sticky top-0">
<div class="max-w-[1600px] mx-auto px-4 sm:px-6 lg:px-8">
<div class="flex items-center justify-between h-14">
<div class="flex items-center gap-4">
<div class="flex items-center gap-2.5">
<div class="w-8 h-8 bg-gradient-to-br from-cyan-400 to-blue-600 rounded-lg flex items-center justify-center shadow-lg shadow-cyan-500/20">
<i data-lucide="shield-check" class="w-4 h-4 text-white"></i>
</div>
<div>
<span class="text-base font-bold text-white tracking-tight">Sentinel<span class="text-cyan-400">AI</span></span>
<span class="hidden sm:inline text-xs text-slate-500 ml-2 font-mono">COMMAND CENTER v2.0</span>
</div>
</div>
</div>
<div class="hidden md:flex items-center gap-1">
<a href="command-center.html" class="nav-link px-3 py-1.5 rounded-lg text-xs font-medium transition-all">
<i data-lucide="layout-dashboard" class="w-3.5 h-3.5 inline mr-1"></i>Dashboard
</a>
<a href="index.html" class="nav-link px-3 py-1.5 rounded-lg text-xs font-medium transition-all">
<i data-lucide="search" class="w-3.5 h-3.5 inline mr-1"></i>GDorks
</a>
<a href="threats.html" class="nav-link px-3 py-1.5 rounded-lg text-xs font-medium transition-all">
<i data-lucide="alert-triangle" class="w-3.5 h-3.5 inline mr-1"></i>Threats
</a>
<a href="network.html" class="nav-link active px-3 py-1.5 rounded-lg text-xs font-medium transition-all">
<i data-lucide="network" class="w-3.5 h-3.5 inline mr-1"></i>Network
</a>
<a href="seo-mesh-normal.html" class="nav-link px-3 py-1.5 rounded-lg text-xs font-medium transition-all">
<i data-lucide="network" class="w-3.5 h-3.5 inline mr-1"></i>Mesh Normal
</a>
<a href="seo-mesh-inverse.html" class="nav-link px-3 py-1.5 rounded-lg text-xs font-medium transition-all">
<i data-lucide="brain-circuit" class="w-3.5 h-3.5 inline mr-1"></i>Mesh Inversé
</a>
<a href="cognitive-inverse-mesh.html" class="nav-link px-3 py-1.5 rounded-lg text-xs font-medium transition-all">
<i data-lucide="brain-circuit" class="w-3.5 h-3.5 inline mr-1"></i>Cognitive Inversé
</a>
<a href="cognitive-seo-geo-mesh.html" class="nav-link px-3 py-1.5 rounded-lg text-xs font-medium transition-all">
<i data-lucide="brain" class="w-3.5 h-3.5 inline mr-1"></i>Cognitive SEO/GEO
</a>
<a href="seo-inverse.html" class="nav-link px-3 py-1.5 rounded-lg text-xs font-medium transition-all">
<i data-lucide="eye-off" class="w-3.5 h-3.5 inline mr-1"></i>SEO Inverse
</a>
<a href="chs-backend.html" class="nav-link px-3 py-1.5 rounded-lg text-xs font-medium transition-all">
<i data-lucide="plug" class="w-3.5 h-3.5 inline mr-1"></i>CHS Backend
</a>
</div>
<div class="flex items-center gap-3">
<div class="threat-indicator flex items-center gap-2 px-3 py-1.5 rounded-lg bg-green-500/10 border border-green-500/20">
<div class="w-2 h-2 bg-green-400 rounded-full animate-pulse"></div>
<span class="text-xs font-semibold text-green-400 font-mono">NETWORK OK</span>
</div>
<button onclick="toggleMobileMenu()" class="md:hidden p-2 text-slate-400 hover:text-white">
<i data-lucide="menu" class="w-5 h-5"></i>
</button>
<a href="https://github.com/jbsecuritejb-beep/SentinelAI-COMMAND-CENTER" target="_blank" class="hidden sm:flex items-center gap-1.5 text-slate-400 hover:text-white transition-colors">
<i data-lucide="github" class="w-4 h-4"></i>
</a>
</div>
</div>
</div>
<div id="mobileMenu" class="hidden md:hidden border-t border-slate-800/60 bg-slate-950/95 backdrop-blur-xl">
<div class="px-4 py-3 space-y-1">
<a href="command-center.html" class="block px-3 py-2 rounded-lg text-sm font-medium text-slate-400 hover:text-white hover:bg-slate-800">Dashboard</a>
<a href="index.html" class="block px-3 py-2 rounded-lg text-sm font-medium text-slate-400 hover:text-white hover:bg-slate-800">GDorks</a>
<a href="threats.html" class="block px-3 py-2 rounded-lg text-sm font-medium text-slate-400 hover:text-white hover:bg-slate-800">Threats</a>
<a href="network.html" class="block px-3 py-2 rounded-lg text-sm font-medium text-cyan-400 bg-cyan-500/10">Network</a>
<a href="seo-mesh-normal.html" class="block px-3 py-2 rounded-lg text-sm font-medium text-slate-400 hover:text-white hover:bg-slate-800">Mesh Normal</a>
<a href="seo-mesh-inverse.html" class="block px-3 py-2 rounded-lg text-sm font-medium text-slate-400 hover:text-white hover:bg-slate-800">Mesh Inversé</a>
<a href="cognitive-inverse-mesh.html" class="block px-3 py-2 rounded-lg text-sm font-medium text-slate-400 hover:text-white hover:bg-slate-800">Cognitive Inversé</a>
<a href="cognitive-seo-geo-mesh.html" class="block px-3 py-2 rounded-lg text-sm font-medium text-slate-400 hover:text-white hover:bg-slate-800">Cognitive SEO/GEO</a>
<a href="seo-inverse.html" class="block px-3 py-2 rounded-lg text-sm font-medium text-slate-400 hover:text-white hover:bg-slate-800">SEO Inverse</a>
<a href="chs-backend.html" class="block px-3 py-2 rounded-lg text-sm font-medium text-slate-400 hover:text-white hover:bg-slate-800">CHS Backend</a>
</div>
</div>
</nav>
<!-- Main Content -->
<div class="relative z-10 max-w-[1600px] mx-auto px-4 sm:px-6 lg:px-8 py-6">
<!-- System Status Banner -->
<div class="mb-6 flex items-center gap-3 px-4 py-2.5 bg-slate-900/50 border border-slate-800/60 rounded-xl backdrop-blur-sm">
<div class="flex items-center gap-2">
<div class="w-2 h-2 bg-cyan-400 rounded-full animate-pulse"></div>
<span class="text-xs font-mono text-cyan-400">NETWORK MONITOR ONLINE</span>
</div>
<div class="h-4 w-px bg-slate-800"></div>
<span class="text-xs font-mono text-slate-500" id="systemTime">--:--:--</span>
<div class="h-4 w-px bg-slate-800"></div>
<span class="text-xs font-mono text-slate-500">TOPOLOGY: <span class="text-slate-300">star-mesh hybrid</span></span>
<div class="h-4 w-px bg-slate-800 hidden sm:block"></div>
<span class="text-xs font-mono text-slate-500 hidden sm:inline">PROTOCOL: <span class="text-slate-300">TCP/IP</span></span>
<div class="ml-auto flex items-center gap-2">
<span class="text-xs font-mono text-slate-500">PACKETS/S: <span class="text-cyan-400" id="packetsPerSec">0</span></span>
</div>
</div>
<!-- Stats Row -->
<div class="grid grid-cols-2 md:grid-cols-4 gap-4 mb-6">
<div class="stat-card bg-slate-900/50 border border-slate-800/80 rounded-xl p-4 backdrop-blur-sm">
<div class="flex items-center justify-between mb-2">
<span class="text-xs font-medium text-slate-500 uppercase tracking-wider">Nodes Online</span>
<i data-lucide="server" class="w-4 h-4 text-green-400"></i>
</div>
<div class="text-2xl font-bold text-white font-mono"><span id="nodesOnline">0</span><span class="text-sm text-slate-500">/<span id="nodesTotal">0</span></span></div>
<div class="flex items-center gap-1 mt-1">
<i data-lucide="check-circle" class="w-3 h-3 text-green-400"></i>
<span class="text-xs text-green-400 font-mono">all operational</span>
</div>
</div>
<div class="stat-card bg-slate-900/50 border border-slate-800/80 rounded-xl p-4 backdrop-blur-sm">
<div class="flex items-center justify-between mb-2">
<span class="text-xs font-medium text-slate-500 uppercase tracking-wider">Bandwidth</span>
<i data-lucide="gauge" class="w-4 h-4 text-cyan-400"></i>
</div>
<div class="text-2xl font-bold text-cyan-400 font-mono"><span id="bandwidthVal">0</span><span class="text-sm text-slate-500"> Gbps</span></div>
<div class="flex items-center gap-1 mt-1">
<i data-lucide="activity" class="w-3 h-3 text-cyan-400"></i>
<span class="text-xs text-cyan-400 font-mono">utilization: 34%</span>
</div>
</div>
<div class="stat-card bg-slate-900/50 border border-slate-800/80 rounded-xl p-4 backdrop-blur-sm">
<div class="flex items-center justify-between mb-2">
<span class="text-xs font-medium text-slate-500 uppercase tracking-wider">Avg Latency</span>
<i data-lucide="timer" class="w-4 h-4 text-purple-400"></i>
</div>
<div class="text-2xl font-bold text-purple-400 font-mono"><span id="latencyVal">0</span><span class="text-sm text-slate-500"> ms</span></div>
<div class="flex items-center gap-1 mt-1">
<i data-lucide="trending-down" class="w-3 h-3 text-green-400"></i>
<span class="text-xs text-green-400 font-mono">-2.1% optimal</span>
</div>
</div>
<div class="stat-card bg-slate-900/50 border border-slate-800/80 rounded-xl p-4 backdrop-blur-sm">
<div class="flex items-center justify-between mb-2">
<span class="text-xs font-medium text-slate-500 uppercase tracking-wider">Active Connections</span>
<i data-lucide="link" class="w-4 h-4 text-amber-400"></i>
</div>
<div class="text-2xl font-bold text-amber-400 font-mono" id="connCount">0</div>
<div class="flex items-center gap-1 mt-1">
<i data-lucide="trending-up" class="w-3 h-3 text-amber-400"></i>
<span class="text-xs text-amber-400 font-mono">+12 new</span>
</div>
</div>
</div>
<!-- Main Grid: Topology + Node Status -->
<div class="grid grid-cols-1 lg:grid-cols-3 gap-6 mb-6">
<!-- Network Topology -->
<div class="lg:col-span-2 bg-slate-900/50 border border-slate-800/80 rounded-xl backdrop-blur-sm overflow-hidden">
<div class="flex items-center justify-between px-5 py-3 border-b border-slate-800/60">
<div class="flex items-center gap-2">
<i data-lucide="git-fork" class="w-4 h-4 text-cyan-400"></i>
<h2 class="text-sm font-semibold text-white">Network Topology</h2>
</div>
<div class="flex items-center gap-3 text-xs">
<div class="flex items-center gap-1.5"><div class="w-2 h-2 bg-green-400 rounded-full"></div><span class="text-slate-500">Online</span></div>
<div class="flex items-center gap-1.5"><div class="w-2 h-2 bg-amber-400 rounded-full"></div><span class="text-slate-500">Warning</span></div>
<div class="flex items-center gap-1.5"><div class="w-2 h-2 bg-red-400 rounded-full"></div><span class="text-slate-500">Offline</span></div>
<button onclick="refreshTopology()" class="ml-2 text-cyan-400 hover:text-cyan-300 font-mono flex items-center gap-1">
<i data-lucide="refresh-cw" class="w-3.5 h-3.5"></i>REFRESH
</button>
</div>
</div>
<div class="relative p-2" style="min-height: 380px;">
<canvas id="topologyCanvas" class="w-full rounded-lg" style="height: 380px;"></canvas>
<div id="topologyTooltip" class="absolute hidden bg-slate-900 border border-cyan-500/20 rounded-lg px-3 py-2 text-xs font-mono pointer-events-none z-10 shadow-xl"></div>
</div>
</div>
<!-- Node Status List -->
<div class="bg-slate-900/50 border border-slate-800/80 rounded-xl backdrop-blur-sm overflow-hidden">
<div class="flex items-center justify-between px-5 py-3 border-b border-slate-800/60">
<div class="flex items-center gap-2">
<i data-lucide="hard-drive" class="w-4 h-4 text-green-400"></i>
<h2 class="text-sm font-semibold text-white">Node Status</h2>
</div>
<span class="text-xs font-mono text-green-400" id="nodeStatusCount">0/0</span>
</div>
<div class="overflow-y-auto p-3 space-y-2" style="max-height: 380px;" id="nodeStatusList">
</div>
</div>
</div>
<!-- Second Row: Traffic Monitor + Active Connections -->
<div class="grid grid-cols-1 lg:grid-cols-3 gap-6 mb-6">
<!-- Traffic Monitor -->
<div class="lg:col-span-2 bg-slate-900/50 border border-slate-800/80 rounded-xl backdrop-blur-sm overflow-hidden">
<div class="flex items-center justify-between px-5 py-3 border-b border-slate-800/60">
<div class="flex items-center gap-2">
<i data-lucide="bar-chart-3" class="w-4 h-4 text-cyan-400"></i>
<h2 class="text-sm font-semibold text-white">Traffic Monitor</h2>
</div>
<div class="flex items-center gap-3 text-xs font-mono">
<span class="flex items-center gap-1.5"><div class="w-2.5 h-2.5 bg-cyan-400 rounded-sm"></div><span class="text-slate-400">Inbound</span></span>
<span class="flex items-center gap-1.5"><div class="w-2.5 h-2.5 bg-purple-400 rounded-sm"></div><span class="text-slate-400">Outbound</span></span>
</div>
</div>
<div class="p-4">
<canvas id="trafficChart" class="w-full" style="height: 200px;"></canvas>
<div class="grid grid-cols-3 gap-4 mt-4">
<div class="bg-slate-950 rounded-lg p-3 border border-slate-800">
<div class="text-xs text-slate-500 mb-1">Total In</div>
<div class="font-mono text-sm text-cyan-400" id="totalIn">0 GB</div>
</div>
<div class="bg-slate-950 rounded-lg p-3 border border-slate-800">
<div class="text-xs text-slate-500 mb-1">Total Out</div>
<div class="font-mono text-sm text-purple-400" id="totalOut">0 GB</div>
</div>
<div class="bg-slate-950 rounded-lg p-3 border border-slate-800">
<div class="text-xs text-slate-500 mb-1">Peak Rate</div>
<div class="font-mono text-sm text-amber-400" id="peakRate">0 Gbps</div>
</div>
</div>
</div>
</div>
<!-- Active Connections -->
<div class="bg-slate-900/50 border border-slate-800/80 rounded-xl backdrop-blur-sm overflow-hidden">
<div class="flex items-center justify-between px-5 py-3 border-b border-slate-800/60">
<div class="flex items-center gap-2">
<i data-lucide="link-2" class="w-4 h-4 text-amber-400"></i>
<h2 class="text-sm font-semibold text-white">Active Connections</h2>
</div>
</div>
<div class="overflow-y-auto p-3 space-y-2" style="max-height: 260px;" id="connectionsList">
</div>
</div>
</div>
<!-- Third Row: Port Scan Results -->
<div class="bg-slate-900/50 border border-slate-800/80 rounded-xl backdrop-blur-sm overflow-hidden">
<div class="flex items-center justify-between px-5 py-3 border-b border-slate-800/60">
<div class="flex items-center gap-2">
<i data-lucide="plug" class="w-4 h-4 text-purple-400"></i>
<h2 class="text-sm font-semibold text-white">Port Scan Results</h2>
</div>
<span class="text-xs font-mono text-slate-500">Last scan: <span class="text-cyan-400" id="lastScanTime">just now</span></span>
</div>
<div class="overflow-x-auto">
<table class="w-full text-sm">
<thead>
<tr class="border-b border-slate-800/60 text-xs text-slate-500 uppercase tracking-wider">
<th class="text-left px-4 py-3 font-medium">Asset</th>
<th class="text-left px-4 py-3 font-medium">IP Address</th>
<th class="text-left px-4 py-3 font-medium">Port</th>
<th class="text-left px-4 py-3 font-medium">Service</th>
<th class="text-left px-4 py-3 font-medium">Protocol</th>
<th class="text-left px-4 py-3 font-medium">State</th>
<th class="text-left px-4 py-3 font-medium hidden sm:table-cell">Banner</th>
</tr>
</thead>
<tbody id="portScanBody">
</tbody>
</table>
</div>
</div>
</div>
<!-- Toast -->
<div id="netToast" class="fixed bottom-6 right-6 z-50 transform translate-y-20 opacity-0 transition-all duration-300">
<div class="bg-slate-900 border border-slate-700 rounded-xl px-4 py-3 shadow-2xl flex items-center gap-3">
<div class="w-8 h-8 bg-cyan-500/20 rounded-lg flex items-center justify-center">
<i data-lucide="check" class="w-4 h-4 text-cyan-400"></i>
</div>
<span class="text-sm font-medium text-slate-200" id="netToastMsg">Done</span>
</div>
</div>
<script src="https://unpkg.com/lucide@latest"></script>
<script src="api-service.js"></script>
<script src="network.js"></script>
</body>
</html>