From fdd921c6bb53929049a243d0f4b0b5e2e645a636 Mon Sep 17 00:00:00 2001 From: zhom <2717306+zhom@users.noreply.github.com> Date: Thu, 8 Jan 2026 22:25:10 +0400 Subject: [PATCH] refactor: don't bundle node backend --- .github/workflows/codeql.yml | 14 - .github/workflows/dependabot-automerge.yml | 1 - .github/workflows/lint-rs.yml | 30 - .github/workflows/osv.yml | 6 - .github/workflows/pr-checks.yml | 1 - .github/workflows/release.yml | 37 - .github/workflows/rolling-release.yml | 32 - donut-sync/.env.example | 2 +- nodecar/copy-binary.sh | 25 - nodecar/package.json | 40 - nodecar/src/camoufox-launcher.ts | 519 ----- nodecar/src/camoufox-storage.ts | 153 -- nodecar/src/camoufox-worker.ts | 430 ---- nodecar/src/index.ts | 334 --- nodecar/src/utils.ts | 120 - nodecar/tsconfig.json | 22 - package.json | 2 +- scripts/dev.sh | 158 ++ src-tauri/Cargo.lock | 420 +++- src-tauri/Cargo.toml | 10 + src-tauri/build.rs | 13 +- src-tauri/copy-proxy-binary.sh | 2 +- src-tauri/src/browser_runner.rs | 19 +- src-tauri/src/camoufox/config.rs | 608 +++++ .../camoufox/data/browser-helper-file.json | 120 + src-tauri/src/camoufox/data/browserforge.yml | 68 + .../data/fingerprint-network-definition.zip | Bin 0 -> 601335 bytes src-tauri/src/camoufox/data/fonts.json | 822 +++++++ .../data/header-network-definition.zip | Bin 0 -> 40135 bytes .../src/camoufox/data/headers-order.json | 164 ++ .../data/input-network-definition.zip | Bin 0 -> 3919 bytes src-tauri/src/camoufox/data/mod.rs | 9 + src-tauri/src/camoufox/data/territoryInfo.xml | 2024 +++++++++++++++++ src-tauri/src/camoufox/data/webgl_data.db | Bin 0 -> 266240 bytes src-tauri/src/camoufox/env_vars.rs | 142 ++ .../camoufox/fingerprint/bayesian_network.rs | 198 ++ .../src/camoufox/fingerprint/bayesian_node.rs | 231 ++ src-tauri/src/camoufox/fingerprint/mod.rs | 569 +++++ src-tauri/src/camoufox/fingerprint/types.rs | 302 +++ src-tauri/src/camoufox/fonts.rs | 83 + src-tauri/src/camoufox/geolocation.rs | 541 +++++ src-tauri/src/camoufox/launcher.rs | 338 +++ src-tauri/src/camoufox/mod.rs | 154 ++ src-tauri/src/camoufox/webgl.rs | 251 ++ src-tauri/src/camoufox_manager.rs | 356 +-- src-tauri/src/downloader.rs | 55 +- src-tauri/src/lib.rs | 31 +- src-tauri/src/profile/manager.rs | 14 +- src-tauri/tauri.conf.json | 4 +- src-tauri/tests/sync_e2e.rs | 2 +- src/app/page.tsx | 34 - tsconfig.json | 8 +- 52 files changed, 7467 insertions(+), 2051 deletions(-) delete mode 100755 nodecar/copy-binary.sh delete mode 100644 nodecar/package.json delete mode 100644 nodecar/src/camoufox-launcher.ts delete mode 100644 nodecar/src/camoufox-storage.ts delete mode 100644 nodecar/src/camoufox-worker.ts delete mode 100644 nodecar/src/index.ts delete mode 100644 nodecar/src/utils.ts delete mode 100644 nodecar/tsconfig.json create mode 100755 scripts/dev.sh create mode 100644 src-tauri/src/camoufox/config.rs create mode 100644 src-tauri/src/camoufox/data/browser-helper-file.json create mode 100644 src-tauri/src/camoufox/data/browserforge.yml create mode 100644 src-tauri/src/camoufox/data/fingerprint-network-definition.zip create mode 100644 src-tauri/src/camoufox/data/fonts.json create mode 100644 src-tauri/src/camoufox/data/header-network-definition.zip create mode 100644 src-tauri/src/camoufox/data/headers-order.json create mode 100644 src-tauri/src/camoufox/data/input-network-definition.zip create mode 100644 src-tauri/src/camoufox/data/mod.rs create mode 100644 src-tauri/src/camoufox/data/territoryInfo.xml create mode 100644 src-tauri/src/camoufox/data/webgl_data.db create mode 100644 src-tauri/src/camoufox/env_vars.rs create mode 100644 src-tauri/src/camoufox/fingerprint/bayesian_network.rs create mode 100644 src-tauri/src/camoufox/fingerprint/bayesian_node.rs create mode 100644 src-tauri/src/camoufox/fingerprint/mod.rs create mode 100644 src-tauri/src/camoufox/fingerprint/types.rs create mode 100644 src-tauri/src/camoufox/fonts.rs create mode 100644 src-tauri/src/camoufox/geolocation.rs create mode 100644 src-tauri/src/camoufox/launcher.rs create mode 100644 src-tauri/src/camoufox/mod.rs create mode 100644 src-tauri/src/camoufox/webgl.rs diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 383d672..2219fd3 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -72,20 +72,6 @@ jobs: working-directory: ./src-tauri run: | cargo build - - - name: Build nodecar sidecar - if: matrix.language == 'rust' - shell: bash - working-directory: ./nodecar - run: | - pnpm run build:linux-x64 - - - name: Copy nodecar binary to Tauri binaries - if: matrix.language == 'rust' - shell: bash - run: | - mkdir -p src-tauri/binaries - cp nodecar/nodecar-bin src-tauri/binaries/nodecar-x86_64-unknown-linux-gnu - name: Initialize CodeQL uses: github/codeql-action/init@b1e4dc3db58c9601794e22a9f6d28d45461b9dbf #v3.29.0 diff --git a/.github/workflows/dependabot-automerge.yml b/.github/workflows/dependabot-automerge.yml index 55edf47..85bb2f1 100644 --- a/.github/workflows/dependabot-automerge.yml +++ b/.github/workflows/dependabot-automerge.yml @@ -20,7 +20,6 @@ jobs: --skip-git --lockfile=pnpm-lock.yaml --lockfile=src-tauri/Cargo.lock - --lockfile=nodecar/pnpm-lock.yaml ./ permissions: security-events: write diff --git a/.github/workflows/lint-rs.yml b/.github/workflows/lint-rs.yml index cfa5cae..210a767 100644 --- a/.github/workflows/lint-rs.yml +++ b/.github/workflows/lint-rs.yml @@ -12,7 +12,6 @@ on: pull_request: paths-ignore: - "src/**" - - "nodecar/**" - "package.json" - "pnpm-lock.yaml" - "yarn.lock" @@ -75,35 +74,6 @@ jobs: - name: Install frontend dependencies run: pnpm install --frozen-lockfile - - name: Build nodecar binary - shell: bash - working-directory: ./nodecar - run: | - if [[ "${{ matrix.os }}" == "ubuntu-22.04" ]]; then - pnpm run build:linux-x64 - elif [[ "${{ matrix.os }}" == "macos-latest" ]]; then - pnpm run build:mac-aarch64 - elif [[ "${{ matrix.os }}" == "windows-latest" ]]; then - pnpm run build:win-x64 - fi - - # TODO: replace with an integration test that fetches everything from rust - # - name: Download Camoufox for testing - # run: npx camoufox-js fetch - # continue-on-error: true - - - name: Copy nodecar binary to Tauri binaries - shell: bash - run: | - mkdir -p src-tauri/binaries - if [[ "${{ matrix.os }}" == "ubuntu-22.04" ]]; then - cp nodecar/nodecar-bin src-tauri/binaries/nodecar-x86_64-unknown-linux-gnu - elif [[ "${{ matrix.os }}" == "macos-latest" ]]; then - cp nodecar/nodecar-bin src-tauri/binaries/nodecar-aarch64-apple-darwin - elif [[ "${{ matrix.os }}" == "windows-latest" ]]; then - cp nodecar/nodecar-bin.exe src-tauri/binaries/nodecar-x86_64-pc-windows-msvc.exe - fi - - name: Build frontend run: pnpm next build diff --git a/.github/workflows/osv.yml b/.github/workflows/osv.yml index 52676d0..76adf9b 100644 --- a/.github/workflows/osv.yml +++ b/.github/workflows/osv.yml @@ -23,8 +23,6 @@ on: - "pnpm-lock.yaml" - "src-tauri/Cargo.toml" - "src-tauri/Cargo.lock" - - "nodecar/package.json" - - "nodecar/pnpm-lock.yaml" - ".github/workflows/osv.yml" merge_group: branches: ["main"] @@ -38,8 +36,6 @@ on: - "pnpm-lock.yaml" - "src-tauri/Cargo.toml" - "src-tauri/Cargo.lock" - - "nodecar/package.json" - - "nodecar/pnpm-lock.yaml" permissions: security-events: write @@ -57,7 +53,6 @@ jobs: --skip-git --lockfile=pnpm-lock.yaml --lockfile=src-tauri/Cargo.lock - --lockfile=nodecar/pnpm-lock.yaml ./ scan-pr: @@ -70,5 +65,4 @@ jobs: --skip-git --lockfile=pnpm-lock.yaml --lockfile=src-tauri/Cargo.lock - --lockfile=nodecar/pnpm-lock.yaml ./ diff --git a/.github/workflows/pr-checks.yml b/.github/workflows/pr-checks.yml index 8c2341e..77cc385 100644 --- a/.github/workflows/pr-checks.yml +++ b/.github/workflows/pr-checks.yml @@ -35,7 +35,6 @@ jobs: -r --skip-git --lockfile=pnpm-lock.yaml - --lockfile=nodecar/pnpm-lock.yaml --lockfile=src-tauri/Cargo.lock ./ diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3ecf12a..93b3e95 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,7 +20,6 @@ jobs: --skip-git --lockfile=pnpm-lock.yaml --lockfile=src-tauri/Cargo.lock - --lockfile=nodecar/pnpm-lock.yaml ./ permissions: security-events: write @@ -71,37 +70,21 @@ jobs: arch: "aarch64" target: "aarch64-apple-darwin" pkg_target: "latest-macos-arm64" - nodecar_script: "build:mac-aarch64" - platform: "macos-latest" args: "--target x86_64-apple-darwin --verbose" arch: "x86_64" target: "x86_64-apple-darwin" pkg_target: "latest-macos-x64" - nodecar_script: "build:mac-x86_64" - platform: "ubuntu-22.04" args: "--target x86_64-unknown-linux-gnu --verbose" arch: "x86_64" target: "x86_64-unknown-linux-gnu" pkg_target: "latest-linux-x64" - nodecar_script: "build:linux-x64" - platform: "ubuntu-22.04-arm" args: "--target aarch64-unknown-linux-gnu --verbose" arch: "aarch64" target: "aarch64-unknown-linux-gnu" pkg_target: "latest-linux-arm64" - nodecar_script: "build:linux-arm64" - # - platform: "windows-latest" - # args: "--target x86_64-pc-windows-msvc --verbose" - # arch: "x86_64" - # target: "x86_64-pc-windows-msvc" - # pkg_target: "latest-win-x64" - # nodecar_script: "build:win-x64" - # - platform: "windows-11-arm" - # args: "--target aarch64-pc-windows-msvc --verbose" - # arch: "aarch64" - # target: "aarch64-pc-windows-msvc" - # pkg_target: "latest-win-arm64" - # nodecar_script: "build:win-arm64" runs-on: ${{ matrix.platform }} steps: @@ -141,26 +124,6 @@ jobs: - name: Install frontend dependencies run: pnpm install --frozen-lockfile - - name: Build nodecar sidecar - shell: bash - working-directory: ./nodecar - run: | - pnpm run ${{ matrix.nodecar_script }} - - - name: Copy nodecar binary to Tauri binaries - shell: bash - run: | - mkdir -p src-tauri/binaries - if [[ "${{ matrix.platform }}" == "windows-latest" ]]; then - cp nodecar/nodecar-bin src-tauri/binaries/nodecar-${{ matrix.target }}.exe - else - cp nodecar/nodecar-bin src-tauri/binaries/nodecar-${{ matrix.target }} - fi - - # - name: Download Camoufox for testing - # run: npx camoufox-js fetch - # continue-on-error: true - - name: Build frontend run: pnpm exec next build diff --git a/.github/workflows/rolling-release.yml b/.github/workflows/rolling-release.yml index 1f79572..e871f6e 100644 --- a/.github/workflows/rolling-release.yml +++ b/.github/workflows/rolling-release.yml @@ -19,7 +19,6 @@ jobs: --skip-git --lockfile=pnpm-lock.yaml --lockfile=src-tauri/Cargo.lock - --lockfile=nodecar/pnpm-lock.yaml ./ permissions: security-events: write @@ -70,37 +69,26 @@ jobs: arch: "aarch64" target: "aarch64-apple-darwin" pkg_target: "latest-macos-arm64" - nodecar_script: "build:mac-aarch64" - platform: "macos-latest" args: "--target x86_64-apple-darwin --verbose" arch: "x86_64" target: "x86_64-apple-darwin" pkg_target: "latest-macos-x64" - nodecar_script: "build:mac-x86_64" - platform: "ubuntu-22.04" args: "--target x86_64-unknown-linux-gnu --verbose" arch: "x86_64" target: "x86_64-unknown-linux-gnu" pkg_target: "latest-linux-x64" - nodecar_script: "build:linux-x64" - platform: "ubuntu-22.04-arm" args: "--target aarch64-unknown-linux-gnu --verbose" arch: "aarch64" target: "aarch64-unknown-linux-gnu" pkg_target: "latest-linux-arm64" - nodecar_script: "build:linux-arm64" - platform: "windows-latest" args: "--target x86_64-pc-windows-msvc --verbose" arch: "x86_64" target: "x86_64-pc-windows-msvc" pkg_target: "latest-win-x64" - nodecar_script: "build:win-x64" - # - platform: "windows-11-arm" - # args: "--target aarch64-pc-windows-msvc --verbose" - # arch: "aarch64" - # target: "aarch64-pc-windows-msvc" - # pkg_target: "latest-win-arm64" - # nodecar_script: "build:win-arm64" runs-on: ${{ matrix.platform }} steps: @@ -140,26 +128,6 @@ jobs: - name: Install frontend dependencies run: pnpm install --frozen-lockfile - - name: Build nodecar sidecar - shell: bash - working-directory: ./nodecar - run: | - pnpm run ${{ matrix.nodecar_script }} - - - name: Copy nodecar binary to Tauri binaries - shell: bash - run: | - mkdir -p src-tauri/binaries - if [[ "${{ matrix.platform }}" == "windows-latest" ]]; then - cp nodecar/nodecar-bin src-tauri/binaries/nodecar-${{ matrix.target }}.exe - else - cp nodecar/nodecar-bin src-tauri/binaries/nodecar-${{ matrix.target }} - fi - - # - name: Download Camoufox for testing - # run: npx camoufox-js fetch - # continue-on-error: true - - name: Build frontend run: pnpm exec next build diff --git a/donut-sync/.env.example b/donut-sync/.env.example index 1cff475..1976b7e 100644 --- a/donut-sync/.env.example +++ b/donut-sync/.env.example @@ -1,6 +1,6 @@ SYNC_TOKEN=secret-sync-token -PORT=3939 +PORT=12342 S3_ENDPOINT=http://localhost:8987 S3_REGION=us-east-1 S3_ACCESS_KEY_ID=minioadmin diff --git a/nodecar/copy-binary.sh b/nodecar/copy-binary.sh deleted file mode 100755 index 8a9fae9..0000000 --- a/nodecar/copy-binary.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -# Determine file extension based on platform -if [[ "$OSTYPE" == "msys" || "$OSTYPE" == "win32" || "$OSTYPE" == "cygwin" ]]; then - EXT=".exe" -else - EXT="" -fi - -# If architecture provided in the command line, use it to rename the binary in TARGET_TRIPLE -if [ -n "$1" ]; then - TARGET_TRIPLE="$1" -else - RUST_INFO=$(rustc -vV) - TARGET_TRIPLE=$(echo "$RUST_INFO" | grep -o 'host: [^ ]*' | cut -d' ' -f2) -fi - -# Check if target triple was found -if [ -z "$TARGET_TRIPLE" ]; then - echo "Failed to determine platform target triple" >&2 - exit 1 -fi - -# Copy the file with target triple suffix -cp "nodecar-bin" "../src-tauri/binaries/nodecar-${TARGET_TRIPLE}${EXT}" diff --git a/nodecar/package.json b/nodecar/package.json deleted file mode 100644 index 9acc173..0000000 --- a/nodecar/package.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "nodecar", - "version": "1.0.0", - "description": "", - "main": "dist/index.js", - "bin": "dist/index.js", - "scripts": { - "watch": "nodemon --exec ts-node --esm ./src/index.ts --watch src", - "dev": "node --loader ts-node/esm ./src/index.ts", - "start": "tsc && node ./dist/index.js", - "rename-binary": "sh ./copy-binary.sh", - "build": "tsc && banderole bundle . --output nodecar-bin && pnpm rename-binary", - "build:mac-aarch64": "tsc && banderole bundle . --output nodecar-bin && pnpm rename-binary", - "build:mac-x86_64": "tsc && banderole bundle . --output nodecar-bin && pnpm rename-binary", - "build:linux-x64": "tsc && banderole bundle . --output nodecar-bin && pnpm rename-binary", - "build:linux-arm64": "tsc && banderole bundle . --output nodecar-bin && pnpm rename-binary", - "build:win-x64": "tsc && banderole bundle . --output nodecar-bin && pnpm rename-binary", - "build:win-arm64": "tsc && banderole bundle . --output nodecar-bin && pnpm rename-binary" - }, - "keywords": [], - "author": "", - "license": "AGPL-3.0", - "dependencies": { - "@types/node": "^25.0.3", - "commander": "^14.0.2", - "donutbrowser-camoufox-js": "^0.7.0", - "dotenv": "^17.2.3", - "fingerprint-generator": "^2.1.79", - "get-port": "^7.1.0", - "nodemon": "^3.1.11", - "playwright-core": "^1.57.0", - "proxy-chain": "^2.7.0", - "tmp": "^0.2.5", - "ts-node": "^10.9.2", - "typescript": "^5.9.3" - }, - "devDependencies": { - "@types/tmp": "^0.2.6" - } -} diff --git a/nodecar/src/camoufox-launcher.ts b/nodecar/src/camoufox-launcher.ts deleted file mode 100644 index 305cc21..0000000 --- a/nodecar/src/camoufox-launcher.ts +++ /dev/null @@ -1,519 +0,0 @@ -import { spawn } from "node:child_process"; -import path from "node:path"; -import { launchOptions } from "donutbrowser-camoufox-js"; -import type { LaunchOptions } from "donutbrowser-camoufox-js/dist/utils.js"; -import { - type CamoufoxConfig, - deleteCamoufoxConfig, - generateCamoufoxId, - getCamoufoxConfig, - listCamoufoxConfigs, - saveCamoufoxConfig, -} from "./camoufox-storage.js"; - -/** - * Convert camoufox fingerprint format to fingerprint-generator format - * @param camoufoxFingerprint The camoufox fingerprint object - * @returns fingerprint-generator object - */ -function convertCamoufoxToFingerprintGenerator( - camoufoxFingerprint: Record, -): any { - const fingerprintObj: Record = { - navigator: {}, - screen: {}, - videoCard: {}, - headers: {}, - battery: {}, - }; - - // Mapping from camoufox keys to fingerprint-generator structure based on the YAML - const mappings: Record = { - // Navigator properties - "navigator.userAgent": "navigator.userAgent", - "navigator.platform": "navigator.platform", - "navigator.hardwareConcurrency": "navigator.hardwareConcurrency", - "navigator.maxTouchPoints": "navigator.maxTouchPoints", - "navigator.doNotTrack": "navigator.doNotTrack", - "navigator.appCodeName": "navigator.appCodeName", - "navigator.appName": "navigator.appName", - "navigator.appVersion": "navigator.appVersion", - "navigator.oscpu": "navigator.oscpu", - "navigator.product": "navigator.product", - "navigator.language": "navigator.language", - "navigator.languages": "navigator.languages", - "navigator.globalPrivacyControl": "navigator.globalPrivacyControl", - - // Screen properties - "screen.width": "screen.width", - "screen.height": "screen.height", - "screen.availWidth": "screen.availWidth", - "screen.availHeight": "screen.availHeight", - "screen.availTop": "screen.availTop", - "screen.availLeft": "screen.availLeft", - "screen.colorDepth": "screen.colorDepth", - "screen.pixelDepth": "screen.pixelDepth", - "window.outerWidth": "screen.outerWidth", - "window.outerHeight": "screen.outerHeight", - "window.innerWidth": "screen.innerWidth", - "window.innerHeight": "screen.innerHeight", - "window.screenX": "screen.screenX", - "window.screenY": "screen.screenY", - "screen.pageXOffset": "screen.pageXOffset", - "screen.pageYOffset": "screen.pageYOffset", - "window.devicePixelRatio": "screen.devicePixelRatio", - "document.body.clientWidth": "screen.clientWidth", - "document.body.clientHeight": "screen.clientHeight", - - // WebGL properties - "webGl:vendor": "videoCard.vendor", - "webGl:renderer": "videoCard.renderer", - - // Headers - "headers.Accept-Encoding": "headers.Accept-Encoding", - - // Battery - "battery:charging": "battery.charging", - "battery:chargingTime": "battery.chargingTime", - "battery:dischargingTime": "battery.dischargingTime", - }; - - // Apply mappings - for (const [camoufoxKey, fingerprintPath] of Object.entries(mappings)) { - if (camoufoxFingerprint[camoufoxKey] !== undefined) { - const pathParts = fingerprintPath.split("."); - let current = fingerprintObj; - - // Navigate to the nested property, creating objects as needed - for (let i = 0; i < pathParts.length - 1; i++) { - const part = pathParts[i]; - if (!current[part]) { - current[part] = {}; - } - current = current[part]; - } - - // Set the final value - const finalKey = pathParts[pathParts.length - 1]; - current[finalKey] = camoufoxFingerprint[camoufoxKey]; - } - } - - // Handle fonts separately - if (camoufoxFingerprint.fonts && Array.isArray(camoufoxFingerprint.fonts)) { - fingerprintObj.fonts = camoufoxFingerprint.fonts; - } - - return { ...camoufoxFingerprint, ...fingerprintObj }; -} - -/** - * Start a Camoufox instance in a separate process - * @param options Camoufox launch options - * @param profilePath Profile directory path - * @param url Optional URL to open - * @returns Promise resolving to the Camoufox configuration - */ -export async function startCamoufoxProcess( - options: LaunchOptions = {}, - profilePath?: string, - url?: string, - customConfig?: string, -): Promise { - // Generate a unique ID for this instance - const id = generateCamoufoxId(); - - // Ensure profile path is absolute if provided - const absoluteProfilePath = profilePath - ? path.resolve(profilePath) - : undefined; - - // Create the Camoufox configuration - const config: CamoufoxConfig = { - id, - options: JSON.parse(JSON.stringify(options)), // Deep clone to avoid reference sharing - profilePath: absoluteProfilePath, - url, - customConfig, - }; - - // Save the configuration before starting the process - saveCamoufoxConfig(config); - - // Build the command arguments - const args = [ - path.join(__dirname, "index.js"), - "camoufox-worker", - "start", - "--id", - id, - ]; - - // Spawn the process with proper detachment - similar to proxy implementation - const child = spawn(process.execPath, args, { - detached: true, - stdio: ["ignore", "pipe", "pipe"], // Capture stdout and stderr for startup feedback - cwd: process.cwd(), - env: { - ...process.env, - NODE_ENV: "production", - // Ensure Camoufox can find its dependencies - NODE_PATH: process.env.NODE_PATH || "", - }, - }); - - // Wait for the worker to start successfully or fail - with shorter timeout for quick response - return new Promise((resolve, reject) => { - let resolved = false; - let stdoutBuffer = ""; - let stderrBuffer = ""; - - // Shorter timeout for quick startup feedback - const timeout = setTimeout(() => { - if (!resolved) { - resolved = true; - child.kill("SIGKILL"); - reject( - new Error(`Camoufox worker ${id} startup timeout after 5 seconds`), - ); - } - }, 5000); - - // Handle stdout - look for success JSON - if (child.stdout) { - child.stdout.on("data", (data) => { - const output = data.toString(); - stdoutBuffer += output; - - // Look for success JSON message - const lines = stdoutBuffer.split("\n"); - for (const line of lines) { - if (line.trim()) { - try { - const parsed = JSON.parse(line.trim()); - if (parsed.success && parsed.id === id && parsed.processId) { - if (!resolved) { - resolved = true; - clearTimeout(timeout); - config.processId = parsed.processId; - saveCamoufoxConfig(config); - - // Unref immediately after success to detach properly - child.unref(); - resolve(config); - return; - } - } - } catch { - // Not JSON, continue - } - } - } - }); - } - - // Handle stderr - look for error JSON - if (child.stderr) { - child.stderr.on("data", (data) => { - const output = data.toString(); - stderrBuffer += output; - - // Look for error JSON message - const lines = stderrBuffer.split("\n"); - for (const line of lines) { - if (line.trim()) { - try { - const parsed = JSON.parse(line.trim()); - if (parsed.error && parsed.id === id) { - if (!resolved) { - resolved = true; - clearTimeout(timeout); - reject( - new Error( - `Camoufox worker failed: ${parsed.message || parsed.error}`, - ), - ); - return; - } - } - } catch { - // Not JSON, continue - } - } - } - }); - } - - child.on("exit", (code, signal) => { - if (!resolved) { - resolved = true; - clearTimeout(timeout); - if (code !== 0) { - reject( - new Error( - `Camoufox worker ${id} exited with code ${code} and signal ${signal}. Stderr: ${stderrBuffer}`, - ), - ); - } else { - // Process exited successfully but we didn't get success message - reject( - new Error( - `Camoufox worker ${id} exited without success confirmation`, - ), - ); - } - } - }); - }); -} - -/** - * Check if a process is running by PID - */ -function isProcessRunning(pid: number): boolean { - try { - process.kill(pid, 0); - return true; - } catch { - return false; - } -} - -/** - * Stop a Camoufox process - * @param id The Camoufox ID to stop - * @returns Promise resolving to true if stopped, false if not found - */ -export async function stopCamoufoxProcess(id: string): Promise { - const config = getCamoufoxConfig(id); - - if (!config) { - return false; - } - - const pid = config.processId; - - try { - // Method 1: If we have a process ID, kill by PID with proper signal sequence - if (pid && isProcessRunning(pid)) { - try { - // First try SIGTERM for graceful shutdown - process.kill(pid, "SIGTERM"); - - // Wait up to 3 seconds for graceful shutdown - for (let i = 0; i < 30; i++) { - await new Promise((resolve) => setTimeout(resolve, 100)); - if (!isProcessRunning(pid)) { - break; - } - } - - // If still running, force kill - if (isProcessRunning(pid)) { - process.kill(pid, "SIGKILL"); - // Wait for SIGKILL to take effect - for (let i = 0; i < 20; i++) { - await new Promise((resolve) => setTimeout(resolve, 100)); - if (!isProcessRunning(pid)) { - break; - } - } - } - } catch { - // Process might have already exited - } - } - - // Method 2: Pattern-based kill as fallback (kills any child processes) - await new Promise((resolve) => { - const killByPattern = spawn( - "pkill", - ["-TERM", "-f", `camoufox-worker.*${id}`], - { stdio: "ignore" }, - ); - killByPattern.on("exit", () => resolve()); - setTimeout(() => resolve(), 1000); - }); - - // Wait a moment then force kill any remaining - await new Promise((resolve) => setTimeout(resolve, 500)); - - await new Promise((resolve) => { - const killByPatternForce = spawn( - "pkill", - ["-KILL", "-f", `camoufox-worker.*${id}`], - { stdio: "ignore" }, - ); - killByPatternForce.on("exit", () => resolve()); - setTimeout(() => resolve(), 1000); - }); - - // Also kill any Firefox processes associated with this profile - if (config.profilePath) { - await new Promise((resolve) => { - const killFirefox = spawn( - "pkill", - ["-KILL", "-f", config.profilePath!], - { stdio: "ignore" }, - ); - killFirefox.on("exit", () => resolve()); - setTimeout(() => resolve(), 1000); - }); - } - - // Verify process is actually dead - if (pid && isProcessRunning(pid)) { - // Last resort: SIGKILL again - try { - process.kill(pid, "SIGKILL"); - } catch { - // Ignore - } - } - - // Delete the configuration - deleteCamoufoxConfig(id); - return true; - } catch { - // Delete the configuration even if stopping failed - deleteCamoufoxConfig(id); - return false; - } -} - -/** - * Stop all Camoufox processes - * @returns Promise resolving when all instances are stopped - */ -export async function stopAllCamoufoxProcesses(): Promise { - const configs = listCamoufoxConfigs(); - - const stopPromises = configs.map((config) => stopCamoufoxProcess(config.id)); - await Promise.all(stopPromises); -} - -interface GenerateConfigOptions { - proxy?: string; - maxWidth?: number; - maxHeight?: number; - minWidth?: number; - minHeight?: number; - geoip?: string | boolean; - blockImages?: boolean; - blockWebrtc?: boolean; - blockWebgl?: boolean; - executablePath?: string; - fingerprint?: string; - os?: "windows" | "macos" | "linux"; -} - -/** - * Generate Camoufox configuration using launchOptions - * @param options Configuration options - * @returns Promise resolving to the generated config JSON string - */ -export async function generateCamoufoxConfig( - options: GenerateConfigOptions, -): Promise { - try { - const launchOpts: any = { - headless: false, - i_know_what_im_doing: true, - config: { - disableTheming: true, - showcursor: false, - }, - }; - - if (options.geoip) { - launchOpts.geoip = true; - } - - if (options.blockImages) { - launchOpts.block_images = true; - } - if (options.blockWebrtc) { - launchOpts.block_webrtc = true; - } - if (options.blockWebgl) { - launchOpts.block_webgl = true; - } - - if (options.executablePath) { - launchOpts.executable_path = options.executablePath; - } - - if (options.proxy) { - launchOpts.proxy = options.proxy; - } - - // If fingerprint is provided, use it and ignore other options except executable_path and block_* - if (options.fingerprint) { - try { - const camoufoxFingerprint = JSON.parse(options.fingerprint); - - if (camoufoxFingerprint.timezone) { - launchOpts.config.timezone = camoufoxFingerprint.timezone; - } - - // Convert camoufox fingerprint format to fingerprint-generator format - const fingerprintObj = - convertCamoufoxToFingerprintGenerator(camoufoxFingerprint); - launchOpts.fingerprint = fingerprintObj; - } catch (error) { - throw new Error(`Invalid fingerprint JSON: ${error}`); - } - } else { - // Use individual options to build configuration - - // Build screen configuration with min/max dimensions - const screen: { - minWidth?: number; - maxWidth?: number; - minHeight?: number; - maxHeight?: number; - } = {}; - - if (options.minWidth) screen.minWidth = options.minWidth; - if (options.maxWidth) screen.maxWidth = options.maxWidth; - if (options.minHeight) screen.minHeight = options.minHeight; - if (options.maxHeight) screen.maxHeight = options.maxHeight; - - if (Object.keys(screen).length > 0) { - launchOpts.screen = screen; - } - } - - launchOpts.allowAddonNewTab = true; - - // Add OS option for fingerprint generation - if (options.os) { - launchOpts.os = options.os; - } - - // Generate the configuration using launchOptions - const generatedOptions = await launchOptions(launchOpts); - - // Extract the environment variables that contain the config - const envVars = generatedOptions.env || {}; - - // Reconstruct the config from environment variables using getEnvVars utility - let configStr = ""; - let chunkIndex = 1; - - while (envVars[`CAMOU_CONFIG_${chunkIndex}`]) { - configStr += envVars[`CAMOU_CONFIG_${chunkIndex}`]; - chunkIndex++; - } - - if (!configStr) { - throw new Error("No configuration generated"); - } - - // Parse and return the config as JSON string - const config = JSON.parse(configStr); - return JSON.stringify(config); - } catch (error) { - throw new Error(`Failed to generate Camoufox config: ${error}`); - } -} diff --git a/nodecar/src/camoufox-storage.ts b/nodecar/src/camoufox-storage.ts deleted file mode 100644 index 886f88d..0000000 --- a/nodecar/src/camoufox-storage.ts +++ /dev/null @@ -1,153 +0,0 @@ -import fs from "node:fs"; -import path from "node:path"; -import type { LaunchOptions } from "donutbrowser-camoufox-js/dist/utils.js"; -import tmp from "tmp"; - -export interface CamoufoxConfig { - id: string; - options: LaunchOptions; - profilePath?: string; - url?: string; - processId?: number; - customConfig?: string; // JSON string of the fingerprint config -} - -const STORAGE_DIR = path.join(tmp.tmpdir, "donutbrowser", "camoufox"); - -if (!fs.existsSync(STORAGE_DIR)) { - fs.mkdirSync(STORAGE_DIR, { recursive: true }); -} - -/** - * Save a Camoufox configuration to disk - * @param config The Camoufox configuration to save - */ -export function saveCamoufoxConfig(config: CamoufoxConfig): void { - const filePath = path.join(STORAGE_DIR, `${config.id}.json`); - fs.writeFileSync(filePath, JSON.stringify(config, null, 2)); -} - -/** - * Get a Camoufox configuration by ID - * @param id The Camoufox ID - * @returns The Camoufox configuration or null if not found - */ -export function getCamoufoxConfig(id: string): CamoufoxConfig | null { - const filePath = path.join(STORAGE_DIR, `${id}.json`); - - if (!fs.existsSync(filePath)) { - return null; - } - - try { - const content = fs.readFileSync(filePath, "utf-8"); - return JSON.parse(content) as CamoufoxConfig; - } catch (error) { - console.error({ - message: `Error reading Camoufox config ${id}`, - error: (error as Error).message, - }); - return null; - } -} - -/** - * Delete a Camoufox configuration - * @param id The Camoufox ID to delete - * @returns True if deleted, false if not found - */ -export function deleteCamoufoxConfig(id: string): boolean { - const filePath = path.join(STORAGE_DIR, `${id}.json`); - - if (!fs.existsSync(filePath)) { - return false; - } - - try { - fs.unlinkSync(filePath); - return true; - } catch (error) { - console.error({ - message: `Error deleting Camoufox config ${id}`, - error: (error as Error).message, - }); - return false; - } -} - -/** - * List all saved Camoufox configurations - * @returns Array of Camoufox configurations - */ -export function listCamoufoxConfigs(): CamoufoxConfig[] { - if (!fs.existsSync(STORAGE_DIR)) { - return []; - } - - try { - return fs - .readdirSync(STORAGE_DIR) - .filter((file) => file.endsWith(".json")) - .map((file) => { - try { - const content = fs.readFileSync( - path.join(STORAGE_DIR, file), - "utf-8", - ); - return JSON.parse(content) as CamoufoxConfig; - } catch (error) { - console.error({ - message: `Error reading Camoufox config ${file}`, - error, - }); - return null; - } - }) - .filter((config): config is CamoufoxConfig => config !== null) - .map((config) => { - config.options = "Removed for logging" as any; - config.customConfig = "Removed for logging" as any; - return config; - }); - } catch (error) { - console.error({ message: "Error listing Camoufox configs:", error }); - return []; - } -} - -/** - * Update a Camoufox configuration - * @param config The Camoufox configuration to update - * @returns True if updated, false if not found - */ -export function updateCamoufoxConfig(config: CamoufoxConfig): boolean { - const filePath = path.join(STORAGE_DIR, `${config.id}.json`); - - try { - fs.readFileSync(filePath, "utf-8"); - fs.writeFileSync(filePath, JSON.stringify(config, null, 2)); - return true; - } catch (error) { - if ((error as NodeJS.ErrnoException).code === "ENOENT") { - console.error({ - message: `Config ${config.id} was deleted while the app was running`, - }); - return false; - } - - console.error({ - message: `Error updating Camoufox config ${config.id}`, - error, - }); - return false; - } -} - -/** - * Generate a unique ID for a Camoufox instance - * @returns A unique ID string - */ -export function generateCamoufoxId(): string { - // Include process ID to ensure uniqueness across multiple processes - return `camoufox_${Date.now()}_${process.pid}_${Math.floor(Math.random() * 10000)}`; -} diff --git a/nodecar/src/camoufox-worker.ts b/nodecar/src/camoufox-worker.ts deleted file mode 100644 index 99f9190..0000000 --- a/nodecar/src/camoufox-worker.ts +++ /dev/null @@ -1,430 +0,0 @@ -import fs from "node:fs"; -import path from "node:path"; -import { launchOptions } from "donutbrowser-camoufox-js"; -import type { LaunchOptions } from "donutbrowser-camoufox-js/dist/utils.js"; -import { type Browser, type BrowserContext, firefox } from "playwright-core"; -import tmp from "tmp"; -import { getCamoufoxConfig, saveCamoufoxConfig } from "./camoufox-storage.js"; -import { getEnvVars, parseProxyString } from "./utils.js"; - -// Set up debug logging to a file -const LOG_DIR = path.join(tmp.tmpdir, "donutbrowser", "camoufox-logs"); -if (!fs.existsSync(LOG_DIR)) { - fs.mkdirSync(LOG_DIR, { recursive: true }); -} - -function debugLog(id: string, message: string, data?: any): void { - const logFile = path.join(LOG_DIR, `${id}.log`); - const timestamp = new Date().toISOString(); - const logMessage = data - ? `[${timestamp}] ${message}: ${JSON.stringify(data, null, 2)}\n` - : `[${timestamp}] ${message}\n`; - fs.appendFileSync(logFile, logMessage); -} - -/** - * Run a Camoufox browser server as a worker process - * @param id The Camoufox configuration ID - */ -export async function runCamoufoxWorker(id: string): Promise { - debugLog(id, "Worker starting", { pid: process.pid }); - - // Get the Camoufox configuration - debugLog(id, "Loading Camoufox configuration"); - const config = getCamoufoxConfig(id); - - if (!config) { - debugLog(id, "Configuration not found"); - console.error( - JSON.stringify({ - error: "Configuration not found", - id: id, - }), - ); - process.exit(1); - } - - debugLog(id, "Configuration loaded successfully", { - profilePath: config.profilePath, - hasOptions: !!config.options, - hasCustomConfig: !!config.customConfig, - hasUrl: !!config.url, - }); - - config.processId = process.pid; - saveCamoufoxConfig(config); - - console.log( - JSON.stringify({ - success: true, - id: id, - processId: process.pid, - profilePath: config.profilePath, - message: "Camoufox worker started successfully", - }), - ); - - // Launch browser in background - this can take time and may fail - setImmediate(async () => { - debugLog(id, "Starting browser launch in background"); - let browser: Browser | null = null; - let context: BrowserContext | null = null; - let windowCheckInterval: NodeJS.Timeout | null = null; - - // Graceful shutdown handler with access to browser and server - const gracefulShutdown = async () => { - debugLog(id, "Graceful shutdown initiated"); - try { - // Clear any intervals first - if (windowCheckInterval) { - clearInterval(windowCheckInterval); - } - - // Close browser context and server if they exist - if (context && !context.pages) { - // Context is already closed - } else if (context) { - await context.close(); - } - - if (browser?.isConnected()) { - await browser.close(); - } - } catch { - // Ignore cleanup errors during shutdown - } - process.exit(0); - }; - - // Handle various quit signals for proper macOS Command+Q support - process.on("SIGTERM", () => void gracefulShutdown()); - process.on("SIGINT", () => void gracefulShutdown()); - process.on("SIGHUP", () => void gracefulShutdown()); - process.on("SIGQUIT", () => void gracefulShutdown()); - - // Handle uncaught exceptions and unhandled rejections - process.on("uncaughtException", () => void gracefulShutdown()); - process.on("unhandledRejection", () => void gracefulShutdown()); - - try { - debugLog(id, "Preparing launch options"); - // Deep clone to avoid reference sharing and ensure fresh configuration for each instance - const camoufoxOptions: LaunchOptions = JSON.parse( - JSON.stringify(config.options || {}), - ); - debugLog(id, "Base options cloned", { - hasOptions: Object.keys(camoufoxOptions).length, - }); - - // Add profile path if provided - if (config.profilePath) { - camoufoxOptions.user_data_dir = config.profilePath; - debugLog(id, "Set user_data_dir", { profilePath: config.profilePath }); - } - - // Ensure block options are properly set - if (camoufoxOptions.block_images) { - camoufoxOptions.block_images = true; - } - - if (camoufoxOptions.block_webgl) { - camoufoxOptions.block_webgl = true; - } - - if (camoufoxOptions.block_webrtc) { - camoufoxOptions.block_webrtc = true; - } - - // Check for headless mode from config (no environment variable check) - if (camoufoxOptions.headless) { - camoufoxOptions.headless = true; - } - - // Always set these defaults - ensure they are applied for each instance - camoufoxOptions.i_know_what_im_doing = true; - camoufoxOptions.config = { - disableTheming: true, - showcursor: false, - ...(camoufoxOptions.config || {}), - }; - debugLog(id, "Set default options", { - i_know_what_im_doing: true, - disableTheming: true, - showcursor: false, - }); - - // Generate fresh options for this specific instance - debugLog(id, "Generating launch options via launchOptions function"); - const generatedOptions = await launchOptions(camoufoxOptions); - debugLog(id, "Launch options generated successfully", { - hasEnv: !!generatedOptions.env, - argsLength: generatedOptions.args?.length || 0, - }); - - // Start with process environment to ensure proper inheritance - let finalEnv = { ...process.env }; - debugLog(id, "Base environment variables set", { - envVarCount: Object.keys(finalEnv).length, - }); - - // Add generated options environment variables - if (generatedOptions.env) { - finalEnv = { ...finalEnv, ...generatedOptions.env }; - debugLog(id, "Added generated environment variables", { - generatedEnvCount: Object.keys(generatedOptions.env).length, - totalEnvCount: Object.keys(finalEnv).length, - }); - } - - // If we have a custom config from Rust, use it directly as environment variables - if (config.customConfig) { - debugLog(id, "Processing custom config", { - customConfigLength: config.customConfig.length, - }); - try { - // Parse the custom config JSON string - const customConfigObj = JSON.parse(config.customConfig); - debugLog(id, "Custom config parsed successfully", { - customConfigKeys: Object.keys(customConfigObj), - }); - - // Ensure default config values are preserved even with custom config - const mergedConfig = { - ...customConfigObj, - disableTheming: true, - showcursor: false, - // allowAddonNewTab will be handled from the fingerprint config if present - }; - - // Convert merged config to environment variables using getEnvVars - const customEnvVars = getEnvVars(mergedConfig); - debugLog(id, "Custom config converted to environment variables", { - customEnvVarCount: Object.keys(customEnvVars).length, - }); - - // Merge custom config with generated config (custom takes precedence) - finalEnv = { ...finalEnv, ...customEnvVars }; - debugLog(id, "Custom config merged with final environment", { - finalEnvCount: Object.keys(finalEnv).length, - }); - } catch (error) { - debugLog(id, "Failed to parse custom config", { - error: error instanceof Error ? error.message : String(error), - }); - console.error( - `Camoufox worker ${id}: Failed to parse custom config, using generated config:`, - error, - ); - await gracefulShutdown(); - return; - } - } else { - debugLog(id, "No custom config provided"); - } - // Prepare profile path for persistent context - const profilePath = config.profilePath || ""; - debugLog(id, "Profile path prepared", { profilePath }); - - // Launch persistent context with the final configuration - const finalOptions: any = { - ...generatedOptions, - env: finalEnv, - }; - debugLog(id, "Final launch options prepared", { - hasExecutablePath: !!finalOptions.executablePath, - hasProxy: !!camoufoxOptions.proxy, - profilePath, - }); - - // If a custom executable path was provided, ensure Playwright uses it - if ( - (camoufoxOptions as any).executable_path && - typeof (camoufoxOptions as any).executable_path === "string" - ) { - finalOptions.executablePath = (camoufoxOptions as any) - .executable_path as string; - debugLog(id, "Custom executable path set", { - executablePath: finalOptions.executablePath, - }); - } - - // Only add proxy if it exists and is valid - if (camoufoxOptions.proxy) { - debugLog(id, "Processing proxy configuration", { - proxyString: camoufoxOptions.proxy, - }); - try { - finalOptions.proxy = parseProxyString(camoufoxOptions.proxy); - debugLog(id, "Proxy parsed successfully"); - } catch (error) { - debugLog(id, "Failed to parse proxy", { - error: error instanceof Error ? error.message : String(error), - }); - console.error({ - message: "Failed to parse proxy, launching without proxy", - error, - }); - await gracefulShutdown(); - return; - } - } - - // Use launchPersistentContext instead of launchServer - debugLog(id, "Launching persistent context", { profilePath }); - context = await firefox.launchPersistentContext( - profilePath, - finalOptions, - ); - debugLog(id, "Persistent context launched successfully"); - - // Get the browser instance from context - browser = context.browser(); - debugLog(id, "Browser instance obtained from context", { - browserConnected: browser?.isConnected(), - }); - - // Handle browser disconnection for proper cleanup - if (browser) { - browser.on("disconnected", () => void gracefulShutdown()); - debugLog(id, "Browser disconnect handler registered"); - } - - // Handle context close for proper cleanup - context.on("close", () => void gracefulShutdown()); - debugLog(id, "Context close handler registered"); - - saveCamoufoxConfig(config); - - // Monitor for window closure - const startWindowMonitoring = () => { - debugLog(id, "Starting window monitoring"); - windowCheckInterval = setInterval(async () => { - try { - // Check if context is still active - if (!context?.pages || context.pages().length === 0) { - debugLog(id, "No pages found in context, shutting down"); - if (windowCheckInterval) { - clearInterval(windowCheckInterval); - } - await gracefulShutdown(); - return; - } - - // Check if browser is still connected (if available) - if (browser && !browser.isConnected()) { - debugLog(id, "Browser disconnected, shutting down"); - if (windowCheckInterval) { - clearInterval(windowCheckInterval); - } - await gracefulShutdown(); - return; - } - - // Check pages in the persistent context - const pages = context.pages(); - if (pages.length === 0) { - debugLog(id, "No pages in context, shutting down"); - if (windowCheckInterval) { - clearInterval(windowCheckInterval); - } - await gracefulShutdown(); - } - } catch (error) { - debugLog(id, "Error in window monitoring", { - error: error instanceof Error ? error.message : String(error), - }); - // If we can't check windows, assume browser is closing - if (windowCheckInterval) { - clearInterval(windowCheckInterval); - } - await gracefulShutdown(); - } - }, 1000); // Check every second - }; - - // Handle URL opening if provided - if (config.url) { - debugLog(id, "Opening URL in browser", { url: config.url }); - try { - const pages = await context.pages(); - if (pages.length) { - const page = pages[0]; - debugLog(id, "Navigating to URL"); - await page.goto(config.url, { - waitUntil: "domcontentloaded", - timeout: 30000, - }); - debugLog(id, "URL opened successfully"); - - // Start monitoring after page is created - startWindowMonitoring(); - } else { - debugLog(id, "No pages available to open URL"); - startWindowMonitoring(); - } - } catch (urlError) { - debugLog(id, "Failed to open URL", { - error: - urlError instanceof Error ? urlError.message : String(urlError), - }); - console.error({ - message: "Failed to open URL", - error: urlError, - }); - // URL opening failure doesn't affect startup success - // Still start monitoring - startWindowMonitoring(); - } - } else { - debugLog(id, "No URL provided, starting monitoring"); - // Start monitoring after page is created - startWindowMonitoring(); - } - - // Monitor browser/context connection - debugLog(id, "Starting keep-alive monitoring"); - const keepAlive = setInterval(async () => { - try { - // Check if context is still active - if (!context?.pages) { - debugLog(id, "Context not active in keep-alive, shutting down"); - clearInterval(keepAlive); - await gracefulShutdown(); - return; - } - - // Check browser connection if available - if (browser && !browser.isConnected()) { - debugLog(id, "Browser not connected in keep-alive, shutting down"); - clearInterval(keepAlive); - await gracefulShutdown(); - return; - } - } catch (error) { - debugLog(id, "Error in keep-alive check", { - error: error instanceof Error ? error.message : String(error), - }); - console.error({ - message: "Error in keepAlive check", - error, - }); - clearInterval(keepAlive); - await gracefulShutdown(); - } - }, 2000); - } catch (error) { - debugLog(id, "Failed to launch Camoufox", { - error: error instanceof Error ? error.message : String(error), - }); - console.error({ - message: "Failed to launch Camoufox", - error, - }); - // Browser launch failed, attempt cleanup - await gracefulShutdown(); - } - }); - - // Keep process alive - process.stdin.resume(); -} diff --git a/nodecar/src/index.ts b/nodecar/src/index.ts deleted file mode 100644 index eb43ac3..0000000 --- a/nodecar/src/index.ts +++ /dev/null @@ -1,334 +0,0 @@ -import { program } from "commander"; -import type { LaunchOptions } from "donutbrowser-camoufox-js/dist/utils.js"; -import { - generateCamoufoxConfig, - startCamoufoxProcess, - stopAllCamoufoxProcesses, - stopCamoufoxProcess, -} from "./camoufox-launcher.js"; -import { listCamoufoxConfigs } from "./camoufox-storage.js"; -import { runCamoufoxWorker } from "./camoufox-worker.js"; - -// Command for Camoufox management -program - .command("camoufox") - .argument( - "", - "start, stop, list, or generate-config Camoufox instances", - ) - .option("--id ", "Camoufox ID for stop command") - .option("--profile-path ", "profile directory path") - .option("--url ", "URL to open") - - // Config generation options - .option("--proxy ", "proxy URL for config generation") - .option("--max-width ", "maximum screen width", parseInt) - .option("--max-height ", "maximum screen height", parseInt) - .option("--min-width ", "minimum screen width", parseInt) - .option("--min-height ", "minimum screen height", parseInt) - .option("--geoip", "enable geoip") - .option("--block-images", "block images") - .option("--block-webrtc", "block WebRTC") - .option("--block-webgl", "block WebGL") - .option("--executable-path ", "executable path") - .option("--fingerprint ", "fingerprint JSON string") - .option("--headless", "run in headless mode") - .option("--custom-config ", "custom config JSON string") - .option( - "--os ", - "operating system for fingerprint: windows, macos, linux", - ) - - .description("manage Camoufox browser instances") - .action( - async ( - action: string, - options: Record, - ) => { - if (action === "start") { - try { - // Build Camoufox options in the format expected by camoufox-js - const camoufoxOptions: LaunchOptions = {}; - - // OS fingerprinting - if (options.os && typeof options.os === "string") { - camoufoxOptions.os = options.os.includes(",") - ? (options.os.split(",") as ("windows" | "macos" | "linux")[]) - : (options.os as "windows" | "macos" | "linux"); - } - - // Blocking options - if (options.blockImages) camoufoxOptions.block_images = true; - if (options.blockWebrtc) camoufoxOptions.block_webrtc = true; - if (options.blockWebgl) camoufoxOptions.block_webgl = true; - - // Security options - if (options.disableCoop) camoufoxOptions.disable_coop = true; - - if (options.geoip) { - camoufoxOptions.geoip = true; - } - - if (options.latitude && options.longitude) { - camoufoxOptions.geolocation = { - latitude: options.latitude as number, - longitude: options.longitude as number, - accuracy: 100, - }; - } - if (options.country) - camoufoxOptions.country = options.country as string; - if (options.timezone) - camoufoxOptions.timezone = options.timezone as string; - - if (options.humanize) - camoufoxOptions.humanize = options.humanize as boolean; - if (options.headless) camoufoxOptions.headless = true; - - // Localization - if (options.locale && typeof options.locale === "string") { - camoufoxOptions.locale = options.locale.includes(",") - ? options.locale.split(",") - : options.locale; - } - - // Extensions and fonts - if (options.addons && typeof options.addons === "string") - camoufoxOptions.addons = options.addons.split(","); - if (options.fonts && typeof options.fonts === "string") - camoufoxOptions.fonts = options.fonts.split(","); - if (options.customFontsOnly) camoufoxOptions.custom_fonts_only = true; - if ( - options.excludeAddons && - typeof options.excludeAddons === "string" - ) - camoufoxOptions.exclude_addons = options.excludeAddons.split( - ",", - ) as "UBO"[]; - - // Executable path: forward through to camoufox-js and ultimately Playwright - if ( - options.executablePath && - typeof options.executablePath === "string" - ) { - // camoufox-js uses snake_case for this option - (camoufoxOptions as any).executable_path = - options.executablePath as string; - } - - // Screen and window - const screen: { - minWidth?: number; - maxWidth?: number; - minHeight?: number; - maxHeight?: number; - } = {}; - if (options.screenMinWidth) - screen.minWidth = options.screenMinWidth as number; - if (options.screenMaxWidth) - screen.maxWidth = options.screenMaxWidth as number; - if (options.screenMinHeight) - screen.minHeight = options.screenMinHeight as number; - if (options.screenMaxHeight) - screen.maxHeight = options.screenMaxHeight as number; - if (Object.keys(screen).length > 0) camoufoxOptions.screen = screen; - - if (options.windowWidth && options.windowHeight) { - camoufoxOptions.window = [ - options.windowWidth as number, - options.windowHeight as number, - ]; - } - - // Advanced options - if (options.ffVersion) - camoufoxOptions.ff_version = options.ffVersion as number; - if (options.mainWorldEval) camoufoxOptions.main_world_eval = true; - if (options.webglVendor && options.webglRenderer) { - camoufoxOptions.webgl_config = [ - options.webglVendor as string, - options.webglRenderer as string, - ]; - } - - // Proxy - if (options.proxy) camoufoxOptions.proxy = options.proxy as string; - - // Cache and performance - default to enabled - camoufoxOptions.enable_cache = !options.disableCache; - - // Environment and debugging - if (options.virtualDisplay) - camoufoxOptions.virtual_display = options.virtualDisplay as string; - if (options.debug) camoufoxOptions.debug = true; - - // Handle headless mode via flag instead of environment variable - if (options.headless) { - camoufoxOptions.headless = true; - } - if (options.args && typeof options.args === "string") - camoufoxOptions.args = options.args.split(","); - if (options.env && typeof options.env === "string") { - try { - camoufoxOptions.env = JSON.parse(options.env); - } catch (e) { - console.error( - JSON.stringify({ - error: "Invalid JSON for --env option", - message: String(e), - }), - ); - process.exit(1); - return; - } - } - - // Firefox preferences - if ( - options.firefoxPrefs && - typeof options.firefoxPrefs === "string" - ) { - try { - camoufoxOptions.firefox_user_prefs = JSON.parse( - options.firefoxPrefs, - ); - } catch (e) { - console.error( - JSON.stringify({ - error: "Invalid JSON for --firefox-prefs option", - message: String(e), - }), - ); - process.exit(1); - } - } - - const config = await startCamoufoxProcess( - camoufoxOptions, - typeof options.profilePath === "string" - ? options.profilePath - : undefined, - typeof options.url === "string" ? options.url : undefined, - typeof options.customConfig === "string" - ? options.customConfig - : undefined, - ); - - console.log( - JSON.stringify({ - id: config.id, - processId: config.processId, - profilePath: config.profilePath, - url: config.url, - }), - ); - - process.exit(0); - } catch (error: unknown) { - console.error( - JSON.stringify({ - error: "Failed to start Camoufox", - message: error instanceof Error ? error.message : String(error), - }), - ); - process.exit(1); - } - } else if (action === "stop") { - if (options.id && typeof options.id === "string") { - const stopped = await stopCamoufoxProcess(options.id); - console.log(JSON.stringify({ success: stopped })); - } else { - await stopAllCamoufoxProcesses(); - console.log(JSON.stringify({ success: true })); - } - process.exit(0); - } else if (action === "list") { - const configs = listCamoufoxConfigs(); - console.log(JSON.stringify(configs)); - process.exit(0); - } else if (action === "generate-config") { - try { - const config = await generateCamoufoxConfig({ - proxy: - typeof options.proxy === "string" ? options.proxy : undefined, - maxWidth: - typeof options.maxWidth === "number" - ? options.maxWidth - : undefined, - maxHeight: - typeof options.maxHeight === "number" - ? options.maxHeight - : undefined, - minWidth: - typeof options.minWidth === "number" - ? options.minWidth - : undefined, - minHeight: - typeof options.minHeight === "number" - ? options.minHeight - : undefined, - geoip: Boolean(options.geoip), - blockImages: - typeof options.blockImages === "boolean" - ? options.blockImages - : undefined, - blockWebrtc: - typeof options.blockWebrtc === "boolean" - ? options.blockWebrtc - : undefined, - blockWebgl: - typeof options.blockWebgl === "boolean" - ? options.blockWebgl - : undefined, - executablePath: - typeof options.executablePath === "string" - ? options.executablePath - : undefined, - fingerprint: - typeof options.fingerprint === "string" - ? options.fingerprint - : undefined, - os: - typeof options.os === "string" - ? (options.os as "windows" | "macos" | "linux") - : undefined, - }); - console.log(config); - process.exit(0); - } catch (error: unknown) { - console.error({ - error: "Failed to generate config", - message: - error instanceof Error ? error.message : JSON.stringify(error), - }); - process.exit(1); - } - } else { - console.error({ - error: "Invalid action", - message: "Use 'start', 'stop', 'list', or 'generate-config'", - }); - process.exit(1); - } - }, - ); - -// Command for Camoufox worker (internal use) -program - .command("camoufox-worker") - .argument("", "start a Camoufox worker") - .requiredOption("--id ", "Camoufox configuration ID") - .description("run a Camoufox worker process") - .action(async (action: string, options: { id: string }) => { - if (action === "start") { - await runCamoufoxWorker(options.id); - } else { - console.error({ - error: "Invalid action for camoufox-worker", - message: "Use 'start'", - }); - process.exit(1); - } - }); - -program.parse(); diff --git a/nodecar/src/utils.ts b/nodecar/src/utils.ts deleted file mode 100644 index dfad275..0000000 --- a/nodecar/src/utils.ts +++ /dev/null @@ -1,120 +0,0 @@ -import type { LaunchOptions } from "playwright-core"; - -const OS_MAP: { [key: string]: "mac" | "win" | "lin" } = { - darwin: "mac", - linux: "lin", - win32: "win", -}; - -const OS_NAME: "mac" | "win" | "lin" = OS_MAP[process.platform]; - -export function getEnvVars(configMap: Record) { - const envVars: { - [key: string]: string | undefined; - } = {}; - let updatedConfigData: Uint8Array; - - try { - // Ensure we're working with a fresh copy of the config - const configCopy = JSON.parse(JSON.stringify(configMap)); - updatedConfigData = new TextEncoder().encode(JSON.stringify(configCopy)); - } catch (e) { - console.error(`Error updating config: ${e}`); - process.exit(1); - } - - const chunkSize = OS_NAME === "win" ? 2047 : 32767; - const configStr = new TextDecoder().decode(updatedConfigData); - - for (let i = 0; i < configStr.length; i += chunkSize) { - const chunk = configStr.slice(i, i + chunkSize); - const envName = `CAMOU_CONFIG_${Math.floor(i / chunkSize) + 1}`; - try { - envVars[envName] = chunk; - } catch (e) { - console.error(`Error setting ${envName}: ${e}`); - process.exit(1); - } - } - - return envVars; -} - -export function parseProxyString(proxyString: LaunchOptions["proxy"] | string) { - if (typeof proxyString === "object") { - return proxyString; - } - - if (!proxyString || typeof proxyString !== "string") { - throw new Error("Invalid proxy string provided"); - } - - // Remove any leading/trailing whitespace - const trimmed = proxyString.trim(); - - // Handle different proxy string formats: - // 1. http://username:password@host:port - // 2. host:port - // 3. protocol://host:port - // 4. username:password@host:port - - let server = ""; - let username: string | undefined; - let password: string | undefined; - - try { - // Try parsing as URL first (handles protocol://username:password@host:port) - if (trimmed.includes("://")) { - const url = new URL(trimmed); - // Playwright accepts short form "host:port" for HTTP proxies - server = `${url.hostname}:${url.port}`; - - if (url.username) { - username = decodeURIComponent(url.username); - } - if (url.password) { - password = decodeURIComponent(url.password); - } - } else { - // Handle formats without protocol - let workingString = trimmed; - - // Check for username:password@ prefix - const authMatch = workingString.match(/^([^:@]+):([^@]+)@(.+)$/); - if (authMatch) { - username = authMatch[1]; - password = authMatch[2]; - workingString = authMatch[3]; - } - - // The remaining part should be host:port - server = workingString; - } - - // Validate that we have a server - if (!server) { - throw new Error("Could not extract server information"); - } - - // Basic validation for host:port format - if (!server.includes(":") || server.split(":").length !== 2) { - throw new Error("Server must be in host:port format"); - } - - const result: LaunchOptions["proxy"] = { server }; - - if (username !== undefined) { - result.username = username; - } - - if (password !== undefined) { - result.password = password; - } - - return result; - } catch (error) { - throw new Error( - `Failed to parse proxy string: ${error instanceof Error ? error.message : "Unknown error"}`, - ); - } -} diff --git a/nodecar/tsconfig.json b/nodecar/tsconfig.json deleted file mode 100644 index 4f86f47..0000000 --- a/nodecar/tsconfig.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "compilerOptions": { - "target": "ESNext", - "module": "CommonJS", - "lib": ["dom", "es6", "es2017", "esnext.asynciterable"], - "sourceMap": false, - "outDir": "dist", - "rootDir": "src", - "strict": true, - "types": ["node"], - "esModuleInterop": true, - "moduleResolution": "node", - "resolveJsonModule": true, - "baseUrl": ".", - "allowSyntheticDefaultImports": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "removeComments": true - } -} diff --git a/package.json b/package.json index 2d0e8e6..8f765a0 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "version": "0.13.9", "type": "module", "scripts": { - "dev": "next dev --turbopack", + "dev": "next dev --turbopack -p 12341", "build": "next build", "start": "next start", "test": "pnpm test:rust:unit && pnpm test:sync-e2e", diff --git a/scripts/dev.sh b/scripts/dev.sh new file mode 100755 index 0000000..83b7140 --- /dev/null +++ b/scripts/dev.sh @@ -0,0 +1,158 @@ +#!/bin/bash +set -e + +# Colors for output +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' # No Color + +# Get the root directory of the project +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +ROOT_DIR="$(dirname "$SCRIPT_DIR")" +SYNC_DIR="$ROOT_DIR/donut-sync" + +# Track PIDs for cleanup +SYNC_PID="" +TAURI_PID="" +SHUTTING_DOWN=false + +cleanup() { + if [ "$SHUTTING_DOWN" = true ]; then + return + fi + SHUTTING_DOWN=true + + echo -e "\n${YELLOW}Shutting down services...${NC}" + + # Kill Tauri if running + if [ -n "$TAURI_PID" ] && kill -0 "$TAURI_PID" 2>/dev/null; then + echo -e "${BLUE}Stopping Tauri...${NC}" + kill "$TAURI_PID" 2>/dev/null || true + fi + + # Kill sync backend if running + if [ -n "$SYNC_PID" ] && kill -0 "$SYNC_PID" 2>/dev/null; then + echo -e "${BLUE}Stopping sync backend...${NC}" + kill "$SYNC_PID" 2>/dev/null || true + fi + + # Stop MinIO container + echo -e "${BLUE}Stopping MinIO container...${NC}" + cd "$SYNC_DIR" && docker compose down 2>/dev/null || true + + # Wait for processes to finish + wait 2>/dev/null || true + + echo -e "${GREEN}Cleanup complete.${NC}" +} + +trap cleanup EXIT INT TERM + +echo -e "${BLUE}========================================${NC}" +echo -e "${BLUE} Donut Browser Development Environment${NC}" +echo -e "${BLUE}========================================${NC}" +echo "" + +# Check prerequisites +echo -e "${YELLOW}Checking prerequisites...${NC}" + +if ! command -v docker &> /dev/null; then + echo -e "${RED}Error: docker is not installed${NC}" + exit 1 +fi + +if ! command -v pnpm &> /dev/null; then + echo -e "${RED}Error: pnpm is not installed${NC}" + exit 1 +fi + +echo -e "${GREEN}Prerequisites OK${NC}" +echo "" + +# Start MinIO container +echo -e "${YELLOW}Starting MinIO (S3) container...${NC}" +cd "$SYNC_DIR" +docker compose up -d + +# Wait for MinIO to be healthy +echo -e "${YELLOW}Waiting for MinIO to be healthy...${NC}" +MAX_RETRIES=30 +RETRY_COUNT=0 +while [ $RETRY_COUNT -lt $MAX_RETRIES ]; do + if curl -sf http://localhost:8987/minio/health/live > /dev/null 2>&1; then + echo -e "${GREEN}MinIO is ready!${NC}" + break + fi + RETRY_COUNT=$((RETRY_COUNT + 1)) + if [ $RETRY_COUNT -eq $MAX_RETRIES ]; then + echo -e "${RED}MinIO failed to start within timeout${NC}" + exit 1 + fi + sleep 1 +done +echo "" + +# Install sync backend dependencies if needed +if [ ! -d "$SYNC_DIR/node_modules" ]; then + echo -e "${YELLOW}Installing sync backend dependencies...${NC}" + cd "$SYNC_DIR" && pnpm install +fi + +# Start sync backend in background +echo -e "${YELLOW}Starting sync backend...${NC}" +cd "$SYNC_DIR" +pnpm start:dev & +SYNC_PID=$! + +# Wait for sync backend to be ready +echo -e "${YELLOW}Waiting for sync backend to be ready...${NC}" +MAX_RETRIES=60 +RETRY_COUNT=0 +while [ $RETRY_COUNT -lt $MAX_RETRIES ]; do + if curl -sf http://localhost:12342/health > /dev/null 2>&1; then + echo -e "${GREEN}Sync backend is ready!${NC}" + break + fi + # Check if process is still running + if ! kill -0 "$SYNC_PID" 2>/dev/null; then + echo -e "${RED}Sync backend process died${NC}" + exit 1 + fi + RETRY_COUNT=$((RETRY_COUNT + 1)) + if [ $RETRY_COUNT -eq $MAX_RETRIES ]; then + echo -e "${RED}Sync backend failed to start within timeout${NC}" + exit 1 + fi + sleep 1 +done +echo "" + +# Start Tauri app in background +echo -e "${YELLOW}Starting Tauri development server...${NC}" +echo -e "${BLUE}Frontend: http://localhost:12341${NC}" +echo -e "${BLUE}Sync Backend: http://localhost:12342${NC}" +echo -e "${BLUE}MinIO Console: http://localhost:8988${NC}" +echo "" +cd "$ROOT_DIR" +pnpm tauri dev & +TAURI_PID=$! + +# Monitor all processes - exit if any dies +echo -e "${YELLOW}Monitoring processes (Ctrl+C to stop all)...${NC}" +while true; do + # Check if sync backend died + if ! kill -0 "$SYNC_PID" 2>/dev/null; then + echo -e "${RED}Sync backend crashed!${NC}" + exit 1 + fi + + # Check if Tauri died + if ! kill -0 "$TAURI_PID" 2>/dev/null; then + echo -e "${RED}Tauri exited!${NC}" + exit 1 + fi + + sleep 2 +done diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index f6f8033..82eaa6f 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -54,6 +54,18 @@ dependencies = [ "version_check", ] +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + [[package]] name = "aho-corasick" version = "1.1.4" @@ -687,6 +699,15 @@ dependencies = [ "serde", ] +[[package]] +name = "bzip2" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49ecfb22d906f800d4fe833b6282cf4dc1c298f5057ca0b5445e5c209735ca47" +dependencies = [ + "bzip2-sys", +] + [[package]] name = "bzip2" version = "0.6.1" @@ -696,6 +717,16 @@ dependencies = [ "libbz2-rs-sys", ] +[[package]] +name = "bzip2-sys" +version = "0.1.13+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" +dependencies = [ + "cc", + "pkg-config", +] + [[package]] name = "cab" version = "0.6.0" @@ -1012,7 +1043,7 @@ dependencies = [ "bitflags 2.10.0", "core-foundation 0.10.1", "core-graphics-types", - "foreign-types", + "foreign-types 0.5.0", "libc", ] @@ -1269,7 +1300,7 @@ dependencies = [ "libc", "option-ext", "redox_users", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -1353,7 +1384,7 @@ dependencies = [ "axum", "base64 0.22.1", "blake3", - "bzip2", + "bzip2 0.6.1", "chrono", "clap", "core-foundation 0.10.1", @@ -1369,15 +1400,21 @@ dependencies = [ "libc", "log", "lzma-rs", + "maxminddb", "mime_guess", "msi-extract", "objc2", "objc2-app-kit", "once_cell", + "playwright", + "quick-xml 0.37.5", "rand 0.9.2", + "regex-lite", "reqwest 0.13.1", + "rusqlite", "serde", "serde_json", + "serde_yaml", "serial_test", "sysinfo", "tar", @@ -1392,6 +1429,7 @@ dependencies = [ "tauri-plugin-shell", "tauri-plugin-single-instance", "tempfile", + "thiserror 1.0.69", "tokio", "tower", "tower-http", @@ -1403,7 +1441,7 @@ dependencies = [ "windows 0.62.2", "winreg", "wiremock", - "zip", + "zip 7.0.0", ] [[package]] @@ -1448,6 +1486,12 @@ version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + [[package]] name = "embed-resource" version = "3.0.6" @@ -1551,7 +1595,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -1575,6 +1619,18 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "fallible-iterator" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" + +[[package]] +name = "fallible-streaming-iterator" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" + [[package]] name = "fastrand" version = "2.3.0" @@ -1644,6 +1700,15 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared 0.1.1", +] + [[package]] name = "foreign-types" version = "0.5.0" @@ -1651,7 +1716,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" dependencies = [ "foreign-types-macros", - "foreign-types-shared", + "foreign-types-shared 0.3.1", ] [[package]] @@ -1665,6 +1730,12 @@ dependencies = [ "syn 2.0.111", ] +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + [[package]] name = "foreign-types-shared" version = "0.3.1" @@ -2156,7 +2227,7 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" dependencies = [ - "ahash", + "ahash 0.7.8", ] [[package]] @@ -2164,6 +2235,9 @@ name = "hashbrown" version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash 0.8.12", +] [[package]] name = "hashbrown" @@ -2171,6 +2245,15 @@ version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +[[package]] +name = "hashlink" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ba4ff7128dee98c7dc9794b6a411377e1404dba1c97deb8d1a55297bd25d8af" +dependencies = [ + "hashbrown 0.14.5", +] + [[package]] name = "heck" version = "0.4.1" @@ -2306,6 +2389,22 @@ dependencies = [ "tower-service", ] +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + [[package]] name = "hyper-util" version = "0.1.19" @@ -2522,6 +2621,15 @@ version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" +[[package]] +name = "ipnetwork" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf466541e9d546596ee94f9f69590f89473455f88372423e0008fc1a7daf100e" +dependencies = [ + "serde", +] + [[package]] name = "iri-string" version = "0.7.10" @@ -2557,6 +2665,15 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.17" @@ -2760,6 +2877,17 @@ dependencies = [ "redox_syscall 0.7.0", ] +[[package]] +name = "libsqlite3-sys" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + [[package]] name = "libz-rs-sys" version = "0.5.5" @@ -2825,6 +2953,17 @@ dependencies = [ "sha2", ] +[[package]] +name = "lzma-sys" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + [[package]] name = "lzxd" version = "0.2.6" @@ -2884,6 +3023,18 @@ version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" +[[package]] +name = "maxminddb" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6087e5d8ea14861bb7c7f573afbc7be3798d3ef0fae87ec4fd9a4de9a127c3c" +dependencies = [ + "ipnetwork", + "log", + "memchr", + "serde", +] + [[package]] name = "memchr" version = "2.7.6" @@ -2981,6 +3132,23 @@ dependencies = [ "windows-sys 0.60.2", ] +[[package]] +name = "native-tls" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe 0.1.6", + "openssl-sys", + "schannel", + "security-framework 2.11.1", + "security-framework-sys", + "tempfile", +] + [[package]] name = "ndk" version = "0.9.0" @@ -3353,12 +3521,56 @@ dependencies = [ "pathdiff", ] +[[package]] +name = "openssl" +version = "0.10.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328" +dependencies = [ + "bitflags 2.10.0", + "cfg-if", + "foreign-types 0.3.2", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "openssl-probe" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" + [[package]] name = "openssl-probe" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f50d9b3dabb09ecd771ad0aa242ca6894994c130308ca3d7684634df8037391" +[[package]] +name = "openssl-sys" +version = "0.9.111" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + [[package]] name = "option-ext" version = "0.2.0" @@ -3392,7 +3604,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d8fae84b431384b68627d0f9b3b1245fcf9f46f6c0e3dc902e9dce64edd1967" dependencies = [ "libc", - "windows-sys 0.45.0", + "windows-sys 0.61.2", ] [[package]] @@ -3651,6 +3863,29 @@ version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +[[package]] +name = "playwright" +version = "0.0.23" +source = "git+https://github.com/sctg-development/playwright-rust?branch=master#77d7a9729bc6c45b899a61eb4fb84adf075315e2" +dependencies = [ + "base64 0.22.1", + "chrono", + "dirs", + "futures", + "itertools", + "log", + "paste", + "reqwest 0.12.28", + "serde", + "serde_json", + "serde_with", + "strong", + "thiserror 2.0.17", + "tokio", + "tokio-stream", + "zip 2.4.2", +] + [[package]] name = "plist" version = "1.8.0" @@ -3659,7 +3894,7 @@ checksum = "740ebea15c5d1428f910cd1a5f52cebf8d25006245ed8ade92702f4943d91e07" dependencies = [ "base64 0.22.1", "indexmap 2.12.1", - "quick-xml", + "quick-xml 0.38.4", "serde", "time", ] @@ -3842,6 +4077,16 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "quick-xml" +version = "0.37.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb" +dependencies = [ + "memchr", + "serde", +] + [[package]] name = "quick-xml" version = "0.38.4" @@ -3904,7 +4149,7 @@ dependencies = [ "once_cell", "socket2", "tracing", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -4116,6 +4361,12 @@ dependencies = [ "regex-syntax", ] +[[package]] +name = "regex-lite" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d942b98df5e658f56f20d592c7f868833fe38115e65c33003d8cd224b0155da" + [[package]] name = "regex-syntax" version = "0.8.8" @@ -4139,22 +4390,31 @@ checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" dependencies = [ "base64 0.22.1", "bytes", + "encoding_rs", + "futures-channel", "futures-core", "futures-util", + "h2", "http", "http-body", "http-body-util", "hyper", + "hyper-rustls", + "hyper-tls", "hyper-util", "js-sys", "log", + "mime", + "native-tls", "percent-encoding", "pin-project-lite", + "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", "sync_wrapper", "tokio", + "tokio-native-tls", "tokio-util", "tower", "tower-http", @@ -4277,6 +4537,20 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "rusqlite" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7753b721174eb8ff87a9a0e799e2d7bc3749323e773db92e0984debb00019d6e" +dependencies = [ + "bitflags 2.10.0", + "fallible-iterator", + "fallible-streaming-iterator", + "hashlink", + "libsqlite3-sys", + "smallvec", +] + [[package]] name = "rust-ini" version = "0.21.3" @@ -4328,7 +4602,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -4351,10 +4625,10 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63" dependencies = [ - "openssl-probe", + "openssl-probe 0.2.0", "rustls-pki-types", "schannel", - "security-framework", + "security-framework 3.5.1", ] [[package]] @@ -4382,10 +4656,10 @@ dependencies = [ "rustls-native-certs", "rustls-platform-verifier-android", "rustls-webpki", - "security-framework", + "security-framework 3.5.1", "security-framework-sys", "webpki-root-certs", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -4520,6 +4794,19 @@ version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.10.0", + "core-foundation 0.9.4", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + [[package]] name = "security-framework" version = "3.5.1" @@ -4720,6 +5007,19 @@ dependencies = [ "syn 2.0.111", ] +[[package]] +name = "serde_yaml" +version = "0.9.34+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" +dependencies = [ + "indexmap 2.12.1", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", +] + [[package]] name = "serial_test" version = "3.2.0" @@ -4978,6 +5278,15 @@ dependencies = [ "quote", ] +[[package]] +name = "strong" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cbe0fc7652d95bcd84f61cd036181b395f329ef45b25169b69a42f72cb6975f" +dependencies = [ + "serde", +] + [[package]] name = "strsim" version = "0.11.1" @@ -5564,7 +5873,7 @@ dependencies = [ "getrandom 0.3.4", "once_cell", "rustix", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -5714,6 +6023,16 @@ dependencies = [ "syn 2.0.111", ] +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + [[package]] name = "tokio-rustls" version = "0.26.4" @@ -5724,6 +6043,18 @@ dependencies = [ "tokio", ] +[[package]] +name = "tokio-stream" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", + "tokio-util", +] + [[package]] name = "tokio-util" version = "0.7.17" @@ -6041,6 +6372,12 @@ dependencies = [ "subtle", ] +[[package]] +name = "unsafe-libyaml" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" + [[package]] name = "untrusted" version = "0.9.0" @@ -6156,6 +6493,12 @@ version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ba6f5989077681266825251a52748b8c1d8a4ad098cc37e440103d0ea717fc0" +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + [[package]] name = "version-compare" version = "0.2.1" @@ -6344,7 +6687,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5423e94b6a63e68e439803a3e153a9252d5ead12fd853334e2ad33997e3889e3" dependencies = [ "proc-macro2", - "quick-xml", + "quick-xml 0.38.4", "quote", ] @@ -6490,7 +6833,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -7123,6 +7466,15 @@ dependencies = [ "rustix", ] +[[package]] +name = "xz2" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388c44dc09d76f1536602ead6d325eb532f5c122f17782bd57fb47baeeb767e2" +dependencies = [ + "lzma-sys", +] + [[package]] name = "yoke" version = "0.8.1" @@ -7302,6 +7654,36 @@ dependencies = [ "syn 2.0.111", ] +[[package]] +name = "zip" +version = "2.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50" +dependencies = [ + "aes", + "arbitrary", + "bzip2 0.5.2", + "constant_time_eq", + "crc32fast", + "crossbeam-utils", + "deflate64", + "displaydoc", + "flate2", + "getrandom 0.3.4", + "hmac", + "indexmap 2.12.1", + "lzma-rs", + "memchr", + "pbkdf2", + "sha1", + "thiserror 2.0.17", + "time", + "xz2", + "zeroize", + "zopfli", + "zstd", +] + [[package]] name = "zip" version = "7.0.0" @@ -7310,7 +7692,7 @@ checksum = "bdd8a47718a4ee5fe78e07667cd36f3de80e7c2bfe727c7074245ffc7303c037" dependencies = [ "aes", "arbitrary", - "bzip2", + "bzip2 0.6.1", "constant_time_eq", "crc32fast", "deflate64", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 0f896c3..0072abf 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -79,6 +79,16 @@ http-body-util = "0.1" clap = { version = "4", features = ["derive"] } async-socks5 = "0.6" +# Camoufox/Playwright integration +playwright = { git = "https://github.com/sctg-development/playwright-rust", branch = "master" } +rusqlite = { version = "0.32", features = ["bundled"] } +serde_yaml = "0.9" +thiserror = "1.0" +regex-lite = "0.1" +tempfile = "3" +maxminddb = "0.24" +quick-xml = { version = "0.37", features = ["serialize"] } + [target."cfg(any(target_os = \"macos\", windows, target_os = \"linux\"))".dependencies] tauri-plugin-single-instance = { version = "2", features = ["deep-link"] } diff --git a/src-tauri/build.rs b/src-tauri/build.rs index 8c9359e..65aaf82 100644 --- a/src-tauri/build.rs +++ b/src-tauri/build.rs @@ -75,23 +75,14 @@ fn external_binaries_exist() -> bool { let binaries_dir = PathBuf::from(&manifest_dir).join("binaries"); - // Check for both required external binaries - let nodecar_name = if target.contains("windows") { - format!("nodecar-{}.exe", target) - } else { - format!("nodecar-{}", target) - }; - + // Check for required external binaries let donut_proxy_name = if target.contains("windows") { format!("donut-proxy-{}.exe", target) } else { format!("donut-proxy-{}", target) }; - let nodecar_exists = binaries_dir.join(&nodecar_name).exists(); - let donut_proxy_exists = binaries_dir.join(&donut_proxy_name).exists(); - - nodecar_exists && donut_proxy_exists + binaries_dir.join(&donut_proxy_name).exists() } fn ensure_dist_folder_exists() { diff --git a/src-tauri/copy-proxy-binary.sh b/src-tauri/copy-proxy-binary.sh index ae1d046..53e3e68 100755 --- a/src-tauri/copy-proxy-binary.sh +++ b/src-tauri/copy-proxy-binary.sh @@ -32,7 +32,7 @@ fi SOURCE="$SRC_DIR/$BIN_NAME" DEST_DIR="$MANIFEST_DIR/binaries" -# Tauri expects the format: donut-proxy-{target} with hyphens (same as nodecar) +# Tauri expects the format: donut-proxy-{target} with hyphens DEST_NAME="donut-proxy-$TARGET" if [[ "$TARGET" == *"windows"* ]]; then DEST_NAME="$DEST_NAME.exe" diff --git a/src-tauri/src/browser_runner.rs b/src-tauri/src/browser_runner.rs index b08cd00..0b8accf 100644 --- a/src-tauri/src/browser_runner.rs +++ b/src-tauri/src/browser_runner.rs @@ -98,7 +98,7 @@ impl BrowserRunner { ); } - // Handle camoufox profiles using nodecar launcher + // Handle Camoufox profiles using CamoufoxManager if profile.browser == "camoufox" { // Get or create camoufox config let mut camoufox_config = profile.camoufox_config.clone().unwrap_or_else(|| { @@ -205,14 +205,11 @@ impl BrowserRunner { ); } - // Use the nodecar camoufox launcher - log::info!( - "Launching Camoufox via nodecar for profile: {}", - profile.name - ); + // Launch Camoufox browser + log::info!("Launching Camoufox for profile: {}", profile.name); let camoufox_result = self .camoufox_manager - .launch_camoufox_profile_nodecar( + .launch_camoufox_profile( app_handle.clone(), updated_profile.clone(), camoufox_config, @@ -220,7 +217,7 @@ impl BrowserRunner { ) .await .map_err(|e| -> Box { - format!("Failed to launch camoufox via nodecar: {e}").into() + format!("Failed to launch Camoufox: {e}").into() })?; // For server-based Camoufox, we use the process_id @@ -547,7 +544,7 @@ impl BrowserRunner { url: &str, _internal_proxy_settings: Option<&ProxySettings>, ) -> Result<(), Box> { - // Handle camoufox profiles using nodecar launcher + // Handle Camoufox profiles using CamoufoxManager if profile.browser == "camoufox" { // Get the profile path based on the UUID let profiles_dir = self.profile_manager.get_profiles_dir(); @@ -657,7 +654,7 @@ impl BrowserRunner { return Err("Unsupported platform".into()); } BrowserType::Camoufox => { - // Camoufox uses nodecar for launching, URL opening is handled differently + // Camoufox URL opening is handled differently Err("URL opening in existing Camoufox instance is not supported".into()) } BrowserType::Chromium | BrowserType::Brave => { @@ -941,7 +938,7 @@ impl BrowserRunner { app_handle: tauri::AppHandle, profile: &BrowserProfile, ) -> Result<(), Box> { - // Handle camoufox profiles using nodecar launcher + // Handle Camoufox profiles using CamoufoxManager if profile.browser == "camoufox" { // Search by profile path to find the running Camoufox instance let profiles_dir = self.profile_manager.get_profiles_dir(); diff --git a/src-tauri/src/camoufox/config.rs b/src-tauri/src/camoufox/config.rs new file mode 100644 index 0000000..4825e66 --- /dev/null +++ b/src-tauri/src/camoufox/config.rs @@ -0,0 +1,608 @@ +//! Camoufox configuration builder. +//! +//! Converts fingerprints to Camoufox configuration format and builds launch options. + +use rand::Rng; +use serde_yaml; +use std::collections::HashMap; +use std::path::Path; + +use crate::camoufox::data; +use crate::camoufox::env_vars; +use crate::camoufox::fingerprint::types::*; +use crate::camoufox::fonts; +use crate::camoufox::geolocation; +use crate::camoufox::webgl; + +/// Browserforge mapping from YAML. +type BrowserforgeMapping = HashMap; + +/// Load the browserforge mapping from embedded YAML. +fn load_browserforge_mapping() -> BrowserforgeMapping { + serde_yaml::from_str(data::BROWSERFORGE_YML).unwrap_or_default() +} + +/// Convert a fingerprint to Camoufox configuration. +pub fn from_browserforge( + fingerprint: &Fingerprint, + ff_version: Option, +) -> HashMap { + let mapping = load_browserforge_mapping(); + let mut config = HashMap::new(); + + // Convert fingerprint to a JSON value for easier traversal + let fp_json = serde_json::to_value(fingerprint).unwrap_or_default(); + + // Apply mappings recursively + cast_to_properties(&mut config, &mapping, &fp_json, ff_version); + + // Handle window.screenX and window.screenY + handle_screen_xy(&mut config, &fingerprint.screen); + + config +} + +/// Recursively cast fingerprint properties to Camoufox config format. +fn cast_to_properties( + config: &mut HashMap, + mapping: &BrowserforgeMapping, + fingerprint: &serde_json::Value, + ff_version: Option, +) { + if let serde_json::Value::Object(fp_obj) = fingerprint { + for (key, mapping_value) in mapping { + let fp_value = fp_obj.get(key); + + match mapping_value { + serde_yaml::Value::String(target_key) => { + if let Some(value) = fp_value { + let mut final_value = value.clone(); + + // Handle negative screen values + if target_key.starts_with("screen.") { + if let Some(num) = final_value.as_i64() { + if num < 0 { + final_value = serde_json::json!(0); + } + } + } + + // Replace Firefox version in user agent strings + if let (Some(version), Some(s)) = (ff_version, final_value.as_str()) { + let replaced = replace_ff_version(s, version); + final_value = serde_json::json!(replaced); + } + + config.insert(target_key.clone(), final_value); + } + } + serde_yaml::Value::Mapping(nested_mapping) => { + if let Some(nested_fp) = fp_value { + let nested: BrowserforgeMapping = nested_mapping + .iter() + .filter_map(|(k, v)| k.as_str().map(|ks| (ks.to_string(), v.clone()))) + .collect(); + cast_to_properties(config, &nested, nested_fp, ff_version); + } + } + _ => {} + } + } + } +} + +/// Replace Firefox version in user agent and related strings. +fn replace_ff_version(s: &str, version: u32) -> String { + // Match patterns like "135.0" (Firefox version) and replace with new version + let re = regex_lite::Regex::new(r"(?, screen: &ScreenFingerprint) { + if config.contains_key("window.screenY") { + return; + } + + let screen_x = screen.screen_x; + if screen_x == 0 { + config.insert("window.screenX".to_string(), serde_json::json!(0)); + config.insert("window.screenY".to_string(), serde_json::json!(0)); + return; + } + + if (-50..=50).contains(&screen_x) { + config.insert("window.screenY".to_string(), serde_json::json!(screen_x)); + return; + } + + let screen_y = screen.avail_height as i32 - screen.outer_height as i32; + let mut rng = rand::rng(); + + let y = if screen_y == 0 { + 0 + } else if screen_y > 0 { + rng.random_range(0..=screen_y) + } else { + rng.random_range(screen_y..=0) + }; + + config.insert("window.screenY".to_string(), serde_json::json!(y)); +} + +/// GeoIP option - can be an IP address string or auto-detect. +#[derive(Debug, Clone)] +pub enum GeoIPOption { + /// Auto-detect IP (fetch public IP, optionally through proxy) + Auto, + /// Use a specific IP address + IP(String), +} + +/// Configuration builder for Camoufox launch. +#[derive(Debug, Clone)] +pub struct CamoufoxConfigBuilder { + fingerprint: Option, + operating_system: Option, + screen_constraints: Option, + block_images: bool, + block_webrtc: bool, + block_webgl: bool, + custom_fonts: Option>, + custom_fonts_only: bool, + firefox_prefs: HashMap, + proxy: Option, + headless: bool, + ff_version: Option, + extra_config: HashMap, + geoip: Option, +} + +/// Proxy configuration. +#[derive(Debug, Clone)] +pub struct ProxyConfig { + pub server: String, + pub username: Option, + pub password: Option, + pub bypass: Option, +} + +impl ProxyConfig { + /// Parse a proxy URL string into ProxyConfig. + /// Supports formats like: + /// - "http://host:port" + /// - "http://user:pass@host:port" + /// - "socks5://user:pass@host:port" + pub fn from_url(url: &str) -> Result { + let parsed = url::Url::parse(url).map_err(|e| ConfigError::InvalidProxy(e.to_string()))?; + + let host = parsed + .host_str() + .ok_or_else(|| ConfigError::InvalidProxy("Missing host".to_string()))?; + + let port = parsed.port().unwrap_or(8080); + let scheme = parsed.scheme(); + + let server = format!("{scheme}://{host}:{port}"); + + let username = if !parsed.username().is_empty() { + Some(parsed.username().to_string()) + } else { + None + }; + + let password = parsed.password().map(String::from); + + Ok(Self { + server, + username, + password, + bypass: None, + }) + } +} + +impl Default for CamoufoxConfigBuilder { + fn default() -> Self { + Self::new() + } +} + +impl CamoufoxConfigBuilder { + pub fn new() -> Self { + Self { + fingerprint: None, + operating_system: None, + screen_constraints: None, + block_images: false, + block_webrtc: false, + block_webgl: false, + custom_fonts: None, + custom_fonts_only: false, + firefox_prefs: HashMap::new(), + proxy: None, + headless: false, + ff_version: None, + extra_config: HashMap::new(), + geoip: None, + } + } + + pub fn fingerprint(mut self, fp: Fingerprint) -> Self { + self.fingerprint = Some(fp); + self + } + + pub fn operating_system(mut self, os: &str) -> Self { + self.operating_system = Some(os.to_string()); + self + } + + pub fn screen_constraints(mut self, constraints: ScreenConstraints) -> Self { + self.screen_constraints = Some(constraints); + self + } + + pub fn block_images(mut self, block: bool) -> Self { + self.block_images = block; + self + } + + pub fn block_webrtc(mut self, block: bool) -> Self { + self.block_webrtc = block; + self + } + + pub fn block_webgl(mut self, block: bool) -> Self { + self.block_webgl = block; + self + } + + pub fn custom_fonts(mut self, fonts: Vec) -> Self { + self.custom_fonts = Some(fonts); + self + } + + pub fn custom_fonts_only(mut self, only: bool) -> Self { + self.custom_fonts_only = only; + self + } + + pub fn firefox_pref>(mut self, key: &str, value: V) -> Self { + self.firefox_prefs.insert(key.to_string(), value.into()); + self + } + + pub fn proxy(mut self, proxy: ProxyConfig) -> Self { + self.proxy = Some(proxy); + self + } + + pub fn headless(mut self, headless: bool) -> Self { + self.headless = headless; + self + } + + pub fn ff_version(mut self, version: u32) -> Self { + self.ff_version = Some(version); + self + } + + pub fn extra_config>(mut self, key: &str, value: V) -> Self { + self.extra_config.insert(key.to_string(), value.into()); + self + } + + /// Set GeoIP option for geolocation-based fingerprinting. + /// Use `GeoIPOption::Auto` to auto-detect public IP (optionally through proxy). + /// Use `GeoIPOption::IP(ip_string)` to use a specific IP address. + pub fn geoip(mut self, option: GeoIPOption) -> Self { + self.geoip = Some(option); + self + } + + /// Build the complete Camoufox launch configuration. + pub fn build(self) -> Result { + // Generate or use provided fingerprint + let fingerprint = if let Some(fp) = self.fingerprint { + fp + } else { + let generator = crate::camoufox::fingerprint::FingerprintGenerator::new()?; + let options = FingerprintOptions { + operating_system: self.operating_system.clone(), + browsers: Some(vec!["firefox".to_string()]), + devices: Some(vec!["desktop".to_string()]), + screen: self.screen_constraints, + ..Default::default() + }; + generator.get_fingerprint(&options)?.fingerprint + }; + + // Determine target OS from user agent + let target_os = env_vars::determine_ua_os(&fingerprint.navigator.user_agent); + + // Convert fingerprint to config + let mut config = from_browserforge(&fingerprint, self.ff_version); + + // Add random window history length + let mut rng = rand::rng(); + config.insert( + "window.history.length".to_string(), + serde_json::json!(rng.random_range(1..=5)), + ); + + // Add fonts + if !self.custom_fonts_only { + let system_fonts = fonts::get_fonts_for_os(target_os); + let fonts = if let Some(custom) = &self.custom_fonts { + let mut all_fonts = system_fonts; + for font in custom { + if !all_fonts.contains(font) { + all_fonts.push(font.clone()); + } + } + all_fonts + } else { + system_fonts + }; + config.insert("fonts".to_string(), serde_json::json!(fonts)); + } else if let Some(custom) = &self.custom_fonts { + config.insert("fonts".to_string(), serde_json::json!(custom)); + } + + // Add font spacing seed + config.insert( + "fonts:spacing_seed".to_string(), + serde_json::json!(rng.random_range(0..1_073_741_824u32)), + ); + + // Build Firefox preferences + let mut firefox_prefs = self.firefox_prefs; + + if self.block_images { + firefox_prefs.insert( + "permissions.default.image".to_string(), + serde_json::json!(2), + ); + } + + if self.block_webrtc { + firefox_prefs.insert( + "media.peerconnection.enabled".to_string(), + serde_json::json!(false), + ); + } + + if self.block_webgl { + firefox_prefs.insert("webgl.disabled".to_string(), serde_json::json!(true)); + } else { + // Sample and add WebGL configuration + match webgl::sample_webgl(target_os, None, None) { + Ok(webgl_data) => { + for (key, value) in webgl_data.config { + config.insert(key, value); + } + firefox_prefs.insert("webgl.force-enabled".to_string(), serde_json::json!(true)); + } + Err(e) => { + log::warn!("Failed to sample WebGL config: {}", e); + } + } + } + + // Canvas anti-fingerprinting + config.insert( + "canvas:aaOffset".to_string(), + serde_json::json!(rng.random_range(-50..=50)), + ); + config.insert("canvas:aaCapOffset".to_string(), serde_json::json!(true)); + + // Add extra config (user-provided) + for (key, value) in self.extra_config { + config.insert(key, value); + } + + // Hardcoded Camoufox settings (cannot be overridden) + // Disable theming to prevent fingerprinting via browser theme + config.insert("disableTheming".to_string(), serde_json::json!(true)); + // Hide cursor in headless mode + config.insert("showcursor".to_string(), serde_json::json!(false)); + + Ok(CamoufoxLaunchConfig { + fingerprint_config: config, + firefox_prefs, + proxy: self.proxy, + headless: self.headless, + target_os: target_os.to_string(), + }) + } + + /// Build the complete Camoufox launch configuration with async geolocation support. + /// This method should be used when geoip option is set to Auto. + pub async fn build_async(self) -> Result { + // Get proxy URL for IP detection if set + let proxy_url = self.proxy.as_ref().map(|p| p.server.clone()); + let geoip_option = self.geoip.clone(); + let block_webrtc = self.block_webrtc; + + // Build base config first + let mut launch_config = self.build()?; + + // Handle geolocation if geoip option is set + if let Some(geoip) = geoip_option { + let ip = match geoip { + GeoIPOption::Auto => { + // Fetch public IP, optionally through proxy + geolocation::fetch_public_ip(proxy_url.as_deref()).await? + } + GeoIPOption::IP(ip_str) => { + if !geolocation::validate_ip(&ip_str) { + return Err(ConfigError::Geolocation( + geolocation::GeolocationError::InvalidIP(ip_str), + )); + } + ip_str + } + }; + + // Get geolocation from IP + match geolocation::get_geolocation(&ip) { + Ok(geo) => { + // Add geolocation config + for (key, value) in geo.as_config() { + launch_config.fingerprint_config.insert(key, value); + } + + // Add WebRTC IP spoofing if not blocked + if !block_webrtc { + if geolocation::is_ipv4(&ip) { + launch_config + .fingerprint_config + .insert("webrtc:ipv4".to_string(), serde_json::json!(ip)); + } else if geolocation::is_ipv6(&ip) { + launch_config + .fingerprint_config + .insert("webrtc:ipv6".to_string(), serde_json::json!(ip)); + } + } + + log::info!( + "Applied geolocation from IP {}: {} ({})", + ip, + geo.locale.as_string(), + geo.timezone + ); + } + Err(e) => { + log::warn!("Failed to get geolocation for IP {}: {}", ip, e); + // Continue without geolocation rather than failing + } + } + } + + Ok(launch_config) + } +} + +/// Complete Camoufox launch configuration. +#[derive(Debug, Clone)] +pub struct CamoufoxLaunchConfig { + pub fingerprint_config: HashMap, + pub firefox_prefs: HashMap, + pub proxy: Option, + pub headless: bool, + pub target_os: String, +} + +impl CamoufoxLaunchConfig { + /// Get environment variables for launching Camoufox. + pub fn get_env_vars(&self) -> Result, serde_json::Error> { + env_vars::config_to_env_vars(&self.fingerprint_config) + } + + /// Get the config as JSON string. + pub fn config_json(&self) -> Result { + serde_json::to_string(&self.fingerprint_config) + } +} + +/// Error type for configuration operations. +#[derive(Debug, thiserror::Error)] +pub enum ConfigError { + #[error("Fingerprint generation error: {0}")] + Fingerprint(#[from] crate::camoufox::fingerprint::FingerprintError), + + #[error("JSON error: {0}")] + Json(#[from] serde_json::Error), + + #[error("WebGL error: {0}")] + WebGL(#[from] webgl::WebGLError), + + #[error("Invalid proxy configuration: {0}")] + InvalidProxy(String), + + #[error("Geolocation error: {0}")] + Geolocation(#[from] crate::camoufox::geolocation::GeolocationError), +} + +/// Get Firefox version from executable path. +pub fn get_firefox_version(executable_path: &Path) -> Option { + // Try to read version.json from the same directory + let version_path = executable_path.parent()?.join("version.json"); + + if let Ok(content) = std::fs::read_to_string(&version_path) { + if let Ok(json) = serde_json::from_str::(&content) { + if let Some(version_str) = json.get("version").and_then(|v| v.as_str()) { + // Parse major version from "135.0" or similar + let major: u32 = version_str.split('.').next()?.parse().ok()?; + return Some(major); + } + } + } + + None +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_config_builder() { + let config = CamoufoxConfigBuilder::new() + .operating_system("windows") + .block_images(true) + .build(); + + assert!(config.is_ok()); + let config = config.unwrap(); + assert!(config + .firefox_prefs + .contains_key("permissions.default.image")); + } + + #[test] + fn test_replace_ff_version() { + let ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135.0"; + let replaced = replace_ff_version(ua, 140); + assert!(replaced.contains("140.0")); + } + + #[test] + fn test_from_browserforge() { + let fingerprint = Fingerprint { + screen: ScreenFingerprint { + width: 1920, + height: 1080, + avail_width: 1920, + avail_height: 1040, + color_depth: 24, + pixel_depth: 24, + inner_width: 1903, + inner_height: 969, + outer_width: 1920, + outer_height: 1040, + ..Default::default() + }, + navigator: NavigatorFingerprint { + user_agent: "Mozilla/5.0 Firefox/135.0".to_string(), + platform: "Win32".to_string(), + language: "en-US".to_string(), + languages: vec!["en-US".to_string()], + hardware_concurrency: 8, + ..Default::default() + }, + ..Default::default() + }; + + let config = from_browserforge(&fingerprint, Some(140)); + + assert!(config.contains_key("navigator.userAgent")); + assert!(config.contains_key("screen.width")); + } +} diff --git a/src-tauri/src/camoufox/data/browser-helper-file.json b/src-tauri/src/camoufox/data/browser-helper-file.json new file mode 100644 index 0000000..49c114a --- /dev/null +++ b/src-tauri/src/camoufox/data/browser-helper-file.json @@ -0,0 +1,120 @@ +[ + "chrome/143.0.0.0|2", + "safari/18.3.1|2", + "chrome/101.0.4951.54|2", + "chrome/139.0.0.0|2", + "safari/16.6|2", + "safari/26.2|2", + "safari/18.6|2", + "safari/26.1|2", + "chrome/142.0.0.0|2", + "chrome/141.0.0.0|2", + "safari/18.7.3|2", + "edge/143.0.0.0|2", + "safari/18.4|2", + "safari/17.3.1|2", + "chrome/135.0.0.0|2", + "safari/18.5|2", + "safari/18.7.2|2", + "chrome/143.0.0.0|1", + "chrome/128.0.0.0|2", + "chrome/131.0.0.0|2", + "safari/26.3|2", + "safari/26.0.1|2", + "chrome/114.0.0.0|2", + "safari/18.1|2", + "firefox/147.0|2", + "safari/17.5|2", + "chrome/140.0.0.0|2", + "safari/16.6.1|2", + "firefox/146.0|2", + "chrome/124.0.0.0|1", + "chrome/34.0.1847.114|2", + "chrome/130.0.0.0|2", + "safari/15.6.7|2", + "chrome/144.0.0.0|2", + "safari/18.3|2", + "safari/16.4|2", + "chrome/141.0.7390.122|1", + "firefox/140.0|2", + "chrome/138.0.0.0|2", + "firefox/135.0|2", + "safari/17.6|2", + "chrome/132.0.0.0|2", + "chrome/109.0.0.0|2", + "chrome/92.0.4515.131|2", + "chrome/136.0.0.0|2", + "edge/142.0.0.0|2", + "chrome/125.0.0.0|2", + "safari/17.8|2", + "edge/143.0.0.0|1", + "chrome/123.0.0.0|2", + "chrome/137.0.0.0|2", + "chrome/129.0.0.0|2", + "chrome/126.0.0.0|2", + "safari/26.0|2", + "chrome/133.0.0.0|2", + "chrome/119.0.0.0|2", + "chrome/145.0.0.0|2", + "firefox/145.0|2", + "safari/17.3|2", + "safari/18.2|2", + "safari/16.5.2|2", + "safari/17.4|2", + "chrome/120.0.0.0|2", + "chrome/116.0.0.0|2", + "firefox/141.0|2", + "safari/17.4.1|2", + "chrome/134.0.0.0|2", + "safari/15.4|2", + "safari/18.1.1|2", + "edge/144.0.0.0|2", + "firefox/144.0|2", + "safari/16.3|2", + "safari/13.0.3|2", + "chrome/131.0.6778.33|2", + "edge/145.0.0.0|2", + "edge/139.0.0.0|2", + "safari/17.1|2", + "chrome/133.0.0.0|1", + "chrome/121.0.0.0|2", + "chrome/124.0.0.0|2", + "chrome/127.0.0.0|2", + "chrome/122.0.6261.95|2", + "chrome/91.0.4450.0|2", + "edge/134.0.0.0|2", + "chrome/134.0.6998.179|2", + "chrome/122.0.0.0|2", + "firefox/128.0|2", + "chrome/142.0.0.0|1", + "safari/18.7|2", + "safari/17.8.1|2", + "firefox/115.0|2", + "safari/17.2|2", + "chrome/117.0.0.0|2", + "safari/18.0.1|2", + "chrome/139.0.7258.5|2", + "edge/140.0.0.0|2", + "safari/16.5|2", + "safari/18.6.2|2", + "firefox/136.0|2", + "safari/17.2.1|2", + "safari/18.0|2", + "safari/15.6.1|2", + "safari/26.2|1", + "safari/17.1.2|2", + "safari/17.7|2", + "safari/16.2|2", + "edge/122.0.0.0|2", + "chrome/139.0.0.0|1", + "safari/17.0|2", + "firefox/139.0|2", + "chrome/101.0.9316.173|2", + "chrome/101.0.4951.64|2", + "chrome/141.0.0.0|1", + "safari/15.5|2", + "safari/18.6|1", + "chrome/112.0.0.0|2", + "edge/135.0.0.0|2", + "chrome/140.0.0.0|1" +] diff --git a/src-tauri/src/camoufox/data/browserforge.yml b/src-tauri/src/camoufox/data/browserforge.yml new file mode 100644 index 0000000..7f7df90 --- /dev/null +++ b/src-tauri/src/camoufox/data/browserforge.yml @@ -0,0 +1,68 @@ +# Mappings of Browserforge fingerprints to Camoufox config properties. + +navigator: + # Note: Browserforge tends to have outdated UAs. + # The version will be replaced in Camoufox. + userAgent: navigator.userAgent + # userAgentData not in Firefox + doNotTrack: navigator.doNotTrack + appCodeName: navigator.appCodeName + appName: navigator.appName + appVersion: navigator.appVersion + oscpu: navigator.oscpu + # webdriver is always True + # Locale is now implemented separately: + # language: navigator.language + # languages: navigator.languages + platform: navigator.platform + # deviceMemory not in Firefox + hardwareConcurrency: navigator.hardwareConcurrency + product: navigator.product + # Never override productSub #105 + # productSub: navigator.productSub + # vendor is not necessary + # vendorSub is not necessary + maxTouchPoints: navigator.maxTouchPoints + extraProperties: + # Note: Changing pdfViewerEnabled is not recommended. This will be kept to True. + globalPrivacyControl: navigator.globalPrivacyControl + +screen: + # hasHDR is not implemented in Camoufox + availLeft: screen.availLeft + availTop: screen.availTop + availWidth: screen.availWidth + availHeight: screen.availHeight + height: screen.height + width: screen.width + colorDepth: screen.colorDepth + pixelDepth: screen.pixelDepth + # devicePixelRatio is not recommended. Any value other than 1.0 is suspicious. + pageXOffset: screen.pageXOffset + pageYOffset: screen.pageYOffset + outerHeight: window.outerHeight + outerWidth: window.outerWidth + innerHeight: window.innerHeight + innerWidth: window.innerWidth + screenX: window.screenX + screenY: window.screenY + # Tends to generate out of bounds (network inconsistencies): + # clientWidth: document.body.clientWidth + # clientHeight: document.body.clientHeight + +# videoCard: +# renderer: webgl:renderer +# vendor: webgl:vendor + +headers: + # headers.User-Agent is redundant with navigator.userAgent + # headers.Accept-Language is redundant with locale:* + Accept-Encoding: headers.Accept-Encoding + +battery: + charging: battery:charging + chargingTime: battery:chargingTime + dischargingTime: battery:dischargingTime + +# Unsupported: videoCodecs, audioCodecs, pluginsData, multimediaDevices +# Fonts are listed through the launcher. diff --git a/src-tauri/src/camoufox/data/fingerprint-network-definition.zip b/src-tauri/src/camoufox/data/fingerprint-network-definition.zip new file mode 100644 index 0000000000000000000000000000000000000000..06000f9066cb13c1e159396094f7a075be841d43 GIT binary patch literal 601335 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 kkK&r*H(iu2_TMJS~$b=<81{*cEY_7 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�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%0Do7v(m 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⩔2hH- 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 Tlz*MUzb&D+fAQNbIJo}+6l)s& literal 0 HcmV?d00001 diff --git a/src-tauri/src/camoufox/data/fonts.json b/src-tauri/src/camoufox/data/fonts.json new file mode 100644 index 0000000..0f16348 --- /dev/null +++ b/src-tauri/src/camoufox/data/fonts.json @@ -0,0 +1,822 @@ +{ + "win": [ + "Arial", + "Arial Black", + "Bahnschrift", + "Calibri", + "Calibri Light", + "Cambria", + "Cambria Math", + "Candara", + "Candara Light", + "Comic Sans MS", + "Consolas", + "Constantia", + "Corbel", + "Corbel Light", + "Courier New", + "Ebrima", + "Franklin Gothic Medium", + "Gabriola", + "Gadugi", + "Georgia", + "HoloLens MDL2 Assets", + "Impact", + "Ink Free", + "Javanese Text", + "Leelawadee UI", + "Leelawadee UI Semilight", + "Lucida Console", + "Lucida Sans Unicode", + "MS Gothic", + "MS PGothic", + "MS UI Gothic", + "MV Boli", + "Malgun Gothic", + "Malgun Gothic Semilight", + "Marlett", + "Microsoft Himalaya", + "Microsoft JhengHei", + "Microsoft JhengHei Light", + "Microsoft JhengHei UI", + "Microsoft JhengHei UI Light", + "Microsoft New Tai Lue", + "Microsoft PhagsPa", + "Microsoft Sans Serif", + "Microsoft Tai Le", + "Microsoft YaHei", + "Microsoft YaHei Light", + "Microsoft YaHei UI", + "Microsoft YaHei UI Light", + "Microsoft Yi Baiti", + "MingLiU-ExtB", + "MingLiU_HKSCS-ExtB", + "Mongolian Baiti", + "Myanmar Text", + "NSimSun", + "Nirmala UI", + "Nirmala UI Semilight", + "PMingLiU-ExtB", + "Palatino Linotype", + "Segoe Fluent Icons", + "Segoe MDL2 Assets", + "Segoe Print", + "Segoe Script", + "Segoe UI", + "Segoe UI Black", + "Segoe UI Emoji", + "Segoe UI Historic", + "Segoe UI Light", + "Segoe UI Semibold", + "Segoe UI Semilight", + "Segoe UI Symbol", + "Segoe UI Variable", + "SimSun", + "SimSun-ExtB", + "Sitka", + "Sitka Text", + "Sylfaen", + "Symbol", + "Tahoma", + "Times New Roman", + "Trebuchet MS", + "Twemoji Mozilla", + "Verdana", + "Webdings", + "Wingdings", + "Yu Gothic", + "Yu Gothic Light", + "Yu Gothic Medium", + "Yu Gothic UI", + "Yu Gothic UI Light", + "Yu Gothic UI Semibold", + "Yu Gothic UI Semilight", + "\u5b8b\u4f53", + "\u5fae\u8edf\u6b63\u9ed1\u9ad4", + "\u5fae\u8edf\u6b63\u9ed1\u9ad4 Light", + "\u5fae\u8f6f\u96c5\u9ed1", + "\u5fae\u8f6f\u96c5\u9ed1 Light", + "\u65b0\u5b8b\u4f53", + "\u65b0\u7d30\u660e\u9ad4-ExtB", + "\u6e38\u30b4\u30b7\u30c3\u30af", + "\u6e38\u30b4\u30b7\u30c3\u30af Light", + "\u6e38\u30b4\u30b7\u30c3\u30af Medium", + "\u7d30\u660e\u9ad4-ExtB", + "\u7d30\u660e\u9ad4_HKSCS-ExtB", + "\ub9d1\uc740 \uace0\ub515", + "\ub9d1\uc740 \uace0\ub515 Semilight", + "\uff2d\uff33 \u30b4\u30b7\u30c3\u30af", + "\uff2d\uff33 \uff30\u30b4\u30b7\u30c3\u30af" + ], + "mac": [ + ".Al Bayan PUA", + ".Al Nile PUA", + ".Al Tarikh PUA", + ".Apple Color Emoji UI", + ".Apple SD Gothic NeoI", + ".Aqua Kana", + ".Aqua Kana Bold", + ".Aqua \u304b\u306a", + ".Aqua \u304b\u306a \u30dc\u30fc\u30eb\u30c9", + ".Arial Hebrew Desk Interface", + ".Baghdad PUA", + ".Beirut PUA", + ".Damascus PUA", + ".DecoType Naskh PUA", + ".Diwan Kufi PUA", + ".Farah PUA", + ".Geeza Pro Interface", + ".Geeza Pro PUA", + ".Helvetica LT MM", + ".Hiragino Kaku Gothic Interface", + ".Hiragino Sans GB Interface", + ".Keyboard", + ".KufiStandardGK PUA", + ".LastResort", + ".Lucida Grande UI", + ".Muna PUA", + ".Nadeem PUA", + ".New York", + ".Noto Nastaliq Urdu UI", + ".PingFang HK", + ".PingFang SC", + ".PingFang TC", + ".SF Arabic", + ".SF Arabic Rounded", + ".SF Compact", + ".SF Compact Rounded", + ".SF NS", + ".SF NS Mono", + ".SF NS Rounded", + ".Sana PUA", + ".Savoye LET CC.", + ".ThonburiUI", + ".ThonburiUIWatch", + ".\u82f9\u65b9-\u6e2f", + ".\u82f9\u65b9-\u7b80", + ".\u82f9\u65b9-\u7e41", + ".\u860b\u65b9-\u6e2f", + ".\u860b\u65b9-\u7c21", + ".\u860b\u65b9-\u7e41", + "Academy Engraved LET", + "Al Bayan", + "Al Nile", + "Al Tarikh", + "American Typewriter", + "Andale Mono", + "Apple Braille", + "Apple Chancery", + "Apple Color Emoji", + "Apple SD Gothic Neo", + "Apple SD \uc0b0\ub3cc\uace0\ub515 Neo", + "Apple Symbols", + "AppleGothic", + "AppleMyungjo", + "Arial", + "Arial Black", + "Arial Hebrew", + "Arial Hebrew Scholar", + "Arial Narrow", + "Arial Rounded MT Bold", + "Arial Unicode MS", + "Athelas", + "Avenir", + "Avenir Black", + "Avenir Black Oblique", + "Avenir Book", + "Avenir Heavy", + "Avenir Light", + "Avenir Medium", + "Avenir Next", + "Avenir Next Condensed", + "Avenir Next Condensed Demi Bold", + "Avenir Next Condensed Heavy", + "Avenir Next Condensed Medium", + "Avenir Next Condensed Ultra Light", + "Avenir Next Demi Bold", + "Avenir Next Heavy", + "Avenir Next Medium", + "Avenir Next Ultra Light", + "Ayuthaya", + "Baghdad", + "Bangla MN", + "Bangla Sangam MN", + "Baskerville", + "Beirut", + "Big Caslon", + "Bodoni 72", + "Bodoni 72 Oldstyle", + "Bodoni 72 Smallcaps", + "Bodoni Ornaments", + "Bradley Hand", + "Brush Script MT", + "Chalkboard", + "Chalkboard SE", + "Chalkduster", + "Charter", + "Charter Black", + "Cochin", + "Comic Sans MS", + "Copperplate", + "Corsiva Hebrew", + "Courier", + "Courier New", + "Czcionka systemowa", + "DIN Alternate", + "DIN Condensed", + "Damascus", + "DecoType Naskh", + "Devanagari MT", + "Devanagari Sangam MN", + "Didot", + "Diwan Kufi", + "Diwan Thuluth", + "Euphemia UCAS", + "Farah", + "Farisi", + "Font Sistem", + "Font de sistem", + "Font di sistema", + "Font sustava", + "Fonte do Sistema", + "Futura", + "GB18030 Bitmap", + "Galvji", + "Geeza Pro", + "Geneva", + "Georgia", + "Gill Sans", + "Grantha Sangam MN", + "Gujarati MT", + "Gujarati Sangam MN", + "Gurmukhi MN", + "Gurmukhi MT", + "Gurmukhi Sangam MN", + "Heiti SC", + "Heiti TC", + "Heiti-\uac04\uccb4", + "Heiti-\ubc88\uccb4", + "Helvetica", + "Helvetica Neue", + "Herculanum", + "Hiragino Kaku Gothic Pro", + "Hiragino Kaku Gothic Pro W3", + "Hiragino Kaku Gothic Pro W6", + "Hiragino Kaku Gothic ProN", + "Hiragino Kaku Gothic ProN W3", + "Hiragino Kaku Gothic ProN W6", + "Hiragino Kaku Gothic Std", + "Hiragino Kaku Gothic Std W8", + "Hiragino Kaku Gothic StdN", + "Hiragino Kaku Gothic StdN W8", + "Hiragino Maru Gothic Pro", + "Hiragino Maru Gothic Pro W4", + "Hiragino Maru Gothic ProN", + "Hiragino Maru Gothic ProN W4", + "Hiragino Mincho Pro", + "Hiragino Mincho Pro W3", + "Hiragino Mincho Pro W6", + "Hiragino Mincho ProN", + "Hiragino Mincho ProN W3", + "Hiragino Mincho ProN W6", + "Hiragino Sans", + "Hiragino Sans GB", + "Hiragino Sans GB W3", + "Hiragino Sans GB W6", + "Hiragino Sans W0", + "Hiragino Sans W1", + "Hiragino Sans W2", + "Hiragino Sans W3", + "Hiragino Sans W4", + "Hiragino Sans W5", + "Hiragino Sans W6", + "Hiragino Sans W7", + "Hiragino Sans W8", + "Hiragino Sans W9", + "Hoefler Text", + "Hoefler Text Ornaments", + "ITF Devanagari", + "ITF Devanagari Marathi", + "Impact", + "InaiMathi", + "Iowan Old Style", + "Iowan Old Style Black", + "J\u00e4rjestelm\u00e4fontti", + "Kailasa", + "Kannada MN", + "Kannada Sangam MN", + "Kefa", + "Khmer MN", + "Khmer Sangam MN", + "Kohinoor Bangla", + "Kohinoor Devanagari", + "Kohinoor Gujarati", + "Kohinoor Telugu", + "Kokonor", + "Krungthep", + "KufiStandardGK", + "Lao MN", + "Lao Sangam MN", + "Lucida Grande", + "Luminari", + "Malayalam MN", + "Malayalam Sangam MN", + "Marion", + "Marker Felt", + "Menlo", + "Microsoft Sans Serif", + "Mishafi", + "Mishafi Gold", + "Monaco", + "Mshtakan", + "Mukta Mahee", + "MuktaMahee Bold", + "MuktaMahee ExtraBold", + "MuktaMahee ExtraLight", + "MuktaMahee Light", + "MuktaMahee Medium", + "MuktaMahee Regular", + "MuktaMahee SemiBold", + "Muna", + "Myanmar MN", + "Myanmar Sangam MN", + "Nadeem", + "New Peninim MT", + "Noteworthy", + "Noto Nastaliq Urdu", + "Noto Sans Adlam", + "Noto Sans Armenian", + "Noto Sans Armenian Blk", + "Noto Sans Armenian ExtBd", + "Noto Sans Armenian ExtLt", + "Noto Sans Armenian Light", + "Noto Sans Armenian Med", + "Noto Sans Armenian SemBd", + "Noto Sans Armenian Thin", + "Noto Sans Avestan", + "Noto Sans Bamum", + "Noto Sans Bassa Vah", + "Noto Sans Batak", + "Noto Sans Bhaiksuki", + "Noto Sans Brahmi", + "Noto Sans Buginese", + "Noto Sans Buhid", + "Noto Sans CanAborig", + "Noto Sans Canadian Aboriginal", + "Noto Sans Carian", + "Noto Sans CaucAlban", + "Noto Sans Caucasian Albanian", + "Noto Sans Chakma", + "Noto Sans Cham", + "Noto Sans Coptic", + "Noto Sans Cuneiform", + "Noto Sans Cypriot", + "Noto Sans Duployan", + "Noto Sans EgyptHiero", + "Noto Sans Egyptian Hieroglyphs", + "Noto Sans Elbasan", + "Noto Sans Glagolitic", + "Noto Sans Gothic", + "Noto Sans Gunjala Gondi", + "Noto Sans Hanifi Rohingya", + "Noto Sans HanifiRohg", + "Noto Sans Hanunoo", + "Noto Sans Hatran", + "Noto Sans ImpAramaic", + "Noto Sans Imperial Aramaic", + "Noto Sans InsPahlavi", + "Noto Sans InsParthi", + "Noto Sans Inscriptional Pahlavi", + "Noto Sans Inscriptional Parthian", + "Noto Sans Javanese", + "Noto Sans Kaithi", + "Noto Sans Kannada", + "Noto Sans Kannada Black", + "Noto Sans Kannada ExtraBold", + "Noto Sans Kannada ExtraLight", + "Noto Sans Kannada Light", + "Noto Sans Kannada Medium", + "Noto Sans Kannada SemiBold", + "Noto Sans Kannada Thin", + "Noto Sans Kayah Li", + "Noto Sans Kharoshthi", + "Noto Sans Khojki", + "Noto Sans Khudawadi", + "Noto Sans Lepcha", + "Noto Sans Limbu", + "Noto Sans Linear A", + "Noto Sans Linear B", + "Noto Sans Lisu", + "Noto Sans Lycian", + "Noto Sans Lydian", + "Noto Sans Mahajani", + "Noto Sans Mandaic", + "Noto Sans Manichaean", + "Noto Sans Marchen", + "Noto Sans Masaram Gondi", + "Noto Sans Meetei Mayek", + "Noto Sans Mende Kikakui", + "Noto Sans Meroitic", + "Noto Sans Miao", + "Noto Sans Modi", + "Noto Sans Mongolian", + "Noto Sans Mro", + "Noto Sans Multani", + "Noto Sans Myanmar", + "Noto Sans Myanmar Blk", + "Noto Sans Myanmar ExtBd", + "Noto Sans Myanmar ExtLt", + "Noto Sans Myanmar Light", + "Noto Sans Myanmar Med", + "Noto Sans Myanmar SemBd", + "Noto Sans Myanmar Thin", + "Noto Sans NKo", + "Noto Sans Nabataean", + "Noto Sans New Tai Lue", + "Noto Sans Newa", + "Noto Sans Ol Chiki", + "Noto Sans Old Hungarian", + "Noto Sans Old Italic", + "Noto Sans Old North Arabian", + "Noto Sans Old Permic", + "Noto Sans Old Persian", + "Noto Sans Old South Arabian", + "Noto Sans Old Turkic", + "Noto Sans OldHung", + "Noto Sans OldNorArab", + "Noto Sans OldSouArab", + "Noto Sans Oriya", + "Noto Sans Osage", + "Noto Sans Osmanya", + "Noto Sans Pahawh Hmong", + "Noto Sans Palmyrene", + "Noto Sans Pau Cin Hau", + "Noto Sans PhagsPa", + "Noto Sans Phoenician", + "Noto Sans PsaPahlavi", + "Noto Sans Psalter Pahlavi", + "Noto Sans Rejang", + "Noto Sans Samaritan", + "Noto Sans Saurashtra", + "Noto Sans Sharada", + "Noto Sans Siddham", + "Noto Sans Sora Sompeng", + "Noto Sans SoraSomp", + "Noto Sans Sundanese", + "Noto Sans Syloti Nagri", + "Noto Sans Syriac", + "Noto Sans Tagalog", + "Noto Sans Tagbanwa", + "Noto Sans Tai Le", + "Noto Sans Tai Tham", + "Noto Sans Tai Viet", + "Noto Sans Takri", + "Noto Sans Thaana", + "Noto Sans Tifinagh", + "Noto Sans Tirhuta", + "Noto Sans Ugaritic", + "Noto Sans Vai", + "Noto Sans Wancho", + "Noto Sans Warang Citi", + "Noto Sans Yi", + "Noto Sans Zawgyi", + "Noto Sans Zawgyi Blk", + "Noto Sans Zawgyi ExtBd", + "Noto Sans Zawgyi ExtLt", + "Noto Sans Zawgyi Light", + "Noto Sans Zawgyi Med", + "Noto Sans Zawgyi SemBd", + "Noto Sans Zawgyi Thin", + "Noto Serif Ahom", + "Noto Serif Balinese", + "Noto Serif Hmong Nyiakeng", + "Noto Serif Myanmar", + "Noto Serif Myanmar Blk", + "Noto Serif Myanmar ExtBd", + "Noto Serif Myanmar ExtLt", + "Noto Serif Myanmar Light", + "Noto Serif Myanmar Med", + "Noto Serif Myanmar SemBd", + "Noto Serif Myanmar Thin", + "Noto Serif Yezidi", + "Optima", + "Oriya MN", + "Oriya Sangam MN", + "PT Mono", + "PT Sans", + "PT Sans Caption", + "PT Sans Narrow", + "PT Serif", + "PT Serif Caption", + "Palatino", + "Papyrus", + "Party LET", + "Phosphate", + "Ph\u00f4ng ch\u1eef H\u1ec7 th\u1ed1ng", + "PingFang HK", + "PingFang SC", + "PingFang TC", + "Plantagenet Cherokee", + "Police syst\u00e8me", + "Raanana", + "Rendszerbet\u0171t\u00edpus", + "Rockwell", + "STIX Two Math", + "STIX Two Text", + "STIXGeneral", + "STIXIntegralsD", + "STIXIntegralsSm", + "STIXIntegralsUp", + "STIXIntegralsUpD", + "STIXIntegralsUpSm", + "STIXNonUnicode", + "STIXSizeFiveSym", + "STIXSizeFourSym", + "STIXSizeOneSym", + "STIXSizeThreeSym", + "STIXSizeTwoSym", + "STIXVariants", + "STSong", + "Sana", + "Sathu", + "Savoye LET", + "Seravek", + "Seravek ExtraLight", + "Seravek Light", + "Seravek Medium", + "Shree Devanagari 714", + "SignPainter", + "SignPainter-HouseScript", + "Silom", + "Sinhala MN", + "Sinhala Sangam MN", + "Sistem Fontu", + "Skia", + "Snell Roundhand", + "Songti SC", + "Songti TC", + "Sukhumvit Set", + "Superclarendon", + "Symbol", + "Systeemlettertype", + "System Font", + "Systemschrift", + "Systemskrift", + "Systemtypsnitt", + "Syst\u00e9mov\u00e9 p\u00edsmo", + "Tahoma", + "Tamil MN", + "Tamil Sangam MN", + "Telugu MN", + "Telugu Sangam MN", + "Thonburi", + "Times", + "Times New Roman", + "Tipo de letra del sistema", + "Tipo de letra do sistema", + "Tipus de lletra del sistema", + "Trattatello", + "Trebuchet MS", + "Verdana", + "Waseem", + "Webdings", + "Wingdings", + "Wingdings 2", + "Wingdings 3", + "Zapf Dingbats", + "Zapfino", + "\u0393\u03c1\u03b1\u03bc\u03bc\u03b1\u03c4\u03bf\u03c3\u03b5\u03b9\u03c1\u03ac \u03c3\u03c5\u03c3\u03c4\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2", + "\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u0438\u0439 \u0448\u0440\u0438\u0444\u0442", + "\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u0448\u0440\u0438\u0444\u0442", + "\u05d2\u05d5\u05e4\u05df \u05de\u05e2\u05e8\u05db\u05ea", + "\u0627\u0644\u0628\u064a\u0627\u0646", + "\u0627\u0644\u062a\u0627\u0631\u064a\u062e", + "\u0627\u0644\u0646\u064a\u0644", + "\u0628\u063a\u062f\u0627\u062f", + "\u0628\u064a\u0631\u0648\u062a", + "\u062c\u064a\u0632\u0629", + "\u062e\u0637 \u0627\u0644\u0646\u0638\u0627\u0645", + "\u062f\u0645\u0634\u0642", + "\u062f\u064a\u0648\u0627\u0646 \u062b\u0644\u062b", + "\u062f\u064a\u0648\u0627\u0646 \u0643\u0648\u0641\u064a", + "\u0635\u0646\u0639\u0627\u0621", + "\u0641\u0627\u0631\u0633\u064a", + "\u0641\u0631\u062d", + "\u0643\u0648\u0641\u064a", + "\u0645\u0646\u0649", + "\u0645\u0650\u0635\u062d\u0641\u064a", + "\u0645\u0650\u0635\u062d\u0641\u064a \u0630\u0647\u0628\u064a", + "\u0646\u062f\u064a\u0645", + "\u0646\u0633\u062e", + "\u0648\u0633\u064a\u0645", + "\u0906\u0908\u0970\u091f\u0940\u0970\u090f\u092b\u093c\u0970 \u0926\u0947\u0935\u0928\u093e\u0917\u0930\u0940", + "\u0906\u0908\u0970\u091f\u0940\u0970\u090f\u092b\u093c\u0970 \u0926\u0947\u0935\u0928\u093e\u0917\u0930\u0940 \u092e\u0930\u093e\u0920\u0940", + "\u0915\u094b\u0939\u093f\u0928\u0942\u0930 \u0926\u0947\u0935\u0928\u093e\u0917\u0930\u0940", + "\u0926\u0947\u0935\u0928\u093e\u0917\u0930\u0940 \u090f\u092e\u0970\u091f\u0940\u0970", + "\u0926\u0947\u0935\u0928\u093e\u0917\u0930\u0940 \u0938\u0902\u0917\u092e \u090f\u092e\u0970\u090f\u0928\u0970", + "\u0936\u094d\u0930\u0940 \u0926\u0947\u0935\u0928\u093e\u0917\u0930\u0940 \u096d\u0967\u096a", + "\u0e41\u0e1a\u0e1a\u0e2d\u0e31\u0e01\u0e29\u0e23\u0e23\u0e30\u0e1a\u0e1a", + "\u2e41\u7175\u6120\u82a9\u82c8", + "\u30b7\u30b9\u30c6\u30e0\u30d5\u30a9\u30f3\u30c8", + "\u30d2\u30e9\u30ae\u30ce\u4e38\u30b4 Pro", + "\u30d2\u30e9\u30ae\u30ce\u4e38\u30b4 Pro W4", + "\u30d2\u30e9\u30ae\u30ce\u4e38\u30b4 ProN", + "\u30d2\u30e9\u30ae\u30ce\u4e38\u30b4 ProN W4", + "\u30d2\u30e9\u30ae\u30ce\u660e\u671d Pro", + "\u30d2\u30e9\u30ae\u30ce\u660e\u671d Pro W3", + "\u30d2\u30e9\u30ae\u30ce\u660e\u671d Pro W6", + "\u30d2\u30e9\u30ae\u30ce\u660e\u671d ProN", + "\u30d2\u30e9\u30ae\u30ce\u660e\u671d ProN W3", + "\u30d2\u30e9\u30ae\u30ce\u660e\u671d ProN W6", + "\u30d2\u30e9\u30ae\u30ce\u89d2\u30b4 Pro", + "\u30d2\u30e9\u30ae\u30ce\u89d2\u30b4 Pro W3", + "\u30d2\u30e9\u30ae\u30ce\u89d2\u30b4 Pro W6", + "\u30d2\u30e9\u30ae\u30ce\u89d2\u30b4 ProN", + "\u30d2\u30e9\u30ae\u30ce\u89d2\u30b4 ProN W3", + "\u30d2\u30e9\u30ae\u30ce\u89d2\u30b4 ProN W6", + "\u30d2\u30e9\u30ae\u30ce\u89d2\u30b4 Std", + "\u30d2\u30e9\u30ae\u30ce\u89d2\u30b4 Std W8", + "\u30d2\u30e9\u30ae\u30ce\u89d2\u30b4 StdN", + "\u30d2\u30e9\u30ae\u30ce\u89d2\u30b4 StdN W8", + "\u30d2\u30e9\u30ae\u30ce\u89d2\u30b4 \u7c21\u4f53\u4e2d\u6587", + "\u30d2\u30e9\u30ae\u30ce\u89d2\u30b4 \u7c21\u4f53\u4e2d\u6587 W3", + "\u30d2\u30e9\u30ae\u30ce\u89d2\u30b4 \u7c21\u4f53\u4e2d\u6587 W6", + "\u30d2\u30e9\u30ae\u30ce\u89d2\u30b4\u30b7\u30c3\u30af", + "\u30d2\u30e9\u30ae\u30ce\u89d2\u30b4\u30b7\u30c3\u30af W0", + "\u30d2\u30e9\u30ae\u30ce\u89d2\u30b4\u30b7\u30c3\u30af W1", + "\u30d2\u30e9\u30ae\u30ce\u89d2\u30b4\u30b7\u30c3\u30af W2", + "\u30d2\u30e9\u30ae\u30ce\u89d2\u30b4\u30b7\u30c3\u30af W3", + "\u30d2\u30e9\u30ae\u30ce\u89d2\u30b4\u30b7\u30c3\u30af W4", + "\u30d2\u30e9\u30ae\u30ce\u89d2\u30b4\u30b7\u30c3\u30af W5", + "\u30d2\u30e9\u30ae\u30ce\u89d2\u30b4\u30b7\u30c3\u30af W6", + "\u30d2\u30e9\u30ae\u30ce\u89d2\u30b4\u30b7\u30c3\u30af W7", + "\u30d2\u30e9\u30ae\u30ce\u89d2\u30b4\u30b7\u30c3\u30af W8", + "\u30d2\u30e9\u30ae\u30ce\u89d2\u30b4\u30b7\u30c3\u30af W9", + "\u51ac\u9752\u9ed1\u4f53\u7b80\u4f53\u4e2d\u6587", + "\u51ac\u9752\u9ed1\u4f53\u7b80\u4f53\u4e2d\u6587 W3", + "\u51ac\u9752\u9ed1\u4f53\u7b80\u4f53\u4e2d\u6587 W6", + "\u51ac\u9752\u9ed1\u9ad4\u7c21\u9ad4\u4e2d\u6587", + "\u51ac\u9752\u9ed1\u9ad4\u7c21\u9ad4\u4e2d\u6587 W3", + "\u51ac\u9752\u9ed1\u9ad4\u7c21\u9ad4\u4e2d\u6587 W6", + "\u5b8b\u4f53-\u7b80", + "\u5b8b\u4f53-\u7e41", + "\u5b8b\u9ad4-\u7c21", + "\u5b8b\u9ad4-\u7e41", + "\u7cfb\u7d71\u5b57\u9ad4", + "\u7cfb\u7edf\u5b57\u4f53", + "\u82f9\u65b9-\u6e2f", + "\u82f9\u65b9-\u7b80", + "\u82f9\u65b9-\u7e41", + "\u8371\u8389\u834d\u836d\u8a70\u8353\u2050\u726f", + "\u8371\u8389\u834d\u836d\u8a70\u8353\u2053\u7464", + "\u8371\u8389\u834d\u836d\u8a70\u8353\u8356\u8362\u834e", + "\u8371\u8389\u834d\u836d\u8adb\u8353\u2050\u726f", + "\u8371\u8389\u834d\u836d\u96be\u92a9\u2050\u726f", + "\u860b\u65b9-\u6e2f", + "\u860b\u65b9-\u7c21", + "\u860b\u65b9-\u7e41", + "\u9ed1\u4f53-\u7b80", + "\u9ed1\u4f53-\u7e41", + "\u9ed1\u9ad4-\u7c21", + "\u9ed1\u9ad4-\u7e41", + "\u9ed2\u4f53-\u7c21", + "\u9ed2\u4f53-\u7e41", + "\uc2dc\uc2a4\ud15c \uc11c\uccb4" + ], + "lin": [ + "Arimo", + "Cousine", + "Noto Naskh Arabic", + "Noto Sans Adlam", + "Noto Sans Armenian", + "Noto Sans Balinese", + "Noto Sans Bamum", + "Noto Sans Bassa Vah", + "Noto Sans Batak", + "Noto Sans Bengali", + "Noto Sans Buginese", + "Noto Sans Buhid", + "Noto Sans Canadian Aboriginal", + "Noto Sans Chakma", + "Noto Sans Cham", + "Noto Sans Cherokee", + "Noto Sans Coptic", + "Noto Sans Deseret", + "Noto Sans Devanagari", + "Noto Sans Elbasan", + "Noto Sans Ethiopic", + "Noto Sans Georgian", + "Noto Sans Grantha", + "Noto Sans Gujarati", + "Noto Sans Gunjala Gondi", + "Noto Sans Gurmukhi", + "Noto Sans Hanifi Rohingya", + "Noto Sans Hanunoo", + "Noto Sans Hebrew", + "Noto Sans JP", + "Noto Sans Javanese", + "Noto Sans KR", + "Noto Sans Kannada", + "Noto Sans Kayah Li", + "Noto Sans Khmer", + "Noto Sans Khojki", + "Noto Sans Khudawadi", + "Noto Sans Lao", + "Noto Sans Lepcha", + "Noto Sans Limbu", + "Noto Sans Lisu", + "Noto Sans Mahajani", + "Noto Sans Malayalam", + "Noto Sans Mandaic", + "Noto Sans Masaram Gondi", + "Noto Sans Medefaidrin", + "Noto Sans Meetei Mayek", + "Noto Sans Mende Kikakui", + "Noto Sans Miao", + "Noto Sans Modi", + "Noto Sans Mongolian", + "Noto Sans Mro", + "Noto Sans Multani", + "Noto Sans Myanmar", + "Noto Sans NKo", + "Noto Sans New Tai Lue", + "Noto Sans Newa", + "Noto Sans Ol Chiki", + "Noto Sans Oriya", + "Noto Sans Osage", + "Noto Sans Osmanya", + "Noto Sans Pahawh Hmong", + "Noto Sans Pau Cin Hau", + "Noto Sans Rejang", + "Noto Sans Runic", + "Noto Sans SC", + "Noto Sans Samaritan", + "Noto Sans Saurashtra", + "Noto Sans Sharada", + "Noto Sans Shavian", + "Noto Sans Sinhala", + "Noto Sans Sora Sompeng", + "Noto Sans Soyombo", + "Noto Sans Sundanese", + "Noto Sans Syloti Nagri", + "Noto Sans Symbols", + "Noto Sans Symbols 2", + "Noto Sans Syriac", + "Noto Sans TC", + "Noto Sans Tagalog", + "Noto Sans Tagbanwa", + "Noto Sans Tai Le", + "Noto Sans Tai Tham", + "Noto Sans Tai Viet", + "Noto Sans Takri", + "Noto Sans Tamil", + "Noto Sans Telugu", + "Noto Sans Thaana", + "Noto Sans Thai", + "Noto Sans Tifinagh", + "Noto Sans Tifinagh APT", + "Noto Sans Tifinagh Adrar", + "Noto Sans Tifinagh Agraw Imazighen", + "Noto Sans Tifinagh Ahaggar", + "Noto Sans Tifinagh Air", + "Noto Sans Tifinagh Azawagh", + "Noto Sans Tifinagh Ghat", + "Noto Sans Tifinagh Hawad", + "Noto Sans Tifinagh Rhissa Ixa", + "Noto Sans Tifinagh SIL", + "Noto Sans Tifinagh Tawellemmet", + "Noto Sans Tirhuta", + "Noto Sans Vai", + "Noto Sans Wancho", + "Noto Sans Warang Citi", + "Noto Sans Yi", + "Noto Sans Zanabazar Square", + "Noto Serif Armenian", + "Noto Serif Balinese", + "Noto Serif Bengali", + "Noto Serif Devanagari", + "Noto Serif Dogra", + "Noto Serif Ethiopic", + "Noto Serif Georgian", + "Noto Serif Grantha", + "Noto Serif Gujarati", + "Noto Serif Gurmukhi", + "Noto Serif Hebrew", + "Noto Serif Kannada", + "Noto Serif Khmer", + "Noto Serif Khojki", + "Noto Serif Lao", + "Noto Serif Malayalam", + "Noto Serif Myanmar", + "Noto Serif NP Hmong", + "Noto Serif Sinhala", + "Noto Serif Tamil", + "Noto Serif Telugu", + "Noto Serif Thai", + "Noto Serif Tibetan", + "Noto Serif Yezidi", + "STIX Two Math", + "Tinos", + "Twemoji Mozilla" + ] +} diff --git a/src-tauri/src/camoufox/data/header-network-definition.zip b/src-tauri/src/camoufox/data/header-network-definition.zip new file mode 100644 index 0000000000000000000000000000000000000000..423228a4cb4375c207870502f7ce7a8dd7a2f9d5 GIT binary patch literal 40135 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�i|sjofyAP-~h(gOfTXlihC7d5Ej_IaXQTio)!WOP&noiFhn;Nhch+ z?uzP)%;gzQR7{My?;4Z^pLudUL~Er?`>YBWshG*X-|uo-QlkhVltiPyguUsm$D(m7 zWPASKRsAh*M9SCwgH&gX@^eDbY;!X2Ri^A~b^eSkYh4L%c!<+6mc>|<3FT_$UOahIg;`%gr0Jgm3>+@j^=pd zr}JA7YI#@(KXSR(PQ2Un#>nxS(BGS_MYjXO0qU%=PqV$4oOt2IJzSQ)nylcTj=` zyD%Lk>n#BU9;PERYhoCD{0>+TE6#um@gwk-I*haQ_vF{!0;OP_d~tOZ+%Mn>U;|1R z=Yid|RU#Jx=B-+05f=JuhF+Brh=uN0>2nwqx{4#jbl-5ia^?3&uO(xO$_riK z{VXajy(MPVj3TG7L}03muqiI>of%K2a*y5q^cXmks;A+)3d%+J!J83ZyjNw$L3jb_ zbw)|x@UfVNDkv*~u?wm>lSUWZ^8y2@Dx^d+KfiI*w&G~xRKU@#QR>0-rbq^@I9BDu z7r1ui;}^Kj(07&CK=gw#57NO3XlA_=r0mJMLP48<3|dit*1$r0srmQ%d;8V2K`9m=t5P5ojf+5f+Mi{bSDTIkTs979KB~ zfo^IsA4nF6#w*@dVlfC+IAUMzKBwdXl`36-XzUlk)>cZ)E!noN6>(Py@cFZ5%b7*@ z!*JF8z&{qjjrx&6+_w)dwn`)m&hacR9p_~&vG#zC{eNCaKWk2)5h31+lNO>aElaW# z{LThyaTs$9-1(vveR$|~>rxpuO@A)>t>9h3p3#ePW*fd$J5HF|$*zNse~dPH2N}<)y3RsDD*4x-5KHtVw8sj&AXu#)g|nm?{KRKIz*3 z`GPSqQqL5hejT-sH~U?_TvqNc-ceC~eA!X(ttf${a-(bWWx!!?5oiJW+6laqYd8uC z&A2mS9?Ak5aSF`b5`-#mvtc^9i30YdN zJaB@{o1cqL=TL<1&G**3Sb=bXdT<&gC_SzZuKg}G=XF19JA6f(Z;>yU=cv_Om2qLR zAQ85x%EiUi9)2ldVn9U9O!A)v_^$*1cYS*PulT<@Y+^u0{;wU;-&X#cH-EJm0QfJj CA#Cda literal 0 HcmV?d00001 diff --git a/src-tauri/src/camoufox/data/mod.rs b/src-tauri/src/camoufox/data/mod.rs new file mode 100644 index 0000000..f2d20fd --- /dev/null +++ b/src-tauri/src/camoufox/data/mod.rs @@ -0,0 +1,9 @@ +pub const FINGERPRINT_NETWORK_ZIP: &[u8] = include_bytes!("fingerprint-network-definition.zip"); +pub const INPUT_NETWORK_ZIP: &[u8] = include_bytes!("input-network-definition.zip"); +pub const HEADER_NETWORK_ZIP: &[u8] = include_bytes!("header-network-definition.zip"); +pub const BROWSER_HELPER_JSON: &str = include_str!("browser-helper-file.json"); +pub const HEADERS_ORDER_JSON: &str = include_str!("headers-order.json"); +pub const FONTS_JSON: &str = include_str!("fonts.json"); +pub const BROWSERFORGE_YML: &str = include_str!("browserforge.yml"); +pub const WEBGL_DATA_DB: &[u8] = include_bytes!("webgl_data.db"); +pub const TERRITORY_INFO_XML: &str = include_str!("territoryInfo.xml"); diff --git a/src-tauri/src/camoufox/data/territoryInfo.xml b/src-tauri/src/camoufox/data/territoryInfo.xml new file mode 100644 index 0000000..3526fca --- /dev/null +++ b/src-tauri/src/camoufox/data/territoryInfo.xml @@ -0,0 +1,2024 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src-tauri/src/camoufox/data/webgl_data.db b/src-tauri/src/camoufox/data/webgl_data.db new file mode 100644 index 0000000000000000000000000000000000000000..f8448aab92ea813fe576d34c404c3c75b0546740 GIT binary patch literal 266240 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%0D;2QNYIX|Cax^{QqSB|H9g% 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 literal 0 HcmV?d00001 diff --git a/src-tauri/src/camoufox/env_vars.rs b/src-tauri/src/camoufox/env_vars.rs new file mode 100644 index 0000000..09b3489 --- /dev/null +++ b/src-tauri/src/camoufox/env_vars.rs @@ -0,0 +1,142 @@ +//! Environment variable handling for Camoufox configuration. +//! +//! Camoufox reads its configuration from environment variables named CAMOU_CONFIG_1, CAMOU_CONFIG_2, etc. +//! The configuration JSON is chunked to fit within environment variable size limits. + +use std::collections::HashMap; + +/// Maximum chunk size for environment variables on Windows. +const CHUNK_SIZE_WINDOWS: usize = 2047; + +/// Maximum chunk size for environment variables on Unix systems. +const CHUNK_SIZE_UNIX: usize = 32767; + +/// Get the chunk size for the current platform. +fn get_chunk_size() -> usize { + if cfg!(windows) { + CHUNK_SIZE_WINDOWS + } else { + CHUNK_SIZE_UNIX + } +} + +/// Convert a Camoufox config map to environment variables. +/// +/// The config is serialized to JSON and split into chunks that fit within +/// environment variable size limits. Each chunk is stored in a variable +/// named CAMOU_CONFIG_1, CAMOU_CONFIG_2, etc. +pub fn config_to_env_vars( + config: &HashMap, +) -> Result, serde_json::Error> { + let config_json = serde_json::to_string(config)?; + Ok(chunk_config_string(&config_json)) +} + +/// Split a config string into chunks and create environment variable map. +pub fn chunk_config_string(config_str: &str) -> HashMap { + let chunk_size = get_chunk_size(); + let mut env_vars = HashMap::new(); + + for (i, chunk) in config_str.as_bytes().chunks(chunk_size).enumerate() { + let chunk_str = String::from_utf8_lossy(chunk).to_string(); + let env_name = format!("CAMOU_CONFIG_{}", i + 1); + env_vars.insert(env_name, chunk_str); + } + + env_vars +} + +/// Determine the target OS from a user agent string. +pub fn determine_ua_os(user_agent: &str) -> &'static str { + let ua_lower = user_agent.to_lowercase(); + + if ua_lower.contains("mac os") || ua_lower.contains("macos") || ua_lower.contains("macintosh") { + "mac" + } else if ua_lower.contains("windows") { + "win" + } else { + "lin" + } +} + +/// Get the fontconfig path environment variable for Linux. +pub fn get_fontconfig_env(target_os: &str, camoufox_path: &std::path::Path) -> Option { + if cfg!(target_os = "linux") { + let fontconfig_dir = camoufox_path.join("fontconfig").join(target_os); + if fontconfig_dir.exists() { + return Some(fontconfig_dir.to_string_lossy().to_string()); + } + } + None +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_chunk_small_config() { + let config = r#"{"navigator.userAgent": "Mozilla/5.0"}"#; + let env_vars = chunk_config_string(config); + + assert_eq!(env_vars.len(), 1); + assert!(env_vars.contains_key("CAMOU_CONFIG_1")); + assert_eq!(env_vars.get("CAMOU_CONFIG_1").unwrap(), config); + } + + #[test] + fn test_chunk_large_config() { + // Create a config string larger than the chunk size + let chunk_size = get_chunk_size(); + let large_value = "x".repeat(chunk_size * 2 + 100); + let config = format!(r#"{{"key": "{}"}}"#, large_value); + + let env_vars = chunk_config_string(&config); + + // Should have at least 2 chunks + assert!(env_vars.len() >= 2); + assert!(env_vars.contains_key("CAMOU_CONFIG_1")); + assert!(env_vars.contains_key("CAMOU_CONFIG_2")); + + // Reconstruct and verify + let mut reconstructed = String::new(); + let mut i = 1; + while let Some(chunk) = env_vars.get(&format!("CAMOU_CONFIG_{}", i)) { + reconstructed.push_str(chunk); + i += 1; + } + assert_eq!(reconstructed, config); + } + + #[test] + fn test_determine_ua_os_windows() { + let ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135.0"; + assert_eq!(determine_ua_os(ua), "win"); + } + + #[test] + fn test_determine_ua_os_macos() { + let ua = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:135.0) Gecko/20100101 Firefox/135.0"; + assert_eq!(determine_ua_os(ua), "mac"); + } + + #[test] + fn test_determine_ua_os_linux() { + let ua = "Mozilla/5.0 (X11; Linux x86_64; rv:135.0) Gecko/20100101 Firefox/135.0"; + assert_eq!(determine_ua_os(ua), "lin"); + } + + #[test] + fn test_config_to_env_vars() { + let mut config = HashMap::new(); + config.insert( + "navigator.userAgent".to_string(), + serde_json::json!("Mozilla/5.0 Firefox/135.0"), + ); + config.insert("screen.width".to_string(), serde_json::json!(1920)); + + let env_vars = config_to_env_vars(&config).unwrap(); + assert!(!env_vars.is_empty()); + assert!(env_vars.contains_key("CAMOU_CONFIG_1")); + } +} diff --git a/src-tauri/src/camoufox/fingerprint/bayesian_network.rs b/src-tauri/src/camoufox/fingerprint/bayesian_network.rs new file mode 100644 index 0000000..75cce0c --- /dev/null +++ b/src-tauri/src/camoufox/fingerprint/bayesian_network.rs @@ -0,0 +1,198 @@ +//! Bayesian network for fingerprint generation. +//! +//! Loads pre-trained probability distributions from ZIP files and samples fingerprints. + +use super::bayesian_node::{BayesianNode, NodeDefinition}; +use serde::Deserialize; +use std::collections::HashMap; +use std::io::{Cursor, Read}; +use zip::ZipArchive; + +/// Network definition structure from the ZIP file. +#[derive(Debug, Deserialize)] +pub struct NetworkDefinition { + pub nodes: Vec, +} + +/// A Bayesian network for generating consistent fingerprints. +pub struct BayesianNetwork { + nodes_in_sampling_order: Vec, + nodes_by_name: HashMap, +} + +impl BayesianNetwork { + /// Load a Bayesian network from embedded ZIP file bytes. + pub fn from_zip_bytes(zip_bytes: &[u8]) -> Result { + let cursor = Cursor::new(zip_bytes); + let mut archive = ZipArchive::new(cursor)?; + + // Find and read the JSON file from the ZIP + let mut json_content = String::new(); + for i in 0..archive.len() { + let mut file = archive.by_index(i)?; + if file.name().ends_with(".json") { + file.read_to_string(&mut json_content)?; + break; + } + } + + if json_content.is_empty() { + return Err(BayesianNetworkError::NoJsonInZip); + } + + let definition: NetworkDefinition = serde_json::from_str(&json_content)?; + + let mut nodes_in_sampling_order = Vec::with_capacity(definition.nodes.len()); + let mut nodes_by_name = HashMap::with_capacity(definition.nodes.len()); + + for (i, node_def) in definition.nodes.into_iter().enumerate() { + nodes_by_name.insert(node_def.name.clone(), i); + nodes_in_sampling_order.push(BayesianNode::new(node_def)); + } + + Ok(Self { + nodes_in_sampling_order, + nodes_by_name, + }) + } + + /// Get a node by name. + pub fn get_node(&self, name: &str) -> Option<&BayesianNode> { + self + .nodes_by_name + .get(name) + .map(|&i| &self.nodes_in_sampling_order[i]) + } + + /// Get possible values for a node. + pub fn get_possible_values(&self, name: &str) -> Option> { + self + .get_node(name) + .map(|node| node.possible_values().to_vec()) + } + + /// Generate a random sample from the network. + /// + /// `input_values` contains already known node values that should not be overwritten. + pub fn generate_sample(&self, input_values: &HashMap) -> HashMap { + let mut sample = input_values.clone(); + + for node in &self.nodes_in_sampling_order { + if !sample.contains_key(node.name()) { + let value = node.sample(&sample); + sample.insert(node.name().to_string(), value); + } + } + + sample + } + + /// Generate a random sample consistent with the given value restrictions. + /// + /// Uses backtracking to find a valid configuration. + /// Returns `None` if no consistent sample can be generated. + pub fn generate_consistent_sample_when_possible( + &self, + value_possibilities: &HashMap>, + ) -> Option> { + self.recursively_generate_consistent_sample(HashMap::new(), value_possibilities, 0) + } + + fn recursively_generate_consistent_sample( + &self, + sample_so_far: HashMap, + value_possibilities: &HashMap>, + depth: usize, + ) -> Option> { + if depth >= self.nodes_in_sampling_order.len() { + return Some(sample_so_far); + } + + let node = &self.nodes_in_sampling_order[depth]; + let mut banned_values: Vec = Vec::new(); + let mut sample_so_far = sample_so_far; + + loop { + let sample_value = node.sample_according_to_restrictions( + &sample_so_far, + value_possibilities.get(node.name()).map(|v| v.as_slice()), + &banned_values, + ); + + let Some(value) = sample_value else { + break; + }; + + sample_so_far.insert(node.name().to_string(), value.clone()); + + if let Some(complete_sample) = self.recursively_generate_consistent_sample( + sample_so_far.clone(), + value_possibilities, + depth + 1, + ) { + return Some(complete_sample); + } + + banned_values.push(value); + } + + None + } +} + +/// Errors that can occur when working with Bayesian networks. +#[derive(Debug, thiserror::Error)] +pub enum BayesianNetworkError { + #[error("ZIP file error: {0}")] + Zip(#[from] zip::result::ZipError), + + #[error("IO error: {0}")] + Io(#[from] std::io::Error), + + #[error("JSON parsing error: {0}")] + Json(#[from] serde_json::Error), + + #[error("No JSON file found in ZIP archive")] + NoJsonInZip, +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_load_input_network() { + let zip_bytes = include_bytes!("../data/input-network-definition.zip"); + let network = BayesianNetwork::from_zip_bytes(zip_bytes); + assert!( + network.is_ok(), + "Failed to load input network: {:?}", + network.err() + ); + } + + #[test] + fn test_generate_sample_from_input_network() { + let zip_bytes = include_bytes!("../data/input-network-definition.zip"); + let network = BayesianNetwork::from_zip_bytes(zip_bytes).unwrap(); + + let sample = network.generate_sample(&HashMap::new()); + assert!(!sample.is_empty(), "Sample should not be empty"); + } + + #[test] + fn test_generate_consistent_sample() { + let zip_bytes = include_bytes!("../data/input-network-definition.zip"); + let network = BayesianNetwork::from_zip_bytes(zip_bytes).unwrap(); + + let mut constraints = HashMap::new(); + constraints.insert("*OPERATING_SYSTEM".to_string(), vec!["windows".to_string()]); + + let sample = network.generate_consistent_sample_when_possible(&constraints); + assert!(sample.is_some(), "Should generate a consistent sample"); + + if let Some(s) = sample { + assert_eq!(s.get("*OPERATING_SYSTEM"), Some(&"windows".to_string())); + } + } +} diff --git a/src-tauri/src/camoufox/fingerprint/bayesian_node.rs b/src-tauri/src/camoufox/fingerprint/bayesian_node.rs new file mode 100644 index 0000000..d7893ef --- /dev/null +++ b/src-tauri/src/camoufox/fingerprint/bayesian_node.rs @@ -0,0 +1,231 @@ +//! Bayesian network node implementation for fingerprint generation. +//! +//! Implements weighted random sampling from conditional probability distributions. + +use rand::Rng; +use serde::Deserialize; +use std::collections::HashMap; + +/// Node definition from the network JSON file. +#[derive(Debug, Clone, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct NodeDefinition { + pub name: String, + pub parent_names: Vec, + pub possible_values: Vec, + pub conditional_probabilities: ConditionalProbabilities, +} + +/// Conditional probability structure - can be nested or terminal. +#[derive(Debug, Clone, Deserialize)] +pub struct ConditionalProbabilities { + #[serde(default)] + pub deeper: Option>, + #[serde(default)] + pub skip: Option>, + #[serde(flatten)] + pub probabilities: HashMap, +} + +impl ConditionalProbabilities { + /// Check if this is a terminal node (has actual probabilities, not deeper nesting) + pub fn is_terminal(&self) -> bool { + self.deeper.is_none() + } +} + +/// A single node in the Bayesian network. +pub struct BayesianNode { + definition: NodeDefinition, +} + +impl BayesianNode { + pub fn new(definition: NodeDefinition) -> Self { + Self { definition } + } + + pub fn name(&self) -> &str { + &self.definition.name + } + + pub fn parent_names(&self) -> &[String] { + &self.definition.parent_names + } + + pub fn possible_values(&self) -> &[String] { + &self.definition.possible_values + } + + /// Get the probability distribution given parent node values. + fn get_probabilities_given_known_values( + &self, + parent_values: &HashMap, + ) -> HashMap { + let mut probabilities = &self.definition.conditional_probabilities; + + for parent_name in &self.definition.parent_names { + if let Some(deeper) = &probabilities.deeper { + if let Some(parent_value) = parent_values.get(parent_name) { + if let Some(next_level) = deeper.get(parent_value) { + probabilities = next_level; + continue; + } + } + // Use skip if parent value not found in deeper + if let Some(skip) = &probabilities.skip { + probabilities = skip; + } + } + } + + probabilities.probabilities.clone() + } + + /// Randomly sample from the given values using the given probabilities. + fn sample_random_value_from_possibilities( + possible_values: &[String], + total_probability: f64, + probabilities: &HashMap, + ) -> String { + if possible_values.is_empty() { + return String::new(); + } + + let mut rng = rand::rng(); + let anchor = rng.random::() * total_probability; + let mut cumulative = 0.0; + + for value in possible_values { + if let Some(&prob) = probabilities.get(value) { + cumulative += prob; + if cumulative > anchor { + return value.clone(); + } + } + } + + possible_values.first().cloned().unwrap_or_default() + } + + /// Sample a value from the conditional distribution given parent values. + pub fn sample(&self, parent_values: &HashMap) -> String { + let probabilities = self.get_probabilities_given_known_values(parent_values); + let possible_values: Vec = probabilities.keys().cloned().collect(); + + Self::sample_random_value_from_possibilities(&possible_values, 1.0, &probabilities) + } + + /// Sample according to restrictions on possible values. + /// + /// Returns `None` if no valid value can be sampled. + pub fn sample_according_to_restrictions( + &self, + parent_values: &HashMap, + value_possibilities: Option<&[String]>, + banned_values: &[String], + ) -> Option { + let probabilities = self.get_probabilities_given_known_values(parent_values); + let values_in_distribution: Vec = probabilities.keys().cloned().collect(); + + let possible_values = value_possibilities.unwrap_or(&values_in_distribution); + + let mut valid_values = Vec::new(); + let mut total_probability = 0.0; + + for value in possible_values { + if !banned_values.contains(value) && values_in_distribution.contains(value) { + if let Some(&prob) = probabilities.get(value) { + valid_values.push(value.clone()); + total_probability += prob; + } + } + } + + if valid_values.is_empty() { + return None; + } + + Some(Self::sample_random_value_from_possibilities( + &valid_values, + total_probability, + &probabilities, + )) + } +} + +#[cfg(test)] +mod tests { + use super::*; + + fn create_test_node() -> BayesianNode { + let mut probs = HashMap::new(); + probs.insert("1920".to_string(), 0.5); + probs.insert("1366".to_string(), 0.3); + probs.insert("1536".to_string(), 0.2); + + let definition = NodeDefinition { + name: "screen.width".to_string(), + parent_names: vec![], + possible_values: vec!["1920".to_string(), "1366".to_string(), "1536".to_string()], + conditional_probabilities: ConditionalProbabilities { + deeper: None, + skip: None, + probabilities: probs, + }, + }; + + BayesianNode::new(definition) + } + + #[test] + fn test_sample_returns_valid_value() { + let node = create_test_node(); + let parent_values = HashMap::new(); + + for _ in 0..100 { + let value = node.sample(&parent_values); + assert!( + node.possible_values().contains(&value), + "Sampled value '{}' not in possible values", + value + ); + } + } + + #[test] + fn test_sample_with_restrictions() { + let node = create_test_node(); + let parent_values = HashMap::new(); + + let allowed = vec!["1920".to_string()]; + let banned = vec![]; + + let value = node.sample_according_to_restrictions(&parent_values, Some(&allowed), &banned); + + assert_eq!(value, Some("1920".to_string())); + } + + #[test] + fn test_sample_with_banned_values() { + let node = create_test_node(); + let parent_values = HashMap::new(); + + let banned = vec!["1920".to_string(), "1366".to_string()]; + + for _ in 0..100 { + let value = node.sample_according_to_restrictions(&parent_values, None, &banned); + assert_eq!(value, Some("1536".to_string())); + } + } + + #[test] + fn test_sample_returns_none_when_all_banned() { + let node = create_test_node(); + let parent_values = HashMap::new(); + + let banned = vec!["1920".to_string(), "1366".to_string(), "1536".to_string()]; + + let value = node.sample_according_to_restrictions(&parent_values, None, &banned); + assert!(value.is_none()); + } +} diff --git a/src-tauri/src/camoufox/fingerprint/mod.rs b/src-tauri/src/camoufox/fingerprint/mod.rs new file mode 100644 index 0000000..52c8e5f --- /dev/null +++ b/src-tauri/src/camoufox/fingerprint/mod.rs @@ -0,0 +1,569 @@ +//! Fingerprint generation module. +//! +//! Generates realistic browser fingerprints using Bayesian networks trained on real browser data. + +pub mod bayesian_network; +pub mod bayesian_node; +pub mod types; + +use bayesian_network::{BayesianNetwork, BayesianNetworkError}; +use std::collections::HashMap; +use types::*; + +use crate::camoufox::data; + +/// Fingerprint generator using Bayesian networks. +pub struct FingerprintGenerator { + fingerprint_network: BayesianNetwork, + input_network: BayesianNetwork, + header_network: BayesianNetwork, + browser_helper: Vec, + headers_order: HashMap>, +} + +/// Parsed browser/HTTP version info. +#[derive(Debug, Clone)] +pub struct BrowserHttpInfo { + pub name: String, + pub version: Vec, + pub http_version: String, + pub complete_string: String, +} + +impl BrowserHttpInfo { + fn parse(s: &str) -> Option { + if s == MISSING_VALUE_DATASET_TOKEN { + return None; + } + + let parts: Vec<&str> = s.split('|').collect(); + if parts.len() != 2 { + return None; + } + + let browser_string = parts[0]; + let http_version = parts[1].to_string(); + + let browser_parts: Vec<&str> = browser_string.split('/').collect(); + if browser_parts.len() != 2 { + return None; + } + + let name = browser_parts[0].to_string(); + let version: Vec = browser_parts[1] + .split('.') + .filter_map(|v| v.parse().ok()) + .collect(); + + Some(Self { + name, + version, + http_version, + complete_string: s.to_string(), + }) + } + + pub fn major_version(&self) -> u32 { + self.version.first().copied().unwrap_or(0) + } +} + +/// Error type for fingerprint generation. +#[derive(Debug, thiserror::Error)] +pub enum FingerprintError { + #[error("Bayesian network error: {0}")] + Network(#[from] BayesianNetworkError), + + #[error("JSON parsing error: {0}")] + Json(#[from] serde_json::Error), + + #[error("Failed to generate consistent fingerprint after {0} attempts")] + GenerationFailed(u32), + + #[error("No valid fingerprint generated")] + NoValidFingerprint, +} + +impl FingerprintGenerator { + /// Create a new fingerprint generator. + pub fn new() -> Result { + let fingerprint_network = BayesianNetwork::from_zip_bytes(data::FINGERPRINT_NETWORK_ZIP)?; + let input_network = BayesianNetwork::from_zip_bytes(data::INPUT_NETWORK_ZIP)?; + let header_network = BayesianNetwork::from_zip_bytes(data::HEADER_NETWORK_ZIP)?; + + let browser_strings: Vec = serde_json::from_str(data::BROWSER_HELPER_JSON)?; + let browser_helper: Vec = browser_strings + .iter() + .filter_map(|s| BrowserHttpInfo::parse(s)) + .collect(); + + let headers_order: HashMap> = + serde_json::from_str(data::HEADERS_ORDER_JSON)?; + + Ok(Self { + fingerprint_network, + input_network, + header_network, + browser_helper, + headers_order, + }) + } + + /// Generate a fingerprint with matching headers. + pub fn get_fingerprint( + &self, + options: &FingerprintOptions, + ) -> Result { + const MAX_RETRIES: u32 = 10; + + // Build constraints from options + let mut value_possibilities = self.build_constraints(options); + + // Handle screen constraints + let screen_values = if let Some(screen_constraints) = &options.screen { + self.filter_screen_values(screen_constraints) + } else { + None + }; + + if let Some(sv) = screen_values { + value_possibilities.insert("screen".to_string(), sv); + } + + for attempt in 0..MAX_RETRIES { + // Generate input sample consistent with constraints + let input_sample = self + .input_network + .generate_consistent_sample_when_possible(&value_possibilities); + + let Some(input_sample) = input_sample else { + continue; + }; + + // Generate header sample from input + let header_sample = self.header_network.generate_sample(&input_sample); + + // Extract user agent + let user_agent = header_sample + .get("user-agent") + .or_else(|| header_sample.get("User-Agent")) + .cloned() + .unwrap_or_default(); + + // Build fingerprint constraints with the generated user agent + let mut fp_constraints = value_possibilities.clone(); + fp_constraints.insert("userAgent".to_string(), vec![user_agent.clone()]); + + // Generate fingerprint sample + let fingerprint_sample = self + .fingerprint_network + .generate_consistent_sample_when_possible(&fp_constraints); + + let Some(fp_sample) = fingerprint_sample else { + log::debug!( + "Failed to generate fingerprint on attempt {}, retrying", + attempt + 1 + ); + continue; + }; + + // Transform the sample to a Fingerprint struct + match self.transform_sample(&fp_sample, &header_sample, options) { + Ok(result) => return Ok(result), + Err(e) => { + log::debug!( + "Failed to transform fingerprint on attempt {}: {}", + attempt + 1, + e + ); + continue; + } + } + } + + Err(FingerprintError::GenerationFailed(MAX_RETRIES)) + } + + /// Build constraint map from options. + fn build_constraints(&self, options: &FingerprintOptions) -> HashMap> { + let mut constraints = HashMap::new(); + + // Operating system constraint + if let Some(os) = &options.operating_system { + constraints.insert(OPERATING_SYSTEM_NODE_NAME.to_string(), vec![os.clone()]); + } + + // Device constraint (default to desktop) + let devices = options + .devices + .clone() + .unwrap_or_else(|| vec!["desktop".to_string()]); + constraints.insert(DEVICE_NODE_NAME.to_string(), devices); + + // Browser constraint + let browsers = options + .browsers + .clone() + .unwrap_or_else(|| SUPPORTED_BROWSERS.iter().map(|s| s.to_string()).collect()); + + let http_version = options + .http_version + .clone() + .unwrap_or_else(|| "2".to_string()); + + // Filter browser helper entries by browser names and HTTP version + let browser_http_values: Vec = self + .browser_helper + .iter() + .filter(|bh| browsers.contains(&bh.name) && bh.http_version == http_version) + .map(|bh| bh.complete_string.clone()) + .collect(); + + if !browser_http_values.is_empty() { + constraints.insert(BROWSER_HTTP_NODE_NAME.to_string(), browser_http_values); + } + + constraints + } + + /// Filter screen values based on constraints. + fn filter_screen_values(&self, constraints: &ScreenConstraints) -> Option> { + let possible_values = self.fingerprint_network.get_possible_values("screen")?; + + let filtered: Vec = possible_values + .into_iter() + .filter(|screen_str| { + // Screen values are stored as "*STRINGIFIED*{...json...}" + if let Some(json_str) = screen_str.strip_prefix(STRINGIFIED_PREFIX) { + if let Ok(screen) = serde_json::from_str::(json_str) { + let width = screen["width"].as_u64().unwrap_or(0) as u32; + let height = screen["height"].as_u64().unwrap_or(0) as u32; + return constraints.matches(width, height); + } + } + true + }) + .collect(); + + if filtered.is_empty() { + None + } else { + Some(filtered) + } + } + + /// Transform raw sample data into a Fingerprint struct. + fn transform_sample( + &self, + fp_sample: &HashMap, + header_sample: &HashMap, + options: &FingerprintOptions, + ) -> Result { + // Parse values, handling STRINGIFIED prefix and MISSING_VALUE token + let mut parsed: HashMap = HashMap::new(); + + for (key, value) in fp_sample { + if value == MISSING_VALUE_DATASET_TOKEN { + continue; + } + + let parsed_value = if let Some(json_str) = value.strip_prefix(STRINGIFIED_PREFIX) { + serde_json::from_str(json_str)? + } else { + serde_json::Value::String(value.clone()) + }; + + parsed.insert(key.clone(), parsed_value); + } + + // Check if screen was generated + let screen_value = parsed.get("screen"); + if screen_value.is_none() { + return Err(FingerprintError::NoValidFingerprint); + } + + // Extract screen fingerprint + let screen = if let Some(screen_val) = screen_value { + serde_json::from_value(screen_val.clone()).unwrap_or_default() + } else { + ScreenFingerprint::default() + }; + + // Build languages from Accept-Language header + let accept_language = header_sample + .get("accept-language") + .or_else(|| header_sample.get("Accept-Language")) + .cloned() + .unwrap_or_else(|| "en-US".to_string()); + + let languages: Vec = accept_language + .split(',') + .map(|s| s.split(';').next().unwrap_or(s).trim().to_string()) + .collect(); + + let language = languages + .first() + .cloned() + .unwrap_or_else(|| "en-US".to_string()); + + // Build navigator fingerprint + let navigator = NavigatorFingerprint { + user_agent: get_string(&parsed, "userAgent"), + user_agent_data: parsed + .get("userAgentData") + .and_then(|v| serde_json::from_value(v.clone()).ok()), + do_not_track: parsed + .get("doNotTrack") + .and_then(|v| v.as_str().map(String::from)), + app_code_name: get_string_or(&parsed, "appCodeName", "Mozilla"), + app_name: get_string_or(&parsed, "appName", "Netscape"), + app_version: get_string(&parsed, "appVersion"), + oscpu: parsed + .get("oscpu") + .and_then(|v| v.as_str().map(String::from)), + webdriver: parsed + .get("webdriver") + .and_then(|v| v.as_str().map(String::from)), + language, + languages, + platform: get_string(&parsed, "platform"), + device_memory: parsed + .get("deviceMemory") + .and_then(|v| v.as_str()) + .and_then(|s| s.parse().ok()), + hardware_concurrency: parsed + .get("hardwareConcurrency") + .and_then(|v| v.as_str()) + .and_then(|s| s.parse().ok()) + .unwrap_or(4), + product: get_string_or(&parsed, "product", "Gecko"), + product_sub: get_string(&parsed, "productSub"), + vendor: get_string(&parsed, "vendor"), + vendor_sub: get_string(&parsed, "vendorSub"), + max_touch_points: parsed + .get("maxTouchPoints") + .and_then(|v| v.as_str()) + .and_then(|s| s.parse().ok()) + .unwrap_or(0), + extra_properties: parsed + .get("extraProperties") + .and_then(|v| serde_json::from_value(v.clone()).ok()), + }; + + // Build video card (will be filled later by WebGL sampler) + let video_card = parsed + .get("videoCard") + .and_then(|v| serde_json::from_value(v.clone()).ok()) + .unwrap_or_default(); + + // Build other components + let audio_codecs = parsed + .get("audioCodecs") + .and_then(|v| serde_json::from_value(v.clone()).ok()) + .unwrap_or_default(); + + let video_codecs = parsed + .get("videoCodecs") + .and_then(|v| serde_json::from_value(v.clone()).ok()) + .unwrap_or_default(); + + let plugins_data = parsed + .get("pluginsData") + .and_then(|v| serde_json::from_value(v.clone()).ok()) + .unwrap_or_default(); + + let battery = parsed + .get("battery") + .and_then(|v| serde_json::from_value(v.clone()).ok()); + + let multimedia_devices = parsed + .get("multimediaDevices") + .and_then(|v| serde_json::from_value(v.clone()).ok()) + .unwrap_or_default(); + + let fonts = parsed + .get("fonts") + .and_then(|v| serde_json::from_value(v.clone()).ok()) + .unwrap_or_default(); + + let fingerprint = Fingerprint { + screen, + navigator, + video_codecs, + audio_codecs, + plugins_data, + battery, + video_card, + multimedia_devices, + fonts, + mock_web_rtc: options.mock_web_rtc, + slim: options.slim, + }; + + // Build headers (filter out internal nodes and missing values) + let headers: Headers = header_sample + .iter() + .filter(|(k, v)| !k.starts_with('*') && *v != MISSING_VALUE_DATASET_TOKEN) + .map(|(k, v)| (k.clone(), v.clone())) + .collect(); + + // Order headers + let ordered_headers = self.order_headers(&headers, &fingerprint.navigator.user_agent); + + Ok(FingerprintWithHeaders { + fingerprint, + headers: ordered_headers, + }) + } + + /// Order headers according to browser-specific ordering. + fn order_headers(&self, headers: &Headers, user_agent: &str) -> Headers { + let browser = detect_browser_from_ua(user_agent); + let order = self.headers_order.get(browser).cloned().unwrap_or_default(); + + let mut ordered = HashMap::new(); + + // Add headers in order + for header_name in &order { + if let Some(value) = headers.get(header_name) { + ordered.insert(header_name.clone(), value.clone()); + } + } + + // Add remaining headers not in order + for (key, value) in headers { + if !order.contains(key) { + ordered.insert(key.clone(), value.clone()); + } + } + + ordered + } +} + +fn get_string(map: &HashMap, key: &str) -> String { + map + .get(key) + .and_then(|v| v.as_str()) + .map(String::from) + .unwrap_or_default() +} + +fn get_string_or(map: &HashMap, key: &str, default: &str) -> String { + map + .get(key) + .and_then(|v| v.as_str()) + .map(String::from) + .unwrap_or_else(|| default.to_string()) +} + +fn detect_browser_from_ua(user_agent: &str) -> &str { + let ua_lower = user_agent.to_lowercase(); + if ua_lower.contains("firefox") { + "firefox" + } else if ua_lower.contains("edg/") || ua_lower.contains("edge") { + "edge" + } else if ua_lower.contains("chrome") { + "chrome" + } else if ua_lower.contains("safari") { + "safari" + } else { + "chrome" + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_create_generator() { + let generator = FingerprintGenerator::new(); + assert!( + generator.is_ok(), + "Failed to create generator: {:?}", + generator.err() + ); + } + + #[test] + fn test_generate_fingerprint() { + let generator = FingerprintGenerator::new().unwrap(); + let options = FingerprintOptions::default(); + + let result = generator.get_fingerprint(&options); + assert!( + result.is_ok(), + "Failed to generate fingerprint: {:?}", + result.err() + ); + + if let Ok(fp) = result { + assert!(!fp.fingerprint.navigator.user_agent.is_empty()); + assert!(fp.fingerprint.screen.width > 0); + assert!(fp.fingerprint.screen.height > 0); + } + } + + #[test] + fn test_generate_firefox_fingerprint() { + let generator = FingerprintGenerator::new().unwrap(); + let options = FingerprintOptions { + browsers: Some(vec!["firefox".to_string()]), + ..Default::default() + }; + + let result = generator.get_fingerprint(&options); + assert!(result.is_ok(), "Failed to generate Firefox fingerprint"); + + if let Ok(fp) = result { + assert!( + fp.fingerprint + .navigator + .user_agent + .to_lowercase() + .contains("firefox"), + "User agent should contain Firefox: {}", + fp.fingerprint.navigator.user_agent + ); + } + } + + #[test] + fn test_generate_with_screen_constraints() { + let generator = FingerprintGenerator::new().unwrap(); + let options = FingerprintOptions { + screen: Some(ScreenConstraints { + min_width: Some(1900), + max_width: Some(1920), + min_height: Some(1000), + max_height: Some(1100), + }), + ..Default::default() + }; + + let result = generator.get_fingerprint(&options); + assert!( + result.is_ok(), + "Failed to generate fingerprint with screen constraints" + ); + + if let Ok(fp) = result { + assert!( + fp.fingerprint.screen.width >= 1900 && fp.fingerprint.screen.width <= 1920, + "Screen width {} should be between 1900 and 1920", + fp.fingerprint.screen.width + ); + } + } + + #[test] + fn test_browser_http_info_parse() { + let info = BrowserHttpInfo::parse("chrome/143.0.0.0|2"); + assert!(info.is_some()); + let info = info.unwrap(); + assert_eq!(info.name, "chrome"); + assert_eq!(info.major_version(), 143); + assert_eq!(info.http_version, "2"); + } +} diff --git a/src-tauri/src/camoufox/fingerprint/types.rs b/src-tauri/src/camoufox/fingerprint/types.rs new file mode 100644 index 0000000..e348ef4 --- /dev/null +++ b/src-tauri/src/camoufox/fingerprint/types.rs @@ -0,0 +1,302 @@ +//! Fingerprint type definitions. +//! +//! These types represent browser fingerprints that can be injected into Camoufox. + +use serde::{Deserialize, Serialize}; +use std::collections::HashMap; + +/// A complete browser fingerprint. +#[derive(Debug, Clone, Serialize, Deserialize, Default)] +#[serde(rename_all = "camelCase")] +pub struct Fingerprint { + pub screen: ScreenFingerprint, + pub navigator: NavigatorFingerprint, + #[serde(default)] + pub video_codecs: HashMap, + #[serde(default)] + pub audio_codecs: HashMap, + #[serde(default)] + pub plugins_data: HashMap, + #[serde(default)] + pub battery: Option, + pub video_card: VideoCard, + #[serde(default)] + pub multimedia_devices: Vec, + #[serde(default)] + pub fonts: Vec, + #[serde(default)] + pub mock_web_rtc: bool, + #[serde(default)] + pub slim: bool, +} + +/// Screen-related fingerprint properties. +#[derive(Debug, Clone, Serialize, Deserialize, Default)] +#[serde(rename_all = "camelCase")] +pub struct ScreenFingerprint { + pub width: u32, + pub height: u32, + pub avail_width: u32, + pub avail_height: u32, + #[serde(default)] + pub avail_top: u32, + #[serde(default)] + pub avail_left: u32, + pub color_depth: u32, + pub pixel_depth: u32, + #[serde(default = "default_device_pixel_ratio")] + pub device_pixel_ratio: f64, + #[serde(default)] + pub page_x_offset: f64, + #[serde(default)] + pub page_y_offset: f64, + pub inner_width: u32, + pub inner_height: u32, + pub outer_width: u32, + pub outer_height: u32, + #[serde(default)] + pub screen_x: i32, + #[serde(default)] + pub screen_y: i32, + #[serde(default)] + pub client_width: Option, + #[serde(default)] + pub client_height: Option, + #[serde(default)] + pub has_hdr: bool, +} + +fn default_device_pixel_ratio() -> f64 { + 1.0 +} + +/// Brand information for User-Agent Client Hints. +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct Brand { + pub brand: String, + pub version: String, +} + +/// User-Agent Client Hints data. +#[derive(Debug, Clone, Serialize, Deserialize, Default)] +#[serde(rename_all = "camelCase")] +pub struct UserAgentData { + #[serde(default)] + pub brands: Vec, + #[serde(default)] + pub mobile: bool, + #[serde(default)] + pub platform: String, + #[serde(default)] + pub architecture: String, + #[serde(default)] + pub bitness: String, + #[serde(default)] + pub full_version_list: Vec, + #[serde(default)] + pub model: String, + #[serde(default)] + pub platform_version: String, + #[serde(default)] + pub ua_full_version: String, +} + +/// Extra navigator properties. +#[derive(Debug, Clone, Serialize, Deserialize, Default)] +#[serde(rename_all = "camelCase")] +pub struct ExtraProperties { + #[serde(default)] + pub vendor_flavors: Vec, + #[serde(default)] + pub is_bluetooth_supported: bool, + #[serde(default)] + pub global_privacy_control: Option, + #[serde(default = "default_pdf_viewer_enabled")] + pub pdf_viewer_enabled: bool, + #[serde(default)] + pub installed_apps: Vec, +} + +fn default_pdf_viewer_enabled() -> bool { + true +} + +/// Navigator-related fingerprint properties. +#[derive(Debug, Clone, Serialize, Deserialize, Default)] +#[serde(rename_all = "camelCase")] +pub struct NavigatorFingerprint { + pub user_agent: String, + #[serde(default)] + pub user_agent_data: Option, + #[serde(default)] + pub do_not_track: Option, + #[serde(default = "default_app_code_name")] + pub app_code_name: String, + #[serde(default = "default_app_name")] + pub app_name: String, + #[serde(default)] + pub app_version: String, + #[serde(default)] + pub oscpu: Option, + #[serde(default)] + pub webdriver: Option, + pub language: String, + pub languages: Vec, + pub platform: String, + #[serde(default)] + pub device_memory: Option, + pub hardware_concurrency: u32, + #[serde(default = "default_product")] + pub product: String, + #[serde(default)] + pub product_sub: String, + #[serde(default)] + pub vendor: String, + #[serde(default)] + pub vendor_sub: String, + #[serde(default)] + pub max_touch_points: u32, + #[serde(default)] + pub extra_properties: Option, +} + +fn default_app_code_name() -> String { + "Mozilla".to_string() +} + +fn default_app_name() -> String { + "Netscape".to_string() +} + +fn default_product() -> String { + "Gecko".to_string() +} + +/// WebGL video card information. +#[derive(Debug, Clone, Serialize, Deserialize, Default)] +pub struct VideoCard { + pub vendor: String, + pub renderer: String, +} + +/// Battery status fingerprint. +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct BatteryFingerprint { + pub charging: bool, + pub charging_time: f64, + pub discharging_time: f64, + pub level: f64, +} + +/// HTTP headers for a fingerprint. +pub type Headers = HashMap; + +/// A fingerprint combined with matching HTTP headers. +#[derive(Debug, Clone)] +pub struct FingerprintWithHeaders { + pub fingerprint: Fingerprint, + pub headers: Headers, +} + +/// Options for generating fingerprints. +#[derive(Debug, Clone, Default)] +pub struct FingerprintOptions { + /// Target operating system: "windows", "macos", "linux" + pub operating_system: Option, + /// Target browser: "firefox", "chrome", "safari", "edge" + pub browsers: Option>, + /// Target device type: "desktop", "mobile" + pub devices: Option>, + /// Locales for Accept-Language header + pub locales: Option>, + /// HTTP version: "1" or "2" + pub http_version: Option, + /// Screen dimension constraints + pub screen: Option, + /// Whether to mock WebRTC + pub mock_web_rtc: bool, + /// Slim mode (fewer evasions) + pub slim: bool, +} + +/// Constraints for screen dimensions. +#[derive(Debug, Clone, Default)] +pub struct ScreenConstraints { + pub min_width: Option, + pub max_width: Option, + pub min_height: Option, + pub max_height: Option, +} + +impl ScreenConstraints { + pub fn new() -> Self { + Self::default() + } + + pub fn with_min_width(mut self, width: u32) -> Self { + self.min_width = Some(width); + self + } + + pub fn with_max_width(mut self, width: u32) -> Self { + self.max_width = Some(width); + self + } + + pub fn with_min_height(mut self, height: u32) -> Self { + self.min_height = Some(height); + self + } + + pub fn with_max_height(mut self, height: u32) -> Self { + self.max_height = Some(height); + self + } + + /// Check if a screen size matches these constraints. + pub fn matches(&self, width: u32, height: u32) -> bool { + if let Some(min_w) = self.min_width { + if width < min_w { + return false; + } + } + if let Some(max_w) = self.max_width { + if width > max_w { + return false; + } + } + if let Some(min_h) = self.min_height { + if height < min_h { + return false; + } + } + if let Some(max_h) = self.max_height { + if height > max_h { + return false; + } + } + true + } +} + +/// Constants used in fingerprint generation. +pub const MISSING_VALUE_DATASET_TOKEN: &str = "*MISSING_VALUE*"; +pub const STRINGIFIED_PREFIX: &str = "*STRINGIFIED*"; + +/// Special node names in the Bayesian networks. +pub const BROWSER_HTTP_NODE_NAME: &str = "*BROWSER_HTTP"; +pub const OPERATING_SYSTEM_NODE_NAME: &str = "*OPERATING_SYSTEM"; +pub const DEVICE_NODE_NAME: &str = "*DEVICE"; + +/// Supported browsers. +pub const SUPPORTED_BROWSERS: &[&str] = &["chrome", "firefox", "safari", "edge"]; + +/// Supported operating systems. +pub const SUPPORTED_OPERATING_SYSTEMS: &[&str] = &["windows", "macos", "linux", "android", "ios"]; + +/// Supported devices. +pub const SUPPORTED_DEVICES: &[&str] = &["desktop", "mobile"]; + +/// Supported HTTP versions. +pub const SUPPORTED_HTTP_VERSIONS: &[&str] = &["1", "2"]; diff --git a/src-tauri/src/camoufox/fonts.rs b/src-tauri/src/camoufox/fonts.rs new file mode 100644 index 0000000..2a4c2b5 --- /dev/null +++ b/src-tauri/src/camoufox/fonts.rs @@ -0,0 +1,83 @@ +//! OS-specific font lists for Camoufox. +//! +//! Provides default system fonts for Windows, macOS, and Linux. + +use std::collections::HashMap; + +use crate::camoufox::data; + +/// Get fonts for the target OS. +pub fn get_fonts_for_os(target_os: &str) -> Vec { + let fonts_map: HashMap> = + serde_json::from_str(data::FONTS_JSON).unwrap_or_default(); + + let os_key = match target_os { + "win" | "windows" => "win", + "mac" | "macos" => "mac", + "lin" | "linux" => "lin", + _ => "win", // Default to Windows fonts + }; + + fonts_map.get(os_key).cloned().unwrap_or_default() +} + +/// Get fonts for the target OS with additional custom fonts. +pub fn get_fonts_with_custom(target_os: &str, custom_fonts: Option<&[String]>) -> Vec { + let mut fonts = get_fonts_for_os(target_os); + + if let Some(custom) = custom_fonts { + // Add custom fonts, avoiding duplicates + for font in custom { + if !fonts.contains(font) { + fonts.push(font.clone()); + } + } + } + + fonts +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_get_fonts_for_windows() { + let fonts = get_fonts_for_os("win"); + assert!(!fonts.is_empty()); + assert!(fonts.contains(&"Arial".to_string())); + assert!(fonts.contains(&"Calibri".to_string())); + } + + #[test] + fn test_get_fonts_for_macos() { + let fonts = get_fonts_for_os("mac"); + assert!(!fonts.is_empty()); + assert!(fonts.contains(&"Helvetica".to_string())); + } + + #[test] + fn test_get_fonts_for_linux() { + let fonts = get_fonts_for_os("lin"); + assert!(!fonts.is_empty()); + } + + #[test] + fn test_get_fonts_with_custom() { + let custom = vec!["MyCustomFont".to_string()]; + let fonts = get_fonts_with_custom("win", Some(&custom)); + + assert!(fonts.contains(&"MyCustomFont".to_string())); + assert!(fonts.contains(&"Arial".to_string())); + } + + #[test] + fn test_fonts_no_duplicates() { + let custom = vec!["Arial".to_string()]; // Arial already exists in Windows fonts + let fonts = get_fonts_with_custom("win", Some(&custom)); + + // Count occurrences of Arial + let arial_count = fonts.iter().filter(|f| *f == "Arial").count(); + assert_eq!(arial_count, 1); + } +} diff --git a/src-tauri/src/camoufox/geolocation.rs b/src-tauri/src/camoufox/geolocation.rs new file mode 100644 index 0000000..ac56363 --- /dev/null +++ b/src-tauri/src/camoufox/geolocation.rs @@ -0,0 +1,541 @@ +//! Geolocation support for Camoufox fingerprinting. +//! +//! This module provides IP-based geolocation lookup using the MaxMind GeoLite2 database, +//! and locale generation based on country/territory information. + +use crate::camoufox::data; +use crate::geoip_downloader::GeoIPDownloader; +use directories::BaseDirs; +use maxminddb::{geoip2, Reader}; +use quick_xml::events::Event; +use quick_xml::Reader as XmlReader; +use rand::Rng; +use std::collections::HashMap; +use std::net::IpAddr; +use std::path::PathBuf; +use std::str::FromStr; + +/// Geolocation error type. +#[derive(Debug, thiserror::Error)] +pub enum GeolocationError { + #[error("GeoIP database not found. Please download it first.")] + DatabaseNotFound, + + #[error("Failed to open GeoIP database: {0}")] + DatabaseOpen(String), + + #[error("Invalid IP address: {0}")] + InvalidIP(String), + + #[error("IP location not found: {0}")] + LocationNotFound(String), + + #[error("Unknown territory: {0}")] + UnknownTerritory(String), + + #[error("No language data for territory: {0}")] + NoLanguageData(String), + + #[error("IO error: {0}")] + Io(#[from] std::io::Error), + + #[error("Network error: {0}")] + Network(String), +} + +/// Locale information. +#[derive(Debug, Clone)] +pub struct Locale { + pub language: String, + pub region: Option, + pub script: Option, +} + +impl Locale { + /// Format locale as a string (e.g., "en-US"). + pub fn as_string(&self) -> String { + if let Some(region) = &self.region { + format!("{}-{}", self.language, region) + } else { + self.language.clone() + } + } + + /// Convert to config format for Camoufox. + pub fn as_config(&self) -> HashMap { + let mut config = HashMap::new(); + + if let Some(region) = &self.region { + config.insert( + "locale:region".to_string(), + serde_json::json!(region.to_uppercase()), + ); + } + + config.insert( + "locale:language".to_string(), + serde_json::json!(self.language.clone()), + ); + + if let Some(script) = &self.script { + config.insert("locale:script".to_string(), serde_json::json!(script)); + } + + config + } +} + +/// Geolocation information. +#[derive(Debug, Clone)] +pub struct Geolocation { + pub locale: Locale, + pub longitude: f64, + pub latitude: f64, + pub timezone: String, + pub accuracy: Option, +} + +impl Geolocation { + /// Convert to config format for Camoufox. + pub fn as_config(&self) -> HashMap { + let mut config = self.locale.as_config(); + + config.insert( + "geolocation:longitude".to_string(), + serde_json::json!(self.longitude), + ); + config.insert( + "geolocation:latitude".to_string(), + serde_json::json!(self.latitude), + ); + config.insert("timezone".to_string(), serde_json::json!(self.timezone)); + + if let Some(accuracy) = self.accuracy { + config.insert( + "geolocation:accuracy".to_string(), + serde_json::json!(accuracy), + ); + } + + config + } +} + +/// Territory language population data. +struct LanguagePopulation { + language: String, + population_percent: f64, +} + +/// Statistical locale selector based on territory language populations. +pub struct LocaleSelector { + territories: HashMap>, +} + +impl LocaleSelector { + /// Create a new locale selector by parsing territory info XML. + pub fn new() -> Result { + let mut territories: HashMap> = HashMap::new(); + + let mut reader = XmlReader::from_str(data::TERRITORY_INFO_XML); + reader.config_mut().trim_text(true); + + let mut current_territory: Option = None; + let mut current_languages: Vec = Vec::new(); + + let mut buf = Vec::new(); + + loop { + match reader.read_event_into(&mut buf) { + Ok(Event::Start(ref e)) | Ok(Event::Empty(ref e)) => { + let name = e.name(); + let name_str = std::str::from_utf8(name.as_ref()).unwrap_or(""); + + if name_str == "territory" { + // Save previous territory if exists + if let Some(code) = current_territory.take() { + if !current_languages.is_empty() { + territories.insert(code, std::mem::take(&mut current_languages)); + } + } + + // Get territory type attribute + for attr in e.attributes().flatten() { + if attr.key.as_ref() == b"type" { + current_territory = Some(String::from_utf8_lossy(&attr.value).to_uppercase()); + } + } + } else if name_str == "languagePopulation" && current_territory.is_some() { + let mut lang_type = None; + let mut pop_percent = 0.0; + + for attr in e.attributes().flatten() { + match attr.key.as_ref() { + b"type" => { + lang_type = Some(String::from_utf8_lossy(&attr.value).to_string()); + } + b"populationPercent" => { + pop_percent = String::from_utf8_lossy(&attr.value).parse().unwrap_or(0.0); + } + _ => {} + } + } + + if let Some(lang) = lang_type { + current_languages.push(LanguagePopulation { + language: lang.replace('_', "-"), + population_percent: pop_percent, + }); + } + } + } + Ok(Event::End(ref e)) => { + let name_ref = e.name(); + let name = std::str::from_utf8(name_ref.as_ref()).unwrap_or(""); + if name == "territory" { + // Save territory + if let Some(code) = current_territory.take() { + if !current_languages.is_empty() { + territories.insert(code, std::mem::take(&mut current_languages)); + } + } + } + } + Ok(Event::Eof) => break, + Err(e) => { + log::warn!("Error parsing territory XML: {}", e); + break; + } + _ => {} + } + buf.clear(); + } + + Ok(Self { territories }) + } + + /// Get a locale for a given region/country code. + pub fn from_region(&self, region: &str) -> Result { + let region_upper = region.to_uppercase(); + + let languages = self + .territories + .get(®ion_upper) + .ok_or_else(|| GeolocationError::UnknownTerritory(region.to_string()))?; + + if languages.is_empty() { + return Err(GeolocationError::NoLanguageData(region.to_string())); + } + + // Weighted random selection based on population percentage + let total: f64 = languages.iter().map(|l| l.population_percent).sum(); + let mut rng = rand::rng(); + let target = rng.random::() * total; + let mut cumulative = 0.0; + + for lang in languages { + cumulative += lang.population_percent; + if cumulative >= target { + return Ok(normalize_locale(&format!( + "{}-{}", + lang.language, region_upper + ))); + } + } + + // Fallback to first language + let first_lang = &languages[0].language; + Ok(normalize_locale(&format!( + "{}-{}", + first_lang, region_upper + ))) + } +} + +impl Default for LocaleSelector { + fn default() -> Self { + Self::new().unwrap_or(Self { + territories: HashMap::new(), + }) + } +} + +/// Normalize a locale string to standard format. +fn normalize_locale(locale: &str) -> Locale { + let parts: Vec<&str> = locale.split('-').collect(); + + let language = parts + .first() + .map(|s| s.to_lowercase()) + .unwrap_or_else(|| "en".to_string()); + + let region = parts.get(1).map(|s| s.to_uppercase()); + + // Determine script based on language if needed + let script = match language.as_str() { + "zh" => { + // Chinese - Traditional for TW/HK, Simplified otherwise + if region.as_deref() == Some("TW") || region.as_deref() == Some("HK") { + Some("Hant".to_string()) + } else { + Some("Hans".to_string()) + } + } + "sr" => { + // Serbian - can be Cyrillic or Latin + Some("Cyrl".to_string()) + } + _ => None, + }; + + Locale { + language, + region, + script, + } +} + +/// Get the path to the GeoIP MMDB file. +fn get_mmdb_path() -> Result { + let base_dirs = BaseDirs::new().ok_or(GeolocationError::DatabaseNotFound)?; + + #[cfg(target_os = "windows")] + let cache_dir = base_dirs + .data_local_dir() + .join("camoufox") + .join("camoufox") + .join("Cache"); + + #[cfg(target_os = "macos")] + let cache_dir = base_dirs.cache_dir().join("camoufox"); + + #[cfg(target_os = "linux")] + let cache_dir = base_dirs.cache_dir().join("camoufox"); + + #[cfg(not(any(target_os = "windows", target_os = "macos", target_os = "linux")))] + let cache_dir = base_dirs.cache_dir().join("camoufox"); + + Ok(cache_dir.join("GeoLite2-City.mmdb")) +} + +/// Check if the GeoIP database is available. +pub fn is_geoip_available() -> bool { + GeoIPDownloader::is_geoip_database_available() +} + +/// Get geolocation information for an IP address. +pub fn get_geolocation(ip: &str) -> Result { + let mmdb_path = get_mmdb_path()?; + + if !mmdb_path.exists() { + return Err(GeolocationError::DatabaseNotFound); + } + + let reader = + Reader::open_readfile(&mmdb_path).map_err(|e| GeolocationError::DatabaseOpen(e.to_string()))?; + + let ip_addr: IpAddr = + IpAddr::from_str(ip).map_err(|_| GeolocationError::InvalidIP(ip.to_string()))?; + + let city: geoip2::City = reader + .lookup(ip_addr) + .map_err(|e| GeolocationError::LocationNotFound(e.to_string()))?; + + // Extract location data + let location = city + .location + .ok_or_else(|| GeolocationError::LocationNotFound(ip.to_string()))?; + + let longitude = location + .longitude + .ok_or_else(|| GeolocationError::LocationNotFound("No longitude".to_string()))?; + let latitude = location + .latitude + .ok_or_else(|| GeolocationError::LocationNotFound("No latitude".to_string()))?; + let timezone = location + .time_zone + .ok_or_else(|| GeolocationError::LocationNotFound("No timezone".to_string()))? + .to_string(); + + // Get country code + let country = city + .country + .ok_or_else(|| GeolocationError::LocationNotFound("No country".to_string()))?; + let iso_code = country + .iso_code + .ok_or_else(|| GeolocationError::LocationNotFound("No country code".to_string()))? + .to_uppercase(); + + // Get locale from territory data + let selector = LocaleSelector::new()?; + let locale = selector.from_region(&iso_code)?; + + Ok(Geolocation { + locale, + longitude, + latitude, + timezone, + accuracy: location.accuracy_radius.map(|r| r as f64), + }) +} + +/// Validate an IP address (IPv4 or IPv6). +pub fn validate_ip(ip: &str) -> bool { + IpAddr::from_str(ip).is_ok() +} + +/// Check if an IP is IPv4. +pub fn is_ipv4(ip: &str) -> bool { + if let Ok(addr) = IpAddr::from_str(ip) { + addr.is_ipv4() + } else { + false + } +} + +/// Check if an IP is IPv6. +pub fn is_ipv6(ip: &str) -> bool { + if let Ok(addr) = IpAddr::from_str(ip) { + addr.is_ipv6() + } else { + false + } +} + +/// Fetch public IP address, optionally through a proxy. +pub async fn fetch_public_ip(proxy: Option<&str>) -> Result { + let urls = [ + "https://api.ipify.org", + "https://checkip.amazonaws.com", + "https://ipinfo.io/ip", + "https://icanhazip.com", + "https://ifconfig.co/ip", + "https://ipecho.net/plain", + ]; + + let client_builder = reqwest::Client::builder().timeout(std::time::Duration::from_secs(5)); + + let client = if let Some(proxy_url) = proxy { + let proxy = reqwest::Proxy::all(proxy_url) + .map_err(|e| GeolocationError::Network(format!("Invalid proxy: {}", e)))?; + client_builder + .proxy(proxy) + .build() + .map_err(|e| GeolocationError::Network(e.to_string()))? + } else { + client_builder + .build() + .map_err(|e| GeolocationError::Network(e.to_string()))? + }; + + let mut last_error = None; + + for url in &urls { + match client.get(*url).send().await { + Ok(response) if response.status().is_success() => match response.text().await { + Ok(text) => { + let ip = text.trim().to_string(); + if validate_ip(&ip) { + return Ok(ip); + } + } + Err(e) => { + last_error = Some(format!("Failed to read response from {}: {}", url, e)); + } + }, + Ok(response) => { + last_error = Some(format!("HTTP {} from {}", response.status(), url)); + } + Err(e) => { + last_error = Some(format!("Request to {} failed: {}", url, e)); + } + } + } + + Err(GeolocationError::Network(last_error.unwrap_or_else(|| { + "Failed to fetch public IP from any endpoint".to_string() + }))) +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_locale_selector_creation() { + let selector = LocaleSelector::new(); + assert!(selector.is_ok()); + } + + #[test] + fn test_locale_from_region() { + let selector = LocaleSelector::new().unwrap(); + + // Test common regions + let us_locale = selector.from_region("US"); + assert!(us_locale.is_ok()); + let us = us_locale.unwrap(); + assert_eq!(us.region, Some("US".to_string())); + + let de_locale = selector.from_region("DE"); + assert!(de_locale.is_ok()); + let de = de_locale.unwrap(); + assert_eq!(de.region, Some("DE".to_string())); + } + + #[test] + fn test_locale_as_string() { + let locale = Locale { + language: "en".to_string(), + region: Some("US".to_string()), + script: None, + }; + assert_eq!(locale.as_string(), "en-US"); + + let locale_no_region = Locale { + language: "en".to_string(), + region: None, + script: None, + }; + assert_eq!(locale_no_region.as_string(), "en"); + } + + #[test] + fn test_validate_ip() { + assert!(validate_ip("8.8.8.8")); + assert!(validate_ip("192.168.1.1")); + assert!(validate_ip("2001:4860:4860::8888")); + assert!(!validate_ip("invalid")); + assert!(!validate_ip("256.256.256.256")); + } + + #[test] + fn test_is_ipv4() { + assert!(is_ipv4("8.8.8.8")); + assert!(!is_ipv4("2001:4860:4860::8888")); + assert!(!is_ipv4("invalid")); + } + + #[test] + fn test_is_ipv6() { + assert!(is_ipv6("2001:4860:4860::8888")); + assert!(!is_ipv6("8.8.8.8")); + assert!(!is_ipv6("invalid")); + } + + #[test] + fn test_normalize_locale() { + let locale = normalize_locale("en-US"); + assert_eq!(locale.language, "en"); + assert_eq!(locale.region, Some("US".to_string())); + assert!(locale.script.is_none()); + + let zh_tw = normalize_locale("zh-TW"); + assert_eq!(zh_tw.language, "zh"); + assert_eq!(zh_tw.region, Some("TW".to_string())); + assert_eq!(zh_tw.script, Some("Hant".to_string())); + + let zh_cn = normalize_locale("zh-CN"); + assert_eq!(zh_cn.script, Some("Hans".to_string())); + } +} diff --git a/src-tauri/src/camoufox/launcher.rs b/src-tauri/src/camoufox/launcher.rs new file mode 100644 index 0000000..99c13be --- /dev/null +++ b/src-tauri/src/camoufox/launcher.rs @@ -0,0 +1,338 @@ +//! Camoufox browser launcher using playwright-rust. +//! +//! Provides functionality to launch Camoufox browser instances with fingerprint injection. + +use std::collections::HashMap; +use std::path::{Path, PathBuf}; +use std::sync::Arc; + +use playwright::api::{Browser, BrowserContext, Playwright, ProxySettings}; +use playwright::Error as PlaywrightError; + +use crate::camoufox::config::{CamoufoxConfigBuilder, CamoufoxLaunchConfig, ProxyConfig}; +use crate::camoufox::fingerprint::types::{Fingerprint, ScreenConstraints}; + +/// Camoufox launcher for creating browser instances. +pub struct CamoufoxLauncher { + playwright: Arc, + executable_path: PathBuf, +} + +/// Error type for launcher operations. +#[derive(Debug, thiserror::Error)] +pub enum LauncherError { + #[error("Playwright error: {0}")] + Playwright(PlaywrightError), + + #[error("Playwright Arc error: {0}")] + PlaywrightArc(#[from] Arc), + + #[error("Configuration error: {0}")] + Config(#[from] crate::camoufox::config::ConfigError), + + #[error("IO error: {0}")] + Io(#[from] std::io::Error), + + #[error("Camoufox executable not found at: {0}")] + ExecutableNotFound(PathBuf), + + #[error("Failed to generate environment variables: {0}")] + EnvVars(#[from] serde_json::Error), +} + +/// Options for launching Camoufox. +#[derive(Debug, Clone, Default)] +pub struct LaunchOptions { + /// Operating system to spoof: "windows", "macos", "linux" + pub os: Option, + /// Block all images + pub block_images: bool, + /// Block WebRTC entirely + pub block_webrtc: bool, + /// Block WebGL (not recommended unless necessary) + pub block_webgl: bool, + /// Screen dimension constraints + pub screen: Option, + /// Fixed window size [width, height] + pub window: Option<(u32, u32)>, + /// Custom fingerprint (if not provided, one will be generated) + pub fingerprint: Option, + /// Run in headless mode + pub headless: bool, + /// Custom fonts to load + pub fonts: Option>, + /// Only use custom fonts (disable OS fonts) + pub custom_fonts_only: bool, + /// Firefox user preferences + pub firefox_user_prefs: Option>, + /// Proxy configuration + pub proxy: Option, + /// Additional browser arguments + pub args: Option>, + /// Additional environment variables + pub env: Option>, + /// Profile/user data directory + pub user_data_dir: Option, + /// Enable debug output + pub debug: bool, +} + +impl CamoufoxLauncher { + /// Create a new Camoufox launcher. + pub async fn new(executable_path: impl AsRef) -> Result { + let executable_path = executable_path.as_ref().to_path_buf(); + + if !executable_path.exists() { + return Err(LauncherError::ExecutableNotFound(executable_path)); + } + + let playwright = Playwright::initialize() + .await + .map_err(LauncherError::Playwright)?; + + Ok(Self { + playwright: Arc::new(playwright), + executable_path, + }) + } + + /// Launch a new Camoufox browser instance. + pub async fn launch(&self, options: LaunchOptions) -> Result { + let config = self.build_config(&options)?; + + if options.debug { + log::debug!("Camoufox config: {:?}", config.fingerprint_config); + } + + // Get environment variables + let env_vars = config.get_env_vars()?; + + // Build launch arguments + let mut args = options.args.clone().unwrap_or_default(); + + // Add headless flag if needed + if options.headless { + args.push("--headless".to_string()); + } + + // Merge environment variables + let mut env = options.env.clone().unwrap_or_default(); + for (key, value) in env_vars { + env.insert(key, value); + } + + // Handle fontconfig on Linux + if cfg!(target_os = "linux") { + if let Some(fontconfig_path) = + crate::camoufox::env_vars::get_fontconfig_env(&config.target_os, &self.executable_path) + { + env.insert("FONTCONFIG_PATH".to_string(), fontconfig_path); + } + } + + // Build Firefox user prefs + let mut firefox_prefs = config.firefox_prefs.clone(); + if let Some(user_prefs) = options.firefox_user_prefs { + for (key, value) in user_prefs { + firefox_prefs.insert(key, value); + } + } + + // Get the Firefox browser type + let firefox = self.playwright.firefox(); + + // Build launch options + let mut launch_options = firefox.launcher(); + launch_options = launch_options.executable(&self.executable_path); + launch_options = launch_options.headless(options.headless); + + // Add args + if !args.is_empty() { + launch_options = launch_options.args(&args); + } + + // Add environment as serde_json::Map + if !env.is_empty() { + let env_map: serde_json::Map = env + .into_iter() + .map(|(k, v)| (k, serde_json::Value::String(v))) + .collect(); + launch_options = launch_options.env(env_map); + } + + // Add proxy if configured + if let Some(proxy) = &config.proxy { + let proxy_settings = ProxySettings { + server: proxy.server.clone(), + username: proxy.username.clone(), + password: proxy.password.clone(), + bypass: proxy.bypass.clone(), + }; + launch_options = launch_options.proxy(proxy_settings); + } + + // Add Firefox preferences + if !firefox_prefs.is_empty() { + let prefs_map: serde_json::Map = + firefox_prefs.into_iter().collect(); + launch_options = launch_options.firefox_user_prefs(prefs_map); + } + + // Launch the browser + let browser = launch_options.launch().await?; + + Ok(browser) + } + + /// Launch a persistent browser context. + pub async fn launch_persistent_context( + &self, + user_data_dir: impl AsRef, + options: LaunchOptions, + ) -> Result { + let config = self.build_config(&options)?; + + if options.debug { + log::debug!("Camoufox config: {:?}", config.fingerprint_config); + } + + // Get environment variables + let env_vars = config.get_env_vars()?; + + // Build launch arguments + let mut args = options.args.clone().unwrap_or_default(); + + if options.headless { + args.push("--headless".to_string()); + } + + // Merge environment variables + let mut env = options.env.clone().unwrap_or_default(); + for (key, value) in env_vars { + env.insert(key, value); + } + + // Handle fontconfig on Linux + if cfg!(target_os = "linux") { + if let Some(fontconfig_path) = + crate::camoufox::env_vars::get_fontconfig_env(&config.target_os, &self.executable_path) + { + env.insert("FONTCONFIG_PATH".to_string(), fontconfig_path); + } + } + + // Build Firefox user prefs + let mut firefox_prefs = config.firefox_prefs.clone(); + if let Some(user_prefs) = options.firefox_user_prefs { + for (key, value) in user_prefs { + firefox_prefs.insert(key, value); + } + } + + // Get the Firefox browser type + let firefox = self.playwright.firefox(); + + // Build persistent context options + let mut context_options = firefox.persistent_context_launcher(user_data_dir.as_ref()); + context_options = context_options.executable(&self.executable_path); + context_options = context_options.headless(options.headless); + + // Add args + if !args.is_empty() { + context_options = context_options.args(&args); + } + + // Add environment as serde_json::Map + if !env.is_empty() { + let env_map: serde_json::Map = env + .into_iter() + .map(|(k, v)| (k, serde_json::Value::String(v))) + .collect(); + context_options = context_options.env(env_map); + } + + // Add proxy if configured + if let Some(proxy) = &config.proxy { + let proxy_settings = ProxySettings { + server: proxy.server.clone(), + username: proxy.username.clone(), + password: proxy.password.clone(), + bypass: proxy.bypass.clone(), + }; + context_options = context_options.proxy(proxy_settings); + } + + // Note: PersistentContextLauncher doesn't support firefox_user_prefs + // Firefox preferences should be set via about:config or prefs.js in the profile + + // Launch the persistent context + let context = context_options.launch().await?; + + Ok(context) + } + + /// Build Camoufox configuration from launch options. + fn build_config(&self, options: &LaunchOptions) -> Result { + let mut builder = CamoufoxConfigBuilder::new(); + + if let Some(os) = &options.os { + builder = builder.operating_system(os); + } + + if let Some(screen) = &options.screen { + builder = builder.screen_constraints(screen.clone()); + } + + if let Some(fingerprint) = &options.fingerprint { + builder = builder.fingerprint(fingerprint.clone()); + } + + builder = builder.block_images(options.block_images); + builder = builder.block_webrtc(options.block_webrtc); + builder = builder.block_webgl(options.block_webgl); + builder = builder.headless(options.headless); + + if let Some(fonts) = &options.fonts { + builder = builder.custom_fonts(fonts.clone()); + } + + builder = builder.custom_fonts_only(options.custom_fonts_only); + + if let Some(proxy) = &options.proxy { + builder = builder.proxy(proxy.clone()); + } + + // Get Firefox version from executable + if let Some(version) = crate::camoufox::config::get_firefox_version(&self.executable_path) { + builder = builder.ff_version(version); + } + + Ok(builder.build()?) + } + + /// Get the executable path. + pub fn executable_path(&self) -> &Path { + &self.executable_path + } +} + +/// Convenience function to launch Camoufox with default settings. +pub async fn launch_camoufox( + executable_path: impl AsRef, + options: LaunchOptions, +) -> Result { + let launcher = CamoufoxLauncher::new(executable_path).await?; + launcher.launch(options).await +} + +/// Convenience function to launch a persistent Camoufox context. +pub async fn launch_persistent_camoufox( + executable_path: impl AsRef, + user_data_dir: impl AsRef, + options: LaunchOptions, +) -> Result { + let launcher = CamoufoxLauncher::new(executable_path).await?; + launcher + .launch_persistent_context(user_data_dir, options) + .await +} diff --git a/src-tauri/src/camoufox/mod.rs b/src-tauri/src/camoufox/mod.rs new file mode 100644 index 0000000..43f0c38 --- /dev/null +++ b/src-tauri/src/camoufox/mod.rs @@ -0,0 +1,154 @@ +//! Camoufox browser integration module. +//! +//! Provides native Rust support for launching Camoufox browsers with realistic +//! fingerprint injection using playwright-rust. +//! +//! # Overview +//! +//! This module replaces the previous Node.js-based nodecar implementation with +//! a pure Rust solution. Key components: +//! +//! - **Fingerprint Generation**: Bayesian network-based fingerprint generation +//! - **WebGL Sampling**: Realistic WebGL configurations from a SQLite database +//! - **Configuration Builder**: Converts fingerprints to Camoufox config format +//! - **Launcher**: playwright-rust integration for browser launching +//! +//! # Example +//! +//! ```rust,ignore +//! use donutbrowser_lib::camoufox::{CamoufoxLauncher, LaunchOptions}; +//! +//! async fn launch_browser() -> Result<(), Box> { +//! let launcher = CamoufoxLauncher::new("/path/to/camoufox").await?; +//! +//! let options = LaunchOptions { +//! os: Some("windows".to_string()), +//! headless: false, +//! ..Default::default() +//! }; +//! +//! let browser = launcher.launch(options).await?; +//! +//! // Use the browser... +//! +//! browser.close().await?; +//! Ok(()) +//! } +//! ``` + +pub mod config; +pub mod data; +pub mod env_vars; +pub mod fingerprint; +pub mod fonts; +pub mod geolocation; +pub mod launcher; +pub mod webgl; + +// Re-export main types for convenience +pub use config::{ + CamoufoxConfigBuilder, CamoufoxLaunchConfig, ConfigError, GeoIPOption, ProxyConfig, +}; +pub use fingerprint::types::{ + Fingerprint, FingerprintOptions, FingerprintWithHeaders, NavigatorFingerprint, ScreenConstraints, + ScreenFingerprint, VideoCard, +}; +pub use fingerprint::{FingerprintError, FingerprintGenerator}; +pub use geolocation::{ + fetch_public_ip, get_geolocation, is_geoip_available, is_ipv4, is_ipv6, validate_ip, Geolocation, + GeolocationError, Locale, LocaleSelector, +}; +pub use launcher::{ + launch_camoufox, launch_persistent_camoufox, CamoufoxLauncher, LaunchOptions, LauncherError, +}; +pub use webgl::{sample_webgl, WebGLData, WebGLError}; + +/// Unified error type for all Camoufox operations. +#[derive(Debug, thiserror::Error)] +pub enum CamoufoxError { + #[error("Launcher error: {0}")] + Launcher(#[from] LauncherError), + + #[error("Configuration error: {0}")] + Config(#[from] ConfigError), + + #[error("Fingerprint error: {0}")] + Fingerprint(#[from] FingerprintError), + + #[error("WebGL error: {0}")] + WebGL(#[from] WebGLError), + + #[error("Geolocation error: {0}")] + Geolocation(#[from] GeolocationError), + + #[error("IO error: {0}")] + Io(#[from] std::io::Error), +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_fingerprint_generation() { + let generator = FingerprintGenerator::new().unwrap(); + let options = FingerprintOptions { + browsers: Some(vec!["firefox".to_string()]), + operating_system: Some("windows".to_string()), + ..Default::default() + }; + + let result = generator.get_fingerprint(&options); + assert!(result.is_ok()); + + let fp = result.unwrap(); + assert!(!fp.fingerprint.navigator.user_agent.is_empty()); + assert!(fp.fingerprint.screen.width > 0); + } + + #[test] + fn test_config_builder() { + let config = CamoufoxConfigBuilder::new() + .operating_system("windows") + .block_images(false) + .build(); + + assert!(config.is_ok()); + + let config = config.unwrap(); + assert!(!config.fingerprint_config.is_empty()); + assert!(config + .fingerprint_config + .contains_key("navigator.userAgent")); + } + + #[test] + fn test_webgl_sampling() { + let result = webgl::sample_webgl("win", None, None); + assert!(result.is_ok()); + + let webgl_data = result.unwrap(); + assert!(!webgl_data.vendor.is_empty()); + assert!(!webgl_data.renderer.is_empty()); + } + + #[test] + fn test_fonts() { + let fonts = fonts::get_fonts_for_os("win"); + assert!(!fonts.is_empty()); + assert!(fonts.contains(&"Arial".to_string())); + } + + #[test] + fn test_env_vars() { + let mut config = std::collections::HashMap::new(); + config.insert( + "navigator.userAgent".to_string(), + serde_json::json!("Mozilla/5.0"), + ); + + let env_vars = env_vars::config_to_env_vars(&config).unwrap(); + assert!(!env_vars.is_empty()); + assert!(env_vars.contains_key("CAMOU_CONFIG_1")); + } +} diff --git a/src-tauri/src/camoufox/webgl.rs b/src-tauri/src/camoufox/webgl.rs new file mode 100644 index 0000000..04b3a8a --- /dev/null +++ b/src-tauri/src/camoufox/webgl.rs @@ -0,0 +1,251 @@ +//! WebGL fingerprint sampling from SQLite database. +//! +//! Samples realistic WebGL configurations based on OS-specific probability distributions. + +use rand::Rng; +use rusqlite::{Connection, Result as SqliteResult}; +use std::collections::HashMap; +use std::io::Write; +use tempfile::NamedTempFile; + +use crate::camoufox::data; + +/// WebGL fingerprint data. +#[derive(Debug, Clone)] +pub struct WebGLData { + pub vendor: String, + pub renderer: String, + pub config: HashMap, +} + +/// Error type for WebGL operations. +#[derive(Debug, thiserror::Error)] +pub enum WebGLError { + #[error("SQLite error: {0}")] + Sqlite(#[from] rusqlite::Error), + + #[error("JSON parsing error: {0}")] + Json(#[from] serde_json::Error), + + #[error("IO error: {0}")] + Io(#[from] std::io::Error), + + #[error("No WebGL data found for OS: {0}")] + NoDataForOS(String), + + #[error("Invalid vendor/renderer combination for OS {os}: {vendor}/{renderer}")] + InvalidCombination { + os: String, + vendor: String, + renderer: String, + }, +} + +/// Sample a WebGL configuration for the given OS. +/// +/// If `vendor` and `renderer` are provided, returns the specific configuration. +/// Otherwise, randomly samples based on OS-specific probability weights. +pub fn sample_webgl( + os: &str, + vendor: Option<&str>, + renderer: Option<&str>, +) -> Result { + // Write embedded database to a temporary file + let mut temp_file = NamedTempFile::new()?; + temp_file.write_all(data::WEBGL_DATA_DB)?; + let db_path = temp_file.path(); + + let conn = Connection::open(db_path)?; + + // Validate OS + let os_column = match os { + "win" | "windows" => "win", + "mac" | "macos" => "mac", + "lin" | "linux" => "lin", + _ => return Err(WebGLError::NoDataForOS(os.to_string())), + }; + + if let (Some(v), Some(r)) = (vendor, renderer) { + sample_specific(&conn, os_column, v, r) + } else { + sample_random(&conn, os_column) + } +} + +fn sample_specific( + conn: &Connection, + os_column: &str, + vendor: &str, + renderer: &str, +) -> Result { + let query = format!( + "SELECT vendor, renderer, data, {} FROM webgl_fingerprints WHERE vendor = ?1 AND renderer = ?2", + os_column + ); + + let mut stmt = conn.prepare(&query)?; + let mut rows = stmt.query([vendor, renderer])?; + + if let Some(row) = rows.next()? { + let weight: f64 = row.get(3)?; + if weight <= 0.0 { + return Err(WebGLError::InvalidCombination { + os: os_column.to_string(), + vendor: vendor.to_string(), + renderer: renderer.to_string(), + }); + } + + let data_json: String = row.get(2)?; + let config: HashMap = serde_json::from_str(&data_json)?; + + Ok(WebGLData { + vendor: vendor.to_string(), + renderer: renderer.to_string(), + config, + }) + } else { + Err(WebGLError::InvalidCombination { + os: os_column.to_string(), + vendor: vendor.to_string(), + renderer: renderer.to_string(), + }) + } +} + +fn sample_random(conn: &Connection, os_column: &str) -> Result { + let query = format!( + "SELECT vendor, renderer, data, {} FROM webgl_fingerprints WHERE {} > 0", + os_column, os_column + ); + + let mut stmt = conn.prepare(&query)?; + let rows: Vec<(String, String, String, f64)> = stmt + .query_map([], |row| { + Ok(( + row.get::<_, String>(0)?, + row.get::<_, String>(1)?, + row.get::<_, String>(2)?, + row.get::<_, f64>(3)?, + )) + })? + .collect::>>()?; + + if rows.is_empty() { + return Err(WebGLError::NoDataForOS(os_column.to_string())); + } + + // Calculate total weight + let total_weight: f64 = rows.iter().map(|(_, _, _, w)| w).sum(); + + // Weighted random selection + let mut rng = rand::rng(); + let threshold = rng.random::() * total_weight; + let mut cumulative = 0.0; + + for (vendor, renderer, data_json, weight) in &rows { + cumulative += *weight; + if cumulative >= threshold { + let config: HashMap = serde_json::from_str(data_json)?; + return Ok(WebGLData { + vendor: vendor.clone(), + renderer: renderer.clone(), + config, + }); + } + } + + // Fallback to last row + let (vendor, renderer, data_json, _) = rows.last().unwrap(); + let config: HashMap = serde_json::from_str(data_json)?; + Ok(WebGLData { + vendor: vendor.clone(), + renderer: renderer.clone(), + config, + }) +} + +/// Get all possible vendor/renderer pairs for each OS. +pub fn get_possible_pairs() -> Result>, WebGLError> { + // Write embedded database to a temporary file + let mut temp_file = NamedTempFile::new()?; + temp_file.write_all(data::WEBGL_DATA_DB)?; + let db_path = temp_file.path(); + + let conn = Connection::open(db_path)?; + let mut result = HashMap::new(); + + for os in &["win", "mac", "lin"] { + let query = format!( + "SELECT DISTINCT vendor, renderer FROM webgl_fingerprints WHERE {} > 0 ORDER BY {} DESC", + os, os + ); + + let mut stmt = conn.prepare(&query)?; + let pairs: Vec<(String, String)> = stmt + .query_map([], |row| { + Ok((row.get::<_, String>(0)?, row.get::<_, String>(1)?)) + })? + .collect::>>()?; + + result.insert(os.to_string(), pairs); + } + + Ok(result) +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_sample_webgl_windows() { + let result = sample_webgl("win", None, None); + assert!( + result.is_ok(), + "Failed to sample WebGL for Windows: {:?}", + result.err() + ); + + let data = result.unwrap(); + assert!(!data.vendor.is_empty()); + assert!(!data.renderer.is_empty()); + assert!(!data.config.is_empty()); + } + + #[test] + fn test_sample_webgl_macos() { + let result = sample_webgl("mac", None, None); + assert!( + result.is_ok(), + "Failed to sample WebGL for macOS: {:?}", + result.err() + ); + } + + #[test] + fn test_sample_webgl_linux() { + let result = sample_webgl("lin", None, None); + assert!( + result.is_ok(), + "Failed to sample WebGL for Linux: {:?}", + result.err() + ); + } + + #[test] + fn test_get_possible_pairs() { + let result = get_possible_pairs(); + assert!( + result.is_ok(), + "Failed to get possible pairs: {:?}", + result.err() + ); + + let pairs = result.unwrap(); + assert!(pairs.contains_key("win")); + assert!(pairs.contains_key("mac")); + assert!(pairs.contains_key("lin")); + assert!(!pairs.get("win").unwrap().is_empty()); + } +} diff --git a/src-tauri/src/camoufox_manager.rs b/src-tauri/src/camoufox_manager.rs index 1da4296..e05910e 100644 --- a/src-tauri/src/camoufox_manager.rs +++ b/src-tauri/src/camoufox_manager.rs @@ -1,12 +1,14 @@ use crate::browser_runner::BrowserRunner; +use crate::camoufox::{CamoufoxConfigBuilder, GeoIPOption, ScreenConstraints}; use crate::profile::BrowserProfile; use directories::BaseDirs; use serde::{Deserialize, Serialize}; use std::collections::HashMap; use std::path::PathBuf; +use std::process::Stdio; use std::sync::Arc; use tauri::AppHandle; -use tauri_plugin_shell::ShellExt; +use tokio::process::Command as TokioCommand; use tokio::sync::Mutex as AsyncMutex; #[derive(Debug, Clone, Serialize, Deserialize)] @@ -86,7 +88,7 @@ impl CamoufoxManager { } pub fn instance() -> &'static CamoufoxManager { - &CAMOUFOX_NODECAR_LAUNCHER + &CAMOUFOX_LAUNCHER } pub fn get_profiles_dir(&self) -> PathBuf { @@ -103,112 +105,91 @@ impl CamoufoxManager { /// Generate Camoufox fingerprint configuration during profile creation pub async fn generate_fingerprint_config( &self, - app_handle: &AppHandle, + _app_handle: &AppHandle, profile: &crate::profile::BrowserProfile, config: &CamoufoxConfig, ) -> Result> { - let mut config_args = vec!["camoufox".to_string(), "generate-config".to_string()]; - - // Always ensure executable_path is set to the user's binary location + // Get executable path let executable_path = if let Some(path) = &config.executable_path { - path.clone() + PathBuf::from(path) } else { - // Use the browser runner helper with the real profile - // Use self.browser_runner instead of instance() BrowserRunner::instance() .get_browser_executable_path(profile) .map_err(|e| format!("Failed to get Camoufox executable path: {e}"))? - .to_string_lossy() - .to_string() }; - config_args.extend(["--executable-path".to_string(), executable_path]); - // Pass existing fingerprint if provided (for advanced form partial fingerprints) - if let Some(fingerprint) = &config.fingerprint { - config_args.extend(["--fingerprint".to_string(), fingerprint.clone()]); - } + // Build the config using CamoufoxConfigBuilder + let mut builder = CamoufoxConfigBuilder::new() + .block_images(config.block_images.unwrap_or(false)) + .block_webrtc(config.block_webrtc.unwrap_or(false)) + .block_webgl(config.block_webgl.unwrap_or(false)); - if let Some(serde_json::Value::Bool(true)) = &config.geoip { - config_args.push("--geoip".to_string()); - } - - // Add proxy if provided (can be passed directly during fingerprint generation) - if let Some(proxy) = &config.proxy { - config_args.extend(["--proxy".to_string(), proxy.clone()]); - } - - // Add screen dimensions if provided - if let Some(max_width) = config.screen_max_width { - config_args.extend(["--max-width".to_string(), max_width.to_string()]); - } - - if let Some(max_height) = config.screen_max_height { - config_args.extend(["--max-height".to_string(), max_height.to_string()]); - } - - if let Some(min_width) = config.screen_min_width { - config_args.extend(["--min-width".to_string(), min_width.to_string()]); - } - - if let Some(min_height) = config.screen_min_height { - config_args.extend(["--min-height".to_string(), min_height.to_string()]); - } - - // Add block_* options - if let Some(block_images) = config.block_images { - if block_images { - config_args.push("--block-images".to_string()); - } - } - - if let Some(block_webrtc) = config.block_webrtc { - if block_webrtc { - config_args.push("--block-webrtc".to_string()); - } - } - - if let Some(block_webgl) = config.block_webgl { - if block_webgl { - config_args.push("--block-webgl".to_string()); - } - } - - // Add OS option for fingerprint generation + // Set operating system if let Some(os) = &config.os { - config_args.extend(["--os".to_string(), os.clone()]); + builder = builder.operating_system(os); } - // Execute config generation command - let mut config_sidecar = self.get_nodecar_sidecar(app_handle)?; - for arg in &config_args { - config_sidecar = config_sidecar.arg(arg); + // Build screen constraints if provided + if config.screen_min_width.is_some() + || config.screen_max_width.is_some() + || config.screen_min_height.is_some() + || config.screen_max_height.is_some() + { + let screen_constraints = ScreenConstraints { + min_width: config.screen_min_width, + max_width: config.screen_max_width, + min_height: config.screen_min_height, + max_height: config.screen_max_height, + }; + builder = builder.screen_constraints(screen_constraints); } - let config_output = config_sidecar.output().await?; - if !config_output.status.success() { - let stderr = String::from_utf8_lossy(&config_output.stderr); - return Err(format!("Failed to generate camoufox fingerprint config: {stderr}").into()); + // Parse proxy if provided + if let Some(proxy_str) = &config.proxy { + let proxy_config = crate::camoufox::ProxyConfig::from_url(proxy_str) + .map_err(|e| format!("Failed to parse proxy URL: {e}"))?; + builder = builder.proxy(proxy_config); } - Ok(String::from_utf8_lossy(&config_output.stdout).to_string()) + // Set Firefox version from executable + if let Some(version) = crate::camoufox::config::get_firefox_version(&executable_path) { + builder = builder.ff_version(version); + } + + // Handle geoip option + if let Some(geoip_value) = &config.geoip { + match geoip_value { + serde_json::Value::Bool(true) => { + // Auto-detect IP (through proxy if set) + builder = builder.geoip(GeoIPOption::Auto); + } + serde_json::Value::String(ip) => { + // Use specific IP + builder = builder.geoip(GeoIPOption::IP(ip.clone())); + } + _ => { + // geoip: false or other values - don't apply geolocation + } + } + } + + // Build the config (async to handle geoip) + let launch_config = builder + .build_async() + .await + .map_err(|e| format!("Failed to build Camoufox config: {e}"))?; + + // Return the fingerprint config as JSON + let config_json = serde_json::to_string(&launch_config.fingerprint_config) + .map_err(|e| format!("Failed to serialize config: {e}"))?; + + Ok(config_json) } - /// Get the nodecar sidecar command - fn get_nodecar_sidecar( - &self, - app_handle: &AppHandle, - ) -> Result> { - let shell = app_handle.shell(); - let sidecar_command = shell - .sidecar("nodecar") - .map_err(|e| format!("Failed to create nodecar sidecar: {e}"))?; - Ok(sidecar_command) - } - - /// Launch Camoufox browser using nodecar sidecar + /// Launch Camoufox browser by directly spawning the process pub async fn launch_camoufox( &self, - app_handle: &AppHandle, + _app_handle: &AppHandle, profile: &crate::profile::BrowserProfile, profile_path: &str, config: &CamoufoxConfig, @@ -221,44 +202,39 @@ impl CamoufoxManager { return Err("No fingerprint provided".into()); }; - // Always ensure executable_path is set to the user's binary location + // Get executable path let executable_path = if let Some(path) = &config.executable_path { - path.clone() + PathBuf::from(path) } else { - // Use the browser runner helper with the real profile - // Use self.browser_runner instead of instance() BrowserRunner::instance() .get_browser_executable_path(profile) .map_err(|e| format!("Failed to get Camoufox executable path: {e}"))? - .to_string_lossy() - .to_string() }; - // Build nodecar command arguments - let mut args = vec!["camoufox".to_string(), "start".to_string()]; + // Parse the fingerprint config JSON + let fingerprint_config: HashMap = + serde_json::from_str(&custom_config) + .map_err(|e| format!("Failed to parse fingerprint config: {e}"))?; - // Add profile path - ensure it's an absolute path - let absolute_profile_path = std::path::Path::new(profile_path) - .canonicalize() - .unwrap_or_else(|_| std::path::Path::new(profile_path).to_path_buf()) - .to_string_lossy() - .to_string(); - args.extend(["--profile-path".to_string(), absolute_profile_path]); + // Convert to environment variables using CAMOU_CONFIG chunking + let env_vars = crate::camoufox::env_vars::config_to_env_vars(&fingerprint_config) + .map_err(|e| format!("Failed to convert config to env vars: {e}"))?; + + // Build command arguments + let mut args = vec![ + "-profile".to_string(), + std::path::Path::new(profile_path) + .canonicalize() + .unwrap_or_else(|_| std::path::Path::new(profile_path).to_path_buf()) + .to_string_lossy() + .to_string(), + "-no-remote".to_string(), + ]; // Add URL if provided if let Some(url) = url { - args.extend(["--url".to_string(), url.to_string()]); - } - - // Always add the executable path - args.extend(["--executable-path".to_string(), executable_path]); - - // Always add the generated custom config - args.extend(["--custom-config".to_string(), custom_config]); - - // Add proxy if provided - if let Some(proxy) = &config.proxy { - args.extend(["--proxy".to_string(), proxy.clone()]); + args.push("-new-tab".to_string()); + args.push(url.to_string()); } // Add headless flag for tests @@ -266,43 +242,62 @@ impl CamoufoxManager { args.push("--headless".to_string()); } - // Get the nodecar sidecar command - let mut sidecar_command = self.get_nodecar_sidecar(app_handle)?; + log::info!( + "Launching Camoufox: {:?} with args: {:?}", + executable_path, + args + ); - // Add all arguments to the sidecar command - for arg in &args { - sidecar_command = sidecar_command.arg(arg); + // Spawn the browser process + let mut command = TokioCommand::new(&executable_path); + command + .args(&args) + .stdin(Stdio::null()) + .stdout(Stdio::null()) + .stderr(Stdio::null()); + + // Add environment variables + for (key, value) in &env_vars { + command.env(key, value); } - // Execute nodecar sidecar command - log::info!("Executing nodecar command with args: {args:?}"); - let output = sidecar_command.output().await?; - - if !output.status.success() { - let stderr = String::from_utf8_lossy(&output.stderr); - let stdout = String::from_utf8_lossy(&output.stdout); - log::info!("nodecar camoufox failed - stdout: {stdout}, stderr: {stderr}"); - return Err(format!("nodecar camoufox failed: {stderr}").into()); + // Handle fontconfig on Linux + if cfg!(target_os = "linux") { + let target_os = config.os.as_deref().unwrap_or("linux"); + if let Some(fontconfig_path) = + crate::camoufox::env_vars::get_fontconfig_env(target_os, &executable_path) + { + command.env("FONTCONFIG_PATH", fontconfig_path); + } } - let stdout = String::from_utf8_lossy(&output.stdout); - log::info!("nodecar camoufox output: {stdout}"); + let child = command + .spawn() + .map_err(|e| format!("Failed to spawn Camoufox process: {e}"))?; - // Parse the JSON output - let launch_result: CamoufoxLaunchResult = serde_json::from_str(&stdout) - .map_err(|e| format!("Failed to parse nodecar output as JSON: {e}\nOutput was: {stdout}"))?; + let process_id = child.id(); + let instance_id = format!("camoufox_{}", process_id.unwrap_or(0)); + + log::info!("Camoufox launched with PID: {:?}", process_id); // Store the instance let instance = CamoufoxInstance { - id: launch_result.id.clone(), - process_id: launch_result.processId, - profile_path: launch_result.profilePath.clone(), - url: launch_result.url.clone(), + id: instance_id.clone(), + process_id, + profile_path: Some(profile_path.to_string()), + url: url.map(String::from), + }; + + let launch_result = CamoufoxLaunchResult { + id: instance_id.clone(), + processId: process_id, + profilePath: Some(profile_path.to_string()), + url: url.map(String::from), }; { let mut inner = self.inner.lock().await; - inner.instances.insert(launch_result.id.clone(), instance); + inner.instances.insert(instance_id, instance); } Ok(launch_result) @@ -311,41 +306,70 @@ impl CamoufoxManager { /// Stop a Camoufox process by ID pub async fn stop_camoufox( &self, - app_handle: &AppHandle, + _app_handle: &AppHandle, id: &str, ) -> Result> { - // Get the nodecar sidecar command - let sidecar_command = self - .get_nodecar_sidecar(app_handle)? - .arg("camoufox") - .arg("stop") - .arg("--id") - .arg(id); + // Get the process ID from our tracking + let process_id = { + let inner = self.inner.lock().await; + inner + .instances + .get(id) + .and_then(|instance| instance.process_id) + }; - // Execute nodecar stop command - let output = sidecar_command.output().await?; + if let Some(pid) = process_id { + // Kill the process + let success = self.kill_process(pid); - if !output.status.success() { - let _stderr = String::from_utf8_lossy(&output.stderr); - return Ok(false); - } + if success { + // Remove from our tracking + let mut inner = self.inner.lock().await; + inner.instances.remove(id); + log::info!("Stopped Camoufox instance {} (PID: {})", id, pid); + } - let stdout = String::from_utf8_lossy(&output.stdout); - let result: serde_json::Value = serde_json::from_str(&stdout) - .map_err(|e| format!("Failed to parse nodecar stop output: {e}"))?; - - let success = result - .get("success") - .and_then(|v| v.as_bool()) - .unwrap_or(false); - - if success { - // Remove from our tracking + Ok(success) + } else { + // No process ID found, just remove from tracking let mut inner = self.inner.lock().await; inner.instances.remove(id); + Ok(true) + } + } + + /// Kill a process by PID + fn kill_process(&self, pid: u32) -> bool { + #[cfg(unix)] + { + use std::os::unix::process::ExitStatusExt; + let result = std::process::Command::new("kill") + .args(["-TERM", &pid.to_string()]) + .status(); + + match result { + Ok(status) => status.success() || status.signal() == Some(0), + Err(e) => { + log::warn!("Failed to kill process {}: {}", pid, e); + false + } + } } - Ok(success) + #[cfg(windows)] + { + let result = std::process::Command::new("taskkill") + .args(["/PID", &pid.to_string(), "/T"]) + .status(); + + match result { + Ok(status) => status.success(), + Err(e) => { + log::warn!("Failed to kill process {}: {}", pid, e); + false + } + } + } } /// Find Camoufox server by profile path (for integration with browser_runner) @@ -544,7 +568,7 @@ impl CamoufoxManager { } impl CamoufoxManager { - pub async fn launch_camoufox_profile_nodecar( + pub async fn launch_camoufox_profile( &self, app_handle: AppHandle, profile: BrowserProfile, @@ -574,7 +598,7 @@ impl CamoufoxManager { url.as_deref(), ) .await - .map_err(|e| format!("Failed to launch Camoufox via nodecar: {e}")) + .map_err(|e| format!("Failed to launch Camoufox: {e}")) } } @@ -597,5 +621,5 @@ mod tests { // Global singleton instance lazy_static::lazy_static! { - static ref CAMOUFOX_NODECAR_LAUNCHER: CamoufoxManager = CamoufoxManager::new(); + static ref CAMOUFOX_LAUNCHER: CamoufoxManager = CamoufoxManager::new(); } diff --git a/src-tauri/src/downloader.rs b/src-tauri/src/downloader.rs index aafc559..1ccce3e 100644 --- a/src-tauri/src/downloader.rs +++ b/src-tauri/src/downloader.rs @@ -350,6 +350,50 @@ impl Downloader { } } + /// Ensure version.json exists in the Camoufox installation directory. + /// Creates the file if it doesn't exist, using the version from the tag name. + async fn ensure_camoufox_version_json( + &self, + browser_dir: &Path, + version: &str, + ) -> Result<(), Box> { + // The browser_dir is typically: binaries/camoufox// + // Find the executable directory within it + let version_json_locations = vec![ + browser_dir.join("version.json"), + browser_dir.join("camoufox").join("version.json"), + ]; + + // Check if version.json already exists in any expected location + for location in &version_json_locations { + if location.exists() { + log::info!("version.json already exists at: {}", location.display()); + return Ok(()); + } + } + + // Parse the Firefox version from the Camoufox version tag + // Format: "135.0.1-beta.24" -> Firefox version is "135.0.1" (or just "135.0") + let firefox_version = version.split('-').next().unwrap_or(version); + + // Create version.json in the browser directory + let version_json_path = browser_dir.join("version.json"); + let version_data = serde_json::json!({ + "version": firefox_version + }); + + let version_json_str = serde_json::to_string_pretty(&version_data)?; + tokio::fs::write(&version_json_path, version_json_str).await?; + + log::info!( + "Created version.json at {} with Firefox version: {}", + version_json_path.display(), + firefox_version + ); + + Ok(()) + } + pub async fn download_browser( &self, app_handle: &tauri::AppHandle, @@ -809,7 +853,7 @@ impl Downloader { } } - // If this is Camoufox, automatically download GeoIP database + // If this is Camoufox, automatically download GeoIP database and create version.json if browser_str == "camoufox" { // Check if GeoIP database is already available if !crate::geoip_downloader::GeoIPDownloader::is_geoip_database_available() { @@ -831,6 +875,15 @@ impl Downloader { } else { log::info!("GeoIP database already available"); } + + // Create version.json if it doesn't exist + if let Err(e) = self + .ensure_camoufox_version_json(&browser_dir, &version) + .await + { + log::warn!("Failed to create version.json for Camoufox: {e}"); + // Don't fail the download if version.json creation fails + } } // Emit completion diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index b96e1f2..f75f19e 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -15,6 +15,7 @@ mod auto_updater; mod browser; mod browser_runner; mod browser_version_manager; +pub mod camoufox; mod camoufox_manager; mod default_browser; mod downloaded_browsers_registry; @@ -143,35 +144,6 @@ impl WindowExt for WebviewWindow { } } -#[tauri::command] -async fn warm_up_nodecar(app: tauri::AppHandle) -> Result<(), String> { - use tauri_plugin_shell::ShellExt; - use tokio::time::{timeout, Duration}; - - let start_time = std::time::Instant::now(); - - // Use sidecar to execute a fast, harmless command that ensures the binary is loaded - let cmd = app - .shell() - .sidecar("nodecar") - .map_err(|e| format!("Failed to create nodecar sidecar: {e}"))? - .arg("help"); - - let exec_future = async { cmd.output().await }; - match timeout(Duration::from_secs(120), exec_future).await { - Ok(Ok(_output)) => { - let duration = start_time.elapsed(); - log::info!( - "Nodecar warm-up (frontend-triggered) completed in {:.2}s", - duration.as_secs_f64() - ); - Ok(()) - } - Ok(Err(e)) => Err(format!("Failed to execute nodecar for warm-up: {e}")), - Err(_) => Err("Nodecar warm-up timed out after 120s".to_string()), - } -} - #[tauri::command] async fn handle_url_open(app: tauri::AppHandle, url: String) -> Result<(), String> { log::info!("handle_url_open called with URL: {url}"); @@ -838,7 +810,6 @@ pub fn run() { delete_selected_profiles, is_geoip_database_available, download_geoip_database, - warm_up_nodecar, start_api_server, stop_api_server, get_api_server_status, diff --git a/src-tauri/src/profile/manager.rs b/src-tauri/src/profile/manager.rs index 074b3c8..623c916 100644 --- a/src-tauri/src/profile/manager.rs +++ b/src-tauri/src/profile/manager.rs @@ -820,11 +820,9 @@ impl ProfileManager { app_handle: tauri::AppHandle, profile: &BrowserProfile, ) -> Result> { - // Handle Camoufox profiles using nodecar-based status checking + // Handle Camoufox profiles using CamoufoxManager-based status checking if profile.browser == "camoufox" { - return self - .check_camoufox_status_via_nodecar(&app_handle, profile) - .await; + return self.check_camoufox_status(&app_handle, profile).await; } // For non-camoufox browsers, use the existing PID-based logic @@ -888,7 +886,7 @@ impl ProfileManager { "zen" => exe_name.contains("zen"), "chromium" => exe_name.contains("chromium"), "brave" => exe_name.contains("brave"), - // Camoufox is handled via nodecar, not PID-based checking + // Camoufox is handled via CamoufoxManager, not PID-based checking _ => false, }; @@ -981,8 +979,8 @@ impl ProfileManager { Ok(is_running) } - // Check Camoufox status using nodecar-based approach - async fn check_camoufox_status_via_nodecar( + // Check Camoufox status using CamoufoxManager + async fn check_camoufox_status( &self, app_handle: &tauri::AppHandle, profile: &BrowserProfile, @@ -1062,7 +1060,7 @@ impl ProfileManager { } Err(e) => { // Error checking status, assume not running and clear process ID - log::warn!("Warning: Failed to check Camoufox status via nodecar: {e}"); + log::warn!("Warning: Failed to check Camoufox status: {e}"); let profiles_dir = self.get_profiles_dir(); let profile_uuid_dir = profiles_dir.join(profile.id.to_string()); let metadata_file = profile_uuid_dir.join("metadata.json"); diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index d89c0ce..1a4e187 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -5,7 +5,7 @@ "identifier": "com.donutbrowser", "build": { "beforeDevCommand": "pnpm copy-proxy-binary && pnpm dev", - "devUrl": "http://localhost:3000", + "devUrl": "http://localhost:12341", "beforeBuildCommand": "pnpm copy-proxy-binary && (test -d ../dist || pnpm build)", "frontendDist": "../dist" }, @@ -19,7 +19,7 @@ "active": true, "targets": ["app", "dmg", "nsis", "deb", "rpm", "appimage"], "category": "Productivity", - "externalBin": ["binaries/nodecar", "binaries/donut-proxy"], + "externalBin": ["binaries/donut-proxy"], "icon": [ "icons/32x32.png", "icons/128x128.png", diff --git a/src-tauri/tests/sync_e2e.rs b/src-tauri/tests/sync_e2e.rs index d2b3c7a..7c3b16d 100644 --- a/src-tauri/tests/sync_e2e.rs +++ b/src-tauri/tests/sync_e2e.rs @@ -9,7 +9,7 @@ use tempfile::TempDir; const TEST_TOKEN: &str = "test-sync-token"; fn get_sync_server_url() -> String { - env::var("SYNC_SERVER_URL").unwrap_or_else(|_| "http://localhost:3000".to_string()) + env::var("SYNC_SERVER_URL").unwrap_or_else(|_| "http://localhost:12342".to_string()) } /// Check if sync server is available and fail with a clear error message if not. diff --git a/src/app/page.tsx b/src/app/page.tsx index ab6c3be..2ab034d 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -47,7 +47,6 @@ interface PendingUrl { export default function Home() { // Mount global version update listener/toasts useVersionUpdater(); - const [isInitializing, setIsInitializing] = useState(true); // Use the new profile events hook for centralized profile management const { @@ -257,27 +256,6 @@ export default function Home() { } }, [hasCheckedStartupPrompt]); - // Warm up nodecar at startup and block UI until complete - useEffect(() => { - let cancelled = false; - (async () => { - try { - await invoke("warm_up_nodecar"); - } catch (err) { - if (!cancelled) { - // Don't set error here since useProfileEvents handles profile errors - console.error("Initialization failed:", err); - } - } finally { - if (!cancelled) setIsInitializing(false); - } - })(); - - return () => { - cancelled = true; - }; - }, []); - // Handle profile errors from useProfileEvents hook useEffect(() => { if (profilesError) { @@ -795,18 +773,6 @@ export default function Home() { - {isInitializing && ( -