Files

174 lines
8.5 KiB
HTML

{{define "page_share"}}
{{template "guest_shell_open" dict "Title" (t "page_title") "Lang" (lang)}}
{{if .NotFound}}
<div class="cyber-shell text-center">
<div class="hero-icon"><i class="fa-solid fa-link-slash"></i></div>
<h1>{{t "err_link_not_found"}}</h1>
<p class="lead">{{t "err_bad_link"}}</p>
</div>
{{else}}
<div class="d-flex justify-content-end lang-switch">
<span class="lang-switch__label"><i class="fa-solid fa-globe"></i></span>
<a class="lang-switch__btn {{if eq2 (lang) "ru"}}active{{end}}" href="?k={{.Token}}&amp;lang=ru">RU</a>
<a class="lang-switch__btn {{if eq2 (lang) "en"}}active{{end}}" href="?k={{.Token}}&amp;lang=en">EN</a>
</div>
<div class="cyber-shell">
<span class="cyber-corner cyber-corner--tl"></span><span class="cyber-corner cyber-corner--tr"></span>
<span class="cyber-corner cyber-corner--bl"></span><span class="cyber-corner cyber-corner--br"></span>
<div class="cyber-hero">
<div class="hero-icon"><i class="fa-solid fa-shield-halved"></i></div>
<div class="hero-brand">{{t "hero_brand"}}</div>
<h1>{{t "hero_title"}}</h1>
<p class="lead">{{t "hero_lead"}}</p>
</div>
{{template "guest_flash" .}}
{{if .Maintenance}}<div class="alert alert-warning">{{htmlSafe (t "maintenance_banner")}}</div>{{end}}
<div class="share-stats">
<div class="card share-panel"><div class="share-panel__body text-center">
<div class="stat__value--sm fw-bold">{{.Link.ExpiresLabel}}</div>
<div class="hint mb-0">{{t "term_label"}}</div>
</div></div>
<div class="card share-panel"><div class="share-panel__body text-center">
<div class="stat__value--sm fw-bold">{{sub .Link.MaxUses .Link.UseCount}} {{t "stat_of"}} {{.Link.MaxUses}}</div>
<div class="hint mb-0">{{t "stat_remaining"}}</div>
</div></div>
</div>
{{if .Expired}}
<div class="card share-panel">
<div class="share-panel__head share-panel__head--pink"><i class="fa-solid fa-hourglass-end"></i> {{t "expired_card"}}</div>
<div class="share-panel__body">
<p class="hint">{{t "renewal_hint"}}</p>
<form method="post" action="{{appURL "share"}}">
<input type="hidden" name="_csrf" value="{{csrf}}">
<input type="hidden" name="action" value="renew">
<input type="hidden" name="k" value="{{.Token}}">
<div class="mb-2"><input class="form-control" name="code" placeholder="{{t "renewal_code_ph"}}" required></div>
<button class="btn btn-primary w-100" type="submit"><i class="fa-solid fa-key"></i> {{t "renewal_btn"}}</button>
</form>
</div>
</div>
{{else}}
{{if .Maintenance}}
<div class="card share-panel">
<div class="share-panel__head share-panel__head--pink"><i class="fa-solid fa-screwdriver-wrench"></i> {{t "maintenance_card_title"}}</div>
<div class="share-panel__body"><p class="hint mb-0">{{t "maintenance_card_body"}}</p></div>
</div>
{{else if .LimitReached}}
<div class="alert alert-warning">{{t "limit_reached" "max" (printf "%d" .Link.MaxUses)}}</div>
{{else}}
<div class="card share-panel">
<div class="share-panel__head"><i class="fa-solid fa-plus"></i> {{t "field_location"}}</div>
<div class="share-panel__body">
<form method="post" action="{{appURL "share"}}">
<input type="hidden" name="_csrf" value="{{csrf}}">
<input type="hidden" name="action" value="create">
<input type="hidden" name="k" value="{{.Token}}">
<div class="mb-3">
<label class="form-label">{{t "field_location"}}</label>
<select class="form-select" name="server_id" required {{if not .Servers}}disabled{{end}}>
{{range .Servers}}<option value="{{.ID}}" {{if .Disabled}}disabled{{end}}>{{if .Flag}}{{.Flag}} {{end}}{{.Label}}{{if .Speed}} ({{t "server_speed_prefix" "speed" .Speed}}){{end}}</option>{{end}}
</select>
{{if not .Servers}}<div class="hint">{{t "js_servers_empty"}}</div>{{end}}
</div>
<div class="mb-3">
<label class="form-label d-block">{{t "field_protocol"}}</label>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="protocol" id="proto_wg" value="wireguard" checked>
<label class="form-check-label" for="proto_wg">WireGuard</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="protocol" id="proto_awg" value="awg2">
<label class="form-check-label" for="proto_awg">AmneziaWG 2</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="protocol" id="proto_vless" value="vless">
<label class="form-check-label" for="proto_vless">VLESS</label>
</div>
</div>
<p class="hint">{{htmlSafe (t "hint_wait")}}</p>
<button type="submit" class="btn btn-primary w-100"><i class="fa-solid fa-bolt"></i> {{t "btn_get_config"}}</button>
</form>
</div>
</div>
{{end}}
{{end}}
{{if .Bundles}}
<div class="card share-panel card--download">
<div class="share-panel__head"><i class="fa-solid fa-list"></i> {{t "configs_title"}}</div>
<div class="share-panel__body">
<p class="share-panel__intro">{{htmlSafe (t "configs_intro" "count" (printf "%d" (len .Bundles)))}}</p>
{{range .Bundles}}
<div class="dl-bundle">
<div class="d-flex justify-content-between align-items-center mb-2">
<strong class="mono">{{.ConnectionName}}</strong>
<span class="badge text-bg-secondary">{{.Protocol}}</span>
</div>
<div class="d-flex flex-wrap gap-2 mb-2">
{{if .Conf}}<a class="btn btn-sm btn-outline-info" href="{{shareDL $.Token .CreationID "conf"}}"><i class="fa-solid fa-download"></i> {{.Conf.Filename}}</a>{{end}}
{{if .Vpn}}<a class="btn btn-sm btn-outline-info" href="{{shareDL $.Token .CreationID "vpn"}}"><i class="fa-solid fa-download"></i> {{.Vpn.Filename}}</a>{{end}}
{{if .Zip}}<a class="btn btn-sm btn-outline-secondary" href="{{shareDL $.Token .CreationID "zip"}}"><i class="fa-solid fa-file-zipper"></i> {{t "btn_download_zip"}}</a>{{end}}
</div>
{{if not $.Maintenance}}
<details class="mb-2">
<summary class="hint" style="cursor:pointer;">{{t "migrate_title"}}</summary>
<form method="post" action="{{appURL "share"}}" class="mt-2">
<input type="hidden" name="_csrf" value="{{csrf}}">
<input type="hidden" name="action" value="migrate">
<input type="hidden" name="k" value="{{$.Token}}">
<input type="hidden" name="creation_id" value="{{.CreationID}}">
<div class="row g-2">
<div class="col-7">
<select class="form-select form-select-sm" name="new_server_id" required>
{{range $.Servers}}<option value="{{.ID}}" {{if .Disabled}}disabled{{end}}>{{.Label}}</option>{{end}}
</select>
</div>
<div class="col-5">
<select class="form-select form-select-sm" name="new_protocol">
<option value="wireguard">WireGuard</option>
<option value="awg2">AmneziaWG 2</option>
<option value="vless">VLESS</option>
</select>
</div>
</div>
<p class="hint">{{t "migrate_warning"}}</p>
<button type="submit" class="btn btn-sm btn-outline-warning w-100"><i class="fa-solid fa-arrows-turn-right"></i> {{t "migrate_submit"}}</button>
</form>
</details>
{{end}}
</div>
{{end}}
</div>
</div>
{{end}}
{{if not .Expired}}
<div class="card share-panel">
<div class="share-panel__head"><i class="fa-solid fa-key"></i> {{t "renewal_title"}}</div>
<div class="share-panel__body">
<p class="hint">{{t "renewal_hint"}}</p>
<form method="post" action="{{appURL "share"}}">
<input type="hidden" name="_csrf" value="{{csrf}}">
<input type="hidden" name="action" value="renew">
<input type="hidden" name="k" value="{{.Token}}">
<div class="mb-2"><input class="form-control" name="code" placeholder="{{t "renewal_code_ph"}}" required></div>
<button class="btn btn-outline-info w-100" type="submit"><i class="fa-solid fa-arrow-rotate-right"></i> {{t "renewal_btn"}}</button>
</form>
</div>
</div>
{{end}}
{{template "guest_subnav" .}}
</div>
{{template "guest_footer" .}}
{{end}}
{{template "guest_shell_close" .}}
{{end}}