Add maintenance cleanup for revoked and orphaned configs
Two new maintenance actions remove VpnConfig records (with their traffic samples) from the database: all revoked configs, and configs whose inbound or node no longer exists. 3x-ui is not touched; both write an AuditLog entry. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
1bc86dc426
commit
2c20fb0427
12 files changed
+367
-1
No files matched your search
@@ -241,6 +241,8 @@ TicketAttachmentDto[] }`.
|
||||
| DELETE | `/api/admin/maintenance/tickets/closed` | — | `{ deletedCount }` — удаляет все тикеты в статусе `Closed` вместе с комментариями и вложениями (файлы стираются с диска через `IFileStorage.DeleteAsync`) |
|
||||
| DELETE | `/api/admin/maintenance/audit-logs` | query: `olderThanDays` (1–3650) | `{ deletedCount }` — удаляет записи `AuditLog` старше `olderThanDays` дней |
|
||||
| DELETE | `/api/admin/maintenance/apps/disabled` | — | `{ deletedCount }` — удаляет все `ClientApp` с `IsEnabled = false` |
|
||||
| DELETE | `/api/admin/maintenance/configs/revoked` | — | `{ deletedCount }` — удаляет из БД все `VpnConfig` в статусе `Revoked` вместе с их `TrafficSample` (3x-ui не трогает — клиентов там уже нет) |
|
||||
| DELETE | `/api/admin/maintenance/configs/orphaned` | — | `{ deletedCount }` — удаляет из БД `VpnConfig` (в любом статусе), чей `Inbound` или его `Node` уже удалены, вместе с `TrafficSample` |
|
||||
| DELETE | `/api/admin/maintenance/factory-reset` | — | `204 No Content` — полный сброс панели к состоянию свежего деплоя |
|
||||
|
||||
Тикет/комментарий/вложение — плоские сущности без FK-каскада (см. `SupportTicket`), поэтому хендлер
|
||||
|
||||
@@ -195,6 +195,10 @@ AppUser
|
||||
ниже), не ролью. См. `Plan` ниже.
|
||||
- Инбаунд должен быть доступен роли пользователя (`Inbound.AllowedRoles`).
|
||||
- Разрешено несколько конфигов в одном инбаунде (ограничение — только общая квота пользователя).
|
||||
- Отозванный конфиг (`Revoked`) остаётся в БД, пока админ не почистит его во вкладке «Обслуживание»
|
||||
(`DELETE /api/admin/maintenance/configs/revoked`). Там же — удаление «сирот»: конфигов, чей
|
||||
`Inbound` или его `Node` удалены (`DELETE /api/admin/maintenance/configs/orphaned`, в любом статусе).
|
||||
Обе очистки удаляют и `TrafficSample` этих конфигов, 3x-ui не трогают.
|
||||
|
||||
> Лимиты трафика не реализованы. `ConfigStatus.LimitReached` в значении enum есть, но код в него
|
||||
> никогда не переводит конфиг. Квота на число конфигов реализована через `AppUser.ConfigQuota` (см.
|
||||
|
||||
Reference in new issue
Block a user