69 lines
1.8 KiB
Python
69 lines
1.8 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
PerToolBox Server - 配置模块
|
|
Copyright (C) 2024 Sea Network Technology Studio
|
|
Author: Canglan <admin@sea-studio.top>
|
|
License: AGPL v3
|
|
"""
|
|
|
|
from pydantic_settings import BaseSettings, SettingsConfigDict
|
|
from typing import List, Optional
|
|
|
|
class Settings(BaseSettings):
|
|
# 应用配置
|
|
APP_NAME: str = "PerToolBox"
|
|
DEBUG: bool = False
|
|
ENVIRONMENT: str = "production"
|
|
SECRET_KEY: str
|
|
|
|
# 数据库
|
|
DB_HOST: str = "localhost"
|
|
DB_PORT: int = 3306
|
|
DB_USER: str
|
|
DB_PASSWORD: str
|
|
DB_NAME: str
|
|
|
|
@property
|
|
def DATABASE_URL(self) -> str:
|
|
return f"mysql+pymysql://{self.DB_USER}:{self.DB_PASSWORD}@{self.DB_HOST}:{self.DB_PORT}/{self.DB_NAME}?charset=utf8mb4"
|
|
|
|
# Redis
|
|
REDIS_HOST: str = "localhost"
|
|
REDIS_PORT: int = 6379
|
|
REDIS_PASSWORD: Optional[str] = None
|
|
REDIS_DB: int = 0
|
|
|
|
# 限流
|
|
RATE_LIMIT_ENABLED: bool = True
|
|
RATE_LIMIT_REQUESTS: int = 100
|
|
RATE_LIMIT_PERIOD: int = 60
|
|
|
|
# CORS
|
|
ALLOWED_ORIGINS: List[str] = []
|
|
|
|
# 阿里云短信
|
|
ALIYUN_SMS_ACCESS_KEY_ID: Optional[str] = None
|
|
ALIYUN_SMS_ACCESS_KEY_SECRET: Optional[str] = None
|
|
ALIYUN_SMS_SIGN_NAME: Optional[str] = None
|
|
ALIYUN_SMS_TEMPLATE_CODE: Optional[str] = None
|
|
|
|
# 腾讯企业邮
|
|
SMTP_HOST: str = "smtp.exmail.qq.com"
|
|
SMTP_PORT: int = 465
|
|
SMTP_USER: Optional[str] = None
|
|
SMTP_PASSWORD: Optional[str] = None
|
|
SMTP_FROM: Optional[str] = None
|
|
|
|
# 微信公众号(预留)
|
|
WECHAT_APPID: Optional[str] = None
|
|
WECHAT_APPSECRET: Optional[str] = None
|
|
WECHAT_TOKEN: Optional[str] = None
|
|
|
|
model_config = SettingsConfigDict(
|
|
env_file=".env",
|
|
env_file_encoding="utf-8",
|
|
case_sensitive=True
|
|
)
|
|
|
|
settings = Settings() |