63d0699cdd
Remove invalid _mirror_manager from daemon.json that prevented Docker from starting. Add 2-minute test apply with auto-rollback, final apply confirmation, emergency-restore CLI/UI, and post-restart Docker health checks. Co-authored-by: Cursor <cursoragent@cursor.com>
58 lines
2.9 KiB
HTML
58 lines
2.9 KiB
HTML
{% extends "base.html" %}
|
|
{% from "macros.html" import guide_box %}
|
|
{% block title %}تنظیمات{% endblock %}
|
|
{% block content %}
|
|
<h2>تنظیمات سیستم</h2>
|
|
{{ guide_box(guide, 'settings') }}
|
|
|
|
<form method="post" class="card p-4">
|
|
<h5>Auto-switch (اختیاری)</h5>
|
|
<p class="text-muted small">در صورت fail شدن میرور فعال، به بهترین میرور جایگزین switch میشود.</p>
|
|
<div class="row g-2 mb-4">
|
|
{% for key, label in [
|
|
('auto_switch_dns', 'DNS'),
|
|
('auto_switch_apt', 'APT'),
|
|
('auto_switch_docker', 'Docker'),
|
|
('auto_switch_github', 'GitHub'),
|
|
('auto_switch_pip', 'pip'),
|
|
('auto_switch_npm', 'npm'),
|
|
] %}
|
|
<div class="col-md-4">
|
|
<div class="form-check">
|
|
<input class="form-check-input" type="checkbox" name="{{ key }}" id="{{ key }}" {% if settings.get(key) == 'true' %}checked{% endif %}>
|
|
<label class="form-check-label" for="{{ key }}">{{ label }}</label>
|
|
</div>
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
|
|
<h5>Rollback و تست</h5>
|
|
<div class="row g-3 mb-4">
|
|
<div class="col-md-4">
|
|
<label class="form-label">پنجره تست موقت (دقیقه)</label>
|
|
<input type="number" name="test_rollback_minutes" class="form-control" value="{{ settings.get('test_rollback_minutes', '2') }}" min="1" max="30">
|
|
<div class="form-text">پس از «تست موقت» — rollback خودکار اگر تأیید نشود</div>
|
|
</div>
|
|
<div class="col-md-4">
|
|
<label class="form-label">پنجره rollback قدیمی (دقیقه)</label>
|
|
<input type="number" name="rollback_minutes" class="form-control" value="{{ settings.get('rollback_minutes', '15') }}" min="5" max="60">
|
|
</div>
|
|
<div class="col-md-4">
|
|
<label class="form-label">فاصله تست auto-switch (دقیقه)</label>
|
|
<input type="number" name="auto_test_interval_minutes" class="form-control" value="{{ settings.get('auto_test_interval_minutes', '30') }}" min="10" max="1440">
|
|
</div>
|
|
<div class="col-md-4">
|
|
<label class="form-label">حداکثر switch در روز</label>
|
|
<input type="number" name="max_switches_per_day" class="form-control" value="{{ settings.get('max_switches_per_day', '3') }}" min="1" max="20">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-check mb-4">
|
|
<input class="form-check-input" type="checkbox" name="rollback_on_all_fail" id="rollback_on_all_fail" {% if settings.get('rollback_on_all_fail', 'true') == 'true' %}checked{% endif %}>
|
|
<label class="form-check-label" for="rollback_on_all_fail">هشدار وقتی همه میرورهای یک بخش fail شوند</label>
|
|
</div>
|
|
|
|
<button type="submit" class="btn btn-primary">ذخیره تنظیمات</button>
|
|
</form>
|
|
{% endblock %}
|