From df10c4e5f2efd88e29ca6416f481b56dc2279b68 Mon Sep 17 00:00:00 2001 From: Koushik Dutta Date: Wed, 5 Feb 2025 12:08:36 -0800 Subject: [PATCH] server: fixup address, make it available on cluster manager --- sdk/package-lock.json | 4 ++-- sdk/package.json | 2 +- sdk/types/package-lock.json | 4 ++-- sdk/types/package.json | 2 +- sdk/types/scrypted_python/scrypted_sdk/types.py | 5 ++++- sdk/types/src/types.input.ts | 1 + server/package-lock.json | 12 ++++++------ server/package.json | 4 ++-- server/python/plugin_remote.py | 3 +++ server/src/plugin/cluster.ts | 4 ++++ server/src/services/cluster-fork.ts | 3 ++- 11 files changed, 28 insertions(+), 16 deletions(-) diff --git a/sdk/package-lock.json b/sdk/package-lock.json index a4d90c0ce..eccb23a31 100644 --- a/sdk/package-lock.json +++ b/sdk/package-lock.json @@ -1,12 +1,12 @@ { "name": "@scrypted/sdk", - "version": "0.3.112", + "version": "0.3.113", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@scrypted/sdk", - "version": "0.3.112", + "version": "0.3.113", "license": "ISC", "dependencies": { "@babel/preset-typescript": "^7.26.0", diff --git a/sdk/package.json b/sdk/package.json index a06c3055d..3c37c7cf3 100644 --- a/sdk/package.json +++ b/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@scrypted/sdk", - "version": "0.3.112", + "version": "0.3.113", "description": "", "main": "dist/src/index.js", "exports": { diff --git a/sdk/types/package-lock.json b/sdk/types/package-lock.json index bfba1c246..5cb8a1a56 100644 --- a/sdk/types/package-lock.json +++ b/sdk/types/package-lock.json @@ -1,12 +1,12 @@ { "name": "@scrypted/types", - "version": "0.3.104", + "version": "0.3.105", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@scrypted/types", - "version": "0.3.104", + "version": "0.3.105", "license": "ISC" } } diff --git a/sdk/types/package.json b/sdk/types/package.json index fe5090b79..615e96aa8 100644 --- a/sdk/types/package.json +++ b/sdk/types/package.json @@ -1,6 +1,6 @@ { "name": "@scrypted/types", - "version": "0.3.104", + "version": "0.3.105", "description": "", "main": "dist/index.js", "author": "", diff --git a/sdk/types/scrypted_python/scrypted_sdk/types.py b/sdk/types/scrypted_python/scrypted_sdk/types.py index 5008268e6..0117d4948 100644 --- a/sdk/types/scrypted_python/scrypted_sdk/types.py +++ b/sdk/types/scrypted_python/scrypted_sdk/types.py @@ -957,7 +957,7 @@ class TamperState(TypedDict): pass -TYPES_VERSION = "0.3.104" +TYPES_VERSION = "0.3.105" class AirPurifier: @@ -1859,6 +1859,9 @@ class EndpointManager: class ClusterManager: + def getClusterAddress(self) -> str: + pass + def getClusterMode(self) -> Any | Any: pass diff --git a/sdk/types/src/types.input.ts b/sdk/types/src/types.input.ts index cc10fe514..488ece55a 100644 --- a/sdk/types/src/types.input.ts +++ b/sdk/types/src/types.input.ts @@ -2722,6 +2722,7 @@ export interface ClusterManager { * Returns undefined if this is not a cluster worker. */ getClusterWorkerId(): string; + getClusterAddress(): string; getClusterMode(): 'server' | 'client' | undefined; getClusterWorkers(): Promise>; } diff --git a/server/package-lock.json b/server/package-lock.json index aeb7b2e96..32c3ed53c 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -1,18 +1,18 @@ { "name": "@scrypted/server", - "version": "0.134.1", + "version": "0.136.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@scrypted/server", - "version": "0.134.1", + "version": "0.136.1", "hasInstallScript": true, "license": "ISC", "dependencies": { "@scrypted/ffmpeg-static": "^6.1.0-build3", "@scrypted/node-pty": "^1.0.22", - "@scrypted/types": "^0.3.104", + "@scrypted/types": "^0.3.105", "adm-zip": "^0.5.16", "body-parser": "^1.20.3", "cookie-parser": "^1.4.7", @@ -557,9 +557,9 @@ } }, "node_modules/@scrypted/types": { - "version": "0.3.104", - "resolved": "https://registry.npmjs.org/@scrypted/types/-/types-0.3.104.tgz", - "integrity": "sha512-aFqB9mDmKoKLGF6O3+N71V+fPeMkIO2xC+2/oUF/xOvhG0D9fmQwTaV2gJtwVZJwx/ZgWGU85dIWqmxP8YfcDg==", + "version": "0.3.105", + "resolved": "https://registry.npmjs.org/@scrypted/types/-/types-0.3.105.tgz", + "integrity": "sha512-OHHia1JXybJ9L8p14b+x81Kviv2LR38oyDFffh3K8jLwsgNmY/DSmDh6r59rfK5U13D8x2TdcfCpR26DY7kgOw==", "license": "ISC" }, "node_modules/@types/adm-zip": { diff --git a/server/package.json b/server/package.json index 8f845502f..29d11d3ff 100644 --- a/server/package.json +++ b/server/package.json @@ -1,11 +1,11 @@ { "name": "@scrypted/server", - "version": "0.136.1", + "version": "0.137.0", "description": "", "dependencies": { "@scrypted/ffmpeg-static": "^6.1.0-build3", "@scrypted/node-pty": "^1.0.22", - "@scrypted/types": "^0.3.104", + "@scrypted/types": "^0.3.105", "adm-zip": "^0.5.16", "body-parser": "^1.20.3", "cookie-parser": "^1.4.7", diff --git a/server/python/plugin_remote.py b/server/python/plugin_remote.py index 7afcc1791..b9ee50cc5 100644 --- a/server/python/plugin_remote.py +++ b/server/python/plugin_remote.py @@ -243,6 +243,9 @@ class ClusterManager(scrypted_python.scrypted_sdk.types.ClusterManager): def getClusterMode(self) -> Any | Any: return os.getenv("SCRYPTED_CLUSTER_MODE", None) + def getClusterAddress(self) -> str: + return os.getenv("SCRYPTED_CLUSTER_ADDRESS", None) + def getClusterWorkerId(self) -> str: return self.remote.clusterSetup.clusterWorkerId diff --git a/server/src/plugin/cluster.ts b/server/src/plugin/cluster.ts index c0757b58c..37f70daff 100644 --- a/server/src/plugin/cluster.ts +++ b/server/src/plugin/cluster.ts @@ -15,6 +15,10 @@ export class ClusterManagerImpl implements ClusterManager { return this.clusterWorkerId; } + getClusterAddress(): string { + return process.env.SCRYPTED_CLUSTER_ADDRESS; + } + getClusterMode(): 'server' | 'client' | undefined { return this.clusterMode; } diff --git a/server/src/services/cluster-fork.ts b/server/src/services/cluster-fork.ts index fda210884..262dcbf54 100644 --- a/server/src/services/cluster-fork.ts +++ b/server/src/services/cluster-fork.ts @@ -5,6 +5,7 @@ import type { RuntimeWorkerOptions } from "../plugin/runtime/runtime-worker"; import { RpcPeer } from "../rpc"; import type { ScryptedRuntime } from "../runtime"; import type { ClusterForkOptions, ClusterForkParam, ClusterForkResultInterface, PeerLiveness, RunningClusterWorker } from "../scrypted-cluster-main"; +import { removeIPv4EmbeddedIPv6 } from "../ip"; class WrappedForkResult implements ClusterForkResultInterface { [RpcPeer.PROPERTY_PROXY_PROPERTIES] = { @@ -109,7 +110,7 @@ export class ClusterForkService { labels: worker.labels, forks: [...worker.forks] as ClusterFork[], mode: worker.mode, - address: worker.address, + address: removeIPv4EmbeddedIPv6(worker.address), }; } return ret;