Hallo alle zusammen,
ich habe die D-Link-Firmware so angepasst, dass man auswählen kann, ob die Asterisk-Konfiguration automatisch generieren lassen will oder selber die Config-Dateien bearbeiten möchte.
Folgende Funktionen stehen im Vergleich zur offiziellen Firmware 4.3 zur Verfügung:
Folgende Dateien wurden dazu modifiziert:
Firmware erstellen:
Man kann sich mit o.g. Anleitung selber ein Firmware-Update backen, dazu einfach das Firmware-Update auf 4.3 von D-Link herunterladen, entpacken, das eigentliche Firmware-Update base64-dekodieren (mewencode -d horst-image-4.3.dat horst.tar.gz), ent-TAR-en (tar zxf horst.tar.gz), main-fs ent-SQUASHFS-en (unsquashfs image/main-fs), die o.g. Änderungen in squashfs_root machen, und mit folgendem Shell-Skript wieder als Update-Image verpacken:
Alternativ gibt's das fertige Update hier zum Download:
http://rapidshare.com/files/86764048/horst4.3_custom1.0.dat.html
http://sourceforge.net/project/showfiles.php?group_id=194924&package_id=229914
In beiden Fällen geschieht das Update natürlich auf eigene Gefahr!
Ursprünglich wollte ich das ganze als über das Webinterface installierbares AddOn ausführen, was aber daran scheiterte, dass /usr/share/board_cfg auf einem read-only-Dateisystem liegt, also nur direkt im Firmware-Image geändert werden kann.
Danach habe ich versucht, das Firmware-Image mit der Entwickler-DVD zu erstellen, was zwar funktioniert, aber ich schaffe es damit nicht, einen lauffähigen Asterisk hinzubekommen. Er stürzt dann immer mit der Meldung "/usr/sbin/asterisk: can't resolve symbol 'lrintf'" ab. Das ist aber vermutlich ein allgemeines Problem der Entwickler-DVD (Version 2.5 mit 4.3-Source-Update), denn es tritt auch auf, wenn ich die Firmware unmodifiziert kompiliere.
Bekannte Probleme in dieser Version:
Sonstige Hinweise / Anleitung:
Freischalten des SSH-Zuganges in dieser Firmware:
Das Freischalten des SSH-Zuganges (also das Hinterlegen des eigenen Public-Keys) ist in dieser Firmware besonders leicht:
Dazu einfach auf einem USB-Stick das Verzeichnis myhorstconfig anlegen, dort den SSH-Public-Key mit dem Namen id_rsa.pub hineinkopieren, dann eine Datei run.sh erstellen mit folgendem Inhalt:
Ich hoffe, diese modifizierte Firmware nützt jemandem in irgendeiner Art. Ich habe sie mit dem Ziel erstellt, durch manuelle Konfiguration mehrere Mailboxen einzurichten, die E-Mail-Benachrichtigung dafür zum Laufen zu bekommen, und um die Funktion "Absenderrufnummer setzten" von Sipgate zu nutzen (wenngleich ich zu alledem noch nicht gekommen bin).
ich habe die D-Link-Firmware so angepasst, dass man auswählen kann, ob die Asterisk-Konfiguration automatisch generieren lassen will oder selber die Config-Dateien bearbeiten möchte.
Folgende Funktionen stehen im Vergleich zur offiziellen Firmware 4.3 zur Verfügung:
- Dem Asterisk-Konfigurations-Generator (/usr/share/board_cfg/phone/phone_config) ist ein Shell-Skript vorgeschaltet, welches überprüft, ob in /mnt/etc/asterisk (also im persistenten Flash-Speicher) eine benutzerdefinierte Konfiguration vorliegt und ersetzt, wenn ja, /etc/asterisk mit einem Symlink auf /mnt/etc/asterisk. Außerdem wird die generierte Konfiguration nach /tmp/asterisk_dlink umgeleitet.
- Das Root-Verzeichnis der HorstBox ist via Samba freigegeben; wenn Samba aktiviert ist und ein Benutzer "admin" angelegt wurde, kann man per smb://horstbox/root auf das komplette Dateisystem zugreifen.
- Beim Anschließen eines USB-Datenträgers wird geprüft, ob darauf unter myhorstconfig/run.sh ein Shell-Skript liegt und dieses ausgeführt. Die Idee kam von [thread=146056]moepmoep[/thread] hier im Forum.
Folgende Dateien wurden dazu modifiziert:
- /usr/share/board_cfg/phone/phone_config wurde in /usr/share/board_cfg/phone/phone_config_dlink umbenannt
Folgender Code wurde nach /usr/share/board_cfg/phone kopiert und per chmod +x ausführbar gemacht:
Code:#!/bin/sh # make sure /mnt/etc exists mkdir -p /mnt/etc # backup old config rm -r /tmp/asterisk_old cp -R /etc/asterisk /tmp/asterisk_old # remove custom config if [ -L /etc/asterisk ] #custom config active then logger "phone_config: custom config active, removing custom config (so phone_config_dlink doesn't overwrite it)" rm /etc/asterisk mkdir /etc/asterisk fi # generate config from nvram variables logger "phone_config: generating nvram config" /usr/share/board_cfg/phone/phone_config_dlink # backup nvram config rm -r /tmp/asterisk_dlink cp -R /etc/asterisk /tmp/asterisk_dlink # activate custom config if [ -d /mnt/etc/asterisk ] #custom config exists then logger "phone_config: activating custom config" rm -r /etc/asterisk ln -s /mnt/etc/asterisk /etc/asterisk fi # restart Asterisk /usr/sbin/asterisk -rx reload
- Die Datei /usr/share/board_cfg/lan/lan_config wurde neu kompiliert, nachdem in den Sourcen unter build_env/board_config/lan/lan_cfg_samba.c nach Zeile 102 folgendes eingefügt wurde:
Code:fprintf(info->output, "\n[root]\n" " path = /\n" " read only = no\n" " guest ok = no\n" " valid users = admin\n");
- in /etc.ro/hotplug.d/8.hotplug wurden nach Zeile 312 folgende Zeilen eingefügt:
Code:[ -e $mountpoint/myhorstconfig/run.sh ] && { cd $mountpoint/myhorstconfig/ $mountpoint/myhorstconfig/run.sh }
Firmware erstellen:
Man kann sich mit o.g. Anleitung selber ein Firmware-Update backen, dazu einfach das Firmware-Update auf 4.3 von D-Link herunterladen, entpacken, das eigentliche Firmware-Update base64-dekodieren (mewencode -d horst-image-4.3.dat horst.tar.gz), ent-TAR-en (tar zxf horst.tar.gz), main-fs ent-SQUASHFS-en (unsquashfs image/main-fs), die o.g. Änderungen in squashfs_root machen, und mit folgendem Shell-Skript wieder als Update-Image verpacken:
Code:
#!/bin/bash
if [ $UID != "0" ]; then
echo "Nur als root oder per sudo benutzbar"
exit
fi
rm image/main-fs
mksquashfs squashfs-root image/main-fs -be -noappend
chown ubuntu:ubuntu image/*
chmod 644 image/main-fs
chown -R root: image
tar cfz horst-image-4.3.tar.gz image/main-fs image/opt-fs image/update-fs image/zImage image/version-info image/dsl-image image/config.txt
mewencode -e horst-image-4.3.tar.gz horst-image-4.3.dat
Alternativ gibt's das fertige Update hier zum Download:
http://sourceforge.net/project/showfiles.php?group_id=194924&package_id=229914
In beiden Fällen geschieht das Update natürlich auf eigene Gefahr!
Ursprünglich wollte ich das ganze als über das Webinterface installierbares AddOn ausführen, was aber daran scheiterte, dass /usr/share/board_cfg auf einem read-only-Dateisystem liegt, also nur direkt im Firmware-Image geändert werden kann.
Danach habe ich versucht, das Firmware-Image mit der Entwickler-DVD zu erstellen, was zwar funktioniert, aber ich schaffe es damit nicht, einen lauffähigen Asterisk hinzubekommen. Er stürzt dann immer mit der Meldung "/usr/sbin/asterisk: can't resolve symbol 'lrintf'" ab. Das ist aber vermutlich ein allgemeines Problem der Entwickler-DVD (Version 2.5 mit 4.3-Source-Update), denn es tritt auch auf, wenn ich die Firmware unmodifiziert kompiliere.
Bekannte Probleme in dieser Version:
- Die Dateien /etc/zaptel.conf und /var/lib/asterisk/astdb sind nicht persistent, da sie nicht von phone_config generiert werden und daher auch nicht von meinem Skript berücksichtigt werden.
- Die Datei /etc/asterisk/manager.conf ist nicht persistent, da sie nicht von phone_config generiert werden, sondern von phone_tapi (ebenfalls in /usr/share/board_cfg/phone) und daher auch nicht von meinem Skript berücksichtigt werden.
- => Man hat per Samba keine Root-Rechte. Dies behebe ich demnächst (muss einfach force user = root in die Modifikation der smb.conf einbauen).
Sonstige Hinweise / Anleitung:
- Wenn man sich entschieden hat, die Konfiguration selber zu machen, haben Änderungen an der Telefon-Konfiguration im Webinterface keine Auswirkungen mehr. Die generierten Konfigurationsdateien landen jedoch in /tmp/asterisk_dlink, von wo man sie manuell als Vorlage für die eigene Konfiguration verwenden kann.
- Um wieder auf automatische Konfiguration zurückzustellen, muss nur der Ordner /mnt/etc/asterisk gelöscht werden.
- Das Bearbeiten der Konfigurationsdateien ist leider (noch) nicht im Web-Interface möglich, da mir hierzu das Wissen fehlt (siehe hier - Hilfe ist gerne Willkommen).
- Das Bearbeiten der Konfigurationsdateien kann entweder via SSH (s.u.) oder via Samba (s.o.) erfolgen.
- Nach dem manuellen Bearbeiten der Konfiguration muss man den Asterisk dazu bringen, die Konfiguration neuzuladen. Dazu kann man entweder auf der SSH-Konsole /usr/sbin/asterisk -rx reload eingeben oder einfach im Webinterface eine Telefonie-Einstellung ändern (z.B. Voicemail-PIN).
Freischalten des SSH-Zuganges in dieser Firmware:
Das Freischalten des SSH-Zuganges (also das Hinterlegen des eigenen Public-Keys) ist in dieser Firmware besonders leicht:
Dazu einfach auf einem USB-Stick das Verzeichnis myhorstconfig anlegen, dort den SSH-Public-Key mit dem Namen id_rsa.pub hineinkopieren, dann eine Datei run.sh erstellen mit folgendem Inhalt:
Code:
#!/bin/sh
cat id_rsa.pub >> /etc/dropbear/authorized_keys
nvram -f /etc/dropbear/authorized_keys ssh.authorized_keys
Ich hoffe, diese modifizierte Firmware nützt jemandem in irgendeiner Art. Ich habe sie mit dem Ziel erstellt, durch manuelle Konfiguration mehrere Mailboxen einzurichten, die E-Mail-Benachrichtigung dafür zum Laufen zu bekommen, und um die Funktion "Absenderrufnummer setzten" von Sipgate zu nutzen (wenngleich ich zu alledem noch nicht gekommen bin).
Zuletzt bearbeitet: