dns-suite.js/dns.type.mx.js

78 lines
1.8 KiB
JavaScript

(function (exports) {
'use strict';
// TODO. Not yet implemented
// Value: Preference
// Meaning/Use: Unsigned 16-bit integer
//-------------------------------------
// Value: Mail Exchanger
// Meaning/Use: The name host name that provides the service.
// May be a label, pointer or any combination
// ab is arrayBuffer, packet is Object, Record is Object
var unpackLabels = exports.DNS_UNPACK_LABELS || require('./dns.unpack-labels.js').DNS_UNPACK_LABELS;
exports.DNS_TYPE_MX = function (ab, packet, record) {
var rdataAb = ab.slice(record.rdstart, record.rdstart + record.rdlength)
var dv = new DataView(rdataAb);
var data = '';
var s = {
priority: ''
, exchange: ''
};
var temp = ''
var stuff = '';
console.log("dataview length: " + dv.byteLength);
for (var i = 0; i < dv.byteLength; i += 1) {
console.log(dv.getUint8(i, false.toString(16)));
//Priority is the first two bytes
if (i < 2){
s.priority += dv.getUint8(i, false).toString(10);
// take off an padded zeros
if (s.priority.substr(0, 1) === '0') {
s.priority = s.priority.slice(1, s.priority.length);
}
} else {
data = dv.getUint8(i, false);
temp = String.fromCharCode(data);
console.log("data at index " + i + ":" + temp);
temp = temp.match(/^[a-zA-Z0-9._-]+$/);
if (temp === null){
}else{
s.exchange += temp;
}
}
}
// s.exchange = unpackLabels(new Uint8Array(ab), record.rdstart, { byteLength: 0, cpcount: 0, labels: [], name: '' }).labels;
return s;
};
}('undefined' !== typeof window ? window : exports));