Resolve conflicts against upstream's refactors:
- server/db/sqlite/schema/schema.ts: adopt upstream's reindented
sqliteTable(name, cols, indexes) form for sites/resources, re-applying
the headers -> requestHeaders/responseHeaders split. Kept in sync with
the Postgres schema.
- server/lib/traefik/headersMiddleware.ts: extend upstream's extracted
buildCustomHeadersMiddleware helper to take requestHeaders and
responseHeaders and emit both customRequestHeaders and
customResponseHeaders.
- server/lib/traefik/getTraefikConfig.ts and
server/private/lib/traefik/getTraefikConfig.ts: keep upstream's helper
extraction and appendPathMatch refactor, dropping the superseded inline
blocks.
Also carry the feature forward onto code that moved upstream:
- The resource settings UI moved from resources/proxy/[niceId]/proxy to
resources/public/[niceId]/http, which dropped this branch's changes in
the previous merge. Re-add the request/response header inputs there and
rename the vestigial headers field on the tcp page.
- messages/da-DK.json is new upstream and still had the old customHeaders
key; rename it in line with the other locales.
Per the contributing docs, versioned migrations are intentionally omitted
so maintainers can write them at release time.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Add 13 secondary indexes across 10 tables in the SQLite schema and
5 missing indexes to the PostgreSQL schema.
All list endpoints (listSites, listResources, listClients, listRoles,
listTargets, listUserOrgs) filter and join on these FK columns. In the
SQLite schema, no secondary indexes existed at all on these foreign keys,
forcing full sequential scans on every paginated request and session lookup.
SQLite changes (13 new indexes):
- sites.orgId
- resources.orgId
- targets.resourceId, targets.siteId
- newt.siteId
- clients.orgId, clients.userId
- labels.orgId
- olms.userId
- session.userId
- userOrgs.userId, userOrgs.orgId
- roles.orgId
PG changes (5 new indexes, rest already present):
- labels.orgId
- session.userId
- userOrgs.userId, userOrgs.orgId
- roles.orgId
- olms.userId