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:
@@ -59,18 +59,22 @@ internal/relay websocket.go — RFC6455 на stdlib; relay.go — WS
|
|||||||
internal/vncspawner кросс-ОС поиск/запуск VNC-сервера (build-теги по ОС)
|
internal/vncspawner кросс-ОС поиск/запуск VNC-сервера (build-теги по ОС)
|
||||||
internal/server HTTP-роуты, /api/status, middleware сессии, embed.FS
|
internal/server HTTP-роуты, /api/status, middleware сессии, embed.FS
|
||||||
internal/server/static встроенные ассеты (vnc.html, favicon.ico + noVNC core/app/vendor)
|
internal/server/static встроенные ассеты (vnc.html, favicon.ico + noVNC core/app/vendor)
|
||||||
|
|
||||||
|
Все пользовательские точки входа лежат в корне репозитория:
|
||||||
|
set-password.bat настройка пароля: спрашивает пароль, генерирует хэш и пишет webvnc.conf (HASH= + VNC_PASSWORD=, gitignored) — ДО синхронизации UltraVNC, чтобы веб-пароль был настроен даже если синк упадёт или UAC отменят; затем синхронизирует VNC-пароль UltraVNC (scripts/ensure-vnc-password.ps1). Если установлено задание «web-vnc» — перезапускает его через restart-autostart.bat (с elevation), чтобы живый gateway перезалил пароль; рестарт пропускается, только если пароль не изменился (PBKDF2-хэш всегда новый из-за соли, поэтому изменение детектится сравнением введённого пароля со старым VNC_PASSWORD из webvnc.conf). Саму проверку «запущен ли web-vnc.exe» делает restart-autostart.bat (elevated, надёжно видит SYSTEM-процесс).
|
||||||
|
run.bat интерактивный запуск в один клик: собирает бинарник/noVNC/VNC, читает пароль из webvnc.conf (НЕ спрашивает — если файла нет, просит сначала запустить set-password.bat); если 5900 уже занят (сервис UltraVNC) — не порождает второй VNC-сервер, а подключается к существующему
|
||||||
|
install-autostart.bat регистрирует плановое задание «web-vnc» (schtasks /SC ONSTART /RU SYSTEM /RL HIGHEST), запускающее scripts/autostart-run.bat при загрузке ОС; запускать от админа (самопрос elevation); требует уже созданный webvnc.conf.
|
||||||
|
uninstall-autostart.bat удаляет плановое задание «web-vnc» (от админа).
|
||||||
|
restart-autostart.bat перезапускает задание «web-vnc» (от админа, auto-elevate): проверяет tasklist, запущен ли web-vnc.exe — если да, делает schtasks /End + пауза 2 c + schtasks /Run; если нет — только schtasks /Run. Вызывается из set-password.bat, или вручную.
|
||||||
|
open-firewall.bat открыть порт 8080 в Windows Firewall (от админа, один раз).
|
||||||
|
webvnc.conf создаётся set-password.bat; содержит HASH=<pbkdf2-хэш> и VNC_PASSWORD=<тот же пароль для noVNC>; читается run.bat и scripts/autostart-run.bat; в git не коммитится (.gitignore).
|
||||||
|
|
||||||
|
Внутренние помощники (вызываются другими скриптами, не пользователем) — в scripts/:
|
||||||
|
scripts/autostart-run.bat НЕинтерактивный launcher для автостарта (нет пауз/запросов): читает webvnc.conf, ищет только ЛОКАЛЬНЫЙ VNC-сервер (ничего не качает), запускает web-vnc.exe в foreground. Вызывается плановым заданием из install-autostart.bat.
|
||||||
|
scripts/ensure-vnc-password.ps1 синхронизирует VNC-пароль UltraVNC с введённым (пишет только при несовпадении; UAC только при смене) — вызывается из set-password.bat.
|
||||||
scripts/get-novnc.{ps1,sh} скачать noVNC
|
scripts/get-novnc.{ps1,sh} скачать noVNC
|
||||||
scripts/get-vnc.ps1 скачать портативный UltraVNC в vnc/ (с верификацией zip)
|
scripts/get-vnc.ps1 скачать портативный UltraVNC в vnc/ (с верификацией zip)
|
||||||
scripts/list-ips.ps1 список IPv4 машины (используется run.bat)
|
scripts/list-ips.ps1 список IPv4 машины (используется run.bat)
|
||||||
scripts/open-firewall.bat открыть порт 8080 в Windows Firewall (от админа)
|
|
||||||
scripts/ensure-vnc-password.ps1 синхронизирует VNC-пароль UltraVNC с введённым (пишет только при несовпадении; UAC только при смене) — вызывается из set-password.bat
|
|
||||||
set-password.bat настройка пароля: спрашивает пароль, синхронизирует VNC-пароль UltraVNC (ensure-vnc-password.ps1), генерирует хэш и пишет webvnc.conf (HASH= + VNC_PASSWORD=, gitignored). Если установлено задание «web-vnc» — перезапускает его через scripts/restart-autostart.bat (с elevation), чтобы живый gateway перезалил пароль; рестарт пропускается, только если пароль не изменился (PBKDF2-хэш всегда новый из-за соли, поэтому изменение детектится сравнением введённого пароля со старым VNC_PASSWORD из webvnc.conf). Саму проверку «запущен ли web-vnc.exe» делает restart-autostart.bat (elevated, надёжно видит SYSTEM-процесс).
|
|
||||||
webvnc.conf создаётся set-password.bat; содержит HASH=<pbkdf2-хэш> и VNC_PASSWORD=<тот же пароль для noVNC>; читается run.bat и scripts/autostart-run.bat; в git не коммитится (.gitignore).
|
|
||||||
run.bat интерактивный запуск в один клик: собирает бинарник/noVNC/VNC, читает пароль из webvnc.conf (НЕ спрашивает — если файла нет, просит сначала запустить set-password.bat); если 5900 уже занят (сервис UltraVNC) — не порождает второй VNC-сервер, а подключается к существующему
|
|
||||||
scripts/autostart-run.bat НЕинтерактивный launcher для автостарта (нет пауз/запросов): читает webvnc.conf, ищет только ЛОКАЛЬНЫЙ VNC-сервер (ничего не качает), запускает web-vnc.exe в foreground. Вызывается плановым заданием из install-autostart.bat.
|
|
||||||
scripts/install-autostart.bat регистрирует плановое задание «web-vnc» (schtasks /SC ONSTART /RU SYSTEM /RL HIGHEST), запускающее scripts/autostart-run.bat при загрузке ОС; запускать от админа (самопрос elevation); требует уже созданный webvnc.conf.
|
|
||||||
scripts/uninstall-autostart.bat удаляет плановое задание «web-vnc» (от админа).
|
|
||||||
scripts/restart-autostart.bat перезапускает задание «web-vnc» (от админа, auto-elevate): проверяет tasklist, запущен ли web-vnc.exe — если да, делает schtasks /End + пауза 2 c + schtasks /Run; если нет — только schtasks /Run. Вызывается из set-password.bat, или вручную.
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Соглашения и подводные камни
|
## Соглашения и подводные камни
|
||||||
@@ -125,11 +129,12 @@ scripts/restart-autostart.bat перезапускает задание «web-vn
|
|||||||
Чтобы gateway поднимался сам при включении машины (а не интерактивно через `run.bat`),
|
Чтобы gateway поднимался сам при включении машины (а не интерактивно через `run.bat`),
|
||||||
пароль должен быть настроен заранее и не запрашиваться при старте. Поэтому процедура:
|
пароль должен быть настроен заранее и не запрашиваться при старте. Поэтому процедура:
|
||||||
|
|
||||||
1. **Один раз** запустить `set-password.bat` — он спрашивает пароль, синхронизирует
|
1. **Один раз** запустить `set-password.bat` — он спрашивает пароль, генерирует хэш
|
||||||
VNC-пароль UltraVNC (`scripts/ensure-vnc-password.ps1`), генерирует хэш и пишет
|
и пишет `webvnc.conf` (HASH + VNC_PASSWORD), а уже ПОТОМ синхронизирует VNC-пароль
|
||||||
`webvnc.conf` (HASH + VNC_PASSWORD). Файл `webvnc.conf` — **секрет**, в git не
|
UltraVNC (`scripts/ensure-vnc-password.ps1`) — так веб-пароль оказывается настроен,
|
||||||
|
даже если синк упадёт или UAC отменят. Файл `webvnc.conf` — **секрет**, в git не
|
||||||
коммитится (см. `.gitignore`).
|
коммитится (см. `.gitignore`).
|
||||||
2. **Один раз (от админа)** запустить `scripts/install-autostart.bat` — регистрирует
|
2. **Один раз (от админа)** запустить `install-autostart.bat` — регистрирует
|
||||||
плановое задание `web-vnc` через `schtasks /Create /SC ONSTART /RU SYSTEM /RL HIGHEST`,
|
плановое задание `web-vnc` через `schtasks /Create /SC ONSTART /RU SYSTEM /RL HIGHEST`,
|
||||||
которое при загрузке ОС запускает `scripts/autostart-run.bat`.
|
которое при загрузке ОС запускает `scripts/autostart-run.bat`.
|
||||||
3. `scripts/autostart-run.bat` — **неинтерактивный** launcher: читает `webvnc.conf`,
|
3. `scripts/autostart-run.bat` — **неинтерактивный** launcher: читает `webvnc.conf`,
|
||||||
@@ -139,7 +144,7 @@ scripts/restart-autostart.bat перезапускает задание «web-vn
|
|||||||
процесс живым). Если `127.0.0.1:5900` уже слушает (сервис UltraVNC) — запускает
|
процесс живым). Если `127.0.0.1:5900` уже слушает (сервис UltraVNC) — запускает
|
||||||
**без** `--spawn` и **без** `--spawn-command`, подключаясь к существующему серверу
|
**без** `--spawn` и **без** `--spawn-command`, подключаясь к существующему серверу
|
||||||
(иначе попытка породить второй VNC-сервер конфликтовала бы с сервисом).
|
(иначе попытка породить второй VNC-сервер конфликтовала бы с сервисом).
|
||||||
4. Снять автостарт: `scripts/uninstall-autostart.bat` (от админа) — `schtasks /Delete`.
|
4. Снять автостарт: `uninstall-autostart.bat` (от админа) — `schtasks /Delete`.
|
||||||
|
|
||||||
Замечания:
|
Замечания:
|
||||||
- Задание выполняется от `SYSTEM`, поэтому VNC-сервер, отдавающий рабочий стол, должен
|
- Задание выполняется от `SYSTEM`, поэтому VNC-сервер, отдавающий рабочий стол, должен
|
||||||
@@ -149,7 +154,7 @@ scripts/restart-autostart.bat перезапускает задание «web-vn
|
|||||||
- **Смена пароля на ходу:** `web-vnc.exe` читает хэш и `WEBVNC_VNC_PASSWORD` **один раз
|
- **Смена пароля на ходу:** `web-vnc.exe` читает хэш и `WEBVNC_VNC_PASSWORD` **один раз
|
||||||
при старте** (`config.Parse`/`auth.New`) и никогда не перечитывает `webvnc.conf`. Поэтому
|
при старте** (`config.Parse`/`auth.New`) и никогда не перечитывает `webvnc.conf`. Поэтому
|
||||||
`set-password.bat` после перезаписи `webvnc.conf` сам перезапускает задание «web-vnc» через
|
`set-password.bat` после перезаписи `webvnc.conf` сам перезапускает задание «web-vnc» через
|
||||||
`scripts\restart-autostart.bat` (elevation): тот проверяет `tasklist`, запущен ли
|
`restart-autostart.bat` (elevation): тот проверяет `tasklist`, запущен ли
|
||||||
`web-vnc.exe`, и делает `schtasks /End` + `/Run` (или только `/Run`, если процесс не
|
`web-vnc.exe`, и делает `schtasks /End` + `/Run` (или только `/Run`, если процесс не
|
||||||
запущен). Рестарт пропускается, если пароль не изменился (детект по старому `VNC_PASSWORD`
|
запущен). Рестарт пропускается, если пароль не изменился (детект по старому `VNC_PASSWORD`
|
||||||
из `webvnc.conf`, т.к. PBKDF2-хэш всегда новый из-за соли). Если задание не установлено —
|
из `webvnc.conf`, т.к. PBKDF2-хэш всегда новый из-за соли). Если задание не установлено —
|
||||||
|
|||||||
@@ -27,9 +27,10 @@ gateway без запросов.
|
|||||||
```bat
|
```bat
|
||||||
set-password.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 байт).
|
Используйте ASCII-пароль длиной до 8 символов (VNC-пароль = первые 8 байт).
|
||||||
|
|
||||||
2. **Запустите gateway**:
|
2. **Запустите gateway**:
|
||||||
@@ -50,17 +51,17 @@ gateway без запросов.
|
|||||||
|
|
||||||
```bat
|
```bat
|
||||||
set-password.bat :: один раз: пароль -> webvnc.conf
|
set-password.bat :: один раз: пароль -> webvnc.conf
|
||||||
scripts\install-autostart.bat :: один раз (от админа): плановое задание «web-vnc»
|
install-autostart.bat :: один раз (от админа): плановое задание «web-vnc»
|
||||||
```
|
```
|
||||||
`install-autostart.bat` регистрирует через `schtasks` задание (`ONSTART`, `SYSTEM`,
|
`install-autostart.bat` регистрирует через `schtasks` задание (`ONSTART`, `SYSTEM`,
|
||||||
`HIGHEST`), которое при загрузке запускает `scripts\autostart-run.bat` —
|
`HIGHEST`), которое при загрузке запускает `scripts\autostart-run.bat` —
|
||||||
неинтерактивный launcher, читающий `webvnc.conf` и не качающий ничего на старте.
|
неинтерактивный launcher, читающий `webvnc.conf` и не качающий ничего на старте.
|
||||||
Запустить сразу без перезагрузки: `schtasks /Run /TN "web-vnc"`.
|
Запустить сразу без перезагрузки: `schtasks /Run /TN "web-vnc"`.
|
||||||
Снять автостарт: `scripts\uninstall-autostart.bat` (от админа).
|
Снять автостарт: `uninstall-autostart.bat` (от админа).
|
||||||
|
|
||||||
**Смена пароля:** `web-vnc.exe` читает пароль из `webvnc.conf` только при старте и не
|
**Смена пароля:** `web-vnc.exe` читает пароль из `webvnc.conf` только при старте и не
|
||||||
перечитывает его в runtime. Поэтому `set-password.bat` (если задание «web-vnc» установлено)
|
перечитывает его в runtime. Поэтому `set-password.bat` (если задание «web-vnc» установлено)
|
||||||
перезапускает его через `scripts\restart-autostart.bat` (с elevation) — тот проверяет,
|
перезапускает его через `restart-autostart.bat` (с elevation) — тот проверяет,
|
||||||
запущен ли `web-vnc.exe` (если да — стоп + старт, если нет — только старт). Рестарт
|
запущен ли `web-vnc.exe` (если да — стоп + старт, если нет — только старт). Рестарт
|
||||||
пропускается, если пароль не изменился. Для интерактивного `run.bat` просто перезапустите
|
пропускается, если пароль не изменился. Для интерактивного `run.bat` просто перезапустите
|
||||||
его вручную.
|
его вручную.
|
||||||
@@ -190,7 +191,7 @@ web-vnc --gen-hash "ваш-пароль"
|
|||||||
По умолчанию Windows Firewall блокирует входящие подключения. Один раз
|
По умолчанию Windows Firewall блокирует входящие подключения. Один раз
|
||||||
выполните от имени администратора:
|
выполните от имени администратора:
|
||||||
```bat
|
```bat
|
||||||
scripts\open-firewall.bat
|
open-firewall.bat
|
||||||
```
|
```
|
||||||
Это откроет входящий TCP-порт 8080. (`run.bat` выводит адреса и подсказку.)
|
Это откроет входящий TCP-порт 8080. (`run.bat` выводит адреса и подсказку.)
|
||||||
|
|
||||||
@@ -206,17 +207,22 @@ internal/relay WebSocket на stdlib (RFC 6455) + мост WS↔TCP
|
|||||||
internal/vncspawner кросс-ОС поиск и запуск VNC-сервера
|
internal/vncspawner кросс-ОС поиск и запуск VNC-сервера
|
||||||
internal/server HTTP-роуты, middleware сессии, встроенная статика
|
internal/server HTTP-роуты, middleware сессии, встроенная статика
|
||||||
internal/server/static встроенные веб-ассеты (vnc.html + core/app/vendor noVNC)
|
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-novnc.{ps1,sh} скачать noVNC во встроенную статику
|
||||||
scripts/get-vnc.ps1 скачать портативный VNC-сервер (UltraVNC) в папку vnc/
|
scripts/get-vnc.ps1 скачать портативный VNC-сервер (UltraVNC) в папку vnc/
|
||||||
scripts/list-ips.ps1 список IPv4 машины (используется run.bat)
|
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» (чтобы применить новый пароль) — от админа
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Кросс-компиляция под другую ОС
|
## Кросс-компиляция под другую ОС
|
||||||
|
|||||||
@@ -43,6 +43,6 @@ echo.
|
|||||||
echo Done. web-vnc will start automatically on every boot.
|
echo Done. web-vnc will start automatically on every boot.
|
||||||
echo Start it now (without rebooting):
|
echo Start it now (without rebooting):
|
||||||
echo schtasks /Run /TN "%TASK%"
|
echo schtasks /Run /TN "%TASK%"
|
||||||
echo Remove it with: scripts\uninstall-autostart.bat
|
echo Remove it with: uninstall-autostart.bat
|
||||||
echo.
|
echo.
|
||||||
pause
|
pause
|
||||||
@@ -25,7 +25,7 @@ set "TASK=web-vnc"
|
|||||||
|
|
||||||
schtasks /Query /TN "%TASK%" >nul 2>nul
|
schtasks /Query /TN "%TASK%" >nul 2>nul
|
||||||
if errorlevel 1 (
|
if errorlevel 1 (
|
||||||
echo [error] Task "%TASK%" is not installed. Run scripts\install-autostart.bat first.
|
echo [error] Task "%TASK%" is not installed. Run install-autostart.bat first.
|
||||||
pause
|
pause
|
||||||
exit /b 1
|
exit /b 1
|
||||||
)
|
)
|
||||||
@@ -102,7 +102,7 @@ echo http://localhost:8080
|
|||||||
for /f "delims=" %%a in ('powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0scripts\list-ips.ps1"') do echo http://%%a:8080
|
for /f "delims=" %%a in ('powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0scripts\list-ips.ps1"') do echo http://%%a:8080
|
||||||
echo.
|
echo.
|
||||||
echo If it does not open from another machine, run once as administrator:
|
echo If it does not open from another machine, run once as administrator:
|
||||||
echo scripts\open-firewall.bat
|
echo open-firewall.bat
|
||||||
echo.
|
echo.
|
||||||
|
|
||||||
REM --- 6. Launch ---
|
REM --- 6. Launch ---
|
||||||
|
|||||||
+20
-17
@@ -1,16 +1,17 @@
|
|||||||
@echo off
|
@echo off
|
||||||
REM ============================================================
|
REM ============================================================
|
||||||
REM set-password.bat - setup of the web access password.
|
REM set-password.bat - setup of the web access password.
|
||||||
REM Asks for the password, syncs the UltraVNC service password,
|
REM Asks for the password, generates a hash and saves it together
|
||||||
REM generates a hash and saves both to webvnc.conf (gitignored).
|
REM with the VNC password to webvnc.conf (gitignored). AFTER that
|
||||||
REM After this, run.bat and the autostart task start without asking.
|
REM (so the web password is configured even if the next step fails)
|
||||||
|
REM it syncs the UltraVNC service password via ensure-vnc-password.ps1.
|
||||||
REM
|
REM
|
||||||
REM If the "web-vnc" autostart task is installed, this script also
|
REM If the "web-vnc" autostart task is installed, this script also
|
||||||
REM restarts it (elevated, via scripts\restart-autostart.bat) so the
|
REM restarts it (elevated, via restart-autostart.bat) so the
|
||||||
REM running gateway reloads the new password. The restart is skipped
|
REM running gateway reloads the new password. The restart is skipped
|
||||||
REM only when the password did not actually change (the running gateway
|
REM only when the password did not actually change. restart-autostart.bat
|
||||||
REM already accepts it). restart-autostart.bat checks whether
|
REM checks whether web-vnc.exe is running and stops+starts it, or just
|
||||||
REM web-vnc.exe is running and stops+starts it, or just starts it.
|
REM starts it.
|
||||||
REM ============================================================
|
REM ============================================================
|
||||||
cd /d "%~dp0"
|
cd /d "%~dp0"
|
||||||
|
|
||||||
@@ -52,12 +53,7 @@ if "%PW%"=="" (
|
|||||||
goto getpw
|
goto getpw
|
||||||
)
|
)
|
||||||
|
|
||||||
REM --- 4. Sync UltraVNC service password (UAC only if it differs) ---
|
REM --- 4. Generate hash ---
|
||||||
echo Syncing UltraVNC password with the one entered ...
|
|
||||||
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0scripts\ensure-vnc-password.ps1" -Password "%PW%"
|
|
||||||
if errorlevel 1 echo [warning] Could not sync the UltraVNC password - continuing.
|
|
||||||
|
|
||||||
REM --- 5. Generate hash ---
|
|
||||||
echo Generating password hash ...
|
echo Generating password hash ...
|
||||||
set "HASH="
|
set "HASH="
|
||||||
for /f "delims=" %%i in ('web-vnc.exe --gen-hash "%PW%"') do set "HASH=%%i"
|
for /f "delims=" %%i in ('web-vnc.exe --gen-hash "%PW%"') do set "HASH=%%i"
|
||||||
@@ -67,12 +63,19 @@ if "%HASH%"=="" (
|
|||||||
exit /b 1
|
exit /b 1
|
||||||
)
|
)
|
||||||
|
|
||||||
REM --- 6. Save to webvnc.conf (overwrite) ---
|
REM --- 5. Save to webvnc.conf (overwrite) ---
|
||||||
|
REM Done BEFORE the UltraVNC sync so the web password is configured
|
||||||
|
REM even if the sync below fails or is cancelled (UAC).
|
||||||
echo HASH=%HASH%> "webvnc.conf"
|
echo HASH=%HASH%> "webvnc.conf"
|
||||||
echo VNC_PASSWORD=%PW%>> "webvnc.conf"
|
echo VNC_PASSWORD=%PW%>> "webvnc.conf"
|
||||||
set "HASH="
|
set "HASH="
|
||||||
echo Saved to webvnc.conf.
|
echo Saved to webvnc.conf.
|
||||||
|
|
||||||
|
REM --- 6. Sync UltraVNC service password (UAC only if it differs) ---
|
||||||
|
echo Syncing UltraVNC password with the one entered ...
|
||||||
|
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0scripts\ensure-vnc-password.ps1" -Password "%PW%"
|
||||||
|
if errorlevel 1 echo [warning] Could not sync the UltraVNC password - the web password is still saved.
|
||||||
|
|
||||||
REM --- 7. Apply to the running gateway (if the autostart task is installed) ---
|
REM --- 7. Apply to the running gateway (if the autostart task is installed) ---
|
||||||
REM web-vnc.exe reads the hash + VNC password only at startup, so a
|
REM web-vnc.exe reads the hash + VNC password only at startup, so a
|
||||||
REM restart is required for the new password to take effect.
|
REM restart is required for the new password to take effect.
|
||||||
@@ -86,20 +89,20 @@ if not defined OLD_PW goto do_restart
|
|||||||
if /i not "%OLD_PW%"=="%PW%" goto do_restart
|
if /i not "%OLD_PW%"=="%PW%" goto do_restart
|
||||||
echo.
|
echo.
|
||||||
echo Password unchanged - the running gateway keeps accepting it. No restart needed.
|
echo Password unchanged - the running gateway keeps accepting it. No restart needed.
|
||||||
echo If the gateway is not running, start it with: scripts\restart-autostart.bat ^(admin^)
|
echo If the gateway is not running, start it with: restart-autostart.bat ^(admin^)
|
||||||
goto cleanup
|
goto cleanup
|
||||||
|
|
||||||
:do_restart
|
:do_restart
|
||||||
echo.
|
echo.
|
||||||
echo Applying the new password to the "web-vnc" task ^(needs admin^) ...
|
echo Applying the new password to the "web-vnc" task ^(needs admin^) ...
|
||||||
powershell -NoProfile -Command "Start-Process -FilePath '%~dp0scripts\restart-autostart.bat' -Verb RunAs -Wait"
|
powershell -NoProfile -Command "Start-Process -FilePath '%~dp0restart-autostart.bat' -Verb RunAs -Wait"
|
||||||
goto cleanup
|
goto cleanup
|
||||||
|
|
||||||
:no_task
|
:no_task
|
||||||
echo.
|
echo.
|
||||||
echo Autostart task "web-vnc" is not installed.
|
echo Autostart task "web-vnc" is not installed.
|
||||||
echo To start on every boot, run once as administrator:
|
echo To start on every boot, run once as administrator:
|
||||||
echo scripts\install-autostart.bat
|
echo install-autostart.bat
|
||||||
|
|
||||||
:cleanup
|
:cleanup
|
||||||
set "PW="
|
set "PW="
|
||||||
|
|||||||
Reference in New Issue
Block a user