From e57e845a3b4f2ec13e326966de76331c065c7897 Mon Sep 17 00:00:00 2001 From: GandC Date: Thu, 17 Sep 2026 01:05:04 +0300 Subject: [PATCH] fix --- .gitea/workflows/desktop.yml | 411 +++++++++++------------------------ 1 file changed, 122 insertions(+), 289 deletions(-) diff --git a/.gitea/workflows/desktop.yml b/.gitea/workflows/desktop.yml index fda18f4..6bb309e 100644 --- a/.gitea/workflows/desktop.yml +++ b/.gitea/workflows/desktop.yml @@ -208,6 +208,57 @@ jobs: -Pattern "sso.gandc.ru|will-redirect|allowTrustedOrSsoNavigation" + - name: Force LiveKit ICE policy to all + shell: powershell + run: | + $ErrorActionPreference = "Stop" + + $Path = "fluxer-src\fluxer_app\pkgs\livekit-client\src\room\RTCEngine.ts" + + if (-not (Test-Path $Path)) { + throw "LiveKit RTCEngine.ts not found at $Path" + } + + $Content = Get-Content $Path -Raw + + $Old = "rtcConfig.iceTransportPolicy = 'relay';" + $New = "rtcConfig.iceTransportPolicy = 'all';" + + $Count = ( + [regex]::Matches( + $Content, + [regex]::Escape($Old) + ) + ).Count + + if ($Count -ne 1) { + throw "Expected exactly one relay ICE policy assignment, found $Count" + } + + $Content = $Content.Replace( + $Old, + $New + ) + + Set-Content ` + -Path $Path ` + -Value $Content ` + -NoNewline ` + -Encoding utf8 + + $Result = Get-Content $Path -Raw + + if ($Result -notmatch "rtcConfig\.iceTransportPolicy = 'all';") { + throw "LiveKit ICE policy patch verification failed" + } + + Write-Host "Forced LiveKit iceTransportPolicy=all" + + Select-String ` + -Path $Path ` + -Pattern "iceTransportPolicy" + + - name: Install dependencies shell: powershell run: | @@ -218,135 +269,6 @@ jobs: pnpm install --frozen-lockfile - - name: Force LiveKit ICE policy to all - shell: powershell - run: | - $ErrorActionPreference = "Stop" - - Set-Location "fluxer-src\fluxer_desktop" - - $LiveKitPath = Join-Path ` - (Get-Location) ` - "node_modules\livekit-client" - - if (-not (Test-Path $LiveKitPath)) { - $Entry = ( - node -e "process.stdout.write(require.resolve('livekit-client'))" - ).Trim() - - if (-not $Entry) { - throw "Unable to resolve livekit-client" - } - - $Dir = Split-Path $Entry -Parent - - while ($Dir) { - $PackageJson = Join-Path $Dir "package.json" - - if (Test-Path $PackageJson) { - $PackageInfo = Get-Content ` - $PackageJson ` - -Raw | - ConvertFrom-Json - - if ($PackageInfo.name -eq "livekit-client") { - $LiveKitPath = $Dir - break - } - } - - $Parent = Split-Path $Dir -Parent - - if ( - -not $Parent -or - $Parent -eq $Dir - ) { - break - } - - $Dir = $Parent - } - } - - if (-not (Test-Path $LiveKitPath)) { - throw "livekit-client package directory not found" - } - - $LiveKitPath = ( - Resolve-Path $LiveKitPath - ).Path - - Write-Host "LiveKit package: $LiveKitPath" - - $PackageJson = Join-Path ` - $LiveKitPath ` - "package.json" - - if (Test-Path $PackageJson) { - $PackageInfo = Get-Content ` - $PackageJson ` - -Raw | - ConvertFrom-Json - - Write-Host ` - "livekit-client version: $($PackageInfo.version)" - } - - $Pattern = "(iceTransportPolicy\s*=\s*['""])(relay)(['""])" - $TotalReplacements = 0 - - $Files = Get-ChildItem ` - -Path $LiveKitPath ` - -Recurse ` - -File | - Where-Object { - $_.Extension -in @( - ".js", - ".mjs", - ".cjs" - ) - } - - foreach ($File in $Files) { - $Content = Get-Content ` - $File.FullName ` - -Raw - - $Count = [regex]::Matches( - $Content, - $Pattern - ).Count - - if ($Count -eq 0) { - continue - } - - $PatchedContent = [regex]::Replace( - $Content, - $Pattern, - '$1all$3' - ) - - Set-Content ` - -Path $File.FullName ` - -Value $PatchedContent ` - -NoNewline ` - -Encoding utf8 - - $TotalReplacements += $Count - - Write-Host ` - "Patched $Count occurrence(s): $($File.FullName)" - } - - if ($TotalReplacements -lt 1) { - throw "LiveKit relay ICE policy assignment was not found" - } - - Write-Host ` - "Forced iceTransportPolicy=all in $TotalReplacements occurrence(s)" - - - name: Build Fluxer Desktop shell: powershell env: @@ -819,6 +741,77 @@ jobs: fluxer-src/fluxer_desktop/src/main/Window.ts + - name: Force LiveKit ICE policy to all + shell: bash + run: | + set -euxo pipefail + + python3 <<'PY' + from pathlib import Path + + path = Path( + "fluxer-src/fluxer_app/pkgs/" + "livekit-client/src/room/RTCEngine.ts" + ) + + if not path.is_file(): + raise SystemExit( + f"LiveKit RTCEngine.ts not found: {path}" + ) + + data = path.read_text( + encoding="utf-8" + ) + + old = ( + "rtcConfig.iceTransportPolicy = " + "'relay';" + ) + new = ( + "rtcConfig.iceTransportPolicy = " + "'all';" + ) + + count = data.count(old) + + if count != 1: + raise SystemExit( + "Expected exactly one relay ICE " + f"policy assignment, found {count}" + ) + + data = data.replace( + old, + new, + 1, + ) + + path.write_text( + data, + encoding="utf-8", + ) + + result = path.read_text( + encoding="utf-8" + ) + + if new not in result: + raise SystemExit( + "LiveKit ICE policy patch " + "verification failed" + ) + + print( + "Forced LiveKit " + "iceTransportPolicy=all" + ) + PY + + grep -n \ + "iceTransportPolicy" \ + fluxer-src/fluxer_app/pkgs/livekit-client/src/room/RTCEngine.ts + + - name: Install dependencies shell: bash run: | @@ -829,166 +822,6 @@ jobs: pnpm install --frozen-lockfile - - name: Force LiveKit ICE policy to all - shell: bash - run: | - set -euxo pipefail - - cd fluxer-src/fluxer_desktop - - LIVEKIT_DIR="node_modules/livekit-client" - - if [ ! -d "${LIVEKIT_DIR}" ]; then - LIVEKIT_ENTRY="$( - node -e \ - "process.stdout.write(require.resolve('livekit-client'))" - )" - - export LIVEKIT_ENTRY - - LIVEKIT_DIR="$( - python3 <<'PY' - from pathlib import Path - import json - import os - - entry = Path( - os.environ["LIVEKIT_ENTRY"] - ).resolve() - - for directory in [ - entry.parent, - *entry.parents, - ]: - package_json = ( - directory / "package.json" - ) - - if not package_json.is_file(): - continue - - try: - package = json.loads( - package_json.read_text( - encoding="utf-8" - ) - ) - except Exception: - continue - - if ( - package.get("name") - == "livekit-client" - ): - print(directory) - break - else: - raise SystemExit( - "Unable to locate " - "livekit-client package directory" - ) - PY - )" - fi - - LIVEKIT_DIR="$( - readlink -f "${LIVEKIT_DIR}" - )" - - test -d "${LIVEKIT_DIR}" - - export LIVEKIT_DIR - - python3 <<'PY' - from pathlib import Path - import json - import os - import re - - package = Path( - os.environ["LIVEKIT_DIR"] - ) - - print( - f"LiveKit package: {package}" - ) - - package_json = ( - package / "package.json" - ) - - if package_json.is_file(): - package_info = json.loads( - package_json.read_text( - encoding="utf-8" - ) - ) - - print( - "livekit-client version:", - package_info.get( - "version", - "unknown", - ), - ) - - pattern = re.compile( - r"(iceTransportPolicy\s*=\s*['\"])" - r"relay" - r"(['\"])" - ) - - total_replacements = 0 - - for path in package.rglob("*"): - if ( - not path.is_file() - or path.suffix - not in { - ".js", - ".mjs", - ".cjs", - } - ): - continue - - data = path.read_text( - encoding="utf-8" - ) - - patched, count = pattern.subn( - r"\1all\2", - data, - ) - - if count == 0: - continue - - path.write_text( - patched, - encoding="utf-8", - ) - - total_replacements += count - - print( - f"Patched {count} occurrence(s): " - f"{path}" - ) - - if total_replacements < 1: - raise SystemExit( - "LiveKit relay ICE policy " - "assignment was not found" - ) - - print( - "Forced iceTransportPolicy=all " - f"in {total_replacements} occurrence(s)" - ) - PY - - - name: Build Fluxer Desktop shell: bash env: