fix record pre-processing
This commit is contained in:
+12
-4
@@ -3,6 +3,7 @@ const client = new Etcd3({
|
|||||||
hosts: 'http://127.0.0.1:2379',
|
hosts: 'http://127.0.0.1:2379',
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Converts a FQDN to a path usable by CoreDNS
|
||||||
function DomainToCoreDNS(domain) {
|
function DomainToCoreDNS(domain) {
|
||||||
const prefix = "/skydns/";
|
const prefix = "/skydns/";
|
||||||
const parts = domain.split(".");
|
const parts = domain.split(".");
|
||||||
@@ -11,14 +12,19 @@ function DomainToCoreDNS(domain) {
|
|||||||
return prefix + path;
|
return prefix + path;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function GetAllRecords(domain) {
|
// Inverse of DomainToCoreDNS
|
||||||
console.log(`GetAllRecords for ${domain}`);
|
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);
|
const prefix = DomainToCoreDNS(domain);
|
||||||
if (!prefix) throw new Error("Invalid domain");
|
if (!prefix) throw new Error("Invalid domain");
|
||||||
console.log(`Prefix is ${prefix}`);
|
|
||||||
const kvs = await client.getAll().prefix(prefix).strings();
|
const kvs = await client.getAll().prefix(prefix).strings();
|
||||||
console.log(`KVs are ${JSON.stringify(kvs)}`);
|
|
||||||
return kvs;
|
return kvs;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -33,6 +39,8 @@ async function RegisterNewDomain(domain) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
CoreDNSToDomain,
|
||||||
|
|
||||||
GetAllRecords,
|
GetAllRecords,
|
||||||
RegisterNewDomain
|
RegisterNewDomain
|
||||||
}
|
}
|
||||||
+2
-2
@@ -6,7 +6,7 @@ const database = require('../database.js');
|
|||||||
const dbConnection = database.db;
|
const dbConnection = database.db;
|
||||||
const Sequelize = require('sequelize');
|
const Sequelize = require('sequelize');
|
||||||
const pageTitle = 'Domain Manager | Edit DNS';
|
const pageTitle = 'Domain Manager | Edit DNS';
|
||||||
const { GetAllRecords } = require('../coredns_bridge.js');
|
const { GetAllRecords, CoreDNSToDomain } = require('../coredns_bridge.js');
|
||||||
|
|
||||||
// Manage domains
|
// Manage domains
|
||||||
router.get('/dns/edit/:domainId', authMw.AllowIfAuthenticated, async (req, res, next) => {
|
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 = [];
|
let records = [];
|
||||||
|
|
||||||
for(const [key, value] of Object.entries(rawRecords)) {
|
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});
|
res.render('dns', {title: pageTitle, domain: result, dnsRecords: records});
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
<div>
|
<div>
|
||||||
{{#each dnsRecords}}
|
{{#each dnsRecords}}
|
||||||
<p>{{@key}}</p>
|
<p>{{this.domain}}</p>
|
||||||
<p>{{value.host}}</p>
|
<p>{{this.host}}</p>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user