pmcf 6.60.13 → 6.61.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
@@ -81,30 +81,30 @@ generates config packages for:
81
81
  * [domainNames](#domainnames)
82
82
  * [InitializationContext](#initializationcontext)
83
83
  * [Parameters](#parameters-14)
84
+ * [SkeletonNetworkInterface](#skeletonnetworkinterface)
85
+ * [networkAddresses](#networkaddresses)
86
+ * [Parameters](#parameters-15)
84
87
  * [Interface](#interface)
85
88
  * [zones](#zones)
86
89
  * [addressesStatement](#addressesstatement)
87
- * [Parameters](#parameters-15)
90
+ * [Parameters](#parameters-16)
88
91
  * [SystemdJournalRemoteService](#systemdjournalremoteservice)
89
92
  * [Properties](#properties)
90
93
  * [systemdConfigs](#systemdconfigs)
91
- * [Parameters](#parameters-16)
94
+ * [Parameters](#parameters-17)
92
95
  * [SystemdJournalUploadService](#systemdjournaluploadservice)
93
96
  * [Properties](#properties-1)
94
97
  * [systemdConfigs](#systemdconfigs-1)
95
- * [Parameters](#parameters-17)
98
+ * [Parameters](#parameters-18)
96
99
  * [NetworkAddress](#networkaddress)
97
- * [Parameters](#parameters-18)
100
+ * [Parameters](#parameters-19)
98
101
  * [subnet](#subnet)
99
102
  * [networkInterface](#networkinterface)
100
103
  * [address](#address)
101
104
  * [addresses](#addresses)
102
- * [Parameters](#parameters-19)
103
- * [cidrAddresses](#cidraddresses)
104
105
  * [Parameters](#parameters-20)
105
- * [SkeletonNetworkInterface](#skeletonnetworkinterface)
106
- * [networkAddresses](#networkaddresses)
107
- * [Parameters](#parameters-21)
106
+ * [cidrAddresses](#cidraddresses)
107
+ * [Parameters](#parameters-21)
108
108
  * [families](#families)
109
109
  * [secretName](#secretname)
110
110
  * [subnetForAddress](#subnetforaddress)
@@ -307,6 +307,18 @@ Keeps track of all in flight object creations and loose ends during config initi
307
307
 
308
308
  * `directory` (optional, default `"/"`)
309
309
 
310
+ ## SkeletonNetworkInterface
311
+
312
+ **Extends Interface**
313
+
314
+ ### networkAddresses
315
+
316
+ #### Parameters
317
+
318
+ * `filter` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** (optional, default `n=>true`)
319
+
320
+ Returns **Iterable<[NetworkAddress](#networkaddress)>**&#x20;
321
+
310
322
  ## Interface
311
323
 
312
324
  **Extends ServiceOwner**
@@ -400,18 +412,6 @@ Returns **Iterable<[string](https://developer.mozilla.org/docs/Web/JavaScript/Re
400
412
 
401
413
  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;
402
414
 
403
- ## SkeletonNetworkInterface
404
-
405
- **Extends Interface**
406
-
407
- ### networkAddresses
408
-
409
- #### Parameters
410
-
411
- * `filter` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** (optional, default `n=>true`)
412
-
413
- Returns **Iterable<[NetworkAddress](#networkaddress)>**&#x20;
414
-
415
415
  ## families
416
416
 
417
417
  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.60.13",
3
+ "version": "6.61.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -458,3 +458,7 @@ export function endpointAddresses(entries) {
458
458
  )
459
459
  .map(e => e.networkAddress.address);
460
460
  }
461
+
462
+ export function systemdCredentialFileName(serviceName, credentialName) {
463
+ return `/run/credentials/${serviceName}/${credentialName}`;
464
+ }
@@ -21,7 +21,9 @@ import {
21
21
  CoreService,
22
22
  Endpoint,
23
23
  sortDescendingByPriority,
24
- bind_key
24
+ bind_key,
25
+ systemdCredentialFileName,
26
+ credential
25
27
  } from "pmcf";
26
28
  import { FAMILY_UNIX, PROTOCOL_TCP } from "../constants.mjs";
27
29
  import { writeLines } from "../utils.mjs";
@@ -41,6 +43,8 @@ class kea_subnet extends Subnet {
41
43
  pool = [];
42
44
  }
43
45
 
46
+ const SCOPE_KEA = "kea";
47
+
44
48
  export class kea extends CoreService {
45
49
  static attributes = {
46
50
  subnets: {
@@ -69,31 +73,31 @@ export class kea extends CoreService {
69
73
  "ddns-send-updates": {
70
74
  ...boolean_attribute_writable_true,
71
75
  name: "ddns-send-updates",
72
- configurable: true
76
+ scope: SCOPE_KEA
73
77
  },
74
78
  "renew-timer": {
75
79
  ...number_attribute_writable,
76
80
  name: "renew-timer",
77
- configurable: true,
81
+ scope: SCOPE_KEA,
78
82
  default: 900
79
83
  },
80
84
  "rebind-timer": {
81
85
  ...number_attribute_writable,
82
86
  name: "rebind-timer",
83
- configurable: true,
87
+ scope: SCOPE_KEA,
84
88
  default: 1800
85
89
  },
86
90
  "valid-lifetime": {
87
91
  ...number_attribute_writable,
88
92
  name: "valid-lifetime",
89
93
  mandatory: true,
90
- configurable: true,
94
+ scope: SCOPE_KEA,
91
95
  default: 86400
92
96
  },
93
97
  "ddns-conflict-resolution-mode": {
94
98
  ...string_attribute_writable,
95
99
  name: "ddns-conflict-resolution-mode",
96
- configurable: true
100
+ scope: SCOPE_KEA
97
101
  //values: new Set(["check-exists-with-dhcid","no-check-with-dhcid"])
98
102
  }
99
103
  };
@@ -191,6 +195,18 @@ export class kea extends CoreService {
191
195
 
192
196
  subnets = new Map();
193
197
 
198
+ get credentials() {
199
+ //TODO maybe introduce synthetic extends
200
+ asArray(this.keys).forEach(key => {
201
+ const cred = new credential(this);
202
+ cred.name = `key.${key.name}.tsig`;
203
+ cred._tags.add("kea-dhcp-ddns.service");
204
+ this._credentials.set(cred.name, cred);
205
+ });
206
+
207
+ return super.credentials;
208
+ }
209
+
194
210
  listenInterfaces(family) {
195
211
  return this.endpoints(
196
212
  endpoint =>
@@ -299,7 +315,8 @@ export class kea extends CoreService {
299
315
 
300
316
  for (const [path, attribute] of extendingAttributeIterator(
301
317
  this.constructor,
302
- attribute => attribute.configurable && this[attribute.name] !== undefined
318
+ attribute =>
319
+ attribute.scope === SCOPE_KEA && this[attribute.name] !== undefined
303
320
  )) {
304
321
  const name = path.join(".");
305
322
  cfg[name] = this[name];
@@ -358,7 +375,10 @@ export class kea extends CoreService {
358
375
  return {
359
376
  name: key.name,
360
377
  algorithm: key.algorithm,
361
- "secret-file": `/run/credentials/kea-dhcp-ddns.service/kea.${key.name}.tsig`
378
+ "secret-file": systemdCredentialFileName(
379
+ "kea-dhcp-ddns.service",
380
+ `key.${key.name}.tsig`
381
+ )
362
382
  };
363
383
  }),
364
384
  "forward-ddns": {