Refactored code to match code-style
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
const logger = require.main.require("./helper/logger.js")("InfluxPointWriter");
|
||||
const { Writable } = require('stream');
|
||||
const {InfluxDB, Point, HttpError} = require('@influxdata/influxdb-client')
|
||||
const { Writable } = require("stream");
|
||||
const {InfluxDB, Point, HttpError} = require("@influxdata/influxdb-client");
|
||||
|
||||
/**
|
||||
* Get points and write them into influx
|
||||
@@ -17,7 +17,7 @@ class InfluxPointWriter extends Writable{
|
||||
super({
|
||||
objectMode: true
|
||||
});
|
||||
this._api = influxDb.getWriteApi(org, bucket, 'us', options);
|
||||
this._api = influxDb.getWriteApi(org, bucket, "us", options);
|
||||
}
|
||||
|
||||
_write(point, encoding, next){
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
const logger = require.main.require("./helper/logger.js")("PacketStreamFactory");
|
||||
const { Transform } = require('stream');
|
||||
const {Point} = require('@influxdata/influxdb-client')
|
||||
const { Transform } = require("stream");
|
||||
const {Point} = require("@influxdata/influxdb-client");
|
||||
|
||||
/** Keys to always use as tags */
|
||||
const TAG_LIST = [
|
||||
@@ -45,12 +45,12 @@ class PacketInfluxPointFactory extends Transform{
|
||||
|
||||
// Set tags
|
||||
TAG_LIST.filter(tag => Object.keys(packet).includes(tag)) // Filter tags available on object
|
||||
.filter(tag => packet[tag] != null) // Filter tags not falsy on object
|
||||
.forEach(tag => {
|
||||
tagObjectRecursively(point, tag, packet[tag]);
|
||||
});
|
||||
.filter(tag => packet[tag] != null) // Filter tags not falsy on object
|
||||
.forEach(tag => {
|
||||
tagObjectRecursively(point, tag, packet[tag]);
|
||||
});
|
||||
|
||||
point.setField('value', packet[objKey]); // Set field
|
||||
point.setField("value", packet[objKey]); // Set field
|
||||
|
||||
this.push(point); // Push point into stream
|
||||
});
|
||||
@@ -71,14 +71,14 @@ function tagObjectRecursively(point, tag, field, suffix = ""){
|
||||
|
||||
/** Mapping for type -> field-method */
|
||||
const POINT_FIELD_TYPE = new Map([
|
||||
['boolean', function(key, value){ return this.booleanField(key, value); }],
|
||||
['number', function(key, value){ return this.intField(key, value); }],
|
||||
['string', function(key, value){ return this.stringField(key, value); }],
|
||||
["boolean", function(key, value){ return this.booleanField(key, value); }],
|
||||
["number", function(key, value){ return this.intField(key, value); }],
|
||||
["string", function(key, value){ return this.stringField(key, value); }],
|
||||
]);
|
||||
Point.prototype.setField = function(key, value){
|
||||
let setField = POINT_FIELD_TYPE.get(typeof value);
|
||||
return setField.apply(this, [key, value]);
|
||||
}
|
||||
};
|
||||
|
||||
// Specify exports
|
||||
module.exports = {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
const logger = require.main.require("./helper/logger.js")("PacketStreamFactory");
|
||||
const { Transform } = require('stream');
|
||||
const { Transform } = require("stream");
|
||||
const { DateTime } = require("luxon");
|
||||
const { PacketType, FlagType, Packet, PacketWithSSID, BeaconPacket, ProbeRequestPacket, ProbeResponsePacket, AuthenticationPacket, AuthenticationType, AssociationResponsePacket, DisassociationPacket, HandshakePacket, HandshakeStage } = require.main.require('./dto/Packet.js');
|
||||
const { PacketType, FlagType, Packet, PacketWithSSID, BeaconPacket, ProbeRequestPacket, ProbeResponsePacket, AuthenticationPacket, AuthenticationType, AssociationResponsePacket, DisassociationPacket, HandshakePacket, HandshakeStage } = require.main.require("./dto/Packet.js");
|
||||
const hexConv = require.main.require("./helper/hexConverter.js");
|
||||
const wifiStateAnalyser = require.main.require("./helper/wifiStateAnalyzer.js");
|
||||
|
||||
@@ -20,20 +20,20 @@ const PACKET_TYPE_MAP = {
|
||||
"Disassociation:": PacketType.Disassociation,
|
||||
"EAPOL": PacketType.Handshake,
|
||||
};
|
||||
const PACKET_TYPES_REGEX = Object.keys(PACKET_TYPE_MAP).join('|');
|
||||
const PACKET_TYPES_REGEX = Object.keys(PACKET_TYPE_MAP).join("|");
|
||||
|
||||
const AUTHENTICATION_TYPE_MAP = {
|
||||
"(Open System)-1": AuthenticationType.OpenSystem_1,
|
||||
"(Open System)-2": AuthenticationType.OpenSystem_2,
|
||||
}
|
||||
};
|
||||
|
||||
const FLAG_TYPE_MAP = {
|
||||
"Retry": FlagType.Retry,
|
||||
"Pwr Mgmt": FlagType.PwrMgt,
|
||||
"More Data": FlagType.MoreData,
|
||||
"Protected": FlagType.Protected,
|
||||
}
|
||||
const FLAG_TYPE_MAPS_REGEX = Object.keys(FLAG_TYPE_MAP).join('|');
|
||||
};
|
||||
const FLAG_TYPE_MAPS_REGEX = Object.keys(FLAG_TYPE_MAP).join("|");
|
||||
|
||||
/**
|
||||
* Read data from text-blocks and convert them to Packet
|
||||
@@ -49,8 +49,8 @@ class PacketStreamFactory extends Transform{
|
||||
_transform(chunk, encoding, next){
|
||||
let packet = new Packet();
|
||||
|
||||
const lines = chunk.split('\n');
|
||||
const header = lines.splice(0, 1)[0]; // Grab first line, 'lines' is now the payload
|
||||
const lines = chunk.split("\n");
|
||||
const header = lines.splice(0, 1)[0]; // Grab first line, "lines" is now the payload
|
||||
packet = this._handleHeader(packet, header);
|
||||
packet = this._handlePayload(packet, lines);
|
||||
|
||||
@@ -62,7 +62,7 @@ class PacketStreamFactory extends Transform{
|
||||
packet.timestampMicros = DateTime.fromISO(data.slice(0, 12)).toSeconds() + data.slice(12, 15)/1000000;
|
||||
|
||||
// Find flags
|
||||
data.match(data.match(new RegExp('(?<=^|\\s)('+ FLAG_TYPE_MAPS_REGEX +')(?=$|\\s)', 'ig'))
|
||||
data.match(data.match(new RegExp("(?<=^|\\s)("+ FLAG_TYPE_MAPS_REGEX +")(?=$|\\s)", "ig"))
|
||||
?.forEach(match => packet.flags[FLAG_TYPE_MAP[match]] = true) // Set them to true in flags
|
||||
);
|
||||
|
||||
@@ -73,11 +73,11 @@ class PacketStreamFactory extends Transform{
|
||||
|
||||
packet.signal = Number(data.match(/(?<=^|\s)-\d{2,3}(?=dBm\sSignal($|\s))/i)?.[0]) || null;
|
||||
|
||||
let packetTypeStr = data.match(new RegExp('(?<=^|\\s)('+ PACKET_TYPES_REGEX +')(?=$|\\s)', 'i'))?.[0];
|
||||
let packetTypeStr = data.match(new RegExp("(?<=^|\\s)("+ PACKET_TYPES_REGEX +")(?=$|\\s)", "i"))?.[0];
|
||||
if(packetTypeStr)
|
||||
packet.packetType = PACKET_TYPE_MAP[packetTypeStr];
|
||||
else if(data.match(/(SA|TA|DA|RA|BSSID):.{17}\s*$/i)){
|
||||
packet.packetType = PacketType.NoData
|
||||
packet.packetType = PacketType.NoData;
|
||||
}
|
||||
else {
|
||||
packet.packetType = PacketType.Unknown;
|
||||
@@ -97,12 +97,12 @@ class PacketStreamFactory extends Transform{
|
||||
case PacketType.ProbeResponse:
|
||||
case PacketType.AssociationRequest:
|
||||
newPacket = new PacketWithSSID();
|
||||
newPacket.ssid = data.match(new RegExp('(?<=(^|\\s)'+ packetTypeStr +'\\s\\().{0,32}(?=\\)($|\\s))', 'i'))?.[0] ?? null;
|
||||
newPacket.ssid = data.match(new RegExp("(?<=(^|\\s)"+ packetTypeStr +"\\s\\().{0,32}(?=\\)($|\\s))", "i"))?.[0] ?? null;
|
||||
break;
|
||||
|
||||
case PacketType.Authentication:
|
||||
newPacket = new AuthenticationPacket();
|
||||
newPacket.authenticationType = AUTHENTICATION_TYPE_MAP[data.match(/(?<=(^|\s)Authentication\s).{3,}(?=\:(\s|$))/i)[0]] ?? AuthenticationType.Unknown;
|
||||
newPacket.authenticationType = AUTHENTICATION_TYPE_MAP[data.match(/(?<=(^|\s)Authentication\s).{3,}(?=:(\s|$))/i)[0]] ?? AuthenticationType.Unknown;
|
||||
break;
|
||||
|
||||
case PacketType.AssociationResponse:
|
||||
@@ -121,16 +121,16 @@ class PacketStreamFactory extends Transform{
|
||||
}
|
||||
|
||||
_handlePayload(packet, data){
|
||||
data = data.join('');
|
||||
data = data.join("");
|
||||
|
||||
// Get payload-Hex-Data. If there is no data: empty
|
||||
packet.payloadData = hexConv.hexToBytes(data.match(/(?<=\s)([A-F0-9]{1,4}(?=\s))/igm)?.join('') ?? '');
|
||||
packet.payloadData = hexConv.hexToBytes(data.match(/(?<=\s)([A-F0-9]{1,4}(?=\s))/igm)?.join("") ?? "");
|
||||
packet.payloadData.splice(packet.payloadData.length-4, 4); // Remove FrameCheck sequence
|
||||
|
||||
// Cover special cases with more data
|
||||
let newPacket;
|
||||
switch(packet.packetType){
|
||||
case PacketType.Handshake:
|
||||
case PacketType.Handshake: {
|
||||
newPacket = new HandshakePacket();
|
||||
|
||||
// Read key-information
|
||||
@@ -139,6 +139,7 @@ class PacketStreamFactory extends Transform{
|
||||
|
||||
newPacket.handshakeStage = wifiStateAnalyser.handshakeStageFromKeyInfo(keyInfo); // Get stage
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(newPacket) packet = Object.assign(newPacket, packet);
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
const logger = require.main.require("./helper/logger.js")("RegexBlockStream");
|
||||
const { Transform } = require('stream')
|
||||
const { Transform } = require("stream");
|
||||
|
||||
/**
|
||||
* Matches whole blocks as regex and passes them on
|
||||
@@ -27,7 +27,7 @@ class RegexBlockStream extends Transform{
|
||||
}
|
||||
|
||||
_transform(chunk, encoding, next){
|
||||
chunk = this.readableBuffer.length? this.readableBuffer.join('') + chunk: chunk; // Add previous buffer to current chunk
|
||||
chunk = this.readableBuffer.length? this.readableBuffer.join("") + chunk: chunk; // Add previous buffer to current chunk
|
||||
this.readableBuffer.length && this.readableBuffer.clear(); // Clear buffer once we read it
|
||||
|
||||
let matches = chunk.match(this.matcher); // Match
|
||||
@@ -44,7 +44,7 @@ class RegexBlockStream extends Transform{
|
||||
if(matches){
|
||||
matches.forEach((match) => {
|
||||
this.push(match); // Write match to stream
|
||||
if(chunk) chunk = chunk.replace(match, ''); // Remove match from chunks
|
||||
if(chunk) chunk = chunk.replace(match, ""); // Remove match from chunks
|
||||
});
|
||||
}
|
||||
if(chunk) return chunk;
|
||||
@@ -53,6 +53,7 @@ class RegexBlockStream extends Transform{
|
||||
_flush(next){
|
||||
if(matchAllOnFlush){ // When requested, we'll match one last time over the remaining buffer
|
||||
let chunk = this.readableBuffer.join('');
|
||||
let chunk = this.readableBuffer.join("");
|
||||
let matches = chunk.match(this.matcher); // Match remaining buffer
|
||||
_writeMatches(matches); // Write matches including last element
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user