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(); }