Commit graph

6849 commits

Author SHA1 Message Date
Dmitry Maranik
81fc467187 test(connectors): regression tests for cross-search-space index authorization
Two integration tests pinning the connector index endpoint's authorization:

- cross-space index (attacker owns space B, connector lives in victim's
  space A, request passes search_space_id=B) is rejected with 404 at the
  search-space reconciliation, before the permission check (which would
  otherwise pass for the attacker's own space).
- same-space index authorizes check_permission against the connector's
  own search space, not the caller-supplied query param.

Mirrors the existing tests/integration harness (direct handler calls with
the savepoint-rolled-back db_session; check_permission patched so the test
needs no real RBAC wiring).
2026-06-16 16:18:40 -07:00
Dmitry Maranik
e1ea82d7cf fix(connectors): scope index endpoint authorization to the connector's own search space
The POST /search-source-connectors/{connector_id}/index endpoint loaded
the connector by id and then called check_permission() against the
client-supplied search_space_id query parameter (the caller's own space)
rather than the connector's own search_space_id, and never verified that
the two matched.

A user could therefore index another user's connector by passing their
own search_space_id: the indexer ran with the victim connector's stored
credentials and wrote the fetched content into the attacker's search
space. The read/update/delete handlers already authorize against
connector.search_space_id; this brings the index handler in line.

Reject a connector that does not belong to the requested search space
(404, to avoid disclosing connectors in other spaces) and authorize the
permission check against connector.search_space_id.
2026-06-16 15:58:30 -07:00
DESKTOP-RTLN3BA\$punk
8172f0f586 chore(migration): added dead users cleanup 2026-06-16 15:48:17 -07:00
DESKTOP-RTLN3BA\$punk
5d99489f4b feat(migration): implement chunk position backfill with batched updates and indexing for improved performance 2026-06-16 15:19:56 -07:00
Thierry CH.
284df841ef
Merge pull request #1501 from CREDO23/feat/podcast-brief-duration-seconds
feat(podcasts): short default brief length with seconds and unit picker
2026-06-16 15:04:07 -07:00
CREDO23
7584312712 style(podcasts): fix ruff issues in podcast spec schema
Remove duplicate typing import and format legacy minute coercion guard.
2026-06-16 23:57:36 +02:00
CREDO23
7a415b61ea test: align QuotaInsufficientError fixtures with balance_micros API
Billable calls now raise quota errors with balance_micros instead of
used_micros/limit_micros; update mocks so CI passes on main.
2026-06-16 23:56:11 +02:00
CREDO23
fd96c930bf test(podcasts): cover seconds duration and legacy minute specs 2026-06-16 23:38:28 +02:00
CREDO23
f997b6464e test(podcasts): update renderer test for second-based duration 2026-06-16 23:38:28 +02:00
CREDO23
cb70b64a70 test(podcasts): update unit fixtures for second-based duration 2026-06-16 23:38:28 +02:00
CREDO23
38991c7db8 test(podcasts): update integration fixtures for second-based duration 2026-06-16 23:38:28 +02:00
CREDO23
bab3f7c0d4 feat(web): add unit dropdown for podcast brief target length 2026-06-16 23:38:28 +02:00
CREDO23
608620d649 feat(web): add seconds-based podcast duration types with legacy support 2026-06-16 23:38:28 +02:00
CREDO23
16d226e5ce refactor(podcasts): plan transcript length from midpoint seconds 2026-06-16 23:38:28 +02:00
CREDO23
116c38feac refactor(podcasts): build DurationTarget from brief seconds config 2026-06-16 23:38:28 +02:00
CREDO23
af08e2f033 refactor(podcasts): propose brief with min_seconds and max_seconds 2026-06-16 23:38:28 +02:00
CREDO23
d0ed5b94d9 refactor(podcasts): use shared second-based brief duration defaults 2026-06-16 23:38:28 +02:00
CREDO23
845653cbac feat(podcasts): pass min_seconds and max_seconds when proposing brief 2026-06-16 23:38:27 +02:00
CREDO23
085442ed9a feat(podcasts): use seconds defaults on create podcast request 2026-06-16 23:38:27 +02:00
CREDO23
32e0d21604 feat(podcasts): store brief duration in seconds with legacy load 2026-06-16 23:38:27 +02:00
CREDO23
9583e8f250 feat(podcasts): add shared duration limit constants 2026-06-16 23:38:27 +02:00
Rohan Verma
b6d25d3828
Merge pull request #1499 from AnishSarkar22/feat/reverse-proxy
feat: Add single-origin reverse proxy deployment with runtime web config
2026-06-16 14:03:27 -07:00
Anish Sarkar
61f071ae68 refactor(web): replace Card component with Alert for messaging channels notification to enhance user experience 2026-06-17 00:06:41 +05:30
Anish Sarkar
9b7e278114 refactor(config): update GATEWAY_ENABLED variable to FALSE and adjust related configurations for improved messaging gateway handling 2026-06-16 23:49:26 +05:30
Thierry CH.
683a827300
Merge pull request #1500 from CREDO23/fix/podcast-stream-missing-audio
fix(podcasts): guard stream when audio missing and share object store volume
2026-06-16 11:16:27 -07:00
CREDO23
a7be41d50a fix(docker): share persistent object_store volume in dev 2026-06-16 20:09:08 +02:00
CREDO23
fc045d200d fix(docker): share persistent object_store volume across services 2026-06-16 20:09:08 +02:00
CREDO23
1048d0afc3 test(podcasts): cover public stream missing-object 404 2026-06-16 20:09:08 +02:00
CREDO23
810ded2dde test(podcasts): cover in-flight 409 and missing-object 404 2026-06-16 20:09:08 +02:00
CREDO23
86a8833fb4 test(podcasts): add exists to fake storage backend 2026-06-16 20:09:08 +02:00
CREDO23
1d70af4684 fix(podcasts): guard public stream against missing audio 2026-06-16 20:09:08 +02:00
CREDO23
0c2808640a fix(podcasts): guard stream against missing audio 2026-06-16 20:09:08 +02:00
CREDO23
d2558e546e feat(podcasts): add audio_exists storage helper 2026-06-16 20:09:08 +02:00
Anish Sarkar
4ed6343b91 refactor(docker): remove docker-entrypoint.sh and update Dockerfile to use CMD for server execution 2026-06-16 22:01:23 +05:30
Anish Sarkar
55c2e5c0d8 refactor(web): enhance redirect response in callback route 2026-06-16 21:00:53 +05:30
Anish Sarkar
c3a96aa532 refactor(web): simplify redirect response construction in callback route 2026-06-16 20:13:00 +05:30
Anish Sarkar
97ac02eba8 refactor(web): update environment variable references to use HOSTED_BACKEND_URL for improved consistency across workflows and scripts 2026-06-16 16:15:45 +05:30
Anish Sarkar
695da76f2e refactor(web): update environment variable handling to use build-time constants for auth type, deployment mode, and ETL service 2026-06-16 15:55:57 +05:30
Anish Sarkar
3f69bfd5e4 refactor(web): replace instances of BACKEND_URL with buildBackendUrl for improved URL handling 2026-06-16 14:51:25 +05:30
Anish Sarkar
371ff866c7 refactor(web): replace BACKEND_URL with buildBackendUrl for dynamic URL construction 2026-06-16 04:56:23 +05:30
Anish Sarkar
66659ee8d3 feat(docker): update Caddyfile to include specific reverse proxy routes for frontend auth and backend user profiles 2026-06-16 04:36:26 +05:30
Anish Sarkar
34a49df8a3 docs: document runtime env vars and same-origin proxy access 2026-06-16 02:12:11 +05:30
Anish Sarkar
2fb0f0c050 ci: align workflows and playwright with runtime env vars 2026-06-16 02:11:48 +05:30
Anish Sarkar
1313ec2109 fix(docker): disable response buffering for backend streaming 2026-06-16 02:11:32 +05:30
Anish Sarkar
cd5e0abe53 refactor(docker): drop build-time NEXT_PUBLIC injection for runtime env 2026-06-16 02:11:13 +05:30
Anish Sarkar
2a840fcc10 refactor(backend): derive frontend and backend urls from SURFSENSE_PUBLIC_URL 2026-06-16 02:10:50 +05:30
Anish Sarkar
1d050e7d40 refactor(web): drop google sign-in cta from marketing pages 2026-06-16 02:10:00 +05:30
Anish Sarkar
bc31b10ca6 refactor(web): consume runtime config in connectors and document uploads 2026-06-16 01:39:52 +05:30
Anish Sarkar
c5dd55e964 refactor(web): consume runtime config in auth and dashboard flows 2026-06-16 01:39:32 +05:30
Anish Sarkar
9ef2c6a60e refactor(web): route server proxies through SURFSENSE_BACKEND_INTERNAL_URL 2026-06-16 01:39:00 +05:30