d1e0560d28
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
220 lines
No EOL
10 KiB
HTML
220 lines
No EOL
10 KiB
HTML
<!--
|
|
Copyright (C) 2024 Nicola Murino
|
|
|
|
This WebUI uses the KeenThemes Mega Bundle, a proprietary theme:
|
|
|
|
https://keenthemes.com/products/templates-mega-bundle
|
|
|
|
KeenThemes HTML/CSS/JS components are allowed for use only within the
|
|
SFTPGo product and restricted to be used in a resealable HTML template
|
|
that can compete with KeenThemes products anyhow.
|
|
|
|
This WebUI is allowed for use only within the SFTPGo product and
|
|
therefore cannot be used in derivative works/products without an
|
|
explicit grant from the SFTPGo Team (support@sftpgo.com).
|
|
-->
|
|
{{template "base" .}}
|
|
|
|
{{- define "page_body"}}
|
|
<div class="card shadow-sm">
|
|
<div class="card-header bg-light">
|
|
<h3 data-i18n="{{.Title}}" class="card-title section-title"></h3>
|
|
</div>
|
|
<div class="card-body">
|
|
|
|
<div class="card">
|
|
<div class="card-header bg-light">
|
|
<h3 data-i18n="status.ssh" class="card-title section-title-inner">SSH/SFTP server</h3>
|
|
</div>
|
|
<div class="card-body">
|
|
<p class="fs-3 fw-semibold mb-4" {{if .Status.SSH.IsActive}}data-i18n="status.active"{{else}}data-i18n="status.disabled"{{end}}></p>
|
|
{{- if .Status.SSH.IsActive}}
|
|
<div class="d-flex flex-column">
|
|
{{- range .Status.SSH.Bindings}}
|
|
<p class="fs-5 fw-semibold">
|
|
<span class="text-muted" data-i18n="status.address"></span> "{{.GetAddress}}"
|
|
</p>
|
|
{{- if .HasProxy}}
|
|
<p class="fs-5 fw-semibold">
|
|
<span class="text-muted" data-i18n="status.proxy_on"></span>
|
|
</p>
|
|
{{- end}}
|
|
{{- end}}
|
|
</div>
|
|
{{- range .Status.SSH.HostKeys}}
|
|
<div class="d-flex flex-column mt-10">
|
|
<p class="fs-5 fw-semibold">
|
|
<span class="text-muted" data-i18n="status.host_key"></span> "{{.Path}}"
|
|
</p>
|
|
<p class="fs-5 fw-semibold">
|
|
<span class="text-muted" data-i18n="status.fingeprint"></span> "{{.Fingerprint}}"
|
|
</p>
|
|
<p class="fs-5 fw-semibold">
|
|
<span class="text-muted" data-i18n="status.algorithms"></span> "{{.GetAlgosAsString}}"
|
|
</p>
|
|
</div>
|
|
{{- end}}
|
|
<div class="d-flex flex-column mt-10">
|
|
<p class="fs-5 fw-semibold">
|
|
<span class="text-muted" data-i18n="status.ssh_commands"></span> "{{.Status.SSH.GetSSHCommandsAsString}}"
|
|
</p>
|
|
<p class="fs-5 fw-semibold">
|
|
<span class="text-muted" data-i18n="status.ssh_auths"></span> "{{.Status.SSH.GetSupportedAuthsAsString}}"
|
|
</p>
|
|
<p class="fs-5 fw-semibold">
|
|
<span class="text-muted" data-i18n="status.ssh_pub_key_algo"></span> "{{.Status.SSH.GetPublicKeysAlgosAsString}}"
|
|
</p>
|
|
<p class="fs-5 fw-semibold">
|
|
<span class="text-muted" data-i18n="status.ssh_mac_algo"></span> "{{.Status.SSH.GetMACsAsString}}"
|
|
</p>
|
|
<p class="fs-5 fw-semibold">
|
|
<span class="text-muted" data-i18n="status.ssh_kex_algo"></span> "{{.Status.SSH.GetKEXsAsString}}"
|
|
</p>
|
|
<p class="fs-5 fw-semibold">
|
|
<span class="text-muted" data-i18n="status.ssh_cipher_algo"></span> "{{.Status.SSH.GetCiphersAsString}}"
|
|
</p>
|
|
</div>
|
|
{{- end}}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card mt-10">
|
|
<div class="card-header bg-light">
|
|
<h3 data-i18n="status.ftp" class="card-title section-title-inner">FTP server</h3>
|
|
</div>
|
|
<div class="card-body">
|
|
<p class="fs-3 fw-semibold mb-4" {{if .Status.FTP.IsActive}}data-i18n="status.active"{{else}}data-i18n="status.disabled"{{end}}></p>
|
|
{{- if .Status.FTP.IsActive}}
|
|
<div class="d-flex flex-column">
|
|
{{- range .Status.FTP.Bindings}}
|
|
<p class="fs-5 fw-semibold">
|
|
<span class="text-muted" data-i18n="status.address"></span> "{{.GetAddress}}"
|
|
</p>
|
|
{{- if .HasProxy}}
|
|
<p class="fs-5 fw-semibold">
|
|
<span class="text-muted" data-i18n="status.proxy_on"></span>
|
|
</p>
|
|
{{- end}}
|
|
<p class="fs-5 fw-semibold">
|
|
<span class="text-muted" data-i18n="status.tls"></span> <span data-i18n="{{.GetTLSDescription}}"></span>
|
|
</p>
|
|
{{- if .ForcePassiveIP}}
|
|
<p class="fs-5 fw-semibold">
|
|
<span class="text-muted" data-i18n="status.ftp_passive_ip"></span> "{{.ForcePassiveIP}}"
|
|
</p>
|
|
{{- end}}
|
|
{{- range .PassiveIPOverrides}}
|
|
<p class="fs-5 fw-semibold">
|
|
<span class="text-muted" data-i18n="status.ftp_passive_ip"></span> "{{.IP}} ({{.GetNetworksAsString}})"
|
|
</p>
|
|
{{- end}}
|
|
{{- end}}
|
|
</div>
|
|
<div class="d-flex flex-column mt-10">
|
|
<p class="fs-5 fw-semibold">
|
|
<span class="text-muted" data-i18n="status.ftp_passive_range"></span> "{{.Status.FTP.PassivePortRange.Start}}-{{.Status.FTP.PassivePortRange.End}}"
|
|
</p>
|
|
</div>
|
|
{{- end}}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card mt-10">
|
|
<div class="card-header bg-light">
|
|
<h3 data-i18n="status.webdav" class="card-title section-title-inner">WebDAV server</h3>
|
|
</div>
|
|
<div class="card-body">
|
|
<p class="fs-3 fw-semibold mb-4" {{if .Status.WebDAV.IsActive}}data-i18n="status.active"{{else}}data-i18n="status.disabled"{{end}}></p>
|
|
{{- if .Status.WebDAV.IsActive}}
|
|
<div class="d-flex flex-column">
|
|
{{- range .Status.WebDAV.Bindings}}
|
|
<p class="fs-5 fw-semibold">
|
|
<span class="text-muted" data-i18n="status.address"></span> "{{.GetAddress}}"
|
|
</p>
|
|
<p class="fs-5 fw-semibold">
|
|
<span class="text-muted" data-i18n="general.protocol"></span> {{if .EnableHTTPS}} HTTPS {{else}} HTTP {{end}}
|
|
</p>
|
|
{{- end}}
|
|
</div>
|
|
{{- end}}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card mt-10">
|
|
<div class="card-header bg-light">
|
|
<h3 data-i18n="general.data_provider" class="card-title section-title-inner">Database</h3>
|
|
</div>
|
|
<div class="card-body">
|
|
<p class="fs-3 fw-semibold mb-4">
|
|
<span {{if .Status.DataProvider.IsActive}}data-i18n="status.active"{{else}}data-i18n="status.error" class="text-warning"{{end}}></span>
|
|
{{if .Status.DataProvider.Error}} <span class="text-warning">"{{.Status.DataProvider.Error}}"</span>{{end}}
|
|
</p>
|
|
<div class="d-flex flex-column">
|
|
<p class="fs-5 fw-semibold">
|
|
<span class="text-muted" data-i18n="general.driver"></span> "{{.Status.DataProvider.Driver}}"
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card mt-10">
|
|
<div class="card-header bg-light">
|
|
<h3 data-i18n="ip_list.defender_list" class="card-title section-title-inner">Defender</h3>
|
|
</div>
|
|
<div class="card-body">
|
|
<p class="fs-3 fw-semibold mb-4" {{if .Status.Defender.IsActive}}data-i18n="status.active"{{else}}data-i18n="status.disabled"{{end}}></p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card mt-10">
|
|
<div class="card-header bg-light">
|
|
<h3 data-i18n="ip_list.allow_list" class="card-title section-title-inner">Allow list</h3>
|
|
</div>
|
|
<div class="card-body">
|
|
<p class="fs-3 fw-semibold mb-4" {{if .Status.AllowList.IsActive}}data-i18n="status.active"{{else}}data-i18n="status.disabled"{{end}}></p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card mt-10">
|
|
<div class="card-header bg-light">
|
|
<h3 data-i18n="status.rate_limiters" class="card-title section-title-inner">Rate limiters</h3>
|
|
</div>
|
|
<div class="card-body">
|
|
<p class="fs-3 fw-semibold mb-4" {{if .Status.RateLimiters.IsActive}}data-i18n="status.active"{{else}}data-i18n="status.disabled"{{end}}></p>
|
|
{{- if .Status.RateLimiters.IsActive}}
|
|
<div class="d-flex flex-column">
|
|
<p class="fs-5 fw-semibold">
|
|
<span class="text-muted" data-i18n="ip_list.protocols"></span> "{{.Status.RateLimiters.GetProtocolsAsString}}"
|
|
</p>
|
|
</div>
|
|
{{- end}}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card mt-10">
|
|
<div class="card-header bg-light">
|
|
<h3 data-i18n="title.two_factor_auth" class="card-title section-title-inner">Two-factor authentication</h3>
|
|
</div>
|
|
<div class="card-body">
|
|
<p class="fs-3 fw-semibold mb-4" {{if .Status.MFA.IsActive}}data-i18n="status.active"{{else}}data-i18n="status.disabled"{{end}}></p>
|
|
{{- if .Status.MFA.IsActive}}
|
|
{{range .Status.MFA.TOTPConfigs}}
|
|
<div class="d-flex flex-column">
|
|
<p class="fs-5 fw-semibold">
|
|
<span class="text-muted" data-i18n="general.configuration"></span> "{{.Name}}"
|
|
</p>
|
|
<p class="fs-5 fw-semibold">
|
|
<span class="text-muted" data-i18n="general.issuer"></span> "{{.Issuer}}"
|
|
</p>
|
|
<p class="fs-5 fw-semibold">
|
|
<span class="text-muted" data-i18n="status.algorithm"></span> "{{.Algo}}"
|
|
</p>
|
|
</div>
|
|
{{- end}}
|
|
{{- end}}
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
{{- end}} |