Show subscription inbounds as Remnawave-style host cards.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
orohi
2026-07-29 04:56:45 +03:00
co-authored by Cursor
parent c0e78ce949
commit c41bae9852
8 changed files with 493 additions and 72 deletions
+28 -4
View File
@@ -49,14 +49,38 @@
<section class="panel-section">
<h2>Subscription</h2>
<p class="muted">Ссылка для клиента (нужны online-ноды с назначенным профилем и включёнными inbound):</p>
<p class="muted">Ссылка подписки (в браузере — страница с инбаундами, в клиенте — base64):</p>
<pre class="code-block">{{.SubURL}}</pre>
<div class="cta-row" style="margin:0.75rem 0 1rem">
<a class="btn btn-sm btn-primary" href="{{.SubURL}}" target="_blank" rel="noopener">Открыть страницу</a>
<a class="btn btn-sm btn-ghost" href="{{.SubURL}}?format=plain" target="_blank" rel="noopener">Plain</a>
<a class="btn btn-sm btn-ghost" href="{{.SubURL}}/info" target="_blank" rel="noopener">JSON</a>
</div>
<h3 style="margin:0 0 0.75rem;font-size:1.05rem">Инбаунды в подписке</h3>
{{if .Hosts}}
<div class="proto-grid">
{{range .Hosts}}
<article class="proto-card {{if .Available}}is-on{{else}}is-off{{end}}">
<div class="proto-top">
<h3>{{.Title}}</h3>
<span class="badge {{if .Available}}on{{else}}off{{end}}">{{if .Available}}ON{{else}}OFF{{end}}</span>
</div>
<p><code>{{.Tag}}</code> · {{.ProtocolName}} · {{.Network}}/{{.Security}} :{{.Port}}</p>
<div class="proto-meta">
{{if .Address}}<span>{{.NodeName}}</span><code>{{.Address}}</code>{{else}}<span class="muted">offline / нет ноды</span>{{end}}
</div>
</article>
{{end}}
</div>
{{else}}
<p class="hint">Нет инбаундов — отметьте их ниже в форме.</p>
{{end}}
{{if .Links}}
<h3 style="margin-top:1rem;font-size:1rem">Сгенерированные ссылки</h3>
<h3 style="margin-top:1.25rem;font-size:1rem">Ссылки</h3>
<pre class="code-block log">{{range .Links}}{{.}}
{{end}}</pre>
{{else}}
<p class="hint">Пока нет ссылок — назначьте inbound пользователю, профиль ноде, и дождитесь Online.</p>
{{end}}
</section>