NEWS
Zugriff auf Node-Red über https?
-
Hallo Zusammen und ein gutes neues Jahr!
Ich habe meine Visu nun auf dem Smartphone verfügbar gemacht und zwar mit der App One Page Web Browser. Und zwar speichert diese auch die User Credentials, dadurch verhält sich das ganze so, als wäre die Webseite ein App.
Im Node-Red-Adapter habe ich durch setzen von Benutzer und Passwort die Basic-Authentication aktiviert, allerdings nur über http und in der FritzBox eine entsprechende Portweiterleitung gesetzt.
Nun wäre mir natürlich https lieber, aber auf https://nodered.org/docs/configuration steht unter https Standalone only. Deshalb folgende Fragen:
<list type="decimal">4. Wie unsicher ist die Basic-Authentication und http? Ich vermute, damit sind Man-in-the-Middle-Angriffe möglich.
- Wie bekommt man auch bei einer ioBroker-Node-Red-Installation https aktiviert?
-
@kylo-ren ich hab gerade das selbe Problem und beim rumprobieren hab ich sogar einen lustigen https bug gefunden, wenn man den Admin port auf 443(https) setzt und den node red port auf 443 (https)setzt öffnet sich eine neue ioboker Instanz, im iobroker node red Tab, beim versuch nod red über das node red icon zu öffnen, aber ja https bekomme ich leider auch unter keinen Umständen zum laufen.
Sobald man den port auf XXXX (not 443) ändert öffnet sich gar nichts mehr und unter http klappt das öffnen von nod red nur durch einen neuen Browser Tap. Der node-red Tab, also die Anzeige von node-red innerhalb Iobroker ohne einen neue Brower Tab zu öffnen, ist also auch defekt soviel ist klar, ich hab nach der Einbindung des Tabs in den Admin Dateien und Node Red Dateien gesucht konnte da aber leider nichts passendes finden ,ich bin aber auch keine profi, nur den Aufbau der Einstellungen und der Instanz Verlinkung konnte ich rauslesen.
Übrigens der NodeRed Adapter sollte als default bereits die Erweiterungen "node-red-contrib-boolean-logic-ultimate" und "node-red-contrib-countdown-2" vorinstallieren. Die braucht jeder der viel mit true und false Werten zu tun hat!
Man kann zwar einfach alles in Funktions Blöcke als javaskript schreiben, doch "UND" "OR" "NOT" Logic Blöcke sind oft viel schneller gesetzt und übersichtlicher.
Kann mir übrigens jemand mal erklären warum der Node Red Adapter für die selben Javaskript Funktionen einfach deutlich weniger Ram benötigt wie der Javaskript Adapter. Ich hab Mittlerweile alle JS skripts in node red neu angelegt und angepasst, meine Automatisierung Anwendungen haben beim JS Adapter 350 mb gebraucht, wohingegen Node Red dafür nur 50 mb Ram braucht. Ist das ein Darstellungsfehler?
-
@dekat-win Also da sind jetzt einige Fragezeichen in meinem Kopf.
- Admin Port auf 443 und auch https aktiviert dort ... ja passt
- Node-Red Port auf 443 parallel geht nicht weil nur ein Prozess auf den Port binden kann, damit wird node-red verlieren und ggf nicht starten ... damit landest Du immer im Admin ... ist auch logisch.
- Node-red startet einen eigenen prozess der die Oberfläche anbietet - hast Du hier in der Konfiog zertifikate gewählt? Dann ja dann könntest Du auf einem anderen Port SSL haben ... zeig mal die Konfig und aich Logs.
Übrigens der NodeRed Adapter sollte als default bereits die Erweiterungen "node-red-contrib-boolean-logic-ultimate" und "node-red-contrib-countdown-2" vorinstallieren. Die braucht jeder der viel mit true und false Werten zu tun hat!
Bitte Issue anlegen im gitHub dann kann man darüber reden bzw auch andere User abstimmen ob es Sinn macht
Kann mir übrigens jemand mal erklären warum der Node Red Adapter für die selben Javaskript Funktionen einfach deutlich weniger Ram benötigt wie der Javaskript Adapter. Ich hab Mittlerweile alle JS skripts in node red neu angelegt und angepasst, meine Automatisierung Anwendungen haben beim JS Adapter 350 mb gebraucht, wohingegen Node Red dafür nur 50 mb Ram braucht. Ist das ein Darstellungsfehler?
Hast Du auch den "node-red" Prozess mit dazugerechnet? WIe oben gesagt startet der Adapter sich selbst um mit ioBroker kommunizieren zu können für die nodes - das braucht nicht so viel RAM ... das echte node-red läuft in einem eigenen Prozess. Das musst Du manuell dazurechnen.
-
@dekat-win sagte in Zugriff auf Node-Red über https?:
Übrigens der NodeRed Adapter sollte als default bereits die Erweiterungen "node-red-contrib-boolean-logic-ultimate" und "node-red-contrib-countdown-2" vorinstallieren. Die braucht jeder der viel mit true und false Werten zu tun hat!
Hi, da bin ich anderer Meinung. Die braucht man meiner Meinung nach überhaupt nicht, kann man alles mit Standart Nodes lösen. Switch, change, join, trigger und wobei der Countdown eigentlich nichts kann, was mit der Trigger Node nicht auch geht, bis auf die Restzeitausgabe vielleicht. Und selbst Funktion Nodes verwende ich so gut wie gar nicht. Der Sinn von Node Red ist ja auch die leichte Nachverfolgbarkeit und nicht alles in komplexen Nodes zu verstecken.
Ich denke auch das die meisten, die sich intensiver mit Node Red beschäftigen sie nicht brauchen werden. Wenn sie dann wirklich jemand braucht, kann er die ja ruck zuck nachinstallieren
Edit: Ein anderes Problem was ich dabei noch sehe, dann kommen wieder andere an, die wollen noch ne Zeitschaltuhr Standartmäßig drin haben oder ne andere Logik Node weil denen die besser gefällt, oder nen anderen Countdown, vielleicht noch ne Chatnode und ne Heizungssteuerung und Alexa auch noch und schwubs können wir gleich alle Nodes Standartmäßig mit installieren.Aber das ist nur meine Meinung. Mach doch wie appollon77 geschrieben hat ein Issue auf, oder erstelle hier im Iobroker Bereich ein neues Thema dazu, dann können alle ihre Meinung und Wünsche dazu mal äußern. Ich bin auch neugierig was dabei rum kommt.
-
@frankyboy73 ja da hast du recht wer sich mit Node Red beschäftigt der kann auch ohne logic gates sehr schnell gute Ergebnisse liefern, wenn man aber Programmieren auf das simpelste herunter bringen will und dabei nicht großartig an möglichen Anwendungen verlieren will braucht man nur UND OR NOT und Counter, ein Beispiel das sich das durchgesetzt hat kannst du in diversen Spielen wiederfinden, Rust, Space Engineers, Minecraft etc,
Und in Sachen Automatisierung vereinfachen ist für mich immer noch die SPS-FUP Visuelle Programmiersprache das Maß aller Dinge, woran sich node Red ja auch orientiert. Befor ich aber eine Empfehlung ausspreche warte ich doch bis danube seine Smarthome Collection fertig hat, der Power Switch ist ja bereits überragend.
https://github.com/danube/node-red-contrib-smarthome-powerswitch@frankyboy73
Viel wichtiger ist jetzt aber läuft node red über https im iobroker bei dir? Es geht hier ja eigentlich darum https zum laufen zu bekommen.@apollon77 du hast recht das ergibt Sinn, ich schau nach den logs wenn ich mehr Zeit habe das wird aber erst nach Silvester sein, was genau meinst du mit aich Logs? und ja ich habe in der node-red und admin Konfigs Zertifikate vergeben sowie unterschiedliche Ports.
Du hast ja sicher auch den node-red Adapter klappt da bei dir der https Aufruf sowie der Tab Aufruf innerhalb Iobroker?
In dem Sinne wünsch ich euch allen schon mal vorab eine gutes neues Jahr. Hoffentlich corona Frei....
-
-
@dekat-win sagte in Zugriff auf Node-Red über https?:
Du hast ja sicher auch den node-red Adapter klappt da bei dir der https Aufruf sowie der Tab Aufruf innerhalb Iobroker?
Ob das tut das weiss ich nicht. kann sein das genau das mit https im tab nicht geht ... das wäre dann (falls noch nicht existent) ein issue für Admin denke ich
-
@dekat-win
Ich arbeite viel mit Node Red. Deine genannten nodes habe ich bisher nicht gebraucht.SPS mit FUP ist nicht gleich SPS mit FUP. Selbst die Siemens Leute haben damals nach einem Update der Software es nicht geschafft, bereits selbst erstellte Bausteine zu portieren. So mussten wir nach einem Software Update auch noch die Hardware ersetzen..
Bei Easy E4 nutze ich immer öfter strukturierten Text für die Programme.
Für Zugriff von unterwegs nutze ich VPN. Direkt einen Port öffnen würde ich nicht.
-
@peterfido ja für jemand der viel mit der sps macht ist fub auch nichts, ich selber nutze meist nur noch SCL, aber fub ist einfach und der Umgang mit booleans sowie logic gates ist kinderleicht, ich kann einen 7 jährigen meine klingel und licht logic in node red mit booleans und logic gates erstellen lassen aber ohne würde er das nie hinbekommen.
Nutzt du node red standalone oder den node red Adapter vom iobroker ? Es hört sich so an als ob du node red getrennt manuell installiert hast. Bei mir ist auch kein port offen, ich greife über iobroker offline auf node red zu.
Mich würde es sehr interessieren ob nur ich nicht auf den Tab Aufruf drauf komme oder alle die den Node Red Adapter nutzen das selbe Problem haben und ob https bei allen nod red Adapter nutzen nicht läuft.
-
Node-Red ist der Adapter unter ioBroker. Ein autarkes Node-Red habe ich nicht.
Ich greife nicht per HTTPS darauf zu. Mich nerven immer die Warnungen in den Browsern, dass die Seiten trotz HTTPS nicht sicher sind. Die Möglichkeit der festen Ausnahmen ist ja nicht mehr gegeben. Und für alle Server Let´s Encrypt Zertifikate einrichten? >> Nö.
-
so diese Woche hatte ich etwas Freizeit also hab ich das ganze nochmal versucht, das ist der Fehler den nodeRed bei aktiverten https ausgibt:
node-red.0 2022-08-12 18:58:24.971 info node-red exited with 0 node-red.0 2022-08-12 18:58:24.897 debug Error: ENOENT: no such file or directory, open 'C:Program FilesiobrokerBigBoss ode_modulesiobroker.node-red/userdata/defaultPrivate.key' at Object.openSync (node:fs:585:3) at Object.readFileSync (node:fs:453:35) at Object.<anonymous> (C:\Program Files\iobroker\BigBoss\node_modules\iobroker.node-red\userdata\settings.js:109:33) at Module._compile (node:internal/modules/cjs/loader:1105:14) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10) at Module.load (node:internal/modules/cjs/loader:981:32) at Function.Module._load (node:internal/modules/cjs/loader:822:12) at Module.require (node:internal/modules/cjs/loader:1005:19) at require (node:internal/modules/cjs/helpers:102:18) at Object.<anonymous> (C:\Program Files\iobroker\BigBoss\node_modules\node-red\red.js:136:20) { errno: -4058, syscall: 'open', code: 'ENOENT', path: 'C:Program FilesiobrokerBigBoss\n' + 'ode_modulesiobroker.node-red/userdata/defaultPrivate.key' } node-red.0 2022-08-12 18:58:24.869 debug Error loading settings file: C:\Program Files\iobroker\BigBoss\node_modules\iobroker.node-red\userdata\settings.js
Kann jemand damit etwas anfangen? Ich schätze mal er findet die Zertifikate nicht aber warum er sie nicht findet bleibt für mich ein Rätzel ich nutze die Default Zertifikate vom iobroker.
Wie kann ich das Problem lösen? Bin für jeden Tipp dankbar.
-
@dekat-win Was hast Du denn im Admin bei den Zertifikaten eingetragen und was im node-red Adapter? Zeig mal Screenshots
-
@apollon77 Das selbe, darf man nur ein Zertifikat pro Webserver verteilen ?
-
-
@dekat-win Wie sieht der inhalt der C:\Program Files\iobroker\BigBoss\node_modules\iobroker.node-red\userdata\settings.js aus?
-
@apollon77
ich hab alles was mir als sensibel erscheint durch XXX getauscht. Sollte das nicht nötig sein bitte ich um Entschuldigung ich verfüge nur über hobby EDV wissen./** * This is the default settings file provided by Node-RED. * * It can contain any valid JavaScript code that will get run when Node-RED * is started. * * Lines that start with // are commented out. * Each entry should be separated from the entries above and below by a comma ',' * * For more information about individual settings, refer to the documentation: * https://nodered.org/docs/user-guide/runtime/configuration * * The settings are split into the following sections: * - Flow File and User Directory Settings * - Security * - Server Settings * - Runtime Settings * - Editor Settings * - Node Settings * **/ module.exports = { /******************************************************************************* * Flow File and User Directory Settings * - flowFile * - credentialSecret * - flowFilePretty * - userDir * - nodesDir ******************************************************************************/ /** The file containing the flows. If not set, defaults to flows_<hostname>.json **/ flowFile: 'flows.json', /** By default, credentials are encrypted in storage using a generated key. To * specify your own secret, set the following property. * If you want to disable encryption of credentials, set this property to false. * Note: once you set this property, do not change it - doing so will prevent * node-red from being able to decrypt your existing credentials and they will be * lost. */ credentialSecret: "xxx", /** By default, the flow JSON will be formatted over multiple lines making * it easier to compare changes when using version control. * To disable pretty-printing of the JSON set the following property to false. */ flowFilePretty: true, /** By default, all user data is stored in a directory called `.node-red` under * the user's home directory. To use a different location, the following * property can be used */ userDir: __dirname + '/', /** Node-RED scans the `nodes` directory in the userDir to find local node files. * The following property can be used to specify an additional directory to scan. */ nodesDir: "C:/Program Files/iobroker/BigBoss/node_modules/iobroker.node-red/nodes/", /******************************************************************************* * Security * - adminAuth * - https * - httpsRefreshInterval * - requireHttps * - httpNodeAuth * - httpStaticAuth ******************************************************************************/ /** To password protect the Node-RED editor and admin API, the following * property can be used. See http://nodered.org/docs/security.html for details. */ //adminAuth: { // type: "credentials", // users: [{ // username: "admin", // password: "xxx.", // permissions: "*" // }] //}, //httpAdminAuth: {"type":"credentials","users":[{"username":"admin","password":"xxx","permissions":"*"}]}, //Replaced by adminAuth in #99 adminAuth: {"type":"credentials","users":[{"username":"admin","password":"XXX","permissions":"*"}]}, /** The following property can be used to enable HTTPS * This property can be either an object, containing both a (private) key * and a (public) certificate, or a function that returns such an object. * See http://nodejs.org/api/https.html#https_https_createserver_options_requestlistener * for details of its contents. */ /** Option 1: static object */ //https: { // key: require("fs").readFileSync('privkey.pem'), // cert: require("fs").readFileSync('cert.pem') //}, /** Option 2: function that returns the HTTP configuration object */ // https: function() { // // This function should return the options object, or a Promise // // that resolves to the options object // return { // key: require("fs").readFileSync('privkey.pem'), // cert: require("fs").readFileSync('cert.pem') // } // }, // https: { key: require("fs").readFileSync("C:\Program Files\iobroker\BigBoss\node_modules\iobroker.node-red/userdata/defaultPrivate.key"), cert: require("fs").readFileSync("C:\Program Files\iobroker\BigBoss\node_modules\iobroker.node-red/userdata/defaultPublic.crt") }, /** If the `https` setting is a function, the following setting can be used * to set how often, in hours, the function will be called. That can be used * to refresh any certificates. */ //httpsRefreshInterval : 12, /** The following property can be used to cause insecure HTTP connections to * be redirected to HTTPS. */ //requireHttps: true, /** To password protect the node-defined HTTP endpoints (httpNodeRoot), * including node-red-dashboard, or the static content (httpStatic), the * following properties can be used. * The `pass` field is a bcrypt hash of the password. * See http://nodered.org/docs/security.html#generating-the-password-hash */ //httpNodeAuth: {user:"user",pass:"xxx."}, //httpStaticAuth: {user:"user",pass:"xxx."}, /******************************************************************************* * Server Settings * - uiPort * - uiHost * - apiMaxLength * - httpServerOptions * - httpAdminRoot * - httpAdminMiddleware * - httpNodeRoot * - httpNodeCors * - httpNodeMiddleware * - httpStatic ******************************************************************************/ /** IoBroker related instance settings */ iobrokerInstance: 0, iobrokerConfig: {"system":{"memoryLimitMB":5000,"hostname":"Mini-Pc(BigBoss)","statisticsInterval":10000,"checkDiskInterval":30000,"instanceStartInterval":2000,"compact":false,"allowShellCommands":false,"memLimitWarn":100,"memLimitError":50},"multihostService":{"enabled":false,"secure":true},"network":{"IPv4":true,"IPv6":true,"bindAddress":null},"objects":{"type":"jsonl","host":"127.0.0.1","port":9001,"noFileCache":false,"connectTimeout":5000,"writeFileInterval":5000,"dataDir":"","options":{"auth_pass":null,"retry_max_count":19,"db":0,"family":0,"enableReadyCheck":true,"host":"127.0.0.1","port":9001,"password":null,"autoResubscribe":false,"connectionName":"node-red.0(3296)"},"backup":{"disabled":false,"files":24,"hours":48,"period":120,"path":""},"jsonlOptions":{"autoCompress":{"sizeFactor":2,"sizeFactorMinimumSize":25000},"ignoreReadErrors":true,"throttleFS":{"intervalMs":60000,"maxBufferedCommands":1000},"lockfile":{"retries":5,"retryMinTimeoutMs":250,"staleMs":2000}},"maxQueue":1000},"states":{"type":"jsonl","typeComment":"Possible values: 'file' - [port 9000], 'redis' - [port 6379].","host":"127.0.0.1","port":9000,"maxQueue":1000,"user":"","pass":"","connectTimeout":5000,"options":{"auth_pass":null,"enableReadyCheck":true,"host":"127.0.0.1","port":9000,"db":0,"family":0,"password":null,"autoResubscribe":false,"connectionName":"node-red.0(3296)"},"backup":{"disabled":false,"files":24,"filesComment":"Minimal number of backup files, after the deletion will be executed according to backupTime settings","hours":48,"hoursComment":"All backups older than 48 hours will be deleted. But only if the number of files is greater than of backupNumber","period":120,"periodComment":"by default backup every 2 hours. Time is in minutes. To disable backup set the value to 0","path":"","pathComment":"Absolute path to backup directory or empty to backup in data directory"},"jsonlOptions":{"autoCompress":{"sizeFactor":2,"sizeFactorMinimumSize":25000},"ignoreReadErrors":true,"throttleFS":{"intervalMs":60000,"maxBufferedCommands":1000},"lockfile":{"retries":5,"retryMinTimeoutMs":250,"staleMs":2000}}},"log":{"level":"silly","maxDays":7,"noStdout":true,"transport":{"file1":{"type":"file","enabled":false,"filename":"log/iobroker","fileext":".log","maxSize":0,"maxFiles":0,"level":""},"syslog1":{"type":"syslog","enabled":false,"host":"localhost","hostComment":"The host running syslogd, defaults to localhost.","portComment":"The port on the host that syslog is running on, defaults to syslogd's default port(514/UDP).","protocol":"udp4","protocolComment":"The network protocol to log over (e.g. tcp4, udp4, unix, unix-connect, etc).","pathComment":"The path to the syslog dgram socket (i.e. /dev/log or /var/run/syslog for OS X).","facilityComment":"Syslog facility to use (Default: local0).","localhost":"iobroker","localhostComment":"Host to indicate that log messages are coming from (Default: localhost).","sysLogTypeComment":"The type of the syslog protocol to use (Default: BSD).","app_nameComment":"The name of the application (Default: process.title).","eolComment":"The end of line character to be added to the end of the message (Default: Message without modifications).","level":"","facility":"","port":0,"path":"","sysLogType":"","app_name":"","eol":""}}},"dataDir":"../../iobroker-data/","plugins":null,"instance":0}, allowCreationOfForeignObjects: false, valueConvert: true, /** the tcp port that the Node-RED web server is listening on */ uiPort: 7441, /** By default, the Node-RED UI accepts connections on all IPv4 interfaces. * To listen on all IPv6 addresses, set uiHost to "::", * The following property can be used to listen on a specific interface. For * example, the following would only allow connections from the local machine. */ //uiHost: "127.0.0.1", uiHost: "127.0.0.1", /** The maximum size of HTTP request that will be accepted by the runtime api. * Default: 5mb */ //apiMaxLength: '5mb', /** The following property can be used to pass custom options to the Express.js * server used by Node-RED. For a full list of available options, refer * to http://expressjs.com/en/api.html#app.settings.table */ //httpServerOptions: { }, /** By default, the Node-RED UI is available at http://localhost:1880/ * The following property can be used to specify a different root path. * If set to false, this is disabled. */ //httpAdminRoot: '/admin', httpAdminRoot: "/", /** httpRoot: "'%%httpRoot%%'", - has been deprecated: https://github.com/node-red/node-red/pull/2953 */ /** The following property can be used to add a custom middleware function * in front of all admin http routes. For example, to set custom http * headers. It can be a single function or an array of middleware functions. */ // httpAdminMiddleware: function(req,res,next) { // // Set the X-Frame-Options header to limit where the editor // // can be embedded // //res.set('X-Frame-Options', 'sameorigin'); // next(); // }, /** Some nodes, such as HTTP In, can be used to listen for incoming http requests. * By default, these are served relative to '/'. The following property * can be used to specifiy a different root path. If set to false, this is * disabled. */ httpNodeRoot: "/", /** The following property can be used to configure cross-origin resource sharing * in the HTTP nodes. * See https://github.com/troygoode/node-cors#configuration-options for * details on its contents. The following is a basic permissive set of options: */ //httpNodeCors: { // origin: "*", // methods: "GET,PUT,POST,DELETE" //}, /** If you need to set an http proxy please set an environment variable * called http_proxy (or HTTP_PROXY) outside of Node-RED in the operating system. * For example - http_proxy=http://myproxy.com:8080 * (Setting it here will have no effect) * You may also specify no_proxy (or NO_PROXY) to supply a comma separated * list of domains to not proxy, eg - no_proxy=.acme.co,.acme.co.uk */ /** The following property can be used to add a custom middleware function * in front of all http in nodes. This allows custom authentication to be * applied to all http in nodes, or any other sort of common request processing. * It can be a single function or an array of middleware functions. */ //httpNodeMiddleware: function(req,res,next) { // // Handle/reject the request, or pass it on to the http in node by calling next(); // // Optionally skip our rawBodyParser by setting this to true; // //req.skipRawBodyParser = true; // next(); //}, /** When httpAdminRoot is used to move the UI to a different root path, the * following property can be used to identify a directory of static content * that should be served at http://localhost:1880/. */ //httpStatic: '/home/nol/node-red-static/', // httpStatic: "", /******************************************************************************* * Runtime Settings * - lang * - logging * - contextStorage * - exportGlobalContextKeys * - externalModules ******************************************************************************/ /** Uncomment the following to run node-red in your preferred language. * Available languages include: en-US (default), ja, de, zh-CN, zh-TW, ru, ko * Some languages are more complete than others. */ // lang: "de", /** Configure the logging output */ logging: { /** Only console logging is currently supported */ console: { /** Level of logging to be recorded. Options are: * fatal - only those errors which make the application unusable should be recorded * error - record errors which are deemed fatal for a particular request + fatal errors * warn - record problems which are non fatal + errors + fatal errors * info - record information about the general running of the application + warn + error + fatal errors * debug - record information which is more verbose than info + info + warn + error + fatal errors * trace - record very detailed logging + debug + info + warn + error + fatal errors * off - turn off all logging (doesn't affect metrics or audit) */ level: "info", /** Whether or not to include metric events in the log output */ metrics: false, /** Whether or not to include audit events in the log output */ audit: false } }, /** Context Storage * The following property can be used to enable context storage. The configuration * provided here will enable file-based context that flushes to disk every 30 seconds. * Refer to the documentation for further options: https://nodered.org/docs/api/context/ */ //contextStorage: { // default: { // module:"localfilesystem" // }, //}, /** `global.keys()` returns a list of all properties set in global context. * This allows them to be displayed in the Context Sidebar within the editor. * In some circumstances it is not desirable to expose them to the editor. The * following property can be used to hide any property set in `functionGlobalContext` * from being list by `global.keys()`. * By default, the property is set to false to avoid accidental exposure of * their values. Setting this to true will cause the keys to be listed. */ exportGlobalContextKeys: false, /** Configure how the runtime will handle external npm modules. * This covers: * - whether the editor will allow new node modules to be installed * - whether nodes, such as the Function node are allowed to have their * own dynamically configured dependencies. * The allow/denyList options can be used to limit what modules the runtime * will install/load. It can use '*' as a wildcard that matches anything. */ externalModules: { // autoInstall: false, /** Whether the runtime will attempt to automatically install missing modules */ // autoInstallRetry: 30, /** Interval, in seconds, between reinstall attempts */ palette: { /** Configuration for the Palette Manager */ allowInstall: false /** Enable the Palette Manager in the editor */ // allowUpdate: true, /** Allow modules to be updated in the Palette Manager */ // allowUpload: true, /** Allow module tgz files to be uploaded and installed */ // allowList: ['*'], // denyList: [], // allowUpdateList: ['*'], // denyUpdateList: [] // }, // modules: { /** Configuration for node-specified modules */ // allowInstall: true, // allowList: [], // denyList: [] } }, /******************************************************************************* * Editor Settings * - disableEditor * - editorTheme ******************************************************************************/ /** The following property can be used to disable the editor. The admin API * is not affected by this option. To disable both the editor and the admin * API, use either the httpRoot or httpAdminRoot properties */ //disableEditor: false, /** Customising the editor * See https://nodered.org/docs/user-guide/runtime/configuration#editor-themes * for all available options. */ editorTheme: { /** The following property can be used to set a custom theme for the editor. * See https://github.com/node-red-contrib-themes/theme-collection for * a collection of themes to chose from. */ //theme: "", /** To disable the 'Welcome to Node-RED' tour that is displayed the first * time you access the editor for each release of Node-RED, set this to false */ //tours: false, palette: { /** The following property can be used to order the categories in the editor * palette. If a node's category is not in the list, the category will get * added to the end of the palette. * If not set, the following default order is used: */ //categories: ['subflows', 'common', 'function', 'network', 'sequence', 'parser', 'storage'], }, projects: { /** To enable the Projects feature, set this value to true */ enabled: false, workflow: { /** Set the default projects workflow mode. * - manual - you must manually commit changes * - auto - changes are automatically committed * This can be overridden per-user from the 'Git config' * section of 'User Settings' within the editor */ mode: "manual" } }, codeEditor: { /** Select the text editor component used by the editor. * Defaults to "ace", but can be set to "ace" or "monaco" */ lib: "ace", options: { /** The follow options only apply if the editor is set to "monaco" * * theme - must match the file name of a theme in * packages/node_modules/@node-red/editor-client/src/vendor/monaco/dist/theme * e.g. "tomorrow-night", "upstream-sunburst", "github", "my-theme" */ theme: "vs", /** other overrides can be set e.g. fontSize, fontFamily, fontLigatures etc. * for the full list, see https://microsoft.github.io/monaco-editor/api/interfaces/monaco.editor.istandaloneeditorconstructionoptions.html */ //fontSize: 14, //fontFamily: "Cascadia Code, Fira Code, Consolas, 'Courier New', monospace", //fontLigatures: true, } } }, /******************************************************************************* * Node Settings * - fileWorkingDirectory * - functionGlobalContext * - functionExternalModules * - nodeMessageBufferMaxLength * - ui (for use with Node-RED Dashboard) * - debugUseColors * - debugMaxLength * - execMaxBufferSize * - httpRequestTimeout * - mqttReconnectTime * - serialReconnectTime * - socketReconnectTime * - socketTimeout * - tcpMsgQueueSize * - inboundWebSocketTimeout * - tlsConfigDisableLocalFiles * - webSocketNodeVerifyClient ******************************************************************************/ /** The working directory to handle relative file paths from within the File nodes * defaults to the working directory of the Node-RED process. */ //fileWorkingDirectory: "", /** Allow the Function node to load additional npm modules directly */ functionExternalModules: true, /** The following property can be used to set predefined values in Global Context. * This allows extra node modules to be made available with in Function node. * For example, the following: * functionGlobalContext: { os:require('os') } * will allow the `os` module to be accessed in a Function node using: * global.get("os") */ functionGlobalContext: { // // os:require('os'), // jfive:require("johnny-five"), // j5board:require("johnny-five").Board({repl:false}) }, /** The maximum number of messages nodes will buffer internally as part of their * operation. This applies across a range of nodes that operate on message sequences. * defaults to no limit. A value of 0 also means no limit is applied. */ //nodeMessageBufferMaxLength: 0, /** If you installed the optional node-red-dashboard you can set it's path * relative to httpNodeRoot * Other optional properties include * readOnly:{boolean}, * middleware:{function or array}, (req,res,next) - http middleware * ioMiddleware:{function or array}, (socket,next) - socket.io middleware */ //ui: { path: "ui" }, /** Colourise the console output of the debug node */ //debugUseColors: true, /** The maximum length, in characters, of any message sent to the debug sidebar tab */ debugMaxLength: 1000, /** Maximum buffer size for the exec node. Defaults to 10Mb */ //execMaxBufferSize: 10000000, /** Timeout in milliseconds for HTTP request connections. Defaults to 120s */ //httpRequestTimeout: 120000, /** Retry time in milliseconds for MQTT connections */ mqttReconnectTime: 15000, /** Retry time in milliseconds for Serial port connections */ serialReconnectTime: 15000, /** Retry time in milliseconds for TCP socket connections */ //socketReconnectTime: 10000, /** Timeout in milliseconds for TCP server socket connections. Defaults to no timeout */ //socketTimeout: 120000, /** Maximum number of messages to wait in queue while attempting to connect to TCP socket * defaults to 1000 */ //tcpMsgQueueSize: 2000, /** Timeout in milliseconds for inbound WebSocket connections that do not * match any configured node. Defaults to 5000 */ //inboundWebSocketTimeout: 5000, /** To disable the option for using local files for storing keys and * certificates in the TLS configuration node, set this to true. */ //tlsConfigDisableLocalFiles: true, /** The following property can be used to verify websocket connection attempts. * This allows, for example, the HTTP request headers to be checked to ensure * they include valid authentication information. */ //webSocketNodeVerifyClient: function(info) { // /** 'info' has three properties: // * - origin : the value in the Origin header // * - req : the HTTP request // * - secure : true if req.connection.authorized or req.connection.encrypted is set // * // * The function should return true if the connection should be accepted, false otherwise. // * // * Alternatively, if this function is defined to accept a second argument, callback, // * it can be used to verify the client asynchronously. // * The callback takes three arguments: // * - result : boolean, whether to accept the connection or not // * - code : if result is false, the HTTP error status to return // * - reason: if result is false, the HTTP reason string to return // */ //}, }
-
@dekat-win Hach ich liebe Windows ......... Bitte GitHub issue anlegen Die "Backslashes" werden nicht escaped
-
@apollon77 vielen danke für die schnelle Hilfe, es liegt also an Windows richtig?
Ich würde gerne ein issue anlegen, nur leider sagt mir "Die "Backslashes" werden nicht escaped" überhaupt nichts.
Ich bin auch kein Fan von Windows, aber da ich so oder so einen Intel NUC 24/7 am laufen habe mit Software die nur auf Windows läuft "geht leider auch nicht über wine" hab ich den iobroker dort mit am laufen.
-
@apollon77 ok ich hab das mal in Stack overflow eingegeben und bin darauf gestoßen
In javascript backslash is interpreted as an escape for the next character.
console.log('\a\b\c');
//==> ac ( escaped a is a, escaped b is backspace , escaped c is c'
If you want backslashes in your string you have to escape those tooconsole.log('\\a\\b\\c');
//==> \a\b\c
In other words the first backslash in \ gets eaten as an escape indicatorIst das in etwa was du mit escapen gemeint hattest ?
-
@dekat-win Jupp. Genau das ist gemeint. Fix kommt später heute dann denke ich. Und nein liiert nicht an Windows per se sondern daran das der Adapter das escapen beim Schreiben der konfig vergisst.