@matter/general 0.15.3 → 0.15.5
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/cjs/codec/DnsCodec.d.ts +28 -3
- package/dist/cjs/codec/DnsCodec.d.ts.map +1 -1
- package/dist/cjs/codec/DnsCodec.js +31 -2
- package/dist/cjs/codec/DnsCodec.js.map +2 -2
- package/dist/cjs/log/Logger.js +1 -1
- package/dist/cjs/net/mock/MockNetwork.d.ts +1 -5
- package/dist/cjs/net/mock/MockNetwork.d.ts.map +1 -1
- package/dist/cjs/net/mock/MockRouter.d.ts +2 -5
- package/dist/cjs/net/mock/MockRouter.d.ts.map +1 -1
- package/dist/cjs/net/mock/MockRouter.js +8 -1
- package/dist/cjs/net/mock/MockRouter.js.map +1 -1
- package/dist/cjs/net/mock/MockUdpChannel.d.ts +2 -1
- package/dist/cjs/net/mock/MockUdpChannel.d.ts.map +1 -1
- package/dist/cjs/net/mock/MockUdpChannel.js +3 -2
- package/dist/cjs/net/mock/MockUdpChannel.js.map +1 -1
- package/dist/cjs/net/mock/NetworkSimulator.d.ts +1 -5
- package/dist/cjs/net/mock/NetworkSimulator.d.ts.map +1 -1
- package/dist/esm/codec/DnsCodec.d.ts +28 -3
- package/dist/esm/codec/DnsCodec.d.ts.map +1 -1
- package/dist/esm/codec/DnsCodec.js +31 -2
- package/dist/esm/codec/DnsCodec.js.map +2 -2
- package/dist/esm/log/Logger.js +1 -1
- package/dist/esm/net/mock/MockNetwork.d.ts +1 -5
- package/dist/esm/net/mock/MockNetwork.d.ts.map +1 -1
- package/dist/esm/net/mock/MockRouter.d.ts +2 -5
- package/dist/esm/net/mock/MockRouter.d.ts.map +1 -1
- package/dist/esm/net/mock/MockRouter.js +8 -1
- package/dist/esm/net/mock/MockRouter.js.map +1 -1
- package/dist/esm/net/mock/MockUdpChannel.d.ts +2 -1
- package/dist/esm/net/mock/MockUdpChannel.d.ts.map +1 -1
- package/dist/esm/net/mock/MockUdpChannel.js +3 -2
- package/dist/esm/net/mock/MockUdpChannel.js.map +1 -1
- package/dist/esm/net/mock/NetworkSimulator.d.ts +1 -5
- package/dist/esm/net/mock/NetworkSimulator.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/codec/DnsCodec.ts +53 -4
- package/src/log/Logger.ts +1 -1
- package/src/net/mock/MockRouter.ts +10 -1
- package/src/net/mock/MockUdpChannel.ts +7 -2
|
@@ -48,11 +48,36 @@ export type DnsMessagePartiallyPreEncoded = Omit<DnsMessage, "answers" | "additi
|
|
|
48
48
|
answers: (DnsRecord<any> | Uint8Array)[];
|
|
49
49
|
additionalRecords: (DnsRecord<any> | Uint8Array)[];
|
|
50
50
|
};
|
|
51
|
+
/** Bit flags to use to determine separate flags in the DnsMessageType field */
|
|
52
|
+
export declare enum DnsMessageTypeFlag {
|
|
53
|
+
/** Indicates if the message is a query (0) or a reply (1). */
|
|
54
|
+
QR = 32768,
|
|
55
|
+
/** The type can be QUERY (standard query, 0), IQUERY (inverse query, 1), or STATUS (server status request, 2). */
|
|
56
|
+
OPCODE = 30720,
|
|
57
|
+
/** Authoritative Answer, in a response, indicates if the DNS server is authoritative for the queried hostname. */
|
|
58
|
+
AA = 1024,
|
|
59
|
+
/** TrunCation, indicates that this message was truncated due to excessive length. */
|
|
60
|
+
TC = 512,
|
|
61
|
+
/** Recursion Desired, indicates if the client means a recursive query. */
|
|
62
|
+
RD = 256,
|
|
63
|
+
/** Recursion Available, in a response, indicates if the replying DNS server supports recursion. */
|
|
64
|
+
RA = 128,
|
|
65
|
+
/** Authentic Data, in a response, indicates if the replying DNS server verified the data. */
|
|
66
|
+
AD = 32,
|
|
67
|
+
/** Checking Disabled, in a query, indicates that non-verified data is acceptable in a response. */
|
|
68
|
+
CD = 16,
|
|
69
|
+
/** Response code, can be NOERROR (0), FORMERR (1, Format error), SERVFAIL (2), NXDOMAIN (3, Nonexistent domain), etc. */
|
|
70
|
+
RCODE = 15
|
|
71
|
+
}
|
|
72
|
+
/** Convenient Message types we use when sending mDNS messages */
|
|
51
73
|
export declare enum DnsMessageType {
|
|
52
|
-
Query = 0
|
|
74
|
+
Query = 0,// No bit set
|
|
53
75
|
TruncatedQuery = 512,
|
|
54
|
-
Response = 33792
|
|
55
|
-
|
|
76
|
+
Response = 33792
|
|
77
|
+
}
|
|
78
|
+
export declare namespace DnsMessageType {
|
|
79
|
+
function isQuery(type: number): boolean;
|
|
80
|
+
function isResponse(type: number): boolean;
|
|
56
81
|
}
|
|
57
82
|
export declare enum DnsRecordType {
|
|
58
83
|
A = 1,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DnsCodec.d.ts","sourceRoot":"","sources":["../../../src/codec/DnsCodec.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"DnsCodec.d.ts","sourceRoot":"","sources":["../../../src/codec/DnsCodec.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,7 @@ __export(DnsCodec_exports, {
|
|
|
22
22
|
ARecord: () => ARecord,
|
|
23
23
|
DnsCodec: () => DnsCodec,
|
|
24
24
|
DnsMessageType: () => DnsMessageType,
|
|
25
|
+
DnsMessageTypeFlag: () => DnsMessageTypeFlag,
|
|
25
26
|
DnsRecordClass: () => DnsRecordClass,
|
|
26
27
|
DnsRecordType: () => DnsRecordType,
|
|
27
28
|
MAX_MDNS_MESSAGE_SIZE: () => MAX_MDNS_MESSAGE_SIZE,
|
|
@@ -30,6 +31,8 @@ __export(DnsCodec_exports, {
|
|
|
30
31
|
TxtRecord: () => TxtRecord
|
|
31
32
|
});
|
|
32
33
|
module.exports = __toCommonJS(DnsCodec_exports);
|
|
34
|
+
var import_Diagnostic = require("#log/Diagnostic.js");
|
|
35
|
+
var import_Logger = require("#log/Logger.js");
|
|
33
36
|
var import_MatterError = require("../MatterError.js");
|
|
34
37
|
var import_Bytes = require("../util/Bytes.js");
|
|
35
38
|
var import_DataReader = require("../util/DataReader.js");
|
|
@@ -40,6 +43,7 @@ var import_Ip = require("../util/Ip.js");
|
|
|
40
43
|
* Copyright 2022-2025 Matter.js Authors
|
|
41
44
|
* SPDX-License-Identifier: Apache-2.0
|
|
42
45
|
*/
|
|
46
|
+
const logger = import_Logger.Logger.get("DnsCodec");
|
|
43
47
|
const MAX_MDNS_MESSAGE_SIZE = 1232;
|
|
44
48
|
const PtrRecord = (name, ptr, forInstance, ttl = 120, flushCache = false) => ({
|
|
45
49
|
name,
|
|
@@ -84,13 +88,34 @@ const SrvRecord = (name, srv, forInstance, ttl = 120, flushCache = false) => ({
|
|
|
84
88
|
flushCache,
|
|
85
89
|
forInstance
|
|
86
90
|
});
|
|
91
|
+
var DnsMessageTypeFlag = /* @__PURE__ */ ((DnsMessageTypeFlag2) => {
|
|
92
|
+
DnsMessageTypeFlag2[DnsMessageTypeFlag2["QR"] = 32768] = "QR";
|
|
93
|
+
DnsMessageTypeFlag2[DnsMessageTypeFlag2["OPCODE"] = 30720] = "OPCODE";
|
|
94
|
+
DnsMessageTypeFlag2[DnsMessageTypeFlag2["AA"] = 1024] = "AA";
|
|
95
|
+
DnsMessageTypeFlag2[DnsMessageTypeFlag2["TC"] = 512] = "TC";
|
|
96
|
+
DnsMessageTypeFlag2[DnsMessageTypeFlag2["RD"] = 256] = "RD";
|
|
97
|
+
DnsMessageTypeFlag2[DnsMessageTypeFlag2["RA"] = 128] = "RA";
|
|
98
|
+
DnsMessageTypeFlag2[DnsMessageTypeFlag2["AD"] = 32] = "AD";
|
|
99
|
+
DnsMessageTypeFlag2[DnsMessageTypeFlag2["CD"] = 16] = "CD";
|
|
100
|
+
DnsMessageTypeFlag2[DnsMessageTypeFlag2["RCODE"] = 15] = "RCODE";
|
|
101
|
+
return DnsMessageTypeFlag2;
|
|
102
|
+
})(DnsMessageTypeFlag || {});
|
|
87
103
|
var DnsMessageType = /* @__PURE__ */ ((DnsMessageType2) => {
|
|
88
104
|
DnsMessageType2[DnsMessageType2["Query"] = 0] = "Query";
|
|
89
105
|
DnsMessageType2[DnsMessageType2["TruncatedQuery"] = 512] = "TruncatedQuery";
|
|
90
106
|
DnsMessageType2[DnsMessageType2["Response"] = 33792] = "Response";
|
|
91
|
-
DnsMessageType2[DnsMessageType2["TruncatedResponse"] = 34304] = "TruncatedResponse";
|
|
92
107
|
return DnsMessageType2;
|
|
93
108
|
})(DnsMessageType || {});
|
|
109
|
+
((DnsMessageType2) => {
|
|
110
|
+
function isQuery(type) {
|
|
111
|
+
return (type & 32768 /* QR */) === 0;
|
|
112
|
+
}
|
|
113
|
+
DnsMessageType2.isQuery = isQuery;
|
|
114
|
+
function isResponse(type) {
|
|
115
|
+
return (type & 32768 /* QR */) !== 0;
|
|
116
|
+
}
|
|
117
|
+
DnsMessageType2.isResponse = isResponse;
|
|
118
|
+
})(DnsMessageType || (DnsMessageType = {}));
|
|
94
119
|
var DnsRecordType = /* @__PURE__ */ ((DnsRecordType2) => {
|
|
95
120
|
DnsRecordType2[DnsRecordType2["A"] = 1] = "A";
|
|
96
121
|
DnsRecordType2[DnsRecordType2["PTR"] = 12] = "PTR";
|
|
@@ -237,7 +262,7 @@ class DnsCodec {
|
|
|
237
262
|
additionalRecords = []
|
|
238
263
|
}) {
|
|
239
264
|
if (messageType === void 0) throw new import_MatterError.InternalError("Message type must be specified!");
|
|
240
|
-
if (queries.length > 0 && messageType
|
|
265
|
+
if (queries.length > 0 && !DnsMessageType.isQuery(messageType))
|
|
241
266
|
throw new import_MatterError.InternalError("Queries can only be included in query messages!");
|
|
242
267
|
if (authorities.length > 0) throw new import_MatterError.NotImplementedError("Authority answers are not supported yet!");
|
|
243
268
|
const writer = new import_DataWriter.DataWriter();
|
|
@@ -263,6 +288,10 @@ class DnsCodec {
|
|
|
263
288
|
}
|
|
264
289
|
static encodeRecord(record) {
|
|
265
290
|
const { name, recordType, recordClass, ttl, value, flushCache = false } = record;
|
|
291
|
+
if (recordType === void 0 || value === void 0) {
|
|
292
|
+
logger.warn("Skipping record encoding due to missing type or value.", import_Diagnostic.Diagnostic.dict(record));
|
|
293
|
+
return new Uint8Array(0);
|
|
294
|
+
}
|
|
266
295
|
const writer = new import_DataWriter.DataWriter();
|
|
267
296
|
writer.writeByteArray(this.encodeQName(name));
|
|
268
297
|
writer.writeUInt16(recordType);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/codec/DnsCodec.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,yBAAwE;AACxE,mBAA8B;AAC9B,wBAA2B;AAC3B,wBAA2B;AAC3B,gBAA+F;
|
|
5
|
-
"names": ["DnsMessageType", "DnsRecordType", "DnsRecordClass"]
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,wBAA2B;AAC3B,oBAAuB;AACvB,yBAAwE;AACxE,mBAA8B;AAC9B,wBAA2B;AAC3B,wBAA2B;AAC3B,gBAA+F;AAZ/F;AAAA;AAAA;AAAA;AAAA;AAcA,MAAM,SAAS,qBAAO,IAAI,UAAU;AAM7B,MAAM,wBAAwB;AAE9B,MAAM,YAAY,CACrB,MACA,KACA,aACA,MAAM,KACN,aAAa,WACQ;AAAA,EACrB;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA,YAAY;AAAA,EACZ,aAAa;AAAA,EACb;AAAA,EACA;AACJ;AACO,MAAM,UAAU,CAAC,MAAc,IAAY,MAAM,KAAK,aAAa,WAA8B;AAAA,EACpG;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA,YAAY;AAAA,EACZ,aAAa;AAAA,EACb;AACJ;AACO,MAAM,aAAa,CAAC,MAAc,IAAY,MAAM,KAAK,aAAa,WAA8B;AAAA,EACvG;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA,YAAY;AAAA,EACZ,aAAa;AAAA,EACb;AACJ;AACO,MAAM,YAAY,CACrB,MACA,SACA,aACA,MAAM,KACN,aAAa,WACU;AAAA,EACvB;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA,YAAY;AAAA,EACZ,aAAa;AAAA,EACb;AAAA,EACA;AACJ;AACO,MAAM,YAAY,CACrB,MACA,KACA,aACA,MAAM,KACN,aAAa,WACgB;AAAA,EAC7B;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA,YAAY;AAAA,EACZ,aAAa;AAAA,EACb;AAAA,EACA;AACJ;AAyCO,IAAK,qBAAL,kBAAKA,wBAAL;AAEH,EAAAA,wCAAA,QAAK,SAAL;AAGA,EAAAA,wCAAA,YAAS,SAAT;AAGA,EAAAA,wCAAA,QAAK,QAAL;AAGA,EAAAA,wCAAA,QAAK,OAAL;AAGA,EAAAA,wCAAA,QAAK,OAAL;AAGA,EAAAA,wCAAA,QAAK,OAAL;AAGA,EAAAA,wCAAA,QAAK,MAAL;AAGA,EAAAA,wCAAA,QAAK,MAAL;AAGA,EAAAA,wCAAA,WAAQ,MAAR;AA1BQ,SAAAA;AAAA,GAAA;AA8BL,IAAK,iBAAL,kBAAKC,oBAAL;AACH,EAAAA,gCAAA,WAAQ,KAAR;AACA,EAAAA,gCAAA,oBAAiB,OAAjB;AACA,EAAAA,gCAAA,cAAW,SAAX;AAHQ,SAAAA;AAAA,GAAA;AAAA,CAML,CAAUA,oBAAV;AACI,WAAS,QAAQ,MAAc;AAClC,YAAQ,OAAO,oBAA2B;AAAA,EAC9C;AAFO,EAAAA,gBAAS;AAIT,WAAS,WAAW,MAAc;AACrC,YAAQ,OAAO,oBAA2B;AAAA,EAC9C;AAFO,EAAAA,gBAAS;AAAA,GALH;AAUV,IAAK,gBAAL,kBAAKC,mBAAL;AACH,EAAAA,8BAAA,OAAI,KAAJ;AACA,EAAAA,8BAAA,SAAM,MAAN;AACA,EAAAA,8BAAA,SAAM,MAAN;AACA,EAAAA,8BAAA,UAAO,MAAP;AACA,EAAAA,8BAAA,SAAM,MAAN;AACA,EAAAA,8BAAA,UAAO,MAAP;AACA,EAAAA,8BAAA,SAAM,OAAN;AAPQ,SAAAA;AAAA,GAAA;AAUL,IAAK,iBAAL,kBAAKC,oBAAL;AACH,EAAAA,gCAAA,QAAK,KAAL;AACA,EAAAA,gCAAA,SAAM,OAAN;AAFQ,SAAAA;AAAA,GAAA;AAKL,MAAM,SAAS;AAAA,EAClB,OAAO,OAAO,SAA6C;AACvD,QAAI;AACA,YAAM,SAAS,IAAI,6BAAW,OAAO;AACrC,YAAM,gBAAgB,OAAO,WAAW;AACxC,YAAM,cAAc,OAAO,WAAW;AACtC,YAAM,eAAe,OAAO,WAAW;AACvC,YAAM,eAAe,OAAO,WAAW;AACvC,YAAM,mBAAmB,OAAO,WAAW;AAC3C,YAAM,yBAAyB,OAAO,WAAW;AACjD,YAAM,UAAU,IAAI,MAAgB;AACpC,eAAS,IAAI,GAAG,IAAI,cAAc,KAAK;AACnC,gBAAQ,KAAK,KAAK,YAAY,QAAQ,OAAO,CAAC;AAAA,MAClD;AACA,YAAM,UAAU,IAAI,MAAsB;AAC1C,eAAS,IAAI,GAAG,IAAI,cAAc,KAAK;AACnC,gBAAQ,KAAK,KAAK,aAAa,QAAQ,OAAO,CAAC;AAAA,MACnD;AACA,YAAM,cAAc,IAAI,MAAsB;AAC9C,eAAS,IAAI,GAAG,IAAI,kBAAkB,KAAK;AACvC,oBAAY,KAAK,KAAK,aAAa,QAAQ,OAAO,CAAC;AAAA,MACvD;AACA,YAAM,oBAAoB,IAAI,MAAsB;AACpD,eAAS,IAAI,GAAG,IAAI,wBAAwB,KAAK;AAC7C,0BAAkB,KAAK,KAAK,aAAa,QAAQ,OAAO,CAAC;AAAA,MAC7D;AACA,aAAO,EAAE,eAAe,aAAa,SAAS,SAAS,aAAa,kBAAkB;AAAA,IAC1F,SAAS,OAAO;AACZ,aAAO;AAAA,IACX;AAAA,EACJ;AAAA,EAEA,OAAO,YAAY,QAAgC,SAA+B;AAC9E,UAAM,OAAO,KAAK,YAAY,QAAQ,OAAO;AAC7C,UAAM,aAAa,OAAO,WAAW;AACrC,UAAM,WAAW,OAAO,WAAW;AACnC,UAAM,mBAAmB,WAAW,WAAY;AAChD,UAAM,cAAc,WAAW;AAC/B,WAAO,EAAE,MAAM,YAAY,aAAa,gBAAgB;AAAA,EAC5D;AAAA,EAEA,OAAO,aAAa,QAAgC,SAAqC;AACrF,UAAM,OAAO,KAAK,YAAY,QAAQ,OAAO;AAC7C,UAAM,aAAa,OAAO,WAAW;AACrC,UAAM,WAAW,OAAO,WAAW;AACnC,UAAM,cAAc,WAAW,WAAY;AAC3C,UAAM,cAAc,WAAW;AAC/B,UAAM,MAAM,OAAO,WAAW;AAC9B,UAAM,cAAc,OAAO,WAAW;AACtC,UAAM,aAAa,OAAO,cAAc,WAAW;AACnD,UAAM,QAAQ,KAAK,kBAAkB,YAAY,YAAY,OAAO;AACpE,WAAO,EAAE,MAAM,YAAY,aAAa,KAAK,OAAO,WAAW;AAAA,EACnE;AAAA,EAEA,OAAO,YAAY,QAAgC,SAAqB,UAAU,oBAAI,IAAY,GAAW;AACzG,QAAI,QAAQ,IAAI,OAAO,MAAM,GAAG;AAC5B,YAAM,IAAI,uCAAoB,sCAAsC,OAAO,MAAM,iBAAiB;AAAA,IACtG;AACA,YAAQ,IAAI,OAAO,MAAM;AAEzB,UAAM,gBAAgB,IAAI,6BAAW,OAAO;AAC5C,UAAM,aAAa,IAAI,MAAc;AACrC,WAAO,MAAM;AACT,YAAM,aAAa,OAAO,UAAU;AACpC,UAAI,eAAe,EAAG;AACtB,WAAK,aAAa,SAAU,GAAG;AAC3B,YAAI,OAAO,sBAAsB,GAAG;AAChC,gBAAM,IAAI,uCAAoB,wCAAwC;AAAA,QAC1E;AAEA,cAAM,iBAAiB,OAAO,UAAU,KAAM,aAAa,OAAS;AACpE,YAAI,kBAAkB,QAAQ,QAAQ;AAClC,gBAAM,IAAI,uCAAoB,mEAAmE;AAAA,QACrG;AACA,sBAAc,SAAS;AACvB,mBAAW,KAAK,KAAK,YAAY,eAAe,SAAS,OAAO,CAAC;AACjE;AAAA,MACJ,WAAW,OAAO,sBAAsB,aAAa,GAAG;AAEpD,cAAM,IAAI,uCAAoB,qBAAqB,UAAU,2BAA2B;AAAA,MAC5F;AACA,iBAAW,KAAK,OAAO,eAAe,UAAU,CAAC;AAAA,IACrD;AACA,WAAO,WAAW,KAAK,GAAG;AAAA,EAC9B;AAAA,EAEA,OAAe,kBAAkB,YAAwB,YAA2B,SAAqB;AACrG,YAAQ,YAAY;AAAA,MAChB,KAAK;AACD,eAAO,KAAK,YAAY,IAAI,6BAAW,UAAU,GAAG,OAAO;AAAA,MAC/D,KAAK;AACD,eAAO,KAAK,gBAAgB,YAAY,OAAO;AAAA,MACnD,KAAK;AACD,eAAO,KAAK,gBAAgB,UAAU;AAAA,MAC1C,KAAK;AACD,eAAO,KAAK,iBAAiB,UAAU;AAAA,MAC3C,KAAK;AACD,eAAO,KAAK,cAAc,UAAU;AAAA,MACxC;AAEI,eAAO;AAAA,IACf;AAAA,EACJ;AAAA,EAEA,OAAO,gBAAgB,YAAwB,SAAqC;AAChF,UAAM,SAAS,IAAI,6BAAW,UAAU;AACxC,UAAM,WAAW,OAAO,WAAW;AACnC,UAAM,SAAS,OAAO,WAAW;AACjC,UAAM,OAAO,OAAO,WAAW;AAC/B,UAAM,SAAS,KAAK,YAAY,QAAQ,OAAO;AAC/C,WAAO,EAAE,UAAU,QAAQ,MAAM,OAAO;AAAA,EAC5C;AAAA,EAEA,OAAO,gBAAgB,YAAkC;AACrD,UAAM,SAAS,IAAI,6BAAW,UAAU;AACxC,UAAM,SAAS,IAAI,MAAc;AACjC,QAAI,YAAY;AAChB,WAAO,YAAY,WAAW,QAAQ;AAClC,YAAM,SAAS,OAAO,UAAU;AAChC,aAAO,KAAK,OAAO,eAAe,MAAM,CAAC;AACzC,mBAAa,SAAS;AAAA,IAC1B;AACA,WAAO;AAAA,EACX;AAAA,EAEA,OAAO,iBAAiB,YAAgC;AACpD,UAAM,SAAS,IAAI,6BAAW,UAAU;AACxC,eAAO,6BAAkB,OAAO,cAAc,EAAE,CAAC;AAAA,EACrD;AAAA,EAEA,OAAO,cAAc,YAAgC;AACjD,UAAM,SAAS,IAAI,6BAAW,UAAU;AACxC,eAAO,6BAAkB,OAAO,cAAc,CAAC,CAAC;AAAA,EACpD;AAAA,EAEA,OAAO,OAAO;AAAA,IACV;AAAA,IACA,gBAAgB;AAAA,IAChB,UAAU,CAAC;AAAA,IACX,UAAU,CAAC;AAAA,IACX,cAAc,CAAC;AAAA,IACf,oBAAoB,CAAC;AAAA,EACzB,GAAuD;AACnD,QAAI,gBAAgB,OAAW,OAAM,IAAI,iCAAc,iCAAiC;AACxF,QAAI,QAAQ,SAAS,KAAK,CAAC,eAAe,QAAQ,WAAW;AACzD,YAAM,IAAI,iCAAc,iDAAiD;AAC7E,QAAI,YAAY,SAAS,EAAG,OAAM,IAAI,uCAAoB,0CAA0C;AAEpG,UAAM,SAAS,IAAI,6BAAW;AAC9B,WAAO,YAAY,aAAa;AAChC,WAAO,YAAY,WAAW;AAC9B,WAAO,YAAY,QAAQ,MAAM;AACjC,WAAO,YAAY,QAAQ,MAAM;AACjC,WAAO,YAAY,YAAY,MAAM;AACrC,WAAO,YAAY,kBAAkB,MAAM;AAC3C,YAAQ,QAAQ,CAAC,EAAE,MAAM,aAAa,YAAY,kBAAkB,MAAM,MAAM;AAC5E,aAAO,eAAe,KAAK,YAAY,IAAI,CAAC;AAC5C,aAAO,YAAY,UAAU;AAC7B,aAAO,YAAY,eAAe,kBAAkB,QAAS,EAAE;AAAA,IACnE,CAAC;AACD,KAAC,GAAG,SAAS,GAAG,aAAa,GAAG,iBAAiB,EAAE,QAAQ,YAAU;AACjE,UAAI,kBAAkB,YAAY;AAC9B,eAAO,eAAe,MAAM;AAAA,MAChC,OAAO;AACH,eAAO,eAAe,KAAK,aAAa,MAAM,CAAC;AAAA,MACnD;AAAA,IACJ,CAAC;AACD,WAAO,OAAO,YAAY;AAAA,EAC9B;AAAA,EAEA,OAAO,aAAa,QAAoC;AACpD,UAAM,EAAE,MAAM,YAAY,aAAa,KAAK,OAAO,aAAa,MAAM,IAAI;AAE1E,QAAI,eAAe,UAAa,UAAU,QAAW;AACjD,aAAO,KAAK,0DAA0D,6BAAW,KAAK,MAAM,CAAC;AAC7F,aAAO,IAAI,WAAW,CAAC;AAAA,IAC3B;AAEA,UAAM,SAAS,IAAI,6BAAW;AAC9B,WAAO,eAAe,KAAK,YAAY,IAAI,CAAC;AAC5C,WAAO,YAAY,UAAU;AAC7B,WAAO,YAAY,eAAe,aAAa,QAAS,EAAE;AAC1D,WAAO,YAAY,GAAG;AACtB,UAAM,eAAe,KAAK,kBAAkB,OAAO,UAAU;AAC7D,WAAO,YAAY,aAAa,MAAM;AACtC,WAAO,eAAe,YAAY;AAClC,WAAO,OAAO,YAAY;AAAA,EAC9B;AAAA,EAEA,OAAe,kBAAkB,OAAY,YAAuC;AAChF,YAAQ,YAAY;AAAA,MAChB,KAAK;AACD,eAAO,KAAK,YAAY,KAAe;AAAA,MAC3C,KAAK;AACD,eAAO,KAAK,gBAAgB,KAAuB;AAAA,MACvD,KAAK;AACD,eAAO,KAAK,gBAAgB,KAAiB;AAAA,MACjD,KAAK;AACD,eAAO,KAAK,iBAAiB,KAAe;AAAA,MAChD,KAAK;AACD,eAAO,KAAK,cAAc,KAAe;AAAA,MAC7C;AACI,YAAI,iBAAiB,WAAY,QAAO;AACxC,cAAM,IAAI,uCAAoB,2BAA2B,UAAU,EAAE;AAAA,IAC7E;AAAA,EACJ;AAAA,EAEA,OAAO,cAAc,IAAY;AAC7B,QAAI,KAAC,kBAAO,EAAE,EAAG,OAAM,IAAI,uCAAoB,2BAA2B,EAAE,EAAE;AAC9E,eAAO,uBAAY,EAAE;AAAA,EACzB;AAAA,EAEA,OAAO,iBAAiB,IAAY;AAChC,QAAI,KAAC,kBAAO,EAAE,EAAG,OAAM,IAAI,uCAAoB,8BAA8B,EAAE,EAAE;AACjF,eAAO,uBAAY,EAAE;AAAA,EACzB;AAAA,EAEA,OAAO,gBAAgB,SAAmB;AACtC,UAAM,SAAS,IAAI,6BAAW;AAC9B,YAAQ,QAAQ,WAAS;AACrB,YAAM,YAAY,mBAAM,WAAW,KAAK;AACxC,aAAO,WAAW,UAAU,MAAM;AAClC,aAAO,eAAe,SAAS;AAAA,IACnC,CAAC;AACD,WAAO,OAAO,YAAY;AAAA,EAC9B;AAAA,EAEA,OAAO,gBAAgB,EAAE,UAAU,QAAQ,MAAM,OAAO,GAAmB;AACvE,UAAM,SAAS,IAAI,6BAAW;AAC9B,WAAO,YAAY,QAAQ;AAC3B,WAAO,YAAY,MAAM;AACzB,WAAO,YAAY,IAAI;AACvB,WAAO,eAAe,KAAK,YAAY,MAAM,CAAC;AAC9C,WAAO,OAAO,YAAY;AAAA,EAC9B;AAAA,EAEA,OAAO,YAAY,OAAe;AAC9B,UAAM,SAAS,IAAI,6BAAW;AAC9B,QAAI,UAAU,UAAa,MAAM,SAAS,GAAG;AAEzC,YAAM,MAAM,GAAG,EAAE,QAAQ,WAAS;AAC9B,cAAM,YAAY,mBAAM,WAAW,KAAK;AACxC,eAAO,WAAW,UAAU,MAAM;AAClC,eAAO,eAAe,SAAS;AAAA,MACnC,CAAC;AAAA,IACL;AACA,WAAO,WAAW,CAAC;AACnB,WAAO,OAAO,YAAY;AAAA,EAC9B;AACJ;",
|
|
5
|
+
"names": ["DnsMessageTypeFlag", "DnsMessageType", "DnsRecordType", "DnsRecordClass"]
|
|
6
6
|
}
|
package/dist/cjs/log/Logger.js
CHANGED
|
@@ -188,7 +188,7 @@ class Logger {
|
|
|
188
188
|
for (const name in Logger.destinations) {
|
|
189
189
|
const dest = Logger.destinations[name];
|
|
190
190
|
if (level < (dest.facilityLevels?.[this.#name] ?? dest.level)) {
|
|
191
|
-
|
|
191
|
+
continue;
|
|
192
192
|
}
|
|
193
193
|
if (!dest.context) {
|
|
194
194
|
dest.context = import_Diagnostic.Diagnostic.Context();
|
|
@@ -11,11 +11,7 @@ import { MockUdpChannel } from "./MockUdpChannel.js";
|
|
|
11
11
|
import type { NetworkSimulator } from "./NetworkSimulator.js";
|
|
12
12
|
export declare class MockNetwork extends Network {
|
|
13
13
|
#private;
|
|
14
|
-
readonly router:
|
|
15
|
-
(packet: MockRouter.Packet): void;
|
|
16
|
-
add: (value: MockRouter.Route) => Set<MockRouter.Route>;
|
|
17
|
-
delete: (value: MockRouter.Route) => boolean;
|
|
18
|
-
};
|
|
14
|
+
readonly router: MockRouter;
|
|
19
15
|
constructor(simulator: NetworkSimulator, mac: string, ips: string[]);
|
|
20
16
|
get simulator(): NetworkSimulator;
|
|
21
17
|
getNetInterfaces(): NetworkInterface[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MockNetwork.d.ts","sourceRoot":"","sources":["../../../../src/net/mock/MockNetwork.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAgB,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,qBAAa,WAAY,SAAQ,OAAO;;IACpC,QAAQ,CAAC,MAAM
|
|
1
|
+
{"version":3,"file":"MockNetwork.d.ts","sourceRoot":"","sources":["../../../../src/net/mock/MockNetwork.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAgB,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,qBAAa,WAAY,SAAQ,OAAO;;IACpC,QAAQ,CAAC,MAAM,aAAgB;gBAInB,SAAS,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE;IAWnE,IAAI,SAAS,qBAEZ;IAED,gBAAgB,IAAI,gBAAgB,EAAE;IAItC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,uBAAuB;IAOtC,gBAAgB,CAAC,OAAO,EAAE,iBAAiB;IAIpD,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM;IAI7B,KAAK;CAGvB"}
|
|
@@ -7,11 +7,7 @@ export interface MockRouter extends MockRouter.Route {
|
|
|
7
7
|
add(route: MockRouter.Route): void;
|
|
8
8
|
delete(route: MockRouter.Route): void;
|
|
9
9
|
}
|
|
10
|
-
export declare function MockRouter():
|
|
11
|
-
(packet: MockRouter.Packet): void;
|
|
12
|
-
add: (value: MockRouter.Route) => Set<MockRouter.Route>;
|
|
13
|
-
delete: (value: MockRouter.Route) => boolean;
|
|
14
|
-
};
|
|
10
|
+
export declare function MockRouter(manipulator?: MockRouter.PacketManipulator): MockRouter;
|
|
15
11
|
export declare namespace MockRouter {
|
|
16
12
|
interface Packet {
|
|
17
13
|
kind: "udp";
|
|
@@ -24,5 +20,6 @@ export declare namespace MockRouter {
|
|
|
24
20
|
interface Route {
|
|
25
21
|
(packet: Packet): void;
|
|
26
22
|
}
|
|
23
|
+
type PacketManipulator = (packet: Packet) => Packet | null;
|
|
27
24
|
}
|
|
28
25
|
//# sourceMappingURL=MockRouter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MockRouter.d.ts","sourceRoot":"","sources":["../../../../src/net/mock/MockRouter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,WAAW,UAAW,SAAQ,UAAU,CAAC,KAAK;IAChD,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC;IACnC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC;CACzC;AAED,wBAAgB,UAAU
|
|
1
|
+
{"version":3,"file":"MockRouter.d.ts","sourceRoot":"","sources":["../../../../src/net/mock/MockRouter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,WAAW,UAAW,SAAQ,UAAU,CAAC,KAAK;IAChD,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC;IACnC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC;CACzC;AAED,wBAAgB,UAAU,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC,iBAAiB,GAAG,UAAU,CAwBjF;AAED,yBAAiB,UAAU,CAAC;IACxB,UAAiB,MAAM;QACnB,IAAI,EAAE,KAAK,CAAC;QACZ,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,UAAU,CAAC;KACvB;IAED,UAAiB,KAAK;QAClB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B;IAED,KAAY,iBAAiB,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CACrE"}
|
|
@@ -28,9 +28,16 @@ var import_Logger = require("#log/Logger.js");
|
|
|
28
28
|
* SPDX-License-Identifier: Apache-2.0
|
|
29
29
|
*/
|
|
30
30
|
const logger = import_Logger.Logger.get("MockRouter");
|
|
31
|
-
function MockRouter() {
|
|
31
|
+
function MockRouter(manipulator) {
|
|
32
32
|
const routes = /* @__PURE__ */ new Set();
|
|
33
33
|
const router = function router2(packet) {
|
|
34
|
+
if (manipulator) {
|
|
35
|
+
const manipulatedPacket = manipulator(packet);
|
|
36
|
+
if (manipulatedPacket === null) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
packet = manipulatedPacket;
|
|
40
|
+
}
|
|
34
41
|
for (const route of routes) {
|
|
35
42
|
try {
|
|
36
43
|
route(packet);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/net/mock/MockRouter.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,oBAAuB;AANvB;AAAA;AAAA;AAAA;AAAA;AAQA,MAAM,SAAS,qBAAO,IAAI,YAAY;AAO/B,SAAS,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,oBAAuB;AANvB;AAAA;AAAA;AAAA;AAAA;AAQA,MAAM,SAAS,qBAAO,IAAI,YAAY;AAO/B,SAAS,WAAW,aAAwD;AAC/E,QAAM,SAAS,oBAAI,IAAsB;AAEzC,QAAM,SAAS,SAASA,QAAO,QAA2B;AACtD,QAAI,aAAa;AACb,YAAM,oBAAoB,YAAY,MAAM;AAC5C,UAAI,sBAAsB,MAAM;AAC5B;AAAA,MACJ;AACA,eAAS;AAAA,IACb;AACA,eAAW,SAAS,QAAQ;AACxB,UAAI;AACA,cAAM,MAAM;AAAA,MAChB,SAAS,GAAG;AACR,eAAO,MAAM,uCAAuC,CAAC;AAAA,MACzD;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO,MAAM,OAAO,IAAI,KAAK,MAAM;AACnC,SAAO,SAAS,OAAO,OAAO,KAAK,MAAM;AAEzC,SAAO;AACX;",
|
|
5
5
|
"names": ["router"]
|
|
6
6
|
}
|
|
@@ -6,10 +6,11 @@
|
|
|
6
6
|
import { ChannelType } from "#net/Channel.js";
|
|
7
7
|
import { UdpChannel, UdpChannelOptions } from "../UdpChannel.js";
|
|
8
8
|
import { MockNetwork } from "./MockNetwork.js";
|
|
9
|
+
import { MockRouter } from "./MockRouter.js";
|
|
9
10
|
export declare class MockUdpChannel implements UdpChannel {
|
|
10
11
|
#private;
|
|
11
12
|
readonly maxPayloadSize: number;
|
|
12
|
-
constructor(network: MockNetwork, { listeningAddress, listeningPort, netInterface, type }: UdpChannelOptions);
|
|
13
|
+
constructor(network: MockNetwork, { listeningAddress, listeningPort, netInterface, type }: UdpChannelOptions, packetManipulator?: MockRouter.PacketManipulator);
|
|
13
14
|
onData(listener: UdpChannel.Callback): {
|
|
14
15
|
close: () => Promise<void>;
|
|
15
16
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MockUdpChannel.d.ts","sourceRoot":"","sources":["../../../../src/net/mock/MockUdpChannel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAwB,UAAU,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"MockUdpChannel.d.ts","sourceRoot":"","sources":["../../../../src/net/mock/MockUdpChannel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAwB,UAAU,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,qBAAa,cAAe,YAAW,UAAU;;IAM7C,QAAQ,CAAC,cAAc,SAAwB;gBAG3C,OAAO,EAAE,WAAW,EACpB,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,iBAAiB,EAC1E,iBAAiB,CAAC,EAAE,UAAU,CAAC,iBAAiB;IAuBpD,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ;;;IAuB9B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU;IAWpD,KAAK;IAIL,CAAC,MAAM,CAAC,YAAY,CAAC;IAI3B,IAAI,IAAI,WAEP;IAED,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM;IAI5C,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIpC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAGxC"}
|
|
@@ -32,12 +32,13 @@ var import_MockRouter = require("./MockRouter.js");
|
|
|
32
32
|
*/
|
|
33
33
|
class MockUdpChannel {
|
|
34
34
|
#host;
|
|
35
|
-
#router
|
|
35
|
+
#router;
|
|
36
36
|
#sendFrom;
|
|
37
37
|
#receiveFrom;
|
|
38
38
|
#listeningPort;
|
|
39
39
|
maxPayloadSize = import_UdpChannel.MAX_UDP_MESSAGE_SIZE;
|
|
40
|
-
constructor(network, { listeningAddress, listeningPort, netInterface, type }) {
|
|
40
|
+
constructor(network, { listeningAddress, listeningPort, netInterface, type }, packetManipulator) {
|
|
41
|
+
this.#router = (0, import_MockRouter.MockRouter)(packetManipulator);
|
|
41
42
|
const { ipV4, ipV6 } = network.getIpMac(netInterface ?? "fake0");
|
|
42
43
|
let addresses = type === "udp4" ? ipV4 : ipV6;
|
|
43
44
|
this.#sendFrom = addresses[0];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/net/mock/MockUdpChannel.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAA4B;AAC5B,qBAA6B;AAC7B,wBAAoE;AAEpE,wBAA2B;AAV3B;AAAA;AAAA;AAAA;AAAA;AAYO,MAAM,eAAqC;AAAA,EACrC;AAAA,EACA
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAA4B;AAC5B,qBAA6B;AAC7B,wBAAoE;AAEpE,wBAA2B;AAV3B;AAAA;AAAA;AAAA;AAAA;AAYO,MAAM,eAAqC;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EAE1B,YACI,SACA,EAAE,kBAAkB,eAAe,cAAc,KAAK,GACtD,mBACF;AACE,SAAK,cAAU,8BAAW,iBAAiB;AAC3C,UAAM,EAAE,MAAM,KAAK,IAAI,QAAQ,SAAS,gBAAgB,OAAO;AAC/D,QAAI,YAAY,SAAS,SAAS,OAAO;AAEzC,SAAK,YAAY,UAAU,CAAC;AAE5B,QAAI,qBAAqB,UAAa,qBAAqB,KAAK;AAC5D,kBAAY,UAAU,OAAO,UAAQ,SAAS,gBAAgB;AAAA,IAClE;AAEA,QAAI,CAAC,UAAU,QAAQ;AACnB,YAAM,IAAI,4BAAa,MAAM,IAAI,eAAe,oBAAoB,GAAG,6BAA6B;AAAA,IACxG;AAEA,SAAK,QAAQ;AACb,SAAK,eAAe,IAAI,IAAI,SAAS;AACrC,SAAK,iBAAiB,iBAAiB,OAAO,KAAK,MAAM,KAAK,OAAO,IAAI,KAAK;AAE9E,YAAQ,OAAO,IAAI,KAAK,OAAO;AAAA,EACnC;AAAA,EAEA,OAAO,UAA+B;AAClC,UAAM,SAAS,CAAC,WAA8B;AAC1C,UAAI,OAAO,SAAS,OAAO;AACvB;AAAA,MACJ;AACA,UAAI,CAAC,KAAK,aAAa,IAAI,OAAO,WAAW,GAAG;AAC5C;AAAA,MACJ;AACA,UAAI,OAAO,aAAa,KAAK,gBAAgB;AACzC;AAAA,MACJ;AACA,eAAS,SAAS,OAAO,eAAe,OAAO,YAAY,OAAO,OAAO;AAAA,IAC7E;AAEA,SAAK,QAAQ,IAAI,MAAM;AAEvB,WAAO;AAAA,MACH,OAAO,YAAY;AACf,aAAK,QAAQ,OAAO,MAAM;AAAA,MAC9B;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAM,KAAK,MAAc,MAAc,SAAqB;AACxD,SAAK,MAAM,UAAU,OAAO;AAAA,MACxB,MAAM;AAAA,MACN,eAAe,KAAK;AAAA,MACpB,YAAY,KAAK;AAAA,MACjB,aAAa;AAAA,MACb,UAAU;AAAA,MACV;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,QAAQ;AACV,SAAK,MAAM,OAAO,OAAO,KAAK,OAAO;AAAA,EACzC;AAAA,EAEA,OAAO,OAAO,YAAY,IAAI;AAC1B,WAAO,KAAK,MAAM;AAAA,EACtB;AAAA,EAEA,IAAI,OAAO;AACP,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,SAAS,MAAmB,UAAkB;AAC1C,WAAO,SAAS,2BAAY;AAAA,EAChC;AAAA,EAEA,cAAc,SAAuB;AACjC,SAAK,aAAa,IAAI,OAAO;AAAA,EACjC;AAAA,EAEA,eAAe,SAAuB;AAClC,SAAK,aAAa,OAAO,OAAO;AAAA,EACpC;AACJ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -6,11 +6,7 @@
|
|
|
6
6
|
import { MockNetwork } from "./MockNetwork.js";
|
|
7
7
|
import { MockRouter } from "./MockRouter.js";
|
|
8
8
|
export declare class NetworkSimulator {
|
|
9
|
-
readonly router:
|
|
10
|
-
(packet: MockRouter.Packet): void;
|
|
11
|
-
add: (value: MockRouter.Route) => Set<MockRouter.Route>;
|
|
12
|
-
delete: (value: MockRouter.Route) => boolean;
|
|
13
|
-
};
|
|
9
|
+
readonly router: MockRouter;
|
|
14
10
|
addHost(lastIdentifierByte: number): MockNetwork;
|
|
15
11
|
}
|
|
16
12
|
export declare namespace NetworkSimulator {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NetworkSimulator.d.ts","sourceRoot":"","sources":["../../../../src/net/mock/NetworkSimulator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,qBAAa,gBAAgB;IACzB,QAAQ,CAAC,MAAM
|
|
1
|
+
{"version":3,"file":"NetworkSimulator.d.ts","sourceRoot":"","sources":["../../../../src/net/mock/NetworkSimulator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,qBAAa,gBAAgB;IACzB,QAAQ,CAAC,MAAM,aAAgB;IAE/B,OAAO,CAAC,kBAAkB,EAAE,MAAM;CAOrC;AAED,yBAAiB,gBAAgB,CAAC;IAC9B,KAAY,QAAQ,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;CAClH"}
|
|
@@ -48,11 +48,36 @@ export type DnsMessagePartiallyPreEncoded = Omit<DnsMessage, "answers" | "additi
|
|
|
48
48
|
answers: (DnsRecord<any> | Uint8Array)[];
|
|
49
49
|
additionalRecords: (DnsRecord<any> | Uint8Array)[];
|
|
50
50
|
};
|
|
51
|
+
/** Bit flags to use to determine separate flags in the DnsMessageType field */
|
|
52
|
+
export declare enum DnsMessageTypeFlag {
|
|
53
|
+
/** Indicates if the message is a query (0) or a reply (1). */
|
|
54
|
+
QR = 32768,
|
|
55
|
+
/** The type can be QUERY (standard query, 0), IQUERY (inverse query, 1), or STATUS (server status request, 2). */
|
|
56
|
+
OPCODE = 30720,
|
|
57
|
+
/** Authoritative Answer, in a response, indicates if the DNS server is authoritative for the queried hostname. */
|
|
58
|
+
AA = 1024,
|
|
59
|
+
/** TrunCation, indicates that this message was truncated due to excessive length. */
|
|
60
|
+
TC = 512,
|
|
61
|
+
/** Recursion Desired, indicates if the client means a recursive query. */
|
|
62
|
+
RD = 256,
|
|
63
|
+
/** Recursion Available, in a response, indicates if the replying DNS server supports recursion. */
|
|
64
|
+
RA = 128,
|
|
65
|
+
/** Authentic Data, in a response, indicates if the replying DNS server verified the data. */
|
|
66
|
+
AD = 32,
|
|
67
|
+
/** Checking Disabled, in a query, indicates that non-verified data is acceptable in a response. */
|
|
68
|
+
CD = 16,
|
|
69
|
+
/** Response code, can be NOERROR (0), FORMERR (1, Format error), SERVFAIL (2), NXDOMAIN (3, Nonexistent domain), etc. */
|
|
70
|
+
RCODE = 15
|
|
71
|
+
}
|
|
72
|
+
/** Convenient Message types we use when sending mDNS messages */
|
|
51
73
|
export declare enum DnsMessageType {
|
|
52
|
-
Query = 0
|
|
74
|
+
Query = 0,// No bit set
|
|
53
75
|
TruncatedQuery = 512,
|
|
54
|
-
Response = 33792
|
|
55
|
-
|
|
76
|
+
Response = 33792
|
|
77
|
+
}
|
|
78
|
+
export declare namespace DnsMessageType {
|
|
79
|
+
function isQuery(type: number): boolean;
|
|
80
|
+
function isResponse(type: number): boolean;
|
|
56
81
|
}
|
|
57
82
|
export declare enum DnsRecordType {
|
|
58
83
|
A = 1,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DnsCodec.d.ts","sourceRoot":"","sources":["../../../src/codec/DnsCodec.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"DnsCodec.d.ts","sourceRoot":"","sources":["../../../src/codec/DnsCodec.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,11 +3,14 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
+
import { Diagnostic } from "#log/Diagnostic.js";
|
|
7
|
+
import { Logger } from "#log/Logger.js";
|
|
6
8
|
import { InternalError, NotImplementedError, UnexpectedDataError } from "../MatterError.js";
|
|
7
9
|
import { Bytes } from "../util/Bytes.js";
|
|
8
10
|
import { DataReader } from "../util/DataReader.js";
|
|
9
11
|
import { DataWriter } from "../util/DataWriter.js";
|
|
10
12
|
import { ipv4BytesToString, ipv4ToBytes, ipv6BytesToString, ipv6ToBytes, isIPv4, isIPv6 } from "../util/Ip.js";
|
|
13
|
+
const logger = Logger.get("DnsCodec");
|
|
11
14
|
const MAX_MDNS_MESSAGE_SIZE = 1232;
|
|
12
15
|
const PtrRecord = (name, ptr, forInstance, ttl = 120, flushCache = false) => ({
|
|
13
16
|
name,
|
|
@@ -52,13 +55,34 @@ const SrvRecord = (name, srv, forInstance, ttl = 120, flushCache = false) => ({
|
|
|
52
55
|
flushCache,
|
|
53
56
|
forInstance
|
|
54
57
|
});
|
|
58
|
+
var DnsMessageTypeFlag = /* @__PURE__ */ ((DnsMessageTypeFlag2) => {
|
|
59
|
+
DnsMessageTypeFlag2[DnsMessageTypeFlag2["QR"] = 32768] = "QR";
|
|
60
|
+
DnsMessageTypeFlag2[DnsMessageTypeFlag2["OPCODE"] = 30720] = "OPCODE";
|
|
61
|
+
DnsMessageTypeFlag2[DnsMessageTypeFlag2["AA"] = 1024] = "AA";
|
|
62
|
+
DnsMessageTypeFlag2[DnsMessageTypeFlag2["TC"] = 512] = "TC";
|
|
63
|
+
DnsMessageTypeFlag2[DnsMessageTypeFlag2["RD"] = 256] = "RD";
|
|
64
|
+
DnsMessageTypeFlag2[DnsMessageTypeFlag2["RA"] = 128] = "RA";
|
|
65
|
+
DnsMessageTypeFlag2[DnsMessageTypeFlag2["AD"] = 32] = "AD";
|
|
66
|
+
DnsMessageTypeFlag2[DnsMessageTypeFlag2["CD"] = 16] = "CD";
|
|
67
|
+
DnsMessageTypeFlag2[DnsMessageTypeFlag2["RCODE"] = 15] = "RCODE";
|
|
68
|
+
return DnsMessageTypeFlag2;
|
|
69
|
+
})(DnsMessageTypeFlag || {});
|
|
55
70
|
var DnsMessageType = /* @__PURE__ */ ((DnsMessageType2) => {
|
|
56
71
|
DnsMessageType2[DnsMessageType2["Query"] = 0] = "Query";
|
|
57
72
|
DnsMessageType2[DnsMessageType2["TruncatedQuery"] = 512] = "TruncatedQuery";
|
|
58
73
|
DnsMessageType2[DnsMessageType2["Response"] = 33792] = "Response";
|
|
59
|
-
DnsMessageType2[DnsMessageType2["TruncatedResponse"] = 34304] = "TruncatedResponse";
|
|
60
74
|
return DnsMessageType2;
|
|
61
75
|
})(DnsMessageType || {});
|
|
76
|
+
((DnsMessageType2) => {
|
|
77
|
+
function isQuery(type) {
|
|
78
|
+
return (type & 32768 /* QR */) === 0;
|
|
79
|
+
}
|
|
80
|
+
DnsMessageType2.isQuery = isQuery;
|
|
81
|
+
function isResponse(type) {
|
|
82
|
+
return (type & 32768 /* QR */) !== 0;
|
|
83
|
+
}
|
|
84
|
+
DnsMessageType2.isResponse = isResponse;
|
|
85
|
+
})(DnsMessageType || (DnsMessageType = {}));
|
|
62
86
|
var DnsRecordType = /* @__PURE__ */ ((DnsRecordType2) => {
|
|
63
87
|
DnsRecordType2[DnsRecordType2["A"] = 1] = "A";
|
|
64
88
|
DnsRecordType2[DnsRecordType2["PTR"] = 12] = "PTR";
|
|
@@ -205,7 +229,7 @@ class DnsCodec {
|
|
|
205
229
|
additionalRecords = []
|
|
206
230
|
}) {
|
|
207
231
|
if (messageType === void 0) throw new InternalError("Message type must be specified!");
|
|
208
|
-
if (queries.length > 0 && messageType
|
|
232
|
+
if (queries.length > 0 && !DnsMessageType.isQuery(messageType))
|
|
209
233
|
throw new InternalError("Queries can only be included in query messages!");
|
|
210
234
|
if (authorities.length > 0) throw new NotImplementedError("Authority answers are not supported yet!");
|
|
211
235
|
const writer = new DataWriter();
|
|
@@ -231,6 +255,10 @@ class DnsCodec {
|
|
|
231
255
|
}
|
|
232
256
|
static encodeRecord(record) {
|
|
233
257
|
const { name, recordType, recordClass, ttl, value, flushCache = false } = record;
|
|
258
|
+
if (recordType === void 0 || value === void 0) {
|
|
259
|
+
logger.warn("Skipping record encoding due to missing type or value.", Diagnostic.dict(record));
|
|
260
|
+
return new Uint8Array(0);
|
|
261
|
+
}
|
|
234
262
|
const writer = new DataWriter();
|
|
235
263
|
writer.writeByteArray(this.encodeQName(name));
|
|
236
264
|
writer.writeUInt16(recordType);
|
|
@@ -301,6 +329,7 @@ export {
|
|
|
301
329
|
ARecord,
|
|
302
330
|
DnsCodec,
|
|
303
331
|
DnsMessageType,
|
|
332
|
+
DnsMessageTypeFlag,
|
|
304
333
|
DnsRecordClass,
|
|
305
334
|
DnsRecordType,
|
|
306
335
|
MAX_MDNS_MESSAGE_SIZE,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/codec/DnsCodec.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,eAAe,qBAAqB,2BAA2B;AACxE,SAAS,aAAqB;AAC9B,SAAS,kBAAkB;AAC3B,SAAS,kBAAkB;AAC3B,SAAS,mBAAmB,aAAa,mBAAmB,aAAa,QAAQ,cAAc;
|
|
5
|
-
"names": ["DnsMessageType", "DnsRecordType", "DnsRecordClass"]
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["DnsMessageTypeFlag", "DnsMessageType", "DnsRecordType", "DnsRecordClass"]
|
|
6
6
|
}
|
package/dist/esm/log/Logger.js
CHANGED
|
@@ -165,7 +165,7 @@ class Logger {
|
|
|
165
165
|
for (const name in Logger.destinations) {
|
|
166
166
|
const dest = Logger.destinations[name];
|
|
167
167
|
if (level < (dest.facilityLevels?.[this.#name] ?? dest.level)) {
|
|
168
|
-
|
|
168
|
+
continue;
|
|
169
169
|
}
|
|
170
170
|
if (!dest.context) {
|
|
171
171
|
dest.context = Diagnostic.Context();
|
|
@@ -11,11 +11,7 @@ import { MockUdpChannel } from "./MockUdpChannel.js";
|
|
|
11
11
|
import type { NetworkSimulator } from "./NetworkSimulator.js";
|
|
12
12
|
export declare class MockNetwork extends Network {
|
|
13
13
|
#private;
|
|
14
|
-
readonly router:
|
|
15
|
-
(packet: MockRouter.Packet): void;
|
|
16
|
-
add: (value: MockRouter.Route) => Set<MockRouter.Route>;
|
|
17
|
-
delete: (value: MockRouter.Route) => boolean;
|
|
18
|
-
};
|
|
14
|
+
readonly router: MockRouter;
|
|
19
15
|
constructor(simulator: NetworkSimulator, mac: string, ips: string[]);
|
|
20
16
|
get simulator(): NetworkSimulator;
|
|
21
17
|
getNetInterfaces(): NetworkInterface[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MockNetwork.d.ts","sourceRoot":"","sources":["../../../../src/net/mock/MockNetwork.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAgB,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,qBAAa,WAAY,SAAQ,OAAO;;IACpC,QAAQ,CAAC,MAAM
|
|
1
|
+
{"version":3,"file":"MockNetwork.d.ts","sourceRoot":"","sources":["../../../../src/net/mock/MockNetwork.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAgB,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,qBAAa,WAAY,SAAQ,OAAO;;IACpC,QAAQ,CAAC,MAAM,aAAgB;gBAInB,SAAS,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE;IAWnE,IAAI,SAAS,qBAEZ;IAED,gBAAgB,IAAI,gBAAgB,EAAE;IAItC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,uBAAuB;IAOtC,gBAAgB,CAAC,OAAO,EAAE,iBAAiB;IAIpD,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM;IAI7B,KAAK;CAGvB"}
|
|
@@ -7,11 +7,7 @@ export interface MockRouter extends MockRouter.Route {
|
|
|
7
7
|
add(route: MockRouter.Route): void;
|
|
8
8
|
delete(route: MockRouter.Route): void;
|
|
9
9
|
}
|
|
10
|
-
export declare function MockRouter():
|
|
11
|
-
(packet: MockRouter.Packet): void;
|
|
12
|
-
add: (value: MockRouter.Route) => Set<MockRouter.Route>;
|
|
13
|
-
delete: (value: MockRouter.Route) => boolean;
|
|
14
|
-
};
|
|
10
|
+
export declare function MockRouter(manipulator?: MockRouter.PacketManipulator): MockRouter;
|
|
15
11
|
export declare namespace MockRouter {
|
|
16
12
|
interface Packet {
|
|
17
13
|
kind: "udp";
|
|
@@ -24,5 +20,6 @@ export declare namespace MockRouter {
|
|
|
24
20
|
interface Route {
|
|
25
21
|
(packet: Packet): void;
|
|
26
22
|
}
|
|
23
|
+
type PacketManipulator = (packet: Packet) => Packet | null;
|
|
27
24
|
}
|
|
28
25
|
//# sourceMappingURL=MockRouter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MockRouter.d.ts","sourceRoot":"","sources":["../../../../src/net/mock/MockRouter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,WAAW,UAAW,SAAQ,UAAU,CAAC,KAAK;IAChD,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC;IACnC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC;CACzC;AAED,wBAAgB,UAAU
|
|
1
|
+
{"version":3,"file":"MockRouter.d.ts","sourceRoot":"","sources":["../../../../src/net/mock/MockRouter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,WAAW,UAAW,SAAQ,UAAU,CAAC,KAAK;IAChD,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC;IACnC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC;CACzC;AAED,wBAAgB,UAAU,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC,iBAAiB,GAAG,UAAU,CAwBjF;AAED,yBAAiB,UAAU,CAAC;IACxB,UAAiB,MAAM;QACnB,IAAI,EAAE,KAAK,CAAC;QACZ,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,UAAU,CAAC;KACvB;IAED,UAAiB,KAAK;QAClB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B;IAED,KAAY,iBAAiB,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CACrE"}
|
|
@@ -5,9 +5,16 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { Logger } from "#log/Logger.js";
|
|
7
7
|
const logger = Logger.get("MockRouter");
|
|
8
|
-
function MockRouter() {
|
|
8
|
+
function MockRouter(manipulator) {
|
|
9
9
|
const routes = /* @__PURE__ */ new Set();
|
|
10
10
|
const router = function router2(packet) {
|
|
11
|
+
if (manipulator) {
|
|
12
|
+
const manipulatedPacket = manipulator(packet);
|
|
13
|
+
if (manipulatedPacket === null) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
packet = manipulatedPacket;
|
|
17
|
+
}
|
|
11
18
|
for (const route of routes) {
|
|
12
19
|
try {
|
|
13
20
|
route(packet);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/net/mock/MockRouter.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,cAAc;AAEvB,MAAM,SAAS,OAAO,IAAI,YAAY;AAO/B,SAAS,
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,cAAc;AAEvB,MAAM,SAAS,OAAO,IAAI,YAAY;AAO/B,SAAS,WAAW,aAAwD;AAC/E,QAAM,SAAS,oBAAI,IAAsB;AAEzC,QAAM,SAAS,SAASA,QAAO,QAA2B;AACtD,QAAI,aAAa;AACb,YAAM,oBAAoB,YAAY,MAAM;AAC5C,UAAI,sBAAsB,MAAM;AAC5B;AAAA,MACJ;AACA,eAAS;AAAA,IACb;AACA,eAAW,SAAS,QAAQ;AACxB,UAAI;AACA,cAAM,MAAM;AAAA,MAChB,SAAS,GAAG;AACR,eAAO,MAAM,uCAAuC,CAAC;AAAA,MACzD;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO,MAAM,OAAO,IAAI,KAAK,MAAM;AACnC,SAAO,SAAS,OAAO,OAAO,KAAK,MAAM;AAEzC,SAAO;AACX;",
|
|
5
5
|
"names": ["router"]
|
|
6
6
|
}
|
|
@@ -6,10 +6,11 @@
|
|
|
6
6
|
import { ChannelType } from "#net/Channel.js";
|
|
7
7
|
import { UdpChannel, UdpChannelOptions } from "../UdpChannel.js";
|
|
8
8
|
import { MockNetwork } from "./MockNetwork.js";
|
|
9
|
+
import { MockRouter } from "./MockRouter.js";
|
|
9
10
|
export declare class MockUdpChannel implements UdpChannel {
|
|
10
11
|
#private;
|
|
11
12
|
readonly maxPayloadSize: number;
|
|
12
|
-
constructor(network: MockNetwork, { listeningAddress, listeningPort, netInterface, type }: UdpChannelOptions);
|
|
13
|
+
constructor(network: MockNetwork, { listeningAddress, listeningPort, netInterface, type }: UdpChannelOptions, packetManipulator?: MockRouter.PacketManipulator);
|
|
13
14
|
onData(listener: UdpChannel.Callback): {
|
|
14
15
|
close: () => Promise<void>;
|
|
15
16
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MockUdpChannel.d.ts","sourceRoot":"","sources":["../../../../src/net/mock/MockUdpChannel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAwB,UAAU,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"MockUdpChannel.d.ts","sourceRoot":"","sources":["../../../../src/net/mock/MockUdpChannel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAwB,UAAU,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,qBAAa,cAAe,YAAW,UAAU;;IAM7C,QAAQ,CAAC,cAAc,SAAwB;gBAG3C,OAAO,EAAE,WAAW,EACpB,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,iBAAiB,EAC1E,iBAAiB,CAAC,EAAE,UAAU,CAAC,iBAAiB;IAuBpD,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ;;;IAuB9B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU;IAWpD,KAAK;IAIL,CAAC,MAAM,CAAC,YAAY,CAAC;IAI3B,IAAI,IAAI,WAEP;IAED,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM;IAI5C,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIpC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAGxC"}
|
|
@@ -9,12 +9,13 @@ import { MAX_UDP_MESSAGE_SIZE } from "../UdpChannel.js";
|
|
|
9
9
|
import { MockRouter } from "./MockRouter.js";
|
|
10
10
|
class MockUdpChannel {
|
|
11
11
|
#host;
|
|
12
|
-
#router
|
|
12
|
+
#router;
|
|
13
13
|
#sendFrom;
|
|
14
14
|
#receiveFrom;
|
|
15
15
|
#listeningPort;
|
|
16
16
|
maxPayloadSize = MAX_UDP_MESSAGE_SIZE;
|
|
17
|
-
constructor(network, { listeningAddress, listeningPort, netInterface, type }) {
|
|
17
|
+
constructor(network, { listeningAddress, listeningPort, netInterface, type }, packetManipulator) {
|
|
18
|
+
this.#router = MockRouter(packetManipulator);
|
|
18
19
|
const { ipV4, ipV6 } = network.getIpMac(netInterface ?? "fake0");
|
|
19
20
|
let addresses = type === "udp4" ? ipV4 : ipV6;
|
|
20
21
|
this.#sendFrom = addresses[0];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/net/mock/MockUdpChannel.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,mBAAmB;AAC5B,SAAS,oBAAoB;AAC7B,SAAS,4BAA2D;AAEpE,SAAS,kBAAkB;AAEpB,MAAM,eAAqC;AAAA,EACrC;AAAA,EACA
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,mBAAmB;AAC5B,SAAS,oBAAoB;AAC7B,SAAS,4BAA2D;AAEpE,SAAS,kBAAkB;AAEpB,MAAM,eAAqC;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EAE1B,YACI,SACA,EAAE,kBAAkB,eAAe,cAAc,KAAK,GACtD,mBACF;AACE,SAAK,UAAU,WAAW,iBAAiB;AAC3C,UAAM,EAAE,MAAM,KAAK,IAAI,QAAQ,SAAS,gBAAgB,OAAO;AAC/D,QAAI,YAAY,SAAS,SAAS,OAAO;AAEzC,SAAK,YAAY,UAAU,CAAC;AAE5B,QAAI,qBAAqB,UAAa,qBAAqB,KAAK;AAC5D,kBAAY,UAAU,OAAO,UAAQ,SAAS,gBAAgB;AAAA,IAClE;AAEA,QAAI,CAAC,UAAU,QAAQ;AACnB,YAAM,IAAI,aAAa,MAAM,IAAI,eAAe,oBAAoB,GAAG,6BAA6B;AAAA,IACxG;AAEA,SAAK,QAAQ;AACb,SAAK,eAAe,IAAI,IAAI,SAAS;AACrC,SAAK,iBAAiB,iBAAiB,OAAO,KAAK,MAAM,KAAK,OAAO,IAAI,KAAK;AAE9E,YAAQ,OAAO,IAAI,KAAK,OAAO;AAAA,EACnC;AAAA,EAEA,OAAO,UAA+B;AAClC,UAAM,SAAS,CAAC,WAA8B;AAC1C,UAAI,OAAO,SAAS,OAAO;AACvB;AAAA,MACJ;AACA,UAAI,CAAC,KAAK,aAAa,IAAI,OAAO,WAAW,GAAG;AAC5C;AAAA,MACJ;AACA,UAAI,OAAO,aAAa,KAAK,gBAAgB;AACzC;AAAA,MACJ;AACA,eAAS,SAAS,OAAO,eAAe,OAAO,YAAY,OAAO,OAAO;AAAA,IAC7E;AAEA,SAAK,QAAQ,IAAI,MAAM;AAEvB,WAAO;AAAA,MACH,OAAO,YAAY;AACf,aAAK,QAAQ,OAAO,MAAM;AAAA,MAC9B;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAM,KAAK,MAAc,MAAc,SAAqB;AACxD,SAAK,MAAM,UAAU,OAAO;AAAA,MACxB,MAAM;AAAA,MACN,eAAe,KAAK;AAAA,MACpB,YAAY,KAAK;AAAA,MACjB,aAAa;AAAA,MACb,UAAU;AAAA,MACV;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,QAAQ;AACV,SAAK,MAAM,OAAO,OAAO,KAAK,OAAO;AAAA,EACzC;AAAA,EAEA,OAAO,OAAO,YAAY,IAAI;AAC1B,WAAO,KAAK,MAAM;AAAA,EACtB;AAAA,EAEA,IAAI,OAAO;AACP,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,SAAS,MAAmB,UAAkB;AAC1C,WAAO,SAAS,YAAY;AAAA,EAChC;AAAA,EAEA,cAAc,SAAuB;AACjC,SAAK,aAAa,IAAI,OAAO;AAAA,EACjC;AAAA,EAEA,eAAe,SAAuB;AAClC,SAAK,aAAa,OAAO,OAAO;AAAA,EACpC;AACJ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -6,11 +6,7 @@
|
|
|
6
6
|
import { MockNetwork } from "./MockNetwork.js";
|
|
7
7
|
import { MockRouter } from "./MockRouter.js";
|
|
8
8
|
export declare class NetworkSimulator {
|
|
9
|
-
readonly router:
|
|
10
|
-
(packet: MockRouter.Packet): void;
|
|
11
|
-
add: (value: MockRouter.Route) => Set<MockRouter.Route>;
|
|
12
|
-
delete: (value: MockRouter.Route) => boolean;
|
|
13
|
-
};
|
|
9
|
+
readonly router: MockRouter;
|
|
14
10
|
addHost(lastIdentifierByte: number): MockNetwork;
|
|
15
11
|
}
|
|
16
12
|
export declare namespace NetworkSimulator {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NetworkSimulator.d.ts","sourceRoot":"","sources":["../../../../src/net/mock/NetworkSimulator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,qBAAa,gBAAgB;IACzB,QAAQ,CAAC,MAAM
|
|
1
|
+
{"version":3,"file":"NetworkSimulator.d.ts","sourceRoot":"","sources":["../../../../src/net/mock/NetworkSimulator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,qBAAa,gBAAgB;IACzB,QAAQ,CAAC,MAAM,aAAgB;IAE/B,OAAO,CAAC,kBAAkB,EAAE,MAAM;CAOrC;AAED,yBAAiB,gBAAgB,CAAC;IAC9B,KAAY,QAAQ,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;CAClH"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matter/general",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.5",
|
|
4
4
|
"description": "Non-Matter support for Matter.js",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"iot",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"@noble/curves": "^1.9.5"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
|
-
"@matter/testing": "0.15.
|
|
39
|
+
"@matter/testing": "0.15.5"
|
|
40
40
|
},
|
|
41
41
|
"files": [
|
|
42
42
|
"dist/**/*",
|
package/src/codec/DnsCodec.ts
CHANGED
|
@@ -4,12 +4,16 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
+
import { Diagnostic } from "#log/Diagnostic.js";
|
|
8
|
+
import { Logger } from "#log/Logger.js";
|
|
7
9
|
import { InternalError, NotImplementedError, UnexpectedDataError } from "../MatterError.js";
|
|
8
10
|
import { Bytes, Endian } from "../util/Bytes.js";
|
|
9
11
|
import { DataReader } from "../util/DataReader.js";
|
|
10
12
|
import { DataWriter } from "../util/DataWriter.js";
|
|
11
13
|
import { ipv4BytesToString, ipv4ToBytes, ipv6BytesToString, ipv6ToBytes, isIPv4, isIPv6 } from "../util/Ip.js";
|
|
12
14
|
|
|
15
|
+
const logger = Logger.get("DnsCodec");
|
|
16
|
+
|
|
13
17
|
/**
|
|
14
18
|
* The maximum MDNS message size to usually fit into one UDP network MTU packet. Data are split into multiple messages
|
|
15
19
|
* when needed.
|
|
@@ -116,11 +120,51 @@ export type DnsMessagePartiallyPreEncoded = Omit<DnsMessage, "answers" | "additi
|
|
|
116
120
|
additionalRecords: (DnsRecord<any> | Uint8Array)[];
|
|
117
121
|
};
|
|
118
122
|
|
|
123
|
+
/** Bit flags to use to determine separate flags in the DnsMessageType field */
|
|
124
|
+
export enum DnsMessageTypeFlag {
|
|
125
|
+
/** Indicates if the message is a query (0) or a reply (1). */
|
|
126
|
+
QR = 0x8000,
|
|
127
|
+
|
|
128
|
+
/** The type can be QUERY (standard query, 0), IQUERY (inverse query, 1), or STATUS (server status request, 2). */
|
|
129
|
+
OPCODE = 0x7800,
|
|
130
|
+
|
|
131
|
+
/** Authoritative Answer, in a response, indicates if the DNS server is authoritative for the queried hostname. */
|
|
132
|
+
AA = 0x0400,
|
|
133
|
+
|
|
134
|
+
/** TrunCation, indicates that this message was truncated due to excessive length. */
|
|
135
|
+
TC = 0x0200,
|
|
136
|
+
|
|
137
|
+
/** Recursion Desired, indicates if the client means a recursive query. */
|
|
138
|
+
RD = 0x0100,
|
|
139
|
+
|
|
140
|
+
/** Recursion Available, in a response, indicates if the replying DNS server supports recursion. */
|
|
141
|
+
RA = 0x0080,
|
|
142
|
+
|
|
143
|
+
/** Authentic Data, in a response, indicates if the replying DNS server verified the data. */
|
|
144
|
+
AD = 0x0020,
|
|
145
|
+
|
|
146
|
+
/** Checking Disabled, in a query, indicates that non-verified data is acceptable in a response. */
|
|
147
|
+
CD = 0x0010,
|
|
148
|
+
|
|
149
|
+
/** Response code, can be NOERROR (0), FORMERR (1, Format error), SERVFAIL (2), NXDOMAIN (3, Nonexistent domain), etc. */
|
|
150
|
+
RCODE = 0x000f,
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/** Convenient Message types we use when sending mDNS messages */
|
|
119
154
|
export enum DnsMessageType {
|
|
120
|
-
Query =
|
|
155
|
+
Query = 0, // No bit set
|
|
121
156
|
TruncatedQuery = 0x0200,
|
|
122
|
-
Response =
|
|
123
|
-
|
|
157
|
+
Response = DnsMessageTypeFlag.QR | DnsMessageTypeFlag.AA, // Authoritative Answer 0x8400
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
export namespace DnsMessageType {
|
|
161
|
+
export function isQuery(type: number) {
|
|
162
|
+
return (type & DnsMessageTypeFlag.QR) === 0;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
export function isResponse(type: number) {
|
|
166
|
+
return (type & DnsMessageTypeFlag.QR) !== 0;
|
|
167
|
+
}
|
|
124
168
|
}
|
|
125
169
|
|
|
126
170
|
export enum DnsRecordType {
|
|
@@ -282,7 +326,7 @@ export class DnsCodec {
|
|
|
282
326
|
additionalRecords = [],
|
|
283
327
|
}: Partial<DnsMessagePartiallyPreEncoded>): Uint8Array {
|
|
284
328
|
if (messageType === undefined) throw new InternalError("Message type must be specified!");
|
|
285
|
-
if (queries.length > 0 &&
|
|
329
|
+
if (queries.length > 0 && !DnsMessageType.isQuery(messageType))
|
|
286
330
|
throw new InternalError("Queries can only be included in query messages!");
|
|
287
331
|
if (authorities.length > 0) throw new NotImplementedError("Authority answers are not supported yet!");
|
|
288
332
|
|
|
@@ -311,6 +355,11 @@ export class DnsCodec {
|
|
|
311
355
|
static encodeRecord(record: DnsRecord<any>): Uint8Array {
|
|
312
356
|
const { name, recordType, recordClass, ttl, value, flushCache = false } = record;
|
|
313
357
|
|
|
358
|
+
if (recordType === undefined || value === undefined) {
|
|
359
|
+
logger.warn("Skipping record encoding due to missing type or value.", Diagnostic.dict(record));
|
|
360
|
+
return new Uint8Array(0);
|
|
361
|
+
}
|
|
362
|
+
|
|
314
363
|
const writer = new DataWriter();
|
|
315
364
|
writer.writeByteArray(this.encodeQName(name));
|
|
316
365
|
writer.writeUInt16(recordType);
|
package/src/log/Logger.ts
CHANGED
|
@@ -13,10 +13,17 @@ export interface MockRouter extends MockRouter.Route {
|
|
|
13
13
|
delete(route: MockRouter.Route): void;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
export function MockRouter() {
|
|
16
|
+
export function MockRouter(manipulator?: MockRouter.PacketManipulator): MockRouter {
|
|
17
17
|
const routes = new Set<MockRouter.Route>();
|
|
18
18
|
|
|
19
19
|
const router = function router(packet: MockRouter.Packet) {
|
|
20
|
+
if (manipulator) {
|
|
21
|
+
const manipulatedPacket = manipulator(packet);
|
|
22
|
+
if (manipulatedPacket === null) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
packet = manipulatedPacket;
|
|
26
|
+
}
|
|
20
27
|
for (const route of routes) {
|
|
21
28
|
try {
|
|
22
29
|
route(packet);
|
|
@@ -45,4 +52,6 @@ export namespace MockRouter {
|
|
|
45
52
|
export interface Route {
|
|
46
53
|
(packet: Packet): void;
|
|
47
54
|
}
|
|
55
|
+
|
|
56
|
+
export type PacketManipulator = (packet: Packet) => Packet | null;
|
|
48
57
|
}
|
|
@@ -12,13 +12,18 @@ import { MockRouter } from "./MockRouter.js";
|
|
|
12
12
|
|
|
13
13
|
export class MockUdpChannel implements UdpChannel {
|
|
14
14
|
readonly #host: MockNetwork;
|
|
15
|
-
readonly #router
|
|
15
|
+
readonly #router: MockRouter;
|
|
16
16
|
readonly #sendFrom: string;
|
|
17
17
|
readonly #receiveFrom: Set<string>;
|
|
18
18
|
readonly #listeningPort: number;
|
|
19
19
|
readonly maxPayloadSize = MAX_UDP_MESSAGE_SIZE;
|
|
20
20
|
|
|
21
|
-
constructor(
|
|
21
|
+
constructor(
|
|
22
|
+
network: MockNetwork,
|
|
23
|
+
{ listeningAddress, listeningPort, netInterface, type }: UdpChannelOptions,
|
|
24
|
+
packetManipulator?: MockRouter.PacketManipulator,
|
|
25
|
+
) {
|
|
26
|
+
this.#router = MockRouter(packetManipulator);
|
|
22
27
|
const { ipV4, ipV6 } = network.getIpMac(netInterface ?? "fake0");
|
|
23
28
|
let addresses = type === "udp4" ? ipV4 : ipV6;
|
|
24
29
|
|