polish: UTF-8 batch scripts, drop redundant set-vnc-password, robust vnc password probe
- run.bat / open-firewall.bat: UTF-8 (no BOM) + chcp 65001 instead of cp866/chcp 866. - scripts/set-vnc-password.bat: removed (run.bat syncs the UltraVNC password via ensure-vnc-password.ps1). - scripts/ensure-vnc-password.ps1: use a real RFB VNC-Auth probe to 127.0.0.1:5900 to decide if the password already matches (no UAC when it does); set via createpassword/setpasswd + service restart only when it differs. Works for any password length (no stored-password encoding assumptions). - AGENTS.md: .bat encoding convention updated to UTF-8/chcp 65001; drop set-vnc-password refs.
This commit is contained in:
@@ -1,44 +1,44 @@
|
||||
@echo off
|
||||
REM ============================================================
|
||||
REM web-vnc launcher - § ¯ã᪠¢ ®¤¨ ª«¨ª. ‘¯à 訢 ¥â ⮫쪮 ¯ ஫ì.
|
||||
REM web-vnc launcher - запуск в один клик. Спрашивает только пароль.
|
||||
REM ============================================================
|
||||
chcp 866 >nul
|
||||
chcp 65001 >nul
|
||||
cd /d "%~dp0"
|
||||
|
||||
echo.
|
||||
echo === web-vnc: VNC ¢ ¡à 㧥ॠ===
|
||||
echo === web-vnc: VNC в браузере ===
|
||||
echo.
|
||||
|
||||
REM --- 1. �¨ ਪ ---
|
||||
REM --- 1. Бинарник ---
|
||||
if exist "web-vnc.exe" goto havebin
|
||||
where go >nul 2>nul
|
||||
if not errorlevel 1 goto dogobuild
|
||||
echo [®è¨¡ª ] web-vnc.exe ¥ ©¤¥, Go ¥ ãáâ ®¢«¥.
|
||||
echo “áâ ®¢¨â¥ Go á https://go.dev/dl/ «¨¡® ¯®«®¦¨â¥ ᮡà ë© web-vnc.exe à冷¬.
|
||||
echo [ошибка] web-vnc.exe не найден, а Go не установлен.
|
||||
echo Установите Go с https://go.dev/dl/ либо положите собранный web-vnc.exe рядом.
|
||||
echo.
|
||||
pause
|
||||
exit /b 1
|
||||
:dogobuild
|
||||
echo ‘®¡¨à î web-vnc.exe ...
|
||||
echo Собираю web-vnc.exe ...
|
||||
go build -o web-vnc.exe .\cmd\web-vnc
|
||||
if errorlevel 1 goto buildfail
|
||||
:havebin
|
||||
|
||||
REM --- 2. noVNC-ª«¨¥â ---
|
||||
REM --- 2. noVNC-клиент ---
|
||||
if exist "internal\server\static\core\rfb.js" goto havenovnc
|
||||
echo noVNC-ª«¨¥â ¥éñ ¥ ¢áâ஥. �ëâ îáì ᪠ç âì ...
|
||||
echo noVNC-клиент ещё не встроен. Пытаюсь скачать ...
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0scripts\get-novnc.ps1"
|
||||
if errorlevel 1 goto novncfail
|
||||
echo �¥à¥á®¡¨à î á noVNC ...
|
||||
echo Пересобираю с noVNC ...
|
||||
go build -o web-vnc.exe .\cmd\web-vnc
|
||||
goto havenovnc
|
||||
:novncfail
|
||||
echo [¯à¥¤ã¯à¥¦¤¥¨¥] �¥ 㤠«®áì ᪠ç âì noVNC (¥â ¨â¥à¥â ?).
|
||||
echo ‚ ¡à 㧥ॠ®âªà®¥âáï áâà ¨æ á ¯®¤áª §ª®©. �®¢â®à¨â¥ ¯®§¦¥: scripts\get-novnc.ps1
|
||||
echo [предупреждение] Не удалось скачать noVNC (нет интернета?).
|
||||
echo В браузере откроется страница с подсказкой. Повторите позже: scripts\get-novnc.ps1
|
||||
echo.
|
||||
:havenovnc
|
||||
|
||||
REM --- 3. VNC-á¥à¢¥à (¯®¨áª/§ £à㧪 ) ---
|
||||
REM --- 3. VNC-сервер (поиск/загрузка) ---
|
||||
set "SPAWNARGS="
|
||||
set "SPAWN_CMD="
|
||||
if exist "vnc\winvnc.exe" goto uselocalvnc
|
||||
@@ -49,7 +49,7 @@ if exist "C:\Program Files\uvnc bvba\UltraVNC\winvnc.exe" goto autodetectvnc
|
||||
if exist "C:\Program Files (x86)\uvnc bvba\UltraVNC\winvnc.exe" goto autodetectvnc
|
||||
if exist "C:\Program Files\TightVNC\tvnserver.exe" goto autodetectvnc
|
||||
if exist "C:\Program Files (x86)\TightVNC\tvnserver.exe" goto autodetectvnc
|
||||
echo VNC-á¥à¢¥à ¥ ©¤¥. �ëâ îáì ᪠ç âì ¯®àâ â¨¢ë© UltraVNC ...
|
||||
echo VNC-сервер не найден. Пытаюсь скачать портативный UltraVNC ...
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0scripts\get-vnc.ps1"
|
||||
if errorlevel 1 goto novncserver
|
||||
if exist "vnc\winvnc.exe" goto uselocalvnc
|
||||
@@ -59,75 +59,75 @@ goto novncserver
|
||||
if exist "vnc\winvnc.exe" set "SPAWN_CMD=vnc\winvnc.exe -run"
|
||||
if exist "vnc\tvnserver.exe" if not defined SPAWN_CMD set "SPAWN_CMD=vnc\tvnserver.exe -run"
|
||||
set "SPAWNARGS=--spawn-command "%SPAWN_CMD%""
|
||||
echo � ©¤¥ «®ª «ìë© VNC-á¥à¢¥à: %SPAWN_CMD%
|
||||
echo Найден локальный VNC-сервер: %SPAWN_CMD%
|
||||
goto vncdone
|
||||
:autodetectvnc
|
||||
echo VNC-á¥à¢¥à ©¤¥ ¢ á¨á⥬¥ ( ¢â®-®¯à¥¤¥«¥¨¥ ¯à¨ § ¯ã᪥).
|
||||
echo VNC-сервер найден в системе (авто-определение при запуске).
|
||||
goto vncdone
|
||||
:novncserver
|
||||
echo [¯à¥¤ã¯à¥¦¤¥¨¥] VNC-á¥à¢¥à ¥ 㤠«®áì ¯®«ãç¨âì.
|
||||
echo �¥§ VNC-á¥à¢¥à à ¡®ç¨© á⮫ ¥ ¡ã¤¥â âà ᫨஢ âìáï.
|
||||
echo “áâ ®¢¨â¥ UltraVNC/TightVNC ¢àãçãî ¨«¨ ¯®¢â®à¨â¥: scripts\get-vnc.ps1
|
||||
echo [предупреждение] VNC-сервер не удалось получить.
|
||||
echo Без VNC-сервера рабочий стол не будет транслироваться.
|
||||
echo Установите UltraVNC/TightVNC вручную или повторите: scripts\get-vnc.ps1
|
||||
echo.
|
||||
:vncdone
|
||||
|
||||
REM --- 4. � ஫ì ---
|
||||
REM --- 4. Пароль ---
|
||||
:getpw
|
||||
set "PW="
|
||||
set /p "PW=‚¢¥¤¨â¥ ¯ à®«ì ¤®áâ㯠: "
|
||||
set /p "PW=Введите пароль доступа: "
|
||||
if "%PW%"=="" goto emptypw
|
||||
goto gotpw
|
||||
:emptypw
|
||||
echo � à®«ì ¥ ¬®¦¥â ¡ëâì ¯ãáâë¬.
|
||||
echo Пароль не может быть пустым.
|
||||
goto getpw
|
||||
:gotpw
|
||||
|
||||
REM --- 4b. Sync UltraVNC password with the one entered (only when it differs) ---
|
||||
echo ‘¨åந§¨àãî ¯ ஫ì UltraVNC á ¢¢¥¤ñë¬. �ਠ¥á®¢¯ ¤¥¨¨ § ¯à®á¨â ¯à ¢ ¤¬¨¨áâà â®à ...
|
||||
echo Синхронизирую пароль UltraVNC с введённым. При несовпадении запросит права администратора...
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0scripts\ensure-vnc-password.ps1" -Password "%PW%"
|
||||
if errorlevel 1 echo [¯à¥¤ã¯à¥¦¤¥¨¥] �¥ 㤠«®áì á¨åந§¨à®¢ âì ¯ ஫ì UltraVNC - ¯à®¤®«¦ î.
|
||||
if errorlevel 1 echo [предупреждение] Не удалось синхронизировать пароль UltraVNC - продолжаю.
|
||||
|
||||
REM --- 5. •íè ¯ ஫ï + â®â ¦¥ ¯ à®«ì ¤«ï VNC-á¥à¢¥à ---
|
||||
echo ƒ¥¥à¨àãî åíè ¯ ஫ï ...
|
||||
REM --- 5. Хэш пароля + тот же пароль для VNC-сервера ---
|
||||
echo Генерирую хэш пароля ...
|
||||
for /f "delims=" %%i in ('web-vnc.exe --gen-hash "%PW%"') do set "HASH=%%i"
|
||||
if "%HASH%"=="" goto hashfail
|
||||
REM ’®â ¦¥ ¯ à®«ì ¡ã¤¥â ¢â®¬ â¨ç¥áª¨ ¯¥à¥¤ noVNC ¤«ï ¢â®à¨§ 樨 VNC-á¥à¢¥à¥.
|
||||
REM Тот же пароль будет автоматически передан noVNC для авторизации на VNC-сервере.
|
||||
set "WEBVNC_VNC_PASSWORD=%PW%"
|
||||
set "PW="
|
||||
|
||||
REM --- 6. „®áâã¯ë¥ ¤à¥á ---
|
||||
REM --- 6. Доступные адреса ---
|
||||
echo.
|
||||
echo === €¤à¥á ¤«ï ¯®¤ª«î票ï (¯®àâ 8080) ===
|
||||
echo === Адреса для подключения (порт 8080) ===
|
||||
echo http://localhost:8080
|
||||
for /f "delims=" %%a in ('powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0scripts\list-ips.ps1"') do echo http://%%a:8080
|
||||
echo.
|
||||
echo …᫨ á ¤à㣮© ¬ è¨ë ¥ ®âªàë¢ ¥âáï - ®¤¨ à § ¢ë¯®«¨â¥ ®â ¨¬¥¨
|
||||
echo ¤¬¨¨áâà â®à : scripts\open-firewall.bat
|
||||
echo Если с другой машины не открывается - один раз выполните от имени
|
||||
echo администратора: scripts\open-firewall.bat
|
||||
echo.
|
||||
|
||||
REM --- 7. ‡ ¯ã᪠---
|
||||
echo ‡ ¯ã᪠î web-vnc http://localhost:8080
|
||||
echo Žáâ ®¢¨âì: Ctrl+C
|
||||
REM --- 7. Запуск ---
|
||||
echo Запускаю web-vnc на http://localhost:8080
|
||||
echo Остановить: Ctrl+C
|
||||
echo.
|
||||
REM --- 6b. 5900 already listening? -> do NOT spawn a 2nd VNC server (avoid conflict with the UltraVNC service) ---
|
||||
set "SPAWNFLAG=--spawn"
|
||||
powershell -NoProfile -Command "try{$c=New-Object Net.Sockets.TcpClient('127.0.0.1',5900);$c.Close();exit 0}catch{exit 1}"
|
||||
if not errorlevel 1 (
|
||||
echo VNC-á¥à¢¥à 㦥 á«ãè ¥â 127.0.0.1:5900 - ¯®¤ª«îç îáì ª ¥¬ã ¡¥§ --spawn.
|
||||
echo VNC-сервер уже слушает 127.0.0.1:5900 - подключаюсь к нему без --spawn.
|
||||
set "SPAWNFLAG="
|
||||
)
|
||||
web-vnc.exe --password-hash "%HASH%" %SPAWNARGS% %SPAWNFLAG% --listen :8080
|
||||
echo.
|
||||
echo ‘¥à¢¥à ®áâ ®¢«¥.
|
||||
echo Сервер остановлен.
|
||||
pause
|
||||
exit /b
|
||||
|
||||
:buildfail
|
||||
echo ‘¡®àª ¥ 㤠« áì.
|
||||
echo Сборка не удалась.
|
||||
pause
|
||||
exit /b 1
|
||||
|
||||
:hashfail
|
||||
echo [®è¨¡ª ] �¥ 㤠«®áì ᣥ¥à¨à®¢ âì åíè ¯ ஫ï.
|
||||
echo [ошибка] Не удалось сгенерировать хэш пароля.
|
||||
pause
|
||||
exit /b 1
|
||||
Reference in New Issue
Block a user