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 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-1)
52
+ * [Parameters](#parameters)
54
53
  * [serviceEndpoints](#serviceendpoints)
55
- * [Parameters](#parameters-2)
54
+ * [Parameters](#parameters-1)
56
55
  * [attributeIterator](#attributeiterator)
57
- * [Parameters](#parameters-3)
56
+ * [Parameters](#parameters-2)
58
57
  * [getAttributes](#getattributes)
59
- * [Parameters](#parameters-4)
58
+ * [Parameters](#parameters-3)
60
59
  * [property](#property)
61
- * [Parameters](#parameters-5)
60
+ * [Parameters](#parameters-4)
62
61
  * [attribute](#attribute)
63
- * [Parameters](#parameters-6)
62
+ * [Parameters](#parameters-5)
64
63
  * [walkDirections](#walkdirections)
65
- * [Parameters](#parameters-7)
64
+ * [Parameters](#parameters-6)
66
65
  * [mapFromDirections](#mapfromdirections)
67
- * [Parameters](#parameters-8)
66
+ * [Parameters](#parameters-7)
68
67
  * [unionFromDirections](#unionfromdirections)
69
- * [Parameters](#parameters-9)
68
+ * [Parameters](#parameters-8)
70
69
  * [expand](#expand)
71
- * [Parameters](#parameters-10)
70
+ * [Parameters](#parameters-9)
72
71
  * [expression](#expression)
73
- * [Parameters](#parameters-11)
72
+ * [Parameters](#parameters-10)
74
73
  * [isTemplate](#istemplate-1)
75
74
  * [PortEndpoint](#portendpoint)
76
- * [Parameters](#parameters-12)
75
+ * [Parameters](#parameters-11)
77
76
  * [port](#port)
78
77
  * [socketAddress](#socketaddress)
79
78
  * [HTTPEndpoint](#httpendpoint)
80
- * [Parameters](#parameters-13)
79
+ * [Parameters](#parameters-12)
81
80
  * [port](#port-1)
82
81
  * [domainNames](#domainnames)
83
82
  * [InitializationContext](#initializationcontext)
84
- * [Parameters](#parameters-14)
83
+ * [Parameters](#parameters-13)
85
84
  * [SkeletonNetworkInterface](#skeletonnetworkinterface)
86
85
  * [networkAddresses](#networkaddresses)
87
- * [Parameters](#parameters-15)
86
+ * [Parameters](#parameters-14)
88
87
  * [zones](#zones)
89
88
  * [addressesStatement](#addressesstatement)
90
- * [Parameters](#parameters-16)
89
+ * [Parameters](#parameters-15)
91
90
  * [SystemdJournalRemoteService](#systemdjournalremoteservice)
92
91
  * [Properties](#properties)
93
92
  * [systemdConfigs](#systemdconfigs)
94
- * [Parameters](#parameters-17)
93
+ * [Parameters](#parameters-16)
95
94
  * [SystemdJournalUploadService](#systemdjournaluploadservice)
96
95
  * [Properties](#properties-1)
97
96
  * [systemdConfigs](#systemdconfigs-1)
98
- * [Parameters](#parameters-18)
97
+ * [Parameters](#parameters-17)
99
98
  * [NetworkAddress](#networkaddress)
100
- * [Parameters](#parameters-19)
99
+ * [Parameters](#parameters-18)
101
100
  * [subnet](#subnet)
102
101
  * [networkInterface](#networkinterface)
103
102
  * [address](#address)
104
103
  * [addresses](#addresses)
105
- * [Parameters](#parameters-20)
104
+ * [Parameters](#parameters-19)
106
105
  * [cidrAddresses](#cidraddresses)
107
- * [Parameters](#parameters-21)
106
+ * [Parameters](#parameters-20)
108
107
  * [families](#families)
109
108
  * [secretName](#secretname)
110
109
  * [directHosts](#directhosts)
111
110
  * [subnetForAddress](#subnetforaddress)
112
- * [Parameters](#parameters-22)
111
+ * [Parameters](#parameters-21)
113
112
  * [ServiceType](#servicetype)
114
113
  * [Properties](#properties-2)
115
114
  * [serviceTypeEndpoints](#servicetypeendpoints)
116
- * [Parameters](#parameters-23)
115
+ * [Parameters](#parameters-22)
117
116
  * [domainName](#domainname)
118
- * [Parameters](#parameters-24)
117
+ * [Parameters](#parameters-23)
119
118
  * [domainFromDominName](#domainfromdominname)
120
- * [Parameters](#parameters-25)
119
+ * [Parameters](#parameters-24)
121
120
  * [sectionLines](#sectionlines)
122
- * [Parameters](#parameters-26)
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
- ### templateContentAttributes
138
+ ### templateContent
140
139
 
141
140
  #### Parameters
142
141
 
143
- * `dir` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** 
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>**&#x20;
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)>**&#x20;
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)>**&#x20;
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)>**&#x20;
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)>**&#x20;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pmcf",
3
- "version": "6.47.0",
3
+ "version": "6.48.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -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
- // content.push(`update-policy { grant updates zonesub ANY; };`);
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
- let reverseZone;
518
+ if (this.hasBaseRecords) {
519
+ let reverseZone;
510
520
 
511
- if (this.hasReverse && na.subnet.prefix) {
512
- let subnet;
521
+ if (this.hasReverse && na.subnet.prefix) {
522
+ let subnet;
513
523
 
514
- for (const s of subnets) {
515
- if (s.isIncluded(na.subnet)) {
516
- subnet = s;
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
- for (let foreignDomain of host.foreignDomainNames) {
539
- const wildcard = foreignDomain.startsWith("*.");
540
- if (wildcard) {
541
- foreignDomain = foreignDomain.substring(2);
530
+ if (!subnet) {
531
+ subnet = na.subnet;
532
+ subnets.add(subnet);
542
533
  }
543
534
 
544
- this.foreignDomains.add(foreignDomain);
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
- zone.foreign = true;
546
+ if (!hosts.has(host)) {
547
+ hosts.add(host);
562
548
 
563
- for (const na of host.networkAddresses(
564
- na => na.networkInterface.kind !== "loopback"
565
- )) {
566
- zone.records.add(
567
- DNSRecord(
568
- "@",
569
- dnsRecordTypeForAddressFamily(na.family),
570
- na.address
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
- if (wildcard) {
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
- const sm = new Map();
599
+ if (this.hasBaseRecords) {
600
+ const sm = new Map();
587
601
 
588
- for (const service of host.services.values()) {
589
- for (const record of service.dnsRecordsForDomainName(
590
- host.domainName,
591
- this.hasSVRRecords
592
- )) {
593
- sm.set(record.toString(), record);
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
- for (const r of sm.values()) {
598
- zone.records.add(r);
611
+ for (const r of sm.values()) {
612
+ zone.records.add(r);
613
+ }
599
614
  }
600
615
  }
601
616
 
602
- for (const domainName of na.domainNames) {
603
- if (domainName.endsWith(domain) && domainName[0] !== "*") {
604
- zone.records.add(
605
- DNSRecord(
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(reverseArpa(address)),
616
- "PTR",
617
- dnsFullName(domainName)
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