initial commit
This commit is contained in:
@@ -0,0 +1,157 @@
|
||||
{{define "content"}}
|
||||
{{$s := .Data.S}}
|
||||
|
||||
<h1 class="page-title mb-1">Settings</h1>
|
||||
<p class="text-body-secondary mb-4">Server configuration, stored in the database.</p>
|
||||
|
||||
{{template "settingsnav" .}}
|
||||
|
||||
<form method="post" action="/settings/dns">
|
||||
<input type="hidden" name="_csrf" value="{{.CSRF}}">
|
||||
|
||||
<div class="row g-3">
|
||||
<div class="col-12 col-xl-8">
|
||||
<div class="card">
|
||||
<div class="card-header">DNS service</div>
|
||||
<div class="card-body">
|
||||
|
||||
<div class="form-section">
|
||||
<div class="form-section-title">Listeners</div>
|
||||
<div class="row g-3">
|
||||
<div class="col-12 col-md-6">
|
||||
<label class="form-label" for="udpListen">
|
||||
UDP listen address {{template "restartbadge"}}
|
||||
</label>
|
||||
<input type="text" class="form-control mono" id="udpListen" name="udp_listen"
|
||||
value="{{$s.DNS.UDPListen}}" placeholder="0.0.0.0:53" required>
|
||||
<div class="form-text">
|
||||
Currently bound to <span class="mono">{{.Data.BoundUDP}}</span>.
|
||||
Use <span class="mono">[::]:53</span> to accept IPv4 and IPv6 together.
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-md-6">
|
||||
<label class="form-label" for="tcpListen">
|
||||
TCP listen address {{template "restartbadge"}}
|
||||
</label>
|
||||
<input type="text" class="form-control mono" id="tcpListen" name="tcp_listen"
|
||||
value="{{$s.DNS.TCPListen}}" placeholder="0.0.0.0:53" required>
|
||||
<div class="form-text">
|
||||
Currently bound to <span class="mono">{{.Data.BoundTCP}}</span>.
|
||||
TCP is required: it is how large answers and zone transfers are carried.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-section">
|
||||
<div class="form-section-title">Recursion</div>
|
||||
<div class="form-check form-switch mb-2">
|
||||
<input type="hidden" name="recursion" value="false">
|
||||
<input class="form-check-input" type="checkbox" role="switch" id="recursion"
|
||||
name="recursion" value="true" {{if $s.DNS.Recursion}}checked{{end}}>
|
||||
<label class="form-check-label" for="recursion">
|
||||
Answer recursive queries for permitted clients
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-text">
|
||||
With this off, the server answers only from its own authoritative zones and
|
||||
refuses everything else. Which clients may recurse is controlled on the
|
||||
<a href="/settings/resolver">Resolver</a> page — that list is what prevents an
|
||||
open resolver.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-section">
|
||||
<div class="form-section-title">EDNS and message sizes</div>
|
||||
<div class="form-check form-switch mb-3">
|
||||
<input type="hidden" name="edns_enabled" value="false">
|
||||
<input class="form-check-input" type="checkbox" role="switch" id="ednsEnabled"
|
||||
name="edns_enabled" value="true" {{if $s.DNS.EDNSEnabled}}checked{{end}}>
|
||||
<label class="form-check-label" for="ednsEnabled">Enable EDNS(0)</label>
|
||||
</div>
|
||||
<div class="row g-3">
|
||||
<div class="col-12 col-md-6">
|
||||
<label class="form-label" for="ednsSize">Advertised UDP buffer size</label>
|
||||
<input type="number" class="form-control" id="ednsSize" name="edns_udp_size"
|
||||
value="{{$s.DNS.EDNSUDPSize}}" min="512" max="65535">
|
||||
<div class="form-text">
|
||||
1232 bytes is the widely recommended value: it stays under the smallest
|
||||
path MTU in common use, so answers are not silently lost to fragmentation.
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-md-6">
|
||||
<label class="form-label" for="maxUDP">Maximum UDP response size</label>
|
||||
<input type="number" class="form-control" id="maxUDP" name="max_udp_response"
|
||||
value="{{$s.DNS.MaxUDPResponse}}" min="512" max="65535">
|
||||
<div class="form-text">
|
||||
Larger answers are truncated, which tells the client to retry over TCP.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-section">
|
||||
<div class="form-section-title">Defaults and behaviour</div>
|
||||
<div class="row g-3">
|
||||
<div class="col-12 col-md-4">
|
||||
<label class="form-label" for="defTTL">Default TTL for new zones</label>
|
||||
<input type="number" class="form-control" id="defTTL" name="default_ttl"
|
||||
value="{{$s.DNS.DefaultTTL}}" min="1" max="604800">
|
||||
<div class="form-text">Seconds</div>
|
||||
</div>
|
||||
<div class="col-12 col-md-4">
|
||||
<label class="form-label" for="tcpIdle">TCP idle timeout</label>
|
||||
<input type="number" class="form-control" id="tcpIdle" name="tcp_idle"
|
||||
value="{{$s.DNS.TCPIdleSeconds}}" min="1" max="120">
|
||||
<div class="form-text">Seconds a TCP connection is kept open between queries</div>
|
||||
</div>
|
||||
<div class="col-12 col-md-4 d-flex align-items-center">
|
||||
<div class="form-check form-switch mt-3">
|
||||
<input type="hidden" name="expose_version" value="false">
|
||||
<input class="form-check-input" type="checkbox" role="switch" id="exposeVersion"
|
||||
name="expose_version" value="true" {{if $s.DNS.ExposeVersion}}checked{{end}}>
|
||||
<label class="form-check-label" for="exposeVersion">
|
||||
Answer version.bind
|
||||
</label>
|
||||
<div class="form-text">
|
||||
Off by default: publishing the software version only helps someone
|
||||
looking for a matching exploit.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-actions">
|
||||
<button type="submit" class="btn btn-primary">
|
||||
<i class="bi bi-check-lg me-1"></i>Save DNS settings
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12 col-xl-4">
|
||||
<div class="card">
|
||||
<div class="card-header">Service status</div>
|
||||
<div class="card-body">
|
||||
<div class="d-flex align-items-center gap-2 mb-3">
|
||||
<span class="status-dot {{if .Data.Running}}status-up{{else}}status-down{{end}}"></span>
|
||||
<span class="fw-semibold">
|
||||
{{if .Data.Running}}Listeners running{{else}}Listeners stopped{{end}}
|
||||
</span>
|
||||
</div>
|
||||
<dl class="row small mb-0">
|
||||
<dt class="col-5 text-body-secondary">UDP</dt>
|
||||
<dd class="col-7 mono">{{.Data.BoundUDP}}</dd>
|
||||
<dt class="col-5 text-body-secondary">TCP</dt>
|
||||
<dd class="col-7 mono">{{.Data.BoundTCP}}</dd>
|
||||
<dt class="col-5 text-body-secondary">Recursion</dt>
|
||||
<dd class="col-7">{{if $s.DNS.Recursion}}enabled{{else}}disabled{{end}}</dd>
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{{end}}
|
||||
Reference in New Issue
Block a user