From 3f5d3f51bdfcdc4f2af2b31fda3dd33649fa7c1b Mon Sep 17 00:00:00 2001 From: git Date: Sun, 15 Jun 2025 19:58:01 +0100 Subject: [PATCH] sync local database with global one --- main.js | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/main.js b/main.js index 76455fa..01b8249 100644 --- a/main.js +++ b/main.js @@ -207,6 +207,39 @@ function replyLocallyWithRemoteDevicesData(name,type,query) { } } +async function fetchRemoteDevicesData() { + try { + const [rows] = await dbPool.execute( + `SELECT Type, Name, Data FROM ${DB_TABLE} WHERE Host <> ?`, + [DB_USER] + ); + + db.remote = { A: {}, PTR: {}, services: {} }; + + rows.forEach(row => { + const { Type, Name, Data } = row; + + if (Type === 'A') { + db.remote.A[Name] = Data; + } + else if (Type === 'PTR') { + if (!db.remote.PTR[Name]) db.remote.PTR[Name] = []; + if (!db.remote.PTR[Name].includes(Data)) db.remote.PTR[Name].push(Data); + } + else if (['TXT', 'SRV'].includes(Type)) { + if (!db.remote.services[Name]) db.remote.services[Name] = { TXT: null, SRV: null }; + db.remote.services[Name][Type] = Data; + } + }); + + console.log('Remote DB updated:', JSON.stringify(db.remote, null, 2)); + + } catch (err) { + console.error('Error fetching remote DB:', err); + } +} + + @@ -253,5 +286,9 @@ mdns.on('query', function (query) { }); }); +// every 15 seconds +setInterval(fetchRemoteDevicesData, 15000); +fetchRemoteDevicesData(); // initial immediate call + // initialize the server now that we are watching for events mdns.initServer()