fhem.js - websocket connection to fhem via node.js proxy

Begonnen von Werner Schäffer, 13 Februar 2015, 21:53:55

Vorheriges Thema - Nächstes Thema

Werner Schäffer

Auch wenn ich dafür Prügel bekommen sollte: nimm root

Es ist natürlich ein Sicherheitsproblem wenn irgendjemand deine root-Verbindung kapern könnte und damit alles und wirklich alles machen kann auf deinem Server.

Aber wenn du du in deinem lokalen Netzwerk dich mit root anmeldest ist die Gefahr relativ gering. Man sollte sich allerdings niemals auf einer GUI, wie Gnome oder KDE, mit root anmelden und dann auch noch im Web rumsurfen.






Tueftler1983

Hallo
Habe alles gemacht wie du gesagt hast nur das ich die Dateien die gefunden wurden über ftp Verbindung gelöscht habe.
Trotzdem bei der Installation noch das selbe

Linux fhemserver 4.1.13+ #826 PREEMPT Fri Nov 13 20:13:22 GMT 2015 armv6l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue Apr 19 15:49:25 2016 from 192.168.2.24
root@fhemserver:~# npm uninstall -g fhem.js
unbuild fhem.js@2.2.1
root@fhemserver:~# find / -type d | grep "fhem.js"
/etc/fhem.js
/var/www/fhem.js
/var/www/fhem.js/forever
/var/www/fhem.js/forever/0.15.1
/var/www/fhem.js/forever/0.15.1/package
/var/www/fhem.js/test
/var/www/fhem.js/etc
/var/www/fhem.js/etc/init.d
/var/www/fhem.js/etc/fhem.js
/var/www/fhem.js/bin
/var/www/fhem.js/socket.io
/var/www/fhem.js/socket.io/1.4.5
/var/www/fhem.js/socket.io/1.4.5/package
/var/www/fhem.js/mysql
/var/www/fhem.js/mysql/2.10.2
/var/www/fhem.js/mysql/2.10.2/package
find: "/proc/29226/task/29226/fd/5": Datei oder Verzeichnis nicht gefunden
find: "/proc/29226/task/29226/fdinfo/5": Datei oder Verzeichnis nicht gefunden
find: "/proc/29226/fd/5": Datei oder Verzeichnis nicht gefunden
find: "/proc/29226/fdinfo/5": Datei oder Verzeichnis nicht gefunden
/root/.npm/fhem.js
/root/.npm/fhem.js/2.2.1
/root/.npm/fhem.js/2.2.1/package
/root/.npm/fhem.js/2.1.21
/root/.npm/fhem.js/2.1.21/package
/root/.npm/registry.npmjs.org/fhem.js
/tmp/npm-22970-452aeb19/registry.npmjs.org/fhem.js
/tmp/npm-22970-452aeb19/registry.npmjs.org/fhem.js/-
/tmp/npm-26783-d9ccb3b0/registry.npmjs.org/fhem.js
/tmp/npm-26783-d9ccb3b0/registry.npmjs.org/fhem.js/-
/home/pi/.npm/fhem.js
/home/pi/.npm/fhem.js/2.2.1
/home/pi/.npm/fhem.js/2.2.1/package
/home/pi/.npm/registry.npmjs.org/fhem.js
/usr/share/npm/node_modules/etc/fhem.js
root@fhemserver:~# find / -type d | grep "fhem.js"
find: "/proc/29272/task/29272/fd/5": Datei oder Verzeichnis nicht gefunden
find: "/proc/29272/task/29272/fdinfo/5": Datei oder Verzeichnis nicht gefunden
find: "/proc/29272/fd/5": Datei oder Verzeichnis nicht gefunden
find: "/proc/29272/fdinfo/5": Datei oder Verzeichnis nicht gefunden
/root/.npm/registry.npmjs.org/fhem.js
/tmp/npm-26783-d9ccb3b0/registry.npmjs.org/fhem.js
/tmp/npm-26783-d9ccb3b0/registry.npmjs.org/fhem.js/-
/home/pi/.npm/registry.npmjs.org/fhem.js
root@fhemserver:~# find / -type d | grep "fhem.js"
find: "/proc/29287/task/29287/fd/5": Datei oder Verzeichnis nicht gefunden
find: "/proc/29287/task/29287/fdinfo/5": Datei oder Verzeichnis nicht gefunden
find: "/proc/29287/fd/5": Datei oder Verzeichnis nicht gefunden
find: "/proc/29287/fdinfo/5": Datei oder Verzeichnis nicht gefunden
root@fhemserver:~# find / | grep "fhem.js"
/etc/init.d/fhem.js
/opt/fhem/restoreDir/2016-04-05/www/codemirror/fhem.js
/opt/fhem/restoreDir/2016-04-05/www/codemirror/fhem.js.unoptimized
/opt/fhem/www/codemirror/fhem.js
/opt/fhem/www/codemirror/fhem.js.unoptimized
/usr/lib/bin/fhem.js
/usr/share/npm/node_modules/bin/fhem.js
root@fhemserver:~# find / | grep "fhem.js"
/opt/fhem/www/codemirror/fhem.js
/opt/fhem/www/codemirror/fhem.js.unoptimized
root@fhemserver:~# npm install -g fhem.js
npm WARN optional dep failed, continuing fsevents@1.0.11
/usr/local/bin/fhem.js -> /usr/local/lib/node_modules/fhem.js/bin/fhem.js
/usr/local/bin/forever -> /usr/local/lib/node_modules/fhem.js/node_modules/forever/bin/forever

