- второй канал рядом с ntfy, оба необязательные: токен бота, несколько chat id, тема форума, свой адрес Bot API - успешные бэкапы приходят без звука, в сообщениях ссылка на карточку клиента - тестовая отправка синхронная: в настройках виден результат по каждому каналу - токен бота не попадает в тексты ошибок и логи Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
42 lines
3.5 KiB
HTML
42 lines
3.5 KiB
HTML
{{define "title"}}Настройки — backup-master{{end}}
|
|
{{define "content"}}
|
|
<h1>Настройки</h1>
|
|
{{if .Saved}}<p class="ok-text">Сохранено.</p>{{end}}
|
|
{{if .Tested}}
|
|
{{if .TestResults}}
|
|
<ul class="results">
|
|
{{range .TestResults}}
|
|
<li>{{.Channel}}: {{if .Err}}<span class="fail-text">ошибка — {{.Err}}</span>{{else}}<span class="ok-text">отправлено</span>{{end}}</li>
|
|
{{end}}
|
|
</ul>
|
|
{{else}}
|
|
<p class="error">Ни один канал уведомлений не настроен.</p>
|
|
{{end}}
|
|
{{end}}
|
|
<form method="post" action="/settings" class="card narrow">
|
|
<input type="hidden" name="csrf" value="{{.CSRF}}">
|
|
|
|
<h2>ntfy</h2>
|
|
<label>URL топика <input name="ntfy_url" value="{{.NtfyURL}}" placeholder="https://ntfy.example.com/backups"></label>
|
|
<label>Авторизация <input name="ntfy_auth" type="password" autocomplete="off" placeholder="{{if .NtfyAuthSet}}задана — оставьте пустым, чтобы не менять{{else}}tk_... или user:password{{end}}"></label>
|
|
{{if .NtfyAuthSet}}<label class="check"><input type="checkbox" name="ntfy_auth_clear" value="1"> Удалить авторизацию</label>{{end}}
|
|
<p class="hint">Пустой URL — ntfy выключен.</p>
|
|
|
|
<h2>Telegram</h2>
|
|
<label>Токен бота <input name="tg_token" type="password" autocomplete="off" placeholder="{{if .TGTokenSet}}задан — оставьте пустым, чтобы не менять{{else}}123456:ABC... от @BotFather{{end}}"></label>
|
|
{{if .TGTokenSet}}<label class="check"><input type="checkbox" name="tg_token_clear" value="1"> Удалить токен (выключить Telegram)</label>{{end}}
|
|
<label>Chat ID <input name="tg_chats" value="{{.TGChats}}" placeholder="123456789, -1001234567890"></label>
|
|
<p class="hint">Можно несколько через запятую. Личный чат — ваш числовой id (напишите боту и откройте <code>https://api.telegram.org/bot<токен>/getUpdates</code>), группа — id вида <code>-100…</code>, бот должен быть её участником.</p>
|
|
<label>ID темы (необязательно) <input name="tg_thread" value="{{.TGThread}}" placeholder="для группы с темами"></label>
|
|
<label>Адрес Bot API (необязательно) <input name="tg_api_url" value="{{.TGAPIURL}}" placeholder="https://api.telegram.org"></label>
|
|
<p class="hint">Свой Bot API сервер или прокси, если api.telegram.org недоступен с сервера бэкапов.</p>
|
|
|
|
<h2>Что отправлять</h2>
|
|
<label class="check"><input type="checkbox" name="notify_success" value="1" {{if .NotifySuccess}}checked{{end}}> Сообщать и об успешных бэкапах (в Telegram — без звука)</label>
|
|
<p class="hint">Ошибки бэкапа и отсутствие бэкапа дольше заданного у клиента срока приходят всегда, во все настроенные каналы.</p>
|
|
<label class="check"><input type="checkbox" name="test" value="1"> Отправить тестовое уведомление после сохранения</label>
|
|
<button class="primary">Сохранить</button>
|
|
</form>
|
|
<p class="hint">Логин и пароль администратора меняются на сервере: <code>backupctl admin-passwd <логин></code></p>
|
|
{{end}}
|