6 Commits

Author SHA1 Message Date
c3cd6393d4 Merge branch 'release-2.0' 2021-12-06 13:01:31 +01:00
c97137f4a7 Merge branch 'release-2' 2021-12-06 12:47:14 +01:00
a13d81e9c0 Merge branch 'release-1.1' 2021-12-03 10:53:35 +01:00
059c02e243 Merge branch 'dev' into release-1.1 2021-12-03 10:53:13 +01:00
a610f209d5 Merge branch 'release-1.1' 2021-12-02 14:08:54 +01:00
6e05a0b45c Merge branch 'release-1.0' 2021-11-29 15:55:27 +01:00
2 changed files with 8 additions and 29 deletions

View File

@@ -60,7 +60,7 @@ if(errorMsg){
logger.debug("Get WriteApi & set default-hostname to", `'${env.HOSTNAME}'`); logger.debug("Get WriteApi & set default-hostname to", `'${env.HOSTNAME}'`);
const influxWriteApi = influxDb.getWriteApi(env.INFLUX_ORG, env.INFLUX_BUCKET, "us"); const influxWriteApi = influxDb.getWriteApi(env.INFLUX_ORG, env.INFLUX_BUCKET, "us");
//influxWriteApi.useDefaultTags({"hostname": env.HOSTNAME}); influxWriteApi.useDefaultTags({"hostname": env.HOSTNAME});
logger.info("Influx ok"); logger.info("Influx ok");
logger.info("Starting tcpdump.."); logger.info("Starting tcpdump..");
@@ -82,22 +82,9 @@ if(errorMsg){
logger.debug("Attaching error-logger.."); logger.debug("Attaching error-logger..");
const loggerTcpdump = logFactory("tcpdump"); const loggerTcpdump = logFactory("tcpdump");
let linkTypeId;
proc.stderr.setEncoding("utf8").on("data", (data) => { proc.stderr.setEncoding("utf8").on("data", (data) => {
if(!data.match(/^(tcpdump: )?listening on /i) || !data.match(/^\d+ packets captured/i)) { // Catch start-error if(!data.match(/^(tcpdump: )?listening on /i) || !data.match(/^\d+ packets captured/i)) { // Catch start-error
loggerTcpdump.debug(data); loggerTcpdump.debug(data);
if(!linkTypeId && data.match(/^(tcpdump: )?listening on/i)){ // Grab first data containing listen-info if proper header was found
const linkType = data.match(/((?<=link-type ))([a-z].*?) \(.*?\)(?=,)/i)[0];
const linkTypeData = linkType.match(/(\S*) (.*)/i);
const linkTypeId = linkTypeData[1];
const linkTypeDetail = linkTypeData[2];
if(linkTypeId !== "IEEE802_11_RADIO"){
logger.error(`Interface not in Monitor-mode! (Expected 'IEEE802_11_RADIO', but got '${linkTypeId}')`);
shutdown(1, "SIGKILL");
}
}
} }
else loggerTcpdump.error(data); else loggerTcpdump.error(data);
}); });
@@ -130,22 +117,17 @@ if(errorMsg){
loggerTcpdump.debug(`tcpdump exited code: ${code}`); loggerTcpdump.debug(`tcpdump exited code: ${code}`);
if (code) { if (code) {
loggerTcpdump.fatal(`tcpdump exited with non-zero code: ${code}`); loggerTcpdump.fatal(`tcpdump exited with non-zero code: ${code}`);
if(!exitCode) exitCode = 1; // When exitCode is 0, set to 1 exit(1);
} }
logger.info("Shutdown"); logger.info("Shutdown");
exit(exitCode); exit(0);
}); });
// Handle stop-signals for graceful shutdown // Handle stop-signals for graceful shutdown
var exitCode = 0;
function shutdownReq() { function shutdownReq() {
logger.info("Shutdown request received.."); logger.info("Shutdown request received..");
shutdown();
}
function shutdown(code, signal = "SIGTERM"){
if(code) exitCode = code;
logger.debug("Stopping subprocess tcpdump, then exiting myself.."); logger.debug("Stopping subprocess tcpdump, then exiting myself..");
proc.kill(signal); // Kill process, then upper event-handler will stop self proc.kill(); // Kill process (send SIGTERM), then upper event-handler will stop self
} }
process.on("SIGTERM", shutdownReq); process.on("SIGTERM", shutdownReq);
process.on("SIGINT", shutdownReq); process.on("SIGINT", shutdownReq);

View File

@@ -4,12 +4,12 @@ const {Point} = require("@influxdata/influxdb-client");
/** Keys to always use as tags */ /** Keys to always use as tags */
const TAG_LIST = [ const TAG_LIST = [
"srcMac", "srcmac",
"dstMac", "dstmac",
"bssid", "bssid",
"frequency", "frequency",
"flags", "flags",
"packetType", "packettype",
]; ];
/** Measurement-name and corresponding field-key */ /** Measurement-name and corresponding field-key */
@@ -66,10 +66,7 @@ function tagObjectRecursively(point, tag, field, suffix = ""){
tagObjectRecursively(point, tag, value, `_${key}${suffix}`); tagObjectRecursively(point, tag, value, `_${key}${suffix}`);
}); });
} }
else { else point.tag(tag+suffix, field);
const name = (tag+suffix).toLowerCase();
point.tag(name, field);
}
} }
/** Mapping for type -> field-method */ /** Mapping for type -> field-method */