still working on it
This commit is contained in:
parent
16dd91ace0
commit
12cb2887fa
|
@ -2,7 +2,27 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
exports.DNS_PACKER_TYPE_SOA = function (ab, dv, total, record) {
|
exports.DNS_PACKER_TYPE_SOA = function (ab, dv, total, record) {
|
||||||
|
if(!record.sn){
|
||||||
|
throw new Error("no serial number for SOA record");
|
||||||
|
}
|
||||||
|
if(!record.ref){
|
||||||
|
throw new Error("no serial number for SOA record");
|
||||||
|
}
|
||||||
|
if(!record.ret){
|
||||||
|
throw new Error("no serial number for SOA record");
|
||||||
|
}
|
||||||
|
if(!record.ex){
|
||||||
|
throw new Error("no serial number for SOA record");
|
||||||
|
}
|
||||||
|
if(!record.nx){
|
||||||
|
throw new Error("no serial number for SOA record");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return total;
|
return total;
|
||||||
};
|
};
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
(function (exports) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
// Record type is just any text.
|
||||||
|
|
||||||
|
exports.DNS_PACKER_TYPE_TXT = function (ab, dv, total, record) {
|
||||||
|
// if (!record.data){
|
||||||
|
// throw new Error("no data for TXT record");
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
// console.log("record data is: " + record.data);
|
||||||
|
|
||||||
|
// var txtLen = 0;
|
||||||
|
// var rdLenIndex = total;
|
||||||
|
// total += 2;
|
||||||
|
|
||||||
|
// //RDATA
|
||||||
|
// // a sequence of labels
|
||||||
|
// record.data.split('.').forEach(function (label) {
|
||||||
|
// txtLen += 1 + label.length;
|
||||||
|
|
||||||
|
// dv.setUint8(total, label.length, false);
|
||||||
|
// total += 1;
|
||||||
|
|
||||||
|
// label.split('').forEach(function (ch) {
|
||||||
|
// dv.setUint8(total, ch.charCodeAt(0), false);
|
||||||
|
// total += 1;
|
||||||
|
// });
|
||||||
|
// });
|
||||||
|
|
||||||
|
// // RDLENGTH
|
||||||
|
// dv.setUint16(rdLenIndex, record.data.length + 1, false);
|
||||||
|
|
||||||
|
// return total;
|
||||||
|
};
|
||||||
|
|
||||||
|
}('undefined' !== typeof window ? window : exports));
|
|
@ -1,7 +1,7 @@
|
||||||
(function (exports) {
|
(function (exports) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
// TODO. Not yet implemented
|
// TODO. Not yet implemented. Do we need to include the name server and email address record properties???
|
||||||
|
|
||||||
// Value Meaning/Use
|
// Value Meaning/Use
|
||||||
// Primary NS Variable length. The name of the Primary Master for the domain. May be a label, pointer, or any combination
|
// Primary NS Variable length. The name of the Primary Master for the domain. May be a label, pointer, or any combination
|
||||||
|
@ -12,11 +12,33 @@
|
||||||
// Expiration Limit Unsigned 32-bit integer
|
// Expiration Limit Unsigned 32-bit integer
|
||||||
// Minimum TTL Unsigned 32-bit integer
|
// Minimum TTL Unsigned 32-bit integer
|
||||||
|
|
||||||
|
var unpackLabels = exports.DNS_UNPACK_LABELS || require('../dns.unpack-labels.js').DNS_UNPACK_LABELS;
|
||||||
|
|
||||||
exports.DNS_PARSER_TYPE_SOA = function (ab, packet, record) {
|
exports.DNS_PARSER_TYPE_SOA = function (ab, packet, record) {
|
||||||
|
|
||||||
var rdataAb = ab.slice(record.rdstart, record.rdstart + record.rdlength);
|
var rdataAb = ab.slice(record.rdstart, record.rdstart + record.rdlength);
|
||||||
var dv = new DataView(rdataAb)
|
var dv = new DataView(rdataAb);
|
||||||
|
var cpcount = unpackLabels(new Uint8Array(ab), record.rdstart, { byteLength: 0, cpcount: 0, labels: [], name: '' }).cpcount;
|
||||||
|
var offset = unpackLabels(new Uint8Array(ab), record.rdstart, { byteLength: 0, cpcount: 0, labels: [], name: '' }).byteLength;
|
||||||
|
|
||||||
|
|
||||||
|
for(var i = 0; i < dv.byteLength;i++){
|
||||||
|
|
||||||
|
console.log(parseInt(dv.getUint8(i), 10).toString(16));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Primary NS
|
||||||
|
//record.name_server = unpackLabels(new Uint8Array(ab), record.rdstart, { byteLength: 0, cpcount: 0, labels: [], name: '' }).name;
|
||||||
|
// var offset = unpackLabels(new Uint8Array(ab), record.rdstart, { byteLength: 0, cpcount: 0, labels: [], name: '' }).byteLength;
|
||||||
|
// Admin MB. This email address is always preceeded by 6 Bytes of the name_server data and email_addr length.
|
||||||
|
// ie: ns1.example.com, where ns1 is 3 bytes, example.com represented by 2 bytes (c0 0c - compression pointer) and then
|
||||||
|
// 1 more byte representing the email_addr length.
|
||||||
|
// TODO: email_addr probably shouldn't be parsed this way. The email_addr length byte is probably there to parse this in a more robust way
|
||||||
|
// we just have to figure that out
|
||||||
|
|
||||||
|
//record.email_addr = unpackLabels(new Uint8Array(ab), record.rdstart+offset, { byteLength: 0, cpcount: 0, labels: [], name: '' }).name;
|
||||||
|
|
||||||
|
|
||||||
// Serial Number
|
// Serial Number
|
||||||
record.sn = dv.getUint32(dv.byteLength - 20);
|
record.sn = dv.getUint32(dv.byteLength - 20);
|
||||||
// Refresh Interval
|
// Refresh Interval
|
||||||
|
|
Binary file not shown.
|
@ -1,203 +0,0 @@
|
||||||
{
|
|
||||||
"header": {
|
|
||||||
"id": 23924,
|
|
||||||
"qr": 1,
|
|
||||||
"opcode": 0,
|
|
||||||
"aa": 0,
|
|
||||||
"tc": 0,
|
|
||||||
"rd": 1,
|
|
||||||
"ra": 1,
|
|
||||||
"res1": 0,
|
|
||||||
"res2": 0,
|
|
||||||
"res3": 0,
|
|
||||||
"rcode": 0
|
|
||||||
},
|
|
||||||
"qdcount": 1,
|
|
||||||
"ancount": 1,
|
|
||||||
"nscount": 4,
|
|
||||||
"arcount": 4,
|
|
||||||
"question": [
|
|
||||||
{
|
|
||||||
"name": "google.com",
|
|
||||||
"type": 6,
|
|
||||||
"typeName": "SOA",
|
|
||||||
"class": 1,
|
|
||||||
"className": "IN",
|
|
||||||
"byteLength": 16,
|
|
||||||
"labels": [
|
|
||||||
"google",
|
|
||||||
"com"
|
|
||||||
],
|
|
||||||
"cpcount": 0
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"answer": [
|
|
||||||
{
|
|
||||||
"name": "google.com",
|
|
||||||
"type": 6,
|
|
||||||
"typeName": "SOA",
|
|
||||||
"class": 1,
|
|
||||||
"className": "IN",
|
|
||||||
"byteLength": 50,
|
|
||||||
"labels": [
|
|
||||||
"google",
|
|
||||||
"com"
|
|
||||||
],
|
|
||||||
"cpcount": 1,
|
|
||||||
"rdstart": 40,
|
|
||||||
"rdlength": 38,
|
|
||||||
"ttl": 60,
|
|
||||||
"sn": 149208434,
|
|
||||||
"ref": 900,
|
|
||||||
"ret": 900,
|
|
||||||
"ex": 1800,
|
|
||||||
"nx": 60
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"authority": [
|
|
||||||
{
|
|
||||||
"name": "google.com",
|
|
||||||
"type": 2,
|
|
||||||
"typeName": "NS",
|
|
||||||
"class": 1,
|
|
||||||
"className": "IN",
|
|
||||||
"byteLength": 18,
|
|
||||||
"labels": [
|
|
||||||
"google",
|
|
||||||
"com"
|
|
||||||
],
|
|
||||||
"cpcount": 1,
|
|
||||||
"rdstart": 90,
|
|
||||||
"rdlength": 6,
|
|
||||||
"ttl": 57847,
|
|
||||||
"data": "ns2.google.com"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "google.com",
|
|
||||||
"type": 2,
|
|
||||||
"typeName": "NS",
|
|
||||||
"class": 1,
|
|
||||||
"className": "IN",
|
|
||||||
"byteLength": 14,
|
|
||||||
"labels": [
|
|
||||||
"google",
|
|
||||||
"com"
|
|
||||||
],
|
|
||||||
"cpcount": 1,
|
|
||||||
"rdstart": 108,
|
|
||||||
"rdlength": 2,
|
|
||||||
"ttl": 57847,
|
|
||||||
"data": "ns4.google.com"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "google.com",
|
|
||||||
"type": 2,
|
|
||||||
"typeName": "NS",
|
|
||||||
"class": 1,
|
|
||||||
"className": "IN",
|
|
||||||
"byteLength": 18,
|
|
||||||
"labels": [
|
|
||||||
"google",
|
|
||||||
"com"
|
|
||||||
],
|
|
||||||
"cpcount": 1,
|
|
||||||
"rdstart": 122,
|
|
||||||
"rdlength": 6,
|
|
||||||
"ttl": 57847,
|
|
||||||
"data": "ns1.google.com"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "google.com",
|
|
||||||
"type": 2,
|
|
||||||
"typeName": "NS",
|
|
||||||
"class": 1,
|
|
||||||
"className": "IN",
|
|
||||||
"byteLength": 18,
|
|
||||||
"labels": [
|
|
||||||
"google",
|
|
||||||
"com"
|
|
||||||
],
|
|
||||||
"cpcount": 1,
|
|
||||||
"rdstart": 140,
|
|
||||||
"rdlength": 6,
|
|
||||||
"ttl": 57847,
|
|
||||||
"data": "ns3.google.com"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"edns_options": [],
|
|
||||||
"additional": [
|
|
||||||
{
|
|
||||||
"name": "ns1.google.com",
|
|
||||||
"type": 1,
|
|
||||||
"typeName": "A",
|
|
||||||
"class": 1,
|
|
||||||
"className": "IN",
|
|
||||||
"byteLength": 16,
|
|
||||||
"labels": [
|
|
||||||
"ns1",
|
|
||||||
"google",
|
|
||||||
"com"
|
|
||||||
],
|
|
||||||
"cpcount": 2,
|
|
||||||
"rdstart": 158,
|
|
||||||
"rdlength": 4,
|
|
||||||
"ttl": 57850,
|
|
||||||
"address": "216.239.32.10"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "ns2.google.com",
|
|
||||||
"type": 1,
|
|
||||||
"typeName": "A",
|
|
||||||
"class": 1,
|
|
||||||
"className": "IN",
|
|
||||||
"byteLength": 16,
|
|
||||||
"labels": [
|
|
||||||
"ns2",
|
|
||||||
"google",
|
|
||||||
"com"
|
|
||||||
],
|
|
||||||
"cpcount": 2,
|
|
||||||
"rdstart": 174,
|
|
||||||
"rdlength": 4,
|
|
||||||
"ttl": 57839,
|
|
||||||
"address": "216.239.34.10"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "ns3.google.com",
|
|
||||||
"type": 1,
|
|
||||||
"typeName": "A",
|
|
||||||
"class": 1,
|
|
||||||
"className": "IN",
|
|
||||||
"byteLength": 16,
|
|
||||||
"labels": [
|
|
||||||
"ns3",
|
|
||||||
"google",
|
|
||||||
"com"
|
|
||||||
],
|
|
||||||
"cpcount": 2,
|
|
||||||
"rdstart": 190,
|
|
||||||
"rdlength": 4,
|
|
||||||
"ttl": 57861,
|
|
||||||
"address": "216.239.36.10"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "ns4.google.com",
|
|
||||||
"type": 1,
|
|
||||||
"typeName": "A",
|
|
||||||
"class": 1,
|
|
||||||
"className": "IN",
|
|
||||||
"byteLength": 16,
|
|
||||||
"labels": [
|
|
||||||
"ns4",
|
|
||||||
"google",
|
|
||||||
"com"
|
|
||||||
],
|
|
||||||
"cpcount": 2,
|
|
||||||
"rdstart": 206,
|
|
||||||
"rdlength": 4,
|
|
||||||
"ttl": 57850,
|
|
||||||
"address": "216.239.38.10"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"byteLength": 210
|
|
||||||
}
|
|
Binary file not shown.
|
@ -1,19 +0,0 @@
|
||||||
{
|
|
||||||
"header": {
|
|
||||||
"id": 23924,
|
|
||||||
"qr": 0,
|
|
||||||
"opcode": 0,
|
|
||||||
"aa": 0,
|
|
||||||
"tc": 0,
|
|
||||||
"rd": 1,
|
|
||||||
"ra": 0,
|
|
||||||
"rcode": 0
|
|
||||||
},
|
|
||||||
"question": [
|
|
||||||
{
|
|
||||||
"name": "google.com",
|
|
||||||
"typeName": "SOA",
|
|
||||||
"className": "IN"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
Loading…
Reference in New Issue