geforkt von mirrored/vaultwarden

- Removed `unsafe-inline` for javascript from CSP. The admin interface now uses files instead of inline javascript. - Modified javascript to work not being inline. - Run eslint over javascript and fixed some items. - Added a `to_json` Handlebars helper. Used at the diagnostics page. - Changed `AdminTemplateData` struct to be smaller. The `config` was always added, but only used at one page. Same goes for `can_backup` and `version`. - Also inlined CSS. We can't remove the `unsafe-inline` from css, because that seems to break the web-vault currently. That might need some further checks. But for now the 404 page and all the admin pages are clear of inline scripts and styles.
207 Zeilen
12 KiB
Handlebars
207 Zeilen
12 KiB
Handlebars
<main class="container-xl">
|
|
<div id="diagnostics-block" class="my-3 p-3 bg-white rounded shadow">
|
|
<h6 class="border-bottom pb-2 mb-2">Diagnostics</h6>
|
|
|
|
<h3>Versions</h3>
|
|
<div class="row">
|
|
<div class="col-md">
|
|
<dl class="row">
|
|
<dt class="col-sm-5">Server Installed
|
|
<span class="badge bg-success d-none" id="server-success" title="Latest version is installed.">Ok</span>
|
|
<span class="badge bg-warning d-none" id="server-warning" title="There seems to be an update available.">Update</span>
|
|
<span class="badge bg-info d-none" id="server-branch" title="This is a branched version.">Branched</span>
|
|
</dt>
|
|
<dd class="col-sm-7">
|
|
<span id="server-installed">{{page_data.current_release}}</span>
|
|
</dd>
|
|
<dt class="col-sm-5">Server Latest
|
|
<span class="badge bg-secondary d-none" id="server-failed" title="Unable to determine latest version.">Unknown</span>
|
|
</dt>
|
|
<dd class="col-sm-7">
|
|
<span id="server-latest">{{page_data.latest_release}}<span id="server-latest-commit" class="d-none">-{{page_data.latest_commit}}</span></span>
|
|
</dd>
|
|
{{#if page_data.web_vault_enabled}}
|
|
<dt class="col-sm-5">Web Installed
|
|
<span class="badge bg-success d-none" id="web-success" title="Latest version is installed.">Ok</span>
|
|
<span class="badge bg-warning d-none" id="web-warning" title="There seems to be an update available.">Update</span>
|
|
</dt>
|
|
<dd class="col-sm-7">
|
|
<span id="web-installed">{{page_data.web_vault_version}}</span>
|
|
</dd>
|
|
{{#unless page_data.running_within_docker}}
|
|
<dt class="col-sm-5">Web Latest
|
|
<span class="badge bg-secondary d-none" id="web-failed" title="Unable to determine latest version.">Unknown</span>
|
|
</dt>
|
|
<dd class="col-sm-7">
|
|
<span id="web-latest">{{page_data.latest_web_build}}</span>
|
|
</dd>
|
|
{{/unless}}
|
|
{{/if}}
|
|
{{#unless page_data.web_vault_enabled}}
|
|
<dt class="col-sm-5">Web Installed</dt>
|
|
<dd class="col-sm-7">
|
|
<span id="web-installed">Web Vault is disabled</span>
|
|
</dd>
|
|
{{/unless}}
|
|
<dt class="col-sm-5">Database</dt>
|
|
<dd class="col-sm-7">
|
|
<span><b>{{page_data.db_type}}:</b> {{page_data.db_version}}</span>
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
</div>
|
|
|
|
<h3>Checks</h3>
|
|
<div class="row">
|
|
<div class="col-md">
|
|
<dl class="row">
|
|
<dt class="col-sm-5">OS/Arch</dt>
|
|
<dd class="col-sm-7">
|
|
<span class="d-block"><b>{{ page_data.host_os }} / {{ page_data.host_arch }}</b></span>
|
|
</dd>
|
|
<dt class="col-sm-5">Running within Docker</dt>
|
|
<dd class="col-sm-7">
|
|
{{#if page_data.running_within_docker}}
|
|
<span class="d-block"><b>Yes (Base: {{ page_data.docker_base_image }})</b></span>
|
|
{{/if}}
|
|
{{#unless page_data.running_within_docker}}
|
|
<span class="d-block"><b>No</b></span>
|
|
{{/unless}}
|
|
</dd>
|
|
<dt class="col-sm-5">Environment settings overridden</dt>
|
|
<dd class="col-sm-7">
|
|
{{#if page_data.overrides}}
|
|
<span class="d-block" title="The following settings are overridden: {{page_data.overrides}}"><b>Yes</b></span>
|
|
{{/if}}
|
|
{{#unless page_data.overrides}}
|
|
<span class="d-block"><b>No</b></span>
|
|
{{/unless}}
|
|
</dd>
|
|
<dt class="col-sm-5">Uses a reverse proxy</dt>
|
|
<dd class="col-sm-7">
|
|
{{#if page_data.ip_header_exists}}
|
|
<span class="d-block" title="IP Header found."><b>Yes</b></span>
|
|
{{/if}}
|
|
{{#unless page_data.ip_header_exists}}
|
|
<span class="d-block" title="No IP Header found."><b>No</b></span>
|
|
{{/unless}}
|
|
</dd>
|
|
{{!-- Only show this if the IP Header Exists --}}
|
|
{{#if page_data.ip_header_exists}}
|
|
<dt class="col-sm-5">IP header
|
|
{{#if page_data.ip_header_match}}
|
|
<span class="badge bg-success" title="IP_HEADER config seems to be valid.">Match</span>
|
|
{{/if}}
|
|
{{#unless page_data.ip_header_match}}
|
|
<span class="badge bg-danger" title="IP_HEADER config seems to be invalid. IP's in the log could be invalid. Please fix.">No Match</span>
|
|
{{/unless}}
|
|
</dt>
|
|
<dd class="col-sm-7">
|
|
{{#if page_data.ip_header_match}}
|
|
<span class="d-block"><b>Config/Server:</b> {{ page_data.ip_header_name }}</span>
|
|
{{/if}}
|
|
{{#unless page_data.ip_header_match}}
|
|
<span class="d-block"><b>Config:</b> {{ page_data.ip_header_config }}</span>
|
|
<span class="d-block"><b>Server:</b> {{ page_data.ip_header_name }}</span>
|
|
{{/unless}}
|
|
</dd>
|
|
{{/if}}
|
|
{{!-- End if IP Header Exists --}}
|
|
<dt class="col-sm-5">Internet access
|
|
{{#if page_data.has_http_access}}
|
|
<span class="badge bg-success" title="We have internet access!">Ok</span>
|
|
{{/if}}
|
|
{{#unless page_data.has_http_access}}
|
|
<span class="badge bg-danger" title="There seems to be no internet access. Please fix.">Error</span>
|
|
{{/unless}}
|
|
</dt>
|
|
<dd class="col-sm-7">
|
|
{{#if page_data.has_http_access}}
|
|
<span class="d-block"><b>Yes</b></span>
|
|
{{/if}}
|
|
{{#unless page_data.has_http_access}}
|
|
<span class="d-block"><b>No</b></span>
|
|
{{/unless}}
|
|
</dd>
|
|
<dt class="col-sm-5">Internet access via a proxy</dt>
|
|
<dd class="col-sm-7">
|
|
{{#if page_data.uses_proxy}}
|
|
<span class="d-block" title="Internet access goes via a proxy (HTTPS_PROXY or HTTP_PROXY is configured)."><b>Yes</b></span>
|
|
{{/if}}
|
|
{{#unless page_data.uses_proxy}}
|
|
<span class="d-block" title="We have direct internet access, no outgoing proxy configured."><b>No</b></span>
|
|
{{/unless}}
|
|
</dd>
|
|
<dt class="col-sm-5">DNS (github.com)
|
|
<span class="badge bg-success d-none" id="dns-success" title="DNS Resolving works!">Ok</span>
|
|
<span class="badge bg-danger d-none" id="dns-warning" title="DNS Resolving failed. Please fix.">Error</span>
|
|
</dt>
|
|
<dd class="col-sm-7">
|
|
<span id="dns-resolved">{{page_data.dns_resolved}}</span>
|
|
</dd>
|
|
<dt class="col-sm-5">Date & Time (Local)</dt>
|
|
<dd class="col-sm-7">
|
|
<span><b>Server:</b> {{page_data.server_time_local}}</span>
|
|
</dd>
|
|
<dt class="col-sm-5">Date & Time (UTC)
|
|
<span class="badge bg-success d-none" id="time-success" title="Server and browser times are within 20 seconds of each other.">Ok</span>
|
|
<span class="badge bg-danger d-none" id="time-warning" title="Server and browser times are more than 20 seconds apart.">Error</span>
|
|
</dt>
|
|
<dd class="col-sm-7">
|
|
<span id="time-server" class="d-block"><b>Server:</b> <span id="time-server-string">{{page_data.server_time}}</span></span>
|
|
<span id="time-browser" class="d-block"><b>Browser:</b> <span id="time-browser-string"></span></span>
|
|
</dd>
|
|
|
|
<dt class="col-sm-5">Domain configuration
|
|
<span class="badge bg-success d-none" id="domain-success" title="The domain variable matches the browser location and seems to be configured correctly.">Match</span>
|
|
<span class="badge bg-danger d-none" id="domain-warning" title="The domain variable does not match the browser location.
The domain variable does not seem to be configured correctly.
Some features may not work as expected!">No Match</span>
|
|
<span class="badge bg-success d-none" id="https-success" title="Configured to use HTTPS">HTTPS</span>
|
|
<span class="badge bg-danger d-none" id="https-warning" title="Not configured to use HTTPS.
Some features may not work as expected!">No HTTPS</span>
|
|
</dt>
|
|
<dd class="col-sm-7">
|
|
<span id="domain-server" class="d-block"><b>Server:</b> <span id="domain-server-string">{{page_data.admin_url}}</span></span>
|
|
<span id="domain-browser" class="d-block"><b>Browser:</b> <span id="domain-browser-string"></span></span>
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
</div>
|
|
|
|
<h3>Support</h3>
|
|
<div class="row">
|
|
<div class="col-md">
|
|
<dl class="row">
|
|
<dd class="col-sm-12">
|
|
If you need support please check the following links first before you create a new issue:
|
|
<a href="https://vaultwarden.discourse.group/" target="_blank" rel="noreferrer noopener">Vaultwarden Forum</a>
|
|
| <a href="https://github.com/dani-garcia/vaultwarden/discussions" target="_blank" rel="noreferrer noopener">Github Discussions</a>
|
|
</dd>
|
|
</dl>
|
|
<dl class="row">
|
|
<dd class="col-sm-12">
|
|
You can use the button below to pre-generate a string which you can copy/paste on either the Forum or when Creating a new issue at Github.<br>
|
|
We try to hide the most sensitive values from the generated support string by default, but please verify if there is nothing in there which you want to hide!<br>
|
|
</dd>
|
|
</dl>
|
|
<dl class="row">
|
|
<dt class="col-sm-3">
|
|
<button type="button" id="gen-support" class="btn btn-primary">Generate Support String</button>
|
|
<br><br>
|
|
<button type="button" id="copy-support" class="btn btn-info mb-3 d-none">Copy To Clipboard</button>
|
|
<div class="toast-container position-absolute float-start vw-copy-toast">
|
|
<div id="toastClipboardCopy" class="toast fade hide" role="status" aria-live="polite" aria-atomic="true" data-bs-autohide="true" data-bs-delay="1500">
|
|
<div class="toast-body">
|
|
Copied to clipboard!
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</dt>
|
|
<dd class="col-sm-9">
|
|
<pre id="support-string" class="pre-scrollable d-none w-100 border p-2"></pre>
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</main>
|
|
<script src="{{urlpath}}/vw_static/admin_diagnostics.js"></script>
|
|
<script type="application/json" id="diagnostics_json">{{to_json page_data}}</script>
|