@camstack/system 1.2.419 → 1.2.421
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/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
- package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
- package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
- package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
- package/dist/builtins/alerts/alerts.addon.js +1 -1
- package/dist/builtins/alerts/alerts.addon.mjs +1 -1
- package/dist/builtins/autotrack/index.js +1 -1
- package/dist/builtins/autotrack/index.mjs +1 -1
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +2 -2
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +2 -2
- package/dist/builtins/calendars/calendars.addon.js +1 -1
- package/dist/builtins/calendars/calendars.addon.mjs +1 -1
- package/dist/builtins/camera-grid/index.js +1 -1
- package/dist/builtins/camera-grid/index.mjs +1 -1
- package/dist/builtins/composer/composer.addon.js +2 -2
- package/dist/builtins/composer/composer.addon.mjs +2 -2
- package/dist/builtins/console-logging/index.js +1 -1
- package/dist/builtins/console-logging/index.mjs +1 -1
- package/dist/builtins/core-blocks/core-blocks.addon.js +2 -2
- package/dist/builtins/core-blocks/core-blocks.addon.mjs +2 -2
- package/dist/builtins/device-manager/contribution-cache.d.ts +18 -1
- package/dist/builtins/device-manager/device-aggregation.d.ts +7 -1
- package/dist/builtins/device-manager/device-manager.addon.js +53 -8
- package/dist/builtins/device-manager/device-manager.addon.mjs +53 -8
- package/dist/builtins/hub-forwarder/index.js +1 -1
- package/dist/builtins/hub-forwarder/index.mjs +1 -1
- package/dist/builtins/keychain/index.js +3 -3
- package/dist/builtins/keychain/index.mjs +3 -3
- package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
- package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
- package/dist/builtins/local-auth/local-auth.addon.js +2 -2
- package/dist/builtins/local-auth/local-auth.addon.mjs +2 -2
- package/dist/builtins/local-network/local-network.addon.js +1 -1
- package/dist/builtins/local-network/local-network.addon.mjs +1 -1
- package/dist/builtins/loki-logging/index.js +1 -1
- package/dist/builtins/loki-logging/index.mjs +1 -1
- package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
- package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
- package/dist/builtins/platform-probe/index.js +1 -1
- package/dist/builtins/platform-probe/index.mjs +1 -1
- package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
- package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
- package/dist/builtins/snapshot/index.js +1 -1
- package/dist/builtins/snapshot/index.mjs +1 -1
- package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
- package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +0 -0
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +0 -0
- package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
- package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
- package/dist/builtins/system-config/system-config.addon.js +138 -18
- package/dist/builtins/system-config/system-config.addon.mjs +138 -19
- package/dist/builtins/winston-logging/index.js +1 -1
- package/dist/builtins/winston-logging/index.mjs +1 -1
- package/dist/{composition-sources-562ib2dL.mjs → composition-sources-DoYpCPtl.mjs} +1 -1
- package/dist/{composition-sources-OaDYklhR.js → composition-sources-DxlTUSI1.js} +1 -1
- package/dist/{constants-BeQWXybC.mjs → constants-CtxNK2QJ.mjs} +1 -1
- package/dist/{constants-ik5xtasS.js → constants-GXZQRcjB.js} +1 -1
- package/dist/{dist-C0wYvAHC.mjs → dist-0OD9ue39.mjs} +106 -2
- package/dist/{dist-DLHPmdoV.js → dist-Df7s77se.js} +106 -2
- package/dist/index.js +187 -19
- package/dist/index.mjs +183 -21
- package/dist/{jwt-signing-key-CWmNKLQi.js → jwt-signing-key-BmyvxlDJ.js} +1 -1
- package/dist/{jwt-signing-key-dkTVfsLI.mjs → jwt-signing-key-W-WFzAoK.mjs} +1 -1
- package/dist/kernel/index.d.ts +5 -1
- package/dist/kernel/moleculer/agent-event-scope.d.ts +49 -0
- package/dist/kernel/moleculer/agent-mesh-authenticator.d.ts +15 -3
- package/dist/kernel/moleculer/broker-factory.d.ts +6 -0
- package/dist/kernel/moleculer/mesh-access-middleware.d.ts +8 -4
- package/dist/kernel/moleculer/mesh-join-hold.d.ts +85 -0
- package/dist/kernel/moleculer/mesh-mtls/index.d.ts +1 -1
- package/dist/kernel/moleculer/mesh-mtls/tls-tcp-transporter.d.ts +65 -4
- package/dist/{restore-archive-gGHgAZsz.mjs → restore-archive-BUMSox6L.mjs} +1 -1
- package/dist/{restore-archive-DZeFVS2l.js → restore-archive-W1Cg5y6C.js} +1 -1
- package/dist/{retired-settings-keys-DibNtLmU.js → retired-settings-keys-D-Xv1Zyv.js} +1 -1
- package/dist/{retired-settings-keys-BHlKEYNL.mjs → retired-settings-keys-Wz92bcuK.mjs} +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { Server as NetServer, Socket as NetSocket } from "node:net";
|
|
2
2
|
import { type MeshCrl } from "./mesh-crl.js";
|
|
3
|
+
/** Field of the gossip HELLO payload carrying the sender's mesh-TLS listen port. */
|
|
4
|
+
export declare const MESH_TLS_PORT_HELLO_FIELD = "meshTlsPort";
|
|
3
5
|
type TcpTransporterConstructor = new (opts?: Record<string, unknown>) => TlsTcpTransporterBase;
|
|
4
6
|
declare const TcpTransporterBase: TcpTransporterConstructor;
|
|
5
7
|
interface TlsTcpTransporterBase {
|
|
@@ -34,6 +36,13 @@ interface TlsTcpTransporterBase {
|
|
|
34
36
|
registry: {
|
|
35
37
|
regenerateLocalRawInfo(force: boolean): void;
|
|
36
38
|
};
|
|
39
|
+
broker: {
|
|
40
|
+
serializer: {
|
|
41
|
+
serialize(payload: unknown, type: string): Buffer;
|
|
42
|
+
deserialize(buf: Buffer, type: string): unknown;
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
nodeID: string;
|
|
37
46
|
startTcpServer(): Promise<number>;
|
|
38
47
|
startUdpServer(): Promise<void>;
|
|
39
48
|
startTimers(): void;
|
|
@@ -43,6 +52,7 @@ interface TlsTcpTransporterBase {
|
|
|
43
52
|
disconnect(): Promise<void>;
|
|
44
53
|
onIncomingMessage(type: string, message: Buffer, socket?: NetSocket): unknown;
|
|
45
54
|
receive(cmd: string, data: Buffer, socket?: NetSocket): unknown;
|
|
55
|
+
publish(packet: OutgoingPacket): Promise<unknown>;
|
|
46
56
|
deserialize(type: string, data: Buffer): {
|
|
47
57
|
payload: {
|
|
48
58
|
sender?: string;
|
|
@@ -71,7 +81,38 @@ export interface TlsTcpTransporterOptions {
|
|
|
71
81
|
readonly crl?: MeshCrl;
|
|
72
82
|
/** Hub only (D826): never bind clear TCP or UDP discovery. */
|
|
73
83
|
readonly hubTlsOnly?: boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Enrolled agent only (D848): the hub is the only mesh peer — no clear
|
|
86
|
+
* reader, TLS accepted from the hub's certificate only, nothing dialled but
|
|
87
|
+
* the hub, other nodes in the hub's gossip ignored.
|
|
88
|
+
*/
|
|
89
|
+
readonly hubOnlyPeers?: boolean;
|
|
90
|
+
/** The hub's node id (default `hub`). */
|
|
91
|
+
readonly hubNodeId?: string;
|
|
92
|
+
/**
|
|
93
|
+
* Port to dial a TLS peer on when it advertises none (default: `tlsPort`).
|
|
94
|
+
* An agent sets the hub's TLS port here; its own listener stays on `tlsPort`.
|
|
95
|
+
*/
|
|
96
|
+
readonly peerTlsPort?: number;
|
|
97
|
+
}
|
|
98
|
+
/** A packet on its way out (Moleculer `Packet`). */
|
|
99
|
+
interface OutgoingPacket {
|
|
100
|
+
readonly type: string;
|
|
101
|
+
readonly target: string | null;
|
|
102
|
+
readonly payload: Record<string, unknown>;
|
|
103
|
+
}
|
|
104
|
+
/** The mesh-TLS port a gossip HELLO payload advertises, or null. */
|
|
105
|
+
export declare function helloMeshTlsPort(payload: unknown): number | null;
|
|
106
|
+
/** A gossip payload with only the kept nodes, and the ids that were removed. */
|
|
107
|
+
export interface FilteredGossip {
|
|
108
|
+
readonly payload: unknown;
|
|
109
|
+
readonly removed: readonly string[];
|
|
74
110
|
}
|
|
111
|
+
/**
|
|
112
|
+
* A gossip response with every node but `keep` removed. With nothing to
|
|
113
|
+
* remove the payload is returned unchanged.
|
|
114
|
+
*/
|
|
115
|
+
export declare function keepOnlyGossipNodes(payload: unknown, keep: ReadonlySet<string>): FilteredGossip;
|
|
75
116
|
export declare class TlsTcpTransporter extends TcpTransporterBase {
|
|
76
117
|
private tlsServer;
|
|
77
118
|
private meshTls;
|
|
@@ -81,19 +122,29 @@ export declare class TlsTcpTransporter extends TcpTransporterBase {
|
|
|
81
122
|
private readonly tlsPeers;
|
|
82
123
|
private clearDisabled;
|
|
83
124
|
private readonly hubTlsOnly;
|
|
125
|
+
private readonly hubOnlyPeers;
|
|
126
|
+
private readonly hubNodeId;
|
|
127
|
+
private readonly peerTlsPortOption;
|
|
128
|
+
/** Peers already reported as not adopted (D848) — one line each. */
|
|
129
|
+
private readonly ignoredPeers;
|
|
130
|
+
/** Node id → the mesh-TLS port its last HELLO advertised. */
|
|
131
|
+
private readonly helloTlsPorts;
|
|
84
132
|
/** Clear-text `TcpWriter.connect` captured once before the TLS wrap (A→B). */
|
|
85
133
|
private clearWriterConnect;
|
|
86
134
|
private writerTlsPatched;
|
|
87
135
|
constructor(opts?: TlsTcpTransporterOptions);
|
|
136
|
+
/** Clear TCP is never served: the TLS-only hub, or an agent whose only peer is the hub. */
|
|
137
|
+
private get tlsOnly();
|
|
88
138
|
override startTcpServer(): Promise<number>;
|
|
89
139
|
override connect(): Promise<void>;
|
|
90
140
|
/**
|
|
91
|
-
* Outbound dial uses mTLS when the
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
* TLS
|
|
141
|
+
* Outbound dial uses mTLS when dialling the hub node id (agent → hub), on a
|
|
142
|
+
* TLS-only hub (it has no clear listener, so no clear peer exists to dial —
|
|
143
|
+
* D848 closes the hub → agent clear leg), or when the peer is already known
|
|
144
|
+
* on TLS (inbound handshake).
|
|
95
145
|
*/
|
|
96
146
|
private shouldDialPeerWithTls;
|
|
147
|
+
/** The peer's advertised mesh-TLS port, else the configured dial port, else 6443. */
|
|
97
148
|
private peerTlsDialPort;
|
|
98
149
|
/**
|
|
99
150
|
* Wrap `TcpWriter.connect` so TLS peers are dialed with mutual TLS on the
|
|
@@ -135,6 +186,16 @@ export declare class TlsTcpTransporter extends TcpTransporterBase {
|
|
|
135
186
|
/** Close sockets whose peer serial was just revoked. */
|
|
136
187
|
dropRevokedSockets(): void;
|
|
137
188
|
override disconnect(): Promise<void>;
|
|
189
|
+
/**
|
|
190
|
+
* D848: an enrolled agent adopts no node from the hub's gossip but the hub
|
|
191
|
+
* itself, so it never learns — and therefore never dials or broadcasts to —
|
|
192
|
+
* another agent. Everything else is Moleculer's own handling.
|
|
193
|
+
*/
|
|
194
|
+
override receive(cmd: string, data: Buffer, socket?: NetSocket): unknown;
|
|
195
|
+
/** Remember the TLS port a peer's HELLO advertises (absent: an older node → the default). */
|
|
196
|
+
private noteHelloTlsPort;
|
|
197
|
+
/** A TLS-listening node says where in every HELLO it sends. */
|
|
198
|
+
override publish(packet: OutgoingPacket): Promise<unknown>;
|
|
138
199
|
override onIncomingMessage(type: string, message: Buffer, socket?: NetSocket): unknown;
|
|
139
200
|
private startTlsServerIfReady;
|
|
140
201
|
private onTlsClientConnected;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { g as DATABASE_SNAPSHOT_SUFFIX } from "./dist-
|
|
1
|
+
import { g as DATABASE_SNAPSHOT_SUFFIX } from "./dist-0OD9ue39.mjs";
|
|
2
2
|
import { createCipheriv, createDecipheriv, createHash, createPrivateKey, createPublicKey, diffieHellman, generateKeyPairSync, hkdfSync, randomBytes } from "node:crypto";
|
|
3
3
|
import { Buffer as Buffer$1 } from "buffer";
|
|
4
4
|
import * as fsp from "node:fs/promises";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const require_chunk = require("./chunk-Cek0wNdY.js");
|
|
2
|
-
const require_dist = require("./dist-
|
|
2
|
+
const require_dist = require("./dist-Df7s77se.js");
|
|
3
3
|
let node_crypto = require("node:crypto");
|
|
4
4
|
let buffer = require("buffer");
|
|
5
5
|
let node_fs_promises = require("node:fs/promises");
|