Files
PyMTA-server/email_server/server_web_ui/templates/edit_dkim.html

150 lines
7.0 KiB
HTML
Raw Normal View History

2025-06-07 11:57:21 +01:00
{% extends "base.html" %}
2025-06-07 14:43:00 +01:00
{% block title %}Edit DKIM Selector{% endblock %}
2025-06-07 11:57:21 +01:00
{% block content %}
<div class="container-fluid">
2025-06-07 14:43:00 +01:00
<div class="row">
<div class="col-md-8 offset-md-2">
2025-06-07 11:57:21 +01:00
<div class="card">
2025-06-07 14:43:00 +01:00
<div class="card-header bg-primary text-white d-flex justify-content-between align-items-center">
<h4 class="mb-0">
<i class="bi bi-pencil me-2"></i>Edit DKIM Selector
</h4>
<a href="{{ url_for('email.dkim_list') }}" class="btn btn-light btn-sm">
<i class="bi bi-arrow-left me-1"></i>Back to DKIM Keys
</a>
2025-06-07 11:57:21 +01:00
</div>
<div class="card-body">
2025-06-07 14:43:00 +01:00
<form method="POST" class="needs-validation" novalidate>
2025-06-07 11:57:21 +01:00
<div class="mb-3">
2025-06-07 14:43:00 +01:00
<label for="selector" class="form-label">
<i class="bi bi-key me-1"></i>DKIM Selector
</label>
2025-06-07 11:57:21 +01:00
<input type="text"
class="form-control"
id="selector"
name="selector"
2025-06-07 14:43:00 +01:00
value="{{ dkim_key.selector }}"
placeholder="default"
pattern="^[a-zA-Z0-9_-]+$"
2025-06-07 11:57:21 +01:00
required>
2025-06-07 14:43:00 +01:00
<div class="invalid-feedback">
Please provide a valid selector (letters, numbers, hyphens, and underscores only).
</div>
2025-06-07 11:57:21 +01:00
<div class="form-text">
2025-06-07 14:43:00 +01:00
<i class="bi bi-info-circle me-1"></i>
The selector is used in DNS records to identify this DKIM key (e.g., "selector._domainkey.{{ domain.domain_name }}")
2025-06-07 11:57:21 +01:00
</div>
</div>
2025-06-07 14:43:00 +01:00
<div class="row">
<div class="col-md-6">
<div class="alert alert-info">
<h6><i class="bi bi-info-circle me-1"></i>Current Information</h6>
<p class="mb-1">
<strong>Domain:</strong> {{ domain.domain_name }}
</p>
<p class="mb-1">
<strong>Current Selector:</strong> {{ dkim_key.selector }}
</p>
<p class="mb-1">
<strong>Status:</strong>
{% if dkim_key.is_active %}
<span class="badge bg-success">Active</span>
{% else %}
<span class="badge bg-danger">Inactive</span>
{% endif %}
</p>
<p class="mb-0">
<strong>Created:</strong> {{ dkim_key.created_at.strftime('%Y-%m-%d %H:%M:%S') }}
</p>
2025-06-07 11:57:21 +01:00
</div>
2025-06-07 14:43:00 +01:00
</div>
<div class="col-md-6">
<div class="alert alert-warning">
<h6><i class="bi bi-exclamation-triangle me-1"></i>Important Note</h6>
<p class="mb-0">
Changing the selector will require updating your DNS records.
Make sure to update the DNS record name from
<code>{{ dkim_key.selector }}._domainkey.{{ domain.domain_name }}</code>
to match the new selector name.
</p>
2025-06-07 11:57:21 +01:00
</div>
</div>
</div>
<div class="d-flex justify-content-between">
<a href="{{ url_for('email.dkim_list') }}" class="btn btn-secondary">
2025-06-07 14:43:00 +01:00
<i class="bi bi-x me-1"></i>Cancel
2025-06-07 11:57:21 +01:00
</a>
<button type="submit" class="btn btn-primary">
2025-06-07 14:43:00 +01:00
<i class="bi bi-save me-1"></i>Update Selector
2025-06-07 11:57:21 +01:00
</button>
</div>
</form>
</div>
</div>
2025-06-07 14:43:00 +01:00
<!-- DNS Record Information Card -->
<div class="card mt-4">
<div class="card-header bg-info text-white">
<h5 class="mb-0">
<i class="bi bi-dns me-2"></i>DNS Record Information
</h5>
</div>
<div class="card-body">
<div class="alert alert-light">
<h6>Current DNS Record</h6>
<p class="mb-2">
<strong>Name:</strong> <code>{{ dkim_key.selector }}._domainkey.{{ domain.domain_name }}</code>
</p>
<p class="mb-0">
<strong>Type:</strong> TXT
</p>
</div>
<p class="text-muted">
<i class="bi bi-lightbulb me-1"></i>
<strong>Tip:</strong> After changing the selector, you'll need to update your DNS provider
to use the new record name. The DNS record value will remain the same.
</p>
</div>
</div>
2025-06-07 11:57:21 +01:00
</div>
</div>
</div>
<script>
2025-06-07 14:43:00 +01:00
// Bootstrap validation
(function() {
'use strict';
window.addEventListener('load', function() {
var forms = document.getElementsByClassName('needs-validation');
var validation = Array.prototype.filter.call(forms, function(form) {
form.addEventListener('submit', function(event) {
if (form.checkValidity() === false) {
event.preventDefault();
event.stopPropagation();
}
form.classList.add('was-validated');
}, false);
});
}, false);
})();
2025-06-07 11:57:21 +01:00
2025-06-07 14:43:00 +01:00
// Selector validation
document.getElementById('selector').addEventListener('input', function(e) {
const value = e.target.value;
// Basic selector validation (alphanumeric, hyphens, underscores)
const selectorRegex = /^[a-zA-Z0-9_-]+$/;
if (value && !selectorRegex.test(value)) {
e.target.setCustomValidity('Selector must contain only letters, numbers, hyphens, and underscores');
} else {
e.target.setCustomValidity('');
}
});
2025-06-07 11:57:21 +01:00
</script>
{% endblock %}