Skip to content
This repository was archived by the owner on Jul 3, 2020. It is now read-only.
This repository was archived by the owner on Jul 3, 2020. It is now read-only.

Bind9 #123

@RossComputerGuy

Description

@RossComputerGuy

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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions