feat: make inactivity timeout configurable

This commit is contained in:
thePR0M3TH3AN
2025-07-02 14:05:27 -04:00
parent ffbb49a7dd
commit 4ad65a8837
4 changed files with 78 additions and 4 deletions

View File

@@ -16,6 +16,7 @@ from utils.key_derivation import (
EncryptionMode,
DEFAULT_ENCRYPTION_MODE,
)
from constants import INACTIVITY_TIMEOUT
logger = logging.getLogger(__name__)
@@ -46,6 +47,7 @@ class ConfigManager:
"pin_hash": "",
"password_hash": "",
"encryption_mode": DEFAULT_ENCRYPTION_MODE.value,
"inactivity_timeout": INACTIVITY_TIMEOUT,
}
try:
data = self.vault.load_config()
@@ -56,6 +58,7 @@ class ConfigManager:
data.setdefault("pin_hash", "")
data.setdefault("password_hash", "")
data.setdefault("encryption_mode", DEFAULT_ENCRYPTION_MODE.value)
data.setdefault("inactivity_timeout", INACTIVITY_TIMEOUT)
# Migrate legacy hashed_password.enc if present and password_hash is missing
legacy_file = self.fingerprint_dir / "hashed_password.enc"
@@ -125,3 +128,16 @@ class ConfigManager:
config = self.load_config(require_pin=False)
config["encryption_mode"] = mode.value
self.save_config(config)
def set_inactivity_timeout(self, timeout_seconds: float) -> None:
"""Persist the inactivity timeout in seconds."""
if timeout_seconds <= 0:
raise ValueError("Timeout must be positive")
config = self.load_config(require_pin=False)
config["inactivity_timeout"] = timeout_seconds
self.save_config(config)
def get_inactivity_timeout(self) -> float:
"""Retrieve the inactivity timeout setting in seconds."""
config = self.load_config(require_pin=False)
return float(config.get("inactivity_timeout", INACTIVITY_TIMEOUT))

View File

@@ -50,6 +50,7 @@ from constants import (
MIN_PASSWORD_LENGTH,
MAX_PASSWORD_LENGTH,
DEFAULT_PASSWORD_LENGTH,
INACTIVITY_TIMEOUT,
DEFAULT_SEED_BACKUP_FILENAME,
)
@@ -101,6 +102,7 @@ class PasswordManager:
self.last_update: float = time.time()
self.last_activity: float = time.time()
self.locked: bool = False
self.inactivity_timeout: float = INACTIVITY_TIMEOUT
# Initialize the fingerprint manager first
self.initialize_fingerprint_manager()
@@ -786,6 +788,9 @@ class PasswordManager:
)
config = self.config_manager.load_config()
relay_list = config.get("relays", list(DEFAULT_RELAYS))
self.inactivity_timeout = config.get(
"inactivity_timeout", INACTIVITY_TIMEOUT
)
self.nostr_client = NostrClient(
encryption_manager=self.encryption_manager,