Montag, 1. Oktober 2007

ebay-Scharfschützen, Teil III

Nach Teil 1 und Teil 2 dieser kleinen Reihe wollen wir uns nun Teil 3 des Tutorials zuwenden:


Wie kann ich die Bedienung von esniper vereinfachen?

Nun, am einfachsten natürlich damit, dass ich dem ganzen ein grafisches Benutzerinterface spendiere. Und was liegt noch näher als den Webbrowser zu nutzen, den benötige ich ja sowieso, um bei Ebay 'rumzusurfen.

Wenn man sich in den Quellen von esniper oder im CVS umschaut, dann sieht man schnell, dass schon ein auf PHP-basierendes Webinterface mitgeliefert wird. Nachteil: mangelnde Dokumentation und die Notwendigkeit von mySQL.

Also habe ich mich auf die Suche nach einer Alternative gemacht und bin relativ schnell beim esf, dem "esniper frontend" gelandet. Hierbei handelt es sich ebenso um ein Webinterface, das allerdings ohne Datenbankanbindung auskommt und mittels PHP und Javascript realisiert wurde.

Vor welches Problem stellt uns aber ein Webinterface?

Richtig, es benötigt einen Web-Server und den gibt es momentan auf meiner NSLU2 (noch) nicht. Aber daran soll's nicht scheitern, Apache ist mir allerdings eine Nummer zu groß für die kleine Slug (soll aber sogar im Zusammenspiel mit mySQL drauf laufen). Also entscheide ich mich für lighttpd, kurz lighty. Dieser Server ist sehr ressourcenschonend und trotzdem flexibel (Unterstützung für Module) und schnell.

Also, dann installieren wir mal den Server, sowie das benötigte PHP (gleich 4 und 5, man kann ja nie wissen).

//NSLU2~# aptitude install lighttpd php4-cgi php5-cgi
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut... Fertig
Lese erweiterte Statusinformationen
Initialisiere Paketstatus... Fertig
Lese Task-Beschreibungen... Fertig
Erzeuge Tag-Datenbank... Fertig
Die folgenden NEUEN Pakete werden zusätzlich automatisch installiert:
libzzip-0-12 php4-common php5-common
Die folgenden NEUEN Pakete werden zusätzlich installiert:
libzzip-0-12 lighttpd php4-cgi php4-common php5-cgi php5-common
0 Pakete aktualisiert, 6 zusätzlich installiert, 0 werden entfernt und 0 nicht aktualisiert.
Muss 8615kB an Archiven herunterladen. Nach dem Entpacken werden 18,1MB zusätzlich belegt sein.
Wollen Sie fortsetzen? [Y/n/?]
Schreibe erweiterte Statusinformationen... Fertig
Hole:1 http://security.debian.org etch/updates/main lighttpd 1.4.13-4etch3 [288kB]
Hole:2 http://ftp.de.debian.org etch/main libzzip-0-12 0.12.83-8 [34,4kB]
Hole:3 http://security.debian.org etch/updates/main php4-common 6:4.4.4-8+etch4 [207kB]
Hole:4 http://security.debian.org etch/updates/main php4-cgi 6:4.4.4-8+etch4 [3157kB]
Hole:5 http://security.debian.org etch/updates/main php5-common 5.2.0-8+etch7 [214kB]
Hole:6 http://security.debian.org etch/updates/main php5-cgi 5.2.0-8+etch7 [4715kB]
8615kB wurden in 16s heruntergeladen (525kB/s)
Wähle vormals abgewähltes Paket libzzip-0-12.
(Lese Datenbank ... 30724 Dateien und Verzeichnisse sind derzeit installiert.)
Entpacke libzzip-0-12 (aus .../libzzip-0-12_0.12.83-8_arm.deb) ...
Wähle vormals abgewähltes Paket lighttpd.
Entpacke lighttpd (aus .../lighttpd_1.4.13-4etch3_arm.deb) ...
Wähle vormals abgewähltes Paket php4-common.
Entpacke php4-common (aus .../php4-common_6%3a4.4.4-8+etch4_arm.deb) ...
Wähle vormals abgewähltes Paket php4-cgi.
Entpacke php4-cgi (aus .../php4-cgi_6%3a4.4.4-8+etch4_arm.deb) ...
Wähle vormals abgewähltes Paket php5-common.
Entpacke php5-common (aus .../php5-common_5.2.0-8+etch7_arm.deb) ...
Wähle vormals abgewähltes Paket php5-cgi.
Entpacke php5-cgi (aus .../php5-cgi_5.2.0-8+etch7_arm.deb) ...
Richte libzzip-0-12 ein (0.12.83-8) ...
Richte lighttpd ein (1.4.13-4etch3) ...
Starting web server: lighttpd.
Richte php4-common ein (4.4.4-8+etch4) ...
Richte php4-cgi ein (4.4.4-8+etch4) ...
Creating config file /etc/php4/cgi/php.ini with new version
Richte php5-common ein (5.2.0-8+etch7) ...
Richte php5-cgi ein (5.2.0-8+etch7) ...
Creating config file /etc/php5/cgi/php.ini with new version

