Add daemon host option and default to localhost instead of all addresses

This commit is contained in:
hensm
2022-08-16 00:16:17 +01:00
parent cb6e9226de
commit 170b80283d
3 changed files with 41 additions and 17 deletions

View File

@@ -8,7 +8,13 @@ import { Readable } from "stream";
import { DecodeTransform, EncodeTransform } from "./transforms";
export function init(port: number, serverPassword?: string) {
interface DaemonOpts {
host: string;
port: number;
password: string;
}
export function init(opts: DaemonOpts) {
const server = http.createServer();
const wss = new WebSocket.Server({ noServer: true });
@@ -65,14 +71,14 @@ export function init(port: number, serverPassword?: string) {
* server password specified in launch options.
*/
function authenticate(req: IncomingMessage) {
if (!serverPassword) return true;
if (!opts.password) return true;
const password = new URL(
req.url!,
`http://${req.headers.host}`
).searchParams.get("password");
return password === serverPassword;
return password === opts.password;
}
server.on("upgrade", (req, socket, head) => {
@@ -113,5 +119,5 @@ export function init(port: number, serverPassword?: string) {
res.end();
});
server.listen(port);
server.listen({ port: opts.port, host: opts.host });
}