sftpgo/templates/webadmin/status.html
Nicola Murino d1e0560d28
WebAdmin status page: update the color of the labels
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2024-05-26 19:34:29 +02:00

220 lines
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>&nbsp;<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}}&nbsp;<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}}