p3x-systemd-manager 2026.4.108 → 2026.4.113
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 +3 -3
- package/package.json +6 -6
- package/src/notifier.js +45 -41
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
# ⌚ SystemD Manager, watchdog, notifier and service v2026.4.
|
|
9
|
+
# ⌚ SystemD Manager, watchdog, notifier and service v2026.4.113
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
### 🛠️ Built on NodeJs version
|
|
23
23
|
|
|
24
24
|
```txt
|
|
25
|
-
v24.
|
|
25
|
+
v24.16.0
|
|
26
26
|
```
|
|
27
27
|
|
|
28
28
|
|
|
@@ -352,7 +352,7 @@ All my domains, including [patrikx3.com](https://patrikx3.com), [corifeus.eu](ht
|
|
|
352
352
|
**🚨 Important Changes:** Any breaking changes are prominently noted in the readme to keep you informed.
|
|
353
353
|
|
|
354
354
|
|
|
355
|
-
[**P3X-SYSTEMD-MANAGER**](https://corifeus.com/systemd-manager) Build v2026.4.
|
|
355
|
+
[**P3X-SYSTEMD-MANAGER**](https://corifeus.com/systemd-manager) Build v2026.4.113
|
|
356
356
|
|
|
357
357
|
[](https://www.npmjs.com/package/p3x-systemd-manager) [](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QZVM4V6HVZJW6) [](https://www.patrikx3.com/en/front/contact) [](https://www.facebook.com/corifeus.software)
|
|
358
358
|
|
package/package.json
CHANGED
|
@@ -6,12 +6,12 @@
|
|
|
6
6
|
"publish": true,
|
|
7
7
|
"type": "p3x",
|
|
8
8
|
"code": "Breaking",
|
|
9
|
-
"nodejs": "v24.
|
|
9
|
+
"nodejs": "v24.16.0",
|
|
10
10
|
"opencollective": false,
|
|
11
11
|
"reponame": "systemd-manager",
|
|
12
12
|
"build": true
|
|
13
13
|
},
|
|
14
|
-
"version": "2026.4.
|
|
14
|
+
"version": "2026.4.113",
|
|
15
15
|
"description": "⌚ SystemD Manager, watchdog, notifier and service",
|
|
16
16
|
"main": "index.js",
|
|
17
17
|
"saved-dependencies": {
|
|
@@ -20,19 +20,19 @@
|
|
|
20
20
|
"fix-repo": "git+https://github.com/p3x-robot/node-dbus.git"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"corifeus-utils": "^2026.4.
|
|
23
|
+
"corifeus-utils": "^2026.4.140",
|
|
24
24
|
"dbus": "^1.0.7",
|
|
25
25
|
"lodash": "^4.18.1",
|
|
26
26
|
"millisecond": "^0.1.2",
|
|
27
27
|
"moment": "^2.30.1",
|
|
28
|
-
"nan": "^2.
|
|
29
|
-
"nodemailer": "^8.0.
|
|
28
|
+
"nan": "^2.27.0",
|
|
29
|
+
"nodemailer": "^8.0.10"
|
|
30
30
|
},
|
|
31
31
|
"resolutions": {
|
|
32
32
|
"nan": "2.23.0"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
|
-
"corifeus-builder": "^2026.4.
|
|
35
|
+
"corifeus-builder": "^2026.4.161"
|
|
36
36
|
},
|
|
37
37
|
"scripts": {
|
|
38
38
|
"test": "grunt",
|
package/src/notifier.js
CHANGED
|
@@ -41,51 +41,55 @@ module.exports = async (settings) => {
|
|
|
41
41
|
const propertyInterfaces = [];
|
|
42
42
|
let unitDictionary = await managerInterface.listUnits;
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
if (!trigger) {
|
|
71
|
-
return;
|
|
44
|
+
// Sequential: forEach(async) was firing every getUnit / props / interface
|
|
45
|
+
// factory call in parallel, which on Reloading bursts blew past
|
|
46
|
+
// dbus-daemon's max_replies_per_connection=128 cap and produced ~90+
|
|
47
|
+
// "max replies reached" warnings per burst.
|
|
48
|
+
for (const unitId of Object.keys(unitDictionary)) {
|
|
49
|
+
if (!filter.isValid(unitId)) {
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
const unit = await managerInterface.getUnit(unitId);
|
|
53
|
+
const properties = await unit.props;
|
|
54
|
+
const propertyInterface = await interfaces.properties.factory(unit.node, settings);
|
|
55
|
+
|
|
56
|
+
/*
|
|
57
|
+
let lastSubStates = {};
|
|
58
|
+
Object.keys(settings.filter.status).forEach((state) => {
|
|
59
|
+
lastSubStates[state] = properties[state];
|
|
60
|
+
});
|
|
61
|
+
*/
|
|
62
|
+
propertyInterfaces.push(propertyInterface);
|
|
63
|
+
|
|
64
|
+
propertyInterface.on('PropertiesChanged', async function (changedInterface, props, names) {
|
|
65
|
+
if (changedInterface === interfaces.unit.interfaceName) {
|
|
66
|
+
let trigger = false;
|
|
67
|
+
Object.keys(settings.filter.trigger).forEach((state) => {
|
|
68
|
+
if (settings.filter.trigger[state].includes(props[state])) {
|
|
69
|
+
trigger = true;
|
|
72
70
|
}
|
|
73
71
|
/*
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
})
|
|
72
|
+
if (props[state] !== lastSubStates[state]) {
|
|
73
|
+
}
|
|
77
74
|
*/
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
detailed: await unit.props
|
|
82
|
-
});
|
|
83
|
-
|
|
75
|
+
})
|
|
76
|
+
if (!trigger) {
|
|
77
|
+
return;
|
|
84
78
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
79
|
+
/*
|
|
80
|
+
Object.keys(settings.filter.trigger).forEach((state) => {
|
|
81
|
+
lastSubStates[state] = props[state];
|
|
82
|
+
})
|
|
83
|
+
*/
|
|
84
|
+
|
|
85
|
+
mail.send(unitId, {
|
|
86
|
+
summary: await unit.summary,
|
|
87
|
+
detailed: await unit.props
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
}
|
|
91
|
+
})
|
|
92
|
+
}
|
|
89
93
|
return () => {
|
|
90
94
|
propertyInterfaces.forEach((propertyInterface) => {
|
|
91
95
|
propertyInterface.manager.removeAllListeners('PropertiesChanged');
|