fix: address code review findings for DNS management

- CRITICAL: Change DNS zones endpoint from GET to POST to avoid
  leaking API token in URL query parameters
- HIGH: Add sync.RWMutex to protect dnsProvider field in Server,
  Deployer, and proxy Manager against concurrent read/write races
- HIGH: Capture old DNS provider reference synchronously before
  launching background cleanup goroutine
- HIGH: Use getDNS()/getDNSProviderLocked() accessors instead of
  direct field reads in all DNS operations
This commit is contained in:
2026-04-02 14:54:15 +03:00
parent c730cfaa45
commit 670948f113
243 changed files with 15971 additions and 535 deletions
@@ -0,0 +1,62 @@
export { matchers } from './matchers.js';
export const nodes = [
() => import('./nodes/0'),
() => import('./nodes/1'),
() => import('./nodes/2'),
() => import('./nodes/3'),
() => import('./nodes/4'),
() => import('./nodes/5'),
() => import('./nodes/6'),
() => import('./nodes/7'),
() => import('./nodes/8'),
() => import('./nodes/9'),
() => import('./nodes/10'),
() => import('./nodes/11'),
() => import('./nodes/12'),
() => import('./nodes/13'),
() => import('./nodes/14'),
() => import('./nodes/15'),
() => import('./nodes/16'),
() => import('./nodes/17'),
() => import('./nodes/18'),
() => import('./nodes/19')
];
export const server_loads = [];
export const dictionary = {
"/": [3],
"/containers/stale": [4],
"/deploy": [5],
"/events": [6],
"/login": [7],
"/projects": [8],
"/projects/[id]": [9],
"/projects/[id]/env": [10],
"/projects/[id]/volumes": [11],
"/projects/[id]/volumes/[volId]/browse": [12],
"/proxies": [13],
"/proxies/create": [14],
"/proxies/[id]/edit": [15],
"/settings": [16,[2]],
"/settings/auth": [17,[2]],
"/settings/credentials": [18,[2]],
"/settings/registries": [19,[2]]
};
export const hooks = {
handleError: (({ error }) => { console.error(error) }),
reroute: (() => {}),
transport: {}
};
export const decoders = Object.fromEntries(Object.entries(hooks.transport).map(([k, v]) => [k, v.decode]));
export const encoders = Object.fromEntries(Object.entries(hooks.transport).map(([k, v]) => [k, v.encode]));
export const hash = false;
export const decode = (type, value) => decoders[type](value);
export { default as root } from '../root.js';
@@ -0,0 +1 @@
export const matchers = {};
@@ -0,0 +1,3 @@
import * as universal from "../../../../src/routes/+layout.ts";
export { universal };
export { default as component } from "../../../../src/routes/+layout.svelte";
@@ -0,0 +1 @@
export { default as component } from "../../../../node_modules/@sveltejs/kit/src/runtime/components/svelte-5/error.svelte";
@@ -0,0 +1 @@
export { default as component } from "../../../../src/routes/projects/[id]/env/+page.svelte";
@@ -0,0 +1 @@
export { default as component } from "../../../../src/routes/projects/[id]/volumes/+page.svelte";
@@ -0,0 +1,3 @@
import * as universal from "../../../../src/routes/projects/[id]/volumes/[volId]/browse/+page.ts";
export { universal };
export { default as component } from "../../../../src/routes/projects/[id]/volumes/[volId]/browse/+page.svelte";
@@ -0,0 +1,3 @@
import * as universal from "../../../../src/routes/proxies/+page.ts";
export { universal };
export { default as component } from "../../../../src/routes/proxies/+page.svelte";
@@ -0,0 +1,3 @@
import * as universal from "../../../../src/routes/proxies/create/+page.ts";
export { universal };
export { default as component } from "../../../../src/routes/proxies/create/+page.svelte";
@@ -0,0 +1,3 @@
import * as universal from "../../../../src/routes/proxies/[id]/edit/+page.ts";
export { universal };
export { default as component } from "../../../../src/routes/proxies/[id]/edit/+page.svelte";
@@ -0,0 +1 @@
export { default as component } from "../../../../src/routes/settings/+page.svelte";
@@ -0,0 +1 @@
export { default as component } from "../../../../src/routes/settings/auth/+page.svelte";
@@ -0,0 +1 @@
export { default as component } from "../../../../src/routes/settings/credentials/+page.svelte";
@@ -0,0 +1 @@
export { default as component } from "../../../../src/routes/settings/registries/+page.svelte";
@@ -0,0 +1 @@
export { default as component } from "../../../../src/routes/settings/+layout.svelte";
@@ -0,0 +1 @@
export { default as component } from "../../../../src/routes/+page.svelte";
@@ -0,0 +1,3 @@
import * as universal from "../../../../src/routes/containers/stale/+page.ts";
export { universal };
export { default as component } from "../../../../src/routes/containers/stale/+page.svelte";
@@ -0,0 +1 @@
export { default as component } from "../../../../src/routes/deploy/+page.svelte";
@@ -0,0 +1,3 @@
import * as universal from "../../../../src/routes/events/+page.ts";
export { universal };
export { default as component } from "../../../../src/routes/events/+page.svelte";
@@ -0,0 +1 @@
export { default as component } from "../../../../src/routes/login/+page.svelte";
@@ -0,0 +1 @@
export { default as component } from "../../../../src/routes/projects/+page.svelte";
@@ -0,0 +1 @@
export { default as component } from "../../../../src/routes/projects/[id]/+page.svelte";