Update files
This commit is contained in:
parent
f5c16a350d
commit
286cf1f1c8
|
|
@ -6,70 +6,84 @@ from pathlib import Path
|
|||
from pydantic_settings import BaseSettings
|
||||
from dotenv import load_dotenv
|
||||
|
||||
# Load .env from project root
|
||||
# Helper to clean env values (remove comments)
|
||||
def get_env_clean(key: str, default: str = '') -> str:
|
||||
"""Get environment variable and clean it from comments"""
|
||||
value = os.getenv(key, default)
|
||||
if value and '#' in value:
|
||||
# Remove inline comments
|
||||
value = value.split('#')[0].strip()
|
||||
return value
|
||||
|
||||
# Load .env from project root (or /app/.env in Docker)
|
||||
root_env_path = Path(__file__).parent.parent.parent / '.env'
|
||||
if root_env_path.exists():
|
||||
load_dotenv(dotenv_path=root_env_path)
|
||||
docker_env_path = Path('/app/.env')
|
||||
|
||||
if docker_env_path.exists():
|
||||
load_dotenv(dotenv_path=docker_env_path, override=False)
|
||||
print(f"✅ Loaded .env from: {docker_env_path} (Docker)")
|
||||
elif root_env_path.exists():
|
||||
load_dotenv(dotenv_path=root_env_path, override=False)
|
||||
print(f"✅ Loaded .env from: {root_env_path}")
|
||||
else:
|
||||
print(f"⚠️ .env file not found at: {root_env_path}")
|
||||
print(f"⚠️ .env file not found at: {root_env_path} or {docker_env_path}")
|
||||
|
||||
|
||||
class Settings(BaseSettings):
|
||||
"""Application settings"""
|
||||
|
||||
# Server
|
||||
MODERATION_PORT: int = int(os.getenv('MODERATION_PORT', '3001'))
|
||||
NODE_ENV: str = os.getenv('NODE_ENV', 'development')
|
||||
MODERATION_PORT: int = int(get_env_clean('MODERATION_PORT', '3001'))
|
||||
NODE_ENV: str = get_env_clean('NODE_ENV', 'development')
|
||||
|
||||
# MongoDB
|
||||
MONGODB_URI: str = os.getenv('MONGODB_URI', 'mongodb://localhost:27017/nakama')
|
||||
MONGODB_URI: str = get_env_clean('MONGODB_URI', 'mongodb://localhost:27017/nakama')
|
||||
|
||||
# JWT
|
||||
JWT_ACCESS_SECRET: str = os.getenv('JWT_ACCESS_SECRET', 'nakama_access_secret_change_me')
|
||||
JWT_REFRESH_SECRET: str = os.getenv('JWT_REFRESH_SECRET', 'nakama_refresh_secret_change_me')
|
||||
JWT_ACCESS_EXPIRES_IN: int = int(os.getenv('JWT_ACCESS_EXPIRES_IN', '300'))
|
||||
JWT_REFRESH_EXPIRES_IN: int = int(os.getenv('JWT_REFRESH_EXPIRES_IN', '604800'))
|
||||
JWT_ACCESS_COOKIE_NAME: str = os.getenv('JWT_ACCESS_COOKIE_NAME', 'nakama_access_token')
|
||||
JWT_REFRESH_COOKIE_NAME: str = os.getenv('JWT_REFRESH_COOKIE_NAME', 'nakama_refresh_token')
|
||||
JWT_ACCESS_SECRET: str = get_env_clean('JWT_ACCESS_SECRET', 'nakama_access_secret_change_me')
|
||||
JWT_REFRESH_SECRET: str = get_env_clean('JWT_REFRESH_SECRET', 'nakama_refresh_secret_change_me')
|
||||
JWT_ACCESS_EXPIRES_IN: int = int(get_env_clean('JWT_ACCESS_EXPIRES_IN', '300'))
|
||||
JWT_REFRESH_EXPIRES_IN: int = int(get_env_clean('JWT_REFRESH_EXPIRES_IN', '604800'))
|
||||
JWT_ACCESS_COOKIE_NAME: str = get_env_clean('JWT_ACCESS_COOKIE_NAME', 'nakama_access_token')
|
||||
JWT_REFRESH_COOKIE_NAME: str = get_env_clean('JWT_REFRESH_COOKIE_NAME', 'nakama_refresh_token')
|
||||
|
||||
# Telegram
|
||||
TELEGRAM_BOT_TOKEN: str = os.getenv('TELEGRAM_BOT_TOKEN', '')
|
||||
MODERATION_BOT_TOKEN: str = os.getenv('MODERATION_BOT_TOKEN', '')
|
||||
MODERATION_BOT_USERNAME: str = os.getenv('MODERATION_BOT_USERNAME', '')
|
||||
MODERATION_OWNER_USERNAMES: str = os.getenv('MODERATION_OWNER_USERNAMES', 'glpshchn00')
|
||||
MODERATION_CHANNEL_USERNAME: str = os.getenv('MODERATION_CHANNEL_USERNAME', '@reichenbfurry')
|
||||
TELEGRAM_BOT_TOKEN: str = get_env_clean('TELEGRAM_BOT_TOKEN', '')
|
||||
MODERATION_BOT_TOKEN: str = get_env_clean('MODERATION_BOT_TOKEN', '')
|
||||
MODERATION_BOT_USERNAME: str = get_env_clean('MODERATION_BOT_USERNAME', '')
|
||||
MODERATION_OWNER_USERNAMES: str = get_env_clean('MODERATION_OWNER_USERNAMES', 'glpshchn00')
|
||||
MODERATION_CHANNEL_USERNAME: str = get_env_clean('MODERATION_CHANNEL_USERNAME', '@reichenbfurry')
|
||||
|
||||
# Frontend
|
||||
FRONTEND_URL: str = os.getenv('FRONTEND_URL', 'http://localhost:5173')
|
||||
MODERATION_CORS_ORIGIN: str = os.getenv('MODERATION_CORS_ORIGIN', '*')
|
||||
FRONTEND_URL: str = get_env_clean('FRONTEND_URL', 'http://localhost:5173')
|
||||
MODERATION_CORS_ORIGIN: str = get_env_clean('MODERATION_CORS_ORIGIN', '*')
|
||||
|
||||
# Email
|
||||
EMAIL_PROVIDER: str = os.getenv('EMAIL_PROVIDER', 'yandex')
|
||||
EMAIL_FROM: str = os.getenv('EMAIL_FROM', 'noreply@nakama.guru')
|
||||
OWNER_EMAIL: str = os.getenv('OWNER_EMAIL', 'aaem9848@gmail.com')
|
||||
EMAIL_PROVIDER: str = get_env_clean('EMAIL_PROVIDER', 'yandex')
|
||||
EMAIL_FROM: str = get_env_clean('EMAIL_FROM', 'noreply@nakama.guru')
|
||||
OWNER_EMAIL: str = get_env_clean('OWNER_EMAIL', 'aaem9848@gmail.com')
|
||||
|
||||
# AWS SES / Yandex Cloud Postbox
|
||||
AWS_SES_ACCESS_KEY_ID: str = os.getenv('AWS_SES_ACCESS_KEY_ID', '')
|
||||
AWS_SES_SECRET_ACCESS_KEY: str = os.getenv('AWS_SES_SECRET_ACCESS_KEY', '')
|
||||
AWS_SES_REGION: str = os.getenv('AWS_SES_REGION', 'us-east-1')
|
||||
AWS_SES_ENDPOINT_URL: str = os.getenv('AWS_SES_ENDPOINT_URL', '')
|
||||
AWS_SES_ACCESS_KEY_ID: str = get_env_clean('AWS_SES_ACCESS_KEY_ID', '')
|
||||
AWS_SES_SECRET_ACCESS_KEY: str = get_env_clean('AWS_SES_SECRET_ACCESS_KEY', '')
|
||||
AWS_SES_REGION: str = get_env_clean('AWS_SES_REGION', 'us-east-1')
|
||||
AWS_SES_ENDPOINT_URL: str = get_env_clean('AWS_SES_ENDPOINT_URL', '')
|
||||
|
||||
# Yandex SMTP
|
||||
YANDEX_SMTP_HOST: str = os.getenv('YANDEX_SMTP_HOST', 'smtp.yandex.ru')
|
||||
YANDEX_SMTP_PORT: int = int(os.getenv('YANDEX_SMTP_PORT', '465'))
|
||||
YANDEX_SMTP_USER: str = os.getenv('YANDEX_SMTP_USER', '')
|
||||
YANDEX_SMTP_PASSWORD: str = os.getenv('YANDEX_SMTP_PASSWORD', '')
|
||||
YANDEX_SMTP_SECURE: bool = os.getenv('YANDEX_SMTP_SECURE', 'true').lower() == 'true'
|
||||
YANDEX_SMTP_HOST: str = get_env_clean('YANDEX_SMTP_HOST', 'smtp.yandex.ru')
|
||||
YANDEX_SMTP_PORT: int = int(get_env_clean('YANDEX_SMTP_PORT', '465'))
|
||||
YANDEX_SMTP_USER: str = get_env_clean('YANDEX_SMTP_USER', '')
|
||||
YANDEX_SMTP_PASSWORD: str = get_env_clean('YANDEX_SMTP_PASSWORD', '')
|
||||
YANDEX_SMTP_SECURE: bool = get_env_clean('YANDEX_SMTP_SECURE', 'true').lower() == 'true'
|
||||
|
||||
# MinIO
|
||||
MINIO_ENABLED: bool = os.getenv('MINIO_ENABLED', 'false').lower() == 'true'
|
||||
MINIO_ENDPOINT: str = os.getenv('MINIO_ENDPOINT', 'localhost')
|
||||
MINIO_PORT: int = int(os.getenv('MINIO_PORT', '9000'))
|
||||
MINIO_USE_SSL: bool = os.getenv('MINIO_USE_SSL', 'false').lower() == 'true'
|
||||
MINIO_ACCESS_KEY: str = os.getenv('MINIO_ACCESS_KEY', 'minioadmin')
|
||||
MINIO_SECRET_KEY: str = os.getenv('MINIO_SECRET_KEY', 'minioadmin')
|
||||
MINIO_BUCKET: str = os.getenv('MINIO_BUCKET', 'nakama-media')
|
||||
MINIO_ENABLED: bool = get_env_clean('MINIO_ENABLED', 'false').lower() == 'true'
|
||||
MINIO_ENDPOINT: str = get_env_clean('MINIO_ENDPOINT', 'localhost')
|
||||
MINIO_PORT: int = int(get_env_clean('MINIO_PORT', '9000'))
|
||||
MINIO_USE_SSL: bool = get_env_clean('MINIO_USE_SSL', 'false').lower() == 'true'
|
||||
MINIO_ACCESS_KEY: str = get_env_clean('MINIO_ACCESS_KEY', 'minioadmin')
|
||||
MINIO_SECRET_KEY: str = get_env_clean('MINIO_SECRET_KEY', 'minioadmin')
|
||||
MINIO_BUCKET: str = get_env_clean('MINIO_BUCKET', 'nakama-media')
|
||||
|
||||
@property
|
||||
def IS_DEVELOPMENT(self) -> bool:
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ echo "🚀 Запуск контейнера..."
|
|||
docker run -d \
|
||||
--name nakama-moderation-py \
|
||||
-p 3001:3001 \
|
||||
--env-file ../../.env \
|
||||
-v "$(cd ../.. && pwd)/.env:/app/.env:ro" \
|
||||
--restart unless-stopped \
|
||||
nakama-moderation-py
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue