Initial commit
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>TNProxy - Настройки логов</title>
|
||||
<style>
|
||||
* { box-sizing: border-box; margin: 0; padding: 0; }
|
||||
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; background: #f5f5f5; padding: 20px; }
|
||||
.container { max-width: 600px; margin: 0 auto; }
|
||||
h1 { color: #333; margin-bottom: 20px; }
|
||||
.btn { display: inline-block; padding: 10px 20px; background: #0088cc; color: white; text-decoration: none; border-radius: 5px; border: none; cursor: pointer; font-size: 14px; }
|
||||
.btn:hover { background: #006699; }
|
||||
.btn-secondary { background: #666; }
|
||||
.nav { margin-bottom: 20px; }
|
||||
.nav a { margin-right: 15px; color: #0088cc; text-decoration: none; }
|
||||
.nav a:hover { text-decoration: underline; }
|
||||
.card { background: white; padding: 20px; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.1); margin-bottom: 20px; }
|
||||
.form-group { margin-bottom: 15px; }
|
||||
label { display: block; margin-bottom: 5px; font-weight: 500; }
|
||||
input, select { width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 5px; font-size: 14px; }
|
||||
.help { font-size: 12px; color: #666; margin-top: 4px; }
|
||||
.log-path { font-family: monospace; background: #f8f9fa; padding: 4px 8px; border-radius: 4px; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="nav">
|
||||
<a href="/adtn">Приложения</a>
|
||||
<a href="/adtn/logs">Логи</a>
|
||||
<a href="/adtn/api">API Docs</a>
|
||||
</div>
|
||||
|
||||
<h1>Настройки логирования</h1>
|
||||
|
||||
<div class="card">
|
||||
<h2>Log Rotate</h2>
|
||||
<form id="logForm">
|
||||
<div class="form-group">
|
||||
<label>Уровень логирования</label>
|
||||
<select name="log_level">
|
||||
<option value="DEBUG" {% if settings.log_level == 'DEBUG' %}selected{% endif %}>DEBUG</option>
|
||||
<option value="INFO" {% if settings.log_level == 'INFO' %}selected{% endif %}>INFO</option>
|
||||
<option value="WARNING" {% if settings.log_level == 'WARNING' %}selected{% endif %}>WARNING</option>
|
||||
<option value="ERROR" {% if settings.log_level == 'ERROR' %}selected{% endif %}>ERROR</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Максимальный размер файла (байт)</label>
|
||||
<input type="number" name="max_bytes" value="{{ settings.max_bytes }}" min="1024">
|
||||
<div class="help">Текущее значение: {{ settings.max_bytes }} байт ({{ (settings.max_bytes / 1024 / 1024)|round(2) }} MB)</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Количество backup файлов</label>
|
||||
<input type="number" name="backup_count" value="{{ settings.backup_count }}" min="1" max="100">
|
||||
<div class="help">Сколько архивных файлов хранить</div>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn">Сохранить</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<h2>Файл логов</h2>
|
||||
<p>Путь: <span class="log-path">/app/logs/tnproxy.log</span></p>
|
||||
<p class="help">В Docker подключите volume <code>./logs:/app/logs</code> для доступа к файлам</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
document.getElementById('logForm').onsubmit = async (e) => {
|
||||
e.preventDefault();
|
||||
const formData = new FormData(e.target);
|
||||
const data = {
|
||||
log_level: formData.get('log_level'),
|
||||
max_bytes: parseInt(formData.get('max_bytes')),
|
||||
backup_count: parseInt(formData.get('backup_count'))
|
||||
};
|
||||
|
||||
const res = await fetch('/adtn/logs', {
|
||||
method: 'POST',
|
||||
headers: {'Content-Type': 'application/json'},
|
||||
body: JSON.stringify(data)
|
||||
});
|
||||
|
||||
if (res.ok) {
|
||||
alert('Настройки сохранены!');
|
||||
} else {
|
||||
alert('Ошибка сохранения');
|
||||
}
|
||||
};
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user