@push.rocks/smartdns 8.2.0 → 8.3.0
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/.smartconfig.json +10 -4
- package/dist_rust/rustdns-client_linux_amd64_musl +0 -0
- package/dist_rust/rustdns-client_linux_amd64_musl.tsrust-build.json +14 -0
- package/dist_rust/{rustdns-client_linux_arm64 → rustdns-client_linux_arm64_musl} +0 -0
- package/dist_rust/rustdns-client_linux_arm64_musl.tsrust-build.json +14 -0
- package/dist_rust/rustdns_linux_amd64_musl +0 -0
- package/dist_rust/rustdns_linux_amd64_musl.tsrust-build.json +14 -0
- package/dist_rust/rustdns_linux_arm64_musl +0 -0
- package/dist_rust/rustdns_linux_arm64_musl.tsrust-build.json +14 -0
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts_client/classes.rustdnsclientbridge.js +4 -1
- package/dist_ts_server/classes.dnsserver.d.ts +24 -1
- package/dist_ts_server/classes.dnsserver.js +391 -3
- package/dist_ts_server/classes.manageddnsserver.d.ts +34 -0
- package/dist_ts_server/classes.manageddnsserver.js +141 -0
- package/dist_ts_server/classes.rustdnsbridge.d.ts +31 -1
- package/dist_ts_server/classes.rustdnsbridge.js +34 -13
- package/dist_ts_server/index.d.ts +2 -0
- package/dist_ts_server/index.js +3 -1
- package/dist_ts_server/interfaces.managed.d.ts +79 -0
- package/dist_ts_server/interfaces.managed.js +2 -0
- package/dist_ts_server/plugins.d.ts +4 -1
- package/dist_ts_server/plugins.js +5 -2
- package/notices/cargo-dependencies.html +3412 -0
- package/notices/cfg_aliases-0.2.1-license.txt +9 -0
- package/notices/cfg_aliases-0.2.1-notices.txt +26 -0
- package/notices/compiler-builtins-license.txt +275 -0
- package/notices/fiat-crypto-0.2.9-copyright.txt +7 -0
- package/notices/group-0.13.0-copyright.txt +14 -0
- package/notices/inventory.json +1290 -0
- package/notices/llvm-libunwind-license.txt +311 -0
- package/notices/lru-slab-0.1.2-license.txt +7 -0
- package/notices/musl-copyright.txt +193 -0
- package/notices/quinn-0.11.9-license.txt +7 -0
- package/notices/quinn-proto-0.11.13-license.txt +7 -0
- package/notices/quinn-udp-0.5.14-license.txt +7 -0
- package/notices/rand-0.8.5-copyright.txt +12 -0
- package/notices/rand-0.9.2-copyright.txt +12 -0
- package/notices/rand_chacha-0.3.1-copyright.txt +12 -0
- package/notices/rand_chacha-0.9.0-copyright.txt +12 -0
- package/notices/rand_core-0.6.4-copyright.txt +12 -0
- package/notices/rand_core-0.9.5-copyright.txt +12 -0
- package/notices/ring-0.17.14-fiat-license.txt +15 -0
- package/notices/ring-0.17.14-license-boringssl.txt +272 -0
- package/notices/ring-0.17.14-license-other-bits.txt +13 -0
- package/notices/ring-0.17.14-license.txt +9 -0
- package/notices/ring-0.17.14-once-cell-license-apache.txt +201 -0
- package/notices/ring-0.17.14-once-cell-license-mit.txt +23 -0
- package/notices/ring-0.17.14-source-attributions.txt +1544 -0
- package/notices/rust-standard-library.html +8266 -0
- package/notices/rustc-hash-2.1.1-license.txt +23 -0
- package/notices/thiserror-2.0.18-license.txt +23 -0
- package/notices/thiserror-impl-2.0.18-license.txt +23 -0
- package/notices/tinyvec-1.10.0-license.txt +5 -0
- package/notices/tinyvec_macros-0.1.1-license.txt +21 -0
- package/notices/utf8_iter-1.0.4-copyright.txt +42 -0
- package/notices/valuable-0.1.1-license.txt +25 -0
- package/notices/web-time-1.1.0-license.txt +21 -0
- package/notices/zerocopy-derive-0.8.39-license.txt +26 -0
- package/package.json +16 -6
- package/readme.md +198 -1
- package/third-party-notices.md +96 -0
- package/ts/00_commitinfo_data.ts +1 -1
- package/dist_rust/rustdns-client_linux_amd64 +0 -0
- package/dist_rust/rustdns-client_linux_amd64.tsrust-build.json +0 -14
- package/dist_rust/rustdns-client_linux_arm64.tsrust-build.json +0 -14
- package/dist_rust/rustdns_linux_amd64 +0 -0
- package/dist_rust/rustdns_linux_amd64.tsrust-build.json +0 -14
- package/dist_rust/rustdns_linux_arm64 +0 -0
- package/dist_rust/rustdns_linux_arm64.tsrust-build.json +0 -14
- package/readme.hints.md +0 -290
- /package/{license → license.md} +0 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { type IRustDnsBridgeOptions } from './classes.rustdnsbridge.js';
|
|
2
|
+
import type { IManagedDnsClockEvidence, IManagedDnsRevision, IManagedDnsServerOptions, IManagedDnsSnapshot, IManagedDnsStatus } from './interfaces.managed.js';
|
|
3
|
+
/**
|
|
4
|
+
* Native private-view DNS owner. Each instance owns one joined child lifecycle.
|
|
5
|
+
* The caller authenticates and persists complete snapshots and revision receipts
|
|
6
|
+
* through its own persistence layer before acknowledging applied configuration.
|
|
7
|
+
* Workload source/interface anti-spoofing remains the caller's kernel-policy duty.
|
|
8
|
+
*/
|
|
9
|
+
export declare class ManagedDnsServer {
|
|
10
|
+
private readonly bridge;
|
|
11
|
+
private readonly options;
|
|
12
|
+
private queue;
|
|
13
|
+
private closing;
|
|
14
|
+
private spawned;
|
|
15
|
+
private started;
|
|
16
|
+
private failedOwned;
|
|
17
|
+
private stopPromise;
|
|
18
|
+
constructor(options: IManagedDnsServerOptions, processOptions?: IRustDnsBridgeOptions);
|
|
19
|
+
private enqueue;
|
|
20
|
+
private ensureSpawned;
|
|
21
|
+
/** Starts the child if needed; does not admit queries or create a listener. */
|
|
22
|
+
getClockEvidence(): Promise<IManagedDnsClockEvidence>;
|
|
23
|
+
/** Bind both transports. Until an accepted snapshot exists all queries refuse. */
|
|
24
|
+
start(): Promise<IManagedDnsStatus>;
|
|
25
|
+
/** Atomic complete replacement; older revisions and conflicting replay reject. */
|
|
26
|
+
applySnapshot(snapshot: IManagedDnsSnapshot): Promise<IManagedDnsRevision>;
|
|
27
|
+
getStatus(): Promise<IManagedDnsStatus>;
|
|
28
|
+
/**
|
|
29
|
+
* Stop admission immediately, join pending calls and native listener/query
|
|
30
|
+
* cleanup, then confirm child termination. Failed cleanup remains retryable.
|
|
31
|
+
* An instance is single-use; restart with the persisted snapshot revision floor.
|
|
32
|
+
*/
|
|
33
|
+
stop(): Promise<void>;
|
|
34
|
+
}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { RustDnsBridge } from './classes.rustdnsbridge.js';
|
|
2
|
+
import * as plugins from './plugins.js';
|
|
3
|
+
/**
|
|
4
|
+
* Native private-view DNS owner. Each instance owns one joined child lifecycle.
|
|
5
|
+
* The caller authenticates and persists complete snapshots and revision receipts
|
|
6
|
+
* through its own persistence layer before acknowledging applied configuration.
|
|
7
|
+
* Workload source/interface anti-spoofing remains the caller's kernel-policy duty.
|
|
8
|
+
*/
|
|
9
|
+
export class ManagedDnsServer {
|
|
10
|
+
constructor(options, processOptions = {}) {
|
|
11
|
+
this.queue = Promise.resolve();
|
|
12
|
+
this.closing = false;
|
|
13
|
+
this.spawned = false;
|
|
14
|
+
this.started = false;
|
|
15
|
+
this.failedOwned = false;
|
|
16
|
+
this.stopPromise = null;
|
|
17
|
+
this.options = structuredClone(options);
|
|
18
|
+
this.bridge = new RustDnsBridge(processOptions);
|
|
19
|
+
}
|
|
20
|
+
enqueue(operation) {
|
|
21
|
+
if (this.closing || this.failedOwned) {
|
|
22
|
+
return Promise.reject(new Error('Managed DNS owner is closing or requires cleanup'));
|
|
23
|
+
}
|
|
24
|
+
const result = this.queue.then(async () => {
|
|
25
|
+
if (this.closing || this.failedOwned) {
|
|
26
|
+
throw new Error('Managed DNS owner is closing or requires cleanup');
|
|
27
|
+
}
|
|
28
|
+
return operation();
|
|
29
|
+
});
|
|
30
|
+
this.queue = result.catch(() => { });
|
|
31
|
+
return result;
|
|
32
|
+
}
|
|
33
|
+
async ensureSpawned() {
|
|
34
|
+
if (this.spawned) {
|
|
35
|
+
if (!this.bridge.running) {
|
|
36
|
+
this.failedOwned = true;
|
|
37
|
+
throw new Error('Managed DNS child exited; create a fresh owner after cleanup');
|
|
38
|
+
}
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
try {
|
|
42
|
+
if (!(await this.bridge.spawn()))
|
|
43
|
+
throw new Error('Managed DNS native binary unavailable');
|
|
44
|
+
this.spawned = true;
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
this.failedOwned = true;
|
|
48
|
+
throw error;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/** Starts the child if needed; does not admit queries or create a listener. */
|
|
52
|
+
getClockEvidence() {
|
|
53
|
+
return this.enqueue(async () => {
|
|
54
|
+
await this.ensureSpawned();
|
|
55
|
+
return this.bridge.managedClock();
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
/** Bind both transports. Until an accepted snapshot exists all queries refuse. */
|
|
59
|
+
start() {
|
|
60
|
+
return this.enqueue(async () => {
|
|
61
|
+
if (this.started)
|
|
62
|
+
throw new Error('Managed DNS server already started');
|
|
63
|
+
await this.ensureSpawned();
|
|
64
|
+
try {
|
|
65
|
+
const status = await this.bridge.managedStart(this.options);
|
|
66
|
+
this.started = true;
|
|
67
|
+
return status;
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
this.failedOwned = true;
|
|
71
|
+
throw error;
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
/** Atomic complete replacement; older revisions and conflicting replay reject. */
|
|
76
|
+
applySnapshot(snapshot) {
|
|
77
|
+
// Clone before asynchronous queueing so caller mutation cannot change an intent.
|
|
78
|
+
const ownedSnapshot = structuredClone(snapshot);
|
|
79
|
+
return this.enqueue(async () => {
|
|
80
|
+
if (!this.started)
|
|
81
|
+
throw new Error('Managed DNS server is not started');
|
|
82
|
+
try {
|
|
83
|
+
return await this.bridge.managedApply(ownedSnapshot);
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
// A native validation rejection leaves the prior snapshot intact. A
|
|
87
|
+
// missing/ambiguous transport acknowledgement owns unresolved effects;
|
|
88
|
+
// block further mutations until this child has been joined and replaced.
|
|
89
|
+
if (!(error instanceof plugins.smartrust.RustBridgeRequestError)
|
|
90
|
+
|| error.code !== 'ERR_RUST_BRIDGE_REQUEST_RUST_RESPONSE') {
|
|
91
|
+
this.failedOwned = true;
|
|
92
|
+
}
|
|
93
|
+
throw error;
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
getStatus() {
|
|
98
|
+
return this.enqueue(async () => {
|
|
99
|
+
if (!this.started)
|
|
100
|
+
throw new Error('Managed DNS server is not started');
|
|
101
|
+
return this.bridge.managedStatus();
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Stop admission immediately, join pending calls and native listener/query
|
|
106
|
+
* cleanup, then confirm child termination. Failed cleanup remains retryable.
|
|
107
|
+
* An instance is single-use; restart with the persisted snapshot revision floor.
|
|
108
|
+
*/
|
|
109
|
+
stop() {
|
|
110
|
+
if (this.stopPromise)
|
|
111
|
+
return this.stopPromise;
|
|
112
|
+
this.closing = true;
|
|
113
|
+
const operation = this.queue.then(async () => {
|
|
114
|
+
const failures = [];
|
|
115
|
+
if (this.bridge.running) {
|
|
116
|
+
try {
|
|
117
|
+
await this.bridge.managedStop();
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
failures.push(error);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
try {
|
|
124
|
+
await this.bridge.terminate();
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
failures.push(error);
|
|
128
|
+
}
|
|
129
|
+
if (failures.length) {
|
|
130
|
+
this.failedOwned = true;
|
|
131
|
+
throw new AggregateError(failures, 'Managed DNS cleanup failed');
|
|
132
|
+
}
|
|
133
|
+
this.spawned = false;
|
|
134
|
+
this.started = false;
|
|
135
|
+
});
|
|
136
|
+
this.stopPromise = operation;
|
|
137
|
+
operation.catch(() => { this.stopPromise = null; });
|
|
138
|
+
return operation;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5tYW5hZ2VkZG5zc2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfc2VydmVyL2NsYXNzZXMubWFuYWdlZGRuc3NlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUE4QixNQUFNLDRCQUE0QixDQUFDO0FBQ3ZGLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBU3hDOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQVUzQixZQUFZLE9BQWlDLEVBQUUsaUJBQXdDLEVBQUU7UUFQakYsVUFBSyxHQUFxQixPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDNUMsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsZ0JBQVcsR0FBeUIsSUFBSSxDQUFDO1FBRy9DLElBQUksQ0FBQyxPQUFPLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVPLE9BQU8sQ0FBSSxTQUEyQjtRQUM1QyxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JDLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDLENBQUM7UUFDdkYsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ3hDLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsa0RBQWtELENB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
|
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
import * as plugins from './plugins.js';
|
|
2
|
+
import type { IManagedDnsClockEvidence, IManagedDnsRevision, IManagedDnsServerOptions, IManagedDnsSnapshot, IManagedDnsStatus } from './interfaces.managed.js';
|
|
2
3
|
export type TDnsCommands = {
|
|
4
|
+
managedClock: {
|
|
5
|
+
params: Record<string, never>;
|
|
6
|
+
result: IManagedDnsClockEvidence;
|
|
7
|
+
};
|
|
8
|
+
managedStart: {
|
|
9
|
+
params: IManagedDnsServerOptions;
|
|
10
|
+
result: IManagedDnsStatus;
|
|
11
|
+
};
|
|
12
|
+
managedApply: {
|
|
13
|
+
params: IManagedDnsSnapshot;
|
|
14
|
+
result: IManagedDnsRevision;
|
|
15
|
+
};
|
|
16
|
+
managedStatus: {
|
|
17
|
+
params: Record<string, never>;
|
|
18
|
+
result: IManagedDnsStatus;
|
|
19
|
+
};
|
|
20
|
+
managedStop: {
|
|
21
|
+
params: Record<string, never>;
|
|
22
|
+
result: Record<string, never>;
|
|
23
|
+
};
|
|
3
24
|
start: {
|
|
4
25
|
params: {
|
|
5
26
|
config: IRustDnsConfig;
|
|
@@ -89,16 +110,25 @@ export interface IDnsQueryEvent {
|
|
|
89
110
|
questions: IIpcDnsQuestion[];
|
|
90
111
|
dnssecRequested: boolean;
|
|
91
112
|
}
|
|
113
|
+
export interface IRustDnsBridgeOptions {
|
|
114
|
+
/** Installer-verified absolute native executable. Disables every lookup fallback. */
|
|
115
|
+
binaryPath?: string;
|
|
116
|
+
}
|
|
92
117
|
/**
|
|
93
118
|
* Bridge to the Rust DNS binary via smartrust IPC.
|
|
94
119
|
*/
|
|
95
120
|
export declare class RustDnsBridge extends plugins.events.EventEmitter {
|
|
96
121
|
private bridge;
|
|
97
|
-
constructor();
|
|
122
|
+
constructor(options?: IRustDnsBridgeOptions);
|
|
98
123
|
/**
|
|
99
124
|
* Spawn the Rust binary and wait for readiness.
|
|
100
125
|
*/
|
|
101
126
|
spawn(): Promise<boolean>;
|
|
127
|
+
managedClock(): Promise<IManagedDnsClockEvidence>;
|
|
128
|
+
managedStart(options: IManagedDnsServerOptions): Promise<IManagedDnsStatus>;
|
|
129
|
+
managedApply(snapshot: IManagedDnsSnapshot): Promise<IManagedDnsRevision>;
|
|
130
|
+
managedStatus(): Promise<IManagedDnsStatus>;
|
|
131
|
+
managedStop(): Promise<void>;
|
|
102
132
|
/**
|
|
103
133
|
* Start the DNS server with given config.
|
|
104
134
|
*/
|
|
@@ -3,23 +3,29 @@ import * as plugins from './plugins.js';
|
|
|
3
3
|
* Bridge to the Rust DNS binary via smartrust IPC.
|
|
4
4
|
*/
|
|
5
5
|
export class RustDnsBridge extends plugins.events.EventEmitter {
|
|
6
|
-
constructor() {
|
|
6
|
+
constructor(options = {}) {
|
|
7
7
|
super();
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
if (options.binaryPath !== undefined
|
|
9
|
+
&& (typeof options.binaryPath !== 'string' || !plugins.path.isAbsolute(options.binaryPath))) {
|
|
10
|
+
throw new TypeError('DNS binaryPath must be an absolute executable path');
|
|
11
|
+
}
|
|
11
12
|
const localPaths = [];
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
if (options.binaryPath === undefined) {
|
|
14
|
+
const packageDir = plugins.path.resolve(plugins.path.dirname(new URL(import.meta.url).pathname), '..');
|
|
15
|
+
const platformSuffix = getPlatformSuffix();
|
|
16
|
+
if (platformSuffix) {
|
|
17
|
+
if (process.platform === 'linux') {
|
|
18
|
+
localPaths.push(plugins.path.join(packageDir, 'dist_rust', `rustdns_${platformSuffix}_musl`));
|
|
19
|
+
}
|
|
20
|
+
localPaths.push(plugins.path.join(packageDir, 'dist_rust', `rustdns_${platformSuffix}`));
|
|
21
|
+
}
|
|
22
|
+
localPaths.push(plugins.path.join(packageDir, 'dist_rust', 'rustdns'));
|
|
23
|
+
localPaths.push(plugins.path.join(packageDir, 'rust', 'target', 'release', 'rustdns'));
|
|
24
|
+
localPaths.push(plugins.path.join(packageDir, 'rust', 'target', 'debug', 'rustdns'));
|
|
15
25
|
}
|
|
16
|
-
// dist_rust/ without suffix (native build)
|
|
17
|
-
localPaths.push(plugins.path.join(packageDir, 'dist_rust', 'rustdns'));
|
|
18
|
-
// Local dev build paths
|
|
19
|
-
localPaths.push(plugins.path.join(packageDir, 'rust', 'target', 'release', 'rustdns'));
|
|
20
|
-
localPaths.push(plugins.path.join(packageDir, 'rust', 'target', 'debug', 'rustdns'));
|
|
21
26
|
this.bridge = new plugins.smartrust.RustBridge({
|
|
22
27
|
binaryName: 'rustdns',
|
|
28
|
+
binaryPath: options.binaryPath,
|
|
23
29
|
cliArgs: ['--management'],
|
|
24
30
|
requestTimeoutMs: 30_000,
|
|
25
31
|
readyTimeoutMs: 10_000,
|
|
@@ -55,6 +61,21 @@ export class RustDnsBridge extends plugins.events.EventEmitter {
|
|
|
55
61
|
async spawn() {
|
|
56
62
|
return this.bridge.spawn();
|
|
57
63
|
}
|
|
64
|
+
managedClock() {
|
|
65
|
+
return this.bridge.sendCommand('managedClock', {});
|
|
66
|
+
}
|
|
67
|
+
managedStart(options) {
|
|
68
|
+
return this.bridge.sendCommand('managedStart', options);
|
|
69
|
+
}
|
|
70
|
+
managedApply(snapshot) {
|
|
71
|
+
return this.bridge.sendCommand('managedApply', snapshot);
|
|
72
|
+
}
|
|
73
|
+
managedStatus() {
|
|
74
|
+
return this.bridge.sendCommand('managedStatus', {});
|
|
75
|
+
}
|
|
76
|
+
async managedStop() {
|
|
77
|
+
await this.bridge.sendCommand('managedStop', {});
|
|
78
|
+
}
|
|
58
79
|
/**
|
|
59
80
|
* Start the DNS server with given config.
|
|
60
81
|
*/
|
|
@@ -146,4 +167,4 @@ function getPlatformSuffix() {
|
|
|
146
167
|
}
|
|
147
168
|
return null;
|
|
148
169
|
}
|
|
149
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5ydXN0ZG5zYnJpZGdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfc2VydmVyL2NsYXNzZXMucnVzdGRuc2JyaWRnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQXFHeEM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sYUFBYyxTQUFRLE9BQU8sQ0FBQyxNQUFNLENBQUMsWUFBWTtJQUc1RCxZQUFZLFVBQWlDLEVBQUU7UUFDN0MsS0FBSyxFQUFFLENBQUM7UUFFUixJQUFJLE9BQU8sQ0FBQyxVQUFVLEtBQUssU0FBUztlQUMvQixDQUFDLE9BQU8sT0FBTyxDQUFDLFVBQVUsS0FBSyxRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzlGLE1BQU0sSUFBSSxTQUFTLENBQUMsb0RBQW9ELENBQUMsQ0FBQztRQUM1RSxDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQWEsRUFBRSxDQUFDO1FBQ2hDLElBQUksT0FBTyxDQUFDLFVBQVUsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNyQyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FDckMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFDdkQsSUFBSSxDQUNMLENBQUM7WUFDRixNQUFNLGNBQWMsR0FBRyxpQkFBaUIsRUFBRSxDQUFDO1lBQzNDLElBQUksY0FBYyxFQUFFLENBQUM7Z0JBQ25CLElBQUksT0FBTyxDQUFDLFFBQVEsS0FBSyxPQUFPLEVBQUUsQ0FBQztvQkFDakMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUs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
|
package/dist_ts_server/index.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
export * from './classes.dnsserver.js';
|
|
2
2
|
export * from './classes.rustdnsbridge.js';
|
|
3
|
-
|
|
3
|
+
export * from './classes.manageddnsserver.js';
|
|
4
|
+
export * from './interfaces.managed.js';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c19zZXJ2ZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyx5QkFBeUIsQ0FBQyJ9
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/** Kernel boot identity and suspend-inclusive Linux CLOCK_BOOTTIME evidence. */
|
|
2
|
+
export interface IManagedDnsClockEvidence {
|
|
3
|
+
bootId: string;
|
|
4
|
+
boottimeMs: number;
|
|
5
|
+
}
|
|
6
|
+
export interface IManagedDnsRevision {
|
|
7
|
+
revision: number;
|
|
8
|
+
/** SHA-256 of the native typed snapshot encoding, returned by applySnapshot. */
|
|
9
|
+
contentHash: string;
|
|
10
|
+
}
|
|
11
|
+
export interface IManagedDnsServerOptions {
|
|
12
|
+
ownerId: string;
|
|
13
|
+
/** Exact IP literal; wildcard listeners are forbidden. */
|
|
14
|
+
bindAddress: string;
|
|
15
|
+
/** UDP and TCP use the same port. Zero allocates one available port. */
|
|
16
|
+
port: number;
|
|
17
|
+
/** Persist this fence alongside the complete accepted snapshot. */
|
|
18
|
+
revisionFloor: IManagedDnsRevision | null;
|
|
19
|
+
/** Other node-local resolver addresses, forbidden as forwarding destinations. */
|
|
20
|
+
forbiddenUpstreamAddresses: string[];
|
|
21
|
+
}
|
|
22
|
+
export interface IManagedDnsSnapshot {
|
|
23
|
+
ownerId: string;
|
|
24
|
+
revision: number;
|
|
25
|
+
/** Authenticated parent projection's SHA-256; not a signature substitute. */
|
|
26
|
+
sourceContentHash: string;
|
|
27
|
+
/** Explicit withdrawal. A null configuration retains the revision fence. */
|
|
28
|
+
configuration: IManagedDnsConfiguration | null;
|
|
29
|
+
}
|
|
30
|
+
export interface IManagedDnsConfiguration {
|
|
31
|
+
bootId: string;
|
|
32
|
+
/** Absolute CLOCK_BOOTTIME milliseconds, never wall clock or JS performance.now. */
|
|
33
|
+
validUntilBoottimeMs: number;
|
|
34
|
+
blockedSuffixes: string[];
|
|
35
|
+
views: IManagedDnsView[];
|
|
36
|
+
clients: IManagedDnsClient[];
|
|
37
|
+
}
|
|
38
|
+
export interface IManagedDnsClient {
|
|
39
|
+
/** Kernel-observed source IP, whose workload/interface binding the owner enforces. */
|
|
40
|
+
address: string;
|
|
41
|
+
viewId: string;
|
|
42
|
+
}
|
|
43
|
+
export interface IManagedDnsView {
|
|
44
|
+
id: string;
|
|
45
|
+
zones: string[];
|
|
46
|
+
/** Declared names with no eligible records return authoritative NODATA. */
|
|
47
|
+
names: IManagedDnsDeclaredName[];
|
|
48
|
+
negativeTtl: number;
|
|
49
|
+
forwarding: IManagedDnsForwarding | null;
|
|
50
|
+
}
|
|
51
|
+
export interface IManagedDnsDeclaredName {
|
|
52
|
+
name: string;
|
|
53
|
+
records: IManagedDnsRecord[];
|
|
54
|
+
}
|
|
55
|
+
export interface IManagedDnsRecord {
|
|
56
|
+
type: 'A' | 'AAAA' | 'PTR';
|
|
57
|
+
data: string;
|
|
58
|
+
ttl: number;
|
|
59
|
+
validUntilBoottimeMs: number;
|
|
60
|
+
}
|
|
61
|
+
export interface IManagedDnsForwarding {
|
|
62
|
+
upstreams: Array<{
|
|
63
|
+
address: string;
|
|
64
|
+
port: number;
|
|
65
|
+
}>;
|
|
66
|
+
/** A single '.' explicitly permits external names outside privacy barriers. */
|
|
67
|
+
/** At most 1,024 suffixes, including unions produced by policy intersection. */
|
|
68
|
+
allowedSuffixes: string[];
|
|
69
|
+
timeoutMs: number;
|
|
70
|
+
maxTtl: number;
|
|
71
|
+
}
|
|
72
|
+
export interface IManagedDnsStatus {
|
|
73
|
+
ownerId: string;
|
|
74
|
+
address: string;
|
|
75
|
+
port: number;
|
|
76
|
+
accepted: IManagedDnsRevision | null;
|
|
77
|
+
active: boolean;
|
|
78
|
+
clock: IManagedDnsClockEvidence;
|
|
79
|
+
}
|
|
@@ -2,9 +2,12 @@ import crypto from 'crypto';
|
|
|
2
2
|
import dgram from 'dgram';
|
|
3
3
|
import { EventEmitter } from 'events';
|
|
4
4
|
import fs from 'fs';
|
|
5
|
+
import * as http from 'node:http';
|
|
6
|
+
import * as http2 from 'node:http2';
|
|
5
7
|
import * as net from 'net';
|
|
6
8
|
import * as path from 'path';
|
|
7
|
-
|
|
9
|
+
import * as stream from 'node:stream';
|
|
10
|
+
export { crypto, dgram, fs, http, http2, net, path, stream, };
|
|
8
11
|
export declare const events: {
|
|
9
12
|
EventEmitter: typeof EventEmitter;
|
|
10
13
|
};
|
|
@@ -3,9 +3,12 @@ import crypto from 'crypto';
|
|
|
3
3
|
import dgram from 'dgram';
|
|
4
4
|
import { EventEmitter } from 'events';
|
|
5
5
|
import fs from 'fs';
|
|
6
|
+
import * as http from 'node:http';
|
|
7
|
+
import * as http2 from 'node:http2';
|
|
6
8
|
import * as net from 'net';
|
|
7
9
|
import * as path from 'path';
|
|
8
|
-
|
|
10
|
+
import * as stream from 'node:stream';
|
|
11
|
+
export { crypto, dgram, fs, http, http2, net, path, stream, };
|
|
9
12
|
export const events = { EventEmitter };
|
|
10
13
|
// @push.rocks scope
|
|
11
14
|
import * as smartrust from '@push.rocks/smartrust';
|
|
@@ -13,4 +16,4 @@ export { smartrust, };
|
|
|
13
16
|
// third party
|
|
14
17
|
import * as minimatch from 'minimatch';
|
|
15
18
|
export { minimatch, };
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzX3NlcnZlci9wbHVnaW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWM7QUFDZCxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDdEMsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sS0FBSyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sS0FBSyxHQUFHLE1BQU0sS0FBSyxDQUFDO0FBQzNCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sS0FBSyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBRXRDLE9BQU8sRUFDTCxNQUFNLEVBQ04sS0FBSyxFQUNMLEVBQUUsRUFDRixJQUFJLEVBQ0osS0FBSyxFQUNMLEdBQUcsRUFDSCxJQUFJLEVBQ0osTUFBTSxHQUNQLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsRUFBRSxZQUFZLEVBQUUsQ0FBQztBQUV2QyxvQkFBb0I7QUFDcEIsT0FBTyxLQUFLLFNBQVMsTUFBTSx1QkFBdUIsQ0FBQztBQUVuRCxPQUFPLEVBQ0wsU0FBUyxHQUNWLENBQUE7QUFFRCxjQUFjO0FBQ2QsT0FBTyxLQUFLLFNBQVMsTUFBTSxXQUFXLENBQUM7QUFFdkMsT0FBTyxFQUNMLFNBQVMsR0FDVixDQUFBIn0=
|