From 7e03cfb178905ce2e53aeaa9db9ec4f90e7896e9 Mon Sep 17 00:00:00 2001 From: zarazaex69 Date: Sun, 10 May 2026 13:58:57 +0300 Subject: [PATCH] doc: add socks5 pass and user settings --- docs/fast.md | 2 ++ docs/manual.md | 21 +++++++++++++++++++ docs/settings.md | 24 ++++++++++++++++++++++ docs/uri.md | 4 ++-- internal/transport/seichannel/h264.go | 2 +- internal/transport/vp8channel/transport.go | 2 +- 6 files changed, 51 insertions(+), 4 deletions(-) diff --git a/docs/fast.md b/docs/fast.md index 19a68c9..f3c9ee3 100644 --- a/docs/fast.md +++ b/docs/fast.md @@ -258,6 +258,8 @@ SOCKS5 port [default: 8808]: Нажми Enter оба раза. Прокси поднимется на `127.0.0.1:8808`. +> **Нужна аутентификация на прокси?** Скрипт её не спрашивает. Запусти клиент вручную с флагами `-socks-user` и `-socks-pass` - см. [manual.md](manual.md) и [settings.md](settings.md). + ### Результат ``` diff --git a/docs/manual.md b/docs/manual.md index ede9bf4..b30c333 100644 --- a/docs/manual.md +++ b/docs/manual.md @@ -228,6 +228,27 @@ Room ID нужно передать клиенту. SOCKS5 server listening on 127.0.0.1:1080 ``` +Если нужно защитить прокси логином и паролем (например на машине с несколькими пользователями), добавь `-socks-user` и `-socks-pass`: + +```sh +./build/olcrtc-linux-amd64 \ + -mode cnc \ + -carrier wbstream \ + -transport datachannel \ + -id abc123xyz \ + -client-id "$CLIENT_ID" \ + -key \ + -link direct \ + -dns 1.1.1.1:53 \ + -data data \ + -socks-host 127.0.0.1 \ + -socks-port 1080 \ + -socks-user myuser \ + -socks-pass mypass +``` + +Без этих флагов аутентификация отключена - поведение прежнее. + --- ## Шаг 10: Проверить diff --git a/docs/settings.md b/docs/settings.md index c52b308..151b363 100644 --- a/docs/settings.md +++ b/docs/settings.md @@ -93,6 +93,11 @@ |------|----------|:------------:| | `-socks-host` | На каком адресе поднять SOCKS5 | `127.0.0.1` | | `-socks-port` | На каком порту поднять SOCKS5 | `1080` | +| `-socks-user` | Логин для входящих SOCKS5-подключений (необязательно) | - | +| `-socks-pass` | Пароль для входящих SOCKS5-подключений (необязательно) | - | + +Если `-socks-user` не задан - аутентификация отключена (любой локальный клиент может подключиться). +Если задан - клиент принимает только подключения с правильным логином и паролем (RFC 1929). --- @@ -165,6 +170,25 @@ ROOM_ID=$(./olcrtc -mode gen -carrier wbstream -dns 1.1.1.1:53 -amount 1 -data d -socks-host 127.0.0.1 -socks-port 1080 ``` +### wbstream + datachannel + SOCKS5 аутентификация + +```sh +# клиент с логином и паролем на прокси +./olcrtc -mode cnc -carrier wbstream -transport datachannel \ + -id "$ROOM_ID" -client-id -key -link direct -data data -dns 1.1.1.1:53 \ + -socks-host 127.0.0.1 -socks-port 1080 \ + -socks-user myuser -socks-pass mypass +``` + +Использование: +```sh +curl --socks5-hostname myuser:mypass@127.0.0.1:1080 https://icanhazip.com +# или +export all_proxy=socks5h://myuser:mypass@127.0.0.1:1080 +``` + +--- + ### telemost + vp8channel ```sh diff --git a/docs/uri.md b/docs/uri.md index cf3be90..75131a8 100644 --- a/docs/uri.md +++ b/docs/uri.md @@ -25,7 +25,7 @@ olcrtc://?@#%` — payload параметров транспорта в угловых скобках, идёт сразу после имени транспорта. Если параметры транспорту не нужны или используются defaults — блок опускается целиком. +Блок `` - payload параметров транспорта в угловых скобках, идёт сразу после имени транспорта. Если параметры транспорту не нужны или используются defaults - блок опускается целиком. --- @@ -122,7 +122,7 @@ Payload не используется. olcrtc://wbstream?datachannel@room-01#d823fa01cb3e0609b67322f7cf984c4ee2e4ce2e294936fc24ef38c9e59f4799%android-01$RU / olc free sub / IPv6 ``` -Payload не нужен — datachannel параметров не имеет. +Payload не нужен - datachannel параметров не имеет. ### Эквивалент CLI diff --git a/internal/transport/seichannel/h264.go b/internal/transport/seichannel/h264.go index 01158dd..cd3d623 100644 --- a/internal/transport/seichannel/h264.go +++ b/internal/transport/seichannel/h264.go @@ -190,7 +190,7 @@ func unescapeRBSP(rbsp []byte) []byte { func mustDecodeHex(value string) []byte { data, err := hex.DecodeString(value) if err != nil { - // Hardcoded constants — if this fires the binary is corrupt. + // Hardcoded constants - if this fires the binary is corrupt. panic(fmt.Sprintf("mustDecodeHex: invalid hardcoded constant %q: %v", value, err)) } return data diff --git a/internal/transport/vp8channel/transport.go b/internal/transport/vp8channel/transport.go index 8ddf3e2..0a49a5c 100644 --- a/internal/transport/vp8channel/transport.go +++ b/internal/transport/vp8channel/transport.go @@ -71,7 +71,7 @@ var vp8Keepalive = []byte{ // KCP data frames are disguised as valid VP8 frames so Telemost SFU lets them // through. The SFU validates the VP8 bitstream and drops frames that don't -// look like real VP8 — so we prepend the keepalive keyframe and append our +// look like real VP8 - so we prepend the keepalive keyframe and append our // header + payload after it. Wire layout: // // [0..20] = vp8Keepalive (valid VP8 keyframe, passes SFU inspection)