c0c66dfcdb
The navigation was a bar across the top that did not fit on one row — six page entries and the session block against the panel's width — and had to be split into two, costing the top of every page. It is now a column down the left edge: one left edge to scan, the current entry marked down its leading edge, sticky so it stays in view, and room under the entries for the current page's own sections. Below the width the two columns need it lies back down into the same wrapping rows as before; six entries need no drawer. The section index is for the two pages long enough to need one — the domain page (nine cards) and the status page (eight). Each card carries an id and the page's template defines the list by overriding an empty "sections" block in the layout, so a page that defines nothing renders no index. panel.js marks the section in view, looking targets up by id on each pass so the status page swapping its cards out every five seconds cannot leave it measuring boxes that have left the document; the links themselves are plain fragment links and need no script. Verified against the real pages rendered by a local panel at 1300px, 924px and 481px wide.
63 lines
2.4 KiB
HTML
63 lines
2.4 KiB
HTML
{{define "content"}}
|
|
<h1>Server status</h1>
|
|
|
|
{{if .Flash}}<div class="flash">{{.Flash}}</div>{{end}}
|
|
|
|
{{template "status_body" .}}
|
|
|
|
<div class="card" id="hostname">
|
|
<h2>Hostname and reverse DNS <span class="st st-{{.PTR.Status}}">{{.PTR.Status}}</span></h2>
|
|
<p class="muted">Receiving servers check that the name this server announces
|
|
resolves to its address <em>and</em> that the address resolves back to the same
|
|
name (forward-confirmed reverse DNS). A missing or mismatched reverse record is
|
|
the most common reason self-hosted mail is rejected or scored as spam. The
|
|
reverse record is set at the hosting provider, not in the domain's DNS zone.</p>
|
|
|
|
<label>Server hostname</label>
|
|
<span class="code">{{if .Hostname}}{{.Hostname}}{{else}}(SELFPOST_HOSTNAME is not set){{end}}</span>
|
|
|
|
{{if .PTR.Records}}
|
|
<label>Forward and reverse lookup</label>
|
|
<span class="code">{{range .PTR.Records}}{{.}}
|
|
{{end}}</span>
|
|
{{end}}
|
|
|
|
<p class="{{if eq .PTR.Status "ok"}}muted{{else}}error{{end}}">{{.PTR.Detail}}</p>
|
|
|
|
<form class="inline" method="post" action="/status/recheck">
|
|
<button type="submit">Re-check DNS</button>
|
|
</form>
|
|
</div>
|
|
|
|
<div class="card" id="configuration">
|
|
<h2>Configuration</h2>
|
|
<p class="muted">Regenerates the OpenDKIM and Postfix configuration from the
|
|
database and reloads both daemons. Use it if you edited the files by hand,
|
|
restored a backup, or the running configuration looks out of step with the
|
|
domain and application lists. It does not touch the mail queue or the TLS
|
|
certificate, and it is safe to run at any time.</p>
|
|
<form class="inline" method="post" action="/reload">
|
|
<button type="submit">Reload configuration</button>
|
|
</form>
|
|
</div>
|
|
{{end}}
|
|
|
|
{{/* The status page's section index, shown in the navigation column (see the
|
|
"sections" block in layout.html). The first six cards are the ones the
|
|
polling fragment replaces every five seconds; their ids are part of
|
|
status_body.html and do not change with the reading, so the links here hold
|
|
across a refresh. */}}
|
|
{{define "sections"}}
|
|
<div class="sections">
|
|
<p class="sections-title">On this page</p>
|
|
<a href="#overall">Overall</a>
|
|
<a href="#processes">Processes</a>
|
|
<a href="#machine">Machine</a>
|
|
<a href="#queue">Mail queue</a>
|
|
<a href="#certificate">TLS certificate</a>
|
|
<a href="#sockets">Milter sockets</a>
|
|
<a href="#hostname">Hostname and reverse DNS</a>
|
|
<a href="#configuration">Configuration</a>
|
|
</div>
|
|
{{end}}
|