Hi all,
im Folgenden wird beschrieben, wie man mit einer Squeezebox (z.B. Boom) Befehle auf den HS und damit auf den Bus bekommt.
Die SBs haben ja bekanntlich Tasten (Boom z.B. 6 Stück), welche mit der folgende Konfiguration verwendet werden können, um beliebige Funktionen über den HS (oder auch direkt über den eibd) auszuführen.
Hardware, Versionen:
- Squeezeserver: z.b. 7.6.1 - r33110 on Ubuntu Server
- Kidsplay-Plugin von KidsPlay plugin for SlimServer
- SB Boom: aktuelle Firmware: 57, die der Server liefert
- Homeserver 2.6
1. Kidsplay-Plugin auf dem Squeezeserver installieren. Selbiges hat ein Exec-Modul, welches es ermöglicht beliebige Funktionen auf dem Server auszuführen. Hierzu sind -wie dokumentiert- Voraussetzungen zu erfüllen.
2. Squeezeserver im Bereich Erweitert/Sicherheit durch Kennwortschutz absichern und CSRF-Schutzstufe auf Mittel oder Hoch stellen. Ich verwende Mittel.
3. Datei anlegen, welche das SECRET für die Übermittlung enthält.
Auf meinem Ubuntu Server so:
echo 12345 > /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/KidsPlay/kidsplayexec.txt (12345 ist das SECRET, also nach belieben ersetzen)
4. Kidsplay konfigurieren: Kidsplay kann pro Player oder global konfiguriert werden. Ich möchte die Funktionen nur in diesem Raum haben, also 'pro Player' (Einstellungen/Player/KidsPlay Player settings). Klick "Macros specific to this player", Objekt wählen: Boom - Preset Button. Hier kommen die Befehle rein. Es können lokale Befehle und Exec Befehle nach belieben kombiniert werden. Bsp.:
"display Dachfenster 0-30% 10; kidsplayexec 12345 /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/KidsPlay/t1.sh"
5. Scripte auf dem (Ubuntu)Server anlegen, die den Trigger an den HS weiterleiten.
Z.b. /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/KidsPlay/t1.sh enthält:
#!/bin/bash
echo "t1" | nc 192.168.0.xy 8000
6. HS 'auf Empfang stellen'
Kommunikation/IP Telegramm empfangen: s. Abbildungen. Schreibt die Nummer des Tasters in ein iKO.
7. Logik (z.B. Vergleicher 10fach) erstellen um nach iKO (Wert 1-6) Funktionen auszuführen.
8. Rückmeldungen an die SB können per Holgers Squeezeboxbaustein ab v 2.04 (Danke für die Aufnahme des Logins!!!) gesendet werden.
Wenn man sie (alternativ) als Webabfrage senden möchte, muss man bedenken, dass nun noch http Authorization und Referer oder der 'cauth' ins Spiel kommen müssen, um den Sicherheitsanforderungen gerecht zu werden.
Probleme/Hacks:
1. Das KidsplayPlugin erwartet die "kidsplayexec.txt" in /. Das habe ich im Plugin-Script geändert:
/var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/KidsPlay/Plugin.pm
Zeile 565:
return '/var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/KidsPlay/kidsplayexec.txt';
2. Mein Ubuntuserver wollte das Script nicht ausführen, da der user "Squeezeserver" unter der der Squeezeserver läuft keine Shell hatte.
"usermod -s /bin/bash Squeezboxserver" hat es behoben.
3. Leider führt er nicht direkt die Befehle vom Kidsplay-Plugin aus (als "echo "t1" | nc 192.168.0.xy 8000"), obwohl er das können sollte. Der Workaround war pro Taster ein t'x'.sh anzulegen.
Gruß
Hansa
im Folgenden wird beschrieben, wie man mit einer Squeezebox (z.B. Boom) Befehle auf den HS und damit auf den Bus bekommt.
Die SBs haben ja bekanntlich Tasten (Boom z.B. 6 Stück), welche mit der folgende Konfiguration verwendet werden können, um beliebige Funktionen über den HS (oder auch direkt über den eibd) auszuführen.
Hardware, Versionen:
- Squeezeserver: z.b. 7.6.1 - r33110 on Ubuntu Server
- Kidsplay-Plugin von KidsPlay plugin for SlimServer
- SB Boom: aktuelle Firmware: 57, die der Server liefert
- Homeserver 2.6
1. Kidsplay-Plugin auf dem Squeezeserver installieren. Selbiges hat ein Exec-Modul, welches es ermöglicht beliebige Funktionen auf dem Server auszuführen. Hierzu sind -wie dokumentiert- Voraussetzungen zu erfüllen.
2. Squeezeserver im Bereich Erweitert/Sicherheit durch Kennwortschutz absichern und CSRF-Schutzstufe auf Mittel oder Hoch stellen. Ich verwende Mittel.
3. Datei anlegen, welche das SECRET für die Übermittlung enthält.
Auf meinem Ubuntu Server so:
echo 12345 > /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/KidsPlay/kidsplayexec.txt (12345 ist das SECRET, also nach belieben ersetzen)
4. Kidsplay konfigurieren: Kidsplay kann pro Player oder global konfiguriert werden. Ich möchte die Funktionen nur in diesem Raum haben, also 'pro Player' (Einstellungen/Player/KidsPlay Player settings). Klick "Macros specific to this player", Objekt wählen: Boom - Preset Button. Hier kommen die Befehle rein. Es können lokale Befehle und Exec Befehle nach belieben kombiniert werden. Bsp.:
"display Dachfenster 0-30% 10; kidsplayexec 12345 /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/KidsPlay/t1.sh"
5. Scripte auf dem (Ubuntu)Server anlegen, die den Trigger an den HS weiterleiten.
Z.b. /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/KidsPlay/t1.sh enthält:
#!/bin/bash
echo "t1" | nc 192.168.0.xy 8000
6. HS 'auf Empfang stellen'
Kommunikation/IP Telegramm empfangen: s. Abbildungen. Schreibt die Nummer des Tasters in ein iKO.
7. Logik (z.B. Vergleicher 10fach) erstellen um nach iKO (Wert 1-6) Funktionen auszuführen.
8. Rückmeldungen an die SB können per Holgers Squeezeboxbaustein ab v 2.04 (Danke für die Aufnahme des Logins!!!) gesendet werden.
Wenn man sie (alternativ) als Webabfrage senden möchte, muss man bedenken, dass nun noch http Authorization und Referer oder der 'cauth' ins Spiel kommen müssen, um den Sicherheitsanforderungen gerecht zu werden.
Probleme/Hacks:
1. Das KidsplayPlugin erwartet die "kidsplayexec.txt" in /. Das habe ich im Plugin-Script geändert:
/var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/KidsPlay/Plugin.pm
Zeile 565:
return '/var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/KidsPlay/kidsplayexec.txt';
2. Mein Ubuntuserver wollte das Script nicht ausführen, da der user "Squeezeserver" unter der der Squeezeserver läuft keine Shell hatte.
"usermod -s /bin/bash Squeezboxserver" hat es behoben.
3. Leider führt er nicht direkt die Befehle vom Kidsplay-Plugin aus (als "echo "t1" | nc 192.168.0.xy 8000"), obwohl er das können sollte. Der Workaround war pro Taster ein t'x'.sh anzulegen.
Gruß
Hansa
Kommentar