Commit Graph
3457 Commits
Author SHA1 Message Date
miloschwartz a6a3816b56 more ui adjustments 2026-10-15 15:42:43 -04:00
Owen 1d567245d3 Import the right cache 2026-10-15 14:38:08 -04:00
miloschwartz 1f1d3d7e0f fix merge 2026-10-15 12:01:31 -04:00
miloschwartz 89f6748a1b Merge branch 'dev' into feat/redirect-tables 2026-10-15 11:47:55 -04:00
Owen f0b8a594cf Fix deleting orgs 2026-10-15 11:47:33 -04:00
miloschwartz 7386fa5234 ui improvements 2026-10-15 11:25:07 -04:00
Owen c5c19871eb Prevent overlapping exit node address selections 2026-10-15 10:10:41 -04:00
Owen 3601ca17f1 Manage cert enabled with leader election 2026-10-14 15:30:58 -04:00
choksi2212 9242c2c196 fix(org): build the deleteOrg child test under the pg config
deleteOrg.childTest.ts read its leftover counts with db.get(sql...), a better-sqlite3 driver method. The pg config type-checks the same file with the pg driver's types, where .get() does not exist, so build-postgres failed on PR #3895's head (TS2339 at deleteOrg.childTest.ts:108) and main has carried the break since the merge landed 40 seconds before the job reported red. Read the counts through the query builder instead - the same .select({ count: count() }) shape deleteOrg.ts itself uses, which compiles under both configs - keeping the observations JSON the parent test parses unchanged.

Signed-off-by: Manas Choksi <12302040701105@mbit.edu.in>
Signed-off-by: choksi2212 <choksi2212@users.noreply.github.com>
2026-10-13 23:11:28 +05:30
Owen 2f65a8c124 Make offline checking intervals configurable
Fixes #3855
2026-10-13 09:35:09 -04:00
choksi2212 dc579acc44 fix(org): clean up every site when deleting an org
deleteOrgById fetched the org's sites with .limit(1), so the per-site
cleanup loop ran for at most one site: the WireGuard deletePeer call,
the Newt terminate collection, and cleanupSiteAssociations were all
skipped for every other site in the org.

Drop the limit so every site is loaded, and mirror deleteSite.ts in the
loop: run cleanupSiteAssociations for newt sites so clients of other
orgs do not keep stale associations for the deleted sites.

Covered by a standalone regression test that seeds two wireguard and
two newt sites plus a stale association-cache row, runs deleteOrgById
against a stubbed exit node, and asserts all four sites were cleaned.
On the previous code the test fails with exactly the reported symptom:
one peer removal instead of two.

