Skip to content

Commit 823f1eb

Browse files
committed
revert: remove mDNS — not reliably supported across browsers
1 parent 086e31e commit 823f1eb

File tree

3 files changed

+3
-133
lines changed

3 files changed

+3
-133
lines changed

package-lock.json

Lines changed: 2 additions & 40 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@
4343
"express-rate-limit": "^7.1.5",
4444
"helmet": "^8.1.0",
4545
"multer": "^2.0.2",
46-
"multicast-dns": "^7.2.5",
4746
"sharp": "^0.33.2",
4847
"socket.io": "^4.6.1",
4948
"sqlite3": "^5.1.6"
@@ -53,4 +52,4 @@
5352
"supertest": "^7.2.2",
5453
"vitest": "^2.1.8"
5554
}
56-
}
55+
}

server/server.js

Lines changed: 0 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@ const db = require("./db");
1919

2020
const config = require("./config");
2121

22-
let mdns = null;
23-
try { mdns = require('multicast-dns'); } catch (e) { }
2422

2523
const UPLOADS_DIR = process.env.INSTBYTE_UPLOADS
2624
|| path.join(__dirname, "../uploads");
@@ -1080,62 +1078,6 @@ function getLocalIP() {
10801078
}
10811079

10821080

1083-
function getMdnsName() {
1084-
const appName = config.branding && config.branding.appName;
1085-
if (appName && appName.toLowerCase() !== 'instbyte') {
1086-
return appName.toLowerCase().replace(/\s+/g, '-') + '.local';
1087-
}
1088-
return 'instbyte.local';
1089-
}
1090-
1091-
function getHostnameFallback() {
1092-
return os.hostname().toLowerCase() + '.local';
1093-
}
1094-
1095-
function probeMdns(name) {
1096-
return new Promise((resolve) => {
1097-
if (!mdns) return resolve(false);
1098-
const m = mdns();
1099-
const timer = setTimeout(() => {
1100-
m.destroy();
1101-
resolve(false); // no response = name is free
1102-
}, 2000);
1103-
1104-
m.on('response', (response) => {
1105-
const taken = response.answers.some(a =>
1106-
a.name === name && a.type === 'A'
1107-
);
1108-
if (taken) {
1109-
clearTimeout(timer);
1110-
m.destroy();
1111-
resolve(true); // name is taken
1112-
}
1113-
});
1114-
1115-
m.query({ questions: [{ name, type: 'A' }] });
1116-
});
1117-
}
1118-
1119-
function startMdnsAdvertise(name, ip) {
1120-
if (!mdns) return null;
1121-
try {
1122-
const m = mdns();
1123-
m.on('query', (query) => {
1124-
query.questions.forEach(q => {
1125-
if (q.name === name && q.type === 'A') {
1126-
m.respond({
1127-
answers: [{ name, type: 'A', ttl: 300, data: ip }]
1128-
});
1129-
}
1130-
});
1131-
});
1132-
return m;
1133-
} catch (e) {
1134-
return null;
1135-
}
1136-
}
1137-
1138-
11391081
function listenOnFreePort(server, preferredPort) {
11401082
return new Promise((resolve, reject) => {
11411083
server.listen(preferredPort, () => resolve(server.address().port));
@@ -1155,7 +1097,6 @@ const PREFERRED = parseInt(process.env.PORT) || config.server.port;
11551097
const localIP = getLocalIP();
11561098

11571099
let PORT;
1158-
let mdnsAdvertiser = null;
11591100

11601101
if (process.env.INSTBYTE_BOOT === '1') {
11611102
listenOnFreePort(server, PREFERRED).then(async p => {
@@ -1167,33 +1108,6 @@ if (process.env.INSTBYTE_BOOT === '1') {
11671108
console.log(`(port ${PREFERRED} was busy, switched to ${PORT})`);
11681109
}
11691110

1170-
// mDNS
1171-
if (mdns) {
1172-
try {
1173-
const preferredName = getMdnsName();
1174-
const isTaken = await probeMdns(preferredName);
1175-
1176-
let mdnsName;
1177-
if (isTaken) {
1178-
mdnsName = getHostnameFallback();
1179-
if (os.platform() !== 'win32') {
1180-
console.log(`mDNS: http://${preferredName} already in use on this network`);
1181-
console.log(`mDNS: http://${mdnsName}`);
1182-
}
1183-
} else {
1184-
mdnsName = preferredName;
1185-
if (os.platform() !== 'win32') {
1186-
console.log(`mDNS: http://${mdnsName}`);
1187-
}
1188-
}
1189-
1190-
mdnsAdvertiser = startMdnsAdvertise(mdnsName, localIP);
1191-
1192-
} catch (e) {
1193-
console.log("mDNS: unavailable on this network — use IP or QR code to join");
1194-
}
1195-
}
1196-
11971111
console.log("");
11981112
scanOrphans();
11991113
}).catch(err => {
@@ -1211,11 +1125,6 @@ module.exports = { app, server, sessions };
12111125
function shutdown(signal) {
12121126
console.log(`\n${signal} received — shutting down gracefully...`);
12131127

1214-
// destroy mDNS advertiser if running
1215-
if (typeof mdnsAdvertiser !== 'undefined' && mdnsAdvertiser) {
1216-
try { mdnsAdvertiser.destroy(); } catch (e) { }
1217-
}
1218-
12191128
// stop accepting new connections
12201129
server.close(() => {
12211130
console.log("HTTP server closed");

0 commit comments

Comments
 (0)