> fhem.js@2.2.1 postinstall /usr/local/lib/node_modules/fhem.js
> ./bin/postinstall.sh


************************************
finish installation by running as root:

sudo /usr/local/lib/node_modules/fhem.js/bin/postinstall

This puts configuration into folder /etc/fhem.js
************************************

fhem.js@2.2.1 /usr/local/lib/node_modules/fhem.js
├── socket.io@1.4.5 (has-binary@0.1.7, debug@2.2.0, socket.io-parser@2.2.6, engine.io@1.6.8, socket.io-adapter@0.4.0, socket.io-client@1.4.5)
├── forever@0.15.1 (path-is-absolute@1.0.0, object-assign@3.0.0, colors@0.6.2, clone@1.0.2, timespan@2.3.0, optimist@0.6.1, nssocket@0.5.3, shush@1.0.0, cliff@0.1.10, utile@0.2.1, winston@0.8.3, nconf@0.6.9, prettyjson@1.1.3, flatiron@0.4.3, forever-monitor@1.6.0)
└── socketio-auth@0.0.5 (debug@2.2.0, lodash@3.10.1)
root@fhemserver:~# sudo /usr/local/lib/node_modules/fhem.js/bin/postinstall
rm: Entfernen von �/usr/local/lib/node_modules/fhem.js/params.js� nicht m�lich: Datei oder Verzeichnis nicht gefunden
root@fhemserver:~#

Werner Schäffer

Die letzte Fehlermeldung
rm: Entfernen von /usr/local/lib/node_modules/fhem.js/params.js nicht möglich: Datei oder Verzeichnis nicht gefunden
kann ignoriert werden. Im nächsten Release wird sie unterdrückt werden.
Schau mal nach ob jetzt /usr/local/lib/node_modules/fhem.js/params.js als symbolischer Link existiert. Wenn nein lege ihn an mit

ln -sf /etc/fhem.js/params.js /usr/local/lib/node_modules/fhem.js/params.js (als root)

In beiden Fällen müsste damit die Installation abgeschlossen sein.

Tueftler1983

Sorry aber was heißt als symbolischer link

Tueftler1983

Bekomme wenn ich als root: Service fhem.js start   eingebe folgenden output.

Linux fhemserver 4.1.13+ #826 PREEMPT Fri Nov 13 20:13:22 GMT 2015 armv6l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed Apr 20 06:48:11 2016 from 192.168.2.24
root@fhemserver:~# service fhem.js start
Starting fhem.js node instance:
/etc/init.d/fhem.js: Zeile 23: /usr/bin/fhem.js: Datei oder Verzeichnis nicht gefunden
root@fhemserver:~# ln -sf /etc/fhem.js/params.js /usr/local/lib/node_modules/fhem.js/params.js
root@fhemserver:~# service fhem.js start                                     Starting fhem.js node instance:
/etc/init.d/fhem.js: Zeile 23: /usr/bin/fhem.js: Datei oder Verzeichnis nicht gefunden
root@fhemserver:~#

Werner Schäffer

