@scrypted/server 0.138.8 → 0.138.9

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.
@@ -30,30 +30,30 @@ const plugin_1 = require("./services/plugin");
30
30
  const users_1 = require("./services/users");
31
31
  const sleep_1 = require("./sleep");
32
32
  const usertoken_1 = require("./usertoken");
33
- const stream_1 = require("stream");
34
- const listenSet = new Set();
33
+ const listenSet = new net_1.default.BlockList();
35
34
  const { SCRYPTED_SERVER_LISTEN_HOSTNAMES } = process_1.default.env;
36
35
  if (SCRYPTED_SERVER_LISTEN_HOSTNAMES) {
37
- listenSet.add('127.0.0.1');
36
+ // add ipv4 and ipv6 loopback
37
+ listenSet.addAddress('127.0.0.1');
38
+ listenSet.addAddress('::1', 'ipv6');
38
39
  for (const hostname of SCRYPTED_SERVER_LISTEN_HOSTNAMES.split(',')) {
39
- listenSet.add(hostname);
40
+ if (net_1.default.isIPv4(hostname))
41
+ listenSet.addAddress(hostname);
42
+ else if (net_1.default.isIPv6(hostname))
43
+ listenSet.addAddress(hostname, 'ipv6');
44
+ else
45
+ throw new Error('Invalid SCRYPTED_SERVER_LISTEN_HOSTNAME: ' + hostname);
40
46
  }
41
47
  }
