|
1 | 1 | import logging |
2 | 2 | from typing import Literal |
3 | 3 |
|
| 4 | +from dotenv import load_dotenv |
4 | 5 | from pydantic import Field, ValidationError, field_validator |
5 | 6 | from pydantic_settings import BaseSettings |
6 | 7 |
|
7 | 8 | from app.utils.ip import resolve_hostname, validate_ip_address |
8 | 9 |
|
| 10 | +# Load .env file if it exists |
| 11 | +load_dotenv() |
| 12 | + |
9 | 13 |
|
10 | 14 | class Config(BaseSettings): |
11 | 15 | # Environment |
@@ -40,14 +44,14 @@ class Config(BaseSettings): |
40 | 44 | description="Bearer token for Prometheus metrics endpoint authentication" |
41 | 45 | ) |
42 | 46 |
|
43 | | - CORS_DOMAINS: list[str] = Field(default=["*"], validation_alias="APP_CORS_DOMAINS") |
44 | | - |
45 | 47 | ALLOW_CORS_WILDCARD: bool = Field( |
46 | 48 | default=False, |
47 | 49 | validation_alias="APP_ALLOW_CORS_WILDCARD", |
48 | 50 | description="Allow wildcard (*) in CORS domains (disable in production)", |
49 | 51 | ) |
50 | 52 |
|
| 53 | + CORS_DOMAINS: list[str] = Field(default=["*"], validation_alias="APP_CORS_DOMAINS") |
| 54 | + |
51 | 55 | SAVE_USER_AGENT: bool = Field(default=False, validation_alias="APP_SAVE_USER_AGENT") |
52 | 56 | SAVE_IP_ADDRESS: bool = Field(default=False, validation_alias="APP_SAVE_IP_ADDRESS") |
53 | 57 |
|
@@ -235,6 +239,7 @@ def verify_trusted_hosts(cls, hosts: list[str]) -> list[str]: |
235 | 239 | def validate_cors_domains(cls, domains: list[str], info) -> list[str]: |
236 | 240 | """Validate CORS domains and warn/error on wildcard.""" |
237 | 241 | if "*" in domains: |
| 242 | + # Check if ALLOW_CORS_WILDCARD is in the data (field name, not alias) |
238 | 243 | allow_wildcard = info.data.get("ALLOW_CORS_WILDCARD", False) |
239 | 244 |
|
240 | 245 | if not allow_wildcard: |
|
0 commit comments