/*
 * Simple DNS Server
 * For testing DNS monitoring type, dev only
 */
const dns2 = require("dns2");

const { Packet } = dns2;

const server = dns2.createServer({
    udp: true
});

server.on("request", (request, send, rinfo) => {
    for (let question of request.questions) {
        console.log(question.name, type(question.type), question.class);

        const response = Packet.createResponseFromRequest(request);

        if (question.name === "existing.com") {

            if (question.type === Packet.TYPE.A) {
                response.answers.push({
                    name: question.name,
                    type: question.type,
                    class: question.class,
                    ttl: 300,
                    address: "1.2.3.4"
                });
            }

            // TODO: all other types

        }

        send(response);
    }
});

server.on("listening", () => {
    console.log("Listening");
    console.log(server.addresses());
});

server.on("close", () => {
    console.log("server closed");
});

server.listen({
    udp: 5300
});

function type(code) {
    for (let name in Packet.TYPE) {
        if (Packet.TYPE[name] === code) {
            return name;
        }
    }
}