165 lines
7.4 KiB
HTML
165 lines
7.4 KiB
HTML
<!DOCTYPE html>
|
||
<html>
|
||
<head>
|
||
<title>Upload Debug Monitor</title>
|
||
<meta charset="utf-8">
|
||
<style>
|
||
body { font-family: monospace; margin: 20px; background: #1e1e1e; color: #fff; }
|
||
.container { max-width: 1200px; margin: 0 auto; }
|
||
.log-section { margin: 20px 0; padding: 15px; border: 1px solid #444; border-radius: 5px; background: #2d2d2d; }
|
||
.log-content { max-height: 400px; overflow-y: auto; background: #000; padding: 10px; border-radius: 3px; font-size: 12px; line-height: 1.4; }
|
||
.controls { margin: 20px 0; }
|
||
button { padding: 10px 15px; margin: 5px; background: #007acc; color: white; border: none; border-radius: 3px; cursor: pointer; }
|
||
button:hover { background: #005a9e; }
|
||
.status { padding: 10px; margin: 10px 0; border-radius: 3px; }
|
||
.status.success { background: #2d5a2d; border: 1px solid #4a8a4a; }
|
||
.status.error { background: #5a2d2d; border: 1px solid #8a4a4a; }
|
||
.status.info { background: #2d4a5a; border: 1px solid #4a6a8a; }
|
||
.timestamp { color: #888; }
|
||
.highlight { background: #444; padding: 2px 4px; border-radius: 2px; }
|
||
pre { white-space: pre-wrap; word-wrap: break-word; }
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<div class="container">
|
||
<h1>🔧 Upload Debug Monitor</h1>
|
||
|
||
<div class="controls">
|
||
<button onclick="loadServerLog()">📄 Обновить серверный лог</button>
|
||
<button onclick="loadDebugLog()">🐛 Обновить debug.log</button>
|
||
<button onclick="loadS3Log()">☁️ Обновить S3 лог</button>
|
||
<button onclick="clearLogs()">🗑️ Очистить экран</button>
|
||
<button onclick="startAutoRefresh()">🔄 Авто-обновление</button>
|
||
<button onclick="stopAutoRefresh()">⏹️ Стоп</button>
|
||
<button onclick="injectDebugScript()">💉 Внедрить JS отладку</button>
|
||
</div>
|
||
|
||
<div id="status" class="status info">
|
||
Готов к мониторингу. Нажмите кнопки выше для загрузки логов.
|
||
</div>
|
||
|
||
<div class="log-section">
|
||
<h3>📄 Серверный лог (debug_upload_server.log)</h3>
|
||
<div id="serverLog" class="log-content">Лог не загружен</div>
|
||
</div>
|
||
|
||
<div class="log-section">
|
||
<h3>🐛 Debug лог (debug.log)</h3>
|
||
<div id="debugLog" class="log-content">Лог не загружен</div>
|
||
</div>
|
||
|
||
<div class="log-section">
|
||
<h3>☁️ S3 лог (s3_storage.log)</h3>
|
||
<div id="s3Log" class="log-content">Лог не загружен</div>
|
||
</div>
|
||
|
||
<div class="log-section">
|
||
<h3>🌐 Консоль браузера</h3>
|
||
<div id="browserLog" class="log-content">
|
||
Откройте консоль разработчика (F12) для просмотра клиентских логов.
|
||
<br><br>
|
||
<strong>Доступные команды:</strong><br>
|
||
• <span class="highlight">debugUpload.logCurrentForms()</span> - показать все формы<br>
|
||
• <span class="highlight">debugUpload.logFileInputs()</span> - показать файловые поля<br>
|
||
• <span class="highlight">debugUpload.testUpload()</span> - тестовая загрузка<br>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<script>
|
||
let autoRefreshInterval = null;
|
||
|
||
function updateStatus(message, type = 'info') {
|
||
const status = document.getElementById('status');
|
||
status.textContent = new Date().toLocaleTimeString() + ': ' + message;
|
||
status.className = 'status ' + type;
|
||
}
|
||
|
||
function loadLog(endpoint, elementId, logName) {
|
||
updateStatus('Загружаем ' + logName + '...', 'info');
|
||
|
||
fetch(endpoint)
|
||
.then(response => response.text())
|
||
.then(data => {
|
||
document.getElementById(elementId).innerHTML = '<pre>' + escapeHtml(data) + '</pre>';
|
||
updateStatus(logName + ' загружен (' + data.length + ' символов)', 'success');
|
||
})
|
||
.catch(error => {
|
||
document.getElementById(elementId).innerHTML = '<pre style="color: #ff6b6b;">Ошибка загрузки: ' + error + '</pre>';
|
||
updateStatus('Ошибка загрузки ' + logName, 'error');
|
||
});
|
||
}
|
||
|
||
function loadServerLog() {
|
||
loadLog('debug_upload_log_viewer.php?log=server', 'serverLog', 'серверного лога');
|
||
}
|
||
|
||
function loadDebugLog() {
|
||
loadLog('debug_upload_log_viewer.php?log=debug', 'debugLog', 'debug лога');
|
||
}
|
||
|
||
function loadS3Log() {
|
||
loadLog('debug_upload_log_viewer.php?log=s3', 's3Log', 'S3 лога');
|
||
}
|
||
|
||
function clearLogs() {
|
||
document.getElementById('serverLog').innerHTML = 'Очищено';
|
||
document.getElementById('debugLog').innerHTML = 'Очищено';
|
||
document.getElementById('s3Log').innerHTML = 'Очищено';
|
||
updateStatus('Логи очищены', 'info');
|
||
}
|
||
|
||
function startAutoRefresh() {
|
||
if (autoRefreshInterval) {
|
||
clearInterval(autoRefreshInterval);
|
||
}
|
||
|
||
autoRefreshInterval = setInterval(() => {
|
||
loadServerLog();
|
||
loadDebugLog();
|
||
loadS3Log();
|
||
}, 3000);
|
||
|
||
updateStatus('Авто-обновление запущено (каждые 3 сек)', 'success');
|
||
}
|
||
|
||
function stopAutoRefresh() {
|
||
if (autoRefreshInterval) {
|
||
clearInterval(autoRefreshInterval);
|
||
autoRefreshInterval = null;
|
||
updateStatus('Авто-обновление остановлено', 'info');
|
||
}
|
||
}
|
||
|
||
function injectDebugScript() {
|
||
// Создаем новое окно с CRM
|
||
const crmWindow = window.open('/index.php', 'crm_debug', 'width=1200,height=800');
|
||
|
||
// Ждем загрузки и внедряем скрипт
|
||
setTimeout(() => {
|
||
try {
|
||
const script = crmWindow.document.createElement('script');
|
||
script.src = '/debug_upload_console.js';
|
||
crmWindow.document.head.appendChild(script);
|
||
|
||
updateStatus('JS отладка внедрена в окно CRM', 'success');
|
||
} catch (e) {
|
||
updateStatus('Ошибка внедрения JS: ' + e.message, 'error');
|
||
}
|
||
}, 2000);
|
||
}
|
||
|
||
function escapeHtml(text) {
|
||
const div = document.createElement('div');
|
||
div.textContent = text;
|
||
return div.innerHTML;
|
||
}
|
||
|
||
// Автоматически загружаем логи при открытии страницы
|
||
window.onload = function() {
|
||
updateStatus('Монитор загружен. Готов к работе!', 'success');
|
||
};
|
||
</script>
|
||
</body>
|
||
</html>
|