@push.rocks/smartdns 8.4.0 → 8.5.1
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_rust/rustdns-client_linux_amd64_musl.tsrust-build.json +3 -3
- package/dist_rust/rustdns-client_linux_arm64_musl.tsrust-build.json +3 -3
- package/dist_rust/rustdns_linux_amd64_musl +0 -0
- package/dist_rust/rustdns_linux_amd64_musl.tsrust-build.json +4 -4
- package/dist_rust/rustdns_linux_arm64_musl +0 -0
- package/dist_rust/rustdns_linux_arm64_musl.tsrust-build.json +4 -4
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts_server/classes.manageddnsserver.d.ts +9 -5
- package/dist_ts_server/classes.manageddnsserver.js +26 -3
- package/dist_ts_server/classes.rustdnsbridge.d.ts +18 -1
- package/dist_ts_server/classes.rustdnsbridge.js +10 -1
- package/dist_ts_server/interfaces.managed.d.ts +11 -0
- package/package.json +2 -2
- package/readme.md +49 -1
- package/ts/00_commitinfo_data.ts +1 -1
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
"binarySha256": "458bba943f70bd1ab64f520d12a7a128980cb3a793880b72c3e72079f7566823",
|
|
4
4
|
"buildInfo": {
|
|
5
5
|
"projectName": "@push.rocks/smartdns",
|
|
6
|
-
"projectVersion": "8.
|
|
7
|
-
"gitCommit": "
|
|
6
|
+
"projectVersion": "8.5.1",
|
|
7
|
+
"gitCommit": "727fe56903eb637fcd8e91ead92d4730a0a29729",
|
|
8
8
|
"gitDirty": false,
|
|
9
|
-
"builtAt": "2026-09-
|
|
9
|
+
"builtAt": "2026-09-14T14:27:37.041Z",
|
|
10
10
|
"tsrustVersion": "1.13.0",
|
|
11
11
|
"binary": "rustdns-client",
|
|
12
12
|
"target": "linux_amd64_musl"
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
"binarySha256": "8c6530c2d3357f165e225ea911bc8479d18012f6ff5734cdfd7048a6a12366e5",
|
|
4
4
|
"buildInfo": {
|
|
5
5
|
"projectName": "@push.rocks/smartdns",
|
|
6
|
-
"projectVersion": "8.
|
|
7
|
-
"gitCommit": "
|
|
6
|
+
"projectVersion": "8.5.1",
|
|
7
|
+
"gitCommit": "727fe56903eb637fcd8e91ead92d4730a0a29729",
|
|
8
8
|
"gitDirty": false,
|
|
9
|
-
"builtAt": "2026-09-
|
|
9
|
+
"builtAt": "2026-09-14T14:27:37.352Z",
|
|
10
10
|
"tsrustVersion": "1.13.0",
|
|
11
11
|
"binary": "rustdns-client",
|
|
12
12
|
"target": "linux_arm64_musl"
|
|
Binary file
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"format": "tsrust.build-provenance.v2",
|
|
3
|
-
"binarySha256": "
|
|
3
|
+
"binarySha256": "e7134b5a1ec65aab6c0483bff81078cccf70053e9372aeaa041ce8ff7e30e8a4",
|
|
4
4
|
"buildInfo": {
|
|
5
5
|
"projectName": "@push.rocks/smartdns",
|
|
6
|
-
"projectVersion": "8.
|
|
7
|
-
"gitCommit": "
|
|
6
|
+
"projectVersion": "8.5.1",
|
|
7
|
+
"gitCommit": "727fe56903eb637fcd8e91ead92d4730a0a29729",
|
|
8
8
|
"gitDirty": false,
|
|
9
|
-
"builtAt": "2026-09-
|
|
9
|
+
"builtAt": "2026-09-14T14:27:37.041Z",
|
|
10
10
|
"tsrustVersion": "1.13.0",
|
|
11
11
|
"binary": "rustdns",
|
|
12
12
|
"target": "linux_amd64_musl"
|
|
Binary file
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"format": "tsrust.build-provenance.v2",
|
|
3
|
-
"binarySha256": "
|
|
3
|
+
"binarySha256": "27518e7dd6cece176d1392493d299651d47718266461e4eb0a16a8017b709253",
|
|
4
4
|
"buildInfo": {
|
|
5
5
|
"projectName": "@push.rocks/smartdns",
|
|
6
|
-
"projectVersion": "8.
|
|
7
|
-
"gitCommit": "
|
|
6
|
+
"projectVersion": "8.5.1",
|
|
7
|
+
"gitCommit": "727fe56903eb637fcd8e91ead92d4730a0a29729",
|
|
8
8
|
"gitDirty": false,
|
|
9
|
-
"builtAt": "2026-09-
|
|
9
|
+
"builtAt": "2026-09-14T14:27:37.352Z",
|
|
10
10
|
"tsrustVersion": "1.13.0",
|
|
11
11
|
"binary": "rustdns",
|
|
12
12
|
"target": "linux_arm64_musl"
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@push.rocks/smartdns',
|
|
6
|
-
version: '8.
|
|
6
|
+
version: '8.5.1',
|
|
7
7
|
description: 'A robust TypeScript library providing advanced DNS management and resolution capabilities including support for DNSSEC, custom DNS servers, and integration with various DNS providers.'
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxzQkFBc0I7SUFDNUIsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLHlMQUF5TDtDQUN2TSxDQUFBIn0=
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { type IRustDnsBridgeOptions } from './classes.rustdnsbridge.js';
|
|
2
|
-
import type { IManagedDnsClockEvidence, IManagedDnsRevision, IManagedDnsServerOptions, IManagedDnsSnapshot,
|
|
2
|
+
import type { IManagedDnsClockEvidence, IManagedDnsRevision, IManagedDnsServerOptions, IManagedDnsSnapshot, IManagedDnsListenerSetOptions, IManagedDnsListenerSetStatus, TManagedDnsServerOptions, TManagedDnsServerStatus } from './interfaces.managed.js';
|
|
3
3
|
/**
|
|
4
4
|
* Native private-view DNS owner. Each instance owns one joined child lifecycle.
|
|
5
5
|
* The caller authenticates and persists complete snapshots and revision receipts
|
|
6
6
|
* through its own persistence layer before acknowledging applied configuration.
|
|
7
7
|
* Workload source/interface anti-spoofing remains the caller's kernel-policy duty.
|
|
8
8
|
*/
|
|
9
|
-
export declare class ManagedDnsServer {
|
|
9
|
+
export declare class ManagedDnsServer<TOptions extends TManagedDnsServerOptions = IManagedDnsServerOptions> {
|
|
10
10
|
private readonly bridge;
|
|
11
11
|
private readonly options;
|
|
12
12
|
private queue;
|
|
@@ -15,16 +15,20 @@ export declare class ManagedDnsServer {
|
|
|
15
15
|
private started;
|
|
16
16
|
private failedOwned;
|
|
17
17
|
private stopPromise;
|
|
18
|
-
constructor(options:
|
|
18
|
+
constructor(options: TOptions, processOptions?: IRustDnsBridgeOptions);
|
|
19
19
|
private enqueue;
|
|
20
20
|
private ensureSpawned;
|
|
21
21
|
/** Starts the child if needed; does not admit queries or create a listener. */
|
|
22
22
|
getClockEvidence(): Promise<IManagedDnsClockEvidence>;
|
|
23
23
|
/** Bind both transports. Until an accepted snapshot exists all queries refuse. */
|
|
24
|
-
start(): Promise<
|
|
24
|
+
start(): Promise<TManagedDnsServerStatus<TOptions>>;
|
|
25
25
|
/** Atomic complete replacement; older revisions and conflicting replay reject. */
|
|
26
26
|
applySnapshot(snapshot: IManagedDnsSnapshot): Promise<IManagedDnsRevision>;
|
|
27
|
-
getStatus(): Promise<
|
|
27
|
+
getStatus(): Promise<TManagedDnsServerStatus<TOptions>>;
|
|
28
|
+
/** Replace the complete listener set at the retained port, including empty.
|
|
29
|
+
* Mixed authority changes use union -> snapshot -> target, under the caller's
|
|
30
|
+
* persisted transition. This operation never changes or renews DNS authority. */
|
|
31
|
+
setBindAddresses(this: ManagedDnsServer<IManagedDnsListenerSetOptions>, addresses: string[]): Promise<IManagedDnsListenerSetStatus>;
|
|
28
32
|
/**
|
|
29
33
|
* Stop admission immediately, join pending calls and native listener/query
|
|
30
34
|
* cleanup, then confirm child termination. Failed cleanup remains retryable.
|
|
@@ -62,7 +62,9 @@ export class ManagedDnsServer {
|
|
|
62
62
|
throw new Error('Managed DNS server already started');
|
|
63
63
|
await this.ensureSpawned();
|
|
64
64
|
try {
|
|
65
|
-
const status =
|
|
65
|
+
const status = 'bindAddresses' in this.options
|
|
66
|
+
? await this.bridge.managedStartListenerSet(this.options)
|
|
67
|
+
: await this.bridge.managedStart(this.options);
|
|
66
68
|
this.started = true;
|
|
67
69
|
return status;
|
|
68
70
|
}
|
|
@@ -98,7 +100,28 @@ export class ManagedDnsServer {
|
|
|
98
100
|
return this.enqueue(async () => {
|
|
99
101
|
if (!this.started)
|
|
100
102
|
throw new Error('Managed DNS server is not started');
|
|
101
|
-
|
|
103
|
+
const status = 'bindAddresses' in this.options
|
|
104
|
+
? await this.bridge.managedListenerSetStatus() : await this.bridge.managedStatus();
|
|
105
|
+
return status;
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
/** Replace the complete listener set at the retained port, including empty.
|
|
109
|
+
* Mixed authority changes use union -> snapshot -> target, under the caller's
|
|
110
|
+
* persisted transition. This operation never changes or renews DNS authority. */
|
|
111
|
+
setBindAddresses(addresses) {
|
|
112
|
+
const ownedAddresses = structuredClone(addresses);
|
|
113
|
+
return this.enqueue(async () => {
|
|
114
|
+
if (!this.started)
|
|
115
|
+
throw new Error('Managed DNS server is not started');
|
|
116
|
+
try {
|
|
117
|
+
return await this.bridge.managedSetBindAddresses(ownedAddresses);
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
if (!(error instanceof plugins.smartrust.RustBridgeRequestError)
|
|
121
|
+
|| error.code !== 'ERR_RUST_BRIDGE_REQUEST_RUST_RESPONSE')
|
|
122
|
+
this.failedOwned = true;
|
|
123
|
+
throw error;
|
|
124
|
+
}
|
|
102
125
|
});
|
|
103
126
|
}
|
|
104
127
|
/**
|
|
@@ -138,4 +161,4 @@ export class ManagedDnsServer {
|
|
|
138
161
|
return operation;
|
|
139
162
|
}
|
|
140
163
|
}
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5tYW5hZ2VkZG5zc2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfc2VydmVyL2NsYXNzZXMubWFuYWdlZGRuc3NlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUE4QixNQUFNLDRCQUE0QixDQUFDO0FBQ3ZGLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBWXhDOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQVUzQixZQUFZLE9BQWlCLEVBQUUsaUJBQXdDLEVBQUU7UUFQakUsVUFBSyxHQUFxQixPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDNUMsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsZ0JBQVcsR0FBeUIsSUFBSSxDQUFDO1FBRy9DLElBQUksQ0FBQyxPQUFPLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVPLE9BQU8sQ0FBSSxTQUEyQjtRQUM1QyxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JDLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDLENBQUM7UUFDdkYsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ3hDLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsa0RBQWtELENB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
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as plugins from './plugins.js';
|
|
2
|
-
import type { IManagedDnsClockEvidence, IManagedDnsRevision, IManagedDnsServerOptions, IManagedDnsSnapshot, IManagedDnsStatus } from './interfaces.managed.js';
|
|
2
|
+
import type { IManagedDnsClockEvidence, IManagedDnsRevision, IManagedDnsServerOptions, IManagedDnsSnapshot, IManagedDnsStatus, IManagedDnsListenerSetOptions, IManagedDnsListenerSetStatus } from './interfaces.managed.js';
|
|
3
3
|
export type TDnsCommands = {
|
|
4
4
|
managedClock: {
|
|
5
5
|
params: Record<string, never>;
|
|
@@ -9,6 +9,20 @@ export type TDnsCommands = {
|
|
|
9
9
|
params: IManagedDnsServerOptions;
|
|
10
10
|
result: IManagedDnsStatus;
|
|
11
11
|
};
|
|
12
|
+
managedStartListenerSet: {
|
|
13
|
+
params: IManagedDnsListenerSetOptions;
|
|
14
|
+
result: IManagedDnsListenerSetStatus;
|
|
15
|
+
};
|
|
16
|
+
managedSetBindAddresses: {
|
|
17
|
+
params: {
|
|
18
|
+
addresses: string[];
|
|
19
|
+
};
|
|
20
|
+
result: IManagedDnsListenerSetStatus;
|
|
21
|
+
};
|
|
22
|
+
managedListenerSetStatus: {
|
|
23
|
+
params: Record<string, never>;
|
|
24
|
+
result: IManagedDnsListenerSetStatus;
|
|
25
|
+
};
|
|
12
26
|
managedApply: {
|
|
13
27
|
params: IManagedDnsSnapshot;
|
|
14
28
|
result: IManagedDnsRevision;
|
|
@@ -132,6 +146,9 @@ export declare class RustDnsBridge extends plugins.events.EventEmitter {
|
|
|
132
146
|
spawn(): Promise<boolean>;
|
|
133
147
|
managedClock(): Promise<IManagedDnsClockEvidence>;
|
|
134
148
|
managedStart(options: IManagedDnsServerOptions): Promise<IManagedDnsStatus>;
|
|
149
|
+
managedStartListenerSet(options: IManagedDnsListenerSetOptions): Promise<IManagedDnsListenerSetStatus>;
|
|
150
|
+
managedSetBindAddresses(addresses: string[]): Promise<IManagedDnsListenerSetStatus>;
|
|
151
|
+
managedListenerSetStatus(): Promise<IManagedDnsListenerSetStatus>;
|
|
135
152
|
managedApply(snapshot: IManagedDnsSnapshot): Promise<IManagedDnsRevision>;
|
|
136
153
|
managedStatus(): Promise<IManagedDnsStatus>;
|
|
137
154
|
managedStop(): Promise<void>;
|
|
@@ -79,6 +79,15 @@ export class RustDnsBridge extends plugins.events.EventEmitter {
|
|
|
79
79
|
managedStart(options) {
|
|
80
80
|
return this.bridge.sendCommand('managedStart', options);
|
|
81
81
|
}
|
|
82
|
+
managedStartListenerSet(options) {
|
|
83
|
+
return this.bridge.sendCommand('managedStartListenerSet', options);
|
|
84
|
+
}
|
|
85
|
+
managedSetBindAddresses(addresses) {
|
|
86
|
+
return this.bridge.sendCommand('managedSetBindAddresses', { addresses });
|
|
87
|
+
}
|
|
88
|
+
managedListenerSetStatus() {
|
|
89
|
+
return this.bridge.sendCommand('managedListenerSetStatus', {});
|
|
90
|
+
}
|
|
82
91
|
managedApply(snapshot) {
|
|
83
92
|
return this.bridge.sendCommand('managedApply', snapshot);
|
|
84
93
|
}
|
|
@@ -179,4 +188,4 @@ function getPlatformSuffix() {
|
|
|
179
188
|
}
|
|
180
189
|
return null;
|
|
181
190
|
}
|
|
182
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
191
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5ydXN0ZG5zYnJpZGdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfc2VydmVyL2NsYXNzZXMucnVzdGRuc2JyaWRnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQStHeEM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sYUFBYyxTQUFRLE9BQU8sQ0FBQyxNQUFNLENBQUMsWUFBWTtJQUc1RCxZQUFZLFVBQWlDLEVBQUU7UUFDN0MsS0FBSyxFQUFFLENBQUM7UUFFUixJQUFJLE9BQU8sQ0FBQyxVQUFVLEtBQUssU0FBUztlQUMvQixDQUFDLE9BQU8sT0FBTyxDQUFDLFVBQVUsS0FBSyxRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzlGLE1BQU0sSUFBSSxTQUFTLENBQUMsb0RBQW9ELENBQUMsQ0FBQztRQUM1RSxDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsa0JBQWtCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDN0MsSUFBSSxPQUFPLENBQUMsUUFBUSxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7WUFDM0QsQ0FBQztZQUNELElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQzttQkFDNUMsT0FBTyxDQUFDLGtCQUFrQixHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsa0JBQWtCLEdBQUcsV0FBVyxFQUFFLENBQUM7Z0JBQ2hGLE1BQU0sSUFBSSxVQUFVLENBQUMsc0VBQXNFLENBQUMsQ0FBQztZQUMvRixDQUFDO1FBQ0gsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFhLEVBQUUsQ0FBQztRQUNoQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLEtBQUssU0FBUyxFQUFF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
|
|
@@ -19,6 +19,13 @@ export interface IManagedDnsServerOptions {
|
|
|
19
19
|
/** Other node-local resolver addresses, forbidden as forwarding destinations. */
|
|
20
20
|
forbiddenUpstreamAddresses: string[];
|
|
21
21
|
}
|
|
22
|
+
/** Complete listener set owned by one native process and one DNS snapshot. */
|
|
23
|
+
export interface IManagedDnsListenerSetOptions extends Omit<IManagedDnsServerOptions, 'bindAddress'> {
|
|
24
|
+
/** Canonical, distinct IP literals, at most 256. Empty starts without listeners. */
|
|
25
|
+
bindAddresses: string[];
|
|
26
|
+
}
|
|
27
|
+
export type TManagedDnsServerOptions = IManagedDnsServerOptions | IManagedDnsListenerSetOptions;
|
|
28
|
+
export type TManagedDnsServerStatus<TOptions extends TManagedDnsServerOptions> = TOptions extends IManagedDnsListenerSetOptions ? IManagedDnsListenerSetStatus : IManagedDnsStatus;
|
|
22
29
|
export interface IManagedDnsSnapshot {
|
|
23
30
|
ownerId: string;
|
|
24
31
|
revision: number;
|
|
@@ -77,3 +84,7 @@ export interface IManagedDnsStatus {
|
|
|
77
84
|
active: boolean;
|
|
78
85
|
clock: IManagedDnsClockEvidence;
|
|
79
86
|
}
|
|
87
|
+
export interface IManagedDnsListenerSetStatus extends Omit<IManagedDnsStatus, 'address'> {
|
|
88
|
+
/** Exact complete ordered set; no wildcard or implicit primary address. */
|
|
89
|
+
addresses: string[];
|
|
90
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@push.rocks/smartdns",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.5.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "A robust TypeScript library providing advanced DNS management and resolution capabilities including support for DNSSEC, custom DNS servers, and integration with various DNS providers.",
|
|
6
6
|
"exports": {
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"@git.zone/tstest": "^6.0.0",
|
|
54
54
|
"@types/dns-packet": "^5.6.5",
|
|
55
55
|
"@types/lodash.clonedeep": "^4.5.9",
|
|
56
|
-
"@types/node": "^26.
|
|
56
|
+
"@types/node": "^26.5.0",
|
|
57
57
|
"dns-packet": "^5.6.1"
|
|
58
58
|
},
|
|
59
59
|
"files": [
|
package/readme.md
CHANGED
|
@@ -668,6 +668,54 @@ const receipt = await dns.applySnapshot({
|
|
|
668
668
|
await dns.stop();
|
|
669
669
|
```
|
|
670
670
|
|
|
671
|
+
For a changing set of exact local addresses, pass `bindAddresses` instead of
|
|
672
|
+
`bindAddress`. The two start modes are mutually exclusive. The complete-set mode
|
|
673
|
+
accepts zero through 256 distinct canonical IP literals and returns
|
|
674
|
+
`IManagedDnsListenerSetStatus` with `addresses: string[]`. The existing singleton
|
|
675
|
+
mode retains its scalar `address` status and immutable binding.
|
|
676
|
+
|
|
677
|
+
```typescript
|
|
678
|
+
const dns = new ManagedDnsServer({
|
|
679
|
+
ownerId: 'node:one',
|
|
680
|
+
bindAddresses: [],
|
|
681
|
+
port: 53,
|
|
682
|
+
revisionFloor: null,
|
|
683
|
+
forbiddenUpstreamAddresses: [],
|
|
684
|
+
});
|
|
685
|
+
await dns.start(); // No listeners or active answers until addresses and authority exist.
|
|
686
|
+
await dns.setBindAddresses(['10.100.1.1', '10.100.2.1']);
|
|
687
|
+
// Apply the authenticated complete snapshot through applySnapshot as above.
|
|
688
|
+
await dns.setBindAddresses([]); // Joins all listeners without replacing the child.
|
|
689
|
+
await dns.stop();
|
|
690
|
+
```
|
|
691
|
+
|
|
692
|
+
`setBindAddresses()` replaces the complete ordered set at the retained port. It
|
|
693
|
+
binds every added UDP/TCP pair before publishing any change; a preparation failure
|
|
694
|
+
drops all additions and leaves the prior set and accepted snapshot intact.
|
|
695
|
+
Unchanged sockets and TCP connections survive. Removed query and connection work
|
|
696
|
+
is cancelled and joined before acknowledgement. All addresses share one native
|
|
697
|
+
snapshot/revision and the same global 256 UDP-job and 128 TCP-connection budgets.
|
|
698
|
+
An empty set has `active: false` while retaining the accepted revision and native
|
|
699
|
+
owner. Port zero allocates one common port at the first nonempty binding and
|
|
700
|
+
retains it through later empty sets; before that first binding, status reports zero.
|
|
701
|
+
|
|
702
|
+
For a mixed address/authority transition, the caller persists and serializes its
|
|
703
|
+
combined intent, binds the union of old and new addresses, applies one new complete
|
|
704
|
+
snapshot, then sets the final address set. This ensures new gateways exist before
|
|
705
|
+
their client authority is applied and removes old listeners only after withdrawal.
|
|
706
|
+
Every query still selects its view by kernel-observed source and checks the same
|
|
707
|
+
current revision before sending. Listener changes never renew validity or change
|
|
708
|
+
client membership. A transport-ambiguous listener mutation fences the facade until
|
|
709
|
+
joined cleanup, just like a snapshot mutation. A new owner must receive the retained
|
|
710
|
+
snapshot and revision floor from the caller's persistence layer.
|
|
711
|
+
|
|
712
|
+
All current listener addresses are forbidden forwarding destinations. Adding a
|
|
713
|
+
listener that matches an accepted upstream rejects before binding; explicitly
|
|
714
|
+
withdraw that forwarding authority first. Removing a listener does not remove any
|
|
715
|
+
independently configured `forbiddenUpstreamAddresses` entry. The 256-address bound
|
|
716
|
+
does not imply that an arbitrary generated snapshot fits the separate native view,
|
|
717
|
+
record and encoded-size limits; callers must preflight the exact complete input.
|
|
718
|
+
|
|
671
719
|
For an installed or compiled node bundle, pass a second, process-only option:
|
|
672
720
|
`new ManagedDnsServer(configuration, { binaryPath: '/opt/node/bin/rustdns' })`.
|
|
673
721
|
`binaryPath` must be absolute and is never serialized into a DNS snapshot or native
|
|
@@ -772,7 +820,7 @@ most four upstreams, 1,024 allowed suffixes per view, 512 response records, 256
|
|
|
772
820
|
bound forwarding work. A response arriving after replacement or expiry cannot
|
|
773
821
|
answer under its old authority.
|
|
774
822
|
|
|
775
|
-
`start()` binds both transports before admission. `stop()` closes admission, joins
|
|
823
|
+
`start()` binds both transports at every initial address before admission. `stop()` closes admission, joins
|
|
776
824
|
pending facade calls and all native query/connection work, and confirms child
|
|
777
825
|
termination. Failed cleanup remains owned and retryable. A transport-ambiguous
|
|
778
826
|
snapshot update prevents further mutations until cleanup; callers must reconcile
|
package/ts/00_commitinfo_data.ts
CHANGED
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@push.rocks/smartdns',
|
|
6
|
-
version: '8.
|
|
6
|
+
version: '8.5.1',
|
|
7
7
|
description: 'A robust TypeScript library providing advanced DNS management and resolution capabilities including support for DNSSEC, custom DNS servers, and integration with various DNS providers.'
|
|
8
8
|
}
|