Commit Graph

24 Commits

Author SHA1 Message Date
Sergey Antropoff 52b14bbc60 Fix lightbox QR download: sync canvas.toDataURL
Async fetch/toBlob lost the user-gesture so Safari/Chrome opened
the PNG instead of downloading. Use a button and sync data-URL save.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 10:34:13 +03:00
Sergey Antropoff 5da47c176b Force download for .url/.txt/.png/.qr.txt chips
Browser often opens these files instead of downloading; use blob
downloads with embedded text fallbacks and canvas for PNG on file://.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 10:28:23 +03:00
Sergey Antropoff c5cf9e7f8c Принудительное скачивание QR из lightbox как server-user.png
Кнопка больше не открывает PNG во вкладке: blob/canvas download
с именем <сервер>-<пользователь>.png.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 10:23:16 +03:00
Sergey Antropoff 2f72cd3d3b make index и install/update: единый стиль страниц серверов и каталога
Пересборка HTML серверов из server-info.yml; сетка карточек и вид
как у главной. Тот же pipeline после install/update/export.
2026-07-23 09:35:43 +03:00
Sergey Antropoff 248e0b105b Убрать подсказку закрытия из lightbox 2026-07-23 09:31:20 +03:00
Sergey Antropoff 86ddb88c29 Сетка карточек на странице сервера и крупный QR в lightbox
Карточки как в глобальном индексе; QR заполняет доступную
площадь модального окна через container queries.
2026-07-23 09:24:45 +03:00
Sergey Antropoff 54619b95a4 Вкладки серверов и страница статистики в output/index.html
По умолчанию — Статистика: доступность TCP, IP, пользователи,
матрица присутствия. Серверы открываются отдельными вкладками.
2026-07-23 09:20:50 +03:00
Sergey Antropoff 805e225087 Сделать lightbox на всю высоту экрана с небольшими отступами
Панель занимает 100dvh минус 1rem сверху/снизу; QR растягивается
в оставшееся пространство.
2026-07-23 09:16:45 +03:00
Sergey Antropoff ed6aa93eb3 Увеличить QR в lightbox на 30% (до ~728px) 2026-07-23 09:13:58 +03:00
Sergey Antropoff 299187625e Ограничить lightbox QR высотой экрана с отступами сверху/снизу 2026-07-23 09:13:00 +03:00
Sergey Antropoff 0f19f5127f Увеличить QR в lightbox до ~560px 2026-07-23 09:11:14 +03:00
Sergey Antropoff e3bbeddc54 Добавить кнопку скачивания QR в lightbox
Файл сохраняется как <сервер>-<пользователь>.png.
2026-07-23 09:09:12 +03:00
Sergey Antropoff ce90c7dc5d Добавить lightbox для QR-кодов в HTML-каталогах
Клик по QR открывает крупный просмотр с подписью; закрытие по Esc,
кнопке и клику на фон. В global и server index.
2026-07-23 09:07:23 +03:00
Sergey Antropoff bb0959bafe Обновить bundled install_server.sh с официального get.hy2.sh
Синхронизация локальной копии после проверки SHA256.
2026-07-23 09:02:06 +03:00
Sergey Antropoff 75f1885772 fix: пропускать sync install_server.sh при сетевой ошибке
Если get.hy2.sh недоступен (таймаут без VPN), используется локальная
копия в roles/hysteria2/files/; падение только если её нет.
2026-07-01 14:06:46 +03:00
Sergey Antropoff f6a81929b5 fix: пересборка output/index.html при uninstall с LIMIT
Второй play перенесён на hysteria2_servers с run_once на localhost,
чтобы LIMIT не пропускал пересборку. Пустой index.html удаляется.
2026-07-01 13:31:40 +03:00
Sergey Antropoff dd10a557d6 Полная очистка при uninstall: VPS и output/<server>/
Скрипт --remove снимает только бинарник и systemd; Ansible дочищает конфиг,
пользователя, ufw, пакеты и всегда удаляет локальную папку экспорта.
2026-07-01 13:28:00 +03:00
Sergey Antropoff 0d67822eb8 fix: run only uninstall tasks, not full role on make uninstall
Tagging the whole role with uninstall caused install/configure/update/export to run first. Use include_role tasks_from uninstall.yml; add safe defaults for uninstall variables.
2026-07-01 13:19:47 +03:00
Sergey Antropoff 5f09a26ef3 feat: incremental user passwords and export on update
Preserve passwords from server-info.yml and vault; generate only for new users; remove deleted users from output; re-export URL/QR only when password, domain, port, obfs or files changed.
2026-07-01 13:06:14 +03:00
Sergey Antropoff 3faf21fecb feat: complete uninstall cleanup on server and local output
Remove binary, config, masq, system user, ufw rules, and apt packages from VPS; delete output/<server>/ by default and rebuild global index.html via localhost play.
2026-07-01 12:55:52 +03:00
Sergey Antropoff d61a26557a feat: bundle and sync official Hysteria2 install script locally
Store install_server.sh in role files, compare SHA256 with get.hy2.sh on the control node before install/update, refresh the bundled copy when upstream changes, then copy and run it on VPS.
2026-07-01 12:00:10 +03:00
Sergey Antropoff 2d44916893 fix: disable become on localhost play and drop deprecated facts
Use now() for export timestamps and ansible_facts['system'] for browser detection. Set become: false on the localhost play to avoid sudo on local fact gathering.
2026-07-01 11:56:06 +03:00
Sergey Antropoff 3ca7dde4b2 fix: generate VPN passwords without pwgen, set EDITOR=nano
Use Ansible password lookup on the control node so install works before packages are installed on VPS and without pwgen on macOS. Export EDITOR=nano in Makefile for vault-edit.
2026-07-01 11:42:40 +03:00
Sergey Antropoff 6f96a26bed Initial commit: Ansible role for Hysteria2 VPN server deployment.
Includes install/update/uninstall playbooks, Makefile, vault-based SSH credentials, per-server and global HTML export with QR codes.
2026-07-01 02:02:58 +03:00