Skip to content

Commit ffa2843

Browse files
authored
Merge pull request #574 from OpenHausIO/dev
v3.2.2
2 parents 1910373 + 71ffabe commit ffa2843

File tree

7 files changed

+91
-13
lines changed

7 files changed

+91
-13
lines changed

components/devices/class.interface.js

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,18 @@ module.exports = class Interface {
222222

223223
}
224224

225+
["close", "end", "error"].forEach((event) => {
226+
stream.on(event, (...args) => {
227+
socket.emit(event, ...args);
228+
});
229+
});
230+
231+
stream.once("destroy", () => {
232+
writable.destory();
233+
readable.destroy();
234+
socket.destory();
235+
});
236+
225237
stream.once("close", () => {
226238

227239
// feedback
@@ -236,9 +248,11 @@ module.exports = class Interface {
236248
// on what instance is the error thrown?
237249

238250
// destroy everything
239-
socket.destroy();
240-
readable.destroy();
241-
writable.destroy();
251+
//socket.destroy();
252+
//readable.destroy();
253+
//writable.destroy();
254+
//socket.end();
255+
//socket.emit("close");
242256

243257
});
244258

@@ -250,6 +264,7 @@ module.exports = class Interface {
250264

251265
process.nextTick(() => {
252266

267+
//socket.emit("connect")?
253268
socket.emit("open");
254269

255270
writable.pipe(stream);

components/endpoints/class.command.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -329,11 +329,16 @@ module.exports = class Command {
329329

330330
if (abort) {
331331
timer(abort, false);
332+
return;
332333
}
333334

334335
try {
335336
params = params.map((obj) => {
336337

338+
if (this.params.length === 0) {
339+
return;
340+
}
341+
337342
let param = this.params.find((param) => {
338343
return param.key === obj.key;
339344
});
@@ -347,7 +352,7 @@ module.exports = class Command {
347352
});
348353
} catch (err) {
349354

350-
logger.warn(err, `Passed params to command "${this.name}" are invalid`, params);
355+
logger.warn(err, `Passed params on endpoint to command "${this.name}" (${this._id}) are invalid`, params);
351356

352357
timer(err, false);
353358
return;

components/store/class.store.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,21 @@ module.exports = class Store extends Item {
7474
//item: Joi.string().allow(null).default(null),
7575
uuid: Joi.string().default(() => {
7676
return uuid.v4();
77+
}).custom((value) => {
78+
79+
if (process.env.NODE_ENV === "development") {
80+
81+
let { logger } = Store.scope;
82+
83+
let msg = `Property .uuid is deprecated and will be removed in furhter version.\r\n`;
84+
msg += `Use the .labels array instead as custom fields for identifing items.`;
85+
86+
logger.warn(msg);
87+
88+
}
89+
90+
return value;
91+
7792
})
7893
});
7994
}

components/vault/class.secret.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ class Secret {
100100
encrypt(text) {
101101

102102
if (!text) {
103-
let err = new RangeError(`Value need to be set before encrypting, got: ${text}!`);
103+
let err = new RangeError(`Value for secret "${this.name}" needs to be set before encrypting, got: ${text}!`);
104104
err.field = this.key;
105105
throw err;
106106
}
@@ -122,7 +122,7 @@ class Secret {
122122
decrypt() {
123123

124124
if (!this.value) {
125-
let err = new RangeError(`Value need to be set before decrypting, got: ${this.value}!`);
125+
let err = new RangeError(`Value for secret "${this.name}" needs to be set before decrypting, got: ${this.value}!`);
126126
err.field = this.key;
127127
throw err;
128128
}

components/vault/class.vault.js

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,22 @@ module.exports = class Vault extends Item {
8585
return String(new mongodb.ObjectId());
8686
}),
8787
name: Joi.string().required(),
88-
identifier: Joi.string().required(), // TODO: remove
88+
identifier: Joi.string().allow(null).default(null).custom((value) => {
89+
90+
if (process.env.NODE_ENV === "development") {
91+
92+
let { logger } = Vault.scope;
93+
94+
let msg = `Property .identifier is deprecated and will be removed in furhter version.\r\n`;
95+
msg += `Use the .labels array instead as custom fields for identifing items.`;
96+
97+
logger.warn(msg);
98+
99+
}
100+
101+
return value;
102+
103+
}), // TODO: remove
89104
description: Joi.string().allow(null).default(null),
90105
secrets: Joi.array().items(Secret.schema()).default([])
91106
});
@@ -137,9 +152,27 @@ module.exports = class Vault extends Item {
137152
* @returns {Object} Key = Secret key property, Value = decrypted value
138153
*/
139154
decrypt() {
140-
return this.secrets.reduce((prev, cur) => {
141-
prev[cur.key] = cur.decrypt();
142-
return prev;
155+
return this.secrets.reduce((obj, secret) => {
156+
157+
try {
158+
159+
// try to decrypt secret
160+
// this can fail when no vaule is set
161+
// e.g. default value = null,
162+
// see https://github.com/OpenHausIO/backend/issues/568
163+
obj[secret.key] = secret.decrypt();
164+
165+
} catch (err) {
166+
167+
let { logger } = Vault.scope;
168+
logger.warn(err, `Could not decrypt secret "${secret.name}"`);
169+
170+
obj[secret.key] = null;
171+
172+
}
173+
174+
return obj;
175+
143176
}, {});
144177
}
145178

helper/request.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ const promisify = require("./promisify.js");
1414
*/
1515
function perform(uri, options, cb) {
1616

17-
if(!options && !cb){
17+
if (!options && !cb) {
1818
options = {};
19-
cb = () => {};
19+
cb = () => { };
2020
}
2121

2222
let { protocol } = new url.URL(uri);
@@ -69,6 +69,9 @@ function perform(uri, options, cb) {
6969

7070

7171
request.on("error", (err) => {
72+
//console.log("Logger in helper/request", err);
73+
// this event listener does fire, but cb(err) call does nothing
74+
// why in the first place does a 1:1 forwarding of events end in a abort error?
7275
cb(err);
7376
});
7477

routes/router.api.devices.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,14 @@ module.exports = (app, router) => {
146146
// no clue why closed, cleanup anyway
147147
// TODO: check code and decide if error or success closing
148148
//stream.emit("close"); // desotroy() emit close event(!|?)
149-
stream.destroy();
149+
if (code === 1005 || code === 1000) {
150+
console.log("end normaly");
151+
stream.end();
152+
//stream.emit("end");
153+
} else {
154+
//console.log("End destory");
155+
stream.destroy();
156+
}
150157

151158
}
152159
});

0 commit comments

Comments
 (0)