diff --git a/src/components/domains/NsRow.svelte b/src/components/domains/NsRow.svelte index 0c4c365..06c2aa8 100644 --- a/src/components/domains/NsRow.svelte +++ b/src/components/domains/NsRow.svelte @@ -17,6 +17,7 @@ }; let editPopup: boolean = false; + export let locked: boolean = false; function save() { value.update(editItem); @@ -28,14 +29,16 @@ {value.data.Ns} {value.data.Hdr.Ttl} - { - editItem = JSON.parse(JSON.stringify(value.data)); - editPopup = true; - }} - remove={() => value.remove()} - /> + {#if !locked} + { + editItem = JSON.parse(JSON.stringify(value.data)); + editPopup = true; + }} + remove={() => value.remove()} + /> + {/if} diff --git a/src/components/domains/SoaRow.svelte b/src/components/domains/SoaRow.svelte index e2d74e6..84e9c1d 100644 --- a/src/components/domains/SoaRow.svelte +++ b/src/components/domains/SoaRow.svelte @@ -22,6 +22,7 @@ }; let editPopup: boolean = false; + export let locked: boolean = false; function save() { value.update(editItem); @@ -36,14 +37,16 @@ {value.data.Retry} {value.data.Expire} - { - editItem = JSON.parse(JSON.stringify(value.data)); - editPopup = true; - }} - remove={() => value.remove()} - /> + {#if !locked} + { + editItem = JSON.parse(JSON.stringify(value.data)); + editPopup = true; + }} + remove={() => value.remove()} + /> + {/if}
Name
diff --git a/src/views/DomainsView.svelte b/src/views/DomainsView.svelte index 9b55bcc..3f4e02b 100644 --- a/src/views/DomainsView.svelte +++ b/src/views/DomainsView.svelte @@ -49,6 +49,7 @@ import CnameCreate from "../components/create-domains/CnameCreate.svelte"; import CaaCreate from "../components/create-domains/CaaCreate.svelte"; import TxtCreate from "../components/create-domains/TxtCreate.svelte"; + import PromiseTable from "../components/PromiseTable.svelte"; const apiAzalea = import.meta.env.VITE_API_AZALEA; @@ -89,39 +90,31 @@ return domain + "."; } - let soaRecords: SoaRecord[] = [ - { - Hdr: { - Name: "example.com.", - Rrtype: DnsTypeSOA, - Class: 1, - Ttl: 300, - }, - Ns: "ns1.example.com.", - Mbox: "postmaster.example.com.", - Serial: 0, - Refresh: 0, - Retry: 0, - Expire: 0, - Minttl: 0, - }, - ]; - let domainTitle: string = getTitleDomain(soaRecords[0].Hdr.Name); - let zoneFileUrl: string = `${import.meta.env.VITE_API_AZALEA}/domains/${domainTitle}/zone-file`; + let domainTitle: string = ""; + $: (domainTitle = table.rows.length === 0 ? "Unknown" : getTitleDomain(table.rows[0].data.Hdr.Name)), $table; + let zoneFileUrl: string; + zoneFileUrl = domainTitle ? `${import.meta.env.VITE_API_AZALEA}/domains/${domainTitle}/zone-file` : ""; let recordTypes = [ { name: "SOA", headers: ["Primary Domain", "Email", "Default TTL", "Refresh Rate", "Retry Rate", "Expire Time"], + locked: true, filter: isSoaRecord, render: SoaRow, create: null, save: null, empty: null, + convert: (t: SoaRecord): ApiRecordFormat => ({ + name: t.Hdr.Name, + type: t.Hdr.Rrtype, + value: "", + }), }, { name: "NS", headers: ["Subdomain", "Name Server", "TTL"], + locked: true, filter: isNsRecord, render: NsRow, create: NsCreate, @@ -143,6 +136,7 @@ { name: "MX", headers: ["Mail Server", "Preference", "Subdomain", "TTL"], + locked: false, filter: isMxRecord, render: MxRow, create: MxCreate, @@ -168,6 +162,7 @@ { name: "A/AAAA", headers: ["Hostname", "IP Address", "TTL"], + locked: false, filter: (t: UnknownRecord) => isARecord(t) || isAaaaRecord(t), render: ARow, create: ACreate, @@ -190,6 +185,7 @@ { name: "CNAME", headers: ["Hostname", "Aliases to", "TTL"], + locked: false, filter: isCnameRecord, render: CnameRow, create: CnameCreate, @@ -211,6 +207,7 @@ { name: "TXT", headers: ["Hostname", "Value", "TTL"], + locked: false, filter: isTxtRecord, render: TxtRow, create: TxtCreate, @@ -232,6 +229,7 @@ { name: "SRV", headers: ["Name", "Priority", "Weight", "Port", "Target", "TTL"], + locked: false, filter: isSrvRecord, render: SrvRow, create: null, @@ -261,6 +259,7 @@ { name: "CAA", headers: ["Name", "Tag", "Value", "TTL"], + locked: false, filter: isCaaRecord, render: CaaRow, create: CaaCreate, @@ -287,12 +286,14 @@ }, ]; + recordTypes[1].empty = null; + function toAny(a: any) { return a as any; } -{#if soaRecords.length >= 1} +{#if domainTitle}

Domains / {domainTitle}

Download DNS Zone File @@ -321,7 +322,7 @@ {/if} - + {/each}