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 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.1",
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: {
@@ -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
- let reverseZone;
558
+ if (this.hasBaseRecords) {
559
+ let reverseZone;
510
560
 
511
- if (this.hasReverse && na.subnet.prefix) {
512
- let subnet;
561
+ if (this.hasReverse && na.subnet.prefix) {
562
+ let subnet;
513
563
 
514
- for (const s of subnets) {
515
- if (s.isIncluded(na.subnet)) {
516
- subnet = s;
564
+ for (const s of subnets) {
565
+ if (s.isIncluded(na.subnet)) {
566
+ subnet = s;
567
+ }
517
568
  }
518
- }
519
569
 
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
-
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.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,
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
- zone.foreign = true;
586
+ if (!hosts.has(host)) {
587
+ hosts.add(host);
562
588
 
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
- )
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
- if (wildcard) {
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
- const sm = new Map();
639
+ if (this.hasBaseRecords) {
640
+ const sm = new Map();
587
641
 
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);
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
- for (const r of sm.values()) {
598
- zone.records.add(r);
651
+ for (const r of sm.values()) {
652
+ zone.records.add(r);
653
+ }
599
654
  }
600
655
  }
601
656
 
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(
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(reverseArpa(address)),
616
- "PTR",
617
- dnsFullName(domainName)
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