Commit Graph

261 Commits

Author SHA1 Message Date
zarazaex69
cf6490b5e0 feat: add support for reading configuration from YAML file 2026-05-13 17:17:31 +03:00
zarazaex69
359a2d94df feat: add YAML configuration support 2026-05-13 16:37:09 +03:00
zarazaex69
51e6e8a39c refactor: configuration structures instead of 27 arguments 2026-05-13 16:16:56 +03:00
zarazaex69
609b6a4927 fix: implementation fingerprint #52 2026-05-13 15:54:45 +03:00
zarazaex69
65555a47c8 test: port provider unit tests and fix API regressions from master
- Ported unit tests for WB Stream, SaluteJazz, and Telemost API clients
- Ported engine helper tests for SaluteJazz and Goolom
- Fixed missing WB Stream WebSocket URL update (wss://rtc-el-01.wb.ru)
- Corrected SaluteJazz header casing (X-Jazz-AuthType)
- Fixed linting errors (goconst, gosec, lll) in test files
2026-05-12 22:00:30 +03:00
zarazaex69
2d3a1152a1 Merge origin/master into refactor/universal-carrier 2026-05-12 21:33:31 +03:00
zarazaex69
d4d71c6810 refactor(test): adopt Go 1.22 ServeMux in provider mock servers 2026-05-12 21:31:25 +03:00
zarazaex69
922c326533 fix(provider/wbstream): update API endpoints and WebSocket URL
- Switched getToken endpoint to /api-room-manager/v2/room/%s/connection-details
- Updated WebSocket URL to wss://rtc-el-01.wb.ru
- Updated Python PoC scripts to match new endpoints
2026-05-12 21:05:12 +03:00
zarazaex69
6280c91614 fix: CreatePermission spam log 2026-05-11 18:31:44 +03:00
zarazaex69
68a144d6c0 feat: auto-fill engine/url from auth provider defaults
Each auth.Provider now declares DefaultServiceURL() so callers do not
need to know service-specific endpoints. ApplyAuthDefaults fills Engine
and URL from the provider before validation runs — explicit flags always
win, and providers with no default URL require -url to be set explicitly.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-11 15:23:20 +03:00
zarazaex69
dc1fe0f19c refactor: replace -carrier with -auth/-engine/-url/-token (stage E)
Break CLI backwards compatibility as planned for refactor/universal-carrier:

- Drop -carrier flag; add -auth (auth provider name), -engine (engine
  name for -auth none), -url and -token (SFU endpoint + access token for
  direct/none auth mode).
- session.Config.Carrier → Auth + Engine + URL + Token.
- session.Gen() is now generic: auth.Get(cfg.Auth).(auth.RoomCreator)
  replaces the hard-coded switch on carrier names.
- Register a "none" carrier in builtin (registerDirect) that bypasses
  auth and connects directly to any engine with caller-supplied URL+Token.
- auth/telemost.Provider.Issue now accepts a raw room-ID hash in addition
  to a full https://telemost.yandex.ru/j/<id> URL.
- Plumb Engine/URL/Token from session.Config through server.Run,
  client.Run/RunWithReady, bringUpLink, link.Config, transport.Config, and
  carrier.Config so the "none" carrier has access to them end-to-end.
- Update all tests and mobile.go call sites.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-11 13:31:07 +03:00
zarazaex69
d65784ff8c refactor: migrate telemost to engine/goolom + auth/telemost
Decompose the monolithic internal/provider/telemost package into two
orthogonal layers: engine/goolom (Yandex proprietary SFU wire protocol —
WebSocket signaling, dual pub/sub PeerConnections, DataChannel, telemetry)
and auth/telemost (HTTP connection-info fetch → engine.Credentials).

Add engine.Config.Refresh callback so Goolom can obtain fresh peerID and
credentials on every reconnect without a direct dependency on the auth
package. engine_adapter wires the Refresh closure from authProvider.Issue.

Delete internal/provider/ entirely (telemost was the last tenant) and
remove the now-obsolete provider_adapter + its test from builtin.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-11 13:13:21 +03:00
zarazaex69
d48eb565f5 refactor: migrate jazz to engine/salutejazz + auth/salutejazz
Split the SaluteJazz provider along the same engine/auth seam used for
WB Stream:
- internal/engine/salutejazz — Sber WS+SDP signaling engine (pub/sub
  split, _reliable data channel, length-prefixed DataPacket envelope).
  Consumes URL/Token/Extra[password] from engine.Config; no embedded
  HTTP/auth logic. Registered as engine "salutejazz".
- internal/auth/salutejazz — create-meeting + preconnect flow.
  Implements auth.Provider (Engine() → "salutejazz") and
  auth.RoomCreator. Accepts cfg.RoomURL in "<roomID>:<password>" form
  for join, or empty / "any" / "dummy" for create-on-the-fly, matching
  the legacy provider.

The carrier name "jazz" now goes through registerEngineAuth.
engine.Config gains an Extra map so auth providers can pass engine-
specific fields (password here); engine_adapter forwards
auth.Credentials.Extra into it.

session.Gen for jazz uses the auth.RoomCreator capability. Output now
includes the password ("<roomID>:<password>") — without it the printed
room is not joinable, so the legacy roomID-only output was effectively
broken for the gen flow.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-11 03:35:51 +03:00
zarazaex69
071106a674 refactor: migrate wbstream to engine/livekit + auth/wbstream
Split the WB Stream provider into two orthogonal pieces:
- internal/engine/livekit — generic LiveKit transport (URL+Token only,
  no service-specific assumptions). Registered as engine "livekit".
- internal/auth/wbstream — WB Stream API flow (guest register, join,
  token exchange). Implements auth.Provider and auth.RoomCreator,
  reports engine "livekit".

The carrier name "wbstream" now goes through registerEngineAuth, which
wires the auth provider to the engine it declares. CLI surface is
unchanged. session.Gen for wbstream calls the RoomCreator directly;
that path will become fully generic in a later step. jazz and telemost
remain on the legacy provider path for now.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-11 03:28:34 +03:00
zarazaex69
9388a8e494 refactor: introduce engine and auth interfaces
Lay the groundwork for splitting service-specific logic (WB / Jazz /
Telemost API flows) from wire-level transport engines (LiveKit, Goolom,
future Jitsi). An engine takes only URL+Token+Name+network knobs; an
auth provider produces those credentials and reports which engine it
feeds. RoomCreator is an optional capability for the gen mode.

Existing carriers and providers are untouched.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-11 03:20:10 +03:00
zarazaex69
e25eed39a9 Merge remote-tracking branch 'origin/master' into pr-47-merge
# Conflicts:
#	cmd/olcrtc/main.go
#	internal/transport/videochannel/ffmpeg.go
2026-05-11 02:30:16 +03:00
zarazaex69
0723ddf2f5 fix: golangci errors 2026-05-11 02:21:41 +03:00
spkprsnts
b7e758c283 perf(ffmpeg): reduce VPx encoding latency 2026-05-11 03:49:57 +05:00
spkprsnts
ba3d622233 feat(ffmpeg): Add -ffmpeg flag for custom path
- Add -ffmpeg flag for custom path
- Allow FFMPEG_BIN env var to set path
- Update ffmpeg
2026-05-11 03:31:14 +05:00
zarazaex69
74338524a7 fix: golangci errors 2026-05-11 00:56:40 +03:00
zarazaex69
1070c34f3a Merge remote-tracking branch 'origin/master' into refactor/weekrefactor 2026-05-10 23:06:36 +03:00
zarazaex69
bdc13024f4 feat: update gr 2026-05-10 23:02:33 +03:00
zarazaex69
f6b82da099 feat: remove nolint 2026-05-10 23:02:00 +03:00
zarazaex69
efd1d5ff16 fix: test dont work 2026-05-10 22:51:51 +03:00
zarazaex69
66b3d21592 upd: submodule 2026-05-10 21:30:22 +03:00
zarazaex69
8637f076f5 feat: use compact render 2026-05-10 20:13:03 +03:00
zarazaex69
7271f0532f fear(gr): update submodule 2026-05-10 20:13:03 +03:00
Alexander Anisimov
c4b67e704b fix lint 2026-05-10 18:27:00 +03:00
Alexander Anisimov
8348c3d026 fix socks5 2026-05-10 18:20:10 +03:00
zarazaex69
7aec207603 fix: integer overflow conversion in client 2026-05-10 14:11:58 +03:00
zarazaex69
7e03cfb178 doc: add socks5 pass and user settings 2026-05-10 13:58:57 +03:00
zarazaex69
7128dafda2 feat(socks, test): add test for socks5 user and password 2026-05-10 13:56:20 +03:00
zarazaex69
af49d17e8e feat(socks): add socks5 user and password 2026-05-10 13:56:03 +03:00
zarazaex69
3100577b0d fix: golangci errors 2026-05-09 22:30:31 +03:00
zarazaex69
d3f018825d fix: add repeat if get error timeout and any network error 2026-05-09 22:25:15 +03:00
zarazaex69
0ae6721ee2 fix: panic in seichannel 2026-05-09 22:22:34 +03:00
zarazaex69
46a7e64010 feat: ad mode gen for generate room 2026-05-08 17:29:53 +03:00
zarazaex69
fb456c3ebe fix: throughput bug where maxWireFPS=120 capped send rate 32x too low 2026-05-07 22:12:46 +03:00
zarazaex69
0fed01fd1b refactor(vp8channel): remove debug logging and simplify frame handling 2026-05-07 22:10:25 +03:00
zarazaex69
e2135741de test: remove vp8channel from transport matrix and optimize payload
creation
2026-05-07 21:52:14 +03:00
zarazaex69
38eed862b5 fix: golangci fix 2026-05-07 21:48:20 +03:00
zarazaex69
474ee8f34b refactor(vp8channel): change verbose info logs to debug level 2026-05-07 21:42:16 +03:00
zarazaex69
65510da410 refactor(vp8channel): use VP8 keepalive prefix instead of magic byte for
KCP frames
2026-05-07 21:42:01 +03:00
zarazaex69
75692dbebb АпДеЙт МагикККАМЕНТССССЩЩЩЩ 2026-05-07 20:53:43 +03:00
zarazaex69
5a4446e2a7 add magic КОМЕНТАРИЙ 2026-05-07 20:50:10 +03:00
zarazaex69
7e810acd34 upd: trandport go fix maybe 2026-05-07 20:43:32 +03:00
zarazaex69
f8d8bf326e chore: update videochannel submodule to latest revision 2026-05-07 18:20:11 +03:00
zarazaex69
87a546605c fix: golangci 2026-05-07 16:36:30 +03:00
zarazaex69
84c53f1676 feat: add real provider E2E test matrix for WebRTC carriers 2026-05-07 15:28:40 +03:00
zarazaex69
4070d36307 test: add video track support and provider/transport matrix tests 2026-05-07 14:43:58 +03:00