Initial commit
This commit is contained in:
44
server/app/config.py
Normal file
44
server/app/config.py
Normal file
@@ -0,0 +1,44 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
|
||||
from pydantic import BaseSettings
|
||||
|
||||
|
||||
def _ensure_dir(path: str) -> str:
|
||||
os.makedirs(path, exist_ok=True)
|
||||
return path
|
||||
|
||||
|
||||
class Settings(BaseSettings):
|
||||
api_username: str = "backup-admin"
|
||||
api_password: str = "SuperSecret123"
|
||||
token_lifetime_minutes: int = 120
|
||||
database_url: str = "sqlite:///./data/backup.db"
|
||||
backup_base: str = "/srv/backup"
|
||||
history_retention: int = 20
|
||||
log_dir: str = "./logs"
|
||||
ssh_timeout_seconds: int = 1800
|
||||
ssh_pass_command: str = "sshpass"
|
||||
ssh_extra_args: str = "-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"
|
||||
rsync_extra_args: str = "--info=progress2 --partial"
|
||||
compress: bool = True
|
||||
|
||||
class Config:
|
||||
env_file = os.path.join(os.path.dirname(__file__), "..", ".env")
|
||||
env_file_encoding = "utf-8"
|
||||
|
||||
@property
|
||||
def backup_current(self) -> str:
|
||||
return _ensure_dir(os.path.join(self.backup_base, "current"))
|
||||
|
||||
@property
|
||||
def backup_history(self) -> str:
|
||||
return _ensure_dir(os.path.join(self.backup_base, ".history"))
|
||||
|
||||
@property
|
||||
def runtime_logs(self) -> str:
|
||||
return _ensure_dir(self.log_dir)
|
||||
|
||||
|
||||
settings = Settings()
|
||||
Reference in New Issue
Block a user