0a18b94d84
- Flask + SQLite web app with user authentication - Zone management: create/delete zones, edit raw zone files - Record management: add/delete A/AAAA/CNAME/MX/TXT/NS/PTR/SRV/CAA records - Service control: start/stop/restart/reload BIND via systemctl/rndc - Configuration editor: edit named.conf.options/local with syntax validation - DNS query testing: online dig tool - Audit log: all operations logged with user/timestamp - BIND9 backend, listening on port 53
49 lines
2.1 KiB
HTML
49 lines
2.1 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="zh-CN">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>{% block title %}DNS 管理系统{% endblock %}</title>
|
|
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
|
|
</head>
|
|
<body>
|
|
{% if current_user %}
|
|
<nav class="navbar">
|
|
<div class="nav-brand">
|
|
<span class="logo">🌐</span>
|
|
<a href="{{ url_for('dashboard') }}">DNS 管理系统</a>
|
|
</div>
|
|
<div class="nav-links">
|
|
<a href="{{ url_for('dashboard') }}" class="{% if request.endpoint == 'dashboard' %}active{% endif %}">仪表盘</a>
|
|
<a href="{{ url_for('zone_list') }}" class="{% if request.endpoint in ('zone_list', 'zone_create', 'zone_detail', 'zone_raw') %}active{% endif %}">域名管理</a>
|
|
<a href="{{ url_for('query_test') }}" class="{% if request.endpoint == 'query_test' %}active{% endif %}">DNS 查询</a>
|
|
<a href="{{ url_for('config_view') }}" class="{% if request.endpoint == 'config_view' %}active{% endif %}">配置管理</a>
|
|
<a href="{{ url_for('logs') }}" class="{% if request.endpoint == 'logs' %}active{% endif %}">操作日志</a>
|
|
</div>
|
|
<div class="nav-user">
|
|
<span>{{ current_user.username }}</span>
|
|
<a href="{{ url_for('change_password') }}" class="btn-sm">改密</a>
|
|
<a href="{{ url_for('logout') }}" class="btn-sm btn-danger">退出</a>
|
|
</div>
|
|
</nav>
|
|
{% endif %}
|
|
|
|
<main class="container">
|
|
{% with messages = get_flashed_messages(with_categories=true) %}
|
|
{% if messages %}
|
|
<div class="flash-messages">
|
|
{% for category, message in messages %}
|
|
<div class="flash flash-{{ category }}">{{ message }}</div>
|
|
{% endfor %}
|
|
</div>
|
|
{% endif %}
|
|
{% endwith %}
|
|
{% block content %}{% endblock %}
|
|
</main>
|
|
|
|
<footer class="footer">
|
|
<p>BIND DNS Web Manager © 2026 | BIND 9.18+ | <a href="https://www.isc.org/bind/" target="_blank">ISC BIND</a></p>
|
|
</footer>
|
|
</body>
|
|
</html>
|