1
0
Fork 0
mirror of https://gitlab.com/futo-org/fcast.git synced 2025-06-24 21:25:23 +00:00

Changed to cli parsing module

This commit is contained in:
Michael Hollister 2024-09-06 15:44:20 -05:00
parent be7e0beeed
commit add770514b
3 changed files with 142 additions and 144 deletions

View file

@ -1,21 +1,23 @@
{ {
"name": "fcast-receiver", "name": "fcast-receiver",
"version": "1.0.10", "version": "1.0.14",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "fcast-receiver", "name": "fcast-receiver",
"version": "1.0.10", "version": "1.0.14",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@types/yargs": "^17.0.33",
"bufferutil": "^4.0.8", "bufferutil": "^4.0.8",
"http": "^0.0.1-security", "http": "^0.0.1-security",
"https": "^1.0.0", "https": "^1.0.0",
"qrcode": "^1.5.3", "qrcode": "^1.5.3",
"url": "^0.11.3", "url": "^0.11.3",
"uuid": "^9.0.1", "uuid": "^9.0.1",
"ws": "^8.14.2" "ws": "^8.14.2",
"yargs": "^17.7.2"
}, },
"devDependencies": { "devDependencies": {
"@types/jest": "^29.5.11", "@types/jest": "^29.5.11",
@ -1371,10 +1373,9 @@
} }
}, },
"node_modules/@types/yargs": { "node_modules/@types/yargs": {
"version": "17.0.32", "version": "17.0.33",
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz",
"integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==",
"dev": true,
"dependencies": { "dependencies": {
"@types/yargs-parser": "*" "@types/yargs-parser": "*"
} }
@ -1382,8 +1383,7 @@
"node_modules/@types/yargs-parser": { "node_modules/@types/yargs-parser": {
"version": "21.0.3", "version": "21.0.3",
"resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz",
"integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ=="
"dev": true
}, },
"node_modules/@types/yauzl": { "node_modules/@types/yauzl": {
"version": "2.10.0", "version": "2.10.0",
@ -2075,13 +2075,16 @@
"dev": true "dev": true
}, },
"node_modules/cliui": { "node_modules/cliui": {
"version": "6.0.0", "version": "8.0.1",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
"integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
"dependencies": { "dependencies": {
"string-width": "^4.2.0", "string-width": "^4.2.0",
"strip-ansi": "^6.0.0", "strip-ansi": "^6.0.1",
"wrap-ansi": "^6.2.0" "wrap-ansi": "^7.0.0"
},
"engines": {
"node": ">=12"
} }
}, },
"node_modules/clone-deep": { "node_modules/clone-deep": {
@ -2494,7 +2497,6 @@
"version": "3.1.1", "version": "3.1.1",
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
"integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
"dev": true,
"engines": { "engines": {
"node": ">=6" "node": ">=6"
} }
@ -3404,73 +3406,6 @@
} }
} }
}, },
"node_modules/jest-cli/node_modules/cliui": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
"integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
"dev": true,
"dependencies": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.1",
"wrap-ansi": "^7.0.0"
},
"engines": {
"node": ">=12"
}
},
"node_modules/jest-cli/node_modules/wrap-ansi": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
"strip-ansi": "^6.0.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
"node_modules/jest-cli/node_modules/y18n": {
"version": "5.0.8",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
"dev": true,
"engines": {
"node": ">=10"
}
},
"node_modules/jest-cli/node_modules/yargs": {
"version": "17.7.2",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
"integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
"dev": true,
"dependencies": {
"cliui": "^8.0.1",
"escalade": "^3.1.1",
"get-caller-file": "^2.0.5",
"require-directory": "^2.1.1",
"string-width": "^4.2.3",
"y18n": "^5.0.5",
"yargs-parser": "^21.1.1"
},
"engines": {
"node": ">=12"
}
},
"node_modules/jest-cli/node_modules/yargs-parser": {
"version": "21.1.1",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
"integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
"dev": true,
"engines": {
"node": ">=12"
}
},
"node_modules/jest-config": { "node_modules/jest-config": {
"version": "29.7.0", "version": "29.7.0",
"resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz",
@ -4722,6 +4657,67 @@
"node": ">=10.13.0" "node": ">=10.13.0"
} }
}, },
"node_modules/qrcode/node_modules/cliui": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
"integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
"dependencies": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.0",
"wrap-ansi": "^6.2.0"
}
},
"node_modules/qrcode/node_modules/wrap-ansi": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
"integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
"strip-ansi": "^6.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/qrcode/node_modules/y18n": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
"integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
},
"node_modules/qrcode/node_modules/yargs": {
"version": "15.4.1",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
"integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
"dependencies": {
"cliui": "^6.0.0",
"decamelize": "^1.2.0",
"find-up": "^4.1.0",
"get-caller-file": "^2.0.1",
"require-directory": "^2.1.1",
"require-main-filename": "^2.0.0",
"set-blocking": "^2.0.0",
"string-width": "^4.2.0",
"which-module": "^2.0.0",
"y18n": "^4.0.0",
"yargs-parser": "^18.1.2"
},
"engines": {
"node": ">=8"
}
},
"node_modules/qrcode/node_modules/yargs-parser": {
"version": "18.1.3",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
"integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
"dependencies": {
"camelcase": "^5.0.0",
"decamelize": "^1.2.0"
},
"engines": {
"node": ">=6"
}
},
"node_modules/qs": { "node_modules/qs": {
"version": "6.11.2", "version": "6.11.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz",
@ -5346,15 +5342,6 @@
"node": ">=10" "node": ">=10"
} }
}, },
"node_modules/ts-jest/node_modules/yargs-parser": {
"version": "21.1.1",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
"integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
"dev": true,
"engines": {
"node": ">=12"
}
},
"node_modules/ts-loader": { "node_modules/ts-loader": {
"version": "9.4.2", "version": "9.4.2",
"resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.2.tgz", "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.2.tgz",
@ -5698,16 +5685,19 @@
"dev": true "dev": true
}, },
"node_modules/wrap-ansi": { "node_modules/wrap-ansi": {
"version": "6.2.0", "version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dependencies": { "dependencies": {
"ansi-styles": "^4.0.0", "ansi-styles": "^4.0.0",
"string-width": "^4.1.0", "string-width": "^4.1.0",
"strip-ansi": "^6.0.0" "strip-ansi": "^6.0.0"
}, },
"engines": { "engines": {
"node": ">=8" "node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
} }
}, },
"node_modules/wrappy": { "node_modules/wrappy": {
@ -5750,9 +5740,12 @@
} }
}, },
"node_modules/y18n": { "node_modules/y18n": {
"version": "4.0.3", "version": "5.0.8",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
"integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
"engines": {
"node": ">=10"
}
}, },
"node_modules/yallist": { "node_modules/yallist": {
"version": "4.0.0", "version": "4.0.0",
@ -5761,36 +5754,28 @@
"dev": true "dev": true
}, },
"node_modules/yargs": { "node_modules/yargs": {
"version": "15.4.1", "version": "17.7.2",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
"integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
"dependencies": { "dependencies": {
"cliui": "^6.0.0", "cliui": "^8.0.1",
"decamelize": "^1.2.0", "escalade": "^3.1.1",
"find-up": "^4.1.0", "get-caller-file": "^2.0.5",
"get-caller-file": "^2.0.1",
"require-directory": "^2.1.1", "require-directory": "^2.1.1",
"require-main-filename": "^2.0.0", "string-width": "^4.2.3",
"set-blocking": "^2.0.0", "y18n": "^5.0.5",
"string-width": "^4.2.0", "yargs-parser": "^21.1.1"
"which-module": "^2.0.0",
"y18n": "^4.0.0",
"yargs-parser": "^18.1.2"
}, },
"engines": { "engines": {
"node": ">=8" "node": ">=12"
} }
}, },
"node_modules/yargs-parser": { "node_modules/yargs-parser": {
"version": "18.1.3", "version": "21.1.1",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
"integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
"dependencies": {
"camelcase": "^5.0.0",
"decamelize": "^1.2.0"
},
"engines": { "engines": {
"node": ">=6" "node": ">=12"
} }
}, },
"node_modules/yauzl": { "node_modules/yauzl": {

View file

@ -26,12 +26,14 @@
"webpack-cli": "^5.0.1" "webpack-cli": "^5.0.1"
}, },
"dependencies": { "dependencies": {
"@types/yargs": "^17.0.33",
"bufferutil": "^4.0.8", "bufferutil": "^4.0.8",
"http": "^0.0.1-security", "http": "^0.0.1-security",
"https": "^1.0.0", "https": "^1.0.0",
"qrcode": "^1.5.3", "qrcode": "^1.5.3",
"url": "^0.11.3", "url": "^0.11.3",
"uuid": "^9.0.1", "uuid": "^9.0.1",
"ws": "^8.14.2" "ws": "^8.14.2",
"yargs": "^17.7.2"
} }
} }

