Source code for config.init_config

import configparser
import os
import secrets
import logging

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)


[docs] def init_config(): """ Инициализация конфигурации приложения (JWT SECRET_KEY). Назначение: - Создаёт файл `/etc/gonets/config.ini` с секцией `[JWT]` и случайным `secret_key`, если он отсутствует. Устанавливает права `0o600`. Замечания: - Функция предназначена для однократного запуска (в инсталляторе/скрипте подготовки окружения) и безопасно пропускает работу, если файл уже существует. """ config_path = "/etc/gonets/config.ini" config_dir = os.path.dirname(config_path) if os.path.exists(config_path): logger.info( f"Конфигурационный файл {config_path} уже существует, пропускаем инициализацию" ) return try: secret_key = secrets.token_urlsafe(32) os.makedirs(config_dir, exist_ok=True) config = configparser.ConfigParser() config["JWT"] = {"secret_key": secret_key} with open(config_path, "w") as config_file: config.write(config_file) os.chmod(config_path, 0o600) logger.info(f"Создан конфигурационный файл {config_path}") except Exception as e: logger.error( f"Ошибка при создании конфигурационного файла: {type(e).__name__} - {str(e)}" ) raise
# Нативный запуск для тестов if __name__ == "__main__": init_config()