some nodes are spamming map reports at a high rate. we don't need them
This commit is contained in:
45
src/mqtt.js
45
src/mqtt.js
@ -406,24 +406,41 @@ client.on("message", async (topic, message) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await prisma.mapReport.create({
|
|
||||||
data: {
|
// find an existing map with duplicate information created in the last 60 seconds
|
||||||
|
const existingDuplicateMapReport = await prisma.mapReport.findFirst({
|
||||||
|
where: {
|
||||||
node_id: envelope.packet.from,
|
node_id: envelope.packet.from,
|
||||||
long_name: mapReport.longName,
|
long_name: mapReport.longName,
|
||||||
short_name: mapReport.shortName,
|
short_name: mapReport.shortName,
|
||||||
role: mapReport.role,
|
created_at: {
|
||||||
hardware_model: mapReport.hwModel,
|
gte: new Date(Date.now() - 60000), // created in the last 60 seconds
|
||||||
firmware_version: mapReport.firmwareVersion,
|
},
|
||||||
region: mapReport.region,
|
}
|
||||||
modem_preset: mapReport.modemPreset,
|
|
||||||
has_default_channel: mapReport.hasDefaultChannel,
|
|
||||||
latitude: mapReport.latitudeI,
|
|
||||||
longitude: mapReport.longitudeI,
|
|
||||||
altitude: mapReport.altitude,
|
|
||||||
position_precision: mapReport.positionPrecision,
|
|
||||||
num_online_local_nodes: mapReport.numOnlineLocalNodes,
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// create map report if no duplicates found
|
||||||
|
if(!existingDuplicateMapReport){
|
||||||
|
await prisma.mapReport.create({
|
||||||
|
data: {
|
||||||
|
node_id: envelope.packet.from,
|
||||||
|
long_name: mapReport.longName,
|
||||||
|
short_name: mapReport.shortName,
|
||||||
|
role: mapReport.role,
|
||||||
|
hardware_model: mapReport.hwModel,
|
||||||
|
firmware_version: mapReport.firmwareVersion,
|
||||||
|
region: mapReport.region,
|
||||||
|
modem_preset: mapReport.modemPreset,
|
||||||
|
has_default_channel: mapReport.hasDefaultChannel,
|
||||||
|
latitude: mapReport.latitudeI,
|
||||||
|
longitude: mapReport.longitudeI,
|
||||||
|
altitude: mapReport.altitude,
|
||||||
|
position_precision: mapReport.positionPrecision,
|
||||||
|
num_online_local_nodes: mapReport.numOnlineLocalNodes,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e);
|
console.error(e);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user