mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-07-31 20:32:20 +03:00
e9cc53b17fef3e87e4f89b2847f1468bb6864fa0
8 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
729252008b |
fix(authz): close 2nd Host-spoof path (cliTokenAuth) + IPv6 loopback + Docker stamp
Adversarial review of the peer-IP fix surfaced: (1) CRITICAL — cliTokenAuth.ts
still derived loopback from new URL(request.url).hostname (the same spoofable
Host class), letting a remote caller with a stolen CLI token reach management
APIs via Host: 127.0.0.1; now it trusts the middleware-stamped locality verdict
(AUTHZ_HEADER_PEER_LOCALITY, a client-stripped trusted header). (2) HIGH —
isLoopbackHost mangled bare IPv6 (::1, ::ffff:127.0.0.1) via split(":")[0],
a fail-closed DoS on IPv6 deploys. (3) HIGH — the Docker entrypoint ran bare
server.js (no peer stamp); run-standalone.mjs now prefers server-ws.mjs.
|
||
|
|
0a09fa5a11 |
fix(authz): trust real TCP peer IP stamp over spoofable Host header for LOCAL_ONLY gate
The middleware runtime exposes no socket, so a prior fix derived LOCAL_ONLY locality from the Host header — letting a remote caller send Host: 127.0.0.1 and reach spawn-capable routes (RCE class). The custom Node servers now stamp the real socket.remoteAddress into a token-signed internal header; the policy trusts only a stamp whose token matches this process's secret, and fails closed otherwise. Preserves the owner-authorized loopback + private-LAN access without trusting any client-controlled header. |
||
|
|
f5073604b3 |
Release/v3.8.0 (#2430)
* fix(cli-tools): guard modelId type before calling indexOf E2E shakedown v3.8.0: cli-tools quebrava com TypeError quando dynamicModels continha entradas sem .id (objeto retornado diretamente em vez de string). * fix(offline): avoid SSR/CSR hydration mismatch on navigator.onLine Replace useState+lazy-initializer with useSyncExternalStore so the server snapshot (() => false) and client snapshot (() => navigator.onLine) are declared separately. React hydrates with the server value and switches to the real online status client-side without a mismatch. * chore(i18n): add missing en.json keys for translator, cli-tools, memory, onboarding Adds 58 missing keys identified by the new dashboard audit script: - cliTools: 18 custom CLI builder keys (CustomCliCard) - translator: 24 keys covering stream transformer, live monitor, test bench - memory: 12 health/pagination/dialog keys - onboarding.tier: 8 keys for the tier tour walkthrough Also adds scripts/i18n/audit-dashboard-pages.mjs which scans all dashboard pages, reports t() calls referencing missing en.json keys, and flags candidate hardcoded JSX/attribute strings. * chore(i18n): replace hardcoded UI text with t() calls across dashboard (round 1) Subagents refactored 8 high-impact dashboard pages, replacing 81 of the 407 hardcoded English/PT strings flagged by the audit with proper useTranslations() lookups. Added 73 corresponding keys to en.json across the home, apiManager, providers, settings, and usage namespaces. Pages affected: - BudgetTab (27 → 0) - HomePageClient (2 → 0) - RoutingTab (25 → 7) - ResilienceTab (38 → 18) - SystemStorageTab (42 → 21) - providers/[id] (17 → 15) - ApiManagerPageClient (14 → 13) - OneproxyTab (13 → 10) Also adds two helper scripts: - scripts/i18n/extract-keys-from-diff.mjs — extracts new keys from git diff - scripts/i18n/merge-keys.mjs — merges a pending-keys JSON into en.json Remaining hardcoded strings will be addressed in follow-up rounds. * chore(i18n): replace hardcoded UI text with t() calls across dashboard (round 2) Continues round 1 (commit |
||
|
|
317d146302 |
Merge release/v3.8.0 into refactor/pages
Resolves conflicts in 9 files to bring 181 commits from release/v3.8.0 into the dashboard refactor branch ahead of merging back to release. Layout strategy: our pages overhaul (tabs→pages, restructured sidebar, removed redundant headers, OpenCode Free no-auth card) is the source of truth. Release's functional additions are adapted into our layout. Conflict resolution: - package.json/package-lock.json: take release's deps (axios bump, CLI v4 deps, tls-client-node/wreq-js move to optionalDependencies); re-add our @xyflow/react addition; regenerate lockfile. - src/shared/constants/sidebarVisibility.ts: keep our 9-section restructure — release's new IDs (limits, media, cli-tools, agents, cloud-agents, memory, skills, agent-skills, context-*) are all already present in our groups. - src/i18n/messages/en.json: auto-merge picked up all release's new keys (autoCatalog*, quotaCutoffs*, systemTransforms*, schema-coercion, vision); only naming conflict was OmniSkills/AgentSkills — kept ours (no space). - src/app/(dashboard)/dashboard/HomePageClient.tsx: kept our Provider Topology card; ported release's TierCoverageWidget (placed before topology). - src/app/(dashboard)/dashboard/settings/page.tsx: kept our redirect to /settings/general (we moved tabs to separate pages); release's sticky tab CSS change is moot in our structure. - src/app/(dashboard)/dashboard/skills/page.tsx: rerere applied — release hardcoded "OmniSkills" h1 was already removed by our header-cleanup refactor. - src/app/(dashboard)/dashboard/agent-skills/page.tsx: both branches created this file independently with identical data source; kept our Tailwind-themed 2-column grid (release's version used inline styles). - src/app/(dashboard)/dashboard/batch/page.tsx: kept our single-tab structure (FilesListTab moved to /batch/files page); ported release's onRefresh prop addition. - src/app/(dashboard)/dashboard/batch/files/page.tsx (not in conflict but updated): added batches fetch + batches prop to preserve release's feature of showing related batches in the file detail modal. Pre-existing typecheck errors in open-sse/services/contextManager.ts (lines 141, 154, 167) come from release/v3.8.0 and are not introduced by this merge. |
||
|
|
68ca8bf1e9 |
refactor(dashboard): remove page-body headers, add topology multi-ring, icon+title header
- ProviderTopology: replace single-ring ellipse with multi-ring concentric layout (6 rings) - Providers sorted active → error → last-used → rest; compact node design (text-xs, 16px icon) - Header: derive icon/title from SIDEBAR_SECTIONS auto-mapping, remove breadcrumbs logic - Add HEADER_DESCRIPTIONS map for all pages with known descriptions - Use sidebar i18n namespace for titles (covers all 42 locales) - DashboardLayout: remove <Breadcrumbs /> component - Add header descriptions for 9 new pages (costs, cache, limits, api-manager, batch, context-caveman/rtk/combos, changelog) across all 41 locale files - Remove duplicate page-body title+description from 16 pages: costs, analytics, cache, cache/media, context/caveman/rtk/combos, changelog, agents, cloud-agents, skills, audit, translator, webhooks, memory, health — preserving action buttons in each - Rename sidebar "Limits & Quotas" → "Quota Limits" (en.json) - run-next.mjs: pre-read DATA_DIR from .env before bootstrap (zero-config dev start) |
||
|
|
4a84ab9c1b |
feat(termux): Android/Termux headless support (#2273)
- Move wreq-js and tls-client-node to optionalDependencies - Lazy-load wreq-js WS proxy with graceful 503 when unavailable - Auto-detect Android platform for headless mode (no browser open) - Set GYP_DEFINES for better-sqlite3 build on Android/ARM - Extended build timeout to 600s for ARM compilation - Skip wreq-js binary fix on Android (unsupported platform) - Platform warnings for unsupported features (WS proxy, TLS, Electron, MITM) Co-authored-by: t-way666 <t-way666@users.noreply.github.com> |
||
|
|
c6b269a4d5 |
node dependency updates (#2259)
chore: node dependency updates (#2259 — thanks @backryun) |
||
|
|
f3b944a55a |
refactor(scripts): organize into build/dev/check/docs/i18n/ad-hoc subfolders
Reorganizes the 29 active scripts under scripts/ into purpose-driven subfolders: - scripts/build/ (11) — Build, install, publish, runtime env - scripts/dev/ (13) — Dev servers, test runners, healthchecks - scripts/check/ (10) — Lint/validation/coverage checks - scripts/docs/ (2) — Docs index and provider reference generation - scripts/i18n/ (+3) — Adds Python translation utilities (check/validate/autotranslate) - scripts/ad-hoc/ (4) — One-shot maintenance utilities Updates all references in package.json, electron/package.json, .husky/pre-commit, .github/workflows/ci.yml, Dockerfile, src/, tests/, scripts/ internal cross-imports, playwright.config.ts, and English docs (CODEBASE_DOCUMENTATION, ENVIRONMENT, FEATURES, RELEASE_CHECKLIST, COVERAGE_PLAN, ELECTRON_GUIDE, I18N, GEMINI). Also patches scripts/build/pack-artifact-policy.ts so the npm pack allowlist mirrors the new layout. Validates with: - npm run lint (exit 0 — pre-existing minified-bundle errors only) - npm run typecheck:core (exit 0) - npm run check:docs-all (exit 0) - unit tests for moved scripts (57 tests pass) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |