node_js_ipqs_db_reader
Version:
A Node JS implementation of the IPQualityScore flat file IP reputation database reader.
63 lines (62 loc) • 2.55 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const IPQSRecord_1 = require("./IPQSRecord");
class FileReader {
constructor() {
this.blacklistFile = false;
this.valid = false;
this.IPv6 = false;
this.treeEnd = 0;
this.treeStart = 0;
this.recordBytes = 0;
this.totalBytes = 0;
this.columns = [];
}
// private completesetup?: (value: boolean | PromiseLike<boolean>) => void;
// private failsetup?: (reason?: any) => void;
// public ready: Promise<boolean> = new Promise((resolve, reject) => {
// this.completesetup = resolve;
// this.failsetup = reject;
// });
// public setup(error: string | null = null) {
// if (error !== null) {
// this.fileError = new Error(error);
// }
// if (this.fileError !== null) {
// if (this.failsetup !== undefined) {
// this.failsetup(this.fileError);
// }
// }
// if (this.fileHandler !== undefined) {
// if (this.completesetup !== undefined) {
// this.completesetup(true);
// }
// }
// }
Fetch(ip) {
return __awaiter(this, void 0, void 0, function* () {
let record = new IPQSRecord_1.default(this);
if (this.IPv6 === true && ip.includes(".") === true) {
throw new Error("Attemtped to look up IPv4 using IPv6 database file. Aborting.");
}
else if (this.IPv6 === false && ip.includes(":") === true) {
throw new Error("Attemtped to look up IPv6 using IPv4 database file. Aborting.");
}
if (record.file.fileHandler !== null) {
yield record.fetch(ip);
}
return record;
});
}
}
exports.default = FileReader;
FileReader.TREE_PREFIX_BYTES = 5;