Add embedded favicon and suppress noVNC secure-context warning
- serve /favicon.ico outside session middleware so it loads on the login page too (was 404 via the catch-all -> requireSession redirect) - add embedded internal/server/static/favicon.ico (monitor icon) and <link rel=icon> on the login page and vnc.html - in vnc.html wrap console.error before importing core/rfb.js to drop only the harmless 'noVNC requires a secure context (TLS). Expect crashes!' line (plain VNC-password auth uses pure-JS DES, not crypto.subtle); reword the now-redundant disconnect hint - update AGENTS.md with the favicon route and the secure-context note
This commit is contained in:
@@ -58,7 +58,7 @@ internal/auth PBKDF2-HMAC-SHA256, HMAC session-cookie, rate-limit
|
||||
internal/relay websocket.go — RFC6455 на stdlib; relay.go — WS<->TCP
|
||||
internal/vncspawner кросс-ОС поиск/запуск VNC-сервера (build-теги по ОС)
|
||||
internal/server HTTP-роуты, /api/status, middleware сессии, embed.FS
|
||||
internal/server/static встроенные ассеты (vnc.html + noVNC core/app/vendor)
|
||||
internal/server/static встроенные ассеты (vnc.html, favicon.ico + noVNC core/app/vendor)
|
||||
scripts/get-novnc.{ps1,sh} скачать noVNC
|
||||
scripts/get-vnc.ps1 скачать портативный UltraVNC в vnc/ (с верификацией zip)
|
||||
scripts/list-ips.ps1 список IPv4 машины (используется run.bat)
|
||||
@@ -92,6 +92,23 @@ run.bat запуск в один клик (спрашивае
|
||||
`list-ips.ps1` имеет фолбэк на `ipconfig`). Запущенный web-vnc.exe из
|
||||
фонового job может остаться «зомби» (Stop-Process иногда access denied);
|
||||
используй разные порты для тестов и по возможности запускай killable-способом.
|
||||
- **favicon.ico:** браузер запрашивает `/favicon.ico` на каждой странице
|
||||
(включая форму логина). Роут `/favicon.ico` зарегистрирован **вне** session-
|
||||
middleware (чтобы без сессии не редиректил на /login и не давал 404) и отдаёт
|
||||
встроенный `internal/server/static/favicon.ico` (иконка-монитор, коммитится;
|
||||
не входит в скачиваемые noVNC-ассеты). На логине и vnc.html есть
|
||||
`<link rel="icon" href="/favicon.ico">`.
|
||||
- **Secure context (TLS) в noVNC:** noVNC (`core/rfb.js`, `app/ui.js`) печатает
|
||||
`Log.Error("noVNC requires a secure context (TLS). Expect crashes!")` при
|
||||
`!window.isSecureContext` — т.е. на plain-http по LAN-IP. Для обычной VNC-
|
||||
password-авторизации это **безобидно**: noVNC использует чистый-JS DES из
|
||||
`core/des.js` и НЕ нуждается в `crypto.subtle`. Чтобы не пугать пользователя
|
||||
красной ошибкой в консоли, обёртка `vnc.html` ДО импорта `core/rfb.js`
|
||||
оборачивает `console.error` фильтром, гасящим **только** эту строку (всё
|
||||
остальное проходит в оригинальный `console.error`). Файлы noVNC (core/, app/,
|
||||
…) НЕ правятся — они gitignored и перезаливаются `scripts/get-novnc.*`.
|
||||
Корректный способ сделать контекст действительно secure — HTTPS (self-signed),
|
||||
но это отдельная фича; пока — фильтр в vnc.html.
|
||||
- **Hijack WebSocket:** `internal/relay` сам делает апгрейд через
|
||||
`http.Hijacker`; гейтвей НЕ использует gorilla/websocket.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user