Plugwise Smile P1 – LuCI unlocken (uhttpd)
Wat is LuCI?
De eerste reden voor dit project was het ontbreken van een vrije, schone, uitbreidbaar en gemakkelijk te onderhouden web user interface voor embedded apparaten. Terwijl de meeste vergelijkbare configuratie interfaces maken veel gebruik van de Shell-scripting taal LUCI maakt gebruik van de Lua-programmeertaal en splitst de interface in logische onderdelen zoals modellen en opvattingen, maakt gebruik van object-georiënteerde bibliotheken en templates. Dat zorgt voor een hogere performance, kleinere grootte van de installatie, sneller runtimes en wat nog belangrijker is: een betere onderhoudbaarheid.
LuCi zit standaard ingebakken in Openwrt en is dus een GUI om de “uci” configuratie.
LuCI unlocken?
Zoals de smile P1 standaard is ingesteld, is deze interface niet te bereiken (deze luistert op poort “80”), terwijl de standaard “smile” HTML pagina toch te zien is via de webbrowser…ik vermoed dat de NGINX server deze poort overruled…
Om poort “80” van LuCI te veranderen in “8080”, volg je deze commando’s:
1) uci show uhttpd (dit laat de configuratie instellingen zien van “uhttpd” (bestand = “/etc/config/uhttpd”)
Je ziet dat de uhttpd “luister poort” staat ingesteld op “80”.
2) uci set uhttpd.main.listen_http=0.0.0.0:8080 (daarmee stel je de poort in op 8080)
3) uci commit uhttpd (de opdracht om het configuratiebestand “uhttpd” te verwerken, wijzigingen die je aanbrengt worden namelijk eerst tijdelijk opgeslagen)
4) /etc/init.d/uhttpd restart (de opdracht om uhttp opnieuw te initialiseren, op deze manier is er geen reboot nodig)
Meer info over uci is hier te vinden
Om LuCI te benaderen, open je een webbrowser en tik het IP van de smile in gevolgd door “:8080”, log in met dezelfde naam en wachtwoord gegevens die je gebruikt met de SSH verbinding!
Na het inloggen kom je in LuCI, maar het geeft op sommige pagina’s foutmeldingen etc, mijn gevoel zegt dat LuCI of de Smile niet goed op elkaar zijn afgestemd…jammer…
Een paar screens (smile v1.1.9):
Firmware 1.2.8+
Plugwise heeft in firmware v1.2.8, UHTTPD verwijderd (/etc/init.d/uhttpd), luci staat er nog wel op, helaas is de NGINX webserver niet gecompiled met CGI (welke luci nodig heeft) en kan niet met CGI scripts overweg.
Je kan zien waarmee NGINX gecompileerd is met het commando hieronder:
Linux commando:
nginx -V
1 2 3 |
nginx version: nginx/1.2.1 built by gcc 4.6.3 20120201 (prerelease) (Linaro GCC 4.6-2012.02) configure arguments: --crossbuild=Linux::mipsel --prefix=/usr --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --pid-path=/var/run/nginx.pid --lock-path=/var/lock/nginx.lock --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/body --http-proxy-temp-path=/var/lib/nginx/proxy --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --with-cc=mipsel-openwrt-linux-uclibc-gcc --with-cc-opt='-I/media/sources/smile/smile_1.2/smile_1.2/31145/staging_dir/target-mipsel_r2_uClibc-0.9.33/usr/include -I/media/sources/smile/smile_1.2/smile_1.2/31145/staging_dir/target-mipsel_r2_uClibc-0.9.33/include -I/media/sources/smile/smile_1.2/smile_1.2/31145/staging_dir/toolchain-mipsel_r2_gcc-4.6-linaro_uClibc-0.9.33/usr/include -I/media/sources/smile/smile_1.2/smile_1.2/31145/staging_dir/toolchain-mipsel_r2_gcc-4.6-linaro_uClibc-0.9.33/include -Os -pipe -mips32r2 -mtune=mips32r2 -fno-caller-saves -fhonour-copts -Wno-error=unused-but-set-variable -msoft-float -I/media/sources/smile/smile_1.2/smile_1.2/31145/staging_dir/target-mipsel_r2_uClibc-0.9.33/usr/lib/ -I/media/sources/smile/smile_1.2/smile_1.2/31145/staging_dir/target-mipsel_r2_uClibc-0.9.33/usr/include/' --with-ld-opt='-L/media/sources/smile/smile_1.2/smile_1.2/31145/staging_dir/target-mipsel_r2_uClibc-0.9.33/usr/lib -L/media/sources/smile/smile_1.2/smile_1.2/31145/staging_dir/target-mipsel_r2_uClibc-0.9.33/lib -L/media/sources/smile/smile_1.2/smile_1.2/31145/staging_dir/toolchain-mipsel_r2_gcc-4.6-linaro_uClibc-0.9.33/usr/lib -L/media/sources/smile/smile_1.2/smile_1.2/31145/staging_dir/toolchain-mipsel_r2_gcc-4.6-linaro_uClibc-0.9.33/lib' --add-module=/media/sources/smile/smile_1.2/smile_1.2/31145/build_dir/target-mipsel_r2_uClibc-0.9.33/ngx-devel-kit --add-module=/media/sources/smile/smile_1.2/smile_1.2/31145/build_dir/target-mipsel_r2_uClibc-0.9.33/lua-nginx-module --with-ipv6 --without-http-cache --without-http_autoindex_module --without-http_fastcgi_module --without-http_memcached_module --without-http_ssi_module --without-http_browser_module --without-http_split_clients_module --without-http_geo_module --without-http_referer_module --without-http_userid_module |
Hiertussen zie je staan: –without-http_fastcgi_module, deze versie van NGINX heeft geen ondersteuning voor CGI.
Welke poort(en) is/zijn bezet?
Je kan met het volgende commando zien welke poorten van het netwerk in gebruik zijn:
Linux commando:
netstat -nat
1 2 3 4 5 |
Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 100 192.168.1.102:22 192.168.1.104:1928 ESTABLISHED tcp 0 0 127.0.0.1:80 127.0.0.1:56356 TIME_WAIT netstat: /proc/net/tcp6: No such file or directory |
Hier zie je:
– Poort 22: SSH
– Poort 80: HTTP
In dit geval is poort 8080 nog niet gebruikt, deze kunnen we dus gebruiken voor uhttpd!
Voor de v1.2.8+ versie kun je weer UHTTPD installeren, dit doe je met “opkg”, meer info hier.
Eerst moet je de “download lijst” bijwerken, zo krijg je valide paketten binnen met de recentste versies!
Linux commando:
opkg update
1 2 3 |
Downloading http://downloads.openwrt.org/snapshots/trunk/ramips/packages/Packages.gz. Inflating http://downloads.openwrt.org/snapshots/trunk/ramips/packages/Packages.gz. Updated list of available packages in /var/opkg-lists/snapshots. |
Daarna kunnen we UHTTPD weer installeren.
Linux commando:
opkg install uhttpd
1 2 3 4 5 6 |
Installing uhttpd (2013-05-23-ea691dfe1fb730ba40841e8c98e0541f2801) to root... Downloading http://downloads.openwrt.org/snapshots/trunk/ramips/packages/uhttpd_2013-05-23-ea691dfe1fb730ba40841e8c98e0541f2801_ramips.ipk. Installing libubox (2013-04-15-f93f332270bdaddb5d24fdbe3eb5b1f7d80a) to root... Downloading http://downloads.openwrt.org/snapshots/trunk/ramips/packages/libubox_2013-04-15-f93f332270bdaddb5d24fdbe3eb5b1f7d80a_ramips.ipk. Configuring libubox. Configuring uhttpd. |
Na de installatie kun je de stappen hieborven bij v1.1.9 hier weer vervolgen.
Als je nu weer kijkt met: netstat -nat , dan zie je dat er nu ook op poort 8080 geluisterd wordt!
1 2 3 4 5 6 |
Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 100 192.168.1.102:22 192.168.1.104:1928 ESTABLISHED tcp 0 0 127.0.0.1:8080 127.0.0.1:56356 TIME_WAIT tcp 0 0 127.0.0.1:80 127.0.0.1:56356 TIME_WAIT netstat: /proc/net/tcp6: No such file or directory |
Hier zie je:
– Poort 22: SSH
– Poort 80: HTTP
– Poort 8080: HTTP
In deze interface zijn vele verbeteringen te zien:
uhttpd bij het opstarten
uhttpd wordt na installatie niet standaard opgestart als de smile opnieuw gestart wordt (reboot), dit is met een Linux commando in te stellen, maar ook heel eenvoudig in luci.
In luci ga naar “system” –> “startup” en zet “uhttpd” op “enabled” bij het opstarten: