@andersbakken/fisk 4.0.32 → 4.0.33

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@andersbakken/fisk",
3
- "version": "4.0.32",
3
+ "version": "4.0.33",
4
4
  "description": "Fisk, a distributed compile system",
5
5
  "scripts": {
6
6
  "lint": "eslint . --ext .ts",
@@ -58,7 +58,7 @@
58
58
  "@types/fs-extra": "^9.0.13",
59
59
  "@types/humanize-duration": "^3.27.1",
60
60
  "@types/minimist": "^1.2.2",
61
- "@types/node": "^14.14.25",
61
+ "@types/node": "^14.18.63",
62
62
  "@types/posix": "^4.2.0",
63
63
  "@types/url-parse": "^1.4.8",
64
64
  "@types/ws": "^8.5.3",
@@ -52141,7 +52141,7 @@ class Server extends require$$0__default$2["default"] {
52141
52141
  return this.app;
52142
52142
  }
52143
52143
  listen() {
52144
- return new Promise((resolve) => {
52144
+ return new Promise((resolve, reject) => {
52145
52145
  this.app = express();
52146
52146
  this.app.use(bodyParser.urlencoded({ extended: true }));
52147
52147
  this.emit("listen", this.app);
@@ -52152,8 +52152,20 @@ class Server extends require$$0__default$2["default"] {
52152
52152
  });
52153
52153
  }
52154
52154
  this.server = require$$2__default["default"].createServer(this.app);
52155
- this.ws = new ws.Server({ noServer: true });
52156
- const port = this.option.int("port", 8097);
52155
+ const keyFile = this.option.string("key");
52156
+ const certFile = this.option.string("cert");
52157
+ let key;
52158
+ let cert;
52159
+ if (keyFile && certFile) {
52160
+ try {
52161
+ key = fs__default["default"].readFileSync(keyFile);
52162
+ cert = fs__default["default"].readFileSync(certFile);
52163
+ }
52164
+ catch (err) {
52165
+ reject(new Error(`Failed to read key (${keyFile}) or cert (${certFile}): ${err.message}`));
52166
+ return;
52167
+ }
52168
+ }
52157
52169
  let defaultBacklog = 128;
52158
52170
  try {
52159
52171
  defaultBacklog = parseInt(fs__default["default"].readFileSync("/proc/sys/net/core/somaxconn", "utf8")) || 128;
@@ -52162,6 +52174,9 @@ class Server extends require$$0__default$2["default"] {
52162
52174
  /* */
52163
52175
  }
52164
52176
  const backlog = this.option.int("backlog", defaultBacklog);
52177
+ this.ws = new ws.Server({ noServer: true });
52178
+ let waitingServers = 1;
52179
+ const port = this.option.int("port", 8097);
52165
52180
  this.server.listen({ port, backlog, host: "0.0.0.0" });
52166
52181
  this.server.on("upgrade", (req, socket, head) => {
52167
52182
  assert__default["default"](this.ws);
@@ -52169,15 +52184,6 @@ class Server extends require$$0__default$2["default"] {
52169
52184
  this._handleConnection(ws, req);
52170
52185
  });
52171
52186
  });
52172
- this.ws.on("headers", (headers, request) => {
52173
- const url = new urlParse(request.url, this.baseUrl);
52174
- headers.push("x-fisk-object-cache: " + (this.objectCache ? "true" : "false"));
52175
- if (url.pathname === "/monitor") {
52176
- const nonce = crypto__default["default"].randomBytes(256).toString("base64");
52177
- headers.push(`x-fisk-nonce: ${nonce}`);
52178
- this.nonces.set(request, nonce);
52179
- }
52180
- });
52181
52187
  this.server.on("error", (error) => {
52182
52188
  if (error.code === "EADDRINUSE") {
52183
52189
  console.log(`Port ${port} is in use...`);
@@ -52192,8 +52198,51 @@ class Server extends require$$0__default$2["default"] {
52192
52198
  }
52193
52199
  });
52194
52200
  this.server.once("listening", () => {
52195
- console.log("listening on", port);
52196
- resolve();
52201
+ console.log("http://listening on", port);
52202
+ if (!--waitingServers) {
52203
+ resolve();
52204
+ }
52205
+ });
52206
+ let securePort;
52207
+ if (key && cert) {
52208
+ securePort = this.option.int("securePort", 8098);
52209
+ this.secureServer = require$$1__default$1["default"].createServer({ key, cert }, this.app);
52210
+ this.secureServer.listen({ port: securePort, backlog, host: "0.0.0.0" });
52211
+ ++waitingServers;
52212
+ this.secureServer.on("error", (error) => {
52213
+ if (error.code === "EADDRINUSE") {
52214
+ console.log(`Port ${securePort} is in use...`);
52215
+ setTimeout(() => {
52216
+ assert__default["default"](this.secureServer);
52217
+ this.secureServer.listen({ port: securePort, backlog, host: "0.0.0.0" });
52218
+ }, 1000);
52219
+ }
52220
+ else {
52221
+ console.error("Got secure server error", error.message);
52222
+ this.emit("error", error);
52223
+ }
52224
+ });
52225
+ this.secureServer.on("upgrade", (req, socket, head) => {
52226
+ assert__default["default"](this.ws);
52227
+ this.ws.handleUpgrade(req, socket, head, (ws) => {
52228
+ this._handleConnection(ws, req);
52229
+ });
52230
+ });
52231
+ this.secureServer.once("listening", () => {
52232
+ console.log("https://listening on", securePort);
52233
+ if (!--waitingServers) {
52234
+ resolve();
52235
+ }
52236
+ });
52237
+ }
52238
+ this.ws.on("headers", (headers, request) => {
52239
+ const url = new urlParse(request.url, this.baseUrl);
52240
+ headers.push("x-fisk-object-cache: " + (this.objectCache ? "true" : "false"));
52241
+ if (url.pathname === "/monitor") {
52242
+ const nonce = crypto__default["default"].randomBytes(256).toString("base64");
52243
+ headers.push(`x-fisk-nonce: ${nonce}`);
52244
+ this.nonces.set(request, nonce);
52245
+ }
52197
52246
  });
52198
52247
  });
52199
52248
  }