WIP show ADNS data
This commit is contained in:
parent
96dd311fc5
commit
b2ced1a492
54
lib/httpd.js
54
lib/httpd.js
|
@ -1,6 +1,6 @@
|
|||
'use strict';
|
||||
|
||||
module.exports.create = function (cli, engine, dnsd) {
|
||||
module.exports.create = function (cli, engine/*, dnsd*/) {
|
||||
|
||||
function runHttp() {
|
||||
var path = require('path');
|
||||
|
@ -10,16 +10,62 @@ module.exports.create = function (cli, engine, dnsd) {
|
|||
|
||||
app.use('/', express.static(path.join(__dirname, 'public')));
|
||||
app.get('/api/peers', function (req, res) {
|
||||
res.send({ nameservers: [] });
|
||||
engine.peers.all(function (err, peers) {
|
||||
res.send({ peers: peers });
|
||||
});
|
||||
});
|
||||
app.get('/api/zones', function (req, res) {
|
||||
engine.zones.all(function (err, zones) {
|
||||
res.send({ zones: zones });
|
||||
});
|
||||
});
|
||||
app.get('/api/records/:zone', function (req, res) {
|
||||
function mapRecord(r) {
|
||||
return {
|
||||
id: r.id
|
||||
, zone: r.zone
|
||||
, name: r.name
|
||||
, tld: r.tld
|
||||
, type: r.type
|
||||
, class: r.class
|
||||
, ttl: r.ttl
|
||||
, data: r.data
|
||||
, address: r.address
|
||||
, exchange: r.exchange
|
||||
, priority: r.priority
|
||||
, value: r.value
|
||||
, aname: r.aname
|
||||
, flag: r.flag
|
||||
, tag: r.tag
|
||||
, weight: r.weight
|
||||
, port: r.port
|
||||
, target: r.target
|
||||
};
|
||||
}
|
||||
app.get('/api/zones/:zone/records', function (req, res) {
|
||||
engine.records.all(function (err, records) {
|
||||
res.send({ records: records });
|
||||
res.send({ records: records.filter(function (r) {
|
||||
return r.zone === req.params.zone;
|
||||
}).map(mapRecord) });
|
||||
});
|
||||
});
|
||||
app.get('/api/records', function (req, res) {
|
||||
engine.records.all(function (err, records) {
|
||||
res.send({ records: records.map(mapRecord) });
|
||||
});
|
||||
});
|
||||
app.get('/api/records/:name', function (req, res) {
|
||||
engine.records.all(function (err, records) {
|
||||
res.send({ records: records.filter(function (r) {
|
||||
if (r.name === req.params.name) {
|
||||
return true;
|
||||
}
|
||||
|
||||
var parts = req.params.name.split('.');
|
||||
parts.shift();
|
||||
if ('*.' + parts.join('.') === r.name) {
|
||||
return true;
|
||||
}
|
||||
}).map(mapRecord) });
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -1,3 +1,20 @@
|
|||
<p><a href="/api/peers">/api/peers</p>
|
||||
<p><a href="/api/zones">/api/zones</p>
|
||||
<p><a href="/api/records">/api/records/:zone</p>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>ADNS</title>
|
||||
</head>
|
||||
<body>
|
||||
<p><a href="/api/peers">/api/peers</a></p>
|
||||
<p><a href="/api/zones">/api/zones</a></p>
|
||||
<p><a data-href="/api/zones/:zone/records" class="js-zone">/api/zones/<code
|
||||
class="js-zone">:zone</code>/records</a>
|
||||
<input class="js-zone"
|
||||
type="text" placeholder="example.com" /></p>
|
||||
<p><a href="/api/records">/api/records</a></p>
|
||||
<p><a data-href="/api/records/:name" class="js-name">/api/records/<code class="js-name">:name</code></a>
|
||||
<input class="js-name"
|
||||
type="text" placeholder="example.com"/></p>
|
||||
|
||||
<script src="/js/app.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
(function () {
|
||||
'use strict';
|
||||
|
||||
function $qs(qs) {
|
||||
return document.querySelector(qs);
|
||||
}
|
||||
|
||||
document.body.addEventListener('keyup', function (ev) {
|
||||
console.log('ev.target.tagName:');
|
||||
console.log(ev.target.tagName);
|
||||
console.log('/\\bjs-zone\\b/.test(ev.target.className):');
|
||||
console.log(/\bjs-zone\b/.test(ev.target.className));
|
||||
if ('INPUT' === ev.target.tagName && /\bjs-zone\b/.test(ev.target.className)) {
|
||||
$qs('code.js-zone').innerHTML = ev.target.value || ':zone';
|
||||
// $qs('a.js-zone').setAttribute('data-href', ...)
|
||||
$qs('a.js-zone').href =
|
||||
$qs('a.js-zone').dataset.href.replace(/:zone/, ev.target.value || ':zone');
|
||||
return;
|
||||
}
|
||||
if ('INPUT' === ev.target.tagName && /\bjs-name\b/.test(ev.target.className)) {
|
||||
$qs('code.js-name').innerHTML = ev.target.value || ':name';
|
||||
$qs('a.js-name').href =
|
||||
$qs('a.js-name').dataset.href.replace(/:name/, ev.target.value || ':name');
|
||||
return;
|
||||
}
|
||||
});
|
||||
|
||||
}());
|
|
@ -7,6 +7,15 @@ module.exports.create = function (opts) {
|
|||
var db = require(opts.filepath);
|
||||
|
||||
engine.primaryNameservers = db.primaryNameservers;
|
||||
engine.peers = {
|
||||
all: function (cb) {
|
||||
process.nextTick(function () {
|
||||
cb(null, db.primaryNameservers.map(function (ns) {
|
||||
return { name: ns };
|
||||
}));
|
||||
});
|
||||
}
|
||||
};
|
||||
engine.zones = {
|
||||
all: function (cb) {
|
||||
process.nextTick(function () {
|
||||
|
|
Loading…
Reference in New Issue