#!/usr/bin/env python3 """setup_keyring.py — одноразово кладёт secret и static в keyring из env. Имя сервиса keyring берётся из общего vpn_config.json (см. launch_vpn_gui.py).""" import os import sys import json import keyring CONFIG_PATH = os.path.join( os.path.dirname(os.path.abspath(__file__)), "vpn_config.json") DEFAULT_SERVICE = "openvpn-totp" def keyring_service(): try: with open(CONFIG_PATH, "r", encoding="utf-8") as f: data = json.load(f) if isinstance(data, dict): return data.get("keyring_service", DEFAULT_SERVICE) except (OSError, ValueError): pass return DEFAULT_SERVICE def main(): secret = os.environ.get("OVPN_TOTP_SECRET") static = os.environ.get("OVPN_STATIC_PASS") missing = [name for name, val in (("OVPN_TOTP_SECRET", secret),) if not val] if missing: sys.exit(f"Не заданы переменные окружения: {', '.join(missing)}") service = keyring_service() keyring.set_password(service, "secret", secret) if static: keyring.set_password(service, "static", static) print(f"Сохранено в keyring (сервис: {service}).") if __name__ == "__main__": main()