63 lines
1.9 KiB
Python
63 lines
1.9 KiB
Python
from pathlib import Path
|
|
|
|
from pydantic import field_validator
|
|
from pydantic_settings import BaseSettings, SettingsConfigDict
|
|
|
|
|
|
BASE_DIR = Path(__file__).resolve().parents[2]
|
|
WORKSPACE_DIR = BASE_DIR.parent
|
|
DOMAINCHECK_DIR = WORKSPACE_DIR / "domainCheck"
|
|
API_ENV_FILE = BASE_DIR / ".env"
|
|
ENV_FILE = DOMAINCHECK_DIR / ".env"
|
|
|
|
|
|
class Settings(BaseSettings):
|
|
api_prefix: str = "/api/v1"
|
|
api_host: str = "0.0.0.0"
|
|
api_port: int = 8100
|
|
cors_origins: list[str] = ["http://127.0.0.1:3200", "http://localhost:3200"]
|
|
db_host: str = "127.0.0.1"
|
|
db_port: int = 5432
|
|
db_database: str = "domain"
|
|
db_user: str = "postgres"
|
|
db_password: str = "postgres"
|
|
redis_host: str = "127.0.0.1"
|
|
redis_port: int = 6379
|
|
redis_password: str = ""
|
|
redis_db: int = 0
|
|
domain_root: str = str(DOMAINCHECK_DIR)
|
|
admin_username: str = "admin"
|
|
admin_password: str = "admin"
|
|
worker_mode: str = "windows-local"
|
|
worker_service_name: str = "domaincheck-worker"
|
|
api_service_name: str = "domaincheck-api"
|
|
sync_agent_service_name: str = "domaincheck-sync-agent"
|
|
node_code: str = "overseas-control-01"
|
|
node_region: str = "overseas"
|
|
node_role: str = "control"
|
|
sync_push_enabled: bool = False
|
|
sync_source_region: str = "unknown"
|
|
sync_target_region: str = "overseas"
|
|
sync_target_api_base_url: str = ""
|
|
sync_shared_token: str = ""
|
|
sync_batch_size: int = 200
|
|
sync_poll_interval_seconds: int = 30
|
|
|
|
@field_validator("cors_origins", mode="before")
|
|
@classmethod
|
|
def parse_cors_origins(cls, value: object) -> object:
|
|
if isinstance(value, str):
|
|
if value.strip().startswith("["):
|
|
return value
|
|
return [item.strip() for item in value.split(",") if item.strip()]
|
|
return value
|
|
|
|
model_config = SettingsConfigDict(
|
|
env_file=(str(API_ENV_FILE), str(ENV_FILE)),
|
|
env_file_encoding="utf-8",
|
|
extra="ignore",
|
|
)
|
|
|
|
|
|
settings = Settings()
|