diff --git a/aria-brain/main.py b/aria-brain/main.py index 5690e17..dbf5c10 100644 --- a/aria-brain/main.py +++ b/aria-brain/main.py @@ -946,6 +946,23 @@ def project_file(project_id: str, path: str, binary: bool = False): _ARIA_VM_HOST = os.environ.get("ARIA_VM_SSH_HOST", "aria-wohnung") +def _docker_gateway() -> str: + """Docker-Gateway-IP (= Host-IP auf dem Container-Netz), an die QEMU sein VNC + binden soll: von der Bridge erreichbar, aber NICHT im LAN/Internet. Aus + /proc/net/route (Default-Route), kein `ip`-Tool noetig.""" + try: + import socket as _sock + import struct as _struct + with open("/proc/net/route") as f: + for line in f.readlines()[1:]: + fields = line.strip().split() + if len(fields) >= 3 and fields[1] == "00000000" and int(fields[3], 16) & 2: + return _sock.inet_ntoa(_struct.pack(" ' oder ein Medium angeben." local args=(-name "${name}" -m "${mem}" - -vnc "127.0.0.1:${display}" + -vnc "${vncbind}:${display}" -monitor "unix:${d}/monitor.sock,server,nowait" -pidfile "${d}/pid" -daemonize) [[ -n "${disk}" ]] && args+=(-drive "file=${disk},format=qcow2") @@ -132,7 +138,7 @@ cmd_boot() { args+=(-boot "${bootdev}") "${bin}" "${args[@]}" - echo "VM '${name}' gestartet (${arch}) — VNC 127.0.0.1:${display} (Port $((5900+display)))." + echo "VM '${name}' gestartet (${arch}) — VNC ${vncbind}:${display} (Port $((5900+display)))." echo "vnc_display=${display} vnc_port=$((5900+display))" }