mirvmon/templates/servers/edit.twig

145 lines
8.7 KiB
Twig
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{% extends "layout.twig" %}
{% block content %}
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">
<h3><i class="fas fa-edit"></i> Редактировать сервер "{{ server.name }}"</h3>
</div>
<div class="card-body">
<form method="post" action="/servers/{{ server.id }}">
<div class="mb-3">
<label for="name" class="form-label">Название сервера *</label>
<input type="text" class="form-control" id="name" name="name" value="{{ server.name }}" required>
<small class="form-text text-muted">Укажите понятное название сервера</small>
</div>
<div class="mb-3">
<label for="address" class="form-label">Адрес сервера</label>
<input type="text" class="form-control" id="address" name="address" value="{{ server.address|default('') }}" placeholder="IP или домен">
<small class="form-text text-muted">IP-адрес или доменное имя сервера (не обязательно)</small>
</div>
<div class="mb-3">
<label for="group_id" class="form-label">Группа</label>
<select class="form-select" id="group_id" name="group_id">
<option value="">Не выбрана</option>
{% for group in groups %}
<option value="{{ group.id }}" {% if server.group_id == group.id %}selected{% endif %}>{{ group.name }}</option>
{% endfor %}
</select>
<small class="form-text text-muted">Выберите группу для объединения серверов</small>
</div>
<div class="mb-3">
<label for="description" class="form-label">Описание</label>
<textarea class="form-control" id="description" name="description" rows="3">{{ server.description|default('') }}</textarea>
<small class="form-text text-muted">Дополнительная информация о сервере</small>
</div>
{% if allMetrics|length > 0 %}
<hr>
<h5 class="mb-3"><i class="fas fa-chart-line"></i> Отображаемые метрики</h5>
<p class="text-muted small">Выберите метрики, которые будут показываться на графиках. Пустой выбор = все метрики.</p>
<div class="row mb-3">
{% set savedMetrics = server_display_metrics ?: [] %}
{% for metric in allMetrics %}
<div class="col-md-4 col-lg-3 mb-2">
<div class="form-check">
<input class="form-check-input" type="checkbox" name="display_metrics[]"
id="metric_{{ metric.name }}" value="{{ metric.name }}"
{% if metric.name in savedMetrics %}checked{% endif %}>
<label class="form-check-label" for="metric_{{ metric.name }}">
{{ metric.name }}
{% if metric.unit %}({{ metric.unit }}){% endif %}
</label>
</div>
</div>
{% endfor %}
</div>
{% endif %}
<hr>
<h5 class="mb-3"><i class="fas fa-wifi"></i> Настройки мониторинга недоступности</h5>
<div class="row">
<div class="col-md-6">
<div class="mb-3">
<label for="offline_timeout" class="form-label">Таймаут offline</label>
<div class="input-group">
<input type="number" class="form-control" id="offline_timeout" name="offline_timeout"
value="{{ server.offline_timeout|default(300) }}" min="0" max="86400">
<span class="input-group-text">секунд</span>
</div>
<small class="form-text text-muted">Сервер будет считаться offline если метрики не приходили N секунд (0 = выключено)</small>
</div>
</div>
<div class="col-md-6">
<div class="mb-3">
<label class="form-label">Уведомления</label>
<div class="form-check form-switch mt-2">
<input class="form-check-input" type="checkbox" name="notify_on_offline" id="notify_on_offline"
value="1" {% if server.notify_on_offline|default(1) %}checked{% endif %}>
<label class="form-check-label" for="notify_on_offline">
Уведомлять при offline
</label>
</div>
</div>
</div>
</div>
{% if server.last_offline_alert_at %}
<div class="alert alert-info small">
<i class="fas fa-clock"></i> Последний offline алерт: {{ server.last_offline_alert_at|date('d.m.Y H:i:s') }}
</div>
{% endif %}
<div class="d-grid gap-2 d-md-flex justify-content-md-end">
<a href="/servers" class="btn btn-secondary me-md-2">
<i class="fas fa-arrow-left"></i> Назад
</a>
<button type="submit" class="btn btn-primary">
<i class="fas fa-save"></i> Сохранить изменения
</button>
</div>
</form>
<hr>
<div class="mt-4">
<h5>Управление агентом мониторинга:</h5>
{% if agent_token %}
<div class="row">
<div class="col-md-4 mb-2">
<a href="/agent/install.sh?token={{ agent_token }}" class="btn btn-outline-primary w-100">
<i class="fab fa-linux"></i> Агент для Linux
</a>
</div>
<div class="col-md-4 mb-2">
<a href="/agent/install.bat?token={{ agent_token }}" class="btn btn-outline-info w-100">
<i class="fab fa-windows"></i> Агент для Windows
</a>
</div>
<div class="col-md-4 mb-2">
<a href="/servers/{{ server.id }}/regenerate-token" class="btn btn-outline-warning w-100" onclick="return confirm('Вы уверены, что хотите сгенерировать новый токен? Это сделает недействительным старый скрипт установки.');">
<i class="fas fa-sync-alt"></i> Сбросить токен
</a>
</div>
</div>
<p class="mt-2">Если вы потеряли доступ к агенту или хотите создать новый токен безопасности, используйте кнопку "Сбросить токен".</p>
{% else %}
<div class="alert alert-warning">
Токен агента не создан. <a href="/servers/{{ server.id }}/regenerate-token">Создать токен</a>
</div>
{% endif %}
</div>
</div>
</div>
</div>
</div>
{% endblock %}