72 lines
2.5 KiB
HTML
72 lines
2.5 KiB
HTML
{{define "title"}}Domains{{end}}
|
|
{{define "content"}}
|
|
<div class="flex items-center justify-between mb-6">
|
|
<h1 class="text-xl font-bold text-white">Domains</h1>
|
|
</div>
|
|
|
|
<div class="card mb-6">
|
|
<div class="text-sm font-semibold text-gray-300 mb-3">Add domain</div>
|
|
<form method="POST" action="/admin/domains">
|
|
<input type="hidden" name="_csrf" value="{{.CSRF}}">
|
|
<div style="display:grid;grid-template-columns:2fr 1fr 1fr auto;gap:.75rem;align-items:end">
|
|
<div class="field" style="margin:0">
|
|
<label>Domain name</label>
|
|
<input type="text" name="name" placeholder="example.com" required maxlength="253"
|
|
pattern="[a-z0-9][a-z0-9\-\.]{1,252}">
|
|
</div>
|
|
<div class="field" style="margin:0">
|
|
<label>DKIM selector</label>
|
|
<input type="text" name="selector" value="mail" maxlength="63" pattern="[a-zA-Z0-9_\-]+">
|
|
</div>
|
|
<div class="field" style="margin:0">
|
|
<label>DKIM algorithm</label>
|
|
<select name="algo">
|
|
<option value="rsa2048">RSA-2048</option>
|
|
<option value="ed25519">Ed25519</option>
|
|
</select>
|
|
</div>
|
|
<button type="submit" class="btn btn-primary" style="white-space:nowrap">Add domain</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
|
|
<div class="card" style="padding:0;overflow:hidden">
|
|
{{if .Domains}}
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Domain</th>
|
|
<th>Status</th>
|
|
<th>DKIM</th>
|
|
<th>Max users</th>
|
|
<th>Max quota</th>
|
|
<th>Created</th>
|
|
<th></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{{range .Domains}}
|
|
<tr>
|
|
<td><a href="/admin/domains/{{.ID}}" class="text-blue-400 hover:underline">{{.Name}}</a></td>
|
|
<td>
|
|
{{if .Enabled}}<span class="badge badge-green">enabled</span>
|
|
{{else}}<span class="badge badge-red">disabled</span>{{end}}
|
|
</td>
|
|
<td>
|
|
{{if .DKIMPublic}}<span class="badge badge-green">{{.DKIMSelector}} / {{.DKIMAlgo}}</span>
|
|
{{else}}<span class="badge badge-yellow">no key</span>{{end}}
|
|
</td>
|
|
<td class="text-gray-400">{{if .MaxUsers}}{{.MaxUsers}}{{else}}unlimited{{end}}</td>
|
|
<td class="text-gray-400">{{if .MaxQuotaBytes}}{{humanBytes .MaxQuotaBytes}}{{else}}unlimited{{end}}</td>
|
|
<td class="text-gray-400 text-xs">{{shortTime .CreatedAt}}</td>
|
|
<td><a href="/admin/domains/{{.ID}}" class="btn btn-primary btn-sm">Manage</a></td>
|
|
</tr>
|
|
{{end}}
|
|
</tbody>
|
|
</table>
|
|
{{else}}
|
|
<div class="p-8 text-center text-gray-500 text-sm">No domains configured yet.</div>
|
|
{{end}}
|
|
</div>
|
|
{{end}}
|