Fork me on GitHub Fork me on GitHub

uninformativ.de

GNU, Linux, Shell und Co.

ngircd auf der FritzBox – Update: minibot

Pingu-Avatar

02.01.2009, 19:31:02

Der König ist tot, es lebe der König!

Nach dem doch etwas schmerzlichen Wegfall unseres IRC-Servers im Zuge der Root-Kündigung habe ich mir mal die „alte“ FritzBox 7170 geschnappt, die noch im Regal stand – zum Glück völlig ungenutzt.

Was also lag näher, als ngircd auf die FritzBox zu packen? geek Lustigerweise ist das sogar ziemlich einfach, da die Fritze weit verbreitet sind und schon viele Leute eine wunderbare Arbeit geleistet haben.

Das Equipment hier:
  • FritzBox Fon WLAN 7170 mit Firmware 29.04.57
  • Ein beliebiger USB-Stick
  • ArchLinux zum Kompilieren, dürfte aber mit so ziemlich jedem Linux gehen
  • Kabel und ggf. für ’nen Moment ein Telefon wink
Damit man überhaupt etwas machen kann, muss erstmal Telnet auf der Box aktiviert werden. Dazu auch das Telefon: Kurz #96*7* wählen und Telnet ist an. Mit #96*8* würde man’s wieder aus kriegen, aber das ist ja erstmal nicht gewünscht. Man schaue sich kurz dort drinnen um. grin

Als nächstes braucht man eine Cross-Compile-Toolchain. Hier gibt es eine schnelle Anleitung, ob man aber das gesamte Paket dort braucht, weiß ich noch nicht. Schaden kann es aber wohl nicht. Man muss es auch nicht unter /usr installieren, das kann irgendwo hin, ohne den Rest des Systems zu berühren.

Wenn das drauf ist und das „Hallo Welt“ schon erste Freude ausgelöst hat smile, kann man sich an ngircd ranwagen. Ich habe es auf einen USB-Stick gestopft, sodass ich mir keine größeren Gedanken um seine Location o.ä. machen musste. Außerdem besitzt es die schöne Eigenschaft, dass es problemlos statisch mit seinen Bibliotheken gelinkt werden kann, sodass man vorerst nochmal ein paar Sorgen weniger hat. Release 13 habe ich hier am Laufen.

Zuerst sollte man wohl mal den MIPS-Compiler in den Pfad bringen, sonst geht nichts:
1
export PATH=/pfad/zu/dsmod/toolchain/target/bin:$PATH
Der Knackpunkt ist dann der Aufruf von configure:
1
LDFLAGS=-static ./configure --build=i386-linux-gnu --target=mipsel-linux --host=mipsel-linux CFLAGS="-Os -pipe -march=4kc -Wa,--trap" --without-syslog --prefix=/var/tmp/ngircd
Die wichtigen Optionen stehen auch nochmal hier.

Syslog-Support habe ich bewusst erstmal ausgeschaltet. Ob das ginge, weiß ich noch nicht. wink --prefix=… stellt dann vorallem ein, wo das Programm seine Config erwartet – normalerweise sucht es unter /usr/local, was für die FritzBox etwas unvorteilhaft ist.

Nachdem configure durchgelaufen ist, haut man einfach wie gewohnt ein „make“ rein und beobachtet das rege Treiben.

Es bietet sich jetzt an, auf dem Stick folgende Verzeichnisstruktur anzulegen und die beiden Dateien entsprechend zu platzieren:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ngircd/:
drwxrwxrwx 4 root root 16384 Jan 1 03:31 .
drwxrwxrwx 3 root root 16384 Jan 1 03:28 ..
drwxrwxrwx 2 root root 16384 Jan 1 03:33 etc
drwxrwxrwx 2 root root 16384 Jan 1 03:31 sbin

ngircd/etc:
drwxrwxrwx 2 root root 16384 Jan 1 03:33 .
drwxrwxrwx 4 root root 16384 Jan 1 03:31 ..
-rwxrwxrwx 1 root root 9048 Jan 1 06:04 ngircd.conf

ngircd/sbin:
drwxrwxrwx 2 root root 16384 Jan 1 03:31 .
drwxrwxrwx 4 root root 16384 Jan 1 03:31 ..
-rwxrwxrwx 1 root root 289651 Jan 1 04:37 ngircd
(Ist FAT32 auf meinem Stick, daher die wirren Rechte…)

Wichtig ist noch, dass man in der Config die UserID auf den User „ftpuser“ der Box setzt, denn als Root mag ngircd zum Glück nicht starten.

Stick anstecken, warten bis er gemountet ist und dann kann zum Beispiel einen Link in /var/tmp auf der Box anlegen (jenachdem, wo sich der Stick befindet):
1
2
cd /var/tmp
ln -s /var/media/ftp/FlashDisk-Partition-0-1/ngircd ngircd
Das geht sicher noch eleganter, aber für den Moment reicht mir das.

Die große Überraschung ist dann, dass das tatsächlich läuft. grin Mal sehen, was noch so alles mit dem Dings geht. smile


Update:

Bei so einem kleinen Server mit sehr wenigen Usern hat man manchmal das Problem, dass alle einen Channel verlassen und dann das Topic verloren geht. Daher hier ein kleiner Minimalbot, der nix weiter tut, als rumzusitzen. wink Ob ich den weiter ausbaue, steht noch in den Sternen – im Moment ist er absolut minimal, alles ist hardcoded etc., aber er erfüllt seinen Zweck.

Tags: fritzbox, code, c

Kommentare

Keine Kommentare bisher.

Kommentar hinterlassen

Name (optional):
E-Mail (optional):
Webpage (optional):
Follow-Up-Benachrichtigung: Aktivieren
Code bestätigen: 3943 →

Captcha:

Hinweise: