pmcf 6.47.0 → 6.48.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +41 -46
- package/package.json +1 -1
- package/src/services/bind.mjs +138 -81
package/README.md
CHANGED
|
@@ -44,82 +44,81 @@ generates config packages for:
|
|
|
44
44
|
* [base](#base)
|
|
45
45
|
* [enabled](#enabled)
|
|
46
46
|
* [priority](#priority)
|
|
47
|
-
* [templateContentAttributes](#templatecontentattributes)
|
|
48
|
-
* [Parameters](#parameters)
|
|
49
47
|
* [templateContent](#templatecontent)
|
|
48
|
+
* [Parameters](#parameters)
|
|
50
49
|
* [isTemplate](#istemplate)
|
|
51
50
|
* [access](#access)
|
|
52
51
|
* [loadHooks](#loadhooks)
|
|
53
|
-
* [Parameters](#parameters
|
|
52
|
+
* [Parameters](#parameters)
|
|
54
53
|
* [serviceEndpoints](#serviceendpoints)
|
|
55
|
-
* [Parameters](#parameters-
|
|
54
|
+
* [Parameters](#parameters-1)
|
|
56
55
|
* [attributeIterator](#attributeiterator)
|
|
57
|
-
* [Parameters](#parameters-
|
|
56
|
+
* [Parameters](#parameters-2)
|
|
58
57
|
* [getAttributes](#getattributes)
|
|
59
|
-
* [Parameters](#parameters-
|
|
58
|
+
* [Parameters](#parameters-3)
|
|
60
59
|
* [property](#property)
|
|
61
|
-
* [Parameters](#parameters-
|
|
60
|
+
* [Parameters](#parameters-4)
|
|
62
61
|
* [attribute](#attribute)
|
|
63
|
-
* [Parameters](#parameters-
|
|
62
|
+
* [Parameters](#parameters-5)
|
|
64
63
|
* [walkDirections](#walkdirections)
|
|
65
|
-
* [Parameters](#parameters-
|
|
64
|
+
* [Parameters](#parameters-6)
|
|
66
65
|
* [mapFromDirections](#mapfromdirections)
|
|
67
|
-
* [Parameters](#parameters-
|
|
66
|
+
* [Parameters](#parameters-7)
|
|
68
67
|
* [unionFromDirections](#unionfromdirections)
|
|
69
|
-
* [Parameters](#parameters-
|
|
68
|
+
* [Parameters](#parameters-8)
|
|
70
69
|
* [expand](#expand)
|
|
71
|
-
* [Parameters](#parameters-
|
|
70
|
+
* [Parameters](#parameters-9)
|
|
72
71
|
* [expression](#expression)
|
|
73
|
-
* [Parameters](#parameters-
|
|
72
|
+
* [Parameters](#parameters-10)
|
|
74
73
|
* [isTemplate](#istemplate-1)
|
|
75
74
|
* [PortEndpoint](#portendpoint)
|
|
76
|
-
* [Parameters](#parameters-
|
|
75
|
+
* [Parameters](#parameters-11)
|
|
77
76
|
* [port](#port)
|
|
78
77
|
* [socketAddress](#socketaddress)
|
|
79
78
|
* [HTTPEndpoint](#httpendpoint)
|
|
80
|
-
* [Parameters](#parameters-
|
|
79
|
+
* [Parameters](#parameters-12)
|
|
81
80
|
* [port](#port-1)
|
|
82
81
|
* [domainNames](#domainnames)
|
|
83
82
|
* [InitializationContext](#initializationcontext)
|
|
84
|
-
* [Parameters](#parameters-
|
|
83
|
+
* [Parameters](#parameters-13)
|
|
85
84
|
* [SkeletonNetworkInterface](#skeletonnetworkinterface)
|
|
86
85
|
* [networkAddresses](#networkaddresses)
|
|
87
|
-
* [Parameters](#parameters-
|
|
86
|
+
* [Parameters](#parameters-14)
|
|
88
87
|
* [zones](#zones)
|
|
89
88
|
* [addressesStatement](#addressesstatement)
|
|
90
|
-
* [Parameters](#parameters-
|
|
89
|
+
* [Parameters](#parameters-15)
|
|
91
90
|
* [SystemdJournalRemoteService](#systemdjournalremoteservice)
|
|
92
91
|
* [Properties](#properties)
|
|
93
92
|
* [systemdConfigs](#systemdconfigs)
|
|
94
|
-
* [Parameters](#parameters-
|
|
93
|
+
* [Parameters](#parameters-16)
|
|
95
94
|
* [SystemdJournalUploadService](#systemdjournaluploadservice)
|
|
96
95
|
* [Properties](#properties-1)
|
|
97
96
|
* [systemdConfigs](#systemdconfigs-1)
|
|
98
|
-
* [Parameters](#parameters-
|
|
97
|
+
* [Parameters](#parameters-17)
|
|
99
98
|
* [NetworkAddress](#networkaddress)
|
|
100
|
-
* [Parameters](#parameters-
|
|
99
|
+
* [Parameters](#parameters-18)
|
|
101
100
|
* [subnet](#subnet)
|
|
102
101
|
* [networkInterface](#networkinterface)
|
|
103
102
|
* [address](#address)
|
|
104
103
|
* [addresses](#addresses)
|
|
105
|
-
* [Parameters](#parameters-
|
|
104
|
+
* [Parameters](#parameters-19)
|
|
106
105
|
* [cidrAddresses](#cidraddresses)
|
|
107
|
-
* [Parameters](#parameters-
|
|
106
|
+
* [Parameters](#parameters-20)
|
|
108
107
|
* [families](#families)
|
|
109
108
|
* [secretName](#secretname)
|
|
110
109
|
* [directHosts](#directhosts)
|
|
111
110
|
* [subnetForAddress](#subnetforaddress)
|
|
112
|
-
* [Parameters](#parameters-
|
|
111
|
+
* [Parameters](#parameters-21)
|
|
113
112
|
* [ServiceType](#servicetype)
|
|
114
113
|
* [Properties](#properties-2)
|
|
115
114
|
* [serviceTypeEndpoints](#servicetypeendpoints)
|
|
116
|
-
* [Parameters](#parameters-
|
|
115
|
+
* [Parameters](#parameters-22)
|
|
117
116
|
* [domainName](#domainname)
|
|
118
|
-
* [Parameters](#parameters-
|
|
117
|
+
* [Parameters](#parameters-23)
|
|
119
118
|
* [domainFromDominName](#domainfromdominname)
|
|
120
|
-
* [Parameters](#parameters-
|
|
119
|
+
* [Parameters](#parameters-24)
|
|
121
120
|
* [sectionLines](#sectionlines)
|
|
122
|
-
* [Parameters](#parameters-
|
|
121
|
+
* [Parameters](#parameters-25)
|
|
123
122
|
|
|
124
123
|
## base
|
|
125
124
|
|
|
@@ -136,15 +135,11 @@ Returns **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/
|
|
|
136
135
|
|
|
137
136
|
Returns **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** 
|
|
138
137
|
|
|
139
|
-
###
|
|
138
|
+
### templateContent
|
|
140
139
|
|
|
141
140
|
#### Parameters
|
|
142
141
|
|
|
143
|
-
* `
|
|
144
|
-
|
|
145
|
-
Returns **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** 
|
|
146
|
-
|
|
147
|
-
### templateContent
|
|
142
|
+
* `content`  
|
|
148
143
|
|
|
149
144
|
Returns **AsyncIterable\<ContentProvider>** 
|
|
150
145
|
|
|
@@ -312,18 +307,6 @@ Keeps track of all in flight object creations and loose ends during config initi
|
|
|
312
307
|
|
|
313
308
|
* `directory` (optional, default `"/"`)
|
|
314
309
|
|
|
315
|
-
## SkeletonNetworkInterface
|
|
316
|
-
|
|
317
|
-
**Extends ServiceOwner**
|
|
318
|
-
|
|
319
|
-
### networkAddresses
|
|
320
|
-
|
|
321
|
-
#### Parameters
|
|
322
|
-
|
|
323
|
-
* `filter` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** (optional, default `n=>true`)
|
|
324
|
-
|
|
325
|
-
Returns **Iterable<[NetworkAddress](#networkaddress)>** 
|
|
326
|
-
|
|
327
310
|
## zones
|
|
328
311
|
|
|
329
312
|
Type: [Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)\<bind\_zone>
|
|
@@ -414,6 +397,18 @@ Returns **Iterable<[string](https://developer.mozilla.org/docs/Web/JavaScript/Re
|
|
|
414
397
|
|
|
415
398
|
Returns **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** 
|
|
416
399
|
|
|
400
|
+
## SkeletonNetworkInterface
|
|
401
|
+
|
|
402
|
+
**Extends ServiceOwner**
|
|
403
|
+
|
|
404
|
+
### networkAddresses
|
|
405
|
+
|
|
406
|
+
#### Parameters
|
|
407
|
+
|
|
408
|
+
* `filter` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** (optional, default `n=>true`)
|
|
409
|
+
|
|
410
|
+
Returns **Iterable<[NetworkAddress](#networkaddress)>** 
|
|
411
|
+
|
|
417
412
|
## families
|
|
418
413
|
|
|
419
414
|
Returns **[Set](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Set)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** 
|
package/package.json
CHANGED
package/src/services/bind.mjs
CHANGED
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
string_attribute_writable,
|
|
13
13
|
boolean_attribute,
|
|
14
14
|
boolean_attribute_writable_false,
|
|
15
|
+
boolean_attribute_writable_true,
|
|
15
16
|
integer_attribute_writable,
|
|
16
17
|
integer_attribute,
|
|
17
18
|
secret_attribute_writable,
|
|
@@ -188,7 +189,7 @@ class bind_zone_config extends base {
|
|
|
188
189
|
)
|
|
189
190
|
);
|
|
190
191
|
|
|
191
|
-
|
|
192
|
+
// content.push(`update-policy { grant updates zonesub ANY; };`);
|
|
192
193
|
break;
|
|
193
194
|
case SECONDARY:
|
|
194
195
|
const primaries = endpointAddresses(this.service.primaries);
|
|
@@ -310,8 +311,8 @@ export class bind_acl extends bind_object {
|
|
|
310
311
|
const acl_attribute = {
|
|
311
312
|
...default_attribute_writable,
|
|
312
313
|
type: bind_object,
|
|
313
|
-
name: "acl"
|
|
314
|
-
// default: "'any'"
|
|
314
|
+
name: "acl"
|
|
315
|
+
// default: "'any'"
|
|
315
316
|
};
|
|
316
317
|
|
|
317
318
|
class bind_view extends bind_object {
|
|
@@ -367,6 +368,14 @@ class bind_view extends bind_object {
|
|
|
367
368
|
type: bind_view
|
|
368
369
|
},
|
|
369
370
|
notify: { ...boolean_attribute_writable_false, name: "notify" },
|
|
371
|
+
hasForeignDomains: {
|
|
372
|
+
...boolean_attribute_writable_false,
|
|
373
|
+
name: "hasForeignDomains"
|
|
374
|
+
},
|
|
375
|
+
hasBaseRecords: {
|
|
376
|
+
...boolean_attribute_writable_true,
|
|
377
|
+
name: "hasBaseRecords"
|
|
378
|
+
},
|
|
370
379
|
hasCatalog: { ...boolean_attribute_writable_false, name: "hasCatalog" },
|
|
371
380
|
hasReverse: { ...boolean_attribute_writable_false, name: "hasReverse" },
|
|
372
381
|
hasSVRRecords: {
|
|
@@ -407,6 +416,46 @@ class bind_view extends bind_object {
|
|
|
407
416
|
hasSVRRecords = true;
|
|
408
417
|
recordTTL = "1W";
|
|
409
418
|
|
|
419
|
+
set hasForeignDomains(value) {
|
|
420
|
+
this._hasForeignDomains = value;
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
get hasForeignDomains() {
|
|
424
|
+
return this.attribute("_hasForeignDomains");
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
set hasBaseRecords(value) {
|
|
428
|
+
this._hasBaseRecords = value;
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
get hasBaseRecords() {
|
|
432
|
+
return this.attribute("_hasBaseRecords");
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
set hasReverse(value) {
|
|
436
|
+
this._hasReverse = value;
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
get hasReverse() {
|
|
440
|
+
return this.attribute("_hasReverse");
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
set hasCatalog(value) {
|
|
444
|
+
this._hasCatalog = value;
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
get hasCatalog() {
|
|
448
|
+
return this.attribute("_hasCatalog");
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
set hasSVRRecords(value) {
|
|
452
|
+
this._hasSVRRecords = value;
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
get hasSVRRecords() {
|
|
456
|
+
return this.attribute("_hasSVRRecords");
|
|
457
|
+
}
|
|
458
|
+
|
|
410
459
|
get type() {
|
|
411
460
|
return this.owner.serverType;
|
|
412
461
|
}
|
|
@@ -506,117 +555,125 @@ class bind_view extends bind_object {
|
|
|
506
555
|
)
|
|
507
556
|
);
|
|
508
557
|
|
|
509
|
-
|
|
558
|
+
if (this.hasBaseRecords) {
|
|
559
|
+
let reverseZone;
|
|
510
560
|
|
|
511
|
-
|
|
512
|
-
|
|
561
|
+
if (this.hasReverse && na.subnet.prefix) {
|
|
562
|
+
let subnet;
|
|
513
563
|
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
564
|
+
for (const s of subnets) {
|
|
565
|
+
if (s.isIncluded(na.subnet)) {
|
|
566
|
+
subnet = s;
|
|
567
|
+
}
|
|
517
568
|
}
|
|
518
|
-
}
|
|
519
569
|
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
}
|
|
524
|
-
|
|
525
|
-
reverseZone = this._zones.getOrInsertComputed(
|
|
526
|
-
reverseArpa(subnet.prefix),
|
|
527
|
-
domain =>
|
|
528
|
-
this.intoCatalog(
|
|
529
|
-
new bind_zone(this, domain, config, locationName),
|
|
530
|
-
locationName
|
|
531
|
-
)
|
|
532
|
-
);
|
|
533
|
-
}
|
|
534
|
-
|
|
535
|
-
if (!hosts.has(host)) {
|
|
536
|
-
hosts.add(host);
|
|
537
|
-
|
|
538
|
-
for (let foreignDomain of host.foreignDomainNames) {
|
|
539
|
-
const wildcard = foreignDomain.startsWith("*.");
|
|
540
|
-
if (wildcard) {
|
|
541
|
-
foreignDomain = foreignDomain.substring(2);
|
|
570
|
+
if (!subnet) {
|
|
571
|
+
subnet = na.subnet;
|
|
572
|
+
subnets.add(subnet);
|
|
542
573
|
}
|
|
543
574
|
|
|
544
|
-
this.
|
|
545
|
-
|
|
546
|
-
const config = this.zoneConfigs.getOrInsertComputed(
|
|
547
|
-
foreignDomain,
|
|
548
|
-
domain => new bind_zone_config(this, `${domain}.zone.conf`)
|
|
549
|
-
);
|
|
550
|
-
|
|
551
|
-
config.foreign = true;
|
|
552
|
-
const zone = this._zones.getOrInsertComputed(
|
|
553
|
-
foreignDomain,
|
|
575
|
+
reverseZone = this._zones.getOrInsertComputed(
|
|
576
|
+
reverseArpa(subnet.prefix),
|
|
554
577
|
domain =>
|
|
555
578
|
this.intoCatalog(
|
|
556
579
|
new bind_zone(this, domain, config, locationName),
|
|
557
580
|
locationName
|
|
558
581
|
)
|
|
559
582
|
);
|
|
583
|
+
}
|
|
584
|
+
}
|
|
560
585
|
|
|
561
|
-
|
|
586
|
+
if (!hosts.has(host)) {
|
|
587
|
+
hosts.add(host);
|
|
562
588
|
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
589
|
+
if (this.hasForeignDomains) {
|
|
590
|
+
for (let foreignDomain of host.foreignDomainNames) {
|
|
591
|
+
const wildcard = foreignDomain.startsWith("*.");
|
|
592
|
+
if (wildcard) {
|
|
593
|
+
foreignDomain = foreignDomain.substring(2);
|
|
594
|
+
}
|
|
595
|
+
|
|
596
|
+
this.foreignDomains.add(foreignDomain);
|
|
597
|
+
|
|
598
|
+
const config = this.zoneConfigs.getOrInsertComputed(
|
|
599
|
+
foreignDomain,
|
|
600
|
+
domain => new bind_zone_config(this, `${domain}.zone.conf`)
|
|
572
601
|
);
|
|
573
602
|
|
|
574
|
-
|
|
603
|
+
config.foreign = true;
|
|
604
|
+
const zone = this._zones.getOrInsertComputed(
|
|
605
|
+
foreignDomain,
|
|
606
|
+
domain =>
|
|
607
|
+
this.intoCatalog(
|
|
608
|
+
new bind_zone(this, domain, config, locationName),
|
|
609
|
+
locationName
|
|
610
|
+
)
|
|
611
|
+
);
|
|
612
|
+
|
|
613
|
+
zone.foreign = true;
|
|
614
|
+
|
|
615
|
+
for (const na of host.networkAddresses(
|
|
616
|
+
na => na.networkInterface.kind !== "loopback"
|
|
617
|
+
)) {
|
|
575
618
|
zone.records.add(
|
|
576
619
|
DNSRecord(
|
|
577
|
-
"
|
|
620
|
+
"@",
|
|
578
621
|
dnsRecordTypeForAddressFamily(na.family),
|
|
579
622
|
na.address
|
|
580
623
|
)
|
|
581
624
|
);
|
|
625
|
+
|
|
626
|
+
if (wildcard) {
|
|
627
|
+
zone.records.add(
|
|
628
|
+
DNSRecord(
|
|
629
|
+
"*",
|
|
630
|
+
dnsRecordTypeForAddressFamily(na.family),
|
|
631
|
+
na.address
|
|
632
|
+
)
|
|
633
|
+
);
|
|
634
|
+
}
|
|
582
635
|
}
|
|
583
636
|
}
|
|
584
637
|
}
|
|
585
638
|
|
|
586
|
-
|
|
639
|
+
if (this.hasBaseRecords) {
|
|
640
|
+
const sm = new Map();
|
|
587
641
|
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
642
|
+
for (const service of host.services.values()) {
|
|
643
|
+
for (const record of service.dnsRecordsForDomainName(
|
|
644
|
+
host.domainName,
|
|
645
|
+
this.hasSVRRecords
|
|
646
|
+
)) {
|
|
647
|
+
sm.set(record.toString(), record);
|
|
648
|
+
}
|
|
594
649
|
}
|
|
595
|
-
}
|
|
596
650
|
|
|
597
|
-
|
|
598
|
-
|
|
651
|
+
for (const r of sm.values()) {
|
|
652
|
+
zone.records.add(r);
|
|
653
|
+
}
|
|
599
654
|
}
|
|
600
655
|
}
|
|
601
656
|
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
dnsFullName(domainName),
|
|
607
|
-
dnsRecordTypeForAddressFamily(na.family),
|
|
608
|
-
address
|
|
609
|
-
)
|
|
610
|
-
);
|
|
611
|
-
|
|
612
|
-
if (reverseZone) {
|
|
613
|
-
reverseZone.records.add(
|
|
657
|
+
if (this.hasBaseRecords) {
|
|
658
|
+
for (const domainName of na.domainNames) {
|
|
659
|
+
if (domainName.endsWith(domain) && domainName[0] !== "*") {
|
|
660
|
+
zone.records.add(
|
|
614
661
|
DNSRecord(
|
|
615
|
-
dnsFullName(
|
|
616
|
-
|
|
617
|
-
|
|
662
|
+
dnsFullName(domainName),
|
|
663
|
+
dnsRecordTypeForAddressFamily(na.family),
|
|
664
|
+
address
|
|
618
665
|
)
|
|
619
666
|
);
|
|
667
|
+
|
|
668
|
+
if (reverseZone) {
|
|
669
|
+
reverseZone.records.add(
|
|
670
|
+
DNSRecord(
|
|
671
|
+
dnsFullName(reverseArpa(address)),
|
|
672
|
+
"PTR",
|
|
673
|
+
dnsFullName(domainName)
|
|
674
|
+
)
|
|
675
|
+
);
|
|
676
|
+
}
|
|
620
677
|
}
|
|
621
678
|
}
|
|
622
679
|
}
|
|
@@ -659,7 +716,7 @@ class bind_view extends bind_object {
|
|
|
659
716
|
function addressesStatement(prefix, objects, empty = false, indent = "") {
|
|
660
717
|
const body = asArray(objects).map(value => {
|
|
661
718
|
if (typeof value !== "string") {
|
|
662
|
-
if(value instanceof bind_key) {
|
|
719
|
+
if (value instanceof bind_key) {
|
|
663
720
|
return `key ${value.name}`;
|
|
664
721
|
}
|
|
665
722
|
return value.name ?? value.address;
|
|
@@ -794,7 +851,7 @@ export class bind extends CoreService {
|
|
|
794
851
|
async *preparePackages(dir) {
|
|
795
852
|
const packageData = await this.preparePackage(dir);
|
|
796
853
|
|
|
797
|
-
if(!packageData) {
|
|
854
|
+
if (!packageData) {
|
|
798
855
|
return;
|
|
799
856
|
}
|
|
800
857
|
|