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:
@@ -0,0 +1,581 @@
|
||||
{
|
||||
".svelte-kit/generated/server/internal.js": {
|
||||
"file": "internal.js",
|
||||
"name": "internal",
|
||||
"src": ".svelte-kit/generated/server/internal.js",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_root.js",
|
||||
"_environment.js",
|
||||
"_internal.js"
|
||||
]
|
||||
},
|
||||
"_EntityPicker.RxInhUBX.css": {
|
||||
"file": "_app/immutable/assets/EntityPicker.RxInhUBX.css",
|
||||
"src": "_EntityPicker.RxInhUBX.css"
|
||||
},
|
||||
"_EntityPicker.js": {
|
||||
"file": "chunks/EntityPicker.js",
|
||||
"name": "EntityPicker",
|
||||
"imports": [
|
||||
"_index.js",
|
||||
"_IconX.js",
|
||||
"_index2.js"
|
||||
],
|
||||
"css": [
|
||||
"_app/immutable/assets/EntityPicker.RxInhUBX.css"
|
||||
]
|
||||
},
|
||||
"_FormField.js": {
|
||||
"file": "chunks/FormField.js",
|
||||
"name": "FormField",
|
||||
"imports": [
|
||||
"_index.js"
|
||||
]
|
||||
},
|
||||
"_IconAlert.js": {
|
||||
"file": "chunks/IconAlert.js",
|
||||
"name": "IconAlert",
|
||||
"imports": [
|
||||
"_index.js"
|
||||
]
|
||||
},
|
||||
"_IconCheck.js": {
|
||||
"file": "chunks/IconCheck.js",
|
||||
"name": "IconCheck",
|
||||
"imports": [
|
||||
"_index.js"
|
||||
]
|
||||
},
|
||||
"_IconChevronRight.js": {
|
||||
"file": "chunks/IconChevronRight.js",
|
||||
"name": "IconChevronRight",
|
||||
"imports": [
|
||||
"_index.js"
|
||||
]
|
||||
},
|
||||
"_IconDeploy.js": {
|
||||
"file": "chunks/IconDeploy.js",
|
||||
"name": "IconDeploy",
|
||||
"imports": [
|
||||
"_index.js"
|
||||
]
|
||||
},
|
||||
"_IconGlobe.js": {
|
||||
"file": "chunks/IconGlobe.js",
|
||||
"name": "IconGlobe",
|
||||
"imports": [
|
||||
"_index.js"
|
||||
]
|
||||
},
|
||||
"_IconLoader.js": {
|
||||
"file": "chunks/IconLoader.js",
|
||||
"name": "IconLoader",
|
||||
"imports": [
|
||||
"_index.js"
|
||||
]
|
||||
},
|
||||
"_IconPlus.js": {
|
||||
"file": "chunks/IconPlus.js",
|
||||
"name": "IconPlus",
|
||||
"imports": [
|
||||
"_index.js"
|
||||
]
|
||||
},
|
||||
"_IconSettings.js": {
|
||||
"file": "chunks/IconSettings.js",
|
||||
"name": "IconSettings",
|
||||
"imports": [
|
||||
"_index.js"
|
||||
]
|
||||
},
|
||||
"_IconTrash.js": {
|
||||
"file": "chunks/IconTrash.js",
|
||||
"name": "IconTrash",
|
||||
"imports": [
|
||||
"_index.js"
|
||||
]
|
||||
},
|
||||
"_IconX.js": {
|
||||
"file": "chunks/IconX.js",
|
||||
"name": "IconX",
|
||||
"imports": [
|
||||
"_index.js"
|
||||
]
|
||||
},
|
||||
"_Skeleton.js": {
|
||||
"file": "chunks/Skeleton.js",
|
||||
"name": "Skeleton",
|
||||
"imports": [
|
||||
"_index.js"
|
||||
]
|
||||
},
|
||||
"_SkeletonCard.js": {
|
||||
"file": "chunks/SkeletonCard.js",
|
||||
"name": "SkeletonCard",
|
||||
"imports": [
|
||||
"_Skeleton.js"
|
||||
]
|
||||
},
|
||||
"_api.js": {
|
||||
"file": "chunks/api.js",
|
||||
"name": "api"
|
||||
},
|
||||
"_environment.js": {
|
||||
"file": "chunks/environment.js",
|
||||
"name": "environment"
|
||||
},
|
||||
"_exports.js": {
|
||||
"file": "chunks/exports.js",
|
||||
"name": "exports"
|
||||
},
|
||||
"_false.js": {
|
||||
"file": "chunks/false.js",
|
||||
"name": "false"
|
||||
},
|
||||
"_index-server.js": {
|
||||
"file": "chunks/index-server.js",
|
||||
"name": "index-server",
|
||||
"imports": [
|
||||
"_index.js"
|
||||
]
|
||||
},
|
||||
"_index.js": {
|
||||
"file": "chunks/index.js",
|
||||
"name": "index",
|
||||
"imports": [
|
||||
"_false.js"
|
||||
]
|
||||
},
|
||||
"_index2.js": {
|
||||
"file": "chunks/index2.js",
|
||||
"name": "index",
|
||||
"imports": [
|
||||
"_index3.js"
|
||||
]
|
||||
},
|
||||
"_index3.js": {
|
||||
"file": "chunks/index3.js",
|
||||
"name": "index",
|
||||
"imports": [
|
||||
"_index.js"
|
||||
]
|
||||
},
|
||||
"_internal.js": {
|
||||
"file": "chunks/internal.js",
|
||||
"name": "internal",
|
||||
"imports": [
|
||||
"_root.js",
|
||||
"_environment.js"
|
||||
]
|
||||
},
|
||||
"_root.js": {
|
||||
"file": "chunks/root.js",
|
||||
"name": "root",
|
||||
"imports": [
|
||||
"_index.js"
|
||||
]
|
||||
},
|
||||
"_shared.js": {
|
||||
"file": "chunks/shared.js",
|
||||
"name": "shared",
|
||||
"imports": [
|
||||
"_utils.js"
|
||||
]
|
||||
},
|
||||
"_state.svelte.js": {
|
||||
"file": "chunks/state.svelte.js",
|
||||
"name": "state.svelte",
|
||||
"imports": [
|
||||
"_index.js",
|
||||
"_exports.js",
|
||||
"_root.js"
|
||||
]
|
||||
},
|
||||
"_stores.js": {
|
||||
"file": "chunks/stores.js",
|
||||
"name": "stores",
|
||||
"imports": [
|
||||
"_index.js",
|
||||
"_exports.js",
|
||||
"_utils.js",
|
||||
"_root.js",
|
||||
"_state.svelte.js"
|
||||
]
|
||||
},
|
||||
"_theme.js": {
|
||||
"file": "chunks/theme.js",
|
||||
"name": "theme",
|
||||
"imports": [
|
||||
"_index3.js"
|
||||
]
|
||||
},
|
||||
"_toast.js": {
|
||||
"file": "chunks/toast.js",
|
||||
"name": "toast",
|
||||
"imports": [
|
||||
"_index3.js"
|
||||
]
|
||||
},
|
||||
"_utils.js": {
|
||||
"file": "chunks/utils.js",
|
||||
"name": "utils"
|
||||
},
|
||||
"node_modules/@sveltejs/kit/src/runtime/app/server/remote/index.js": {
|
||||
"file": "remote-entry.js",
|
||||
"name": "remote-entry",
|
||||
"src": "node_modules/@sveltejs/kit/src/runtime/app/server/remote/index.js",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_shared.js",
|
||||
"_false.js",
|
||||
"_environment.js"
|
||||
]
|
||||
},
|
||||
"node_modules/@sveltejs/kit/src/runtime/components/svelte-5/error.svelte": {
|
||||
"file": "entries/fallbacks/error.svelte.js",
|
||||
"name": "entries/fallbacks/error.svelte",
|
||||
"src": "node_modules/@sveltejs/kit/src/runtime/components/svelte-5/error.svelte",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_index.js",
|
||||
"_state.svelte.js",
|
||||
"_exports.js",
|
||||
"_utils.js",
|
||||
"_index3.js",
|
||||
"_root.js"
|
||||
]
|
||||
},
|
||||
"node_modules/@sveltejs/kit/src/runtime/server/index.js": {
|
||||
"file": "index.js",
|
||||
"name": "index",
|
||||
"src": "node_modules/@sveltejs/kit/src/runtime/server/index.js",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_false.js",
|
||||
"_environment.js",
|
||||
"_shared.js",
|
||||
"_exports.js",
|
||||
"_utils.js",
|
||||
"_index3.js",
|
||||
"_internal.js"
|
||||
]
|
||||
},
|
||||
"src/routes/+layout.svelte": {
|
||||
"file": "entries/pages/_layout.svelte.js",
|
||||
"name": "entries/pages/_layout.svelte",
|
||||
"src": "src/routes/+layout.svelte",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_index.js",
|
||||
"_index-server.js",
|
||||
"_stores.js",
|
||||
"_toast.js",
|
||||
"_IconCheck.js",
|
||||
"_IconX.js",
|
||||
"_IconAlert.js",
|
||||
"_theme.js",
|
||||
"_index2.js",
|
||||
"_IconGlobe.js",
|
||||
"_IconDeploy.js",
|
||||
"_IconSettings.js",
|
||||
"_index3.js"
|
||||
],
|
||||
"css": [
|
||||
"_app/immutable/assets/_layout.ZH2qq8sR.css"
|
||||
]
|
||||
},
|
||||
"src/routes/+layout.ts": {
|
||||
"file": "entries/pages/_layout.ts.js",
|
||||
"name": "entries/pages/_layout.ts",
|
||||
"src": "src/routes/+layout.ts",
|
||||
"isEntry": true
|
||||
},
|
||||
"src/routes/+page.svelte": {
|
||||
"file": "entries/pages/_page.svelte.js",
|
||||
"name": "entries/pages/_page.svelte",
|
||||
"src": "src/routes/+page.svelte",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_index.js",
|
||||
"_index2.js",
|
||||
"_IconDeploy.js",
|
||||
"_IconAlert.js",
|
||||
"_SkeletonCard.js"
|
||||
]
|
||||
},
|
||||
"src/routes/containers/stale/+page.svelte": {
|
||||
"file": "entries/pages/containers/stale/_page.svelte.js",
|
||||
"name": "entries/pages/containers/stale/_page.svelte",
|
||||
"src": "src/routes/containers/stale/+page.svelte",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_index.js",
|
||||
"_api.js",
|
||||
"_IconTrash.js",
|
||||
"_IconLoader.js",
|
||||
"_index2.js",
|
||||
"_IconAlert.js",
|
||||
"_SkeletonCard.js",
|
||||
"_toast.js"
|
||||
]
|
||||
},
|
||||
"src/routes/containers/stale/+page.ts": {
|
||||
"file": "entries/pages/containers/stale/_page.ts.js",
|
||||
"name": "entries/pages/containers/stale/_page.ts",
|
||||
"src": "src/routes/containers/stale/+page.ts",
|
||||
"isEntry": true
|
||||
},
|
||||
"src/routes/deploy/+page.svelte": {
|
||||
"file": "entries/pages/deploy/_page.svelte.js",
|
||||
"name": "entries/pages/deploy/_page.svelte",
|
||||
"src": "src/routes/deploy/+page.svelte",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_index.js",
|
||||
"_FormField.js",
|
||||
"_EntityPicker.js",
|
||||
"_toast.js",
|
||||
"_index2.js"
|
||||
]
|
||||
},
|
||||
"src/routes/events/+page.svelte": {
|
||||
"file": "entries/pages/events/_page.svelte.js",
|
||||
"name": "entries/pages/events/_page.svelte",
|
||||
"src": "src/routes/events/+page.svelte",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_index.js",
|
||||
"_index-server.js",
|
||||
"_index2.js"
|
||||
]
|
||||
},
|
||||
"src/routes/events/+page.ts": {
|
||||
"file": "entries/pages/events/_page.ts.js",
|
||||
"name": "entries/pages/events/_page.ts",
|
||||
"src": "src/routes/events/+page.ts",
|
||||
"isEntry": true
|
||||
},
|
||||
"src/routes/login/+page.svelte": {
|
||||
"file": "entries/pages/login/_page.svelte.js",
|
||||
"name": "entries/pages/login/_page.svelte",
|
||||
"src": "src/routes/login/+page.svelte",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_index.js",
|
||||
"_exports.js",
|
||||
"_utils.js",
|
||||
"_root.js",
|
||||
"_state.svelte.js",
|
||||
"_index2.js",
|
||||
"_theme.js"
|
||||
]
|
||||
},
|
||||
"src/routes/projects/+page.svelte": {
|
||||
"file": "entries/pages/projects/_page.svelte.js",
|
||||
"name": "entries/pages/projects/_page.svelte",
|
||||
"src": "src/routes/projects/+page.svelte",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_index.js",
|
||||
"_index2.js",
|
||||
"_IconPlus.js",
|
||||
"_Skeleton.js"
|
||||
],
|
||||
"css": [
|
||||
"_app/immutable/assets/EntityPicker.RxInhUBX.css"
|
||||
]
|
||||
},
|
||||
"src/routes/projects/[id]/+page.svelte": {
|
||||
"file": "entries/pages/projects/_id_/_page.svelte.js",
|
||||
"name": "entries/pages/projects/_id_/_page.svelte",
|
||||
"src": "src/routes/projects/[id]/+page.svelte",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_index.js",
|
||||
"_exports.js",
|
||||
"_utils.js",
|
||||
"_root.js",
|
||||
"_state.svelte.js",
|
||||
"_index2.js",
|
||||
"_Skeleton.js",
|
||||
"_toast.js"
|
||||
]
|
||||
},
|
||||
"src/routes/projects/[id]/env/+page.svelte": {
|
||||
"file": "entries/pages/projects/_id_/env/_page.svelte.js",
|
||||
"name": "entries/pages/projects/_id_/env/_page.svelte",
|
||||
"src": "src/routes/projects/[id]/env/+page.svelte",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_index.js",
|
||||
"_stores.js",
|
||||
"_toast.js",
|
||||
"_index2.js",
|
||||
"_IconChevronRight.js",
|
||||
"_Skeleton.js"
|
||||
]
|
||||
},
|
||||
"src/routes/projects/[id]/volumes/+page.svelte": {
|
||||
"file": "entries/pages/projects/_id_/volumes/_page.svelte.js",
|
||||
"name": "entries/pages/projects/_id_/volumes/_page.svelte",
|
||||
"src": "src/routes/projects/[id]/volumes/+page.svelte",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_index.js",
|
||||
"_stores.js",
|
||||
"_toast.js",
|
||||
"_index2.js",
|
||||
"_IconChevronRight.js",
|
||||
"_Skeleton.js"
|
||||
]
|
||||
},
|
||||
"src/routes/projects/[id]/volumes/[volId]/browse/+page.svelte": {
|
||||
"file": "entries/pages/projects/_id_/volumes/_volId_/browse/_page.svelte.js",
|
||||
"name": "entries/pages/projects/_id_/volumes/_volId_/browse/_page.svelte",
|
||||
"src": "src/routes/projects/[id]/volumes/[volId]/browse/+page.svelte",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_index.js",
|
||||
"_stores.js",
|
||||
"_toast.js",
|
||||
"_index2.js",
|
||||
"_IconChevronRight.js",
|
||||
"_Skeleton.js"
|
||||
]
|
||||
},
|
||||
"src/routes/projects/[id]/volumes/[volId]/browse/+page.ts": {
|
||||
"file": "entries/pages/projects/_id_/volumes/_volId_/browse/_page.ts.js",
|
||||
"name": "entries/pages/projects/_id_/volumes/_volId_/browse/_page.ts",
|
||||
"src": "src/routes/projects/[id]/volumes/[volId]/browse/+page.ts",
|
||||
"isEntry": true
|
||||
},
|
||||
"src/routes/proxies/+page.svelte": {
|
||||
"file": "entries/pages/proxies/_page.svelte.js",
|
||||
"name": "entries/pages/proxies/_page.svelte",
|
||||
"src": "src/routes/proxies/+page.svelte",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_index.js",
|
||||
"_index2.js",
|
||||
"_IconGlobe.js",
|
||||
"_IconLoader.js"
|
||||
]
|
||||
},
|
||||
"src/routes/proxies/+page.ts": {
|
||||
"file": "entries/pages/proxies/_page.ts.js",
|
||||
"name": "entries/pages/proxies/_page.ts",
|
||||
"src": "src/routes/proxies/+page.ts",
|
||||
"isEntry": true
|
||||
},
|
||||
"src/routes/proxies/[id]/edit/+page.svelte": {
|
||||
"file": "entries/pages/proxies/_id_/edit/_page.svelte.js",
|
||||
"name": "entries/pages/proxies/_id_/edit/_page.svelte",
|
||||
"src": "src/routes/proxies/[id]/edit/+page.svelte",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_index.js",
|
||||
"_exports.js",
|
||||
"_utils.js",
|
||||
"_root.js",
|
||||
"_state.svelte.js",
|
||||
"_index2.js",
|
||||
"_IconGlobe.js",
|
||||
"_IconLoader.js"
|
||||
]
|
||||
},
|
||||
"src/routes/proxies/[id]/edit/+page.ts": {
|
||||
"file": "entries/pages/proxies/_id_/edit/_page.ts.js",
|
||||
"name": "entries/pages/proxies/_id_/edit/_page.ts",
|
||||
"src": "src/routes/proxies/[id]/edit/+page.ts",
|
||||
"isEntry": true
|
||||
},
|
||||
"src/routes/proxies/create/+page.svelte": {
|
||||
"file": "entries/pages/proxies/create/_page.svelte.js",
|
||||
"name": "entries/pages/proxies/create/_page.svelte",
|
||||
"src": "src/routes/proxies/create/+page.svelte",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_index.js",
|
||||
"_exports.js",
|
||||
"_utils.js",
|
||||
"_root.js",
|
||||
"_state.svelte.js",
|
||||
"_index2.js",
|
||||
"_api.js",
|
||||
"_FormField.js",
|
||||
"_IconCheck.js",
|
||||
"_IconX.js",
|
||||
"_IconLoader.js",
|
||||
"_IconGlobe.js"
|
||||
]
|
||||
},
|
||||
"src/routes/proxies/create/+page.ts": {
|
||||
"file": "entries/pages/proxies/create/_page.ts.js",
|
||||
"name": "entries/pages/proxies/create/_page.ts",
|
||||
"src": "src/routes/proxies/create/+page.ts",
|
||||
"isEntry": true
|
||||
},
|
||||
"src/routes/settings/+layout.svelte": {
|
||||
"file": "entries/pages/settings/_layout.svelte.js",
|
||||
"name": "entries/pages/settings/_layout.svelte",
|
||||
"src": "src/routes/settings/+layout.svelte",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_index.js",
|
||||
"_stores.js",
|
||||
"_index2.js",
|
||||
"_IconSettings.js"
|
||||
]
|
||||
},
|
||||
"src/routes/settings/+page.svelte": {
|
||||
"file": "entries/pages/settings/_page.svelte.js",
|
||||
"name": "entries/pages/settings/_page.svelte",
|
||||
"src": "src/routes/settings/+page.svelte",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_index.js",
|
||||
"_EntityPicker.js",
|
||||
"_toast.js",
|
||||
"_index2.js",
|
||||
"_Skeleton.js"
|
||||
]
|
||||
},
|
||||
"src/routes/settings/auth/+page.svelte": {
|
||||
"file": "entries/pages/settings/auth/_page.svelte.js",
|
||||
"name": "entries/pages/settings/auth/_page.svelte",
|
||||
"src": "src/routes/settings/auth/+page.svelte",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_index.js",
|
||||
"_index2.js",
|
||||
"_IconTrash.js",
|
||||
"_IconPlus.js"
|
||||
]
|
||||
},
|
||||
"src/routes/settings/credentials/+page.svelte": {
|
||||
"file": "entries/pages/settings/credentials/_page.svelte.js",
|
||||
"name": "entries/pages/settings/credentials/_page.svelte",
|
||||
"src": "src/routes/settings/credentials/+page.svelte",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_index.js",
|
||||
"_Skeleton.js",
|
||||
"_toast.js",
|
||||
"_index2.js"
|
||||
]
|
||||
},
|
||||
"src/routes/settings/registries/+page.svelte": {
|
||||
"file": "entries/pages/settings/registries/_page.svelte.js",
|
||||
"name": "entries/pages/settings/registries/_page.svelte",
|
||||
"src": "src/routes/settings/registries/+page.svelte",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_index.js",
|
||||
"_Skeleton.js",
|
||||
"_toast.js",
|
||||
"_index2.js",
|
||||
"_IconPlus.js"
|
||||
]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user