<!--
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}}