From 03fdf9b85311031aa3136b5b76886b6eb6925458 Mon Sep 17 00:00:00 2001 From: sirmrak Date: Thu, 13 Aug 2026 19:56:11 +0300 Subject: [PATCH] Add get_vpn.py --- get_vpn.py | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 get_vpn.py diff --git a/get_vpn.py b/get_vpn.py new file mode 100644 index 0000000..3e14770 --- /dev/null +++ b/get_vpn.py @@ -0,0 +1,59 @@ +import json +import os +import sys +import urllib.parse +import requests + + +def get_vpn_servers(): + # Забираем ссылку из переменных окружения (туда её подставит Gitea) + sub_url = os.getenv("VPN_SUB_URL") + + if not sub_url: + print("Ошибка: Переменная окружения VPN_SUB_URL не задана!") + sys.exit(1) + + parsed_url = urllib.parse.urlparse(sub_url) + base_url = f"{parsed_url.scheme}://{parsed_url.netloc}" + query_params = urllib.parse.parse_qs(parsed_url.query) + token = query_params.get("token", [""]) + + if not token or not token[0]: + print("Ошибка: В ссылке не найден token!") + sys.exit(1) + + api_url = f"{base_url}/api/v1/client/appConfig?token={token[0]}" + + headers = { + "User-Agent": "Happ/2.1.0 (iPhone; iOS 15.5; Scale/3.00)", + "Accept": "*/*", + "Accept-Language": "ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7", + } + + try: + response = requests.get(api_url, headers=headers, timeout=10) + + if response.status_code != 200: + print(f"Ошибка сервера: Статус {response.status_code}") + sys.exit(1) + + data = response.json() + servers = data.get("data", {}).get("server_user", []) + + if not servers: + print("Серверы не найдены в ответе API. Сохраняем сырой ответ для отладки.") + servers = data + + # Записываем результат в файл + with open("servers.json", "w", encoding="utf-8") as f: + json.dump(servers, f, indent=2, ensure_ascii=False) + + print(f"Успешно обновлено! Найдено серверов: {len(servers)}") + + except Exception as e: + print(f"Произошла ошибка: {e}") + sys.exit(1) + + +if __name__ == "__main__": + get_vpn_servers()