refactor: move user-facing scripts to repo root; fix set-password ordering

- install-autostart.bat, uninstall-autostart.bat, restart-autostart.bat,
  open-firewall.bat moved from scripts/ to the repo root (next to run.bat and
  set-password.bat). Internal helpers (autostart-run.bat, ensure-vnc-password.ps1,
  get-novnc.*, get-vnc.ps1, list-ips.ps1) stay in scripts/. autostart-run.bat is
  kept in scripts/ because the scheduled task /TR points at it; moving it would
  break already-installed tasks.
- Updated all references (set-password.bat, run.bat, install/restart-autostart.bat,
  AGENTS.md, README.md).
- set-password.bat: write webvnc.conf BEFORE the UltraVNC sync so the web password
  is configured even if ensure-vnc-password.ps1 fails / its UAC is dismissed
  (previously 'Password is not configured' from install-autostart.bat when the
  sync blocked before conf was written).
- AGENTS.md / README.md structure + autostart sections updated for the new layout.
This commit is contained in:
Codex
2026-08-05 15:38:39 +03:00
parent 754f77a8d0
commit 9b8ee94dd5
8 changed files with 64 additions and 50 deletions
+21 -15
View File
@@ -27,9 +27,10 @@ gateway без запросов.
```bat
set-password.bat
```
Спросит пароль доступа, синхронизирует им пароль UltraVNC-сервиса
(`scripts\ensure-vnc-password.ps1`, UAC только при смене), сгенерирует хэш и
сохранит его вместе с паролем в `webvnc.conf` (секрет, в git не коммитится).
Спросит пароль доступа, сгенерирует хэш и сохранит его вместе с паролем в
`webvnc.conf` (секрет, в git не коммитится), а затем синхронизирует им пароль
UltraVNC-сервиса (`scripts\ensure-vnc-password.ps1`, UAC только при смене).
Веб-пароль оказывается настроен, даже если синк UltraVNC упадёт или UAC отменят.
Используйте ASCII-пароль длиной до 8 символов (VNC-пароль = первые 8 байт).
2. **Запустите gateway**:
@@ -50,17 +51,17 @@ gateway без запросов.
```bat
set-password.bat :: один раз: пароль -> webvnc.conf
scripts\install-autostart.bat :: один раз (от админа): плановое задание «web-vnc»
install-autostart.bat :: один раз (от админа): плановое задание «web-vnc»
```
`install-autostart.bat` регистрирует через `schtasks` задание (`ONSTART`, `SYSTEM`,
`HIGHEST`), которое при загрузке запускает `scripts\autostart-run.bat` —
неинтерактивный launcher, читающий `webvnc.conf` и не качающий ничего на старте.
Запустить сразу без перезагрузки: `schtasks /Run /TN "web-vnc"`.
Снять автостарт: `scripts\uninstall-autostart.bat` (от админа).
Снять автостарт: `uninstall-autostart.bat` (от админа).
**Смена пароля:** `web-vnc.exe` читает пароль из `webvnc.conf` только при старте и не
перечитывает его в runtime. Поэтому `set-password.bat` (если задание «web-vnc» установлено)
перезапускает его через `scripts\restart-autostart.bat` (с elevation) — тот проверяет,
перезапускает его через `restart-autostart.bat` (с elevation) — тот проверяет,
запущен ли `web-vnc.exe` (если да — стоп + старт, если нет — только старт). Рестарт
пропускается, если пароль не изменился. Для интерактивного `run.bat` просто перезапустите
его вручную.
@@ -190,7 +191,7 @@ web-vnc --gen-hash "ваш-пароль"
По умолчанию Windows Firewall блокирует входящие подключения. Один раз
выполните от имени администратора:
```bat
scripts\open-firewall.bat
open-firewall.bat
```
Это откроет входящий TCP-порт 8080. (`run.bat` выводит адреса и подсказку.)
@@ -206,17 +207,22 @@ internal/relay WebSocket на stdlib (RFC 6455) + мост WS↔TCP
internal/vncspawner кросс-ОС поиск и запуск VNC-сервера
internal/server HTTP-роуты, middleware сессии, встроенная статика
internal/server/static встроенные веб-ассеты (vnc.html + core/app/vendor noVNC)
Пользовательские точки входа — в корне репозитория:
run.bat интерактивный запуск: собирает бинарник/noVNC/VNC, читает пароль из webvnc.conf (не спрашивает)
set-password.bat разовая настройка пароля -> webvnc.conf (хэш + VNC-пароль); синхронизирует UltraVNC
install-autostart.bat автостарт при загрузке ОС (schtasks ONSTART/SYSTEM) — от админа
uninstall-autostart.bat снять автостарт — от админа
restart-autostart.bat перезапустить задание «web-vnc» (чтобы применить новый пароль) — от админа
open-firewall.bat открыть порт 8080 в Windows Firewall (один раз, от админа)
webvnc.conf секрет: HASH= + VNC_PASSWORD= (создаётся set-password.bat, gitignored)
Внутренние помощники — в scripts/ (вызываются другими скриптами):
scripts/autostart-run.bat неинтерактивный launcher для автостарта (читает webvnc.conf)
scripts/ensure-vnc-password.ps1 синхронизирует VNC-пароль UltraVNC (вызывается из set-password.bat)
scripts/get-novnc.{ps1,sh} скачать noVNC во встроенную статику
scripts/get-vnc.ps1 скачать портативный VNC-сервер (UltraVNC) в папку vnc/
scripts/list-ips.ps1 список IPv4 машины (используется run.bat)
scripts/open-firewall.bat открыть порт 8080 в Windows Firewall (один раз, от админа)
run.bat интерактивный запуск: собирает бинарник/noVNC/VNC, читает пароль из webvnc.conf (не спрашивает)
set-password.bat разовая настройка пароля -> webvnc.conf (хэш + VNC-пароль); синхронизирует UltraVNC
webvnc.conf секрет: HASH= + VNC_PASSWORD= (создаётся set-password.bat, gitignored)
scripts/autostart-run.bat неинтерактивный launcher для автостарта (читает webvnc.conf)
scripts/install-autostart.bat автостарт при загрузке ОС (schtasks ONSTART/SYSTEM) — от админа
scripts/uninstall-autostart.bat снять автостарт — от админа
scripts/restart-autostart.bat перезапустить задание «web-vnc» (чтобы применить новый пароль) — от админа
```
## Кросс-компиляция под другую ОС