8 Commits

4 changed files with 24 additions and 19 deletions

View File

@@ -61,7 +61,7 @@ const AuthenticationType = {
OpenSystem_1: "OpenSystem_1", OpenSystem_1: "OpenSystem_1",
OpenSystem_2: "OpenSystem_2", OpenSystem_2: "OpenSystem_2",
Unknown: "Unknown", Unknown: "Unknown",
} };
class AuthenticationPacket extends Packet{ class AuthenticationPacket extends Packet{
authenticationType; authenticationType;
} }
@@ -81,7 +81,7 @@ const HandshakeStage = {
2: "2", 2: "2",
3: "3", 3: "3",
4: "4" 4: "4"
} };
class HandshakePacket extends Packet{ class HandshakePacket extends Packet{
handshakeStage; handshakeStage;
} }

View File

@@ -5,6 +5,7 @@ const logger = logFactory("main");
const { requireEnvVars } = require("./helper/env.js"); const { requireEnvVars } = require("./helper/env.js");
const { exit } = require("process"); const { exit } = require("process");
const { exec } = require("./helper/exec.js"); const { exec } = require("./helper/exec.js");
const Os = require("os");
const { InfluxDB } = require("@influxdata/influxdb-client"); const { InfluxDB } = require("@influxdata/influxdb-client");
const InfluxChecks = require("./helper/influx-checks.js"); const InfluxChecks = require("./helper/influx-checks.js");
@@ -23,6 +24,7 @@ const env = process.env;
{ {
env.LOGLEVEL ??= "INFO"; env.LOGLEVEL ??= "INFO";
env.WIFI_INTERFACE ??= "wlan0"; env.WIFI_INTERFACE ??= "wlan0";
env.HOSTNAME ??= Os.hostname();
} }
// Required vars // Required vars
let errorMsg = requireEnvVars([ let errorMsg = requireEnvVars([
@@ -56,6 +58,9 @@ if(errorMsg){
exit(1); 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("Influx ok");
logger.info("Starting tcpdump.."); 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 regexBlockStream = new RegexBlockStream(/^\d{2}:\d{2}:\d{2}.\d{6}.*(\n( {4,8}|\t\t?).*)+\n/gm);
let packetStreamFactory = new PacketStreamFactory(); let packetStreamFactory = new PacketStreamFactory();
let packetInfluxPointFactory = new PacketInfluxPointFactory(); let packetInfluxPointFactory = new PacketInfluxPointFactory();
let influxPointWriter = new InfluxPointWriter(influxDb, env.INFLUX_ORG, env.INFLUX_BUCKET); let influxPointWriter = new InfluxPointWriter(influxWriteApi);
proc.stdout proc.stdout
.setEncoding("utf8") .setEncoding("utf8")
.pipe(regexBlockStream) .pipe(regexBlockStream)

View File

@@ -1,6 +1,6 @@
const logger = require.main.require("./helper/logger.js")("InfluxPointWriter"); const logger = require.main.require("./helper/logger.js")("InfluxPointWriter");
const { Writable } = require("stream"); 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 * Get points and write them into influx
@@ -8,16 +8,13 @@ const {InfluxDB, Point, HttpError} = require("@influxdata/influxdb-client");
class InfluxPointWriter extends Writable{ class InfluxPointWriter extends Writable{
/** /**
* *
* @param {InfluxDB} influxDb InfluxDb * @param {WriteApi} writeApi WriteAPI from InfluxDB instance
* @param {string} org Organization to use
* @param {string} bucket Bucket to use
* @param {Partial<WriteOptions>} options Options for WriteApi
*/ */
constructor(influxDb, org, bucket, options){ constructor(writeApi){
super({ super({
objectMode: true objectMode: true
}); });
this._api = influxDb.getWriteApi(org, bucket, "us", options); this._api = writeApi;
} }
_write(point, encoding, next){ _write(point, encoding, next){

View File

@@ -14,14 +14,14 @@ const TAG_LIST = [
/** Measurement-name and corresponding field-key */ /** Measurement-name and corresponding field-key */
const MEASUREMENT_MAP = new Map([ const MEASUREMENT_MAP = new Map([
["Signal", "signal"], ["rfmon_signal_dbm", "signal"],
["PayloadSize", "payloadSize"], ["rfmon_payloadsize_bytes", "payloadSize"],
["DataRate", "dataRate"], ["rfmon_datarate_bytes", "dataRate"],
["SSID", "ssid"], ["rfmon_ssid_names", "ssid"],
["AuthenticationType", "authenticationType"], ["rfmon_authenticationtype_info", "authenticationType"],
["AssociationSuccess", "associationIsSuccessful"], ["rfmon_associationsuccess_bools", "associationIsSuccessful"],
["DisassociationReason", "disassociationReason"], ["rfmon_disassociationreason_info", "disassociationReason"],
["HandshakeStage", "handshakeStage"], ["rfmon_handshakestage_info", "handshakeStage"],
]); ]);
@@ -66,7 +66,10 @@ function tagObjectRecursively(point, tag, field, suffix = ""){
tagObjectRecursively(point, tag, value, `_${key}${suffix}`); tagObjectRecursively(point, tag, value, `_${key}${suffix}`);
}); });
} }
else point.tag(tag+suffix, field); else {
const name = (tag+suffix).toLowerCase();
point.tag(name, field);
}
} }
/** Mapping for type -> field-method */ /** Mapping for type -> field-method */