diff --git a/web/network_core.py b/web/network_core.py index 74a70f3..606d4a8 100644 --- a/web/network_core.py +++ b/web/network_core.py @@ -1,11 +1,10 @@ import json import re +import subprocess import uuid from pathlib import Path from typing import Any -from app_runtime import run_cmd - CONFIG_DIR = Path('/var/lib/virtuality/config') NETWORK_DIR = Path('/var/lib/virtuality/network') NFT_DIR = Path('/etc/virtuality/nftables') @@ -23,6 +22,14 @@ class NetworkError(Exception): pass +def run_cmd(cmd: list[str], timeout: int = 12) -> dict[str, Any]: + try: + result = subprocess.run(cmd, capture_output=True, text=True, timeout=timeout, check=False) + return {'ok': result.returncode == 0, 'code': result.returncode, 'stdout': result.stdout.strip(), 'stderr': result.stderr.strip(), 'cmd': ' '.join(cmd)} + except Exception as exc: + return {'ok': False, 'code': -1, 'stdout': '', 'stderr': str(exc), 'cmd': ' '.join(cmd)} + + def ensure_dirs() -> None: CONFIG_DIR.mkdir(parents=True, exist_ok=True) NETWORK_DIR.mkdir(parents=True, exist_ok=True)