Das ging ja schon mal sehr problemlos. Dann schauen wir doch mal, was mein Maxthon so findet:

Sehr schön, der Server läuft. Und da stehen sogar nette Hinweise. Da absehbar ist, dass wir CGI benötigen, folge ich ebendiesen und aktiviere dies mit folgendem Befehl auf der Console.

//NSLU2~# lighty-enable-mod cgi
Available modules: auth cgi fastcgi proxy simple-vhost ssi ssl userdir
Already enabled modules:
Enabling cgi: ok
Run /etc/init.d/lighttpd force-reload to enable changes
//NSLU2~# /etc/init.d/lighttpd force-reload
Stopping web server: lighttpd.
Starting web server: lighttpd.

Damit funktioniert CGI, die anderen Module ignorieren wir für's erste. Kann man sich später ja mal anschauen. Insgesamt scheint der lighty ganz schön mächtig zu sein ...

Weiter geht's mit dem Web-Frontend, als erstes indem wir uns die Quellen besorgen und auspacken.

//NSLU2~/ebay/esf# wget http://belnet.dl.sourceforge.net/sourceforge/es-f/es-f_0.6.0.tgz
--15:33:07-- http://belnet.dl.sourceforge.net/sourceforge/es-f/es-f_0.6.0.tgz
=> `es-f_0.6.0.tgz'
Auflösen des Hostnamen »belnet.dl.sourceforge.net«.... 193.190.198.97
Verbindungsaufbau zu belnet.dl.sourceforge.net193.190.198.97:80... verbunden.
HTTP Anforderung gesendet, warte auf Antwort... 200 OK
Länge: 233.146 (228K) [application/x-gzip]
100%[=========================================================================================================================================>] 233.146 1.27M/s
15:33:17 (1.26 MB/s) - »es-f_0.6.0.tgz« gespeichert [233146/233146]
//NSLU2~/ebay/esf# tar xvf es-f_0.6.0.tgz
//NSLU2~/ebay/esf# rm es-f_0.6.0.tgz

In der nun entstandenen Verzeichnisstruktur findet man eine sehr ausführliche README, die die weiteren Schritte schon ganz nett erläutert. Fangen wir doch mal klein an und schieben das ganze Zeug an eine Stelle, wo der Webserver es auch findet, das heißt wir legen uns ein Verzeichnis unter /var/www an, in meinem Fall mal "esf" genannt, indem wir alle Quellen dorthin kopieren.

//NSLU2/var/www# cp -R /root/ebay/esf . 

In der Regel hat jetzt alles die Rechte des Users, mit dem man kopiert hat - in meinem Beispiel hier root. Wir benötigen aber den Webserver als Eigentümer, deswegen korrigieren wir das mal fix mit folgender Eingabe.

//NSLU2/var/www# chown -R www-data:www-data esf

Ein Aufruf von der nun verfügbaren URL im Browser (in meinem Beispiel: http://nslu2.lan/esf/ - wird bei euch nicht gehen ;-) ) bringt eine nette Seite zum Vorschein, die das weitere Vorgehen beschreibt (noch mehr Infos dort):

  • Kopiere ./config/config.dist.php nach ./config.php und richte Ebay-User ein
  • Mache das Installationsverzeichnis für den Webserver beschreibbar
  • Mache config.php beschreibbar
  • Starte das Frontend, die Installation beginnt.

Das sieht ja durchaus machbar aus. Details im nächsten Code-Fenster.

//NSLU2/var/www/esf# cp config/config.dist.php config.php
//NSLU2/var/www/esf# chown www-data:www-data config.php
//NSLU2/var/www/esf# chmod 644 config.php
//NSLU2/var/www/esf# vi config.php

In der config.php muss man vor folgender Zeile das Kommentarzeichen (#) entfernen und den Ebay-Namen (anstelle von YourAccount) und Passwort (anstelle von YourPassword) eintragen:

$users['YourAccount'] = 'YourPassword';  

Nach dem obligatorischen Speichern noch eine letzte Kontrolle, hier mal meine Verzeichnisstruktur (nach erfolgreicher Autokonfiguration - also ein paar mehr Dateien und Verzeichnisse als eigentlich bei diesem Schritt):

//NSLU2/var/www/esf# l
insgesamt 68
drwxr-xr-x 2 www-data www-data 4096 2007-10-01 16:24 .cache
drwxr-xr-x 2 www-data www-data 4096 2007-10-01 16:16 config
-rw-r--r-- 1 www-data www-data 4575 2007-10-01 16:23 config.php
drwxr-xr-x 2 www-data www-data 4096 2007-10-01 15:55 doc
-rw-r--rw- 1 www-data www-data 377 2007-10-01 16:23 .htaccess
drwxr-xr-x 3 www-data www-data 4096 2007-10-01 15:55 include
-rw-r--r-- 1 www-data www-data 11002 2007-10-01 15:55 index.php
drwxr-xr-x 2 www-data www-data 4096 2007-10-01 15:55 language
drwxr-xr-x 5 www-data www-data 4096 2007-10-01 15:55 layout
drwxr-xr-x 15 www-data www-data 4096 2007-10-01 15:55 module
drwxr-xr-x 11 www-data www-data 4096 2007-10-01 15:55 plugin
-rw-r--r-- 1 www-data www-data 126 2007-10-01 15:55 README
drwxr-xr-x 2 www-data www-data 4096 2007-10-01 16:23 .run
-rw-r--r-- 1 www-data www-data 372 2007-10-01 15:55 UPGRADE

Nun kann man die URL nochmals aufrufen und die automatisierte Installation/Konfiguration des Frontends sollte ordnungsgemäß durchlaufen. Im Idealfall sieht man nach kurzem Warten folgendes Ergebnis:


Nun, das war's eigentlich schon. Spätestens jetzt sollte das Verzeichnis so aussehen wie oben geschrieben. Man kann die Weboberfläche noch im Detail anpassen, Infos gibt's dazu auf der Homepage bzw. auch in dem Unterordner "doc".

Diese Beschreibung ist jetzt nicht sonderlich auf Sicherheit getrimmt, man kann noch viel mit htaccess machen und sollte auch unter /var/www nur die notwendigen Dinge vorhalten (die ganzen READMEs etc. müssen ja nicht dort liegen). In meinem Umfeld ist das nicht allzu kritisch, da der Webserver auf der NSLU bisher nur aus meinem LAN her erreichbar ist. Falls sich das mal ändern sollte, muss ich auch noch nachbessern. Viel Spaß beim Basteln ...

Noch ein Tipp zum Abschluss:
Sollten ein paar Bilder auf der Weboberfläche nicht korrekt angezeigt werden, dann fehlt wahrscheinlich noch GD für PHP, das lässt sich aber recht einfach mit

//NSLU2~/# aptitude install php4-gd php5-gd

nachinstallieren! ;)

Update: Es gibt jetzt auch einen vierten Teil der Reihe ...

blog comments powered by Disqus

Design von Dicas Blogger, angepasst durch Mario Ruprecht