[html]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>System Logs</title>
<style>
/* Стили только для System_Logs */
.system-logs-wrapper {
margin-top: auto;
padding-top: 24px;
border-top: 1px solid rgba(220, 38, 38, 0.2);
}
.system-logs-title {
font-size: 9px;
font-family: 'Courier New', monospace;
color: #4b5563;
margin-bottom: 16px;
text-transform: uppercase;
}
#leakLogs {
font-family: 'Courier New', monospace;
font-size: 8px;
height: 128px;
overflow: hidden;
display: flex;
flex-direction: column-reverse;
}
.leak-log-item {
border-left: 2px solid #333;
padding-left: 10px;
margin-bottom: 5px;
font-size: 10px;
color: #666;
animation: logAppear 0.5s ease-out;
}
/* Стили для ссылок внутри логов */
.leak-log-item a {
color: #ff4444;
text-decoration: none;
border-bottom: 1px dashed rgba(255, 68, 68, 0.3);
transition: all 0.3s ease;
cursor: pointer;
}
.leak-log-item a:hover {
color: #ff6666;
border-bottom-color: #ff4444;
text-shadow: 0 0 10px rgba(255, 68, 68, 0.3);
}
@keyframes logAppear {
0% {
opacity: 0;
transform: translateX(-10px);
}
100% {
opacity: 1;
transform: translateX(0);
}
}
</style>
</head>
<body>
<!-- Блок System_Logs -->
<div class="system-logs-wrapper">
<div class="system-logs-title">System_Logs</div>
<div id="leakLogs">
<!-- Логи появляются здесь -->
</div>
</div>
<script>
// ============================================
// УПРОЩЕННЫЙ СКРИПТ
// ============================================
const MESSAGES_KEY = 'systemLogsMessages';
const LOGS_KEY = 'systemLogsData';
const logsContainer = document.getElementById('leakLogs');
// === СТАНДАРТНЫЕ СООБЩЕНИЯ (если в localStorage пусто) ===
const DEFAULT_MESSAGES = [
{ text: "SCRAPING_GOLDMAN_INTRANET", url: "https://www.goldmansachs.com" },
{ text: "PROJECT_LOOM_HANDSHAKE", url: "https://github.com/loomio/loomio" },
{ text: "INTERCEPTING_AWS_WEST", url: "https://aws.amazon.com" },
{ text: "TRANSCODING_LEAK_099", url: "https://en.wikipedia.org/wiki/Leak" },
{ text: "UPDATING_DISPLACEMENT_CHART", url: "https://www.imf.org" },
{ text: "SIGNAL_9.8_VERIFIED", url: "https://www.usgs.gov" },
{ text: "STAN_OVERRIDE_ACTIVE", url: "https://stanford.edu" },
{ text: "DECOUPLING_MANAGEMENT", url: "https://hbr.org" }
];
// === ПОЛУЧЕНИЕ СООБЩЕНИЙ ===
function getMessages() {
try {
const saved = localStorage.getItem(MESSAGES_KEY);
if (saved) {
const msgs = JSON.parse(saved);
if (Array.isArray(msgs) && msgs.length > 0) {
return msgs;
}
}
} catch (e) {
console.error('Ошибка загрузки сообщений:', e);
}
return DEFAULT_MESSAGES;
}
// === СОЗДАНИЕ 10 ЛОГОВ ИЗ СООБЩЕНИЙ ===
function createLogsFromMessages(messages) {
const now = new Date();
const logs = [];
// Перемешиваем сообщения
const shuffled = [...messages].sort(() => Math.random() - 0.5);
for (let i = 0; i < 10; i++) {
const time = new Date(now.getTime() - (10 - i) * 5000);
const msg = shuffled[i % shuffled.length];
logs.push({
id: Date.now() + '_' + i,
message: msg.text,
url: msg.url || '',
time: time.toLocaleTimeString(),
timestamp: time.toISOString()
});
}
return logs;
}
// === СОХРАНЕНИЕ ЛОГОВ ===
function saveLogs(logs) {
try {
localStorage.setItem(LOGS_KEY, JSON.stringify(logs));
} catch (e) {
console.error('Ошибка сохранения логов:', e);
}
}
// === ЗАГРУЗКА ЛОГОВ ===
function loadLogs() {
try {
const saved = localStorage.getItem(LOGS_KEY);
if (saved) {
const logs = JSON.parse(saved);
if (Array.isArray(logs) && logs.length > 0) {
return logs;
}
}
} catch (e) {
console.error('Ошибка загрузки логов:', e);
}
return null;
}
// === ОТОБРАЖЕНИЕ ЛОГОВ ===
function renderLogs(logsData) {
logsContainer.innerHTML = '';
if (!logsData || logsData.length === 0) {
const empty = document.createElement('div');
empty.className = 'leak-log-item';
empty.style.borderLeftColor = '#333';
empty.style.color = '#444';
empty.style.textAlign = 'center';
empty.style.padding = '15px';
empty.textContent = '📭 Нет логов';
logsContainer.appendChild(empty);
return;
}
const displayLogs = logsData.slice(0, 10);
displayLogs.forEach(logData => {
const el = document.createElement('div');
el.className = 'leak-log-item';
const timeSpan = document.createElement('span');
timeSpan.textContent = `[${logData.time || '--:--:--'}] `;
el.appendChild(timeSpan);
if (logData.url && logData.url.trim() !== '') {
const link = document.createElement('a');
link.href = logData.url;
link.target = '_blank';
link.rel = 'noopener noreferrer';
link.textContent = logData.message;
el.appendChild(link);
} else {
const textSpan = document.createElement('span');
textSpan.textContent = logData.message;
el.appendChild(textSpan);
}
logsContainer.appendChild(el);
});
}
// === ПЕРЕСОЗДАНИЕ ЛОГОВ ===
function regenerateLogs() {
const messages = getMessages();
const newLogs = createLogsFromMessages(messages);
saveLogs(newLogs);
renderLogs(newLogs);
console.log('🔄 Логи пересозданы с новыми сообщениями');
console.log('📝 Сообщения:', messages.length);
}
// === ДОБАВЛЕНИЕ НОВОГО ЛОГА ===
function addNewLog() {
const messages = getMessages();
let logs = loadLogs() || [];
const randomMsg = messages[Math.floor(Math.random() * messages.length)];
const now = new Date();
const newLog = {
id: Date.now() + '_' + Math.random().toString(36).substr(2, 5),
message: randomMsg.text,
url: randomMsg.url || '',
time: now.toLocaleTimeString(),
timestamp: now.toISOString()
};
logs.unshift(newLog);
if (logs.length > 50) logs = logs.slice(0, 50);
saveLogs(logs);
renderLogs(logs);
}
// === ПРОВЕРКА ИЗМЕНЕНИЙ СООБЩЕНИЙ ===
let lastMessagesHash = '';
function checkForChanges() {
const messages = getMessages();
const currentHash = JSON.stringify(messages);
if (currentHash !== lastMessagesHash) {
console.log('🔄 Обнаружены изменения в сообщениях!');
lastMessagesHash = currentHash;
// ПРИНУДИТЕЛЬНО ПЕРЕСОЗДАЕМ ЛОГИ
regenerateLogs();
}
}
// === ЗАПУСК ===
function startLogging() {
// Если в localStorage нет сообщений, сохраняем стандартные
if (!localStorage.getItem(MESSAGES_KEY)) {
localStorage.setItem(MESSAGES_KEY, JSON.stringify(DEFAULT_MESSAGES));
}
// Устанавливаем начальный хеш
lastMessagesHash = JSON.stringify(getMessages());
// Загружаем или создаем логи
let logs = loadLogs();
if (!logs || logs.length === 0) {
regenerateLogs();
} else {
renderLogs(logs);
}
// Добавляем новый лог каждые 5 секунд
setInterval(addNewLog, 5000);
// Проверяем изменения сообщений каждые 2 секунды
setInterval(checkForChanges, 2000);
console.log('✅ System Logs запущен');
}
document.addEventListener('DOMContentLoaded', startLogging);
if (document.readyState === 'complete' || document.readyState === 'interactive') {
startLogging();
}
</script>
</body>
</html>
[/html]


















































