diff --git a/src/dto/Packet.js b/src/dto/Packet.js index e30a983..4175111 100644 --- a/src/dto/Packet.js +++ b/src/dto/Packet.js @@ -61,7 +61,7 @@ const AuthenticationType = { OpenSystem_1: "OpenSystem_1", OpenSystem_2: "OpenSystem_2", Unknown: "Unknown", -} +}; class AuthenticationPacket extends Packet{ authenticationType; } @@ -81,7 +81,7 @@ const HandshakeStage = { 2: "2", 3: "3", 4: "4" -} +}; class HandshakePacket extends Packet{ handshakeStage; } diff --git a/src/main.js b/src/main.js index dcf991d..a89ae31 100644 --- a/src/main.js +++ b/src/main.js @@ -5,6 +5,7 @@ const logger = logFactory("main"); const { requireEnvVars } = require("./helper/env.js"); const { exit } = require("process"); const { exec } = require("./helper/exec.js"); +const Os = require("os"); const { InfluxDB } = require("@influxdata/influxdb-client"); const InfluxChecks = require("./helper/influx-checks.js"); @@ -23,6 +24,7 @@ const env = process.env; { env.LOGLEVEL ??= "INFO"; env.WIFI_INTERFACE ??= "wlan0"; + env.HOSTNAME ??= Os.hostname(); } // Required vars let errorMsg = requireEnvVars([ @@ -56,6 +58,9 @@ if(errorMsg){ exit(1); }); + logger.debug("Get WriteApi & set default-hostname to", `'${env.HOSTNAME}'`); + const influxWriteApi = influxDb.getWriteApi(env.INFLUX_ORG, env.INFLUX_BUCKET, "us"); + influxWriteApi.useDefaultTags("hostname", env.HOSTNAME); logger.info("Influx ok"); logger.info("Starting tcpdump.."); @@ -67,7 +72,7 @@ if(errorMsg){ let regexBlockStream = new RegexBlockStream(/^\d{2}:\d{2}:\d{2}.\d{6}.*(\n( {4,8}|\t\t?).*)+\n/gm); let packetStreamFactory = new PacketStreamFactory(); let packetInfluxPointFactory = new PacketInfluxPointFactory(); - let influxPointWriter = new InfluxPointWriter(influxDb, env.INFLUX_ORG, env.INFLUX_BUCKET); + let influxPointWriter = new InfluxPointWriter(influxWriteApi); proc.stdout .setEncoding("utf8") .pipe(regexBlockStream) diff --git a/src/streamHandler/InfluxPointWriter.js b/src/streamHandler/InfluxPointWriter.js index ea7f76e..7d1874c 100644 --- a/src/streamHandler/InfluxPointWriter.js +++ b/src/streamHandler/InfluxPointWriter.js @@ -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 { WriteApi } = require("@influxdata/influxdb-client"); /** * Get points and write them into influx @@ -8,16 +8,13 @@ const {InfluxDB, Point, HttpError} = require("@influxdata/influxdb-client"); class InfluxPointWriter extends Writable{ /** * - * @param {InfluxDB} influxDb InfluxDb - * @param {string} org Organization to use - * @param {string} bucket Bucket to use - * @param {Partial} options Options for WriteApi + * @param {WriteApi} writeApi WriteAPI from InfluxDB instance */ - constructor(influxDb, org, bucket, options){ + constructor(writeApi){ super({ objectMode: true }); - this._api = influxDb.getWriteApi(org, bucket, "us", options); + this._api = writeApi; } _write(point, encoding, next){ diff --git a/src/streamHandler/PacketInfluxPointFactory.js b/src/streamHandler/PacketInfluxPointFactory.js index 8684b3a..764cd3b 100644 --- a/src/streamHandler/PacketInfluxPointFactory.js +++ b/src/streamHandler/PacketInfluxPointFactory.js @@ -4,24 +4,24 @@ const {Point} = require("@influxdata/influxdb-client"); /** Keys to always use as tags */ const TAG_LIST = [ - "srcMac", - "dstMac", + "srcmac", + "dstmac", "bssid", "frequency", "flags", - "packetType", + "packettype", ]; /** Measurement-name and corresponding field-key */ const MEASUREMENT_MAP = new Map([ - ["Signal", "signal"], - ["PayloadSize", "payloadSize"], - ["DataRate", "dataRate"], - ["SSID", "ssid"], - ["AuthenticationType", "authenticationType"], - ["AssociationSuccess", "associationIsSuccessful"], - ["DisassociationReason", "disassociationReason"], - ["HandshakeStage", "handshakeStage"], + ["rfmon_signal_dbm", "signal"], + ["rfmon_payloadsize_bytes", "payloadSize"], + ["rfmon_datarate_bytes", "dataRate"], + ["rfmon_ssid_names", "ssid"], + ["rfmon_authenticationtype_info", "authenticationType"], + ["rfmon_associationsuccess_bools", "associationIsSuccessful"], + ["rfmon_disassociationreason_info", "disassociationReason"], + ["rfmon_handshakestage_info", "handshakeStage"], ]);