diff --git a/coredns_bridge.js b/coredns_bridge.js index 896a446..0b69bea 100644 --- a/coredns_bridge.js +++ b/coredns_bridge.js @@ -3,6 +3,7 @@ const client = new Etcd3({ hosts: 'http://127.0.0.1:2379', }); +// Converts a FQDN to a path usable by CoreDNS function DomainToCoreDNS(domain) { const prefix = "/skydns/"; const parts = domain.split("."); @@ -11,14 +12,19 @@ function DomainToCoreDNS(domain) { return prefix + path; } -async function GetAllRecords(domain) { - console.log(`GetAllRecords for ${domain}`); +// Inverse of DomainToCoreDNS +function CoreDNSToDomain(corednsDomain) { + corednsDomain = corednsDomain.substring(8); + const parts = domain.split("/"); + if (parts.length < 2) return false; + const path = parts.reverse().join("."); + return path; +} +async function GetAllRecords(domain) { const prefix = DomainToCoreDNS(domain); if (!prefix) throw new Error("Invalid domain"); - console.log(`Prefix is ${prefix}`); const kvs = await client.getAll().prefix(prefix).strings(); - console.log(`KVs are ${JSON.stringify(kvs)}`); return kvs; } @@ -33,6 +39,8 @@ async function RegisterNewDomain(domain) { } module.exports = { + CoreDNSToDomain, + GetAllRecords, RegisterNewDomain } \ No newline at end of file diff --git a/routes/dns.js b/routes/dns.js index ae6e8fa..d6ee670 100644 --- a/routes/dns.js +++ b/routes/dns.js @@ -6,7 +6,7 @@ const database = require('../database.js'); const dbConnection = database.db; const Sequelize = require('sequelize'); const pageTitle = 'Domain Manager | Edit DNS'; -const { GetAllRecords } = require('../coredns_bridge.js'); +const { GetAllRecords, CoreDNSToDomain } = require('../coredns_bridge.js'); // Manage domains router.get('/dns/edit/:domainId', authMw.AllowIfAuthenticated, async (req, res, next) => { @@ -29,7 +29,7 @@ router.get('/dns/edit/:domainId', authMw.AllowIfAuthenticated, async (req, res, let records = []; for(const [key, value] of Object.entries(rawRecords)) { - records.push({key: value}); + records.push({domain: CoreDNSToDomain(key), host: value.host}); } res.render('dns', {title: pageTitle, domain: result, dnsRecords: records}); diff --git a/views/dns.handlebars b/views/dns.handlebars index f982b8f..13d3b1f 100644 --- a/views/dns.handlebars +++ b/views/dns.handlebars @@ -2,7 +2,7 @@
{{#each dnsRecords}} -

{{@key}}

-

{{value.host}}

+

{{this.domain}}

+

{{this.host}}

{{/each}}