Files
NetDomainManager/routes/dns.js
T

51 lines
1.6 KiB
JavaScript

const express = require('express');
const router = express.Router();
const domainValidator = require('../validators/domain');
const authMw = require('../session');
const database = require('../database.js');
const dbConnection = database.db;
const Sequelize = require('sequelize');
const pageTitle = 'Domain Manager | Edit DNS';
const { GetAllRecords, CoreDNSToDomain } = require('../coredns_bridge.js');
const { capitalizeFirstLetter } = require('../helpers.js');
// Manage domains
router.get('/dns/edit/:domainId', authMw.AllowIfAuthenticated, async (req, res, next) => {
const result = await dbConnection.transaction(async(t) => {
const ownedDomain = await database.models.RegisteredDomain.findOne({
where: {
id: req.params.domainId,
owner: req.session.userId
}
}, {transaction: t});
return ownedDomain;
});
if(!result)
return next();
const fullDomain = result.domain + "." + result.tld;
const rawRecords = await GetAllRecords(fullDomain);
let records = [];
let recordHeaders = [];
for(const [key, value] of Object.entries(rawRecords)) {
let parsedVal = JSON.parse(value);
let finalRecord = {};
for(const [key, value] of Object.entries(parsedVal)) {
if(!recordHeaders.includes(key)) {
recordHeaders.push(capitalizeFirstLetter(key));
}
finalRecord[key] = value;
}
records.push(finalRecord);
}
res.render('dns', {title: pageTitle, domain: result, dnsRecords: records, dnsRecordsHeaders: recordHeaders});
});
module.exports = router;