Removing listener for export in different Module
All checks were successful
the build was successful

This commit is contained in:
Fabian Stamm
2018-05-19 16:10:42 +02:00
parent 2b318d47aa
commit 23c27c3c4f
4 changed files with 0 additions and 152 deletions

View File

@ -1,73 +0,0 @@
import * as net from "net"
import * as dgram from "dgram";
import { Request } from "./request";
import { PassThrough } from "stream";
export default class Listener {
private udp: dgram.Socket
private tcp: net.Server
constructor(type: "udp4" | "udp6" | "tcp", onRequest: (request: Request) => any, host: string = "0.0.0.0") {
switch (type) {
case "udp6":
case "udp4":
this.udp = dgram.createSocket(type)
this.udp.on("listening", () => {
console.log(`UDP Server Listening on 53`)
})
this.udp.on("message", (message, remote) => {
let request = new Request(message, (data) => {
// console.log("sending:", new Request(data, (a) => 0));
this.udp.send(data, remote.port, remote.address)
})
onRequest(request);
})
this.udp.bind(53, host)
break;
case "tcp":
console.log("Using TCP is experimantal")
this.tcp = net.createServer((socket) => {
let length: number;
let got: number = 0;
let message = undefined;
socket.on("data", (data) => {
let offset = 0;
if (!message) {
length = data.readUInt16BE(0);
if (length > 4096) return socket.destroy(); //Requests with more that 2k are ignored
message = Buffer.alloc(length);
offset = 2;
}
let read = (data.length - offset) > (length - got) ? (length - got) : (data.length - offset);
data.copy(message, got, offset, read + offset)
got += read;
//ToDo don't ignore probably following requests
if (got >= length) {
let request = new Request(message, (data) => {
socket.write(data);
})
got = 0;
message = undefined;
length = 0;
onRequest(request);
}
});
});
this.tcp.listen(53, host);
console.log(`TCP Server Listening on 53`)
break;
default:
throw new Error("Unknown socket type")
}
}
close() {
if (this.udp) {
this.udp.close();
} else {
this.tcp.close();
}
}
}