@iobroker/adapter-react-v5 2.0.0 → 2.1.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/Connection.js +4 -1
- package/Connection.js.map +1 -1
- package/README.md +3 -0
- package/package.json +1 -1
package/Connection.js
CHANGED
|
@@ -1746,7 +1746,10 @@ var Connection = /*#__PURE__*/function () {
|
|
|
1746
1746
|
if (!base64) {
|
|
1747
1747
|
_this31._socket.emit('readFile', adapter, fileName, function (err, data, type) {
|
|
1748
1748
|
//@ts-ignore
|
|
1749
|
-
err ? reject(err) : resolve(
|
|
1749
|
+
err ? reject(err) : resolve({
|
|
1750
|
+
data: data,
|
|
1751
|
+
type: type
|
|
1752
|
+
});
|
|
1750
1753
|
});
|
|
1751
1754
|
} else {
|
|
1752
1755
|
_this31._socket.emit('readFile64', adapter, fileName, base64, function (err, data) {
|
package/Connection.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Connection.js"],"names":["PROGRESS","CONNECTING","CONNECTED","OBJECTS_LOADED","READY","PERMISSION_ERROR","NOT_CONNECTED","TIMEOUT_FOR_ADMIN4","ERRORS","fixAdminUI","obj","common","adminUI","noConfig","config","jsonConfig","materialize","jsonCustom","custom","supportCustoms","materializeTab","adminTab","tab","console","debug","_id","replace","JSON","stringify","Connection","props","protocol","window","location","host","hostname","autoSubscribes","autoSubscribeLog","port","isWeb","ioTimeout","Math","max","cmdTimeout","doNotLoadAllObjects","undefined","doNotLoadACL","states","objects","acl","firstConnect","waitForRestart","systemLang","connected","_waitForFirstConnection","Promise","resolve","_waitForFirstConnectionResolve","statesSubscribes","objectsSubscribes","onProgress","onError","err","error","loaded","loadTimer","loadCounter","admin5only","onConnectionHandlers","onLogHandlers","_promises","startSocket","io","registerSocketOnLoad","scriptLoadCounter","setTimeout","alert","_socket","socketUrl","parts","split","includes","url","connect","query","name","timeout","on","noTimeout","getVersion","then","info","version","major","minor","patch","v","parseInt","_authTimer","onPreConnect","emit","isOk","isSecure","reload","_subscribe","forEach","cb","subscribed","authenticate","message","onLog","_err","toString","operation","type","id","objectChange","state","stateChange","text","onCmdStdoutHandler","onCmdStderrHandler","exitCode","onCmdExitHandler","clearTimeout","onConnect","_getUserPermissions","vendorPrefix","getCompactSystemConfig","getSystemConfig","data","systemConfig","language","navigator","userLanguage","onLanguage","getObjects","onReady","e","search","pathname","hash","binary","reg","indexOf","RegExp","cbs","push","getBinaryState","base64","Object","keys","pos","splice","length","oldObj","changed","_rev","test","onObjectChange","task","hasOwnProperty","disableProgressUpdate","reject","res","STATES_LOADED","val","update","isEnable","isEnabled","maintenance","parse","from","user","ts","adapter","getObjectView","items","map","instances","adapters","objs","pop","oldId","newId","setObject","delObject","_renameGroups","newName","getGroups","groups","groupsToRename","filter","group","startsWith","substring","find","instance","command","result","handler","_enum","startkey","endkey","_res","i","rows","value","start","end","cert","getObject","certs","certificates","c","_cert","toLowerCase","m","t","trim","linesNumber","lines","files","fileName","btoa","Uint8Array","reduce","byte","String","fromCharCode","oldName","folderName","hosts","doc","item","users","timeoutMs","args","repo","installed","cmd","cmdId","feature","features","checkFeatureSupported","typeOfDiag","pattern","options","values","stepIgnore","sessionId","password","address","ipOrHostName","ip","IPs4","family","IPs6","hardware","networkInterfaces","eth","num","encryptedText","serverName","match","webName","log","filename","entries","exists","category","notifications","isStrict","controller","AbortController","abort","fetch","signal","json","ratings","currentInstance","namespace","compactAdapters","compactInstances","installedCompact","systemConfigCommon","repoCompact","hostsCompact","uuid","adapterName","PropTypes","func"],"mappings":"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","sourcesContent":["/**\n * Copyright 2020-2021, bluefox <dogafox@gmail.com>\n *\n * MIT License\n *\n **/\nimport PropTypes from 'prop-types';\n\n/** Possible progress states. */\nexport const PROGRESS = {\n /** The socket is connecting. */\n CONNECTING: 0,\n /** The socket is successfully connected. */\n CONNECTED: 1,\n /** All objects are loaded. */\n OBJECTS_LOADED: 2,\n /** The socket is ready for use. */\n READY: 3\n};\n\nconst PERMISSION_ERROR = 'permissionError';\nconst NOT_CONNECTED = 'notConnectedError';\nconst TIMEOUT_FOR_ADMIN4 = 1300;\n\nexport const ERRORS = {\n PERMISSION_ERROR,\n NOT_CONNECTED\n};\n\nfunction fixAdminUI(obj) {\n if (obj && obj.common && !obj.common.adminUI) {\n if (obj.common.noConfig) {\n obj.common.adminUI = obj.common.adminUI || {};\n obj.common.adminUI.config = 'none';\n } else if (obj.common.jsonConfig) {\n obj.common.adminUI = obj.common.adminUI || {};\n obj.common.adminUI.config = 'json';\n } else if (obj.common.materialize) {\n obj.common.adminUI = obj.common.adminUI || {};\n obj.common.adminUI.config = 'materialize';\n } else {\n obj.common.adminUI = obj.common.adminUI || {};\n obj.common.adminUI.config = 'html';\n }\n\n if (obj.common.jsonCustom) {\n obj.common.adminUI = obj.common.adminUI || {};\n obj.common.adminUI.custom = 'json';\n } else if (obj.common.supportCustoms) {\n obj.common.adminUI = obj.common.adminUI || {};\n obj.common.adminUI.custom = 'json';\n }\n\n if (obj.common.materializeTab && obj.common.adminTab) {\n obj.common.adminUI = obj.common.adminUI || {};\n obj.common.adminUI.tab = 'materialize';\n } else if (obj.common.adminTab) {\n obj.common.adminUI = obj.common.adminUI || {};\n obj.common.adminUI.tab = 'html';\n }\n\n obj.common.adminUI && console.debug(`Please add to \"${obj._id.replace(/\\.\\d+$/, '')}\" common.adminUI=${JSON.stringify(obj.common.adminUI)}`);\n }\n return obj;\n}\n\nclass Connection {\n /**\n * @param {import('./types').ConnectionProps} props\n */\n constructor(props) {\n props = props || { protocol: window.location.protocol, host: window.location.hostname };\n this.props = props;\n\n this.autoSubscribes = this.props.autoSubscribes || [];\n this.autoSubscribeLog = this.props.autoSubscribeLog;\n\n this.props.protocol = this.props.protocol || window.location.protocol;\n this.props.host = this.props.host || window.location.hostname;\n this.props.port = this.props.port || (window.location.port === '3000' ? (Connection.isWeb() ? 8082 : 8081) : window.location.port);\n this.props.ioTimeout = Math.max(this.props.ioTimeout || 20000, 20000);\n this.props.cmdTimeout = Math.max(this.props.cmdTimeout || 5000, 5000);\n\n // breaking change. Do not load all objects by default is true\n this.doNotLoadAllObjects = this.props.doNotLoadAllObjects === undefined ? true : this.props.doNotLoadAllObjects;\n this.doNotLoadACL = this.props.doNotLoadACL === undefined ? true : this.props.doNotLoadACL;\n\n /** @type {Record<string, ioBroker.State>} */\n this.states = {};\n this.objects = null;\n this.acl = null;\n this.firstConnect = true;\n this.waitForRestart = false;\n /** @type {ioBroker.Languages} */\n this.systemLang = 'en';\n this.connected = false;\n this._waitForFirstConnection = new Promise(resolve => { this._waitForFirstConnectionResolve = resolve });\n\n /** @type {Record<string, { reg: RegExp; cbs: ioBroker.StateChangeHandler[]}>} */\n this.statesSubscribes = {}; // subscribe for states\n\n /** @type {Record<string, { reg: RegExp; cbs: import('./types').ObjectChangeHandler[]}>} */\n this.objectsSubscribes = {}; // subscribe for objects\n this.onProgress = this.props.onProgress || function () { };\n this.onError = this.props.onError || function (err) { console.error(err); };\n this.loaded = false;\n this.loadTimer = null;\n this.loadCounter = 0;\n this.admin5only = this.props.admin5only || false;\n\n /** @type {((connected: boolean) => void)[]} */\n this.onConnectionHandlers = [];\n /** @type {((message: string) => void)[]} */\n this.onLogHandlers = [];\n\n /** @type {Record<string, Promise<any>>} */\n this._promises = {};\n this.startSocket();\n }\n\n /**\n * Checks if this connection is running in a web adapter and not in an admin.\n * @returns {boolean} True if running in a web adapter or in a socketio adapter.\n */\n static isWeb() {\n return window.adapterName === 'material' || window.adapterName === 'vis' || window.socketUrl !== undefined;\n }\n\n /**\n * Starts the socket.io connection.\n * @returns {void}\n */\n startSocket() {\n // if socket io is not yet loaded\n if (typeof window.io === 'undefined') {\n // if in index.html the onLoad function not defined\n if (typeof window.registerSocketOnLoad !== 'function') {\n // poll if loaded\n this.scriptLoadCounter = this.scriptLoadCounter || 0;\n this.scriptLoadCounter++;\n\n if (this.scriptLoadCounter < 30) {\n // wait till the script loaded\n setTimeout(() => this.startSocket(), 100);\n return;\n } else {\n window.alert('Cannot load socket.io.js!');\n }\n } else {\n // register on load\n window.registerSocketOnLoad(() => this.startSocket());\n }\n return;\n } else {\n // socket was initialized, do not repeat\n if (this._socket) {\n return;\n }\n }\n\n let host = this.props.host;\n let port = this.props.port;\n let protocol = this.props.protocol.replace(':', '');\n\n // if web adapter, socket io could be on other port or even host\n if (window.socketUrl) {\n let parts = window.socketUrl.split(':');\n host = parts[0] || host;\n port = parts[1] || port;\n if (host.includes('://')) {\n parts = host.split('://');\n protocol = parts[0];\n host = parts[1];\n }\n }\n\n const url = port ? `${protocol}://${host}:${port}` : `${protocol}://${host}`;\n\n this._socket = window.io.connect(\n url,\n {\n query: 'ws=true',\n name: this.props.name,\n timeout: this.props.ioTimeout\n }\n );\n\n this._socket.on('connect', noTimeout => {\n // If the user is not admin it takes some time to install the handlers, because all rights must be checked\n if (noTimeout !== true) {\n setTimeout(() =>\n this.getVersion()\n .then(info => {\n const [major, minor, patch] = info.version.split('.');\n const v = parseInt(major, 10) * 10000 + parseInt(minor, 10) * 100 + parseInt(patch, 10);\n if (v < 40102) {\n this._authTimer = null;\n // possible this is old version of admin\n this.onPreConnect(false, false);\n } else {\n this._socket.emit('authenticate', (isOk, isSecure) => this.onPreConnect(isOk, isSecure));\n }\n }), 500);\n } else {\n // iobroker websocket waits, till all handlers are installed\n this._socket.emit('authenticate', (isOk, isSecure) => this.onPreConnect(isOk, isSecure));\n }\n });\n\n this._socket.on('reconnect', () => {\n this.onProgress(PROGRESS.READY);\n this.connected = true;\n\n if (this.waitForRestart) {\n window.location.reload(false);\n } else {\n this._subscribe(true);\n this.onConnectionHandlers.forEach(cb => cb(true));\n }\n });\n\n this._socket.on('disconnect', () => {\n this.connected = false;\n this.subscribed = false;\n this.onProgress(PROGRESS.CONNECTING);\n this.onConnectionHandlers.forEach(cb => cb(false));\n });\n\n this._socket.on('reauthenticate', () =>\n this.authenticate());\n\n this._socket.on('log', message => {\n this.props.onLog && this.props.onLog(message);\n this.onLogHandlers.forEach(cb => cb(message));\n });\n\n this._socket.on('error', err => {\n let _err = err || '';\n if (typeof _err.toString !== 'function') {\n _err = JSON.stringify(_err);\n console.error(`Received strange error: ${_err}`);\n }\n _err = _err.toString();\n if (_err.includes('User not authorized')) {\n this.authenticate();\n } else {\n window.alert(`Socket Error: ${err}`);\n }\n });\n\n this._socket.on('connect_error', err =>\n console.error(`Connect error: ${err}`));\n\n this._socket.on('permissionError', err =>\n this.onError({ message: 'no permission', operation: err.operation, type: err.type, id: (err.id || '') }));\n\n this._socket.on('objectChange', (id, obj) =>\n setTimeout(() => this.objectChange(id, obj), 0));\n\n this._socket.on('stateChange', (id, state) =>\n setTimeout(() => this.stateChange(id, state), 0));\n\n this._socket.on('cmdStdout', (id, text) =>\n this.onCmdStdoutHandler && this.onCmdStdoutHandler(id, text));\n\n this._socket.on('cmdStderr', (id, text) =>\n this.onCmdStderrHandler && this.onCmdStderrHandler(id, text));\n\n this._socket.on('cmdExit', (id, exitCode) =>\n this.onCmdExitHandler && this.onCmdExitHandler(id, exitCode));\n }\n\n /**\n * Called internally.\n * @private\n * @param {boolean} isOk\n * @param {boolean} isSecure\n */\n onPreConnect(isOk, isSecure) {\n if (this._authTimer) {\n clearTimeout(this._authTimer);\n this._authTimer = null;\n }\n\n this.connected = true;\n this.isSecure = isSecure;\n\n if (this.waitForRestart) {\n window.location.reload(false);\n } else {\n if (this.firstConnect) {\n // retry strategy\n this.loadTimer = setTimeout(() => {\n this.loadTimer = null;\n this.loadCounter++;\n if (this.loadCounter < 10) {\n this.onConnect();\n }\n }, 1000);\n\n if (!this.loaded) {\n this.onConnect();\n }\n } else {\n this.onProgress(PROGRESS.READY);\n }\n\n this._subscribe(true);\n this.onConnectionHandlers.forEach(cb => cb(true));\n }\n\n if (this._waitForFirstConnectionResolve) {\n this._waitForFirstConnectionResolve();\n this._waitForFirstConnectionResolve = null;\n }\n }\n\n /**\n * Checks if the socket is connected.\n * @returns {boolean} true if connected.\n */\n isConnected() {\n return this.connected;\n }\n\n /**\n * Checks if the socket is connected.\n * @returns {Promise<void>} Promise resolves if once connected.\n */\n waitForFirstConnection() {\n return this._waitForFirstConnection;\n }\n\n /**\n * Called internally.\n * @private\n */\n _getUserPermissions(cb) {\n if (this.doNotLoadACL) {\n return cb && cb();\n } else {\n this._socket.emit('getUserPermissions', cb);\n }\n }\n\n /**\n * Called internally.\n * @private\n */\n onConnect() {\n this._getUserPermissions((err, acl) => {\n if (err) {\n return this.onError('Cannot read user permissions: ' + err);\n } else\n if (!this.doNotLoadACL) {\n if (this.loaded) {\n return;\n }\n this.loaded = true;\n clearTimeout(this.loadTimer);\n this.loadTimer = null;\n\n this.onProgress(PROGRESS.CONNECTED);\n this.firstConnect = false;\n\n this.acl = acl;\n }\n\n // Read system configuration\n return (this.admin5only && !window.vendorPrefix ? this.getCompactSystemConfig() : this.getSystemConfig())\n .then(data => {\n if (this.doNotLoadACL) {\n if (this.loaded) {\n return undefined;\n }\n this.loaded = true;\n clearTimeout(this.loadTimer);\n this.loadTimer = null;\n\n this.onProgress(PROGRESS.CONNECTED);\n this.firstConnect = false;\n }\n\n this.systemConfig = data;\n if (this.systemConfig && this.systemConfig.common) {\n this.systemLang = this.systemConfig.common.language;\n } else {\n this.systemLang = window.navigator.userLanguage || window.navigator.language;\n\n if (this.systemLang !== 'en' && this.systemLang !== 'de' && this.systemLang !== 'ru') {\n this.systemConfig.common.language = 'en';\n this.systemLang = 'en';\n }\n }\n\n this.props.onLanguage && this.props.onLanguage(this.systemLang);\n\n if (!this.doNotLoadAllObjects) {\n return this.getObjects()\n .then(() => {\n this.onProgress(PROGRESS.READY);\n this.props.onReady && this.props.onReady(this.objects);\n });\n } else {\n this.objects = this.admin5only ? {} : { 'system.config': data };\n this.onProgress(PROGRESS.READY);\n this.props.onReady && this.props.onReady(this.objects);\n }\n return undefined;\n })\n .catch(e => this.onError('Cannot read system config: ' + e));\n });\n }\n\n /**\n * Called internally.\n * @private\n */\n authenticate() {\n if (window.location.search.includes('&href=')) {\n window.location = `${window.location.protocol}//${window.location.host}${window.location.pathname}${window.location.search}${window.location.hash}`;\n } else {\n window.location = `${window.location.protocol}//${window.location.host}${window.location.pathname}?login&href=${window.location.search}${window.location.hash}`;\n }\n }\n\n /**\n * Subscribe to changes of the given state.\n * @param {string} id The ioBroker state ID.\n * @param {ioBroker.StateChangeHandler} cb The callback.\n */\n /**\n * Subscribe to changes of the given state.\n * @param {string} id The ioBroker state ID.\n * @param {boolean} binary Set to true if the given state is binary and requires Base64 decoding.\n * @param {ioBroker.StateChangeHandler} cb The callback.\n */\n subscribeState(id, binary, cb) {\n if (typeof binary === 'function') {\n cb = binary;\n binary = false;\n }\n\n if (!this.statesSubscribes[id]) {\n let reg = id\n .replace(/\\./g, '\\\\.')\n .replace(/\\*/g, '.*')\n .replace(/\\(/g, '\\\\(')\n .replace(/\\)/g, '\\\\)')\n .replace(/\\+/g, '\\\\+')\n .replace(/\\[/g, '\\\\[');\n\n if (reg.indexOf('*') === -1) {\n reg += '$';\n }\n this.statesSubscribes[id] = { reg: new RegExp(reg), cbs: [] };\n this.statesSubscribes[id].cbs.push(cb);\n if (this.connected) {\n this._socket.emit('subscribe', id);\n }\n } else {\n !this.statesSubscribes[id].cbs.includes(cb) && this.statesSubscribes[id].cbs.push(cb);\n }\n if (typeof cb === 'function' && this.connected) {\n if (binary) {\n this.getBinaryState(id)\n .then(base64 => cb(id, base64))\n .catch(e => console.error(`Cannot getForeignStates \"${id}\": ${JSON.stringify(e)}`));\n } else {\n if (Connection.isWeb()) {\n this._socket.emit('getStates', id, (err, states) => {\n err && console.error(`Cannot getForeignStates \"${id}\": ${JSON.stringify(err)}`);\n states && Object.keys(states).forEach(id => cb(id, states[id]));\n });\n } else {\n this._socket.emit('getForeignStates', id, (err, states) => {\n err && console.error(`Cannot getForeignStates \"${id}\": ${JSON.stringify(err)}`);\n states && Object.keys(states).forEach(id => cb(id, states[id]));\n });\n }\n }\n }\n }\n\n /**\n * Unsubscribes all callbacks from changes of the given state.\n * @param {string} id The ioBroker state ID.\n */\n /**\n * Unsubscribes the given callback from changes of the given state.\n * @param {string} id The ioBroker state ID.\n * @param {ioBroker.StateChangeHandler} cb The callback.\n */\n unsubscribeState(id, cb) {\n if (this.statesSubscribes[id]) {\n if (cb) {\n const pos = this.statesSubscribes[id].cbs.indexOf(cb);\n pos !== -1 && this.statesSubscribes[id].cbs.splice(pos, 1);\n } else {\n this.statesSubscribes[id].cbs = [];\n }\n\n if (!this.statesSubscribes[id].cbs || !this.statesSubscribes[id].cbs.length) {\n delete this.statesSubscribes[id];\n this.connected && this._socket.emit('unsubscribe', id);\n }\n }\n }\n\n /**\n * Subscribe to changes of the given object.\n * @param {string} id The ioBroker object ID.\n * @param {import('./types').ObjectChangeHandler} cb The callback.\n * @returns {Promise<void>}\n */\n subscribeObject(id, cb) {\n if (!this.objectsSubscribes[id]) {\n let reg = id.replace(/\\./g, '\\\\.').replace(/\\*/g, '.*');\n if (!reg.includes('*')) {\n reg += '$';\n }\n this.objectsSubscribes[id] = { reg: new RegExp(reg), cbs: [] };\n this.objectsSubscribes[id].cbs.push(cb);\n this.connected && this._socket.emit('subscribeObjects', id);\n } else {\n !this.objectsSubscribes[id].cbs.includes(cb) && this.objectsSubscribes[id].cbs.push(cb);\n }\n return Promise.resolve();\n }\n\n /**\n * Unsubscribes all callbacks from changes of the given object.\n * @param {string} id The ioBroker object ID.\n * @returns {Promise<void>}\n */\n /**\n * Unsubscribes the given callback from changes of the given object.\n * @param {string} id The ioBroker object ID.\n * @param {import('./types').ObjectChangeHandler} cb The callback.\n * @returns {Promise<void>}\n */\n unsubscribeObject(id, cb) {\n if (this.objectsSubscribes[id]) {\n if (cb) {\n const pos = this.objectsSubscribes[id].cbs.indexOf(cb);\n pos !== -1 && this.objectsSubscribes[id].cbs.splice(pos, 1);\n } else {\n this.objectsSubscribes[id].cbs = [];\n }\n\n if (this.connected && (!this.objectsSubscribes[id].cbs || !this.objectsSubscribes[id].cbs.length)) {\n delete this.objectsSubscribes[id];\n this.connected && this._socket.emit('unsubscribeObjects', id);\n }\n }\n return Promise.resolve();\n }\n\n /**\n * Called internally.\n * @private\n * @param {string} id\n * @param {ioBroker.Object | null | undefined} obj\n */\n objectChange(id, obj) {\n // update main.objects cache\n if (!this.objects) {\n return;\n }\n\n /** @type {import(\"./types\").OldObject} */\n let oldObj;\n\n let changed = false;\n if (obj) {\n if (obj._rev && this.objects[id]) {\n this.objects[id]._rev = obj._rev;\n }\n\n if (this.objects[id]) {\n oldObj = { _id: id, type: this.objects[id].type };\n }\n\n if (!this.objects[id] || JSON.stringify(this.objects[id]) !== JSON.stringify(obj)) {\n this.objects[id] = obj;\n changed = true;\n }\n } else if (this.objects[id]) {\n oldObj = { _id: id, type: this.objects[id].type };\n delete this.objects[id];\n changed = true;\n }\n\n Object.keys(this.objectsSubscribes).forEach(_id => {\n if (_id === id || this.objectsSubscribes[_id].reg.test(id)) {\n //@ts-ignore\n this.objectsSubscribes[_id].cbs.forEach(cb => cb(id, obj, oldObj));\n }\n });\n\n if (changed && this.props.onObjectChange) {\n this.props.onObjectChange(id, obj);\n }\n }\n\n /**\n * Called internally.\n * @private\n * @param {string} id\n * @param {ioBroker.State | null | undefined} state\n */\n stateChange(id, state) {\n for (const task in this.statesSubscribes) {\n if (this.statesSubscribes.hasOwnProperty(task) && this.statesSubscribes[task].reg.test(id)) {\n this.statesSubscribes[task].cbs.forEach(cb => cb(id, state));\n }\n }\n }\n\n /**\n * Gets all states.\n * @param {boolean} disableProgressUpdate don't call onProgress() when done\n * @returns {Promise<Record<string, ioBroker.State>>}\n */\n getStates(disableProgressUpdate) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('getStates', (err, res) => {\n this.states = res;\n //@ts-ignore\n !disableProgressUpdate && this.onProgress(PROGRESS.STATES_LOADED);\n return err ? reject(err) : resolve(this.states);\n }));\n }\n\n /**\n * Gets the given state.\n * @param {string} id The state ID.\n * @returns {Promise<ioBroker.State | null | undefined>}\n */\n getState(id) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('getState', id, (err, state) => err ? reject(err) : resolve(state)));\n }\n\n /**\n * Gets the given binary state.\n * @param {string} id The state ID.\n * @returns {Promise<Buffer | undefined>}\n */\n getBinaryState(id) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n // the data will come in base64\n return new Promise((resolve, reject) =>\n this._socket.emit('getBinaryState', id, (err, state) => err ? reject(err) : resolve(state)));\n }\n\n /**\n * Sets the given binary state.\n * @param {string} id The state ID.\n * @param {string} base64 The Base64 encoded binary data.\n * @returns {Promise<void>}\n */\n setBinaryState(id, base64) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n // the data will come in base64\n return new Promise((resolve, reject) =>\n this._socket.emit('setBinaryState', id, base64, err => err ? reject(err) : resolve()));\n }\n\n /**\n * Sets the given state value.\n * @param {string} id The state ID.\n * @param {string | number | boolean | ioBroker.State | ioBroker.SettableState | null} val The state value.\n * @returns {Promise<void>}\n */\n setState(id, val) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('setState', id, val, err =>\n err ? reject(err) : resolve()));\n }\n\n /**\n * Gets all objects.\n * @param {(objects?: Record<string, ioBroker.Object>) => void} update Callback that is executed when all objects are retrieved.\n * @returns {void}\n */\n /**\n * Gets all objects.\n * @param {boolean} update Set to true to retrieve all objects from the server (instead of using the local cache).\n * @param {boolean} disableProgressUpdate don't call onProgress() when done\n * @returns {Promise<Record<string, ioBroker.Object>> | undefined}\n */\n getObjects(update, disableProgressUpdate) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n } else {\n return new Promise((resolve, reject) => {\n if (!update && this.objects) {\n return resolve(this.objects);\n }\n\n this._socket.emit(Connection.isWeb() ? 'getObjects' : 'getAllObjects', (err, res) => {\n this.objects = res;\n disableProgressUpdate && this.onProgress(PROGRESS.OBJECTS_LOADED);\n err ? reject(err) : resolve(this.objects);\n });\n });\n }\n }\n\n /**\n * Called internally.\n * @private\n * @param {boolean} isEnable\n */\n _subscribe(isEnable) {\n if (isEnable && !this.subscribed) {\n this.subscribed = true;\n this.autoSubscribes.forEach(id => this._socket.emit('subscribeObjects', id));\n // re subscribe objects\n Object.keys(this.objectsSubscribes).forEach(id => this._socket.emit('subscribeObjects', id));\n // re-subscribe logs\n this.autoSubscribeLog && this._socket.emit('requireLog', true);\n // re subscribe states\n Object.keys(this.statesSubscribes).forEach(id => this._socket.emit('subscribe', id));\n } else if (!isEnable && this.subscribed) {\n this.subscribed = false;\n // un-subscribe objects\n this.autoSubscribes.forEach(id => this._socket.emit('unsubscribeObjects', id));\n Object.keys(this.objectsSubscribes).forEach(id => this._socket.emit('unsubscribeObjects', id));\n // un-subscribe logs\n this.autoSubscribeLog && this._socket.emit('requireLog', false);\n\n // un-subscribe states\n Object.keys(this.statesSubscribes).forEach(id => this._socket.emit('unsubscribe', id));\n }\n }\n\n /**\n * Requests log updates.\n * @param {boolean} isEnabled Set to true to get logs.\n * @returns {Promise<void>}\n */\n requireLog(isEnabled) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('requireLog', isEnabled, err =>\n err ? reject(err) : resolve()));\n }\n\n /**\n * Deletes the given object.\n * @param {string} id The object ID.\n * @param {boolean} maintenance Force deletion of non conform IDs.\n * @returns {Promise<void>}\n */\n delObject(id, maintenance) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('delObject', id, { maintenance: !!maintenance }, err =>\n err ? reject(err) : resolve()));\n }\n\n /**\n * Deletes the given object and all its children.\n * @param {string} id The object ID.\n * @param {boolean} maintenance Force deletion of non conform IDs.\n * @returns {Promise<void>}\n */\n delObjects(id, maintenance) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('delObjects', id, {maintenance: !!maintenance}, err =>\n err ? reject(err) : resolve()));\n }\n\n /**\n * Sets the object.\n * @param {string} id The object ID.\n * @param {ioBroker.SettableObject} obj The object.\n * @returns {Promise<void>}\n */\n setObject(id, obj) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n if (!obj) {\n return Promise.reject('Null object is not allowed');\n }\n\n obj = JSON.parse(JSON.stringify(obj));\n\n if (obj.hasOwnProperty('from')) {\n delete obj.from;\n }\n if (obj.hasOwnProperty('user')) {\n delete obj.user;\n }\n if (obj.hasOwnProperty('ts')) {\n delete obj.ts;\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('setObject', id, obj, err =>\n err ? reject(err) : resolve()));\n }\n\n /**\n * Gets the object with the given id from the server.\n * @param {string} id The object ID.\n * @returns {ioBroker.GetObjectPromise} The object.\n */\n getObject(id) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('getObject', id, (err, obj) =>\n err ? reject(err) : resolve(obj)));\n }\n\n /**\n * Get all adapter instances.\n * @param {boolean} [update] Force update.\n * @returns {Promise<ioBroker.Object[]>}\n */\n /**\n * Get all instances of the given adapter.\n * @param {string} adapter The name of the adapter.\n * @param {boolean} [update] Force update.\n * @returns {Promise<ioBroker.Object[]>}\n */\n getAdapterInstances(adapter, update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n\n if (typeof adapter === 'boolean') {\n update = adapter;\n adapter = '';\n }\n adapter = adapter || '';\n\n if (!update && this._promises['instances_' + adapter]) {\n return this._promises['instances_' + adapter];\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises['instances_' + adapter] = new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n timeout = null;\n this.getObjectView(\n `system.adapter.${adapter}.`,\n `system.adapter.${adapter}.\\u9999`,\n 'instance'\n )\n .then(items => resolve(Object.keys(items).map(id => fixAdminUI(items[id]))))\n .catch(e => reject(e));\n }, TIMEOUT_FOR_ADMIN4);\n\n this._socket.emit('getAdapterInstances', adapter, (err, instances) => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n return err ? reject(err) : resolve(instances);\n }\n });\n });\n\n return this._promises['instances_' + adapter];\n }\n\n /**\n * Get all adapters.\n * @param {boolean} [update] Force update.\n * @returns {Promise<ioBroker.Object[]>}\n */\n /**\n * Get adapters with the given name.\n * @param {string} adapter The name of the adapter.\n * @param {boolean} [update] Force update.\n * @returns {Promise<ioBroker.Object[]>}\n */\n getAdapters(adapter, update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n\n if (typeof adapter === 'boolean') {\n update = adapter;\n adapter = '';\n }\n\n adapter = adapter || '';\n\n if (!update && this._promises['adapter_' + adapter]) {\n return this._promises['adapter_' + adapter];\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises['adapter_' + adapter] = new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n timeout = null;\n this.getObjectView(\n `system.adapter.${adapter}.`,\n `system.adapter.${adapter}.\\u9999`,\n 'adapter'\n )\n .then(items => resolve(Object.keys(items).map(id => fixAdminUI(items[id]))))\n .catch(e => reject(e));\n }, TIMEOUT_FOR_ADMIN4);\n\n this._socket.emit('getAdapters', adapter, (err, adapters) => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n return err ? reject(err) : resolve(adapters);\n }\n });\n });\n\n return this._promises['adapter_' + adapter];\n }\n\n /**\n * Called internally.\n * @private\n * @param {any[]} objs\n * @param {(err?: any) => void} cb\n */\n _renameGroups(objs, cb) {\n if (!objs || !objs.length) {\n cb && cb();\n } else {\n let obj = objs.pop();\n let oldId = obj._id;\n obj._id = obj.newId;\n delete obj.newId;\n\n this.setObject(obj._id, obj)\n .then(() => this.delObject(oldId))\n .then(() => setTimeout(() => this._renameGroups(objs, cb), 0))\n .catch(err => cb && cb(err));\n }\n }\n\n /**\n * Rename a group.\n * @param {string} id The id.\n * @param {string} newId The new id.\n * @param {string | { [lang in ioBroker.Languages]?: string; }} newName The new name.\n */\n renameGroup(id, newId, newName) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n\n return this.getGroups(true)\n .then(groups => {\n if (groups.length) {\n // find all elements\n const groupsToRename = groups\n .filter(group => group._id.startsWith(id + '.'));\n\n groupsToRename.forEach(group => group.newId = newId + group._id.substring(id.length));\n\n return new Promise((resolve, reject) =>\n this._renameGroups(groupsToRename, err => err ? reject(err) : resolve()))\n .then(() => {\n const obj = groups.find(group => group._id === id);\n\n if (obj) {\n obj._id = newId;\n if (newName !== undefined) {\n obj.common = obj.common || {};\n obj.common.name = newName;\n }\n\n return this.setObject(obj._id, obj)\n .then(() => this.delObject(id));\n }\n });\n }\n });\n }\n\n /**\n * Sends a message to a specific instance or all instances of some specific adapter.\n * @param {string} instance The instance to send this message to.\n * @param {string} [command] Command name of the target instance.\n * @param {ioBroker.MessagePayload} [data] The message data to send.\n * @returns {Promise<ioBroker.Message | undefined>}\n */\n sendTo(instance, command, data) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise(resolve =>\n this._socket.emit('sendTo', instance, command, data, result =>\n resolve(result)));\n }\n\n /**\n * Extend an object and create it if it might not exist.\n * @param {string} id The id.\n * @param {ioBroker.PartialObject} obj The object.\n */\n extendObject(id, obj) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n obj = JSON.parse(JSON.stringify(obj));\n\n if (obj.hasOwnProperty('from')) {\n delete obj.from;\n }\n if (obj.hasOwnProperty('user')) {\n delete obj.user;\n }\n if (obj.hasOwnProperty('ts')) {\n delete obj.ts;\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('extendObject', id, obj, err => err ? reject(err) : resolve()));\n }\n\n /**\n * Register a handler for log messages.\n * @param {(message: string) => void} handler The handler.\n */\n registerLogHandler(handler) {\n !this.onLogHandlers.includes(handler) && this.onLogHandlers.push(handler);\n }\n\n /**\n * Unregister a handler for log messages.\n * @param {(message: string) => void} handler The handler.\n */\n unregisterLogHandler(handler) {\n const pos = this.onLogHandlers.indexOf(handler);\n pos !== -1 && this.onLogHandlers.splice(pos, 1);\n }\n\n /**\n * Register a handler for the connection state.\n * @param {(connected: boolean) => void} handler The handler.\n */\n registerConnectionHandler(handler) {\n !this.onConnectionHandlers.includes(handler) && this.onConnectionHandlers.push(handler);\n }\n\n /**\n * Unregister a handler for the connection state.\n * @param {(connected: boolean) => void} handler The handler.\n */\n unregisterConnectionHandler(handler) {\n const pos = this.onConnectionHandlers.indexOf(handler);\n pos !== -1 && this.onConnectionHandlers.splice(pos, 1);\n }\n\n /**\n * Set the handler for standard output of a command.\n * @param {(id: string, text: string) => void} handler The handler.\n */\n registerCmdStdoutHandler(handler) {\n this.onCmdStdoutHandler = handler;\n }\n\n /**\n * Unset the handler for standard output of a command.\n * @param {(id: string, text: string) => void} handler The handler.\n */\n unregisterCmdStdoutHandler(handler) {\n this.onCmdStdoutHandler = null;\n }\n\n /**\n * Set the handler for standard error of a command.\n * @param {(id: string, text: string) => void} handler The handler.\n */\n registerCmdStderrHandler(handler) {\n this.onCmdStderrHandler = handler;\n }\n\n /**\n * Unset the handler for standard error of a command.\n * @param {(id: string, text: string) => void} handler The handler.\n */\n unregisterCmdStderrHandler(handler) {\n this.onCmdStderrHandler = null;\n }\n\n /**\n * Set the handler for exit of a command.\n * @param {(id: string, exitCode: number) => void} handler The handler.\n */\n registerCmdExitHandler(handler) {\n this.onCmdExitHandler = handler;\n }\n\n /**\n * Unset the handler for exit of a command.\n * @param {(id: string, exitCode: number) => void} handler The handler.\n */\n unregisterCmdExitHandler(handler) {\n this.onCmdExitHandler = null;\n }\n\n /**\n * Get all enums with the given name.\n * @param {string} [_enum] The name of the enum\n * @param {boolean} [update] Force update.\n * @returns {Promise<Record<string, ioBroker.Object>>}\n */\n getEnums(_enum, update) {\n if (!update && this._promises['enums_' + (_enum || 'all')]) {\n return this._promises['enums_' + (_enum || 'all')];\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises['enums_' + (_enum || 'all')] = new Promise((resolve, reject) => {\n this._socket.emit('getObjectView', 'system', 'enum', { startkey: 'enum.' + (_enum || ''), endkey: 'enum.' + (_enum ? (_enum + '.') : '') + '\\u9999' }, (err, res) => {\n if (!err && res) {\n const _res = {};\n for (let i = 0; i < res.rows.length; i++) {\n if (_enum && res.rows[i].id === 'enum.' + _enum) {\n continue;\n }\n _res[res.rows[i].id] = res.rows[i].value;\n }\n resolve(_res);\n } else {\n reject(err);\n }\n });\n });\n\n return this._promises['enums_' + (_enum || 'all')];\n }\n\n /**\n * Query a predefined object view.\n * @param {string} start The start ID.\n * @param {string} end The end ID.\n * @param {string} type The type of object.\n * @returns {Promise<Record<string, ioBroker.Object>>}\n */\n getObjectView(start, end, type) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n start = start || '';\n end = end || '\\u9999';\n\n return new Promise((resolve, reject) => {\n this._socket.emit('getObjectView', 'system', type, { startkey: start, endkey: end }, (err, res) => {\n if (!err) {\n const _res = {};\n if (res && res.rows) {\n for (let i = 0; i < res.rows.length; i++) {\n _res[res.rows[i].id] = res.rows[i].value;\n }\n }\n resolve(_res);\n } else {\n reject(err);\n }\n });\n });\n }\n\n /**\n * Get the stored certificates.\n * @param {boolean} [update] Force update.\n * @returns {Promise<{name: string; type: 'public' | 'private' | 'chained'}[]>}\n */\n getCertificates(update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n\n if (this._promises.cert && !update) {\n return this._promises.cert;\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.cert = this.getObject('system.certificates')\n .then(res => {\n const certs = [];\n if (res && res.native && res.native.certificates) {\n Object.keys(res.native.certificates).forEach(c => {\n const cert = res.native.certificates[c];\n if (!cert) {\n return;\n }\n const _cert = {\n name: c,\n type: ''\n };\n // If it is filename, it could be everything\n if (cert.length < 700 && (cert.indexOf('/') !== -1 || cert.indexOf('\\\\') !== -1)) {\n if (c.toLowerCase().includes('private')) {\n _cert.type = 'private';\n } else if (cert.toLowerCase().includes('private')) {\n _cert.type = 'private';\n } else if (c.toLowerCase().includes('public')) {\n _cert.type = 'public';\n } else if (cert.toLowerCase().includes('public')) {\n _cert.type = 'public';\n }\n certs.push(_cert);\n } else {\n _cert.type = (cert.substring(0, '-----BEGIN RSA PRIVATE KEY'.length) === '-----BEGIN RSA PRIVATE KEY' || cert.substring(0, '-----BEGIN PRIVATE KEY'.length) === '-----BEGIN PRIVATE KEY') ? 'private' : 'public';\n\n if (_cert.type === 'public') {\n const m = cert.split('-----END CERTIFICATE-----');\n if (m.filter(t => t.replace(/\\r\\n|\\r|\\n/, '').trim()).length > 1) {\n _cert.type = 'chained';\n }\n }\n\n certs.push(_cert);\n }\n });\n }\n return certs;\n });\n\n return this._promises.cert;\n }\n\n /**\n * Get the logs from a host (only for admin connection).\n * @param {string} host\n * @param {number} [linesNumber]\n * @returns {Promise<string[]>}\n */\n getLogs(host, linesNumber) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise(resolve =>\n this._socket.emit('sendToHost', host, 'getLogs', linesNumber || 200, lines =>\n resolve(lines)));\n }\n\n /**\n * Get the log files (only for admin connection).\n * @returns {Promise<string[]>}\n */\n getLogsFiles(host) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('readLogs', host, (err, files) =>\n err ? reject(err) : resolve(files)));\n }\n\n /**\n * Delete the logs from a host (only for admin connection).\n * @param {string} host\n * @returns {Promise<void>}\n */\n delLogs(host) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('sendToHost', host, 'delLogs', null, error =>\n error ? reject(error) : resolve()));\n }\n\n /**\n * Read the meta items.\n * @returns {Promise<ioBroker.Object[]>}\n */\n readMetaItems() {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('getObjectView', 'system', 'meta', { startkey: '', endkey: '\\u9999' }, (err, objs) =>\n err ? reject(err) : resolve(objs.rows && objs.rows.map(obj => obj.value))));\n }\n\n /**\n * Read the directory of an adapter.\n * @param {string} adapter The adapter name.\n * @param {string} fileName The directory name.\n * @returns {Promise<ioBroker.ReadDirResult[]>}\n */\n readDir(adapter, fileName) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('readDir', adapter, fileName, (err, files) =>\n err ? reject(err) : resolve(files)));\n }\n\n /**\n * Read a file of an adapter.\n * @param {string} adapter The adapter name.\n * @param {string} fileName The file name.\n * @param {boolean} base64 If it must be a base64 format\n * @returns {Promise<string>}\n */\n readFile(adapter, fileName, base64) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) => {\n if (!base64) {\n this._socket.emit('readFile', adapter, fileName, (err, data, type) => {\n //@ts-ignore\n err ? reject(err) : resolve(data, type);\n });\n } else {\n this._socket.emit('readFile64', adapter, fileName, base64, (err, data) =>\n err ? reject(err) : resolve(data));\n }\n });\n }\n\n /**\n * Write a file of an adapter.\n * @param {string} adapter The adapter name.\n * @param {string} fileName The file name.\n * @param {Buffer | string} data The data (if it's a Buffer, it will be converted to Base64).\n * @returns {Promise<void>}\n */\n writeFile64(adapter, fileName, data) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) => {\n if (typeof data === 'string') {\n this._socket.emit('writeFile', adapter, fileName, data, err =>\n err ? reject(err) : resolve());\n } else {\n const base64 = btoa(\n new Uint8Array(data)\n .reduce((data, byte) => data + String.fromCharCode(byte), '')\n );\n\n this._socket.emit('writeFile64', adapter, fileName, base64, err =>\n err ? reject(err) : resolve());\n }\n });\n }\n\n /**\n * Rename a file or folder of an adapter.\n *\n * All files in folder will be renamed too.\n * @param {string} adapter The adapter name.\n * @param {string} oldName The file name of the file to be renamed.\n * @param {string} newName The new file name.\n * @returns {Promise<void>}\n */\n rename(adapter, oldName, newName) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('rename', adapter, oldName, newName, err =>\n err ? reject(err) : resolve()));\n }\n\n /**\n * Delete a file of an adapter.\n * @param {string} adapter The adapter name.\n * @param {string} fileName The file name.\n * @returns {Promise<void>}\n */\n deleteFile(adapter, fileName) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('unlink', adapter, fileName, err =>\n err ? reject(err) : resolve()));\n }\n\n /**\n * Delete a folder of an adapter.\n * All files in folder will be deleted.\n * @param {string} adapter The adapter name.\n * @param {string} folderName The folder name.\n * @returns {Promise<void>}\n */\n deleteFolder(adapter, folderName) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('deleteFolder', adapter, folderName, err =>\n err ? reject(err) : resolve()));\n }\n\n /**\n * Get the list of all hosts.\n * @param {boolean} [update] Force update.\n * @returns {Promise<ioBroker.Object[]>}\n */\n getHosts(update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!update && this._promises.hosts) {\n return this._promises.hosts;\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.hosts = new Promise((resolve, reject) =>\n this._socket.emit(\n 'getObjectView',\n 'system',\n 'host',\n {startkey: 'system.host.', endkey: 'system.host.\\u9999'},\n (err, doc) => {\n if (err) {\n reject(err);\n } else {\n resolve(doc.rows.map(item => item.value));\n }\n }));\n\n return this._promises.hosts;\n }\n\n /**\n * Get the list of all users.\n * @param {boolean} [update] Force update.\n * @returns {Promise<ioBroker.Object[]>}\n */\n getUsers(update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!update && this._promises.users) {\n return this._promises.users;\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.users = new Promise((resolve, reject) =>\n this._socket.emit(\n 'getObjectView',\n 'system',\n 'user',\n {startkey: 'system.user.', endkey: 'system.user.\\u9999'},\n (err, doc) => {\n if (err) {\n reject(err);\n } else {\n resolve(doc.rows.map(item => item.value));\n }\n }));\n\n return this._promises.users;\n }\n\n /**\n * Get the list of all groups.\n * @param {boolean} [update] Force update.\n * @returns {Promise<ioBroker.Object[]>}\n */\n getGroups(update) {\n if (!update && this._promises.groups) {\n return this._promises.groups;\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.groups = new Promise((resolve, reject) =>\n this._socket.emit(\n 'getObjectView',\n 'system',\n 'group',\n {startkey: 'system.group.', endkey: 'system.group.\\u9999'},\n (err, doc) => {\n if (err) {\n reject(err);\n } else {\n resolve(doc.rows.map(item => item.value));\n }\n }));\n\n return this._promises.groups;\n }\n\n /**\n * Get the host information.\n * @param {string} host\n * @param {boolean} [update] Force update.\n * @param {number} [timeoutMs] optional read timeout.\n * @returns {Promise<any>}\n */\n getHostInfo(host, update, timeoutMs) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!host.startsWith('system.host.')) {\n host += 'system.host.' + host;\n }\n\n if (!update && this._promises['hostInfo' + host]) {\n return this._promises['hostInfo' + host];\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises['hostInfo' + host] = new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n if (timeout) {\n timeout = null;\n reject('getHostInfo timeout');\n }\n }, timeoutMs || this.props.cmdTimeout);\n\n this._socket.emit('sendToHost', host, 'getHostInfo', null, data => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n if (data === PERMISSION_ERROR) {\n reject('May not read \"getHostInfo\"');\n } else if (!data) {\n reject('Cannot read \"getHostInfo\"');\n } else {\n resolve(data);\n }\n }\n });\n });\n\n return this._promises['hostInfo' + host];\n }\n\n /**\n * Get the host information (short version).\n * @param {string} host\n * @param {boolean} [update] Force update.\n * @param {number} [timeoutMs] optional read timeout.\n * @returns {Promise<any>}\n */\n getHostInfoShort(host, update, timeoutMs) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!host.startsWith('system.host.')) {\n host += 'system.host.' + host;\n }\n\n if (!update && this._promises['hostInfoShort' + host]) {\n return this._promises['hostInfoShort' + host];\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises['hostInfoShort' + host] = new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n if (timeout) {\n timeout = null;\n reject('hostInfoShort timeout');\n }\n }, timeoutMs || this.props.cmdTimeout);\n\n this._socket.emit('sendToHost', host, 'getHostInfoShort', null, data => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n if (data === PERMISSION_ERROR) {\n reject('May not read \"getHostInfoShort\"');\n } else if (!data) {\n reject('Cannot read \"getHostInfoShort\"');\n } else {\n resolve(data);\n }\n }\n });\n });\n\n return this._promises['hostInfoShort' + host];\n }\n\n /**\n * Get the repository.\n * @param {string} host\n * @param {any} [args]\n * @param {boolean} [update] Force update.\n * @param {number} [timeoutMs] timeout in ms.\n * @returns {Promise<any>}\n */\n getRepository(host, args, update, timeoutMs) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!update && this._promises.repo) {\n return this._promises.repo;\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n if (!host.startsWith('system.host.')) {\n host += 'system.host.' + host;\n }\n\n this._promises.repo = new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n if (timeout) {\n timeout = null;\n reject('getRepository timeout');\n }\n }, timeoutMs || this.props.cmdTimeout);\n\n this._socket.emit('sendToHost', host, 'getRepository', args, data => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n if (data === PERMISSION_ERROR) {\n reject('May not read \"getRepository\"');\n } else if (!data) {\n reject('Cannot read \"getRepository\"');\n } else {\n resolve(data);\n }\n }\n });\n });\n\n return this._promises.repo;\n }\n\n /**\n * Get the installed.\n * @param {string} host\n * @param {boolean} [update] Force update.\n * @param {number} [cmdTimeout] timeout in ms (optional)\n * @returns {Promise<any>}\n */\n getInstalled(host, update, cmdTimeout) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n\n this._promises.installed = this._promises.installed || {};\n\n if (!update && this._promises.installed[host]) {\n return this._promises.installed[host];\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n if (!host.startsWith('system.host.')) {\n host += 'system.host.' + host;\n }\n\n this._promises.installed[host] = new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n if (timeout) {\n timeout = null;\n reject('getInstalled timeout');\n }\n }, cmdTimeout || this.props.cmdTimeout);\n\n this._socket.emit('sendToHost', host, 'getInstalled', null, data => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n if (data === PERMISSION_ERROR) {\n reject('May not read \"getInstalled\"');\n } else if (!data) {\n reject('Cannot read \"getInstalled\"');\n } else {\n resolve(data);\n }\n }\n });\n });\n\n return this._promises.installed[host];\n }\n\n /**\n * Execute a command on a host.\n * @param {string} host The host name.\n * @param {string} cmd The command.\n * @param {string} cmdId The command ID.\n * @param {number} cmdTimeout Timeout of command in ms\n * @returns {Promise<void>}\n */\n cmdExec(host, cmd, cmdId, cmdTimeout) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n if (!host.startsWith(host)) {\n host += 'system.host.' + host;\n }\n\n return new Promise((resolve, reject) => {\n let timeout = cmdTimeout && setTimeout(() => {\n if (timeout) {\n timeout = null;\n reject('cmdExec timeout');\n }\n }, cmdTimeout);\n\n this._socket.emit('cmdExec', host, cmdId, cmd, null, err => {\n if (!cmdTimeout || timeout) {\n timeout && clearTimeout(timeout);\n timeout = null;\n if (err) {\n reject(err);\n } else {\n resolve();\n }\n }\n });\n });\n }\n\n /**\n * Checks if a given feature is supported.\n * @param {string} feature The feature to check.\n * @param {boolean} [update] Force update.\n * @returns {Promise<any>}\n */\n checkFeatureSupported(feature, update) {\n if (!update && this._promises['supportedFeatures_' + feature]) {\n return this._promises['supportedFeatures_' + feature];\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises['supportedFeatures_' + feature] = new Promise((resolve, reject) =>\n this._socket.emit('checkFeatureSupported', feature, (err, features) => {\n err ? reject(err) : resolve(features)\n }));\n\n return this._promises['supportedFeatures_' + feature];\n }\n\n /**\n * Read the base settings of a given host.\n * @param {string} host\n * @returns {Promise<any>}\n */\n readBaseSettings(host) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n return this.checkFeatureSupported('CONTROLLER_READWRITE_BASE_SETTINGS')\n .then(result => {\n if (result) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n if (timeout) {\n timeout = null;\n reject('readBaseSettings timeout');\n }\n }, this.props.cmdTimeout);\n\n if (host.startsWith('system.host.')) {\n host = host.replace(/^system\\.host\\./, '');\n }\n\n this._socket.emit('sendToHost', host, 'readBaseSettings', null, data => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n\n if (data === PERMISSION_ERROR) {\n reject('May not read \"BaseSettings\"');\n } else if (!data) {\n reject('Cannot read \"BaseSettings\"');\n } else {\n resolve(data);\n }\n }\n });\n });\n } else {\n return Promise.reject('Not supported');\n }\n });\n }\n\n /**\n * Write the base settings of a given host.\n * @param {string} host\n * @param {any} config\n * @returns {Promise<any>}\n */\n writeBaseSettings(host, config) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n return this.checkFeatureSupported('CONTROLLER_READWRITE_BASE_SETTINGS')\n .then(result => {\n if (result) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n if (timeout) {\n timeout = null;\n reject('writeBaseSettings timeout');\n }\n }, this.props.cmdTimeout);\n\n this._socket.emit('sendToHost', host, 'writeBaseSettings', config, data => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n\n if (data === PERMISSION_ERROR) {\n reject('May not write \"BaseSettings\"');\n } else if (!data) {\n reject('Cannot write \"BaseSettings\"');\n } else {\n resolve(data);\n }\n }\n });\n });\n } else {\n return Promise.reject('Not supported');\n }\n })\n }\n\n /**\n * Send command to restart the iobroker on host\n * @param {string} host\n * @returns {Promise<any>}\n */\n restartController(host) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n return new Promise((resolve, reject) => {\n this._socket.emit('sendToHost', host, 'restartController', null, error => {\n error ? reject(error) : resolve(true);\n });\n });\n }\n\n /**\n * Read statistics information from host\n * @param {string} host\n * @param {string} typeOfDiag one of none, normal, no-city, extended\n * @returns {Promise<any>}\n */\n getDiagData(host, typeOfDiag) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n return new Promise(resolve => {\n this._socket.emit('sendToHost', host, 'getDiagData', typeOfDiag, result =>\n resolve(result));\n });\n }\n\n /**\n * Read all states (which might not belong to this adapter) which match the given pattern.\n * @param {string} pattern\n * @returns {ioBroker.GetStatesPromise}\n */\n getForeignStates(pattern) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n if (Connection.isWeb()) {\n return new Promise((resolve, reject) =>\n this._socket.emit('getStates', pattern || '*', (err, states) =>\n err ? reject(err) : resolve(states)));\n } else {\n return new Promise((resolve, reject) =>\n this._socket.emit('getForeignStates', pattern || '*', (err, states) =>\n err ? reject(err) : resolve(states)));\n }\n }\n\n /**\n * Get foreign objects by pattern, by specific type and resolve their enums.\n * @param {string} pattern\n * @param {string} [type]\n * @returns {ioBroker.GetObjectsPromise}\n */\n getForeignObjects(pattern, type) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('getForeignObjects', pattern || '*', type, (err, states) =>\n err ? reject(err) : resolve(states)));\n }\n\n /**\n * Gets the system configuration.\n * @param {boolean} [update] Force update.\n * @returns {Promise<ioBroker.OtherObject>}\n */\n getSystemConfig(update) {\n if (!update && this._promises.systemConfig) {\n return this._promises.systemConfig;\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.systemConfig = this.getObject('system.config')\n .then(systemConfig => {\n //@ts-ignore\n systemConfig = systemConfig || {};\n //@ts-ignore\n systemConfig.common = systemConfig.common || {};\n //@ts-ignore\n systemConfig.native = systemConfig.native || {};\n return systemConfig;\n });\n\n return this._promises.systemConfig;\n }\n\n /**\n * Sets the system configuration.\n * @param {ioBroker.SettableObjectWorker<ioBroker.OtherObject>} obj\n * @returns {Promise<ioBroker.SettableObjectWorker<ioBroker.OtherObject>>}\n */\n setSystemConfig(obj) {\n return this.setObject('system.config', obj)\n .then(() => this._promises.systemConfig = Promise.resolve(obj));\n }\n\n /**\n * Get the raw socket.io socket.\n * @returns {any}\n */\n getRawSocket() {\n return this._socket;\n }\n\n /**\n * Get the history of a given state.\n * @param {string} id\n * @param {ioBroker.GetHistoryOptions} options\n * @returns {Promise<ioBroker.GetHistoryResult>}\n */\n getHistory(id, options) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('getHistory', id, options, (err, values) =>\n err ? reject(err) : resolve(values)));\n }\n\n /**\n * Get the history of a given state.\n * @param {string} id\n * @param {ioBroker.GetHistoryOptions} options\n * @returns {Promise<{values: ioBroker.GetHistoryResult; sesionId: string; stepIgnore: number}>}\n */\n getHistoryEx(id, options) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('getHistory', id, options, (err, values, stepIgnore, sessionId) =>\n err ? reject(err) : resolve({ values, sessionId, stepIgnore })));\n }\n\n /**\n * Change the password of the given user.\n * @param {string} user\n * @param {string} password\n * @returns {Promise<void>}\n */\n changePassword(user, password) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('changePassword', user, password, err =>\n err ? reject(err) : resolve()));\n }\n\n /**\n * Get the IP addresses of the given host.\n * @param {string} host\n * @param {boolean} [update] Force update.\n * @returns {Promise<string[]>}\n */\n getIpAddresses(host, update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!host.startsWith('system.host.')) {\n host = 'system.host.' + host;\n }\n\n if (!update && this._promises['IPs_' + host]) {\n return this._promises['IPs_' + host];\n }\n this._promises['IPs_' + host] = this.getObject(host)\n .then(obj => obj && obj.common ? obj.common.address || [] : []);\n\n return this._promises['IPs_' + host];\n }\n\n /**\n * Get the IP addresses with interface names of the given host or find host by IP.\n * @param {string} ipOrHostName\n * @param {boolean} [update] Force update.\n * @returns {Promise<any[<name, address, family>]>}\n */\n getHostByIp(ipOrHostName, update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (ipOrHostName.startsWith('system.host.')) {\n ipOrHostName = ipOrHostName.replace(/^system\\.host\\./, '');\n }\n\n if (!update && this._promises['rIPs_' + ipOrHostName]) {\n return this._promises['rIPs_' + ipOrHostName];\n }\n this._promises['rIPs_' + ipOrHostName] = new Promise(resolve =>\n this._socket.emit('getHostByIp', ipOrHostName, (ip, host) => {\n const IPs4 = [{name: '[IPv4] 0.0.0.0 - Listen on all IPs', address: '0.0.0.0', family: 'ipv4'}];\n const IPs6 = [{name: '[IPv6] :: - Listen on all IPs', address: '::', family: 'ipv6'}];\n if (host.native?.hardware?.networkInterfaces) {\n for (const eth in host.native.hardware.networkInterfaces) {\n if (!host.native.hardware.networkInterfaces.hasOwnProperty(eth)) {\n continue;\n }\n for (let num = 0; num < host.native.hardware.networkInterfaces[eth].length; num++) {\n if (host.native.hardware.networkInterfaces[eth][num].family !== 'IPv6') {\n IPs4.push({name: `[${host.native.hardware.networkInterfaces[eth][num].family}] ${host.native.hardware.networkInterfaces[eth][num].address} - ${eth}`, address: host.native.hardware.networkInterfaces[eth][num].address, family: 'ipv4'});\n } else {\n IPs6.push({name: `[${host.native.hardware.networkInterfaces[eth][num].family}] ${host.native.hardware.networkInterfaces[eth][num].address} - ${eth}`, address: host.native.hardware.networkInterfaces[eth][num].address, family: 'ipv6'});\n }\n }\n }\n }\n for (let i = 0; i < IPs6.length; i++) {\n IPs4.push(IPs6[i]);\n }\n resolve(IPs4);\n }));\n\n return this._promises['rIPs_' + ipOrHostName];\n }\n\n /**\n * Encrypt a text\n * @param {string} text\n * @returns {Promise<string>}\n */\n encrypt(text) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('encrypt', text, (err, text) =>\n err ? reject(err) : resolve(text)));\n }\n\n /**\n * Decrypt a text\n * @param {string} encryptedText\n * @returns {Promise<string>}\n */\n decrypt(encryptedText) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('decrypt', encryptedText, (err, text) =>\n err ? reject(err) : resolve(text)));\n }\n\n /**\n * Gets the version.\n * @returns {Promise<{version: string; serverName: string}>}\n */\n getVersion() {\n this._promises.version = this._promises.version || new Promise((resolve, reject) =>\n this._socket.emit('getVersion', (err, version, serverName) => {\n // support of old socket.io\n if (err && !version && typeof err === 'string' && err.match(/\\d+\\.\\d+\\.\\d+/)) {\n resolve({ version: err, serverName: 'socketio' });\n } else {\n return err ? reject(err) : resolve({ version, serverName });\n }\n }));\n\n return this._promises.version;\n }\n\n /**\n * Gets the web server name.\n * @returns {Promise<string>}\n */\n getWebServerName() {\n this._promises.webName = this._promises.webName || new Promise((resolve, reject) =>\n this._socket.emit('getAdapterName', (err, name) =>\n err ? reject(err) : resolve(name)));\n\n return this._promises.webName;\n }\n\n /**\n * Gets the admin version.\n * @deprecated use getVersion()\n * @returns {Promise<{version: string; serverName: string}>}\n */\n getAdminVersion() {\n console.log('Deprecated: use getVersion');\n return this.getVersion();\n }\n\n /**\n * Change access rights for file\n * @param {string} [adapter] adapter name\n * @param {string} [filename] file name with full path. it could be like vis.0/*\n * @param {object} [options] like {mode: 0x644}\n * @returns {Promise<{entries: array}>}\n */\n chmodFile(adapter, filename, options) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('chmodFile', adapter, filename, options, (err, entries, id) =>\n err ? reject(err) : resolve({entries, id})));\n }\n\n /**\n * Change owner or/and owner group for file\n * @param {string} [adapter] adapter name\n * @param {string} [filename] file name with full path. it could be like vis.0/*\n * @param {object} [options] like {owner: 'newOwner', ownerGroup: 'newGroup'}\n * @returns {Promise<{entries: array}>}\n */\n chownFile(adapter, filename, options) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('chownFile', adapter, filename, options, (err, entries, id) =>\n err ? reject(err) : resolve({entries, id})));\n }\n\n /**\n * Check if the file exists\n * @param {string} [adapter] adapter name\n * @param {string} [filename] file name with full path. it could be like vis.0/*\n * @returns {Promise<boolean>}\n */\n fileExists(adapter, filename) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('fileExists', adapter, filename, (err, exists) =>\n err ? reject(err) : resolve(exists)));\n }\n\n /**\n * Get the alarm notifications from a host (only for admin connection).\n * @param {string} host\n * @param {string} [category] - optional\n * @returns {Promise<any>}\n */\n getNotifications(host, category) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise(resolve =>\n this._socket.emit('sendToHost', host, 'getNotifications', {category}, notifications =>\n resolve(notifications)));\n }\n\n /**\n * Clear the alarm notifications on a host (only for admin connection).\n * @param {string} host\n * @param {string} [category] - optional\n * @returns {Promise<any>}\n */\n clearNotifications(host, category) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise(resolve =>\n this._socket.emit('sendToHost', host, 'clearNotifications', {category}, notifications =>\n resolve(notifications)));\n }\n\n /**\n * Read if only easy mode is allowed (only for admin connection).\n * @returns {Promise<boolean>}\n */\n getIsEasyModeStrict() {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('getIsEasyModeStrict', (error, isStrict) =>\n error ? reject(error) : resolve(isStrict)));\n }\n\n /**\n * Read easy mode configuration (only for admin connection).\n * @returns {Promise<any>}\n */\n getEasyMode() {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('getEasyMode', (error, config) =>\n error ? reject(error) : resolve(config)));\n }\n\n /**\n * Read current user\n * @returns {Promise<string>}\n */\n getCurrentUser() {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise(resolve =>\n this._socket.emit('authEnabled', (isSecure, user) =>\n resolve(user)));\n }\n\n getCurrentSession(cmdTimeout) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise((resolve, reject) => {\n const controller = new AbortController();\n\n let timeout = setTimeout(() => {\n if (timeout) {\n timeout = null;\n controller.abort();\n reject('getCurrentSession timeout');\n }\n }, cmdTimeout || 5000);\n\n return fetch('./session', { signal: controller.signal })\n .then(res => res.json())\n .then(json => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n resolve(json);\n }\n })\n .catch(e => {\n reject('getCurrentSession: ' + e);\n });\n });\n }\n\n /**\n * Read adapter ratings\n * @returns {Promise<any>}\n */\n getRatings(update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('getRatings', update, (err, ratings) =>\n err ? reject(err) : resolve(ratings)));\n }\n\n /**\n * Read current web, socketio or admin namespace, like admin.0\n * @returns {Promise<string>}\n */\n getCurrentInstance() {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.currentInstance = this._promises.currentInstance ||\n new Promise((resolve, reject) =>\n this._socket.emit('getCurrentInstance', (err, namespace) =>\n err ? reject(err) : resolve(namespace)));\n\n return this._promises.currentInstance;\n }\n\n // returns very optimized information for adapters to minimize connection load\n getCompactAdapters(update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!update && this._promises.compactAdapters) {\n return this._promises.compactAdapters;\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n this._promises.compactAdapters = new Promise((resolve, reject) =>\n this._socket.emit('getCompactAdapters', (err, adapters) =>\n err ? reject(err) : resolve(adapters)));\n\n return this._promises.compactAdapters;\n }\n\n // returns very optimized information for adapters to minimize connection load\n getCompactInstances(update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!update && this._promises.compactInstances) {\n return this._promises.compactInstances;\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.compactInstances = new Promise((resolve, reject) =>\n this._socket.emit('getCompactInstances', (err, instances) =>\n err ? reject(err) : resolve(instances)));\n\n return this._promises.compactInstances;\n }\n\n // returns very optimized information for adapters to minimize connection load\n // reads only version of installed adapter\n getCompactInstalled(host, update, cmdTimeout) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n\n this._promises.installedCompact = this._promises.installedCompact || {};\n\n if (!update && this._promises.installedCompact[host]) {\n return this._promises.installedCompact[host];\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n if (!host.startsWith('system.host.')) {\n host += 'system.host.' + host;\n }\n\n this._promises.installedCompact[host] = new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n if (timeout) {\n timeout = null;\n reject('getCompactInstalled timeout');\n }\n }, cmdTimeout || this.props.cmdTimeout);\n\n this._socket.emit('getCompactInstalled', host, data => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n if (data === PERMISSION_ERROR) {\n reject('May not read \"getCompactInstalled\"');\n } else if (!data) {\n reject('Cannot read \"getCompactInstalled\"');\n } else {\n resolve(data);\n }\n }\n });\n });\n\n return this._promises.installedCompact[host];\n }\n\n // returns very optimized information for adapters to minimize connection load\n getCompactSystemConfig(update) {\n if (!update && this._promises.systemConfigCommon) {\n return this._promises.systemConfigCommon;\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.systemConfigCommon = new Promise((resolve, reject) =>\n this._socket.emit('getCompactSystemConfig', (err, systemConfig) =>\n err ? reject(err) : resolve(systemConfig)));\n\n return this._promises.systemConfigCommon;\n }\n\n /**\n * Get the repository in compact form (only version and icon).\n * @param {string} host\n * @param {boolean} [update] Force update.\n * @param {number} [timeoutMs] timeout in ms.\n * @returns {Promise<any>}\n */\n getCompactRepository(host, update, timeoutMs) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!update && this._promises.repoCompact) {\n return this._promises.repoCompact;\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n if (!host.startsWith('system.host.')) {\n host += 'system.host.' + host;\n }\n\n this._promises.repoCompact = new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n if (timeout) {\n timeout = null;\n reject('getCompactRepository timeout');\n }\n }, timeoutMs || this.props.cmdTimeout);\n\n this._socket.emit('getCompactRepository', host, data => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n if (data === PERMISSION_ERROR) {\n reject('May not read \"getCompactRepository\"');\n } else if (!data) {\n reject('Cannot read \"getCompactRepository\"');\n } else {\n resolve(data);\n }\n }\n });\n });\n\n return this._promises.repoCompact;\n }\n\n /**\n * Get the list of all hosts in compact form (only _id, common.name, common.icon, common.color, native.hardware.networkInterfaces)\n * @param {boolean} [update] Force update.\n * @returns {Promise<ioBroker.Object[]>}\n */\n getCompactHosts(update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!update && this._promises.hostsCompact) {\n return this._promises.hostsCompact;\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.hostsCompact = new Promise((resolve, reject) =>\n this._socket.emit('getCompactHosts', (err, hosts) =>\n err ? reject(err) : resolve(hosts)));\n\n return this._promises.hostsCompact;\n }\n\n /**\n * Get uuid\n * @returns {Promise<ioBroker.Object[]>}\n */\n getUuid() {\n if (this._promises.uuid) {\n return this._promises.uuid;\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.uuid = this.getObject('system.meta.uuid')\n //@ts-ignore\n .then(obj => obj?.native?.uuid);\n\n return this._promises.uuid;\n }\n\n /**\n * Logout current user\n * @returns {Promise<null>}\n */\n logout() {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('logout', err =>\n err ? reject(err) : resolve(null)));\n }\n}\n\nConnection.Connection = {\n onLog: PropTypes.func,\n onReady: PropTypes.func,\n onProgress: PropTypes.func,\n};\n\nexport default Connection;\n"],"file":"Connection.js"}
|
|
1
|
+
{"version":3,"sources":["Connection.js"],"names":["PROGRESS","CONNECTING","CONNECTED","OBJECTS_LOADED","READY","PERMISSION_ERROR","NOT_CONNECTED","TIMEOUT_FOR_ADMIN4","ERRORS","fixAdminUI","obj","common","adminUI","noConfig","config","jsonConfig","materialize","jsonCustom","custom","supportCustoms","materializeTab","adminTab","tab","console","debug","_id","replace","JSON","stringify","Connection","props","protocol","window","location","host","hostname","autoSubscribes","autoSubscribeLog","port","isWeb","ioTimeout","Math","max","cmdTimeout","doNotLoadAllObjects","undefined","doNotLoadACL","states","objects","acl","firstConnect","waitForRestart","systemLang","connected","_waitForFirstConnection","Promise","resolve","_waitForFirstConnectionResolve","statesSubscribes","objectsSubscribes","onProgress","onError","err","error","loaded","loadTimer","loadCounter","admin5only","onConnectionHandlers","onLogHandlers","_promises","startSocket","io","registerSocketOnLoad","scriptLoadCounter","setTimeout","alert","_socket","socketUrl","parts","split","includes","url","connect","query","name","timeout","on","noTimeout","getVersion","then","info","version","major","minor","patch","v","parseInt","_authTimer","onPreConnect","emit","isOk","isSecure","reload","_subscribe","forEach","cb","subscribed","authenticate","message","onLog","_err","toString","operation","type","id","objectChange","state","stateChange","text","onCmdStdoutHandler","onCmdStderrHandler","exitCode","onCmdExitHandler","clearTimeout","onConnect","_getUserPermissions","vendorPrefix","getCompactSystemConfig","getSystemConfig","data","systemConfig","language","navigator","userLanguage","onLanguage","getObjects","onReady","e","search","pathname","hash","binary","reg","indexOf","RegExp","cbs","push","getBinaryState","base64","Object","keys","pos","splice","length","oldObj","changed","_rev","test","onObjectChange","task","hasOwnProperty","disableProgressUpdate","reject","res","STATES_LOADED","val","update","isEnable","isEnabled","maintenance","parse","from","user","ts","adapter","getObjectView","items","map","instances","adapters","objs","pop","oldId","newId","setObject","delObject","_renameGroups","newName","getGroups","groups","groupsToRename","filter","group","startsWith","substring","find","instance","command","result","handler","_enum","startkey","endkey","_res","i","rows","value","start","end","cert","getObject","certs","certificates","c","_cert","toLowerCase","m","t","trim","linesNumber","lines","files","fileName","btoa","Uint8Array","reduce","byte","String","fromCharCode","oldName","folderName","hosts","doc","item","users","timeoutMs","args","repo","installed","cmd","cmdId","feature","features","checkFeatureSupported","typeOfDiag","pattern","options","values","stepIgnore","sessionId","password","address","ipOrHostName","ip","IPs4","family","IPs6","hardware","networkInterfaces","eth","num","encryptedText","serverName","match","webName","log","filename","entries","exists","category","notifications","isStrict","controller","AbortController","abort","fetch","signal","json","ratings","currentInstance","namespace","compactAdapters","compactInstances","installedCompact","systemConfigCommon","repoCompact","hostsCompact","uuid","adapterName","PropTypes","func"],"mappings":"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","sourcesContent":["/**\n * Copyright 2020-2021, bluefox <dogafox@gmail.com>\n *\n * MIT License\n *\n **/\nimport PropTypes from 'prop-types';\n\n/** Possible progress states. */\nexport const PROGRESS = {\n /** The socket is connecting. */\n CONNECTING: 0,\n /** The socket is successfully connected. */\n CONNECTED: 1,\n /** All objects are loaded. */\n OBJECTS_LOADED: 2,\n /** The socket is ready for use. */\n READY: 3\n};\n\nconst PERMISSION_ERROR = 'permissionError';\nconst NOT_CONNECTED = 'notConnectedError';\nconst TIMEOUT_FOR_ADMIN4 = 1300;\n\nexport const ERRORS = {\n PERMISSION_ERROR,\n NOT_CONNECTED\n};\n\nfunction fixAdminUI(obj) {\n if (obj && obj.common && !obj.common.adminUI) {\n if (obj.common.noConfig) {\n obj.common.adminUI = obj.common.adminUI || {};\n obj.common.adminUI.config = 'none';\n } else if (obj.common.jsonConfig) {\n obj.common.adminUI = obj.common.adminUI || {};\n obj.common.adminUI.config = 'json';\n } else if (obj.common.materialize) {\n obj.common.adminUI = obj.common.adminUI || {};\n obj.common.adminUI.config = 'materialize';\n } else {\n obj.common.adminUI = obj.common.adminUI || {};\n obj.common.adminUI.config = 'html';\n }\n\n if (obj.common.jsonCustom) {\n obj.common.adminUI = obj.common.adminUI || {};\n obj.common.adminUI.custom = 'json';\n } else if (obj.common.supportCustoms) {\n obj.common.adminUI = obj.common.adminUI || {};\n obj.common.adminUI.custom = 'json';\n }\n\n if (obj.common.materializeTab && obj.common.adminTab) {\n obj.common.adminUI = obj.common.adminUI || {};\n obj.common.adminUI.tab = 'materialize';\n } else if (obj.common.adminTab) {\n obj.common.adminUI = obj.common.adminUI || {};\n obj.common.adminUI.tab = 'html';\n }\n\n obj.common.adminUI && console.debug(`Please add to \"${obj._id.replace(/\\.\\d+$/, '')}\" common.adminUI=${JSON.stringify(obj.common.adminUI)}`);\n }\n return obj;\n}\n\nclass Connection {\n /**\n * @param {import('./types').ConnectionProps} props\n */\n constructor(props) {\n props = props || { protocol: window.location.protocol, host: window.location.hostname };\n this.props = props;\n\n this.autoSubscribes = this.props.autoSubscribes || [];\n this.autoSubscribeLog = this.props.autoSubscribeLog;\n\n this.props.protocol = this.props.protocol || window.location.protocol;\n this.props.host = this.props.host || window.location.hostname;\n this.props.port = this.props.port || (window.location.port === '3000' ? (Connection.isWeb() ? 8082 : 8081) : window.location.port);\n this.props.ioTimeout = Math.max(this.props.ioTimeout || 20000, 20000);\n this.props.cmdTimeout = Math.max(this.props.cmdTimeout || 5000, 5000);\n\n // breaking change. Do not load all objects by default is true\n this.doNotLoadAllObjects = this.props.doNotLoadAllObjects === undefined ? true : this.props.doNotLoadAllObjects;\n this.doNotLoadACL = this.props.doNotLoadACL === undefined ? true : this.props.doNotLoadACL;\n\n /** @type {Record<string, ioBroker.State>} */\n this.states = {};\n this.objects = null;\n this.acl = null;\n this.firstConnect = true;\n this.waitForRestart = false;\n /** @type {ioBroker.Languages} */\n this.systemLang = 'en';\n this.connected = false;\n this._waitForFirstConnection = new Promise(resolve => { this._waitForFirstConnectionResolve = resolve });\n\n /** @type {Record<string, { reg: RegExp; cbs: ioBroker.StateChangeHandler[]}>} */\n this.statesSubscribes = {}; // subscribe for states\n\n /** @type {Record<string, { reg: RegExp; cbs: import('./types').ObjectChangeHandler[]}>} */\n this.objectsSubscribes = {}; // subscribe for objects\n this.onProgress = this.props.onProgress || function () { };\n this.onError = this.props.onError || function (err) { console.error(err); };\n this.loaded = false;\n this.loadTimer = null;\n this.loadCounter = 0;\n this.admin5only = this.props.admin5only || false;\n\n /** @type {((connected: boolean) => void)[]} */\n this.onConnectionHandlers = [];\n /** @type {((message: string) => void)[]} */\n this.onLogHandlers = [];\n\n /** @type {Record<string, Promise<any>>} */\n this._promises = {};\n this.startSocket();\n }\n\n /**\n * Checks if this connection is running in a web adapter and not in an admin.\n * @returns {boolean} True if running in a web adapter or in a socketio adapter.\n */\n static isWeb() {\n return window.adapterName === 'material' || window.adapterName === 'vis' || window.socketUrl !== undefined;\n }\n\n /**\n * Starts the socket.io connection.\n * @returns {void}\n */\n startSocket() {\n // if socket io is not yet loaded\n if (typeof window.io === 'undefined') {\n // if in index.html the onLoad function not defined\n if (typeof window.registerSocketOnLoad !== 'function') {\n // poll if loaded\n this.scriptLoadCounter = this.scriptLoadCounter || 0;\n this.scriptLoadCounter++;\n\n if (this.scriptLoadCounter < 30) {\n // wait till the script loaded\n setTimeout(() => this.startSocket(), 100);\n return;\n } else {\n window.alert('Cannot load socket.io.js!');\n }\n } else {\n // register on load\n window.registerSocketOnLoad(() => this.startSocket());\n }\n return;\n } else {\n // socket was initialized, do not repeat\n if (this._socket) {\n return;\n }\n }\n\n let host = this.props.host;\n let port = this.props.port;\n let protocol = this.props.protocol.replace(':', '');\n\n // if web adapter, socket io could be on other port or even host\n if (window.socketUrl) {\n let parts = window.socketUrl.split(':');\n host = parts[0] || host;\n port = parts[1] || port;\n if (host.includes('://')) {\n parts = host.split('://');\n protocol = parts[0];\n host = parts[1];\n }\n }\n\n const url = port ? `${protocol}://${host}:${port}` : `${protocol}://${host}`;\n\n this._socket = window.io.connect(\n url,\n {\n query: 'ws=true',\n name: this.props.name,\n timeout: this.props.ioTimeout\n }\n );\n\n this._socket.on('connect', noTimeout => {\n // If the user is not admin it takes some time to install the handlers, because all rights must be checked\n if (noTimeout !== true) {\n setTimeout(() =>\n this.getVersion()\n .then(info => {\n const [major, minor, patch] = info.version.split('.');\n const v = parseInt(major, 10) * 10000 + parseInt(minor, 10) * 100 + parseInt(patch, 10);\n if (v < 40102) {\n this._authTimer = null;\n // possible this is old version of admin\n this.onPreConnect(false, false);\n } else {\n this._socket.emit('authenticate', (isOk, isSecure) => this.onPreConnect(isOk, isSecure));\n }\n }), 500);\n } else {\n // iobroker websocket waits, till all handlers are installed\n this._socket.emit('authenticate', (isOk, isSecure) => this.onPreConnect(isOk, isSecure));\n }\n });\n\n this._socket.on('reconnect', () => {\n this.onProgress(PROGRESS.READY);\n this.connected = true;\n\n if (this.waitForRestart) {\n window.location.reload(false);\n } else {\n this._subscribe(true);\n this.onConnectionHandlers.forEach(cb => cb(true));\n }\n });\n\n this._socket.on('disconnect', () => {\n this.connected = false;\n this.subscribed = false;\n this.onProgress(PROGRESS.CONNECTING);\n this.onConnectionHandlers.forEach(cb => cb(false));\n });\n\n this._socket.on('reauthenticate', () =>\n this.authenticate());\n\n this._socket.on('log', message => {\n this.props.onLog && this.props.onLog(message);\n this.onLogHandlers.forEach(cb => cb(message));\n });\n\n this._socket.on('error', err => {\n let _err = err || '';\n if (typeof _err.toString !== 'function') {\n _err = JSON.stringify(_err);\n console.error(`Received strange error: ${_err}`);\n }\n _err = _err.toString();\n if (_err.includes('User not authorized')) {\n this.authenticate();\n } else {\n window.alert(`Socket Error: ${err}`);\n }\n });\n\n this._socket.on('connect_error', err =>\n console.error(`Connect error: ${err}`));\n\n this._socket.on('permissionError', err =>\n this.onError({ message: 'no permission', operation: err.operation, type: err.type, id: (err.id || '') }));\n\n this._socket.on('objectChange', (id, obj) =>\n setTimeout(() => this.objectChange(id, obj), 0));\n\n this._socket.on('stateChange', (id, state) =>\n setTimeout(() => this.stateChange(id, state), 0));\n\n this._socket.on('cmdStdout', (id, text) =>\n this.onCmdStdoutHandler && this.onCmdStdoutHandler(id, text));\n\n this._socket.on('cmdStderr', (id, text) =>\n this.onCmdStderrHandler && this.onCmdStderrHandler(id, text));\n\n this._socket.on('cmdExit', (id, exitCode) =>\n this.onCmdExitHandler && this.onCmdExitHandler(id, exitCode));\n }\n\n /**\n * Called internally.\n * @private\n * @param {boolean} isOk\n * @param {boolean} isSecure\n */\n onPreConnect(isOk, isSecure) {\n if (this._authTimer) {\n clearTimeout(this._authTimer);\n this._authTimer = null;\n }\n\n this.connected = true;\n this.isSecure = isSecure;\n\n if (this.waitForRestart) {\n window.location.reload(false);\n } else {\n if (this.firstConnect) {\n // retry strategy\n this.loadTimer = setTimeout(() => {\n this.loadTimer = null;\n this.loadCounter++;\n if (this.loadCounter < 10) {\n this.onConnect();\n }\n }, 1000);\n\n if (!this.loaded) {\n this.onConnect();\n }\n } else {\n this.onProgress(PROGRESS.READY);\n }\n\n this._subscribe(true);\n this.onConnectionHandlers.forEach(cb => cb(true));\n }\n\n if (this._waitForFirstConnectionResolve) {\n this._waitForFirstConnectionResolve();\n this._waitForFirstConnectionResolve = null;\n }\n }\n\n /**\n * Checks if the socket is connected.\n * @returns {boolean} true if connected.\n */\n isConnected() {\n return this.connected;\n }\n\n /**\n * Checks if the socket is connected.\n * @returns {Promise<void>} Promise resolves if once connected.\n */\n waitForFirstConnection() {\n return this._waitForFirstConnection;\n }\n\n /**\n * Called internally.\n * @private\n */\n _getUserPermissions(cb) {\n if (this.doNotLoadACL) {\n return cb && cb();\n } else {\n this._socket.emit('getUserPermissions', cb);\n }\n }\n\n /**\n * Called internally.\n * @private\n */\n onConnect() {\n this._getUserPermissions((err, acl) => {\n if (err) {\n return this.onError('Cannot read user permissions: ' + err);\n } else\n if (!this.doNotLoadACL) {\n if (this.loaded) {\n return;\n }\n this.loaded = true;\n clearTimeout(this.loadTimer);\n this.loadTimer = null;\n\n this.onProgress(PROGRESS.CONNECTED);\n this.firstConnect = false;\n\n this.acl = acl;\n }\n\n // Read system configuration\n return (this.admin5only && !window.vendorPrefix ? this.getCompactSystemConfig() : this.getSystemConfig())\n .then(data => {\n if (this.doNotLoadACL) {\n if (this.loaded) {\n return undefined;\n }\n this.loaded = true;\n clearTimeout(this.loadTimer);\n this.loadTimer = null;\n\n this.onProgress(PROGRESS.CONNECTED);\n this.firstConnect = false;\n }\n\n this.systemConfig = data;\n if (this.systemConfig && this.systemConfig.common) {\n this.systemLang = this.systemConfig.common.language;\n } else {\n this.systemLang = window.navigator.userLanguage || window.navigator.language;\n\n if (this.systemLang !== 'en' && this.systemLang !== 'de' && this.systemLang !== 'ru') {\n this.systemConfig.common.language = 'en';\n this.systemLang = 'en';\n }\n }\n\n this.props.onLanguage && this.props.onLanguage(this.systemLang);\n\n if (!this.doNotLoadAllObjects) {\n return this.getObjects()\n .then(() => {\n this.onProgress(PROGRESS.READY);\n this.props.onReady && this.props.onReady(this.objects);\n });\n } else {\n this.objects = this.admin5only ? {} : { 'system.config': data };\n this.onProgress(PROGRESS.READY);\n this.props.onReady && this.props.onReady(this.objects);\n }\n return undefined;\n })\n .catch(e => this.onError('Cannot read system config: ' + e));\n });\n }\n\n /**\n * Called internally.\n * @private\n */\n authenticate() {\n if (window.location.search.includes('&href=')) {\n window.location = `${window.location.protocol}//${window.location.host}${window.location.pathname}${window.location.search}${window.location.hash}`;\n } else {\n window.location = `${window.location.protocol}//${window.location.host}${window.location.pathname}?login&href=${window.location.search}${window.location.hash}`;\n }\n }\n\n /**\n * Subscribe to changes of the given state.\n * @param {string} id The ioBroker state ID.\n * @param {ioBroker.StateChangeHandler} cb The callback.\n */\n /**\n * Subscribe to changes of the given state.\n * @param {string} id The ioBroker state ID.\n * @param {boolean} binary Set to true if the given state is binary and requires Base64 decoding.\n * @param {ioBroker.StateChangeHandler} cb The callback.\n */\n subscribeState(id, binary, cb) {\n if (typeof binary === 'function') {\n cb = binary;\n binary = false;\n }\n\n if (!this.statesSubscribes[id]) {\n let reg = id\n .replace(/\\./g, '\\\\.')\n .replace(/\\*/g, '.*')\n .replace(/\\(/g, '\\\\(')\n .replace(/\\)/g, '\\\\)')\n .replace(/\\+/g, '\\\\+')\n .replace(/\\[/g, '\\\\[');\n\n if (reg.indexOf('*') === -1) {\n reg += '$';\n }\n this.statesSubscribes[id] = { reg: new RegExp(reg), cbs: [] };\n this.statesSubscribes[id].cbs.push(cb);\n if (this.connected) {\n this._socket.emit('subscribe', id);\n }\n } else {\n !this.statesSubscribes[id].cbs.includes(cb) && this.statesSubscribes[id].cbs.push(cb);\n }\n if (typeof cb === 'function' && this.connected) {\n if (binary) {\n this.getBinaryState(id)\n .then(base64 => cb(id, base64))\n .catch(e => console.error(`Cannot getForeignStates \"${id}\": ${JSON.stringify(e)}`));\n } else {\n if (Connection.isWeb()) {\n this._socket.emit('getStates', id, (err, states) => {\n err && console.error(`Cannot getForeignStates \"${id}\": ${JSON.stringify(err)}`);\n states && Object.keys(states).forEach(id => cb(id, states[id]));\n });\n } else {\n this._socket.emit('getForeignStates', id, (err, states) => {\n err && console.error(`Cannot getForeignStates \"${id}\": ${JSON.stringify(err)}`);\n states && Object.keys(states).forEach(id => cb(id, states[id]));\n });\n }\n }\n }\n }\n\n /**\n * Unsubscribes all callbacks from changes of the given state.\n * @param {string} id The ioBroker state ID.\n */\n /**\n * Unsubscribes the given callback from changes of the given state.\n * @param {string} id The ioBroker state ID.\n * @param {ioBroker.StateChangeHandler} cb The callback.\n */\n unsubscribeState(id, cb) {\n if (this.statesSubscribes[id]) {\n if (cb) {\n const pos = this.statesSubscribes[id].cbs.indexOf(cb);\n pos !== -1 && this.statesSubscribes[id].cbs.splice(pos, 1);\n } else {\n this.statesSubscribes[id].cbs = [];\n }\n\n if (!this.statesSubscribes[id].cbs || !this.statesSubscribes[id].cbs.length) {\n delete this.statesSubscribes[id];\n this.connected && this._socket.emit('unsubscribe', id);\n }\n }\n }\n\n /**\n * Subscribe to changes of the given object.\n * @param {string} id The ioBroker object ID.\n * @param {import('./types').ObjectChangeHandler} cb The callback.\n * @returns {Promise<void>}\n */\n subscribeObject(id, cb) {\n if (!this.objectsSubscribes[id]) {\n let reg = id.replace(/\\./g, '\\\\.').replace(/\\*/g, '.*');\n if (!reg.includes('*')) {\n reg += '$';\n }\n this.objectsSubscribes[id] = { reg: new RegExp(reg), cbs: [] };\n this.objectsSubscribes[id].cbs.push(cb);\n this.connected && this._socket.emit('subscribeObjects', id);\n } else {\n !this.objectsSubscribes[id].cbs.includes(cb) && this.objectsSubscribes[id].cbs.push(cb);\n }\n return Promise.resolve();\n }\n\n /**\n * Unsubscribes all callbacks from changes of the given object.\n * @param {string} id The ioBroker object ID.\n * @returns {Promise<void>}\n */\n /**\n * Unsubscribes the given callback from changes of the given object.\n * @param {string} id The ioBroker object ID.\n * @param {import('./types').ObjectChangeHandler} cb The callback.\n * @returns {Promise<void>}\n */\n unsubscribeObject(id, cb) {\n if (this.objectsSubscribes[id]) {\n if (cb) {\n const pos = this.objectsSubscribes[id].cbs.indexOf(cb);\n pos !== -1 && this.objectsSubscribes[id].cbs.splice(pos, 1);\n } else {\n this.objectsSubscribes[id].cbs = [];\n }\n\n if (this.connected && (!this.objectsSubscribes[id].cbs || !this.objectsSubscribes[id].cbs.length)) {\n delete this.objectsSubscribes[id];\n this.connected && this._socket.emit('unsubscribeObjects', id);\n }\n }\n return Promise.resolve();\n }\n\n /**\n * Called internally.\n * @private\n * @param {string} id\n * @param {ioBroker.Object | null | undefined} obj\n */\n objectChange(id, obj) {\n // update main.objects cache\n if (!this.objects) {\n return;\n }\n\n /** @type {import(\"./types\").OldObject} */\n let oldObj;\n\n let changed = false;\n if (obj) {\n if (obj._rev && this.objects[id]) {\n this.objects[id]._rev = obj._rev;\n }\n\n if (this.objects[id]) {\n oldObj = { _id: id, type: this.objects[id].type };\n }\n\n if (!this.objects[id] || JSON.stringify(this.objects[id]) !== JSON.stringify(obj)) {\n this.objects[id] = obj;\n changed = true;\n }\n } else if (this.objects[id]) {\n oldObj = { _id: id, type: this.objects[id].type };\n delete this.objects[id];\n changed = true;\n }\n\n Object.keys(this.objectsSubscribes).forEach(_id => {\n if (_id === id || this.objectsSubscribes[_id].reg.test(id)) {\n //@ts-ignore\n this.objectsSubscribes[_id].cbs.forEach(cb => cb(id, obj, oldObj));\n }\n });\n\n if (changed && this.props.onObjectChange) {\n this.props.onObjectChange(id, obj);\n }\n }\n\n /**\n * Called internally.\n * @private\n * @param {string} id\n * @param {ioBroker.State | null | undefined} state\n */\n stateChange(id, state) {\n for (const task in this.statesSubscribes) {\n if (this.statesSubscribes.hasOwnProperty(task) && this.statesSubscribes[task].reg.test(id)) {\n this.statesSubscribes[task].cbs.forEach(cb => cb(id, state));\n }\n }\n }\n\n /**\n * Gets all states.\n * @param {boolean} disableProgressUpdate don't call onProgress() when done\n * @returns {Promise<Record<string, ioBroker.State>>}\n */\n getStates(disableProgressUpdate) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('getStates', (err, res) => {\n this.states = res;\n //@ts-ignore\n !disableProgressUpdate && this.onProgress(PROGRESS.STATES_LOADED);\n return err ? reject(err) : resolve(this.states);\n }));\n }\n\n /**\n * Gets the given state.\n * @param {string} id The state ID.\n * @returns {Promise<ioBroker.State | null | undefined>}\n */\n getState(id) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('getState', id, (err, state) => err ? reject(err) : resolve(state)));\n }\n\n /**\n * Gets the given binary state.\n * @param {string} id The state ID.\n * @returns {Promise<Buffer | undefined>}\n */\n getBinaryState(id) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n // the data will come in base64\n return new Promise((resolve, reject) =>\n this._socket.emit('getBinaryState', id, (err, state) => err ? reject(err) : resolve(state)));\n }\n\n /**\n * Sets the given binary state.\n * @param {string} id The state ID.\n * @param {string} base64 The Base64 encoded binary data.\n * @returns {Promise<void>}\n */\n setBinaryState(id, base64) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n // the data will come in base64\n return new Promise((resolve, reject) =>\n this._socket.emit('setBinaryState', id, base64, err => err ? reject(err) : resolve()));\n }\n\n /**\n * Sets the given state value.\n * @param {string} id The state ID.\n * @param {string | number | boolean | ioBroker.State | ioBroker.SettableState | null} val The state value.\n * @returns {Promise<void>}\n */\n setState(id, val) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('setState', id, val, err =>\n err ? reject(err) : resolve()));\n }\n\n /**\n * Gets all objects.\n * @param {(objects?: Record<string, ioBroker.Object>) => void} update Callback that is executed when all objects are retrieved.\n * @returns {void}\n */\n /**\n * Gets all objects.\n * @param {boolean} update Set to true to retrieve all objects from the server (instead of using the local cache).\n * @param {boolean} disableProgressUpdate don't call onProgress() when done\n * @returns {Promise<Record<string, ioBroker.Object>> | undefined}\n */\n getObjects(update, disableProgressUpdate) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n } else {\n return new Promise((resolve, reject) => {\n if (!update && this.objects) {\n return resolve(this.objects);\n }\n\n this._socket.emit(Connection.isWeb() ? 'getObjects' : 'getAllObjects', (err, res) => {\n this.objects = res;\n disableProgressUpdate && this.onProgress(PROGRESS.OBJECTS_LOADED);\n err ? reject(err) : resolve(this.objects);\n });\n });\n }\n }\n\n /**\n * Called internally.\n * @private\n * @param {boolean} isEnable\n */\n _subscribe(isEnable) {\n if (isEnable && !this.subscribed) {\n this.subscribed = true;\n this.autoSubscribes.forEach(id => this._socket.emit('subscribeObjects', id));\n // re subscribe objects\n Object.keys(this.objectsSubscribes).forEach(id => this._socket.emit('subscribeObjects', id));\n // re-subscribe logs\n this.autoSubscribeLog && this._socket.emit('requireLog', true);\n // re subscribe states\n Object.keys(this.statesSubscribes).forEach(id => this._socket.emit('subscribe', id));\n } else if (!isEnable && this.subscribed) {\n this.subscribed = false;\n // un-subscribe objects\n this.autoSubscribes.forEach(id => this._socket.emit('unsubscribeObjects', id));\n Object.keys(this.objectsSubscribes).forEach(id => this._socket.emit('unsubscribeObjects', id));\n // un-subscribe logs\n this.autoSubscribeLog && this._socket.emit('requireLog', false);\n\n // un-subscribe states\n Object.keys(this.statesSubscribes).forEach(id => this._socket.emit('unsubscribe', id));\n }\n }\n\n /**\n * Requests log updates.\n * @param {boolean} isEnabled Set to true to get logs.\n * @returns {Promise<void>}\n */\n requireLog(isEnabled) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('requireLog', isEnabled, err =>\n err ? reject(err) : resolve()));\n }\n\n /**\n * Deletes the given object.\n * @param {string} id The object ID.\n * @param {boolean} maintenance Force deletion of non conform IDs.\n * @returns {Promise<void>}\n */\n delObject(id, maintenance) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('delObject', id, { maintenance: !!maintenance }, err =>\n err ? reject(err) : resolve()));\n }\n\n /**\n * Deletes the given object and all its children.\n * @param {string} id The object ID.\n * @param {boolean} maintenance Force deletion of non conform IDs.\n * @returns {Promise<void>}\n */\n delObjects(id, maintenance) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('delObjects', id, {maintenance: !!maintenance}, err =>\n err ? reject(err) : resolve()));\n }\n\n /**\n * Sets the object.\n * @param {string} id The object ID.\n * @param {ioBroker.SettableObject} obj The object.\n * @returns {Promise<void>}\n */\n setObject(id, obj) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n if (!obj) {\n return Promise.reject('Null object is not allowed');\n }\n\n obj = JSON.parse(JSON.stringify(obj));\n\n if (obj.hasOwnProperty('from')) {\n delete obj.from;\n }\n if (obj.hasOwnProperty('user')) {\n delete obj.user;\n }\n if (obj.hasOwnProperty('ts')) {\n delete obj.ts;\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('setObject', id, obj, err =>\n err ? reject(err) : resolve()));\n }\n\n /**\n * Gets the object with the given id from the server.\n * @param {string} id The object ID.\n * @returns {ioBroker.GetObjectPromise} The object.\n */\n getObject(id) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('getObject', id, (err, obj) =>\n err ? reject(err) : resolve(obj)));\n }\n\n /**\n * Get all adapter instances.\n * @param {boolean} [update] Force update.\n * @returns {Promise<ioBroker.Object[]>}\n */\n /**\n * Get all instances of the given adapter.\n * @param {string} adapter The name of the adapter.\n * @param {boolean} [update] Force update.\n * @returns {Promise<ioBroker.Object[]>}\n */\n getAdapterInstances(adapter, update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n\n if (typeof adapter === 'boolean') {\n update = adapter;\n adapter = '';\n }\n adapter = adapter || '';\n\n if (!update && this._promises['instances_' + adapter]) {\n return this._promises['instances_' + adapter];\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises['instances_' + adapter] = new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n timeout = null;\n this.getObjectView(\n `system.adapter.${adapter}.`,\n `system.adapter.${adapter}.\\u9999`,\n 'instance'\n )\n .then(items => resolve(Object.keys(items).map(id => fixAdminUI(items[id]))))\n .catch(e => reject(e));\n }, TIMEOUT_FOR_ADMIN4);\n\n this._socket.emit('getAdapterInstances', adapter, (err, instances) => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n return err ? reject(err) : resolve(instances);\n }\n });\n });\n\n return this._promises['instances_' + adapter];\n }\n\n /**\n * Get all adapters.\n * @param {boolean} [update] Force update.\n * @returns {Promise<ioBroker.Object[]>}\n */\n /**\n * Get adapters with the given name.\n * @param {string} adapter The name of the adapter.\n * @param {boolean} [update] Force update.\n * @returns {Promise<ioBroker.Object[]>}\n */\n getAdapters(adapter, update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n\n if (typeof adapter === 'boolean') {\n update = adapter;\n adapter = '';\n }\n\n adapter = adapter || '';\n\n if (!update && this._promises['adapter_' + adapter]) {\n return this._promises['adapter_' + adapter];\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises['adapter_' + adapter] = new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n timeout = null;\n this.getObjectView(\n `system.adapter.${adapter}.`,\n `system.adapter.${adapter}.\\u9999`,\n 'adapter'\n )\n .then(items => resolve(Object.keys(items).map(id => fixAdminUI(items[id]))))\n .catch(e => reject(e));\n }, TIMEOUT_FOR_ADMIN4);\n\n this._socket.emit('getAdapters', adapter, (err, adapters) => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n return err ? reject(err) : resolve(adapters);\n }\n });\n });\n\n return this._promises['adapter_' + adapter];\n }\n\n /**\n * Called internally.\n * @private\n * @param {any[]} objs\n * @param {(err?: any) => void} cb\n */\n _renameGroups(objs, cb) {\n if (!objs || !objs.length) {\n cb && cb();\n } else {\n let obj = objs.pop();\n let oldId = obj._id;\n obj._id = obj.newId;\n delete obj.newId;\n\n this.setObject(obj._id, obj)\n .then(() => this.delObject(oldId))\n .then(() => setTimeout(() => this._renameGroups(objs, cb), 0))\n .catch(err => cb && cb(err));\n }\n }\n\n /**\n * Rename a group.\n * @param {string} id The id.\n * @param {string} newId The new id.\n * @param {string | { [lang in ioBroker.Languages]?: string; }} newName The new name.\n */\n renameGroup(id, newId, newName) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n\n return this.getGroups(true)\n .then(groups => {\n if (groups.length) {\n // find all elements\n const groupsToRename = groups\n .filter(group => group._id.startsWith(id + '.'));\n\n groupsToRename.forEach(group => group.newId = newId + group._id.substring(id.length));\n\n return new Promise((resolve, reject) =>\n this._renameGroups(groupsToRename, err => err ? reject(err) : resolve()))\n .then(() => {\n const obj = groups.find(group => group._id === id);\n\n if (obj) {\n obj._id = newId;\n if (newName !== undefined) {\n obj.common = obj.common || {};\n obj.common.name = newName;\n }\n\n return this.setObject(obj._id, obj)\n .then(() => this.delObject(id));\n }\n });\n }\n });\n }\n\n /**\n * Sends a message to a specific instance or all instances of some specific adapter.\n * @param {string} instance The instance to send this message to.\n * @param {string} [command] Command name of the target instance.\n * @param {ioBroker.MessagePayload} [data] The message data to send.\n * @returns {Promise<ioBroker.Message | undefined>}\n */\n sendTo(instance, command, data) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise(resolve =>\n this._socket.emit('sendTo', instance, command, data, result =>\n resolve(result)));\n }\n\n /**\n * Extend an object and create it if it might not exist.\n * @param {string} id The id.\n * @param {ioBroker.PartialObject} obj The object.\n */\n extendObject(id, obj) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n obj = JSON.parse(JSON.stringify(obj));\n\n if (obj.hasOwnProperty('from')) {\n delete obj.from;\n }\n if (obj.hasOwnProperty('user')) {\n delete obj.user;\n }\n if (obj.hasOwnProperty('ts')) {\n delete obj.ts;\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('extendObject', id, obj, err => err ? reject(err) : resolve()));\n }\n\n /**\n * Register a handler for log messages.\n * @param {(message: string) => void} handler The handler.\n */\n registerLogHandler(handler) {\n !this.onLogHandlers.includes(handler) && this.onLogHandlers.push(handler);\n }\n\n /**\n * Unregister a handler for log messages.\n * @param {(message: string) => void} handler The handler.\n */\n unregisterLogHandler(handler) {\n const pos = this.onLogHandlers.indexOf(handler);\n pos !== -1 && this.onLogHandlers.splice(pos, 1);\n }\n\n /**\n * Register a handler for the connection state.\n * @param {(connected: boolean) => void} handler The handler.\n */\n registerConnectionHandler(handler) {\n !this.onConnectionHandlers.includes(handler) && this.onConnectionHandlers.push(handler);\n }\n\n /**\n * Unregister a handler for the connection state.\n * @param {(connected: boolean) => void} handler The handler.\n */\n unregisterConnectionHandler(handler) {\n const pos = this.onConnectionHandlers.indexOf(handler);\n pos !== -1 && this.onConnectionHandlers.splice(pos, 1);\n }\n\n /**\n * Set the handler for standard output of a command.\n * @param {(id: string, text: string) => void} handler The handler.\n */\n registerCmdStdoutHandler(handler) {\n this.onCmdStdoutHandler = handler;\n }\n\n /**\n * Unset the handler for standard output of a command.\n * @param {(id: string, text: string) => void} handler The handler.\n */\n unregisterCmdStdoutHandler(handler) {\n this.onCmdStdoutHandler = null;\n }\n\n /**\n * Set the handler for standard error of a command.\n * @param {(id: string, text: string) => void} handler The handler.\n */\n registerCmdStderrHandler(handler) {\n this.onCmdStderrHandler = handler;\n }\n\n /**\n * Unset the handler for standard error of a command.\n * @param {(id: string, text: string) => void} handler The handler.\n */\n unregisterCmdStderrHandler(handler) {\n this.onCmdStderrHandler = null;\n }\n\n /**\n * Set the handler for exit of a command.\n * @param {(id: string, exitCode: number) => void} handler The handler.\n */\n registerCmdExitHandler(handler) {\n this.onCmdExitHandler = handler;\n }\n\n /**\n * Unset the handler for exit of a command.\n * @param {(id: string, exitCode: number) => void} handler The handler.\n */\n unregisterCmdExitHandler(handler) {\n this.onCmdExitHandler = null;\n }\n\n /**\n * Get all enums with the given name.\n * @param {string} [_enum] The name of the enum\n * @param {boolean} [update] Force update.\n * @returns {Promise<Record<string, ioBroker.Object>>}\n */\n getEnums(_enum, update) {\n if (!update && this._promises['enums_' + (_enum || 'all')]) {\n return this._promises['enums_' + (_enum || 'all')];\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises['enums_' + (_enum || 'all')] = new Promise((resolve, reject) => {\n this._socket.emit('getObjectView', 'system', 'enum', { startkey: 'enum.' + (_enum || ''), endkey: 'enum.' + (_enum ? (_enum + '.') : '') + '\\u9999' }, (err, res) => {\n if (!err && res) {\n const _res = {};\n for (let i = 0; i < res.rows.length; i++) {\n if (_enum && res.rows[i].id === 'enum.' + _enum) {\n continue;\n }\n _res[res.rows[i].id] = res.rows[i].value;\n }\n resolve(_res);\n } else {\n reject(err);\n }\n });\n });\n\n return this._promises['enums_' + (_enum || 'all')];\n }\n\n /**\n * Query a predefined object view.\n * @param {string} start The start ID.\n * @param {string} end The end ID.\n * @param {string} type The type of object.\n * @returns {Promise<Record<string, ioBroker.Object>>}\n */\n getObjectView(start, end, type) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n start = start || '';\n end = end || '\\u9999';\n\n return new Promise((resolve, reject) => {\n this._socket.emit('getObjectView', 'system', type, { startkey: start, endkey: end }, (err, res) => {\n if (!err) {\n const _res = {};\n if (res && res.rows) {\n for (let i = 0; i < res.rows.length; i++) {\n _res[res.rows[i].id] = res.rows[i].value;\n }\n }\n resolve(_res);\n } else {\n reject(err);\n }\n });\n });\n }\n\n /**\n * Get the stored certificates.\n * @param {boolean} [update] Force update.\n * @returns {Promise<{name: string; type: 'public' | 'private' | 'chained'}[]>}\n */\n getCertificates(update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n\n if (this._promises.cert && !update) {\n return this._promises.cert;\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.cert = this.getObject('system.certificates')\n .then(res => {\n const certs = [];\n if (res && res.native && res.native.certificates) {\n Object.keys(res.native.certificates).forEach(c => {\n const cert = res.native.certificates[c];\n if (!cert) {\n return;\n }\n const _cert = {\n name: c,\n type: ''\n };\n // If it is filename, it could be everything\n if (cert.length < 700 && (cert.indexOf('/') !== -1 || cert.indexOf('\\\\') !== -1)) {\n if (c.toLowerCase().includes('private')) {\n _cert.type = 'private';\n } else if (cert.toLowerCase().includes('private')) {\n _cert.type = 'private';\n } else if (c.toLowerCase().includes('public')) {\n _cert.type = 'public';\n } else if (cert.toLowerCase().includes('public')) {\n _cert.type = 'public';\n }\n certs.push(_cert);\n } else {\n _cert.type = (cert.substring(0, '-----BEGIN RSA PRIVATE KEY'.length) === '-----BEGIN RSA PRIVATE KEY' || cert.substring(0, '-----BEGIN PRIVATE KEY'.length) === '-----BEGIN PRIVATE KEY') ? 'private' : 'public';\n\n if (_cert.type === 'public') {\n const m = cert.split('-----END CERTIFICATE-----');\n if (m.filter(t => t.replace(/\\r\\n|\\r|\\n/, '').trim()).length > 1) {\n _cert.type = 'chained';\n }\n }\n\n certs.push(_cert);\n }\n });\n }\n return certs;\n });\n\n return this._promises.cert;\n }\n\n /**\n * Get the logs from a host (only for admin connection).\n * @param {string} host\n * @param {number} [linesNumber]\n * @returns {Promise<string[]>}\n */\n getLogs(host, linesNumber) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise(resolve =>\n this._socket.emit('sendToHost', host, 'getLogs', linesNumber || 200, lines =>\n resolve(lines)));\n }\n\n /**\n * Get the log files (only for admin connection).\n * @returns {Promise<string[]>}\n */\n getLogsFiles(host) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('readLogs', host, (err, files) =>\n err ? reject(err) : resolve(files)));\n }\n\n /**\n * Delete the logs from a host (only for admin connection).\n * @param {string} host\n * @returns {Promise<void>}\n */\n delLogs(host) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('sendToHost', host, 'delLogs', null, error =>\n error ? reject(error) : resolve()));\n }\n\n /**\n * Read the meta items.\n * @returns {Promise<ioBroker.Object[]>}\n */\n readMetaItems() {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('getObjectView', 'system', 'meta', { startkey: '', endkey: '\\u9999' }, (err, objs) =>\n err ? reject(err) : resolve(objs.rows && objs.rows.map(obj => obj.value))));\n }\n\n /**\n * Read the directory of an adapter.\n * @param {string} adapter The adapter name.\n * @param {string} fileName The directory name.\n * @returns {Promise<ioBroker.ReadDirResult[]>}\n */\n readDir(adapter, fileName) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('readDir', adapter, fileName, (err, files) =>\n err ? reject(err) : resolve(files)));\n }\n\n /**\n * Read a file of an adapter.\n * @param {string} adapter The adapter name.\n * @param {string} fileName The file name.\n * @param {boolean} base64 If it must be a base64 format\n * @returns {Promise<string>}\n */\n readFile(adapter, fileName, base64) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) => {\n if (!base64) {\n this._socket.emit('readFile', adapter, fileName, (err, data, type) => {\n //@ts-ignore\n err ? reject(err) : resolve({data, type});\n });\n } else {\n this._socket.emit('readFile64', adapter, fileName, base64, (err, data) =>\n err ? reject(err) : resolve(data));\n }\n });\n }\n\n /**\n * Write a file of an adapter.\n * @param {string} adapter The adapter name.\n * @param {string} fileName The file name.\n * @param {Buffer | string} data The data (if it's a Buffer, it will be converted to Base64).\n * @returns {Promise<void>}\n */\n writeFile64(adapter, fileName, data) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) => {\n if (typeof data === 'string') {\n this._socket.emit('writeFile', adapter, fileName, data, err =>\n err ? reject(err) : resolve());\n } else {\n const base64 = btoa(\n new Uint8Array(data)\n .reduce((data, byte) => data + String.fromCharCode(byte), '')\n );\n\n this._socket.emit('writeFile64', adapter, fileName, base64, err =>\n err ? reject(err) : resolve());\n }\n });\n }\n\n /**\n * Rename a file or folder of an adapter.\n *\n * All files in folder will be renamed too.\n * @param {string} adapter The adapter name.\n * @param {string} oldName The file name of the file to be renamed.\n * @param {string} newName The new file name.\n * @returns {Promise<void>}\n */\n rename(adapter, oldName, newName) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('rename', adapter, oldName, newName, err =>\n err ? reject(err) : resolve()));\n }\n\n /**\n * Delete a file of an adapter.\n * @param {string} adapter The adapter name.\n * @param {string} fileName The file name.\n * @returns {Promise<void>}\n */\n deleteFile(adapter, fileName) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('unlink', adapter, fileName, err =>\n err ? reject(err) : resolve()));\n }\n\n /**\n * Delete a folder of an adapter.\n * All files in folder will be deleted.\n * @param {string} adapter The adapter name.\n * @param {string} folderName The folder name.\n * @returns {Promise<void>}\n */\n deleteFolder(adapter, folderName) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('deleteFolder', adapter, folderName, err =>\n err ? reject(err) : resolve()));\n }\n\n /**\n * Get the list of all hosts.\n * @param {boolean} [update] Force update.\n * @returns {Promise<ioBroker.Object[]>}\n */\n getHosts(update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!update && this._promises.hosts) {\n return this._promises.hosts;\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.hosts = new Promise((resolve, reject) =>\n this._socket.emit(\n 'getObjectView',\n 'system',\n 'host',\n {startkey: 'system.host.', endkey: 'system.host.\\u9999'},\n (err, doc) => {\n if (err) {\n reject(err);\n } else {\n resolve(doc.rows.map(item => item.value));\n }\n }));\n\n return this._promises.hosts;\n }\n\n /**\n * Get the list of all users.\n * @param {boolean} [update] Force update.\n * @returns {Promise<ioBroker.Object[]>}\n */\n getUsers(update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!update && this._promises.users) {\n return this._promises.users;\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.users = new Promise((resolve, reject) =>\n this._socket.emit(\n 'getObjectView',\n 'system',\n 'user',\n {startkey: 'system.user.', endkey: 'system.user.\\u9999'},\n (err, doc) => {\n if (err) {\n reject(err);\n } else {\n resolve(doc.rows.map(item => item.value));\n }\n }));\n\n return this._promises.users;\n }\n\n /**\n * Get the list of all groups.\n * @param {boolean} [update] Force update.\n * @returns {Promise<ioBroker.Object[]>}\n */\n getGroups(update) {\n if (!update && this._promises.groups) {\n return this._promises.groups;\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.groups = new Promise((resolve, reject) =>\n this._socket.emit(\n 'getObjectView',\n 'system',\n 'group',\n {startkey: 'system.group.', endkey: 'system.group.\\u9999'},\n (err, doc) => {\n if (err) {\n reject(err);\n } else {\n resolve(doc.rows.map(item => item.value));\n }\n }));\n\n return this._promises.groups;\n }\n\n /**\n * Get the host information.\n * @param {string} host\n * @param {boolean} [update] Force update.\n * @param {number} [timeoutMs] optional read timeout.\n * @returns {Promise<any>}\n */\n getHostInfo(host, update, timeoutMs) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!host.startsWith('system.host.')) {\n host += 'system.host.' + host;\n }\n\n if (!update && this._promises['hostInfo' + host]) {\n return this._promises['hostInfo' + host];\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises['hostInfo' + host] = new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n if (timeout) {\n timeout = null;\n reject('getHostInfo timeout');\n }\n }, timeoutMs || this.props.cmdTimeout);\n\n this._socket.emit('sendToHost', host, 'getHostInfo', null, data => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n if (data === PERMISSION_ERROR) {\n reject('May not read \"getHostInfo\"');\n } else if (!data) {\n reject('Cannot read \"getHostInfo\"');\n } else {\n resolve(data);\n }\n }\n });\n });\n\n return this._promises['hostInfo' + host];\n }\n\n /**\n * Get the host information (short version).\n * @param {string} host\n * @param {boolean} [update] Force update.\n * @param {number} [timeoutMs] optional read timeout.\n * @returns {Promise<any>}\n */\n getHostInfoShort(host, update, timeoutMs) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!host.startsWith('system.host.')) {\n host += 'system.host.' + host;\n }\n\n if (!update && this._promises['hostInfoShort' + host]) {\n return this._promises['hostInfoShort' + host];\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises['hostInfoShort' + host] = new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n if (timeout) {\n timeout = null;\n reject('hostInfoShort timeout');\n }\n }, timeoutMs || this.props.cmdTimeout);\n\n this._socket.emit('sendToHost', host, 'getHostInfoShort', null, data => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n if (data === PERMISSION_ERROR) {\n reject('May not read \"getHostInfoShort\"');\n } else if (!data) {\n reject('Cannot read \"getHostInfoShort\"');\n } else {\n resolve(data);\n }\n }\n });\n });\n\n return this._promises['hostInfoShort' + host];\n }\n\n /**\n * Get the repository.\n * @param {string} host\n * @param {any} [args]\n * @param {boolean} [update] Force update.\n * @param {number} [timeoutMs] timeout in ms.\n * @returns {Promise<any>}\n */\n getRepository(host, args, update, timeoutMs) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!update && this._promises.repo) {\n return this._promises.repo;\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n if (!host.startsWith('system.host.')) {\n host += 'system.host.' + host;\n }\n\n this._promises.repo = new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n if (timeout) {\n timeout = null;\n reject('getRepository timeout');\n }\n }, timeoutMs || this.props.cmdTimeout);\n\n this._socket.emit('sendToHost', host, 'getRepository', args, data => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n if (data === PERMISSION_ERROR) {\n reject('May not read \"getRepository\"');\n } else if (!data) {\n reject('Cannot read \"getRepository\"');\n } else {\n resolve(data);\n }\n }\n });\n });\n\n return this._promises.repo;\n }\n\n /**\n * Get the installed.\n * @param {string} host\n * @param {boolean} [update] Force update.\n * @param {number} [cmdTimeout] timeout in ms (optional)\n * @returns {Promise<any>}\n */\n getInstalled(host, update, cmdTimeout) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n\n this._promises.installed = this._promises.installed || {};\n\n if (!update && this._promises.installed[host]) {\n return this._promises.installed[host];\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n if (!host.startsWith('system.host.')) {\n host += 'system.host.' + host;\n }\n\n this._promises.installed[host] = new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n if (timeout) {\n timeout = null;\n reject('getInstalled timeout');\n }\n }, cmdTimeout || this.props.cmdTimeout);\n\n this._socket.emit('sendToHost', host, 'getInstalled', null, data => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n if (data === PERMISSION_ERROR) {\n reject('May not read \"getInstalled\"');\n } else if (!data) {\n reject('Cannot read \"getInstalled\"');\n } else {\n resolve(data);\n }\n }\n });\n });\n\n return this._promises.installed[host];\n }\n\n /**\n * Execute a command on a host.\n * @param {string} host The host name.\n * @param {string} cmd The command.\n * @param {string} cmdId The command ID.\n * @param {number} cmdTimeout Timeout of command in ms\n * @returns {Promise<void>}\n */\n cmdExec(host, cmd, cmdId, cmdTimeout) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n if (!host.startsWith(host)) {\n host += 'system.host.' + host;\n }\n\n return new Promise((resolve, reject) => {\n let timeout = cmdTimeout && setTimeout(() => {\n if (timeout) {\n timeout = null;\n reject('cmdExec timeout');\n }\n }, cmdTimeout);\n\n this._socket.emit('cmdExec', host, cmdId, cmd, null, err => {\n if (!cmdTimeout || timeout) {\n timeout && clearTimeout(timeout);\n timeout = null;\n if (err) {\n reject(err);\n } else {\n resolve();\n }\n }\n });\n });\n }\n\n /**\n * Checks if a given feature is supported.\n * @param {string} feature The feature to check.\n * @param {boolean} [update] Force update.\n * @returns {Promise<any>}\n */\n checkFeatureSupported(feature, update) {\n if (!update && this._promises['supportedFeatures_' + feature]) {\n return this._promises['supportedFeatures_' + feature];\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises['supportedFeatures_' + feature] = new Promise((resolve, reject) =>\n this._socket.emit('checkFeatureSupported', feature, (err, features) => {\n err ? reject(err) : resolve(features)\n }));\n\n return this._promises['supportedFeatures_' + feature];\n }\n\n /**\n * Read the base settings of a given host.\n * @param {string} host\n * @returns {Promise<any>}\n */\n readBaseSettings(host) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n return this.checkFeatureSupported('CONTROLLER_READWRITE_BASE_SETTINGS')\n .then(result => {\n if (result) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n if (timeout) {\n timeout = null;\n reject('readBaseSettings timeout');\n }\n }, this.props.cmdTimeout);\n\n if (host.startsWith('system.host.')) {\n host = host.replace(/^system\\.host\\./, '');\n }\n\n this._socket.emit('sendToHost', host, 'readBaseSettings', null, data => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n\n if (data === PERMISSION_ERROR) {\n reject('May not read \"BaseSettings\"');\n } else if (!data) {\n reject('Cannot read \"BaseSettings\"');\n } else {\n resolve(data);\n }\n }\n });\n });\n } else {\n return Promise.reject('Not supported');\n }\n });\n }\n\n /**\n * Write the base settings of a given host.\n * @param {string} host\n * @param {any} config\n * @returns {Promise<any>}\n */\n writeBaseSettings(host, config) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n return this.checkFeatureSupported('CONTROLLER_READWRITE_BASE_SETTINGS')\n .then(result => {\n if (result) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n if (timeout) {\n timeout = null;\n reject('writeBaseSettings timeout');\n }\n }, this.props.cmdTimeout);\n\n this._socket.emit('sendToHost', host, 'writeBaseSettings', config, data => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n\n if (data === PERMISSION_ERROR) {\n reject('May not write \"BaseSettings\"');\n } else if (!data) {\n reject('Cannot write \"BaseSettings\"');\n } else {\n resolve(data);\n }\n }\n });\n });\n } else {\n return Promise.reject('Not supported');\n }\n })\n }\n\n /**\n * Send command to restart the iobroker on host\n * @param {string} host\n * @returns {Promise<any>}\n */\n restartController(host) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n return new Promise((resolve, reject) => {\n this._socket.emit('sendToHost', host, 'restartController', null, error => {\n error ? reject(error) : resolve(true);\n });\n });\n }\n\n /**\n * Read statistics information from host\n * @param {string} host\n * @param {string} typeOfDiag one of none, normal, no-city, extended\n * @returns {Promise<any>}\n */\n getDiagData(host, typeOfDiag) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n return new Promise(resolve => {\n this._socket.emit('sendToHost', host, 'getDiagData', typeOfDiag, result =>\n resolve(result));\n });\n }\n\n /**\n * Read all states (which might not belong to this adapter) which match the given pattern.\n * @param {string} pattern\n * @returns {ioBroker.GetStatesPromise}\n */\n getForeignStates(pattern) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n if (Connection.isWeb()) {\n return new Promise((resolve, reject) =>\n this._socket.emit('getStates', pattern || '*', (err, states) =>\n err ? reject(err) : resolve(states)));\n } else {\n return new Promise((resolve, reject) =>\n this._socket.emit('getForeignStates', pattern || '*', (err, states) =>\n err ? reject(err) : resolve(states)));\n }\n }\n\n /**\n * Get foreign objects by pattern, by specific type and resolve their enums.\n * @param {string} pattern\n * @param {string} [type]\n * @returns {ioBroker.GetObjectsPromise}\n */\n getForeignObjects(pattern, type) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('getForeignObjects', pattern || '*', type, (err, states) =>\n err ? reject(err) : resolve(states)));\n }\n\n /**\n * Gets the system configuration.\n * @param {boolean} [update] Force update.\n * @returns {Promise<ioBroker.OtherObject>}\n */\n getSystemConfig(update) {\n if (!update && this._promises.systemConfig) {\n return this._promises.systemConfig;\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.systemConfig = this.getObject('system.config')\n .then(systemConfig => {\n //@ts-ignore\n systemConfig = systemConfig || {};\n //@ts-ignore\n systemConfig.common = systemConfig.common || {};\n //@ts-ignore\n systemConfig.native = systemConfig.native || {};\n return systemConfig;\n });\n\n return this._promises.systemConfig;\n }\n\n /**\n * Sets the system configuration.\n * @param {ioBroker.SettableObjectWorker<ioBroker.OtherObject>} obj\n * @returns {Promise<ioBroker.SettableObjectWorker<ioBroker.OtherObject>>}\n */\n setSystemConfig(obj) {\n return this.setObject('system.config', obj)\n .then(() => this._promises.systemConfig = Promise.resolve(obj));\n }\n\n /**\n * Get the raw socket.io socket.\n * @returns {any}\n */\n getRawSocket() {\n return this._socket;\n }\n\n /**\n * Get the history of a given state.\n * @param {string} id\n * @param {ioBroker.GetHistoryOptions} options\n * @returns {Promise<ioBroker.GetHistoryResult>}\n */\n getHistory(id, options) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('getHistory', id, options, (err, values) =>\n err ? reject(err) : resolve(values)));\n }\n\n /**\n * Get the history of a given state.\n * @param {string} id\n * @param {ioBroker.GetHistoryOptions} options\n * @returns {Promise<{values: ioBroker.GetHistoryResult; sesionId: string; stepIgnore: number}>}\n */\n getHistoryEx(id, options) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('getHistory', id, options, (err, values, stepIgnore, sessionId) =>\n err ? reject(err) : resolve({ values, sessionId, stepIgnore })));\n }\n\n /**\n * Change the password of the given user.\n * @param {string} user\n * @param {string} password\n * @returns {Promise<void>}\n */\n changePassword(user, password) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('changePassword', user, password, err =>\n err ? reject(err) : resolve()));\n }\n\n /**\n * Get the IP addresses of the given host.\n * @param {string} host\n * @param {boolean} [update] Force update.\n * @returns {Promise<string[]>}\n */\n getIpAddresses(host, update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!host.startsWith('system.host.')) {\n host = 'system.host.' + host;\n }\n\n if (!update && this._promises['IPs_' + host]) {\n return this._promises['IPs_' + host];\n }\n this._promises['IPs_' + host] = this.getObject(host)\n .then(obj => obj && obj.common ? obj.common.address || [] : []);\n\n return this._promises['IPs_' + host];\n }\n\n /**\n * Get the IP addresses with interface names of the given host or find host by IP.\n * @param {string} ipOrHostName\n * @param {boolean} [update] Force update.\n * @returns {Promise<any[<name, address, family>]>}\n */\n getHostByIp(ipOrHostName, update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (ipOrHostName.startsWith('system.host.')) {\n ipOrHostName = ipOrHostName.replace(/^system\\.host\\./, '');\n }\n\n if (!update && this._promises['rIPs_' + ipOrHostName]) {\n return this._promises['rIPs_' + ipOrHostName];\n }\n this._promises['rIPs_' + ipOrHostName] = new Promise(resolve =>\n this._socket.emit('getHostByIp', ipOrHostName, (ip, host) => {\n const IPs4 = [{name: '[IPv4] 0.0.0.0 - Listen on all IPs', address: '0.0.0.0', family: 'ipv4'}];\n const IPs6 = [{name: '[IPv6] :: - Listen on all IPs', address: '::', family: 'ipv6'}];\n if (host.native?.hardware?.networkInterfaces) {\n for (const eth in host.native.hardware.networkInterfaces) {\n if (!host.native.hardware.networkInterfaces.hasOwnProperty(eth)) {\n continue;\n }\n for (let num = 0; num < host.native.hardware.networkInterfaces[eth].length; num++) {\n if (host.native.hardware.networkInterfaces[eth][num].family !== 'IPv6') {\n IPs4.push({name: `[${host.native.hardware.networkInterfaces[eth][num].family}] ${host.native.hardware.networkInterfaces[eth][num].address} - ${eth}`, address: host.native.hardware.networkInterfaces[eth][num].address, family: 'ipv4'});\n } else {\n IPs6.push({name: `[${host.native.hardware.networkInterfaces[eth][num].family}] ${host.native.hardware.networkInterfaces[eth][num].address} - ${eth}`, address: host.native.hardware.networkInterfaces[eth][num].address, family: 'ipv6'});\n }\n }\n }\n }\n for (let i = 0; i < IPs6.length; i++) {\n IPs4.push(IPs6[i]);\n }\n resolve(IPs4);\n }));\n\n return this._promises['rIPs_' + ipOrHostName];\n }\n\n /**\n * Encrypt a text\n * @param {string} text\n * @returns {Promise<string>}\n */\n encrypt(text) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('encrypt', text, (err, text) =>\n err ? reject(err) : resolve(text)));\n }\n\n /**\n * Decrypt a text\n * @param {string} encryptedText\n * @returns {Promise<string>}\n */\n decrypt(encryptedText) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('decrypt', encryptedText, (err, text) =>\n err ? reject(err) : resolve(text)));\n }\n\n /**\n * Gets the version.\n * @returns {Promise<{version: string; serverName: string}>}\n */\n getVersion() {\n this._promises.version = this._promises.version || new Promise((resolve, reject) =>\n this._socket.emit('getVersion', (err, version, serverName) => {\n // support of old socket.io\n if (err && !version && typeof err === 'string' && err.match(/\\d+\\.\\d+\\.\\d+/)) {\n resolve({ version: err, serverName: 'socketio' });\n } else {\n return err ? reject(err) : resolve({ version, serverName });\n }\n }));\n\n return this._promises.version;\n }\n\n /**\n * Gets the web server name.\n * @returns {Promise<string>}\n */\n getWebServerName() {\n this._promises.webName = this._promises.webName || new Promise((resolve, reject) =>\n this._socket.emit('getAdapterName', (err, name) =>\n err ? reject(err) : resolve(name)));\n\n return this._promises.webName;\n }\n\n /**\n * Gets the admin version.\n * @deprecated use getVersion()\n * @returns {Promise<{version: string; serverName: string}>}\n */\n getAdminVersion() {\n console.log('Deprecated: use getVersion');\n return this.getVersion();\n }\n\n /**\n * Change access rights for file\n * @param {string} [adapter] adapter name\n * @param {string} [filename] file name with full path. it could be like vis.0/*\n * @param {object} [options] like {mode: 0x644}\n * @returns {Promise<{entries: array}>}\n */\n chmodFile(adapter, filename, options) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('chmodFile', adapter, filename, options, (err, entries, id) =>\n err ? reject(err) : resolve({entries, id})));\n }\n\n /**\n * Change owner or/and owner group for file\n * @param {string} [adapter] adapter name\n * @param {string} [filename] file name with full path. it could be like vis.0/*\n * @param {object} [options] like {owner: 'newOwner', ownerGroup: 'newGroup'}\n * @returns {Promise<{entries: array}>}\n */\n chownFile(adapter, filename, options) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('chownFile', adapter, filename, options, (err, entries, id) =>\n err ? reject(err) : resolve({entries, id})));\n }\n\n /**\n * Check if the file exists\n * @param {string} [adapter] adapter name\n * @param {string} [filename] file name with full path. it could be like vis.0/*\n * @returns {Promise<boolean>}\n */\n fileExists(adapter, filename) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('fileExists', adapter, filename, (err, exists) =>\n err ? reject(err) : resolve(exists)));\n }\n\n /**\n * Get the alarm notifications from a host (only for admin connection).\n * @param {string} host\n * @param {string} [category] - optional\n * @returns {Promise<any>}\n */\n getNotifications(host, category) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise(resolve =>\n this._socket.emit('sendToHost', host, 'getNotifications', {category}, notifications =>\n resolve(notifications)));\n }\n\n /**\n * Clear the alarm notifications on a host (only for admin connection).\n * @param {string} host\n * @param {string} [category] - optional\n * @returns {Promise<any>}\n */\n clearNotifications(host, category) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise(resolve =>\n this._socket.emit('sendToHost', host, 'clearNotifications', {category}, notifications =>\n resolve(notifications)));\n }\n\n /**\n * Read if only easy mode is allowed (only for admin connection).\n * @returns {Promise<boolean>}\n */\n getIsEasyModeStrict() {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('getIsEasyModeStrict', (error, isStrict) =>\n error ? reject(error) : resolve(isStrict)));\n }\n\n /**\n * Read easy mode configuration (only for admin connection).\n * @returns {Promise<any>}\n */\n getEasyMode() {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('getEasyMode', (error, config) =>\n error ? reject(error) : resolve(config)));\n }\n\n /**\n * Read current user\n * @returns {Promise<string>}\n */\n getCurrentUser() {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise(resolve =>\n this._socket.emit('authEnabled', (isSecure, user) =>\n resolve(user)));\n }\n\n getCurrentSession(cmdTimeout) {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise((resolve, reject) => {\n const controller = new AbortController();\n\n let timeout = setTimeout(() => {\n if (timeout) {\n timeout = null;\n controller.abort();\n reject('getCurrentSession timeout');\n }\n }, cmdTimeout || 5000);\n\n return fetch('./session', { signal: controller.signal })\n .then(res => res.json())\n .then(json => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n resolve(json);\n }\n })\n .catch(e => {\n reject('getCurrentSession: ' + e);\n });\n });\n }\n\n /**\n * Read adapter ratings\n * @returns {Promise<any>}\n */\n getRatings(update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n return new Promise((resolve, reject) =>\n this._socket.emit('getRatings', update, (err, ratings) =>\n err ? reject(err) : resolve(ratings)));\n }\n\n /**\n * Read current web, socketio or admin namespace, like admin.0\n * @returns {Promise<string>}\n */\n getCurrentInstance() {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.currentInstance = this._promises.currentInstance ||\n new Promise((resolve, reject) =>\n this._socket.emit('getCurrentInstance', (err, namespace) =>\n err ? reject(err) : resolve(namespace)));\n\n return this._promises.currentInstance;\n }\n\n // returns very optimized information for adapters to minimize connection load\n getCompactAdapters(update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!update && this._promises.compactAdapters) {\n return this._promises.compactAdapters;\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n this._promises.compactAdapters = new Promise((resolve, reject) =>\n this._socket.emit('getCompactAdapters', (err, adapters) =>\n err ? reject(err) : resolve(adapters)));\n\n return this._promises.compactAdapters;\n }\n\n // returns very optimized information for adapters to minimize connection load\n getCompactInstances(update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!update && this._promises.compactInstances) {\n return this._promises.compactInstances;\n }\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.compactInstances = new Promise((resolve, reject) =>\n this._socket.emit('getCompactInstances', (err, instances) =>\n err ? reject(err) : resolve(instances)));\n\n return this._promises.compactInstances;\n }\n\n // returns very optimized information for adapters to minimize connection load\n // reads only version of installed adapter\n getCompactInstalled(host, update, cmdTimeout) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n\n this._promises.installedCompact = this._promises.installedCompact || {};\n\n if (!update && this._promises.installedCompact[host]) {\n return this._promises.installedCompact[host];\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n if (!host.startsWith('system.host.')) {\n host += 'system.host.' + host;\n }\n\n this._promises.installedCompact[host] = new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n if (timeout) {\n timeout = null;\n reject('getCompactInstalled timeout');\n }\n }, cmdTimeout || this.props.cmdTimeout);\n\n this._socket.emit('getCompactInstalled', host, data => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n if (data === PERMISSION_ERROR) {\n reject('May not read \"getCompactInstalled\"');\n } else if (!data) {\n reject('Cannot read \"getCompactInstalled\"');\n } else {\n resolve(data);\n }\n }\n });\n });\n\n return this._promises.installedCompact[host];\n }\n\n // returns very optimized information for adapters to minimize connection load\n getCompactSystemConfig(update) {\n if (!update && this._promises.systemConfigCommon) {\n return this._promises.systemConfigCommon;\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.systemConfigCommon = new Promise((resolve, reject) =>\n this._socket.emit('getCompactSystemConfig', (err, systemConfig) =>\n err ? reject(err) : resolve(systemConfig)));\n\n return this._promises.systemConfigCommon;\n }\n\n /**\n * Get the repository in compact form (only version and icon).\n * @param {string} host\n * @param {boolean} [update] Force update.\n * @param {number} [timeoutMs] timeout in ms.\n * @returns {Promise<any>}\n */\n getCompactRepository(host, update, timeoutMs) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!update && this._promises.repoCompact) {\n return this._promises.repoCompact;\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n if (!host.startsWith('system.host.')) {\n host += 'system.host.' + host;\n }\n\n this._promises.repoCompact = new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n if (timeout) {\n timeout = null;\n reject('getCompactRepository timeout');\n }\n }, timeoutMs || this.props.cmdTimeout);\n\n this._socket.emit('getCompactRepository', host, data => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n if (data === PERMISSION_ERROR) {\n reject('May not read \"getCompactRepository\"');\n } else if (!data) {\n reject('Cannot read \"getCompactRepository\"');\n } else {\n resolve(data);\n }\n }\n });\n });\n\n return this._promises.repoCompact;\n }\n\n /**\n * Get the list of all hosts in compact form (only _id, common.name, common.icon, common.color, native.hardware.networkInterfaces)\n * @param {boolean} [update] Force update.\n * @returns {Promise<ioBroker.Object[]>}\n */\n getCompactHosts(update) {\n if (Connection.isWeb()) {\n return Promise.reject('Allowed only in admin');\n }\n if (!update && this._promises.hostsCompact) {\n return this._promises.hostsCompact;\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.hostsCompact = new Promise((resolve, reject) =>\n this._socket.emit('getCompactHosts', (err, hosts) =>\n err ? reject(err) : resolve(hosts)));\n\n return this._promises.hostsCompact;\n }\n\n /**\n * Get uuid\n * @returns {Promise<ioBroker.Object[]>}\n */\n getUuid() {\n if (this._promises.uuid) {\n return this._promises.uuid;\n }\n\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n this._promises.uuid = this.getObject('system.meta.uuid')\n //@ts-ignore\n .then(obj => obj?.native?.uuid);\n\n return this._promises.uuid;\n }\n\n /**\n * Logout current user\n * @returns {Promise<null>}\n */\n logout() {\n if (!this.connected) {\n return Promise.reject(NOT_CONNECTED);\n }\n\n return new Promise((resolve, reject) =>\n this._socket.emit('logout', err =>\n err ? reject(err) : resolve(null)));\n }\n}\n\nConnection.Connection = {\n onLog: PropTypes.func,\n onReady: PropTypes.func,\n onProgress: PropTypes.func,\n};\n\nexport default Connection;\n"],"file":"Connection.js"}
|
package/README.md
CHANGED
|
@@ -637,6 +637,9 @@ If you still have questions, try to find an answer [here](https://mui.com/guides
|
|
|
637
637
|
-->
|
|
638
638
|
|
|
639
639
|
## Changelog
|
|
640
|
+
### 2.1.0 (2022-03-26)
|
|
641
|
+
* (bluefox) BREAKING_CHANGE: Corrected error with readFile(base64=false)
|
|
642
|
+
|
|
640
643
|
### 2.0.0 (2022-03-26)
|
|
641
644
|
* (bluefox) Initial version
|
|
642
645
|
|