This repository was archived by the owner on Jul 3, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 125
This repository was archived by the owner on Jul 3, 2020. It is now read-only.
Bind9 #123
Copy link
Copy link
Open
Description
Hey, I have been working on BasicOS. I thought to add in Bind9. Here is my code:
var runtime = require("runtimejs");
var SDK = require("/SDK/");
var Domains = require("/Config/Bind.json").Domains;
var RECORDS = {
A: 0x0001,
MX: 0x000f,
NS: 0x0002,
CNAME: 0x0005
};
function getRecord(zone) {
switch(zone.type) {
case RECORDS.A:
return RECORDS.A;
case RECORDS.MX:
return RECORDS.MX;
case RECORDS.NS:
return RECORDS.NS;
case RECORDS.CNAME:
return RECORDS.CNAME;
}
}
function getRDATA(data) {
var rdata = "";
switch(getRecord(data.zone)) {
case RECORDS.A:
rdata = data.zone.target;
break;
case RECORDS.CNAME:
rdata = data.zone.name;
break;
case RECORDS.NS:
rdata = data.zone.name;
break;
case RECORDS.MX:
rdata = {
"PREFERENCE": data.zone.priority
"EXCHANGE": data.domain.name
};
break;
}
return rdata;
}
function Answer(data) {
var h;
h = {
"NAME": data.name,
"TYPE": getRecord(data.zone),
"CLASS": 0x0001,
"TTL": data.zone.ttl,
"RDLENGTH": getRDATA(data).length,
"RDATA": getRDATA(data)
};
return h;
}
function Question(headers) {
var h;
for(var i = 0;i < Domains.length;i++) {
if(headers.get("QNAME") == Domains[i].name) {
var Domain = Domains[i];
for(var i = 0;i < Domain.Zones[i];i++) {
if(headers.get("QTYPE") == Domain.Zones[i].type) {
var zone = Domain.Zones[i];
if(headers.get("QCLASS") == 0x0001) {
h = Answer({
domain: Domain,
zone: zone
});
}
break;
}
}
break;
}
}
return h;
}
var server = new SDK.Server(90);
server.onRequest(function(request) {
console.log(request);
var options = {};
var headers = request._headers;
var names = headers._names;
var values = headers._values;
var HEADERS = new Map();
for(var i = 0;i < names.length;i++) {
HEADERS.add(names[i],values[i]);
}
server.createResponse(200,{
},Question(HEADERS));
});
server.open();
If it doesn't work, touch it up and send the new code to me.
NOTE: You have to download my os and make a service.
Links:
Metadata
Metadata
Assignees
Labels
No labels