Exporting SerializeName for usage in RR data
This commit is contained in:
parent
8c66f9a41b
commit
e5c55b402b
2
lib/request.d.ts
vendored
2
lib/request.d.ts
vendored
@ -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;
|
||||
|
@ -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 {
|
||||
|
File diff suppressed because one or more lines are too long
@ -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 <dev@fabianstamm.de>",
|
||||
|
@ -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 {
|
||||
|
Loading…
Reference in New Issue
Block a user