View file

@ -11,9 +11,11 @@ import * as http from 'http';
import * as url from 'url'; import * as url from 'url';
import { AddressInfo } from 'ws'; import { AddressInfo } from 'ws';
import { v4 as uuidv4 } from 'uuid'; import { v4 as uuidv4 } from 'uuid';
import yargs from 'yargs';
import { hideBin } from 'yargs/helpers';
export default class Main { export default class Main {
static shouldOpenMainWindow = true; static shouldOpenMainWindow = true;
static playerWindow: Electron.BrowserWindow; static playerWindow: Electron.BrowserWindow;
static mainWindow: Electron.BrowserWindow; static mainWindow: Electron.BrowserWindow;
static application: Electron.App; static application: Electron.App;
@ -51,7 +53,7 @@ export default class Main {
}); });
console.log('Update completed'); console.log('Update completed');
// Restart the app if the user clicks the 'Restart' button // Restart the app if the user clicks the 'Restart' button
if (restartPrompt.response === 0) { if (restartPrompt.response === 0) {
Main.application.relaunch(); Main.application.relaunch();
@ -96,7 +98,7 @@ export default class Main {
} }
} }
]) ])
tray.setContextMenu(contextMenu); tray.setContextMenu(contextMenu);
this.tray = tray; this.tray = tray;
} }
@ -106,7 +108,7 @@ export default class Main {
Main.discoveryService = new DiscoveryService(); Main.discoveryService = new DiscoveryService();
Main.discoveryService.start(); Main.discoveryService.start();
Main.tcpListenerService = new TcpListenerService(); Main.tcpListenerService = new TcpListenerService();
Main.webSocketListenerService = new WebSocketListenerService(); Main.webSocketListenerService = new WebSocketListenerService();
@ -121,10 +123,10 @@ export default class Main {
preload: path.join(__dirname, 'player/preload.js') preload: path.join(__dirname, 'player/preload.js')
} }
}); });
Main.playerWindow.setAlwaysOnTop(false, 'pop-up-menu'); Main.playerWindow.setAlwaysOnTop(false, 'pop-up-menu');
Main.playerWindow.show(); Main.playerWindow.show();
Main.playerWindow.loadFile(path.join(__dirname, 'player/index.html')); Main.playerWindow.loadFile(path.join(__dirname, 'player/index.html'));
Main.playerWindow.on('ready-to-show', async () => { Main.playerWindow.on('ready-to-show', async () => {
Main.playerWindow?.webContents?.send("play", await Main.proxyPlayIfRequired(message)); Main.playerWindow?.webContents?.send("play", await Main.proxyPlayIfRequired(message));
@ -132,19 +134,21 @@ export default class Main {
Main.playerWindow.on('closed', () => { Main.playerWindow.on('closed', () => {
Main.playerWindow = null; Main.playerWindow = null;
}); });
// Main.playerWindow?.webContents?.openDevTools();
} else { } else {
Main.playerWindow?.webContents?.send("play", await Main.proxyPlayIfRequired(message)); Main.playerWindow?.webContents?.send("play", await Main.proxyPlayIfRequired(message));
} }
}); });
l.emitter.on("pause", () => Main.playerWindow?.webContents?.send("pause")); l.emitter.on("pause", () => Main.playerWindow?.webContents?.send("pause"));
l.emitter.on("resume", () => Main.playerWindow?.webContents?.send("resume")); l.emitter.on("resume", () => Main.playerWindow?.webContents?.send("resume"));
l.emitter.on("stop", () => { l.emitter.on("stop", () => {
Main.playerWindow.close(); Main.playerWindow.close();
Main.playerWindow = null; Main.playerWindow = null;
}); });
l.emitter.on("seek", (message) => Main.playerWindow?.webContents?.send("seek", message)); l.emitter.on("seek", (message) => Main.playerWindow?.webContents?.send("seek", message));
l.emitter.on("setvolume", (message) => Main.playerWindow?.webContents?.send("setvolume", message)); l.emitter.on("setvolume", (message) => Main.playerWindow?.webContents?.send("setvolume", message));
l.emitter.on("setspeed", (message) => Main.playerWindow?.webContents?.send("setspeed", message)); l.emitter.on("setspeed", (message) => Main.playerWindow?.webContents?.send("setspeed", message));
@ -157,7 +161,7 @@ export default class Main {
ipcMain.on('send-playback-update', (event: IpcMainEvent, value: PlaybackUpdateMessage) => { ipcMain.on('send-playback-update', (event: IpcMainEvent, value: PlaybackUpdateMessage) => {
l.send(Opcode.PlaybackUpdate, value); l.send(Opcode.PlaybackUpdate, value);
}); });
ipcMain.on('send-volume-update', (event: IpcMainEvent, value: VolumeUpdateMessage) => { ipcMain.on('send-volume-update', (event: IpcMainEvent, value: VolumeUpdateMessage) => {
l.send(Opcode.VolumeUpdate, value); l.send(Opcode.VolumeUpdate, value);
}); });
@ -198,7 +202,7 @@ export default class Main {
const requestUrl = `http://${req.headers.host}${req.url}`; const requestUrl = `http://${req.headers.host}${req.url}`;
const proxyInfo = Main.proxiedFiles.get(requestUrl); const proxyInfo = Main.proxiedFiles.get(requestUrl);
if (!proxyInfo) { if (!proxyInfo) {
res.writeHead(404); res.writeHead(404);
res.end('Not found'); res.end('Not found');
@ -215,8 +219,8 @@ export default class Main {
'trailers', 'trailers',
'transfer-encoding', 'transfer-encoding',
'upgrade' 'upgrade'
]); ]);
const filteredHeaders = Object.fromEntries(Object.entries(req.headers) const filteredHeaders = Object.fromEntries(Object.entries(req.headers)
.filter(([key]) => !omitHeaders.has(key.toLowerCase())) .filter(([key]) => !omitHeaders.has(key.toLowerCase()))
.map(([key, value]) => [key, Array.isArray(value) ? value.join(', ') : value])); .map(([key, value]) => [key, Array.isArray(value) ? value.join(', ') : value]));
@ -232,7 +236,7 @@ export default class Main {
res.writeHead(proxyRes.statusCode, proxyRes.headers); res.writeHead(proxyRes.statusCode, proxyRes.headers);
proxyRes.pipe(res, { end: true }); proxyRes.pipe(res, { end: true });
}); });
req.pipe(proxyReq, { end: true }); req.pipe(proxyReq, { end: true });
proxyReq.on('error', (e) => { proxyReq.on('error', (e) => {
console.error(`Problem with request: ${e.message}`); console.error(`Problem with request: ${e.message}`);
@ -281,18 +285,18 @@ export default class Main {
static getAllIPv4Addresses() { static getAllIPv4Addresses() {
const interfaces = os.networkInterfaces(); const interfaces = os.networkInterfaces();
const ipv4Addresses: string[] = []; const ipv4Addresses: string[] = [];
for (const interfaceName in interfaces) { for (const interfaceName in interfaces) {
const addresses = interfaces[interfaceName]; const addresses = interfaces[interfaceName];
if (!addresses) continue; if (!addresses) continue;
for (const addressInfo of addresses) { for (const addressInfo of addresses) {
if (addressInfo.family === 'IPv4' && !addressInfo.internal) { if (addressInfo.family === 'IPv4' && !addressInfo.internal) {
ipv4Addresses.push(addressInfo.address); ipv4Addresses.push(addressInfo.address);
} }
} }
} }
return ipv4Addresses; return ipv4Addresses;
} }
@ -322,15 +326,22 @@ export default class Main {
Main.mainWindow.on('ready-to-show', () => { Main.mainWindow.on('ready-to-show', () => {
Main.mainWindow.webContents.send("device-info", {name: os.hostname(), addresses: Main.getAllIPv4Addresses()}); Main.mainWindow.webContents.send("device-info", {name: os.hostname(), addresses: Main.getAllIPv4Addresses()});
}); });
}
// Main.mainWindow.webContents.openDevTools();
}
static main(app: Electron.App) { static main(app: Electron.App) {
Main.application = app; Main.application = app;
const argv = process.argv; const argv = yargs(hideBin(process.argv))
if (argv.includes('--no-main-window')) { .parserConfiguration({
Main.shouldOpenMainWindow = false; 'boolean-negation': false
} })
.options({
'no-main-window': { type: 'boolean', default: false, desc: "Start minimized to tray" }
})
.parseSync();
Main.shouldOpenMainWindow = !argv.noMainWindow;
Main.application.on('ready', Main.onReady); Main.application.on('ready', Main.onReady);
Main.application.on('window-all-closed', () => { }); Main.application.on('window-all-closed', () => { });
} }