diff --git a/lib/request.d.ts b/lib/request.d.ts index 74f118f..47ec901 100644 --- a/lib/request.d.ts +++ b/lib/request.d.ts @@ -90,6 +90,7 @@ export declare enum QueryTypes { */ ANY = 255, } +export declare function SerializeName(name: string): Buffer; export declare class Request implements Message { private sendCallback; _header: MessageHeader; @@ -107,7 +108,6 @@ export declare class Request implements Message { private serializeHeader(); private serializeQuestion(question); private serializeResourceRecord(record); - private serializeName(name); } export declare class RecourceRecord implements MessageRecourceRecord { NAME: string; diff --git a/lib/request.js b/lib/request.js index d2dda92..ebd07f3 100644 --- a/lib/request.js +++ b/lib/request.js @@ -140,6 +140,28 @@ function parseQuestions(count, packet) { length: count }).parse(packet).questions; } +function SerializeName(name) { + let length = 0; + let parts = name.split("."); + parts.forEach(e => { + // Length of part and byte that holds the length information + if (e.length > MAX_LABEL_SIZE) + throw new Error("Label to large"); + length += e.length + 1; + }); + length += 1; //Adding last 0 length octet + let data = Buffer.alloc(length); + let offset = 0; + parts.forEach(e => { + data.writeUInt8(e.length, offset); + offset++; + data.write(e, offset, e.length); + offset += e.length; + }); + data.writeUInt8(0, offset); + return data; +} +exports.SerializeName = SerializeName; class Request { constructor(packet, sendCallback) { this.sendCallback = sendCallback; @@ -232,7 +254,7 @@ class Request { return data; } serializeQuestion(question) { - let qname = this.serializeName(question.QNAME); + let qname = SerializeName(question.QNAME); let data = Buffer.alloc(qname.length + 4); qname.copy(data, 0, 0, qname.length); let offset = qname.length; @@ -243,7 +265,7 @@ class Request { } serializeResourceRecord(record) { // TODO: Implement compression - let name = this.serializeName(record.NAME); + let name = SerializeName(record.NAME); let data = Buffer.alloc(name.length + 10 + record.RDLENGTH); // For TYPE, CLASS, TTL, RLENGTH name.copy(data, 0, 0, name.length); let offset = name.length; @@ -258,27 +280,6 @@ class Request { record.RDATA.copy(data, offset, 0, record.RDLENGTH); return data; } - serializeName(name) { - let length = 0; - let parts = name.split("."); - parts.forEach(e => { - // Length of part and byte that holds the length information - if (e.length > MAX_LABEL_SIZE) - throw new Error("Label to large"); - length += e.length + 1; - }); - length += 1; //Adding last 0 length octet - let data = Buffer.alloc(length); - let offset = 0; - parts.forEach(e => { - data.writeUInt8(e.length, offset); - offset++; - data.write(e, offset, e.length); - offset += e.length; - }); - data.writeUInt8(0, offset); - return data; - } } exports.Request = Request; class RecourceRecord { diff --git a/lib/request.js.map b/lib/request.js.map index 319bed1..c202133 100644 --- a/lib/request.js.map +++ b/lib/request.js.map @@ -1 +1 @@ -{"version":3,"file":"request.js","sourceRoot":"","sources":["../src/request.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"request.js","sourceRoot":"","sources":["../src/request.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index b3e3e1e..22ba47b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nodename-core", - "version": "0.1.6", + "version": "0.1.7", "main": "lib/listener.js", "types": "lib/listener.d.ts", "author": "Fabian Stamm ", diff --git a/src/request.ts b/src/request.ts index 6339b70..c60319a 100644 --- a/src/request.ts +++ b/src/request.ts @@ -165,6 +165,28 @@ function parseQuestions(count: number, packet: Buffer): MessageQuestion[] { }).parse(packet).questions; } +export function SerializeName(name: string) { + let length = 0; + let parts = name.split("."); + parts.forEach(e => { + // Length of part and byte that holds the length information + if (e.length > MAX_LABEL_SIZE) throw new Error("Label to large"); + length += e.length + 1; + }) + + length += 1; //Adding last 0 length octet + let data = Buffer.alloc(length); + let offset = 0; + parts.forEach(e => { + data.writeUInt8(e.length, offset) + offset++ + data.write(e, offset, e.length) + offset += e.length + }) + data.writeUInt8(0, offset); + return data; +} + export class Request implements Message { _header: MessageHeader; get header() { @@ -280,7 +302,7 @@ export class Request implements Message { } private serializeQuestion(question: MessageQuestion) { - let qname = this.serializeName(question.QNAME); + let qname = SerializeName(question.QNAME); let data = Buffer.alloc(qname.length + 4); qname.copy(data, 0, 0, qname.length); let offset = qname.length; @@ -292,7 +314,7 @@ export class Request implements Message { private serializeResourceRecord(record: MessageRecourceRecord) { // TODO: Implement compression - let name = this.serializeName(record.NAME); + let name = SerializeName(record.NAME); let data = Buffer.alloc(name.length + 10 + record.RDLENGTH) // For TYPE, CLASS, TTL, RLENGTH name.copy(data, 0, 0, name.length); let offset = name.length; @@ -307,28 +329,6 @@ export class Request implements Message { record.RDATA.copy(data, offset, 0, record.RDLENGTH) return data; } - - private serializeName(name: string) { - let length = 0; - let parts = name.split("."); - parts.forEach(e => { - // Length of part and byte that holds the length information - if (e.length > MAX_LABEL_SIZE) throw new Error("Label to large"); - length += e.length + 1; - }) - - length += 1; //Adding last 0 length octet - let data = Buffer.alloc(length); - let offset = 0; - parts.forEach(e => { - data.writeUInt8(e.length, offset) - offset++ - data.write(e, offset, e.length) - offset += e.length - }) - data.writeUInt8(0, offset); - return data; - } } export class RecourceRecord implements MessageRecourceRecord {