39 lines
1.5 KiB
Python
39 lines
1.5 KiB
Python
import os
|
|
from pydantic_settings import BaseSettings
|
|
from dotenv import load_dotenv
|
|
|
|
load_dotenv()
|
|
|
|
class Settings(BaseSettings):
|
|
geo_provider: str = os.getenv('GEO_PROVIDER', 'maxmind')
|
|
|
|
# MaxMind
|
|
maxmind_account_id: str | None = os.getenv('MAXMIND_ACCOUNT_ID')
|
|
maxmind_license_key: str | None = os.getenv('MAXMIND_LICENSE_KEY')
|
|
maxmind_db_name: str = os.getenv('MAXMIND_DB_NAME', 'GeoLite2-City')
|
|
maxmind_db_path: str = os.getenv('MAXMIND_DB_PATH', '/data/GeoLite2-City.mmdb')
|
|
maxmind_download_url_template: str = os.getenv(
|
|
'MAXMIND_DOWNLOAD_URL_TEMPLATE',
|
|
'https://download.maxmind.com/app/geoip_download?edition_id={DBNAME}&license_key={LICENSE_KEY}&suffix=tar.gz'
|
|
)
|
|
maxmind_direct_db_url: str | None = os.getenv('MAXMIND_DIRECT_DB_URL')
|
|
maxmind_github_repo: str | None = os.getenv('MAXMIND_GITHUB_REPO')
|
|
github_token: str | None = os.getenv('GITHUB_TOKEN')
|
|
|
|
# IP2Location
|
|
ip2location_download_url: str | None = os.getenv('IP2LOCATION_DOWNLOAD_URL')
|
|
ip2location_db_path: str = os.getenv('IP2LOCATION_DB_PATH', '/data/IP2LOCATION.BIN')
|
|
|
|
update_interval_seconds: int = int(os.getenv('UPDATE_INTERVAL_SECONDS', '86400'))
|
|
|
|
host: str = os.getenv('HOST', '0.0.0.0')
|
|
port: int = int(os.getenv('PORT', '8000'))
|
|
log_level: str = os.getenv('LOG_LEVEL', 'info')
|
|
|
|
admin_user: str | None = os.getenv('ADMIN_USER')
|
|
admin_pass: str | None = os.getenv('ADMIN_PASS')
|
|
cache_maxsize: int = int(os.getenv('CACHE_MAXSIZE', '4096'))
|
|
|
|
|
|
settings = Settings()
|