Fixes #3863
2026-10-13 06:52:56 +05:30
Owen 6bf4595969 Remove error language from warning 2026-10-12 17:13:48 -04:00
Owen c6b1e5311e Push client identities to newt 2026-10-12 17:03:27 -04:00
Owen b43709903d Add support for configuring load balancing strategy 2026-10-12 16:47:12 -04:00
Owen cccc2d1200 Merge branch 'mtls' into dev 2026-10-12 16:25:25 -04:00
Owen 839b82041b Merge branch 'blueprints' into dev 2026-10-12 16:25:18 -04:00
Owen 148bcd9d1b Merge branch 'machine-roles' into dev 2026-10-12 16:25:13 -04:00
Owen e461b231d5 Add labels to the integration api 2026-10-12 16:21:12 -04:00
Owen 9afcd68d68 Reduce image size by pruning stuff and things
Ref https://github.com/orgs/fosrl/discussions/2069
2026-10-12 15:41:50 -04:00
Owen 3d590493d6 Fix relayPort missing from list 2026-10-12 15:33:52 -04:00
Owen f82b209e69 Adjust path processing 2026-10-12 15:10:48 -04:00
Owen 5e93678122 Merge branch 'main' into dev 2026-10-12 15:06:51 -04:00
Owen Schwartz 6bab69dccb Merge pull request #3601 from shleeable/patch-15
Fix: Update handleOlmServerInitAddPeerHandshake.ts with missing sendCancel
2026-10-12 14:54:08 -04:00
Owen Schwartz 1bda4c5f2e Merge pull request #3892 from Tyagiquamar/fix/3862-pathmatch-redos
fix(server): avoid exponential backtracking in isPathAllowed
2026-10-12 14:48:17 -04:00
Dhananjay Maurya ae36ca3127 Keep plain negative numbers numeric in CSV export
A leading '-' only matters when the value is not a plain number, so
-12 and -1.5 stay numeric while payloads like -2+3+cmd|'/c calc'!A0
still get the apostrophe prefix.
2026-10-13 00:06:15 +05:30
Owen 700f4423f9 Merge branch 'main' into dev 2026-10-12 14:28:44 -04:00
Tyagiquamar b4812066c9 fix(blueprints): allow underscores in health check hostnames 2026-10-12 18:18:14 +05:30
Tyagiquamar ee00ed5a65 fix(server): avoid exponential backtracking in isPathAllowed (#3862) 2026-10-12 18:18:07 +05:30
Dhananjay Maurya bae174766b Neutralise formula prefixes in CSV log exports
generateCSV escaped quotes only when a value happened to contain a comma and never neutralised formula prefixes, so every CSV log export could emit attacker controlled cells that execute when an admin opens the file. actor is a virtual API key name validated as nothing more than a non-empty string, and path, host, originalRequestURL, metadata and the AI session bodies come straight from the client request.

Each value now goes through a single encoder that collapses CR, LF and CRLF to a literal \n so a record can never be split across rows, prefixes a leading apostrophe when the first character would make a spreadsheet evaluate the cell as a formula, and quotes whenever the field contains a comma or a quote instead of only when it contains a comma. Headers use the same encoder so a column name cannot desynchronise the rows from the header row.

The five CSV export endpoints also declare charset=utf-8, matching the content type already used by the log streaming destination.

Fixes #3864
2026-10-08 14:43:43 +05:30
TiltedTeapot 91aefa67dc removed literal listenport error references 2026-10-06 18:22:13 -06:00
TiltedTeapot 3712921048 Propogated Changes. listen port is now accessed from db instead of config 2026-10-06 18:21:05 -06:00
TiltedTeapot 29fc221f59 remove TODO comment for fix made in 98a261e 2026-10-06 18:11:24 -06:00
TiltedTeapot f15f4aee17 added to db again 2026-10-06 18:11:23 -06:00
TiltedTeapot cff796fabe Added relayPort to exitNodes in db 2026-10-06 18:11:23 -06:00
ercoppa 487910487d FIX: generateGerbilConfig hardcoded the WireGuard listen port to 51820 and never sent a relay port 2026-10-06 18:11:23 -06:00
Owen Schwartz ef0ea6364d Merge pull request #3830 from mr-pmillz/fix/integration-api-delete-org
Fix Integration API organization delete (regression of #1376)
2026-10-04 11:00:45 -04:00
miloschwartz 22b7411794 add redirect routes to integration api 2026-10-02 17:11:06 -04:00
miloschwartz 4d1a14c965 seperate attached to column 2026-10-02 17:02:35 -04:00
miloschwartz 9746ba5741 add server side sort and filter 2026-10-02 16:41:56 -04:00
Owen 1628ab48da Add ui for assigning roles to machines 2026-10-02 12:04:08 -04:00
Owen bc2920af23 Support machine clients added to roles 2026-10-01 15:58:25 -04:00
Owen 938710147a Delete token 2026-10-01 09:30:08 -04:00
Owen Schwartz 27e0f00d65 Merge pull request #3838 from kdcokenny/fix/traefik-ipv6-targets
fix: use formatEndpoint for local targets
2026-10-01 09:06:18 -04:00
kdcokenny 8c3d0bd7f6 fix: use formatEndpoint for local targets 2026-09-30 20:27:27 +00:00
Owen 8ff05c0ec3 Start pulling cert at 15 days (due to cert update) 2026-09-30 14:01:17 -04:00
miloschwartz a46fc531d4 show exit nodes in resource launcher 2026-09-29 17:05:07 -04:00
Owen c0c0cfb18a Support exit-node as an alias for gateway type private resources 2026-09-29 13:59:46 -04:00
mr-pmillzandClaude Opus 5.5 4cb620f46b Fix Integration API organization delete (regression of #1376)
DELETE /v1/org/{orgId} on the Integration API always returned
500 "An error occurred..." and left the organization in place, even for a
root API key holding the deleteOrg action. The handler looked up the
caller's ownership with req.user!.userId, but Integration API requests are
authenticated by verifyApiKey, which sets req.apiKey and never req.user,
so the lookup threw "Cannot read properties of undefined (reading
'userId')".

#1376 was fixed in f37eda47 by dropping the user-only permission check;
79cf7c84 later added the owner check to the handler shared by both
routers, reintroducing the failure for API keys.

Keep the owner check for dashboard sessions. For Integration API keys the
route is already restricted by verifyApiKeyIsRoot and
verifyApiKeyHasAction(deleteOrg), so load the organization directly. Both
paths still refuse a billing organization and return the same 404 for an
unknown organization.

Verified against a local SQLite instance with a root key: before the
change, create returned 201 and delete returned 500 with the organization
still present; after it, delete returns 200 and a repeated delete or GET
returns 404. npx tsc --noEmit passes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 11:09:18 -04:00
Owen c92b2f22ba Update version 2026-09-29 11:02:37 -04:00
Owen e3ce453155 Send disconnect messages if the session is bad 2026-09-29 10:24:59 -04:00