Files

83 lines
4.3 KiB
HTML

{{define "page_admin_servers"}}
{{template "admin_shell_open" dict "Active" .Active "Admin" .Admin "Title" "Серверы"}}
{{template "admin_flash" .}}
{{if .PanelErr}}<div class="alert-err"><i class="fa-solid fa-triangle-exclamation"></i> Панель недоступна: {{.PanelErr}}</div>{{end}}
{{if not .PanelReachable}}<p class="hint">Панель Amnezia сейчас не отвечает — список серверов основан на сохранённых названиях (panel_server_labels) и настройках.</p>{{end}}
<div class="card">
<div class="card-header"><h2><i class="fa-solid fa-plus"></i> Добавить сервер вручную</h2></div>
<form method="post" action="{{appURL "admin/servers"}}" class="d-flex flex-wrap gap-2 align-items-end">
{{template "admin_csrf_field"}}
<input type="hidden" name="action" value="add">
<div>
<label class="form-label">ID сервера в панели</label>
<input class="form-control input-inline" type="number" name="new_server_id" min="0" required>
</div>
<div>
<label class="form-label">Название</label>
<input class="form-control" name="new_server_title" required placeholder="🇩🇪 Германия">
</div>
<button type="submit" class="btn btn-ghost"><i class="fa-solid fa-plus"></i> Добавить</button>
</form>
</div>
<div class="card">
<div class="card-header"><h2><i class="fa-solid fa-server"></i> Серверы ({{len .Rows}})</h2></div>
{{if not .Rows}}
<p class="hint">Серверов пока нет. Задайте URL панели и токен в настройках, либо добавьте сервер вручную.</p>
{{else}}
<form id="deleteServerForm" method="post" action="{{appURL "admin/servers"}}" class="d-none">
{{template "admin_csrf_field"}}
<input type="hidden" name="action" value="delete_label">
<input type="hidden" id="delServerId" name="server_id" value="">
</form>
<form method="post" action="{{appURL "admin/servers"}}">
{{template "admin_csrf_field"}}
<input type="hidden" name="action" value="save">
{{range .Rows}}<input type="hidden" name="server_ids" value="{{.ID}}">{{end}}
<div class="tbl-wrap">
<table class="table table-sm mb-0 align-middle">
<thead><tr><th>ID</th><th>Название</th><th>Протоколы</th><th>Флаг</th><th>Скорость</th><th>Откл.</th><th>Панель</th><th></th></tr></thead>
<tbody>
{{range .Rows}}
{{$row := .}}
<tr>
<td class="mono">#{{.ID}}</td>
<td><input class="form-control form-control-sm" name="servers[{{.ID}}][title]" value="{{.Title}}"></td>
<td>
{{range $.AllProtocols}}
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="servers[{{$row.ID}}][protocols][]" value="{{.}}" id="p{{$row.ID}}_{{.}}" {{if strIn $row.Protocols .}}checked{{end}}>
<label class="form-check-label hint" for="p{{$row.ID}}_{{.}}">{{.}}</label>
</div>
{{end}}
</td>
<td><input class="form-control form-control-sm input-inline" name="servers[{{.ID}}][flag]" value="{{.Flag}}" placeholder="🇩🇪"></td>
<td><input class="form-control form-control-sm input-inline" name="servers[{{.ID}}][speed]" value="{{.Speed}}" placeholder="1 Gbps"></td>
<td class="text-center"><input class="form-check-input" type="checkbox" name="servers[{{.ID}}][disabled]" value="1" {{if .Disabled}}checked{{end}}></td>
<td class="sl-muted">{{if .PanelName}}{{.PanelName}}{{else}}—{{end}}</td>
<td>
<button type="submit" form="deleteServerForm" formnovalidate
onclick="document.getElementById('delServerId').value='{{.ID}}'; return confirm('Удалить сервер #{{.ID}} из списка?');"
class="btn btn-sm btn-danger">
<i class="fa-solid fa-trash"></i>
</button>
</td>
</tr>
{{end}}
</tbody>
</table>
</div>
<div class="mt-3">
<button type="submit" class="btn btn-primary"><i class="fa-solid fa-floppy-disk"></i> Сохранить всё</button>
</div>
</form>
{{end}}
</div>
{{template "admin_shell_close" .}}
{{end}}