[mkuron-Firmware] Firmware mit benutzerdef. Asterisk-Konfig

mkuron

Neuer User
Mitglied seit
24 Dez 2004
Beiträge
199
Punkte für Reaktionen
0
Punkte
16
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:
  1. 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.
  2. 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.
  3. 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:
  1. /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
  2. 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");
  3. 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://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:
  • 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:
Klasse - gibt es eine Chance auf eine Version für 5.0?
 
Theoretisch ist das kein Problem - die Entwicklungsumgebung für die 5.0 ist ja jetzt auch draußen, also ist das Modifizieren der Firmware eine Sache von ein paar Stunden (muss mich erst wieder einarbeiten ;) ). Allerdings habe ich momentan kaum Zeit dazu. Aber sobald ich die neue Firmware angepasst habe, poste ich sie natürlich hierher.
 
Wunderbar - wenn ich das richtig verstanden habe, dann ist nach der "firmware" 5.0 auf absehbare Zeit keine weitere Version zu erwarten, diese Modifikation wird also dauerhaften Wert erlangen. :)
 
Wieso nicht? Die 5.0 ist doch auch noch nicht perfekt. Außerdem fehlen der auch noch haufenweise Features, die man von einer Asterisk-Box eigentlich erwarten könnte.
 
Dann bau die Features doch ein :) Ich sorge dann dafür dass die in die offizielle FW reinkommen...
 
SSH-Zugang

Theoretisch müßten sich die Änderungen doch recht leicht am "lebenden" System einbauen lassen, da man doch mit der FW 5.0 schon einen SSH-Zugang hat? D.h. ohne Patchen der FW-Dateien vor dem Einspielen?

Der Einzug der Features in die offizielle FW wäre aber tatsächlich klasse!

Gruß
Thomas
 
Das geht über Extensions auch in der Standard-Firmware. Das Hauptproblem ist halt, dass das rootfs read-only ist, die Extensions also komplett im Flash liegen.
 
FW 5.0 mit benutzerdefinierter Asterisk-Konfiguration

Hallo,

gibt es schon etwas neues zur FW 5.0 mit benutzerdefinierter Asterisk-Konfiguration? Hat schon jemand die FW5 compiliert bekommen?

lg aakira
 
Zum Kompilieren der 5.0 gibt's einen eigenen Thread [thread=178203]5.0 kompilieren? Wer schaffts?[/thread].

Sobald ich die 5.0 mit benutzerdefinierter Asterisk-Konfiguration fertig habe, poste ich das, wie gesagt, hier. Momentan habe ich aber kaum Zeit dazu (ich bin noch nicht mal dazu gekommen, mir die 5.0 genauer anzuschauen).
 
Ich komme leider nicht per Windows, putty, RSA2-1024 auf die Box.

Habe so einen Key ohne Zeilenumbruch:

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIB84n+cWotdsALOZZhUXOpaKqGDk8EKG4BOwwAtwlOK8gSoDX/Y/UqZM7Qa3d11ITlofl3/IGAPuuWL4EHmk3WblVNlWn4/ZDsa5c5ySflxxLnJFdfwq5dQIsK2wv8qPbWFuaaUwX5/ZAaGeQjN/PoTiNSueHkSEf4BDxEDED6lCw== rsa-key-20090604

in die id_rsa.id gespeichert.

Und den private Key in putty eingebunden. Trotz ALLEM sagt mir putty:

Disconnected: No supported authentication methods available

und: Server refused our key

Was mache ich falsch ?


Hat nun funktioniert:

puttygen scheint wohl falsche keys etc zu generieren. Per Linux hat es dann funktioniert. Muß aber in putty immer noch "keyboard interactive" activieren. Er frägt dann nach dem Benutzer. Eingabe: root. Kennwort will er dann nicht, in Linux geht es auch ohne "root" - dubios.
 
Zuletzt bearbeitet:
Hi,

schon mal in Putty unter Connection/Data/auto-login username geschaut?

schufti
 
puttygen scheint wohl falsche keys etc zu generieren. Per Linux hat es dann funktioniert.
Es gibt auch eine exportfunktion aber unter Linux generieren ist der bessere Weg.

Muß aber in putty immer noch "keyboard interactive" activieren. Er frägt dann nach dem Benutzer. Eingabe: root. Kennwort will er dann nicht, in Linux geht es auch ohne "root" - dubios.

Das ist nicht dubios sondern völlig normal. Unter Linux wird der aktuelle Benutzername automatisch mitgegeben. Offenbar treibst Du Dich als root auf Deinem System 'rum. Unter Windows musst Du den usernamen mitgeben. Einfach root@ vor die IP bzw. Hostnamen stellen, dann klappts auch mit dem automatischen Login.

jo
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
244,832
Beiträge
2,219,108
Mitglieder
371,534
Neuestes Mitglied
vignajeanniegolabek
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.