3 Commits
Author SHA1 Message Date
gandc a755ee8691 force ice all v4
Build Fluxer Desktop / Linux x64 (push) Successful in 11m32s
Build Fluxer Desktop / Windows x64 (push) Successful in 21m39s
2026-09-17 01:20:44 +03:00
gandc e57e845a3b fix
Build Fluxer Desktop / Linux x64 (push) Successful in 11m51s
Build Fluxer Desktop / Windows x64 (push) Canceled after 15m23s
2026-09-17 01:05:04 +03:00
gandc c901908eab fix path
Build Fluxer Desktop / Linux x64 (push) Failing after 3m39s
Build Fluxer Desktop / Windows x64 (push) Canceled after 6m32s
2026-09-17 00:53:56 +03:00
+119 -210
View File
@@ -208,6 +208,57 @@ jobs:
-Pattern "sso.gandc.ru|will-redirect|allowTrustedOrSsoNavigation"
- name: Force WebRTC ICE policy to all
shell: powershell
run: |
$ErrorActionPreference = "Stop"
$Path = "fluxer-src\fluxer_desktop\src\preload\index.ts"
if (-not (Test-Path $Path)) {
throw "Desktop preload not found at $Path"
}
$Content = Get-Content $Path -Raw
$Anchor = "import {contextBridge, ipcRenderer, webFrame} from 'electron';"
if ($Content -notmatch [regex]::Escape($Anchor)) {
throw "Unable to locate Electron preload import"
}
if ($Content -match "installForceAllIceTransportPolicy") {
throw "WebRTC ICE policy patch is already present"
}
$Patch = [Text.Encoding]::UTF8.GetString(
[Convert]::FromBase64String(
"aW1wb3J0IHtjb250ZXh0QnJpZGdlLCBpcGNSZW5kZXJlciwgd2ViRnJhbWV9IGZyb20gJ2VsZWN0cm9uJzsKCmZ1bmN0aW9uIGluc3RhbGxGb3JjZUFsbEljZVRyYW5zcG9ydFBvbGljeSgpOiB2b2lkIHsKCWNvbnRleHRCcmlkZ2UuZXhlY3V0ZUluTWFpbldvcmxkKHsKCQlmdW5jOiAoKSA9PiB7CgkJCWNvbnN0IE5hdGl2ZVJUQ1BlZXJDb25uZWN0aW9uID0gd2luZG93LlJUQ1BlZXJDb25uZWN0aW9uOwoKCQkJaWYgKHR5cGVvZiBOYXRpdmVSVENQZWVyQ29ubmVjdGlvbiAhPT0gJ2Z1bmN0aW9uJykgewoJCQkJcmV0dXJuOwoJCQl9CgoJCQl3aW5kb3cuUlRDUGVlckNvbm5lY3Rpb24gPSBuZXcgUHJveHkoTmF0aXZlUlRDUGVlckNvbm5lY3Rpb24sIHsKCQkJCWNvbnN0cnVjdChUYXJnZXQsIGFyZ3MsIG5ld1RhcmdldCkgewoJCQkJCWNvbnN0IGNvbmZpZyA9IGFyZ3NbMF0gYXMgUlRDQ29uZmlndXJhdGlvbiB8IHVuZGVmaW5lZDsKCgkJCQkJaWYgKGNvbmZpZz8uaWNlVHJhbnNwb3J0UG9saWN5ID09PSAncmVsYXknKSB7CgkJCQkJCWFyZ3NbMF0gPSB7CgkJCQkJCQkuLi5jb25maWcsCgkJCQkJCQlpY2VUcmFuc3BvcnRQb2xpY3k6ICdhbGwnLAoJCQkJCQl9OwoJCQkJCX0KCgkJCQkJcmV0dXJuIFJlZmxlY3QuY29uc3RydWN0KFRhcmdldCwgYXJncywgbmV3VGFyZ2V0KTsKCQkJCX0sCgkJCX0pOwoKCQkJY29uc29sZS5pbmZvKCdbRmx1eGVyIERlc2t0b3BdIFdlYlJUQyBpY2VUcmFuc3BvcnRQb2xpY3kgZm9yY2VkIHRvIGFsbCcpOwoJCX0sCgl9KTsKfQoKaW5zdGFsbEZvcmNlQWxsSWNlVHJhbnNwb3J0UG9saWN5KCk7"
)
)
$Content = $Content.Replace(
$Anchor,
$Patch
)
Set-Content `
-Path $Path `
-Value $Content `
-NoNewline `
-Encoding utf8
$Result = Get-Content $Path -Raw
if ($Result -notmatch "installForceAllIceTransportPolicy") {
throw "WebRTC ICE policy patch verification failed"
}
Write-Host "Installed preload WebRTC ICE policy override"
Select-String `
-Path $Path `
-Pattern "installForceAllIceTransportPolicy|iceTransportPolicy forced to all"
- name: Install dependencies
shell: powershell
run: |
@@ -218,100 +269,6 @@ jobs:
pnpm install --frozen-lockfile
- name: Force LiveKit ICE policy to all
shell: powershell
run: |
$ErrorActionPreference = "Stop"
Set-Location fluxer-src
$PnpmRoot = "node_modules\.pnpm"
if (-not (Test-Path $PnpmRoot)) {
throw "pnpm node_modules directory not found"
}
$LiveKitPackages = Get-ChildItem `
-Path $PnpmRoot `
-Directory `
-Filter "livekit-client@*" |
ForEach-Object {
Join-Path $_.FullName "node_modules\livekit-client"
} |
Where-Object {
Test-Path $_
}
if (-not $LiveKitPackages) {
throw "livekit-client package not found"
}
$Pattern = "(iceTransportPolicy\s*=\s*['""])(relay)(['""])"
$TotalReplacements = 0
foreach ($PackagePath in $LiveKitPackages) {
Write-Host "Patching LiveKit package: $PackagePath"
$PackageJson = Join-Path $PackagePath "package.json"
if (Test-Path $PackageJson) {
$PackageInfo = Get-Content $PackageJson -Raw |
ConvertFrom-Json
Write-Host "livekit-client version: $($PackageInfo.version)"
}
$Files = Get-ChildItem `
-Path $PackagePath `
-Recurse `
-File |
Where-Object {
$_.Extension -in @(
".ts",
".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:
@@ -784,6 +741,74 @@ jobs:
fluxer-src/fluxer_desktop/src/main/Window.ts
- name: Force WebRTC ICE policy to all
shell: bash
run: |
set -euxo pipefail
python3 - <<'PY'
from pathlib import Path
import base64
path = Path(
"fluxer-src/fluxer_desktop/"
"src/preload/index.ts"
)
if not path.is_file():
raise SystemExit(
f"Desktop preload not found: {path}"
)
data = path.read_text(
encoding="utf-8"
)
anchor = "import {contextBridge, ipcRenderer, webFrame} from 'electron';"
if anchor not in data:
raise SystemExit(
"Unable to locate Electron preload import"
)
if "installForceAllIceTransportPolicy" in data:
raise SystemExit(
"WebRTC ICE policy patch is already present"
)
patch = base64.b64decode(
"aW1wb3J0IHtjb250ZXh0QnJpZGdlLCBpcGNSZW5kZXJlciwgd2ViRnJhbWV9IGZyb20gJ2VsZWN0cm9uJzsKCmZ1bmN0aW9uIGluc3RhbGxGb3JjZUFsbEljZVRyYW5zcG9ydFBvbGljeSgpOiB2b2lkIHsKCWNvbnRleHRCcmlkZ2UuZXhlY3V0ZUluTWFpbldvcmxkKHsKCQlmdW5jOiAoKSA9PiB7CgkJCWNvbnN0IE5hdGl2ZVJUQ1BlZXJDb25uZWN0aW9uID0gd2luZG93LlJUQ1BlZXJDb25uZWN0aW9uOwoKCQkJaWYgKHR5cGVvZiBOYXRpdmVSVENQZWVyQ29ubmVjdGlvbiAhPT0gJ2Z1bmN0aW9uJykgewoJCQkJcmV0dXJuOwoJCQl9CgoJCQl3aW5kb3cuUlRDUGVlckNvbm5lY3Rpb24gPSBuZXcgUHJveHkoTmF0aXZlUlRDUGVlckNvbm5lY3Rpb24sIHsKCQkJCWNvbnN0cnVjdChUYXJnZXQsIGFyZ3MsIG5ld1RhcmdldCkgewoJCQkJCWNvbnN0IGNvbmZpZyA9IGFyZ3NbMF0gYXMgUlRDQ29uZmlndXJhdGlvbiB8IHVuZGVmaW5lZDsKCgkJCQkJaWYgKGNvbmZpZz8uaWNlVHJhbnNwb3J0UG9saWN5ID09PSAncmVsYXknKSB7CgkJCQkJCWFyZ3NbMF0gPSB7CgkJCQkJCQkuLi5jb25maWcsCgkJCQkJCQlpY2VUcmFuc3BvcnRQb2xpY3k6ICdhbGwnLAoJCQkJCQl9OwoJCQkJCX0KCgkJCQkJcmV0dXJuIFJlZmxlY3QuY29uc3RydWN0KFRhcmdldCwgYXJncywgbmV3VGFyZ2V0KTsKCQkJCX0sCgkJCX0pOwoKCQkJY29uc29sZS5pbmZvKCdbRmx1eGVyIERlc2t0b3BdIFdlYlJUQyBpY2VUcmFuc3BvcnRQb2xpY3kgZm9yY2VkIHRvIGFsbCcpOwoJCX0sCgl9KTsKfQoKaW5zdGFsbEZvcmNlQWxsSWNlVHJhbnNwb3J0UG9saWN5KCk7"
).decode("utf-8")
data = data.replace(
anchor,
patch,
1,
)
path.write_text(
data,
encoding="utf-8",
)
result = path.read_text(
encoding="utf-8"
)
if "installForceAllIceTransportPolicy" not in result:
raise SystemExit(
"WebRTC ICE policy patch verification failed"
)
print(
"Installed preload WebRTC ICE policy override"
)
PY
grep -n \
-E 'installForceAllIceTransportPolicy|iceTransportPolicy forced to all' \
fluxer-src/fluxer_desktop/src/preload/index.ts
- name: Install dependencies
shell: bash
run: |
@@ -794,122 +819,6 @@ jobs:
pnpm install --frozen-lockfile
- name: Force LiveKit ICE policy to all
shell: bash
run: |
set -euxo pipefail
cd fluxer-src
python3 <<'PY'
from pathlib import Path
import json
import re
pnpm_root = Path("node_modules/.pnpm")
if not pnpm_root.is_dir():
raise SystemExit(
"pnpm node_modules directory not found"
)
packages = sorted(
path / "node_modules/livekit-client"
for path in pnpm_root.glob(
"livekit-client@*"
)
if (
path / "node_modules/livekit-client"
).is_dir()
)
if not packages:
raise SystemExit(
"livekit-client package not found"
)
pattern = re.compile(
r"(iceTransportPolicy\s*=\s*['\"])"
r"relay"
r"(['\"])"
)
total_replacements = 0
for package in packages:
print(
f"Patching 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",
),
)
for path in package.rglob("*"):
if (
not path.is_file()
or path.suffix
not in {
".ts",
".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: