@serve.zone/dcrouter 18.9.3 → 18.9.4
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/deno.json +1 -1
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/classes.dcrouter.js +5 -4
- package/dist_ts/db/documents/classes.authentication-event.doc.d.ts +0 -1
- package/dist_ts/db/documents/classes.authentication-event.doc.js +176 -259
- package/dist_ts/db/documents/classes.email-traffic-bucket.doc.js +110 -188
- package/dist_ts/dns/manager.dns-authority.d.ts +5 -0
- package/dist_ts/dns/manager.dns-authority.js +97 -53
- package/dist_ts/dns/manager.dns.js +23 -5
- package/dist_ts/email/classes.email-domain.manager.js +14 -3
- package/dist_ts/email/classes.email-settings.manager.js +26 -6
- package/dist_ts/email/classes.mail-dns-sync.js +22 -2
- package/dist_ts/monitoring/classes.metricscache.d.ts +28 -19
- package/dist_ts/monitoring/classes.metricscache.js +133 -62
- package/dist_ts/monitoring/classes.metricsmanager.js +7 -5
- package/dist_ts/plugins.d.ts +2 -1
- package/dist_ts/plugins.js +3 -2
- package/dist_ts/remoteingress/classes.remoteingress-manager.js +46 -9
- package/dist_ts/security/classes.authentication-event-manager.d.ts +5 -1
- package/dist_ts/security/classes.authentication-event-manager.js +32 -22
- package/dist_ts/vpn/classes.vpn-manager.js +34 -2
- package/dist_ts_migrations/index.d.ts +4 -1
- package/dist_ts_migrations/index.js +18 -3
- package/dist_ts_web/00_commitinfo_data.js +1 -1
- package/package.json +7 -6
- package/readme.hints.md +72 -0
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/classes.dcrouter.ts +4 -3
- package/ts/db/documents/classes.authentication-event.doc.ts +64 -87
- package/ts/db/documents/classes.email-traffic-bucket.doc.ts +10 -9
- package/ts/dns/manager.dns-authority.ts +92 -54
- package/ts/dns/manager.dns.ts +20 -4
- package/ts/email/classes.email-domain.manager.ts +12 -2
- package/ts/email/classes.email-settings.manager.ts +23 -5
- package/ts/email/classes.mail-dns-sync.ts +23 -1
- package/ts/monitoring/classes.metricscache.ts +133 -79
- package/ts/monitoring/classes.metricsmanager.ts +6 -4
- package/ts/plugins.ts +2 -0
- package/ts/remoteingress/classes.remoteingress-manager.ts +42 -8
- package/ts/security/classes.authentication-event-manager.ts +31 -20
- package/ts/vpn/classes.vpn-manager.ts +32 -1
- package/ts_web/00_commitinfo_data.ts +1 -1
|
@@ -1,200 +1,122 @@
|
|
|
1
|
-
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
2
|
-
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
3
|
-
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
4
|
-
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
5
|
-
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
6
|
-
var _, done = false;
|
|
7
|
-
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
8
|
-
var context = {};
|
|
9
|
-
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
10
|
-
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
11
|
-
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
12
|
-
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
13
|
-
if (kind === "accessor") {
|
|
14
|
-
if (result === void 0) continue;
|
|
15
|
-
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
16
|
-
if (_ = accept(result.get)) descriptor.get = _;
|
|
17
|
-
if (_ = accept(result.set)) descriptor.set = _;
|
|
18
|
-
if (_ = accept(result.init)) initializers.unshift(_);
|
|
19
|
-
}
|
|
20
|
-
else if (_ = accept(result)) {
|
|
21
|
-
if (kind === "field") initializers.unshift(_);
|
|
22
|
-
else descriptor[key] = _;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
26
|
-
done = true;
|
|
27
|
-
};
|
|
28
|
-
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
29
|
-
var useValue = arguments.length > 2;
|
|
30
|
-
for (var i = 0; i < initializers.length; i++) {
|
|
31
|
-
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
32
|
-
}
|
|
33
|
-
return useValue ? value : void 0;
|
|
34
|
-
};
|
|
35
1
|
import * as plugins from '../../plugins.js';
|
|
36
2
|
import { DcRouterDb } from '../classes.dcrouter-db.js';
|
|
37
3
|
const DB_OPERATION_TIMEOUT_MS = 5_000;
|
|
38
4
|
const getDb = () => DcRouterDb.getInstance().getDb();
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
let _updatedAt_extraInitializers = [];
|
|
66
|
-
var EmailTrafficBucketDoc = class extends _classSuper {
|
|
67
|
-
static { _classThis = this; }
|
|
68
|
-
static {
|
|
69
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
70
|
-
_id_decorators = [plugins.smartdata.unI(), plugins.smartdata.svDb()];
|
|
71
|
-
_bucketStart_decorators = [plugins.smartdata.svDb()];
|
|
72
|
-
_sent_decorators = [plugins.smartdata.svDb()];
|
|
73
|
-
_received_decorators = [plugins.smartdata.svDb()];
|
|
74
|
-
_failed_decorators = [plugins.smartdata.svDb()];
|
|
75
|
-
_createdAt_decorators = [plugins.smartdata.svDb()];
|
|
76
|
-
_updatedAt_decorators = [plugins.smartdata.svDb()];
|
|
77
|
-
__esDecorate(null, null, _id_decorators, { kind: "field", name: "id", static: false, private: false, access: { has: obj => "id" in obj, get: obj => obj.id, set: (obj, value) => { obj.id = value; } }, metadata: _metadata }, _id_initializers, _id_extraInitializers);
|
|
78
|
-
__esDecorate(null, null, _bucketStart_decorators, { kind: "field", name: "bucketStart", static: false, private: false, access: { has: obj => "bucketStart" in obj, get: obj => obj.bucketStart, set: (obj, value) => { obj.bucketStart = value; } }, metadata: _metadata }, _bucketStart_initializers, _bucketStart_extraInitializers);
|
|
79
|
-
__esDecorate(null, null, _sent_decorators, { kind: "field", name: "sent", static: false, private: false, access: { has: obj => "sent" in obj, get: obj => obj.sent, set: (obj, value) => { obj.sent = value; } }, metadata: _metadata }, _sent_initializers, _sent_extraInitializers);
|
|
80
|
-
__esDecorate(null, null, _received_decorators, { kind: "field", name: "received", static: false, private: false, access: { has: obj => "received" in obj, get: obj => obj.received, set: (obj, value) => { obj.received = value; } }, metadata: _metadata }, _received_initializers, _received_extraInitializers);
|
|
81
|
-
__esDecorate(null, null, _failed_decorators, { kind: "field", name: "failed", static: false, private: false, access: { has: obj => "failed" in obj, get: obj => obj.failed, set: (obj, value) => { obj.failed = value; } }, metadata: _metadata }, _failed_initializers, _failed_extraInitializers);
|
|
82
|
-
__esDecorate(null, null, _createdAt_decorators, { kind: "field", name: "createdAt", static: false, private: false, access: { has: obj => "createdAt" in obj, get: obj => obj.createdAt, set: (obj, value) => { obj.createdAt = value; } }, metadata: _metadata }, _createdAt_initializers, _createdAt_extraInitializers);
|
|
83
|
-
__esDecorate(null, null, _updatedAt_decorators, { kind: "field", name: "updatedAt", static: false, private: false, access: { has: obj => "updatedAt" in obj, get: obj => obj.updatedAt, set: (obj, value) => { obj.updatedAt = value; } }, metadata: _metadata }, _updatedAt_initializers, _updatedAt_extraInitializers);
|
|
84
|
-
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
85
|
-
EmailTrafficBucketDoc = _classThis = _classDescriptor.value;
|
|
86
|
-
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
87
|
-
__runInitializers(_classThis, _classExtraInitializers);
|
|
88
|
-
}
|
|
89
|
-
id = __runInitializers(this, _id_initializers, void 0);
|
|
90
|
-
bucketStart = (__runInitializers(this, _id_extraInitializers), __runInitializers(this, _bucketStart_initializers, void 0));
|
|
91
|
-
sent = (__runInitializers(this, _bucketStart_extraInitializers), __runInitializers(this, _sent_initializers, 0));
|
|
92
|
-
received = (__runInitializers(this, _sent_extraInitializers), __runInitializers(this, _received_initializers, 0));
|
|
93
|
-
failed = (__runInitializers(this, _received_extraInitializers), __runInitializers(this, _failed_initializers, 0));
|
|
94
|
-
createdAt = (__runInitializers(this, _failed_extraInitializers), __runInitializers(this, _createdAt_initializers, void 0));
|
|
95
|
-
updatedAt = (__runInitializers(this, _createdAt_extraInitializers), __runInitializers(this, _updatedAt_initializers, void 0));
|
|
96
|
-
constructor() {
|
|
97
|
-
super();
|
|
98
|
-
__runInitializers(this, _updatedAt_extraInitializers);
|
|
5
|
+
export class EmailTrafficBucketDoc extends plugins.smartdata.SmartDataDbDoc {
|
|
6
|
+
id;
|
|
7
|
+
bucketStart;
|
|
8
|
+
sent = 0;
|
|
9
|
+
received = 0;
|
|
10
|
+
failed = 0;
|
|
11
|
+
createdAt;
|
|
12
|
+
updatedAt;
|
|
13
|
+
constructor() {
|
|
14
|
+
super();
|
|
15
|
+
}
|
|
16
|
+
static async getNativeCollection() {
|
|
17
|
+
const smartdataCollection = EmailTrafficBucketDoc.collection;
|
|
18
|
+
await smartdataCollection.init();
|
|
19
|
+
const probe = new EmailTrafficBucketDoc();
|
|
20
|
+
await smartdataCollection.markUniqueIndexes(probe.uniqueIndexes || []);
|
|
21
|
+
await smartdataCollection.createRegularIndexes(probe.regularIndexes || []);
|
|
22
|
+
return smartdataCollection.mongoDbCollection;
|
|
23
|
+
}
|
|
24
|
+
static validateSnapshot(snapshotArg) {
|
|
25
|
+
const counts = [snapshotArg.sent, snapshotArg.received, snapshotArg.failed];
|
|
26
|
+
if (!Number.isSafeInteger(snapshotArg.bucketStart)
|
|
27
|
+
|| snapshotArg.bucketStart < 0
|
|
28
|
+
|| snapshotArg.bucketStart % 60_000 !== 0
|
|
29
|
+
|| counts.some((count) => !Number.isSafeInteger(count) || count < 0)) {
|
|
30
|
+
throw new Error('Invalid email traffic bucket snapshot');
|
|
99
31
|
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
32
|
+
}
|
|
33
|
+
/** Persist retry-safe absolute monotonic counters. */
|
|
34
|
+
static async persistAbsolute(snapshotsArg) {
|
|
35
|
+
if (snapshotsArg.length === 0)
|
|
36
|
+
return;
|
|
37
|
+
if (snapshotsArg.length > 500) {
|
|
38
|
+
throw new Error('EmailTrafficBucketDoc.persistAbsolute accepts at most 500 buckets');
|
|
107
39
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
if (!Number.isSafeInteger(snapshotArg.bucketStart)
|
|
111
|
-
|| snapshotArg.bucketStart < 0
|
|
112
|
-
|| snapshotArg.bucketStart % 60_000 !== 0
|
|
113
|
-
|| counts.some((count) => !Number.isSafeInteger(count) || count < 0)) {
|
|
114
|
-
throw new Error('Invalid email traffic bucket snapshot');
|
|
115
|
-
}
|
|
40
|
+
for (const snapshot of snapshotsArg) {
|
|
41
|
+
EmailTrafficBucketDoc.validateSnapshot(snapshot);
|
|
116
42
|
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
},
|
|
139
|
-
$set: {
|
|
140
|
-
updatedAt: now,
|
|
141
|
-
_updatedAt: updatedAt,
|
|
142
|
-
},
|
|
143
|
-
$setOnInsert: {
|
|
144
|
-
id: `email-traffic-${snapshot.bucketStart}`,
|
|
145
|
-
bucketStart: snapshot.bucketStart,
|
|
146
|
-
createdAt: now,
|
|
147
|
-
_createdAt: updatedAt,
|
|
148
|
-
},
|
|
43
|
+
const collection = await EmailTrafficBucketDoc.getNativeCollection();
|
|
44
|
+
const now = Date.now();
|
|
45
|
+
const updatedAt = new Date(now).toISOString();
|
|
46
|
+
await collection.bulkWrite(snapshotsArg.map((snapshot) => ({
|
|
47
|
+
updateOne: {
|
|
48
|
+
filter: { bucketStart: snapshot.bucketStart },
|
|
49
|
+
update: {
|
|
50
|
+
$max: {
|
|
51
|
+
sent: snapshot.sent,
|
|
52
|
+
received: snapshot.received,
|
|
53
|
+
failed: snapshot.failed,
|
|
54
|
+
},
|
|
55
|
+
$set: {
|
|
56
|
+
updatedAt: now,
|
|
57
|
+
_updatedAt: updatedAt,
|
|
58
|
+
},
|
|
59
|
+
$setOnInsert: {
|
|
60
|
+
id: `email-traffic-${snapshot.bucketStart}`,
|
|
61
|
+
bucketStart: snapshot.bucketStart,
|
|
62
|
+
createdAt: now,
|
|
63
|
+
_createdAt: updatedAt,
|
|
149
64
|
},
|
|
150
|
-
upsert: true,
|
|
151
65
|
},
|
|
152
|
-
|
|
66
|
+
upsert: true,
|
|
67
|
+
},
|
|
68
|
+
})), { ordered: false, timeoutMS: DB_OPERATION_TIMEOUT_MS });
|
|
69
|
+
}
|
|
70
|
+
static async loadSince(cutoffArg) {
|
|
71
|
+
if (!Number.isSafeInteger(cutoffArg) || cutoffArg < 0) {
|
|
72
|
+
throw new Error('EmailTrafficBucketDoc.loadSince requires a valid cutoff');
|
|
153
73
|
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
const
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
sent: Number(row.sent || 0),
|
|
167
|
-
received: Number(row.received || 0),
|
|
168
|
-
failed: Number(row.failed || 0),
|
|
169
|
-
}));
|
|
170
|
-
}
|
|
171
|
-
finally {
|
|
172
|
-
await cursor.close({ timeoutMS: DB_OPERATION_TIMEOUT_MS });
|
|
173
|
-
}
|
|
74
|
+
const collection = await EmailTrafficBucketDoc.getNativeCollection();
|
|
75
|
+
const cursor = collection
|
|
76
|
+
.find({ bucketStart: { $gte: cutoffArg } }, { timeoutMS: DB_OPERATION_TIMEOUT_MS })
|
|
77
|
+
.sort({ bucketStart: 1 });
|
|
78
|
+
try {
|
|
79
|
+
const rows = await cursor.toArray();
|
|
80
|
+
return rows.map((row) => ({
|
|
81
|
+
bucketStart: Number(row.bucketStart),
|
|
82
|
+
sent: Number(row.sent || 0),
|
|
83
|
+
received: Number(row.received || 0),
|
|
84
|
+
failed: Number(row.failed || 0),
|
|
85
|
+
}));
|
|
174
86
|
}
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
throw new Error('EmailTrafficBucketDoc.pruneBefore requires a valid cutoff');
|
|
178
|
-
}
|
|
179
|
-
const collection = await EmailTrafficBucketDoc.getNativeCollection();
|
|
180
|
-
let deletedCount = 0;
|
|
181
|
-
while (true) {
|
|
182
|
-
const rows = await collection
|
|
183
|
-
.find({ bucketStart: { $lt: cutoffArg } }, { projection: { _id: 1 }, timeoutMS: DB_OPERATION_TIMEOUT_MS })
|
|
184
|
-
.sort({ bucketStart: 1, _id: 1 })
|
|
185
|
-
.limit(500)
|
|
186
|
-
.toArray();
|
|
187
|
-
if (rows.length === 0)
|
|
188
|
-
break;
|
|
189
|
-
const result = await collection.deleteMany({ _id: { $in: rows.map((row) => row._id) } }, { timeoutMS: DB_OPERATION_TIMEOUT_MS });
|
|
190
|
-
deletedCount += result.deletedCount;
|
|
191
|
-
if (rows.length < 500)
|
|
192
|
-
break;
|
|
193
|
-
}
|
|
194
|
-
return deletedCount;
|
|
87
|
+
finally {
|
|
88
|
+
await cursor.close({ timeoutMS: DB_OPERATION_TIMEOUT_MS });
|
|
195
89
|
}
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
90
|
+
}
|
|
91
|
+
static async pruneBefore(cutoffArg) {
|
|
92
|
+
if (!Number.isSafeInteger(cutoffArg) || cutoffArg < 0) {
|
|
93
|
+
throw new Error('EmailTrafficBucketDoc.pruneBefore requires a valid cutoff');
|
|
94
|
+
}
|
|
95
|
+
const collection = await EmailTrafficBucketDoc.getNativeCollection();
|
|
96
|
+
let deletedCount = 0;
|
|
97
|
+
while (true) {
|
|
98
|
+
const rows = await collection
|
|
99
|
+
.find({ bucketStart: { $lt: cutoffArg } }, { projection: { _id: 1 }, timeoutMS: DB_OPERATION_TIMEOUT_MS })
|
|
100
|
+
.sort({ bucketStart: 1, _id: 1 })
|
|
101
|
+
.limit(500)
|
|
102
|
+
.toArray();
|
|
103
|
+
if (rows.length === 0)
|
|
104
|
+
break;
|
|
105
|
+
const result = await collection.deleteMany({ _id: { $in: rows.map((row) => row._id) } }, { timeoutMS: DB_OPERATION_TIMEOUT_MS });
|
|
106
|
+
deletedCount += result.deletedCount;
|
|
107
|
+
if (rows.length < 500)
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
return deletedCount;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
plugins.smartdata.defineCollectionModel(EmailTrafficBucketDoc, getDb, {
|
|
114
|
+
collectionName: 'EmailTrafficBucketDoc',
|
|
115
|
+
persistedFields: ['id', 'bucketStart', 'sent', 'received', 'failed', 'createdAt', 'updatedAt'],
|
|
116
|
+
identityFields: ['id'],
|
|
117
|
+
indexes: [
|
|
118
|
+
{ name: 'email_traffic_bucket_id_unique', key: { id: 1 }, options: { unique: true } },
|
|
119
|
+
{ name: 'email_traffic_bucket_start_unique', key: { bucketStart: 1 }, options: { unique: true } },
|
|
120
|
+
],
|
|
121
|
+
});
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5lbWFpbC10cmFmZmljLWJ1Y2tldC5kb2MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90cy9kYi9kb2N1bWVudHMvY2xhc3Nlcy5lbWFpbC10cmFmZmljLWJ1Y2tldC5kb2MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFdkQsTUFBTSx1QkFBdUIsR0FBRyxLQUFLLENBQUM7QUFFdEMsTUFBTSxLQUFLLEdBQUcsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBWXJELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxPQUFPLENBQUMsU0FBUyxDQUFDLGNBRzVEO0lBQ1EsRUFBRSxDQUFVO0lBRVosV0FBVyxDQUFVO0lBRXJCLElBQUksR0FBVyxDQUFDLENBQUM7SUFFakIsUUFBUSxHQUFXLENBQUMsQ0FBQztJQUVyQixNQUFNLEdBQVcsQ0FBQyxDQUFDO0lBRW5CLFNBQVMsQ0FBVTtJQUVuQixTQUFTLENBQVU7SUFFMUI7UUFDRSxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUM7SUFFTyxNQUFNLENBQUMsS0FBSyxDQUFDLG1CQUFtQjtRQUN0QyxNQUFNLG1CQUFtQixHQUFJLHFCQUUzQixDQUFDLFVBQVUsQ0FBQztRQUNkLE1BQU0sbUJBQW1CLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDakMsTUFBTSxLQUFLLEdBQUcsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1FBQzFDLE1BQU0sbUJBQW1CLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN2RSxNQUFNLG1CQUFtQixDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDLENBQUM7UUFDM0UsT0FB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
|
|
@@ -71,6 +71,9 @@ export declare class DnsAuthorityManager {
|
|
|
71
71
|
private updatedBy;
|
|
72
72
|
private state;
|
|
73
73
|
private reconciler?;
|
|
74
|
+
private stopped;
|
|
75
|
+
private activeProbes;
|
|
76
|
+
private ownedProbeClients;
|
|
74
77
|
constructor(getExpectedNameservers: () => string[]);
|
|
75
78
|
start(): Promise<void>;
|
|
76
79
|
stop(): Promise<void>;
|
|
@@ -106,6 +109,8 @@ export declare class DnsAuthorityManager {
|
|
|
106
109
|
* would let a transient resolver fault revoke authority.
|
|
107
110
|
*/
|
|
108
111
|
probeDelegation(zoneArg: string): Promise<IDnsDelegationProbe>;
|
|
112
|
+
private createProbeClient;
|
|
113
|
+
private probeDelegationUnlocked;
|
|
109
114
|
/**
|
|
110
115
|
* Claim authority over a zone, but only against a positive delegation proof.
|
|
111
116
|
* An undeterminable probe refuses the mutation — never assume either way.
|