fix record pre-processing

This commit is contained in:
2026-05-14 16:00:59 -04:00
parent b064fdb07c
commit f160d661f0
3 changed files with 16 additions and 8 deletions
+12 -4
View File
@@ -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
View File
@@ -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 -2
View File
@@ -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>