pmcf 6.47.0 → 6.48.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/README.md +41 -46
- package/package.json +1 -1
- package/src/services/bind.mjs +98 -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: {
|
|
@@ -506,117 +515,125 @@ class bind_view extends bind_object {
|
|
|
506
515
|
)
|
|
507
516
|
);
|
|
508
517
|
|
|
509
|
-
|
|
518
|
+
if (this.hasBaseRecords) {
|
|
519
|
+
let reverseZone;
|
|
510
520
|
|
|
511
|
-
|
|
512
|
-
|
|
521
|
+
if (this.hasReverse && na.subnet.prefix) {
|
|
522
|
+
let subnet;
|
|
513
523
|
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
524
|
+
for (const s of subnets) {
|
|
525
|
+
if (s.isIncluded(na.subnet)) {
|
|
526
|
+
subnet = s;
|
|
527
|
+
}
|
|
517
528
|
}
|
|
518
|
-
}
|
|
519
|
-
|
|
520
|
-
if (!subnet) {
|
|
521
|
-
subnet = na.subnet;
|
|
522
|
-
subnets.add(subnet);
|
|
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
529
|
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
foreignDomain = foreignDomain.substring(2);
|
|
530
|
+
if (!subnet) {
|
|
531
|
+
subnet = na.subnet;
|
|
532
|
+
subnets.add(subnet);
|
|
542
533
|
}
|
|
543
534
|
|
|
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,
|
|
535
|
+
reverseZone = this._zones.getOrInsertComputed(
|
|
536
|
+
reverseArpa(subnet.prefix),
|
|
554
537
|
domain =>
|
|
555
538
|
this.intoCatalog(
|
|
556
539
|
new bind_zone(this, domain, config, locationName),
|
|
557
540
|
locationName
|
|
558
541
|
)
|
|
559
542
|
);
|
|
543
|
+
}
|
|
544
|
+
}
|
|
560
545
|
|
|
561
|
-
|
|
546
|
+
if (!hosts.has(host)) {
|
|
547
|
+
hosts.add(host);
|
|
562
548
|
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
549
|
+
if (this.hasForeignDomains) {
|
|
550
|
+
for (let foreignDomain of host.foreignDomainNames) {
|
|
551
|
+
const wildcard = foreignDomain.startsWith("*.");
|
|
552
|
+
if (wildcard) {
|
|
553
|
+
foreignDomain = foreignDomain.substring(2);
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
this.foreignDomains.add(foreignDomain);
|
|
557
|
+
|
|
558
|
+
const config = this.zoneConfigs.getOrInsertComputed(
|
|
559
|
+
foreignDomain,
|
|
560
|
+
domain => new bind_zone_config(this, `${domain}.zone.conf`)
|
|
572
561
|
);
|
|
573
562
|
|
|
574
|
-
|
|
563
|
+
config.foreign = true;
|
|
564
|
+
const zone = this._zones.getOrInsertComputed(
|
|
565
|
+
foreignDomain,
|
|
566
|
+
domain =>
|
|
567
|
+
this.intoCatalog(
|
|
568
|
+
new bind_zone(this, domain, config, locationName),
|
|
569
|
+
locationName
|
|
570
|
+
)
|
|
571
|
+
);
|
|
572
|
+
|
|
573
|
+
zone.foreign = true;
|
|
574
|
+
|
|
575
|
+
for (const na of host.networkAddresses(
|
|
576
|
+
na => na.networkInterface.kind !== "loopback"
|
|
577
|
+
)) {
|
|
575
578
|
zone.records.add(
|
|
576
579
|
DNSRecord(
|
|
577
|
-
"
|
|
580
|
+
"@",
|
|
578
581
|
dnsRecordTypeForAddressFamily(na.family),
|
|
579
582
|
na.address
|
|
580
583
|
)
|
|
581
584
|
);
|
|
585
|
+
|
|
586
|
+
if (wildcard) {
|
|
587
|
+
zone.records.add(
|
|
588
|
+
DNSRecord(
|
|
589
|
+
"*",
|
|
590
|
+
dnsRecordTypeForAddressFamily(na.family),
|
|
591
|
+
na.address
|
|
592
|
+
)
|
|
593
|
+
);
|
|
594
|
+
}
|
|
582
595
|
}
|
|
583
596
|
}
|
|
584
597
|
}
|
|
585
598
|
|
|
586
|
-
|
|
599
|
+
if (this.hasBaseRecords) {
|
|
600
|
+
const sm = new Map();
|
|
587
601
|
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
602
|
+
for (const service of host.services.values()) {
|
|
603
|
+
for (const record of service.dnsRecordsForDomainName(
|
|
604
|
+
host.domainName,
|
|
605
|
+
this.hasSVRRecords
|
|
606
|
+
)) {
|
|
607
|
+
sm.set(record.toString(), record);
|
|
608
|
+
}
|
|
594
609
|
}
|
|
595
|
-
}
|
|
596
610
|
|
|
597
|
-
|
|
598
|
-
|
|
611
|
+
for (const r of sm.values()) {
|
|
612
|
+
zone.records.add(r);
|
|
613
|
+
}
|
|
599
614
|
}
|
|
600
615
|
}
|
|
601
616
|
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
dnsFullName(domainName),
|
|
607
|
-
dnsRecordTypeForAddressFamily(na.family),
|
|
608
|
-
address
|
|
609
|
-
)
|
|
610
|
-
);
|
|
611
|
-
|
|
612
|
-
if (reverseZone) {
|
|
613
|
-
reverseZone.records.add(
|
|
617
|
+
if (this.hasBaseRecords) {
|
|
618
|
+
for (const domainName of na.domainNames) {
|
|
619
|
+
if (domainName.endsWith(domain) && domainName[0] !== "*") {
|
|
620
|
+
zone.records.add(
|
|
614
621
|
DNSRecord(
|
|
615
|
-
dnsFullName(
|
|
616
|
-
|
|
617
|
-
|
|
622
|
+
dnsFullName(domainName),
|
|
623
|
+
dnsRecordTypeForAddressFamily(na.family),
|
|
624
|
+
address
|
|
618
625
|
)
|
|
619
626
|
);
|
|
627
|
+
|
|
628
|
+
if (reverseZone) {
|
|
629
|
+
reverseZone.records.add(
|
|
630
|
+
DNSRecord(
|
|
631
|
+
dnsFullName(reverseArpa(address)),
|
|
632
|
+
"PTR",
|
|
633
|
+
dnsFullName(domainName)
|
|
634
|
+
)
|
|
635
|
+
);
|
|
636
|
+
}
|
|
620
637
|
}
|
|
621
638
|
}
|
|
622
639
|
}
|
|
@@ -659,7 +676,7 @@ class bind_view extends bind_object {
|
|
|
659
676
|
function addressesStatement(prefix, objects, empty = false, indent = "") {
|
|
660
677
|
const body = asArray(objects).map(value => {
|
|
661
678
|
if (typeof value !== "string") {
|
|
662
|
-
if(value instanceof bind_key) {
|
|
679
|
+
if (value instanceof bind_key) {
|
|
663
680
|
return `key ${value.name}`;
|
|
664
681
|
}
|
|
665
682
|
return value.name ?? value.address;
|
|
@@ -794,7 +811,7 @@ export class bind extends CoreService {
|
|
|
794
811
|
async *preparePackages(dir) {
|
|
795
812
|
const packageData = await this.preparePackage(dir);
|
|
796
813
|
|
|
797
|
-
if(!packageData) {
|
|
814
|
+
if (!packageData) {
|
|
798
815
|
return;
|
|
799
816
|
}
|
|
800
817
|
|