diff --git a/CHANGELOG.md b/CHANGELOG.md index 8f62b2156c..c2b25f0cff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# 1.5.0 (2018-05-xx) +* (bluefox) Breaking changes: "*?\" are no more allowed in IDs +* (bluefox) the read file function was protected +* (bluefox) possible access rights problem was closed +* (bluefox) the user by changing of states and objects is logged +* (apollon77) the node10 testing was added + # 1.4.2 (2018-04-12) Main changes: add instance with desired number, Force using of socket.io 2.1.0, Bugfixes diff --git a/Gruntfile.js b/Gruntfile.js index e32978d088..7922ab8182 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -7,17 +7,16 @@ 'use strict'; function getAppName() { - var parts = __dirname.replace(/\\/g, '/').split('/'); + const parts = __dirname.replace(/\\/g, '/').split('/'); return parts[parts.length - 1].split('.')[0].toLowerCase(); } module.exports = function (grunt) { - var srcDir = __dirname + '/'; - var pkg = grunt.file.readJSON('package.json'); - var iopackage = grunt.file.readJSON('io-package.json'); - var appName = getAppName(); - + const srcDir = __dirname + '/'; + const pkg = grunt.file.readJSON('package.json'); + const iopackage = grunt.file.readJSON('io-package.json'); + const appName = getAppName(); // Project configuration. grunt.initConfig({ diff --git a/io-package.json b/io-package.json index c063c50592..f79dca65b7 100644 --- a/io-package.json +++ b/io-package.json @@ -1,7 +1,7 @@ { "common": { "name": "js-controller", - "version": "1.4.2", + "version": "1.5.0", "platform": "Javascript/Node.js", "controller": true, "title": "JS controller", @@ -17,6 +17,17 @@ "pl": "Kontroler JS" }, "news": { + "1.5.0": { + "en": "see CHANGELOG.md", + "de": "Sehe CHANGELOG.md", + "ru": "см. CHANGELOG.md", + "pt": "veja CHANGELOG.md", + "nl": "zie CHANGELOG.md", + "fr": "voir CHANGELOG.md", + "it": "vedi CHANGELOG.md", + "es": "ver CHANGELOG.md", + "pl": "zobacz CHANGELOG.md" + }, "1.4.2": { "en": "see CHANGELOG.md", "de": "Sehe CHANGELOG.md", diff --git a/lib/adapter.js b/lib/adapter.js index 09d054fb55..1618cf9928 100644 --- a/lib/adapter.js +++ b/lib/adapter.js @@ -775,7 +775,7 @@ function Adapter(options) { if (options.instance !== undefined) { initAdapter(options); } else - if (!config.isInstall && res && res.val === true) { + if (!config.isInstall && res && res.val === true && !config.forceIfDisabled) { logger.error(options.name + '.' + instance + ' already running'); process.exit(7); } else { @@ -1011,6 +1011,7 @@ function Adapter(options) { logger.warn(that.namespace + ' Do not use parent or children for ' + id); } if (!obj.from) obj.from = 'system.adapter.' + that.namespace; + if (!obj.user) obj.user = (options ? options.user : '') || 'system.user.admin'; if (!obj.ts) obj.ts = new Date().getTime(); that.objects.setObject(id, obj, options, callback); } else { @@ -1175,12 +1176,14 @@ function Adapter(options) { obj = extend(true, oldObj, obj); if (!obj.from) obj.from = 'system.adapter.' + that.namespace; + if (!obj.user) obj.user = (options ? options.user : '') || 'system.user.admin'; if (!obj.ts) obj.ts = new Date().getTime(); that.objects.setObject(id, obj, options, callback); }); } else { if (!obj.from) obj.from = 'system.adapter.' + that.namespace; + if (!obj.user) obj.user = (options ? options.user : '') || 'system.user.admin'; if (!obj.ts) obj.ts = new Date().getTime(); that.objects.extendObject(id, obj, options, callback); } @@ -1214,6 +1217,7 @@ function Adapter(options) { options = null; } if (!obj.from) obj.from = 'system.adapter.' + that.namespace; + if (!obj.user) obj.user = (options ? options.user : '') || 'system.user.admin'; if (!obj.ts) obj.ts = new Date().getTime(); that.objects.setObject(id, obj, options, callback); @@ -1274,12 +1278,14 @@ function Adapter(options) { obj = extend(true, oldObj, obj); if (!obj.from) obj.from = 'system.adapter.' + that.namespace; + if (!obj.user) obj.user = (options ? options.user : '') || 'system.user.admin'; if (!obj.ts) obj.ts = new Date().getTime(); that.objects.setObject(id, obj, callback); }); } else { if (!obj.from) obj.from = 'system.adapter.' + that.namespace; + if (!obj.user) obj.user = (options ? options.user : '') || 'system.user.admin'; if (!obj.ts) obj.ts = new Date().getTime(); that.objects.extendObject(id, obj, options, callback); @@ -1777,6 +1783,7 @@ function Adapter(options) { that.objects.getObject(id, options, function (err, obj) { if (!obj) { if (!object.from) object.from = 'system.adapter.' + that.namespace; + if (!object.user) object.user = (options ? options.user : '') || 'system.user.admin'; if (!object.ts) object.ts = new Date().getTime(); that.objects.setObject(id, object, callback); @@ -1798,6 +1805,7 @@ function Adapter(options) { that.objects.getObject(id, options, function (err, _obj) { if (!_obj) { if (!obj.from) obj.from = 'system.adapter.' + that.namespace; + if (!obj.user) obj.user = (options ? options.user : '') || 'system.user.admin'; if (!obj.ts) obj.ts = new Date().getTime(); that.objects.setObject(id, obj, callback); @@ -2112,6 +2120,7 @@ function Adapter(options) { if (pos === -1) { obj.common.members.push(objId); obj.from = 'system.adapter.' + that.namespace; + obj.user = (options ? options.user : '') || 'system.user.admin'; obj.ts = new Date().getTime(); that.objects.setObject(obj._id, obj, options, function (err) { @@ -2135,6 +2144,7 @@ function Adapter(options) { obj.common.members.push(objId); obj.from = 'system.adapter.' + that.namespace; + obj.user = (options ? options.user : '') || 'system.user.admin'; obj.ts = new Date().getTime(); that.objects.setObject(obj._id, obj, options, callback); @@ -2211,6 +2221,7 @@ function Adapter(options) { obj.common.members.splice(pos, 1); count++; obj.from = 'system.adapter.' + that.namespace; + obj.user = (options ? options.user : '') || 'system.user.admin'; obj.ts = new Date().getTime(); that.objects.setObject(obj._id, obj, options, function (err) { @@ -2586,6 +2597,7 @@ function Adapter(options) { if (pos === -1) { obj.common.members.push(objId); obj.from = 'system.adapter.' + that.namespace; + obj.user = (options ? options.user : '') || 'system.user.admin'; obj.ts = new Date().getTime(); that.objects.setObject(obj._id, obj, options, callback); } else if (callback) { @@ -2604,6 +2616,7 @@ function Adapter(options) { if (pos === -1) { obj.common.members.push(objId); obj.from = 'system.adapter.' + that.namespace; + obj.user = (options ? options.user : '') || 'system.user.admin'; obj.ts = new Date().getTime(); that.objects.setObject(obj._id, obj, callback); } else if (callback) { @@ -2697,6 +2710,7 @@ function Adapter(options) { obj.common.members.splice(pos, 1); count++; obj.from = 'system.adapter.' + that.namespace; + obj.user = (options ? options.user : '') || 'system.user.admin'; obj.ts = new Date().getTime(); that.objects.setObject(obj._id, obj, function (err) { if (!--count && callback) { @@ -3271,6 +3285,9 @@ function Adapter(options) { } else if (state.from !== undefined && state.from !== oldState.from) { differ = true; + } else + if (state.user !== undefined && state.user !== oldState.user) { + differ = true; } if (differ) { that.outputCount++; @@ -3658,6 +3675,8 @@ function Adapter(options) { } state.from = 'system.adapter.' + that.namespace; + state.user = (options ? options.user : '') || 'system.user.admin'; + if (options && options.user && options.user !== 'system.user.admin') { checkStates(id, options, 'setState', function (err) { if (err) { @@ -3795,6 +3814,7 @@ function Adapter(options) { } state.from = 'system.adapter.' + that.namespace; + state.user = (options ? options.user : '') || 'system.user.admin'; if (options && options.user && options.user !== 'system.user.admin') { checkStates(id, options, 'setState', function (err) { @@ -3870,6 +3890,7 @@ function Adapter(options) { } state.from = 'system.adapter.' + that.namespace; + state.user = (options ? options.user : '') || 'system.user.admin'; if (options && options.user && options.user !== 'system.user.admin') { checkStates(id, options, 'setState', function (err) { diff --git a/lib/objects/objectsInMemServer.js b/lib/objects/objectsInMemServer.js index 2f009e2e07..fba406edd3 100644 --- a/lib/objects/objectsInMemServer.js +++ b/lib/objects/objectsInMemServer.js @@ -2694,9 +2694,7 @@ function ObjectsInMemServer(settings) { if (objects[id]) { if (objects[id].common && objects[id].common.dontDelete) { if (typeof callback === 'function') { - setImmediate(function () { - callback('Object is marked as non deletable'); - }); + setImmediate(callback, 'Object is marked as non deletable'); } return; } diff --git a/package.json b/package.json index 2c3962d28e..0d0988f606 100644 --- a/package.json +++ b/package.json @@ -1,14 +1,14 @@ { "name": "iobroker.js-controller", - "version": "1.4.2", + "version": "1.5.0", "engines": { "node": ">=4" }, "optionalDependencies": { "redis": "^2.8.0", - "greenlock": "^2.1.19", + "greenlock": "^2.2.7", "le-challenge-fs": "^2.0.8", - "le-sni-auto": "^2.1.1", + "le-sni-auto": "^2.1.5", "winston-syslog": "^1.2.6" }, "bin": { @@ -32,8 +32,8 @@ "semver": "^5.5.0", "socket.io": "~2.1.0", "socket.io-client": "~2.1.0", - "tar": "^4.4.1", - "winston": "^2.4.1", + "tar": "^4.4.2", + "winston": "^2.4.2", "winston-daily-rotate-file": "^1.7.2", "yargs": "^11.0.0" }, @@ -48,7 +48,7 @@ "grunt-jsdoc": "^2.1.0", "grunt-replace": "^1.0.1", "istanbul": "^0.4.5", - "mocha": "^5.0.1" + "mocha": "^5.1.1" }, "homepage": "http://www.iobroker.com", "description": "...domesticate the Internet of Things",