From fcf13b1fe5eaa421cb6d8cf10a788972b0a2d9a8 Mon Sep 17 00:00:00 2001 From: Michael Hollister Date: Mon, 11 Nov 2024 10:45:15 -0600 Subject: [PATCH] Fixing hostname detection on Raspberry PI --- receivers/electron/src/DiscoveryService.ts | 31 +++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/receivers/electron/src/DiscoveryService.ts b/receivers/electron/src/DiscoveryService.ts index cec9906..bae6a59 100644 --- a/receivers/electron/src/DiscoveryService.ts +++ b/receivers/electron/src/DiscoveryService.ts @@ -1,9 +1,11 @@ -import mdns = require('mdns-js'); +import mdns from 'mdns-js'; const cp = require('child_process'); const os = require('os'); export class DiscoveryService { + // eslint-disable-next-line @typescript-eslint/no-explicit-any private serviceTcp: any; + // eslint-disable-next-line @typescript-eslint/no-explicit-any private serviceWs: any; private static getComputerName() { @@ -12,8 +14,31 @@ export class DiscoveryService { return process.env.COMPUTERNAME; case "darwin": return cp.execSync("scutil --get ComputerName").toString().trim(); - case "linux": - return os.hostname(); + case "linux": { + let hostname: string; + + // Some distro's don't work with `os.hostname()`, but work with `hostnamectl` and vice versa... + try { + hostname = os.hostname(); + } + catch (err) { + console.warn('Error fetching hostname, trying different method...'); + console.warn(err); + + try { + hostname = cp.execSync("hostnamectl hostname").toString().trim(); + } + catch (err2) { + console.warn('Error fetching hostname again, using generic name...'); + console.warn(err2); + + hostname = 'linux device'; + } + } + + return hostname; + } + default: return os.hostname(); }