cryptpad-server 0.0.1 → 0.0.3

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/build/http.js CHANGED
@@ -996,7 +996,6 @@ function requireCore() {
996
996
  const Util = requireCommonUtil$1();
997
997
  const Constants = requireConstants();
998
998
  const escapeKeyCharacters = Util.escapeKeyCharacters;
999
- __require$5();
1000
999
  const Crypto = __require$4();
1001
1000
  const Keys = requireKeys();
1002
1001
  Core.DEFAULT_LIMIT = 50 * 1024 * 1024;
@@ -1116,8 +1115,7 @@ function requireCore() {
1116
1115
  cb();
1117
1116
  };
1118
1117
  Core.getPaths = (mainConfig, isEnv) => {
1119
- const {index, config} = mainConfig;
1120
- Constants.paths;
1118
+ const {config} = mainConfig;
1121
1119
  const all = {
1122
1120
  basePath: config.basePath || config.base || "./data",
1123
1121
  filePath: config.filePath || "./datastore",
@@ -3479,7 +3477,7 @@ function requireLogger() {
3479
3477
  return logger;
3480
3478
  }
3481
3479
 
3482
- var version = "0.0.1";
3480
+ var version = "0.0.3";
3483
3481
 
3484
3482
  var require$$2 = {
3485
3483
  version
@@ -4649,60 +4647,69 @@ var hasRequiredCrypto;
4649
4647
  function requireCrypto() {
4650
4648
  if (hasRequiredCrypto) return crypto;
4651
4649
  hasRequiredCrypto = 1;
4652
- crypto = cryptoLib => {
4653
- let exports = {};
4654
- exports.decodeBase64 = msg => Buffer.from(msg, "base64");
4655
- exports.encodeBase64 = msg => Buffer.from(msg).toString("base64");
4656
- exports.decodeUTF8 = msg => Buffer.from(msg, "utf8");
4657
- exports.encodeUTF8 = msg => Buffer.from(msg).toString("utf8");
4650
+ const loadSodium = cryptoLib => {
4651
+ let sodiumLib = {};
4658
4652
  let SodiumNative, NaCl;
4659
4653
  switch (cryptoLib) {
4660
4654
  case "sodiumnative":
4661
- SodiumNative = require("sodium-native");
4662
- exports.sigVerify = (signedMessage, validateKey) => {
4663
- let msg = signedMessage.subarray(64);
4664
- let ok = SodiumNative.crypto_sign_open(msg, signedMessage, validateKey);
4665
- if (!ok) {
4666
- return false;
4667
- }
4668
- return msg;
4669
- };
4670
- exports.detachedVerify = (signedBuffer, signatureBuffer, validateKey) => SodiumNative.crypto_sign_verify_detached(signatureBuffer, signedBuffer, validateKey);
4671
- exports.secretbox = (message, nonce, secretKey) => {
4672
- let secretBox = Buffer.alloc(message.length + SodiumNative.crypto_box_MACBYTES);
4673
- SodiumNative.crypto_secretbox_easy(secretBox, message, nonce, secretKey);
4674
- return secretBox;
4675
- };
4676
- exports.secretboxOpen = (secretBox, nonce, secretKey) => {
4677
- let msg = Buffer.alloc(secretBox.length - SodiumNative.crypto_secretbox_MACBYTES);
4678
- if (SodiumNative.crypto_secretbox_open_easy(msg, secretBox, nonce, secretKey)) {
4655
+ try {
4656
+ SodiumNative = require("sodium-native");
4657
+ sodiumLib.sigVerify = (signedMessage, validateKey) => {
4658
+ let msg = signedMessage.subarray(64);
4659
+ let ok = SodiumNative.crypto_sign_open(msg, signedMessage, validateKey);
4660
+ if (!ok) {
4661
+ return false;
4662
+ }
4679
4663
  return msg;
4680
- } else {
4681
- return void 0;
4682
- }
4683
- };
4684
- exports.publicKeyFromSecretKey = secretKey => {
4685
- let pk = new Uint8Array(SodiumNative.crypto_sign_PUBLICKEYBYTES);
4686
- SodiumNative.crypto_sign_ed25519_sk_to_pk(pk, secretKey);
4687
- return pk;
4688
- };
4689
- exports.hash = message => {
4690
- let out = Buffer.alloc(SodiumNative.crypto_hash_sha512_BYTES);
4691
- SodiumNative.crypto_hash_sha512(out, message);
4692
- return out;
4693
- };
4664
+ };
4665
+ sodiumLib.detachedVerify = (signedBuffer, signatureBuffer, validateKey) => SodiumNative.crypto_sign_verify_detached(signatureBuffer, signedBuffer, validateKey);
4666
+ sodiumLib.secretbox = (message, nonce, secretKey) => {
4667
+ let secretBox = Buffer.alloc(message.length + SodiumNative.crypto_box_MACBYTES);
4668
+ SodiumNative.crypto_secretbox_easy(secretBox, message, nonce, secretKey);
4669
+ return secretBox;
4670
+ };
4671
+ sodiumLib.secretboxOpen = (secretBox, nonce, secretKey) => {
4672
+ let msg = Buffer.alloc(secretBox.length - SodiumNative.crypto_secretbox_MACBYTES);
4673
+ if (SodiumNative.crypto_secretbox_open_easy(msg, secretBox, nonce, secretKey)) {
4674
+ return msg;
4675
+ } else {
4676
+ return void 0;
4677
+ }
4678
+ };
4679
+ sodiumLib.publicKeyFromSecretKey = secretKey => {
4680
+ let pk = new Uint8Array(SodiumNative.crypto_sign_PUBLICKEYBYTES);
4681
+ SodiumNative.crypto_sign_ed25519_sk_to_pk(pk, secretKey);
4682
+ return pk;
4683
+ };
4684
+ sodiumLib.hash = message => {
4685
+ let out = Buffer.alloc(SodiumNative.crypto_hash_sha512_BYTES);
4686
+ SodiumNative.crypto_hash_sha512(out, message);
4687
+ return out;
4688
+ };
4689
+ } catch (err) {
4690
+ console.error("Error in loading sodium-native: fallback on tweetnacl");
4691
+ return loadSodium("");
4692
+ }
4694
4693
  break;
4695
4694
 
4696
4695
  default:
4697
4696
  NaCl = require$$0$2;
4698
- exports.sigVerify = NaCl.sign.open;
4699
- exports.detachedVerify = NaCl.sign.detached.verify;
4700
- exports.secretbox = NaCl.secretbox;
4701
- exports.secretboxOpen = (secretBox, nonce, secretKey) => Buffer.from(NaCl.secretbox.open(secretBox, nonce, secretKey));
4702
- exports.publicKeyFromSecretKey = secretKey => NaCl.sign?.keyPair?.fromSecretKey(secretKey)?.publicKey;
4703
- exports.hash = msg => Buffer.from(NaCl.hash(msg));
4697
+ sodiumLib.sigVerify = NaCl.sign.open;
4698
+ sodiumLib.detachedVerify = NaCl.sign.detached.verify;
4699
+ sodiumLib.secretbox = NaCl.secretbox;
4700
+ sodiumLib.secretboxOpen = (secretBox, nonce, secretKey) => Buffer.from(NaCl.secretbox.open(secretBox, nonce, secretKey));
4701
+ sodiumLib.publicKeyFromSecretKey = secretKey => NaCl.sign?.keyPair?.fromSecretKey(secretKey)?.publicKey;
4702
+ sodiumLib.hash = msg => Buffer.from(NaCl.hash(msg));
4704
4703
  break;
4705
4704
  }
4705
+ return sodiumLib;
4706
+ };
4707
+ crypto = cryptoLib => {
4708
+ const exports = loadSodium(cryptoLib);
4709
+ exports.decodeBase64 = msg => Buffer.from(msg, "base64");
4710
+ exports.encodeBase64 = msg => Buffer.from(msg).toString("base64");
4711
+ exports.decodeUTF8 = msg => Buffer.from(msg, "utf8");
4712
+ exports.encodeUTF8 = msg => Buffer.from(msg).toString("utf8");
4706
4713
  return exports;
4707
4714
  };
4708
4715
  return crypto;
@@ -4754,13 +4761,13 @@ function require_interface() {
4754
4761
  return;
4755
4762
  }
4756
4763
  const {type: rcvType, idx, challenge: challengeBase64, nonce: nonceBase64} = data;
4757
- const challenge = new Uint8Array(Buffer.from(challengeBase64, "base64"));
4758
- const nonce = new Uint8Array(Buffer.from(nonceBase64, "base64"));
4764
+ const challenge = new Uint8Array(Crypto.decodeBase64(challengeBase64));
4765
+ const nonce = new Uint8Array(Crypto.decodeBase64(nonceBase64));
4759
4766
  if (ctx.ChallengesCache[challengeBase64]) {
4760
4767
  other.disconnect();
4761
4768
  return ctx.Log.error("INTERFACE_CHALLENGE_ERROR", "Reused challenge");
4762
4769
  }
4763
- const msg = Buffer.from(Crypto.secretboxOpen(challenge, nonce, ctx.nodes_key));
4770
+ const msg = Crypto.secretboxOpen(challenge, nonce, ctx.nodes_key);
4764
4771
  if (!msg) {
4765
4772
  other.disconnect();
4766
4773
  return ctx.Log.error("INTERFACE_CHALLENGE_ERROR", "Bad challenge answer");
@@ -4835,13 +4842,13 @@ function require_interface() {
4835
4842
  let uid = Util.guid(ctx.pendingConnections);
4836
4843
  ctx.pendingConnections[uid] = coreId;
4837
4844
  const nonce = NodeCrypto.randomBytes(24);
4838
- const msg = Buffer.from(`${ctx.myType}:${ctx.myNumber}:${String(Date.now())}`, "utf-8");
4839
- const challenge = Crypto.secretbox(msg, nonce, ctx.nodes_key).toString("base64");
4845
+ const msg = Crypto.decodeUTF8(`${ctx.myType}:${ctx.myNumber}:${String(Date.now())}`);
4846
+ const challenge = Crypto.encodeBase64(Crypto.secretbox(msg, nonce, ctx.nodes_key));
4840
4847
  createHandlers(ctx, other);
4841
4848
  other.send([ uid, "IDENTITY", {
4842
4849
  type: ctx.myType,
4843
4850
  idx: ctx.myNumber,
4844
- nonce: nonce.toString("base64"),
4851
+ nonce: Crypto.encodeBase64(nonce),
4845
4852
  challenge
4846
4853
  } ]);
4847
4854
  };
@@ -2,6 +2,8 @@
2
2
 
3
3
  var require$$0$2 = require("express");
4
4
 
5
+ var require$$1$2 = require("mime-types");
6
+
5
7
  var node_module = require("node:module");
6
8
 
7
9
  var require$$1$1 = require("fs-extra");
@@ -16,9 +18,9 @@ var require$$0$1 = require("stream-to-pull-stream");
16
18
 
17
19
  var require$$1 = require("pull-stream");
18
20
 
19
- var require$$5 = require("http-proxy-middleware");
21
+ var require$$6 = require("http-proxy-middleware");
20
22
 
21
- var require$$7 = require("connect-gzip-static");
23
+ var require$$8 = require("connect-gzip-static");
22
24
 
23
25
  var _documentCurrentScript = typeof document !== "undefined" ? document.currentScript : null;
24
26
 
@@ -1004,7 +1006,6 @@ function requireCore() {
1004
1006
  const Util = requireCommonUtil$1();
1005
1007
  const Constants = requireConstants();
1006
1008
  const escapeKeyCharacters = Util.escapeKeyCharacters;
1007
- __require$2();
1008
1009
  const Crypto = __require();
1009
1010
  const Keys = requireKeys();
1010
1011
  Core.DEFAULT_LIMIT = 50 * 1024 * 1024;
@@ -1124,8 +1125,7 @@ function requireCore() {
1124
1125
  cb();
1125
1126
  };
1126
1127
  Core.getPaths = (mainConfig, isEnv) => {
1127
- const {index, config} = mainConfig;
1128
- Constants.paths;
1128
+ const {config} = mainConfig;
1129
1129
  const all = {
1130
1130
  basePath: config.basePath || config.base || "./data",
1131
1131
  filePath: config.filePath || "./datastore",
@@ -3529,7 +3529,7 @@ function requireDefaults() {
3529
3529
  return defaults.exports;
3530
3530
  }
3531
3531
 
3532
- var version = "0.0.1";
3532
+ var version = "0.0.3";
3533
3533
 
3534
3534
  var require$$2 = {
3535
3535
  version
@@ -4330,14 +4330,16 @@ function requireWorker() {
4330
4330
  if (hasRequiredWorker) return worker$1;
4331
4331
  hasRequiredWorker = 1;
4332
4332
  const Express = require$$0$2;
4333
+ const Mime = require$$1$2;
4333
4334
  const Http = require("node:http");
4335
+ const Https = require("node:https");
4334
4336
  const Path = __require$2();
4335
4337
  const Fs = __require$1();
4336
4338
  const Logger = requireLogger();
4337
4339
  const Util = requireCommonUtil$1();
4338
- const {createProxyMiddleware} = require$$5;
4340
+ const {createProxyMiddleware} = require$$6;
4339
4341
  const Default = requireDefaults();
4340
- const gzipStatic = require$$7;
4342
+ const gzipStatic = require$$8;
4341
4343
  const Environment = requireEnv();
4342
4344
  const {setHeaders} = requireHeaders();
4343
4345
  const COMMANDS = {};
@@ -4350,9 +4352,7 @@ function requireWorker() {
4350
4352
  warn: () => {},
4351
4353
  info: () => {}
4352
4354
  };
4353
- Express.static.mime.define({
4354
- "application/wasm": [ "wasm" ]
4355
- });
4355
+ Mime.lookup("wasm");
4356
4356
  const initFeedback = (Env, app) => {
4357
4357
  if (!Env.logFeedback) {
4358
4358
  return;
@@ -4422,6 +4422,28 @@ function requireWorker() {
4422
4422
  app.use("/cryptpad_websocket", wsProxy);
4423
4423
  app.use("/extensions.js", httpProxy);
4424
4424
  app.use("/api", httpProxy);
4425
+ const checkAllStores = (req, res) => {
4426
+ setHeaders(Env, req, res);
4427
+ const promiseResponses = storageList.map(baseUrl => new Promise((res, rej) => {
4428
+ const protocol = new URL(baseUrl).protocol;
4429
+ if (![ "http:", "https:" ].includes(protocol)) {
4430
+ return rej();
4431
+ }
4432
+ const H = protocol === "http:" ? Http : Https;
4433
+ H.get(new URL(req.url, baseUrl), {
4434
+ method: "HEAD"
4435
+ }, resp => {
4436
+ const {statusCode} = resp;
4437
+ if (statusCode !== 200) {
4438
+ return rej();
4439
+ }
4440
+ res();
4441
+ });
4442
+ }));
4443
+ Promise.all(promiseResponses).then(() => res.status(200).send("PLACEHOLDER")).catch(() => res.status(404).end());
4444
+ };
4445
+ app.get("/blob/placeholder.txt", checkAllStores);
4446
+ app.get("/block/placeholder.txt", checkAllStores);
4425
4447
  const storeProxy = createProxyMiddleware({
4426
4448
  router: req => {
4427
4449
  const split = req.url.split("/");
@@ -18,8 +18,6 @@ var require$$1$1 = require("pull-stream");
18
18
 
19
19
  var require$$0$2 = require("tweetnacl/nacl-fast");
20
20
 
21
- var require$$11 = require("body-parser");
22
-
23
21
  var _documentCurrentScript = typeof document !== "undefined" ? document.currentScript : null;
24
22
 
25
23
  function getDefaultExportFromCjs(x) {
@@ -981,7 +979,6 @@ function requireCore() {
981
979
  const Util = requireCommonUtil$1();
982
980
  const Constants = requireConstants();
983
981
  const escapeKeyCharacters = Util.escapeKeyCharacters;
984
- __require$2();
985
982
  const Crypto = __require$1();
986
983
  const Keys = requireKeys();
987
984
  Core.DEFAULT_LIMIT = 50 * 1024 * 1024;
@@ -1101,8 +1098,7 @@ function requireCore() {
1101
1098
  cb();
1102
1099
  };
1103
1100
  Core.getPaths = (mainConfig, isEnv) => {
1104
- const {index, config} = mainConfig;
1105
- Constants.paths;
1101
+ const {config} = mainConfig;
1106
1102
  const all = {
1107
1103
  basePath: config.basePath || config.base || "./data",
1108
1104
  filePath: config.filePath || "./datastore",
@@ -1425,6 +1421,27 @@ function requireBlock$1() {
1425
1421
  }, cb);
1426
1422
  });
1427
1423
  };
1424
+ Block.rootPlaceholderCreate = (Env, _cb) => {
1425
+ const cb = Util.once(Util.mkAsync(_cb));
1426
+ nThen(w => {
1427
+ Fse.mkdirp(Env.paths.block, w(err => {
1428
+ if (err) {
1429
+ Env.Log.error("BLOCK_FOLDER_CREATE_FAILED", err);
1430
+ w.abort();
1431
+ return cb(err);
1432
+ }
1433
+ }));
1434
+ }).nThen(w => {
1435
+ const fullPath = Path.join(Env.paths.block, "placeholder.txt");
1436
+ Fs.writeFile(fullPath, "PLACEHOLDER\n", w(err => {
1437
+ if (err) {
1438
+ Env.Log.error("BLOCK_PLACEHOLDER_CREATE_FAILED", err);
1439
+ w.abort();
1440
+ return cb(err);
1441
+ }
1442
+ }));
1443
+ }).nThen(() => cb());
1444
+ };
1428
1445
  })(block$1);
1429
1446
  return block$1.exports;
1430
1447
  }
@@ -2528,60 +2545,69 @@ var hasRequiredCrypto;
2528
2545
  function requireCrypto() {
2529
2546
  if (hasRequiredCrypto) return crypto;
2530
2547
  hasRequiredCrypto = 1;
2531
- crypto = cryptoLib => {
2532
- let exports = {};
2533
- exports.decodeBase64 = msg => Buffer.from(msg, "base64");
2534
- exports.encodeBase64 = msg => Buffer.from(msg).toString("base64");
2535
- exports.decodeUTF8 = msg => Buffer.from(msg, "utf8");
2536
- exports.encodeUTF8 = msg => Buffer.from(msg).toString("utf8");
2548
+ const loadSodium = cryptoLib => {
2549
+ let sodiumLib = {};
2537
2550
  let SodiumNative, NaCl;
2538
2551
  switch (cryptoLib) {
2539
2552
  case "sodiumnative":
2540
- SodiumNative = require("sodium-native");
2541
- exports.sigVerify = (signedMessage, validateKey) => {
2542
- let msg = signedMessage.subarray(64);
2543
- let ok = SodiumNative.crypto_sign_open(msg, signedMessage, validateKey);
2544
- if (!ok) {
2545
- return false;
2546
- }
2547
- return msg;
2548
- };
2549
- exports.detachedVerify = (signedBuffer, signatureBuffer, validateKey) => SodiumNative.crypto_sign_verify_detached(signatureBuffer, signedBuffer, validateKey);
2550
- exports.secretbox = (message, nonce, secretKey) => {
2551
- let secretBox = Buffer.alloc(message.length + SodiumNative.crypto_box_MACBYTES);
2552
- SodiumNative.crypto_secretbox_easy(secretBox, message, nonce, secretKey);
2553
- return secretBox;
2554
- };
2555
- exports.secretboxOpen = (secretBox, nonce, secretKey) => {
2556
- let msg = Buffer.alloc(secretBox.length - SodiumNative.crypto_secretbox_MACBYTES);
2557
- if (SodiumNative.crypto_secretbox_open_easy(msg, secretBox, nonce, secretKey)) {
2553
+ try {
2554
+ SodiumNative = require("sodium-native");
2555
+ sodiumLib.sigVerify = (signedMessage, validateKey) => {
2556
+ let msg = signedMessage.subarray(64);
2557
+ let ok = SodiumNative.crypto_sign_open(msg, signedMessage, validateKey);
2558
+ if (!ok) {
2559
+ return false;
2560
+ }
2558
2561
  return msg;
2559
- } else {
2560
- return void 0;
2561
- }
2562
- };
2563
- exports.publicKeyFromSecretKey = secretKey => {
2564
- let pk = new Uint8Array(SodiumNative.crypto_sign_PUBLICKEYBYTES);
2565
- SodiumNative.crypto_sign_ed25519_sk_to_pk(pk, secretKey);
2566
- return pk;
2567
- };
2568
- exports.hash = message => {
2569
- let out = Buffer.alloc(SodiumNative.crypto_hash_sha512_BYTES);
2570
- SodiumNative.crypto_hash_sha512(out, message);
2571
- return out;
2572
- };
2562
+ };
2563
+ sodiumLib.detachedVerify = (signedBuffer, signatureBuffer, validateKey) => SodiumNative.crypto_sign_verify_detached(signatureBuffer, signedBuffer, validateKey);
2564
+ sodiumLib.secretbox = (message, nonce, secretKey) => {
2565
+ let secretBox = Buffer.alloc(message.length + SodiumNative.crypto_box_MACBYTES);
2566
+ SodiumNative.crypto_secretbox_easy(secretBox, message, nonce, secretKey);
2567
+ return secretBox;
2568
+ };
2569
+ sodiumLib.secretboxOpen = (secretBox, nonce, secretKey) => {
2570
+ let msg = Buffer.alloc(secretBox.length - SodiumNative.crypto_secretbox_MACBYTES);
2571
+ if (SodiumNative.crypto_secretbox_open_easy(msg, secretBox, nonce, secretKey)) {
2572
+ return msg;
2573
+ } else {
2574
+ return void 0;
2575
+ }
2576
+ };
2577
+ sodiumLib.publicKeyFromSecretKey = secretKey => {
2578
+ let pk = new Uint8Array(SodiumNative.crypto_sign_PUBLICKEYBYTES);
2579
+ SodiumNative.crypto_sign_ed25519_sk_to_pk(pk, secretKey);
2580
+ return pk;
2581
+ };
2582
+ sodiumLib.hash = message => {
2583
+ let out = Buffer.alloc(SodiumNative.crypto_hash_sha512_BYTES);
2584
+ SodiumNative.crypto_hash_sha512(out, message);
2585
+ return out;
2586
+ };
2587
+ } catch (err) {
2588
+ console.error("Error in loading sodium-native: fallback on tweetnacl");
2589
+ return loadSodium("");
2590
+ }
2573
2591
  break;
2574
2592
 
2575
2593
  default:
2576
2594
  NaCl = require$$0$2;
2577
- exports.sigVerify = NaCl.sign.open;
2578
- exports.detachedVerify = NaCl.sign.detached.verify;
2579
- exports.secretbox = NaCl.secretbox;
2580
- exports.secretboxOpen = (secretBox, nonce, secretKey) => Buffer.from(NaCl.secretbox.open(secretBox, nonce, secretKey));
2581
- exports.publicKeyFromSecretKey = secretKey => NaCl.sign?.keyPair?.fromSecretKey(secretKey)?.publicKey;
2582
- exports.hash = msg => Buffer.from(NaCl.hash(msg));
2595
+ sodiumLib.sigVerify = NaCl.sign.open;
2596
+ sodiumLib.detachedVerify = NaCl.sign.detached.verify;
2597
+ sodiumLib.secretbox = NaCl.secretbox;
2598
+ sodiumLib.secretboxOpen = (secretBox, nonce, secretKey) => Buffer.from(NaCl.secretbox.open(secretBox, nonce, secretKey));
2599
+ sodiumLib.publicKeyFromSecretKey = secretKey => NaCl.sign?.keyPair?.fromSecretKey(secretKey)?.publicKey;
2600
+ sodiumLib.hash = msg => Buffer.from(NaCl.hash(msg));
2583
2601
  break;
2584
2602
  }
2603
+ return sodiumLib;
2604
+ };
2605
+ crypto = cryptoLib => {
2606
+ const exports = loadSodium(cryptoLib);
2607
+ exports.decodeBase64 = msg => Buffer.from(msg, "base64");
2608
+ exports.encodeBase64 = msg => Buffer.from(msg).toString("base64");
2609
+ exports.decodeUTF8 = msg => Buffer.from(msg, "utf8");
2610
+ exports.encodeUTF8 = msg => Buffer.from(msg).toString("utf8");
2585
2611
  return exports;
2586
2612
  };
2587
2613
  return crypto;
@@ -2853,7 +2879,7 @@ function requireMfa() {
2853
2879
  return mfa.exports;
2854
2880
  }
2855
2881
 
2856
- var version = "0.0.1";
2882
+ var version = "0.0.3";
2857
2883
 
2858
2884
  var require$$2 = {
2859
2885
  version
@@ -7973,7 +7999,6 @@ function requireCluster() {
7973
7999
  const Util = requireCommonUtil$1();
7974
8000
  const MFA = requireMfa();
7975
8001
  const Sessions = requireSessions();
7976
- const bodyParser = require$$11;
7977
8002
  const Fs = __require();
7978
8003
  const Environment = requireEnv();
7979
8004
  const Logger = requireLogger();
@@ -8008,7 +8033,7 @@ function requireCluster() {
8008
8033
  Env.Log.error("WORKER__" + errLabel, info);
8009
8034
  });
8010
8035
  const initServerHandlers = (Env, app) => {
8011
- app.use(bodyParser.urlencoded({
8036
+ app.use(Express.urlencoded({
8012
8037
  extended: true
8013
8038
  }));
8014
8039
  app.use("/blob", function(req, res, next) {
@@ -8235,7 +8260,7 @@ function requireCluster() {
8235
8260
  res.statusCode = 204;
8236
8261
  return void res.end();
8237
8262
  }
8238
- const {chunk, sig, edPublic} = req.body;
8263
+ const {chunk, sig, edPublic} = req.body || {};
8239
8264
  const forbidden = reason => void res.status(403).send({
8240
8265
  error: reason
8241
8266
  });