42
- else {
43
- listenSet.add(undefined);
44
- }
45
- async function listenServerPort(env, port, createServer) {
46
- for (const hostname of listenSet) {
47
- const server = createServer();
48
- server.listen(port, hostname);
49
- try {
50
- await (0, events_1.once)(server, 'listening');
51
- }
52
- catch (e) {
53
- console.error(`Failed to listen on port ${port}. It may be in use.`);
54
- console.error(`Use the environment variable ${env} to change the port.`);
55
- throw e;
56
- }
48
+ async function listenServerPort(env, port, server) {
49
+ server.listen(port);
50
+ try {
51
+ await (0, events_1.once)(server, 'listening');
52
+ }
53
+ catch (e) {
54
+ console.error(`Failed to listen on port ${port}. It may be in use.`);
55
+ console.error(`Use the environment variable ${env} to change the port.`);
56
+ throw e;
57
57
  }
58
58
  }
59
59
  (0, source_map_support_1.install)({
@@ -68,9 +68,11 @@ async function doconnect() {
68
68
  target.once('connect', () => resolve(target));
69
69
  });
70
70
  }
71
- const debugServerEvents = new stream_1.EventEmitter();
72
- listenServerPort('SCRYPTED_DEBUG_PORT', server_settings_1.SCRYPTED_DEBUG_PORT, () => net_1.default.createServer(async (socket) => {
73
- debugServerEvents.emit('connection', socket);
71
+ const debugServer = net_1.default.createServer(async (socket) => {
72
+ if (listenSet.rules.length && !listenSet.check(socket.remoteAddress)) {
73
+ socket.destroy();
74
+ return;
75
+ }
74
76
  if (!workerInspectPort) {
75
77
  socket.destroy();
76
78
  return;
@@ -95,7 +97,8 @@ listenServerPort('SCRYPTED_DEBUG_PORT', server_settings_1.SCRYPTED_DEBUG_PORT, (
95
97
  }
96
98
  console.warn('debugger connect timed out');
97
99
  socket.destroy();
98
- }))
100
+ });
101
+ listenServerPort('SCRYPTED_DEBUG_PORT', server_settings_1.SCRYPTED_DEBUG_PORT, debugServer)
99
102
  .catch(() => { });
100
103
  const app = (0, express_1.default)();
101
104
  app.set('trust proxy', 'loopback');
@@ -105,6 +108,15 @@ app.use(body_parser_1.default.urlencoded({ extended: false }));
105
108
  app.use(body_parser_1.default.json());
106
109
  // parse some custom thing into a Buffer
107
110
  app.use(body_parser_1.default.raw({ type: 'application/*', limit: 100000000 }));
111
+ if (listenSet.rules.length) {
112
+ app.use((req, res, next) => {
113
+ if (!listenSet.check(req.socket.remoteAddress)) {
114
+ res.status(403).send('Access denied on this address');
115
+ return;
116
+ }
117
+ next();
118
+ });
119
+ }
108
120
  async function start(mainFilename, options) {
109
121
  console.log('Scrypted server starting.');
110
122
  const volumeDir = (0, plugin_volume_1.getScryptedVolume)();
@@ -329,7 +341,7 @@ async function start(mainFilename, options) {
329
341
  const clusterMode = (0, cluster_setup_1.getScryptedClusterMode)();
330
342
  if (clusterMode?.[0] === 'server') {
331
343
  console.log('Cluster server starting.');
332
- await listenServerPort('SCRYPTED_CLUSTER_SERVER', clusterMode[2], () => (0, scrypted_cluster_main_1.createClusterServer)(mainFilename, scrypted, keyPair));
344
+ await listenServerPort('SCRYPTED_CLUSTER_SERVER', clusterMode[2], (0, scrypted_cluster_main_1.createClusterServer)(mainFilename, scrypted, keyPair));
333
345
  }
334
346
  await scrypted.start();
335
347
  app.post('/web/component/restore', async (req, res) => {
@@ -423,7 +435,7 @@ async function start(mainFilename, options) {
423
435
  }
424
436
  const waitDebug = new Promise((resolve, reject) => {
425
437
  setTimeout(() => reject(new Error('timed out waiting for debug session')), 30000);
426
- debugServerEvents.on('connection', resolve);
438
+ debugServer.on('connection', resolve);
427
439
  });
428
440
  waitDebug.catch(() => { });
429
441
  workerInspectPort = Math.round(Math.random() * 10000) + 30000;
@@ -670,16 +682,12 @@ async function start(mainFilename, options) {
670
682
  });
671
683
  return server;
672
684
  };
673
- await listenServerPort('SCRYPTED_SECURE_PORT', server_settings_1.SCRYPTED_SECURE_PORT, () => {
674
- return hookUpgrade(https_1.default.createServer(mergedHttpsServerOptions, app));
675
- });
676
- await listenServerPort('SCRYPTED_INSECURE_PORT', server_settings_1.SCRYPTED_INSECURE_PORT, () => {
677
- return hookUpgrade(http_1.default.createServer(app));
678
- });
685
+ await listenServerPort('SCRYPTED_SECURE_PORT', server_settings_1.SCRYPTED_SECURE_PORT, hookUpgrade(https_1.default.createServer(mergedHttpsServerOptions, app)));
686
+ await listenServerPort('SCRYPTED_INSECURE_PORT', server_settings_1.SCRYPTED_INSECURE_PORT, hookUpgrade(http_1.default.createServer(app)));
679
687
  console.log('#######################################################');
680
688
  console.log(`Scrypted Volume : ${volumeDir}`);
681
689
  console.log(`Scrypted Server (Local) : https://localhost:${server_settings_1.SCRYPTED_SECURE_PORT}/`);
682
- for (const address of SCRYPTED_SERVER_LISTEN_HOSTNAMES ? listenSet : (0, ip_1.getUsableNetworkAddresses)()) {
690
+ for (const address of SCRYPTED_SERVER_LISTEN_HOSTNAMES ? SCRYPTED_SERVER_LISTEN_HOSTNAMES.split(',') : (0, ip_1.getUsableNetworkAddresses)()) {
683
691
  console.log(`Scrypted Server (Remote) : https://${address}:${server_settings_1.SCRYPTED_SECURE_PORT}/`);
684
692
  }
685
693
  console.log(`Version: : ${await scrypted.info.getVersion()}`);
@@ -1 +1 @@
1
- {"version":3,"file":"scrypted-server-main.js","sourceRoot":"","sources":["../src/scrypted-server-main.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scrypted-server-main.js","sourceRoot":"","sources":["../src/scrypted-server-main.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scrypted/server",
3
- "version": "0.138.8",
3
+ "version": "0.138.9",
4
4
  "description": "",
5
5
  "dependencies": {
6
6
  "@scrypted/ffmpeg-static": "^6.1.0-build3",
@@ -11,8 +11,8 @@ import net from 'net';
11
11
  import os from 'os';
12
12
  import path from 'path';
13
13
  import process from 'process';
14
- import tls from 'tls';
15
14
  import { install as installSourceMapSupport } from 'source-map-support';
15
+ import tls from 'tls';
16
16
  import { createSelfSignedCertificate, CURRENT_SELF_SIGNED_CERTIFICATE_VERSION } from './cert';
17
17
  import { getScryptedClusterMode } from './cluster/cluster-setup';
18
18
  import { Plugin, ScryptedUser, Settings } from './db-types';
@@ -27,34 +27,34 @@ import type { ServiceControl } from './services/service-control';
27
27
  import { setScryptedUserPassword, UsersService } from './services/users';
28
28
  import { sleep } from './sleep';
29
29
  import { ONE_DAY_MILLISECONDS, UserToken } from './usertoken';
30
- import { EventEmitter } from 'stream';
31
30
 
32
31
  export type Runtime = ScryptedRuntime;
33
32
 
34
- const listenSet = new Set<string>();
33
+ const listenSet = new net.BlockList();
35
34
  const { SCRYPTED_SERVER_LISTEN_HOSTNAMES } = process.env;
36
35
  if (SCRYPTED_SERVER_LISTEN_HOSTNAMES) {
37
- listenSet.add('127.0.0.1');
36
+ // add ipv4 and ipv6 loopback
37
+ listenSet.addAddress('127.0.0.1');
38
+ listenSet.addAddress('::1', 'ipv6');
38
39
  for (const hostname of SCRYPTED_SERVER_LISTEN_HOSTNAMES.split(',')) {
39
- listenSet.add(hostname);
40
+ if (net.isIPv4(hostname))
41
+ listenSet.addAddress(hostname);
42
+ else if (net.isIPv6(hostname))
43
+ listenSet.addAddress(hostname, 'ipv6');
44
+ else
45
+ throw new Error('Invalid SCRYPTED_SERVER_LISTEN_HOSTNAME: ' + hostname);
40
46
  }
41
47
  }
42
- else {
43
- listenSet.add(undefined);
44
- }
45
48
 
46
- async function listenServerPort(env: string, port: number, createServer: () => http.Server | https.Server | net.Server) {
47
- for (const hostname of listenSet) {
48
- const server = createServer();
49
- server.listen(port, hostname);
50
- try {
51
- await once(server, 'listening');
52
- }
53
- catch (e) {
54
- console.error(`Failed to listen on port ${port}. It may be in use.`);
55
- console.error(`Use the environment variable ${env} to change the port.`);
56
- throw e;
57
- }
49
+ async function listenServerPort(env: string, port: number, server: http.Server | https.Server | net.Server) {
50
+ server.listen(port);
51
+ try {
52
+ await once(server, 'listening');
53
+ }
54
+ catch (e) {
55
+ console.error(`Failed to listen on port ${port}. It may be in use.`);
56
+ console.error(`Use the environment variable ${env} to change the port.`);
57
+ throw e;
58
58
  }
59
59
  }
60
60
 
@@ -73,9 +73,11 @@ async function doconnect(): Promise<net.Socket> {
73
73
  })
74
74
  }
75
75
 
76
- const debugServerEvents = new EventEmitter();
77
- listenServerPort('SCRYPTED_DEBUG_PORT', SCRYPTED_DEBUG_PORT, () => net.createServer(async (socket) => {
78
- debugServerEvents.emit('connection', socket);
76
+ const debugServer = net.createServer(async (socket) => {
77
+ if (listenSet.rules.length && !listenSet.check(socket.remoteAddress)) {
78
+ socket.destroy();
79
+ return;
80
+ }
79
81
 
80
82
  if (!workerInspectPort) {
81
83
  socket.destroy();
@@ -102,7 +104,9 @@ listenServerPort('SCRYPTED_DEBUG_PORT', SCRYPTED_DEBUG_PORT, () => net.createSer
102
104
  }
103
105
  console.warn('debugger connect timed out');
104
106
  socket.destroy();
105
- }))
107
+ });
108
+
109
+ listenServerPort('SCRYPTED_DEBUG_PORT', SCRYPTED_DEBUG_PORT, debugServer)
106
110
  .catch(() => { });
107
111
 
108
112
  const app = express();
@@ -110,13 +114,23 @@ const app = express();
110
114
  app.set('trust proxy', 'loopback');
111
115
 
112
116
  // parse application/x-www-form-urlencoded
113
- app.use(bodyParser.urlencoded({ extended: false }) as any)
117
+ app.use(bodyParser.urlencoded({ extended: false }) as any);
114
118
 
115
119
  // parse application/json
116
- app.use(bodyParser.json())
120
+ app.use(bodyParser.json());
117
121
 
118
122
  // parse some custom thing into a Buffer
119
- app.use(bodyParser.raw({ type: 'application/*', limit: 100000000 }) as any)
123
+ app.use(bodyParser.raw({ type: 'application/*', limit: 100000000 }) as any);
124
+
125
+ if (listenSet.rules.length) {
126
+ app.use((req, res, next) => {
127
+ if (!listenSet.check(req.socket.remoteAddress)) {
128
+ res.status(403).send('Access denied on this address');
129
+ return;
130
+ }
131
+ next();
132
+ });
133
+ }
120
134
 
121
135
  async function start(mainFilename: string, options?: {
122
136
  onRuntimeCreated?: (runtime: ScryptedRuntime) => Promise<void>,
@@ -376,7 +390,7 @@ async function start(mainFilename: string, options?: {
376
390
  const clusterMode = getScryptedClusterMode();
377
391
  if (clusterMode?.[0] === 'server') {
378
392
  console.log('Cluster server starting.');
379
- await listenServerPort('SCRYPTED_CLUSTER_SERVER', clusterMode[2], () => createClusterServer(mainFilename, scrypted, keyPair));
393
+ await listenServerPort('SCRYPTED_CLUSTER_SERVER', clusterMode[2], createClusterServer(mainFilename, scrypted, keyPair));
380
394
  }
381
395
 
382
396
  await scrypted.start();
@@ -488,7 +502,7 @@ async function start(mainFilename: string, options?: {
488
502
 
489
503
  const waitDebug = new Promise<void>((resolve, reject) => {
490
504
  setTimeout(() => reject(new Error('timed out waiting for debug session')), 30000);
491
- debugServerEvents.on('connection', resolve);
505
+ debugServer.on('connection', resolve);
492
506
  });
493
507
 
494
508
  waitDebug.catch(() => { });
@@ -772,17 +786,13 @@ async function start(mainFilename: string, options?: {
772
786
  return server;
773
787
  }
774
788
 
775
- await listenServerPort('SCRYPTED_SECURE_PORT', SCRYPTED_SECURE_PORT, () => {
776
- return hookUpgrade(https.createServer(mergedHttpsServerOptions, app));
777
- });
778
- await listenServerPort('SCRYPTED_INSECURE_PORT', SCRYPTED_INSECURE_PORT, () => {
779
- return hookUpgrade(http.createServer(app));
780
- });
789
+ await listenServerPort('SCRYPTED_SECURE_PORT', SCRYPTED_SECURE_PORT, hookUpgrade(https.createServer(mergedHttpsServerOptions, app)));
790
+ await listenServerPort('SCRYPTED_INSECURE_PORT', SCRYPTED_INSECURE_PORT, hookUpgrade(http.createServer(app)));
781
791
 
782
792
  console.log('#######################################################');
783
793
  console.log(`Scrypted Volume : ${volumeDir}`);
784
794
  console.log(`Scrypted Server (Local) : https://localhost:${SCRYPTED_SECURE_PORT}/`);
785
- for (const address of SCRYPTED_SERVER_LISTEN_HOSTNAMES ? listenSet : getUsableNetworkAddresses()) {
795
+ for (const address of SCRYPTED_SERVER_LISTEN_HOSTNAMES ? SCRYPTED_SERVER_LISTEN_HOSTNAMES.split(',') : getUsableNetworkAddresses()) {
786
796
  console.log(`Scrypted Server (Remote) : https://${address}:${SCRYPTED_SECURE_PORT}/`);
787
797
  }
788
798
  console.log(`Version: : ${await scrypted.info.getVersion()}`);