Zitat von: Tueftler1983 am 20 April 2016, 13:17:09
Sorry aber was heißt als symbolischer link

das gehört zu den Linux Grundlagen und kann ganz einfach gegoogelt werden.

Werner Schäffer

Was liefern die beiden folgenden Befehle als root ausgeführt:

whereis fhem.js

ls -al  /etc/fhem.js

Tueftler1983

Hier die Ausgabe beider befehle

root@fhemserver:~# whereis fhem.js
fhem: /etc/fhem.js /usr/local/bin/fhem.js
root@fhemserver:~# ls -al  /etc/fhem.js
insgesamt 24
drwxr-xr-x   2 root root 4096 Apr 19 22:18 .
drwxr-xr-x 110 root root 4096 Apr 19 22:18 ..
-rw-r--r--   1 root root 4046 Apr 19 22:18 params.js
-rw-r--r--   1 root root 4046 Apr 19 22:18 params.js.dist
-rw-r--r--   1 root root  310 Apr 19 22:18 pw_client_auth_dist
-rw-r--r--   1 root root  235 Apr 19 22:18 pw_localhost_fhem_dist
root@fhemserver:~#

Werner Schäffer

Öffne /etc/init.d/fhem.js mit einem Editor und ändere dort /usr/bin/fhem.js in /usr/local/bin/fhem.js

Werner Schäffer

Zitat von: Werner Schäffer am 20 April 2016, 14:17:23
Öffne /etc/init.d/fhem.js mit einem Editor und ändere dort /usr/bin/fhem.js in /usr/local/bin/fhem.js

Möglicherweise musst du in derselben Datei noch /usr/bin/forever in /usr/local/bin/forever ändern.

Prüfe es mit:

whereis forever

Tueftler1983

Habe ich gemacht. Beides.
Aber es kommt forever keine berechtigung.


#!/bin/bash
#
### BEGIN INIT INFO
# Provides: fhem.js
# description:  fhem.js init.d example
  GNU nano 2.2.6         Datei: /etc/init.d/fhem.js                         
#!/bin/bash
#
### BEGIN INIT INFO
# Provides: fhem.js
# description:  fhem.js init.d example
  GNU nano 2.2.6         Datei: /etc/init.d/fhem.js                         
#!/bin/bash
#
### BEGIN INIT INFO
# Provides: fhem.js
# description:  fhem.js init.d example
  GNU nano 2.2.6         Datei: /etc/init.d/fhem.js                         
ERRORLOG=/var/log/$NAME.error
PIDFILE=/var/run/$NAME.pid
FOREVER=/usr/local/bin/forever
FHEMJSSTART=/usr/local/bin/fhem.js

start() {
    echo "Starting $NAME node instance: "

    $FHEMJSSTART -n $NAME -l $LOGFILE -e $ERRORFILE -p $PIDFILE -f $FOREVER
    RETVAL=$?
}

restart() {
    echo -n "Restarting $NAME node instance : "
    $FOREVER restart $NAME
    RETVAL=$?
}

stop() {                                                                         $FOREVER stop $NAME
    RETVAL=$?
}

case "$1" in
    start)
        start


root@fhemserver:~# service fhem.js start
Starting fhem.js node instance:
/usr/local/bin/fhem.js: Zeile 42: /usr/bin/forever: Keine Berechtigung
root@fhemserver:~#

Werner Schäffer

in dem File /usr/local/bin/fhem.js ist noch ein Bug. Ersetze die Zeile

while getopts "p:l:e:n:" opt; do

durch

while getopts "p:l:e:n:f:" opt; do

Tueftler1983

So scheint zu laufen nachdem ich es auch in /usr/local/bin/fhem.js geändert habe.
[coderoot@fhemserver:~# service fhem.js start
Starting fhem.js node instance:
warn:    --minUptime not set. Defaulting to: 1000ms
warn:    --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms
info:    Forever processing file: /usr/local/lib/node_modules/fhem.js
root@fhemserver:~#]

Tueftler1983


Werner Schäffer

Schön!
Die Probleme lagen vor allem daran dass bei deiner Linux-Distribution npm in das Verzeichnis /usr/local installiert. Die ganzen Scripte sind aber darauf angelegt dass npm in /usr installiert. Das werde ich noch anpassen und im nächsten Release berücksichtigen.