Files
virtuality/web/restore_network.py
T
Claude 975ab4d1a0 Web-панель была подготовлена к продакшену
- исправлен NameError при создании VM: не был импортирован platform;
- на странице VM автозапуск всегда показывался выключенным;
- сообщения в redirect-URL теперь кодируются (кириллица, пробелы, &);
- проверка пароля вынесена в web/auth.py и работает на Python 3.13+,
  где модули crypt и spwd удалены (fallback на libcrypt и /etc/shadow);
- добавлены ограничение попыток входа, срок жизни сессии, флаг Secure
  для cookie, защита от cross-origin POST и заголовки безопасности;
- добавлен публичный /healthz с версией панели;
- правила проброса портов восстанавливаются после перезагрузки
  (virtuality-network.service);
- обновление из панели запускается через systemd-run и больше не
  убивается перезапуском virtuality-web;
- install_web_panel.sh сохраняет порт, пользователя и режим
  автообновления в /var/lib/virtuality/config/web.env, поэтому
  обновление больше не сбрасывает порт на 8088 и пользователя на viktor;
- поддержка офлайн-установки Python-зависимостей из wheels/.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019LEUXMcdZo7b87mjkUsPgg
2026-09-25 06:26:51 +00:00

28 строки
815 B
Python

#!/usr/bin/env python3
"""Re-apply Virtuality NAT port forwards after boot.
nftables/iptables rules created by the panel live only in the kernel, so they
are lost on reboot. virtuality-network.service runs this once at startup.
"""
import sys
import network_core
def main() -> int:
if not network_core.PORT_FORWARDS_FILE.exists():
print("No port forwards configured, nothing to restore")
return 0
try:
result = network_core.apply_port_forwards()
except network_core.NetworkError as exc:
print(f"Failed to restore port forwards: {exc}", file=sys.stderr)
return 1
count = len(network_core.load_port_forwards())
print(f"Restored {count} port forward(s), nft ok={result['nft_apply']['ok']}")
return 0
if __name__ == "__main__":
sys.exit(main())