Commit graph

19 commits

Author SHA1 Message Date
79650306c1 fix(vpn): stop defaulting client DNS to Cloudflare
All checks were successful
Deploy Docker Images / Build, push, and deploy (push) Successful in 16m21s
Prefer Elektrine DNS when configured. Last-resort resolvers use Quad9.
2026-08-02 23:29:54 -04:00
48a7e87373 feat(vpn): scalable control plane — grants, scoring, paths, guests
All checks were successful
Deploy Docker Images / Build, push, and deploy (push) Successful in 21m26s
Add account-scale foundations: fleet load/capacity scoring and best-exit
ranking, signed short-lived peer grants with admit API, full/active/lazy
peer sync modes plus idle GC, policy packs/split tunnel hooks, stealth and
multi-hop path composition, guest share links, trust-tier premium/burst
quota, community node fields, agent heartbeat metrics, and docs.
2026-08-02 15:49:59 -04:00
f315c10ff4 merge: pr-11c-featdns-secondary-ingest-answer-from-transferred-d 2026-08-02 01:54:37 -04:00
2c10a94b07 merge: pr-11b-featdns-outbound-axfr-primary-unsigned-first 2026-08-02 01:54:36 -04:00
e7542001af merge: pr-9-featdns-edge-sites-registry-heartbeat-proxied-edge 2026-08-02 01:54:36 -04:00
9353ba4041 merge: pr-8-featdns-single-node-http-cache-purge-api 2026-08-02 01:54:36 -04:00
008ecba84d merge: pr-7b-featdns-tunnel-control-plane-wss-connector-agent-m 2026-08-02 01:54:36 -04:00
0faa4f0ce9 Merge remote-tracking branch 'origin/execute-plan/36ec561d-pr-6-featdns-oidc-access-action-for-edge-rules' 2026-08-02 01:54:36 -04:00
75aea20d1b merge: edge rules (pr-5) into main
Combine analytics routes, edge-rule API/UI, and DNS LiveView tabs.
2026-08-02 01:51:58 -04:00
26575f86b1 feat(dns): secondary ingest and answer from transferred data
Secondary zones (kind=secondary) AXFR from configured masters into an
in-memory SecondaryStore so authority answers without writing primary
dns_records. Zone serial and SOA metadata update on successful transfer.
2026-08-02 01:01:12 -04:00
df01e2cb1e fix: address review feedback for HTTP edge cache
Only GET responses fill the shared cache key so HEAD misses cannot
poison later GETs with empty bodies. Reject Cache-Control private/
no-store and credential-sensitive Vary. Validate purge selectors
(coerce single strings; 400 on other non-lists). Document dual flags
and cache_authenticated shared-key semantics; sync OpenAPI; harden
put/purge against GenServer blips; batch byte LRU eviction.
2026-08-02 00:43:45 -04:00
4add0fa3d1 feat(dns): outbound AXFR primary unsigned first
Serve TCP zone transfers when DNS_SECONDARY_AXFR_ENABLED and per-zone ACL
allow the client. Unsigned path uses IP allow-lists only; require-TSIG
zones refuse until wire MAC verification lands.
2026-08-02 00:34:45 -04:00
1a26bad1c6 feat(dns): tunnel control plane WSS connector and agent MVP
Add zone-owned dns_tunnels credentials, write:edge/read:edge PAT scopes,
/_edge/tunnel/v1 register|refresh|ws|disconnect, Edge.Connector sessions,
length-prefixed frame codec, and a WebSockex-based outbound agent that
publishes only ORIGIN_URL. Feature defaults off via DNS_TUNNEL_ENABLED.

Also regroup timeline post_operations clauses so Elixir 1.20 compiles clean
under --warnings-as-errors.
2026-08-02 00:30:38 -04:00
95251f6a13 feat(dns): OIDC access action for edge rules
Implement exchange-code Access for access_oidc rules using the platform
IdP only. Cookie is host-only and set solely on complete; open redirects
and non-owner users fail closed.
2026-08-02 00:27:26 -04:00
57d171eb49 feat(dns): single-node HTTP cache and purge API
Add an opt-in ETS HTTP edge cache for proxied hosts, gated by
DNS_CACHE_ENABLED (default false) and matching edge-rule action type
"cache". Cache is single-node only: GET/HEAD 200 responses, never
Set-Cookie, and never Authorization/Cookie requests unless
cache_authenticated. LRU eviction honors max entries and bytes.

Introduce write:edge / read:edge PAT scopes and POST
/api/ext/v1/dns/zones/:id/cache/purge (write:edge) for local purge by
hosts, prefixes, or tags. Multi-node fanout is intentionally absent.
2026-08-02 00:27:11 -04:00
342f00d676 feat(dns): edge sites registry heartbeat and edge IP filter
Register multi-node edge sites with per-site bearer heartbeats so proxied
DNS answers exclude down edge IPs while failing open if every site is down.
Instance-admin mint only; empty registry keeps env edge IPs as a singleton up site.
2026-08-02 00:06:29 -04:00
24dcb448a4 feat(dns): edge rules schema and pre-origin evaluation
Add zone-scoped dns_edge_rules with a pure evaluation engine and wire
redirect/rate_limit/WAF/access placeholder into DNSEdgeProxy before origin
resolve. Feature defaults off (DNS_EDGE_RULES_ENABLED=false); empty rules
remain a no-op allow. Includes LiveView CRUD, write:dns ext API, and tests
for priority order and missing-origin redirects.
2026-08-01 23:41:39 -04:00
a9c53e7083 fix: address review feedback for query analytics API
Thread days through analytics rollups, lighten ownership checks, index
query_date for retention prune, and lock DNS/platform isolation in tests.
2026-08-01 23:40:16 -04:00
454e80a8f8 Initial commit
Some checks failed
Deploy Docker Images / Build, push, and deploy (push) Failing after 19m8s
Smoke / Hello from Forgejo Actions (push) Successful in 1s
Fresh repository on git.elektrine.com/elektrine/elektrine.
2026-07-30 01:36:18 -04:00