Initial commit: certgen — сервис генерации сертификатов

This commit is contained in:
apuc committed 2026-10-16 17:17:47 +03:00
commit 49bac43e16
23 files changed
+3046

No files matched your search

+41
View File
@@ -0,0 +1,41 @@
"""Пути и настройки сервиса."""
from __future__ import annotations
import os
from pathlib import Path
BASE_DIR = Path(__file__).resolve().parent.parent
# Каталог данных можно переопределить переменной окружения CERTGEN_DATA.
DATA_DIR = Path(os.environ.get("CERTGEN_DATA", str(BASE_DIR / "data"))).expanduser()
DB_PATH = DATA_DIR / "certs.db"
OUTPUT_DIR = DATA_DIR / "output" # сгенерированные файлы (png/pdf)
TEMPLATES_DIR = DATA_DIR / "templates" # фоны и ассеты шаблонов
TMP_DIR = DATA_DIR / "tmp" # временные файлы
# Публичный адрес сервиса (для абсолютных ссылок). Если не задан — берём из Host.
BASE_URL = os.environ.get("CERTGEN_BASE_URL", "").rstrip("/")
HOST = os.environ.get("CERTGEN_HOST", "127.0.0.1")
PORT = int(os.environ.get("CERTGEN_PORT", "8077"))
# Разрешение вывода (dpi для PDF-экспорта изображения).
PDF_DPI = int(os.environ.get("CERTGEN_PDF_DPI", "150"))
# Нумерация: первые (START_SEQ - 1) номеров зарезервированы под особые случаи,
# обычная нумерация начинается с START_SEQ.
START_SEQ = int(os.environ.get("CERTGEN_START", "1001"))
# Ширина номера с ведущими нулями (6 -> 001001).
NUMBER_PAD = int(os.environ.get("CERTGEN_PAD", "6"))
# Регистрация: open — любой может зарегистрироваться; closed — только админ создаёт.
REGISTRATION = os.environ.get("CERTGEN_REGISTRATION", "open").strip().lower()
# Email, который при регистрации получает роль администратора (необязательно).
ADMIN_EMAIL = os.environ.get("CERTGEN_ADMIN_EMAIL", "").strip().lower()
# Срок жизни сессии в днях.
SESSION_TTL_DAYS = int(os.environ.get("CERTGEN_SESSION_DAYS", "30"))
def ensure_dirs() -> None:
for d in (DATA_DIR, OUTPUT_DIR, TEMPLATES_DIR, TMP_DIR):
d.mkdir(parents=True, exist_ok=True)