scripts for setup, nginx and service, fixing issue with server shutdown when both are running

This commit is contained in:
nahakubuilde
2025-06-08 11:13:43 +01:00
parent 89ab6b218e
commit a7e41ad231
18 changed files with 808 additions and 358 deletions

View File

@@ -1,25 +1,78 @@
{% extends "base.html" %}
{% block title %}Users - Email Server Management{% endblock %}
{% block page_title %}User Management{% endblock %}
{% block title %}Senders - Email Server Management{% endblock %}
{% block page_title %}Sender Management{% endblock %}
{% block content %}
<div class="d-flex justify-content-between align-items-center mb-4">
<h2>
<i class="bi bi-people me-2"></i>
Users
Senders
</h2>
<a href="{{ url_for('email.add_user') }}" class="btn btn-primary">
<i class="bi bi-person-plus me-2"></i>
Add User
Add Sender
</a>
</div>
{% if users %}
<div class="row">
<div class="col-md-6">
<div class="card">
<div class="card-header">
<h6 class="mb-0">
<i class="bi bi-info-circle me-2"></i>
Sender Statistics
</h6>
</div>
<div class="card-body">
<ul class="list-unstyled mb-0">
<li class="mb-2">
<i class="bi bi-check-circle text-success me-2"></i>
<strong>Active Senders:</strong> {{ users|selectattr('0.is_active')|list|length }}
</li>
<li class="mb-2">
<i class="bi bi-star text-warning me-2"></i>
<strong>Domain Sender:</strong> {{ users|selectattr('0.can_send_as_domain')|list|length }}
</li>
<li>
<i class="bi bi-person text-info me-2"></i>
<strong>Regular Senders:</strong> {{ users|rejectattr('0.can_send_as_domain')|list|length }}
</li>
</ul>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card">
<div class="card-header">
<h6 class="mb-0">
<i class="bi bi-lightbulb me-2"></i>
Permission Levels
</h6>
</div>
<div class="card-body">
<ul class="list-unstyled mb-0">
<li class="mb-2">
<span class="badge bg-warning me-2" style="color: black;">Domain Sender</span>
Can send as any email address in their domain
</li>
<li>
<span class="badge bg-info me-2" style="color: black;">Regular Sender</span>
Can only send as their own email address
</li>
</ul>
</div>
</div>
</div>
</div>
{% endif %}
<div class="card">
<div class="card-header">
<h5 class="mb-0">
<i class="bi bi-list-ul me-2"></i>
All Users
All Senders
</h5>
</div>
<div class="card-body p-0">
@@ -47,16 +100,16 @@
</td>
<td>
{% if user.can_send_as_domain %}
<span class="badge bg-warning">
<span class="badge bg-warning" style="color: black;">
<i class="bi bi-star me-1"></i>
Domain Admin
Domain Sender
</span>
<br>
<small class="text-muted">Can send as *@{{ domain.domain_name }}</small>
{% else %}
<span class="badge bg-info">
<span class="badge bg-info" style="color: black;">
<i class="bi bi-person me-1"></i>
User
Regular Sender
</span>
<br>
<small class="text-muted">Can only send as {{ user.email }}</small>
@@ -85,7 +138,7 @@
<!-- Edit Button -->
<a href="{{ url_for('email.edit_user', user_id=user.id) }}"
class="btn btn-outline-primary btn-sm"
title="Edit User">
title="Edit Sender">
<i class="bi bi-pencil"></i>
</a>
@@ -94,7 +147,7 @@
<form method="post" action="{{ url_for('email.delete_user', user_id=user.id) }}" class="d-inline">
<button type="submit"
class="btn btn-outline-warning btn-sm"
title="Disable User"
title="Disable Sender"
onclick="return confirm('Disable user {{ user.email }}?')">
<i class="bi bi-pause-circle"></i>
</button>
@@ -103,7 +156,7 @@
<form method="post" action="{{ url_for('email.enable_user', user_id=user.id) }}" class="d-inline">
<button type="submit"
class="btn btn-outline-success btn-sm"
title="Enable User"
title="Enable Sender"
onclick="return confirm('Enable user {{ user.email }}?')">
<i class="bi bi-play-circle"></i>
</button>
@@ -114,7 +167,7 @@
<form method="post" action="{{ url_for('email.remove_user', user_id=user.id) }}" class="d-inline">
<button type="submit"
class="btn btn-outline-danger btn-sm"
title="Permanently Remove User"
title="Permanently Remove Sender"
onclick="return confirm('Permanently remove user {{ user.email }}? This cannot be undone!')">
<i class="bi bi-trash"></i>
</button>
@@ -129,67 +182,15 @@
{% else %}
<div class="text-center py-5">
<i class="bi bi-people text-muted" style="font-size: 4rem;"></i>
<h4 class="text-muted mt-3">No users configured</h4>
<p class="text-muted">Add users to enable username/password authentication</p>
<h4 class="text-muted mt-3">No senders configured</h4>
<p class="text-muted">Add sender to enable username/password authentication</p>
<a href="{{ url_for('email.add_user') }}" class="btn btn-primary">
<i class="bi bi-person-plus me-2"></i>
Add Your First User
Add Your First Sender
</a>
</div>
{% endif %}
</div>
</div>
{% if users %}
<div class="row mt-4">
<div class="col-md-6">
<div class="card">
<div class="card-header">
<h6 class="mb-0">
<i class="bi bi-info-circle me-2"></i>
User Statistics
</h6>
</div>
<div class="card-body">
<ul class="list-unstyled mb-0">
<li class="mb-2">
<i class="bi bi-check-circle text-success me-2"></i>
<strong>Active users:</strong> {{ users|selectattr('0.is_active')|list|length }}
</li>
<li class="mb-2">
<i class="bi bi-star text-warning me-2"></i>
<strong>Domain admins:</strong> {{ users|selectattr('0.can_send_as_domain')|list|length }}
</li>
<li>
<i class="bi bi-person text-info me-2"></i>
<strong>Regular users:</strong> {{ users|rejectattr('0.can_send_as_domain')|list|length }}
</li>
</ul>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card">
<div class="card-header">
<h6 class="mb-0">
<i class="bi bi-lightbulb me-2"></i>
Permission Levels
</h6>
</div>
<div class="card-body">
<ul class="list-unstyled mb-0">
<li class="mb-2">
<span class="badge bg-warning me-2">Domain Admin</span>
Can send as any email address in their domain
</li>
<li>
<span class="badge bg-info me-2">Regular User</span>
Can only send as their own email address
</li>
</ul>
</div>
</div>
</div>
</div>
{% endif %}
{% endblock %}