83 lines
4.3 KiB
HTML
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}}
|