From 05ccfe51fbd4ad357d19984a1ea43556bb4a7611 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B8=D0=BA=D1=82=D0=BE=D1=80?= <78488229+viktor138irk@users.noreply.github.com> Date: Thu, 7 May 2026 03:01:04 +0900 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=BD=D0=B5=D1=81?= =?UTF-8?q?=D1=82=D0=B8=20XML=20NAT-=D1=81=D0=B5=D1=82=D0=B8=20=D0=B8?= =?UTF-8?q?=D0=B7=20tmp=20=D0=B2=20=D0=BA=D0=B0=D1=82=D0=B0=D0=BB=D0=BE?= =?UTF-8?q?=D0=B3=20Virtuality?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/network_core.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/web/network_core.py b/web/network_core.py index 1f27bd8..2c2ecdd 100644 --- a/web/network_core.py +++ b/web/network_core.py @@ -10,6 +10,7 @@ CONFIG_DIR = Path('/var/lib/virtuality/config') NETWORK_DIR = Path('/var/lib/virtuality/network') NFT_DIR = Path('/etc/virtuality/nftables') PORT_FORWARDS_FILE = NETWORK_DIR / 'port_forwards.json' +NAT_XML_FILE = NETWORK_DIR / 'virtuality-nat.xml' NFT_FILE = NFT_DIR / 'virtuality.nft' NETWORK_NAME = 'virtuality-nat' NAT_BRIDGE = 'virbr100' @@ -175,12 +176,20 @@ def list_libvirt_networks() -> list[dict[str, str]]: return rows +def write_nat_network_xml() -> Path: + ensure_dirs() + tmp_path = NAT_XML_FILE.with_suffix('.xml.tmp') + tmp_path.write_text(nat_network_xml()) + tmp_path.replace(NAT_XML_FILE) + return NAT_XML_FILE + + def create_nat_network() -> dict[str, Any]: ensure_dirs() - Path('/tmp/virtuality-nat.xml').write_text(nat_network_xml()) + xml_file = write_nat_network_xml() existing = run_cmd(['virsh', 'net-info', NETWORK_NAME], timeout=8) if not existing['ok']: - defined = run_cmd(['virsh', 'net-define', '/tmp/virtuality-nat.xml'], timeout=15) + defined = run_cmd(['virsh', 'net-define', str(xml_file)], timeout=15) if not defined['ok']: raise NetworkError(defined['stderr'] or defined['stdout'] or 'Не удалось создать libvirt NAT-сеть') started = run_cmd(['virsh', 'net-start', NETWORK_NAME], timeout=15)