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:
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
.entity-picker-backdrop.svelte-1bxz98v{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:var(--surface-overlay);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:fade-in var(--transition-normal) forwards}.entity-picker-container.svelte-1bxz98v{position:fixed;top:0;right:0;bottom:0;left:0;z-index:61;display:flex;align-items:flex-start;justify-content:center;padding-top:12vh;pointer-events:none}.entity-picker-modal.svelte-1bxz98v{pointer-events:auto;width:90vw;max-width:500px;background:var(--surface-card);border:1px solid var(--border-primary);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);overflow:hidden;animation:scale-in var(--transition-normal) forwards;display:flex;flex-direction:column}.entity-picker-header.svelte-1bxz98v{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border-secondary)}.entity-picker-title.svelte-1bxz98v{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--text-primary);margin:0}.entity-picker-close.svelte-1bxz98v{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:var(--radius-md);background:transparent;color:var(--text-tertiary);cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.entity-picker-close.svelte-1bxz98v:hover{background:var(--surface-card-hover);color:var(--text-primary)}.entity-picker-search.svelte-1bxz98v{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border-secondary)}.entity-picker-search-icon{flex-shrink:0;color:var(--text-tertiary)}.entity-picker-search-input.svelte-1bxz98v{flex:1;border:none;outline:none;background:transparent;font-size:var(--text-sm);color:var(--text-primary);font-family:var(--font-family-sans)}.entity-picker-search-input.svelte-1bxz98v::placeholder{color:var(--text-tertiary)}.entity-picker-close-inline.svelte-1bxz98v{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:24px;height:24px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-tertiary);cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.entity-picker-close-inline.svelte-1bxz98v:hover{background:var(--surface-card-hover);color:var(--text-primary)}.entity-picker-list.svelte-1bxz98v{overflow-y:auto;max-height:60vh;padding:var(--space-1) 0}.entity-picker-empty.svelte-1bxz98v{padding:var(--space-8) var(--space-4);text-align:center;font-size:var(--text-sm);color:var(--text-tertiary)}.entity-picker-group-header.svelte-1bxz98v{padding:var(--space-2) var(--space-4) var(--space-1);font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em}.entity-picker-item.svelte-1bxz98v{display:flex;align-items:center;gap:var(--space-3);width:100%;padding:var(--space-2) var(--space-4);border:none;background:transparent;cursor:pointer;text-align:left;font-family:var(--font-family-sans);transition:background var(--transition-fast);border-left:3px solid transparent}.entity-picker-item--highlighted.svelte-1bxz98v{background:var(--surface-card-hover)}.entity-picker-item--current.svelte-1bxz98v{border-left-color:var(--color-brand-500)}.entity-picker-item-icon.svelte-1bxz98v{flex-shrink:0;width:20px;height:20px;display:flex;align-items:center;justify-content:center;color:var(--text-tertiary)}.entity-picker-item-content.svelte-1bxz98v{display:flex;flex-direction:column;gap:1px;min-width:0}.entity-picker-item-label.svelte-1bxz98v{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.entity-picker-item-description.svelte-1bxz98v{font-size:var(--text-xs);color:var(--text-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.entity-picker-item--disabled.svelte-1bxz98v{opacity:.45;cursor:default;pointer-events:none}.entity-picker-item-hint.svelte-1bxz98v{font-size:var(--text-xs);color:var(--text-tertiary);font-style:italic;white-space:nowrap}
|
||||
Reference in New Issue
Block a user