mod-0.53/Rufnr.-Anzeige: Fragen u. Anregungen

u.g

Aktives Mitglied
Mitglied seit
27 Mrz 2005
Beiträge
1,562
Punkte für Reaktionen
18
Punkte
38
Hallo,

habe grade erst angefangen mit dem Thema Fritzbox-Modifikationen.
Meine Box läuft bisher super mit dem mod-0.53-image.

EIN DICKES LOB an alle, die da mitgewirkt haben,
UND EIN DICKES LOB ans ganze Forum für die vielen hilfreichen Infos !

Wahnsinn ... was mit so ner Fritzbox jetzt alles machbar ist :)

1. Anregung/Frage:
Was bewirken die verschiedenen für CALLINFO möglichen Werte genau ?
Könnte vielleicht auch in der Doku besser erklärt sein.

2. Frage:
Wie kann man callmonitor.out ändern ?
Ich hätte gerne MESSAGE geändert.
Im Kopf steht auch:
#$6: Eigene Message..
... nur wo rein ? (in callmonitor.sh ?)
oder Änderungen in debug.cfg (z.B. was mit ftp holen ?) ?

Für meine Rufnr-Anzeige nutze ich übrigens die Möglichkeit, dass
ich bei einer neuen Mail kostenlos eine SMS mit Absender und Betreff
erhalte (vodafone). Ich rufe ein php-Skript auf, das dann eine Mail
mit der Telnr im Betreff an mich schickt (=>SMS).

Gruß
Uwe

Noch was vergessen:
Für was steht eigentlich ATA (ABkürzung) ? Bringt es Vorteile die Box
so laufen zu lassen ? Würde was dafür sprechen, meinen Draytek-Router
wieder anzuschliessen und die Fritzbox dahinter ? Momentan läuft
nur die FB.
 
Hi Uwe,

> 1. Anregung/Frage:
> Was bewirken die verschiedenen für CALLINFO möglichen Werte genau ?
> Könnte vielleicht auch in der Doku besser erklärt sein.

# CALLINFO:
# 0: normaler AVM start ( nur auf lokaler IP "Listen" ),
=> Alles wird wie bei AVM gestartet..

# 1:CALLINFO,
=> Die Funktionen aus "callmonitor.out" werden genutzt.

# 2: listen, kein CALLINFO,
=> Aus Sicherheitsgründen wurde von AVM in der Vergangenheit der Prozess "telefon" ins interne Netz "Taub" geschaltet, "2" listen schaltet dieses wieder aktiv.
Dadurch gehen einige AT-Befehle auf dem Interface. Ist aber eher für Bastler.

# 3:CALLINFO + Listen
=> Funktion von 1 + 2

# 4: output nicht nach /dev/null sonst normal
=> Der Prozess schreibt seine Ausgabe sichtbar auf die Console
=> Für debug, falls man ohne extra Firmwareänderung das mal einstellen möchte.

Code:
...
dboxmessage () {
        IP=$1 ; MSISDN=$2 ; CALLER=$3 ; CALLED=$4 ; VIRTUAL=$5
        MESSAGE=${6:-"Anruf an $CALLED %0A%0A von $MSISDN %0A $CALLER"}
        nc -w 1 $1 80 <<EOF_DBOXM
GET /control/message?nmsg=$MESSAGE HTTP/1.0
EOF_DBOXM
}

dreammessage () {
        IP=$1 ; MSISDN=$2 ; CALLER=$3 ; CALLED=$4 ; VIRTUAL=${5:-$1}
        MESSAGE=${6:-"Anruf an $CALLED %0A%0A von $MSISDN %0A $CALLER"}
        BOXNAME=$1
        nc -w 1 $BOXNAME 80 <<EOF_DREAMBOX
GET /cgi-bin/xmessage?timeout=10&caption=Anruf%20von&body=$MESSAGE HTTP/1.0
Host: $VIRTUAL

EOF_DREAMBOX
}

ownmessage () {
        IP=$1 ; MSISDN=$2 ; CALLER=$3 ; CALLED=$4 ; VIRTUAL=${5:-$1}
        MESSAGE=${6:-"$MSISDN"}
        OWNGET="`grep '^#CALLOWNGET=' /var/flash/debug.cfg | sed -e 's/#CALLOWNGET=//'`"
        BOXNAME=$1
        nc -w 1 $BOXNAME 80 <<EOF_OWN
GET $OWNGET$MESSAGE HTTP/1.0
Host: $VIRTUAL

EOF_OWN
...

> 2. Frage:
> Wie kann man callmonitor.out ändern ?
Eigene Firmware mit den Skripten aus Thread 6666 bauen.

> Ich hätte gerne MESSAGE geändert.
Geht nur über ownmessage und "#CALLOWNGET"

> Im Kopf steht auch:
> #$6: Eigene Message..
> ... nur wo rein ? (in callmonitor.sh ?)
> oder Änderungen in debug.cfg (z.B. was mit ftp holen ?) ?

Das ist als Vereinfachung für die Zukunft gedacht.
Für "Shell-Experten" bei eigenen Modifikationen:
Im eigenen Skript einbinden:
. /usr/bin/callmonitor.out
=> Eigenes Skript kann mit z.B. dreammessage "IP" ".." ".." ".." ".." "Feld6" etwas eigenes ausgeben.
"$6" hatte ich nur eingefügt, das man dann manuell etwas überschreiben kann.

>Für meine Rufnr-Anzeige nutze ich übrigens die Möglichkeit, dass
> ich bei einer neuen Mail kostenlos eine SMS mit Absender und Betreff
> erhalte (vodafone). Ich rufe ein php-Skript auf, das dann eine Mail
> mit der Telnr im Betreff an mich schickt (=>SMS).

Hmm, wäre was als Modifikation falls die Box mal Mail versenden kann.
Mal sehen was da noch so kommen kann.

Hinweis für eigene Tests: Die derzeitige "callmonitor.out" geht noch nicht perfekt,
da Zeichen wie "Space" nicht als %.. Wert umgesetzt werden.

Haveagoodnight ;-)
 
Hallo,

um eine eigene Firmware zu bauen, brauche in einen Kernel
mit squashfs-Support, korrekt ? (habe ich momentan nicht)

Wäre schön, wenn man MESSAGE auch über debug.cfg
konfigurieren könnte, bzw. wenn man in den anderen Funktionen
(außer ownmessage) CALLOWNGET nutzen könnte o.ä.

Ich muss (z.Z.) ownmessage nutzen, da ich nur da das
php-Skript/die Seite, die aufgerufen werden soll, angeben kann,
würde aber gerne auch die anderen Informationen (z.B. $CALLED)
an das php-Skript übergeben, und sowas wie
#CALLOWNGET=/call.php?nr=$CALLED
geht ja leider auch nicht.

Wäre schön, haveaniceday, wenn du dbzgl. vielleicht was in
einem der nächsten mods ändern könntest. :)

Gruß
Uwe
 
Hi Uwe,

suqashfs-support in deinem Kernel ist nich notwendig.
=> Auspacken über Enriks perl-Skript
=> Einpacken über beigelegtes mksquashfs

- own2message wird konfigurierbar sein und Variablen akzeptieren.
- yac wird eine "bessere" Message bekommen + Port konfigurierbar
- passwd wird wieder gehen

- Bin zur Zeit dran an: ( o.a. ist schon fertig )
Skript Password gleich in debug ablegen.
telnetd ausschaltbar. ( falls man dropbear nutzt, Speicher sparen )
nfsmodule per default nicht laden, ( Schalter in debug.cfg )
etherwake: "Hilfen"
SL-WLAN/regulär: mini_http anstatt AVM-Webserver ( Speicher sparen )

So zum/am nächsten Wochenende sollte es gehen.

Haveaniceday

PS: Kannst Betatester für die Messages spielen: Schick mir deine Email und deinen Boxentyp. Testimage kommt dann heute abend.
 
Hi Heaveaniceday, werte Mitlesende,

manchmal sieht man den Wald vor lauter Baümen nicht :cool:

Na klar kann man da "was" über debug.cfg machen.
Man kann ja einen eigenen "listener" definieren, der über
debug.cfg erzeugt wird, ich Depp :)

Habe also nach der Zeile
/usr/bin/bftpd -d &
die Erzeugung meiner /var/tmp/mymessage eingefügt:

Code:
echo 'IP=$1 ; MSISDN=$2 ; CALLER=$3 ; CALLED=$4 ; VIRTUAL=${5:-$1}' > /var/tmp/mymessage
echo 'MESSAGE="$CALLED*$MSISDN*$CALLER*`date +%d.%m-%H:%M`"' >> /var/tmp/mymessage
echo "OWNGET=\"`grep '^#CALLOWNGET=' /var/flash/debug.cfg | sed -e 's/#CALLOWNGET=//'`\"" >>/var/tmp/mymessage
echo 'BOXNAME=$1' >> /var/tmp/mymessage
echo 'echo "$MESSAGE" >> /tmp/call.log' >> /var/tmp/mymessage
echo 'nc -w 1 $BOXNAME 80 <<EOF_OWN' >> /var/tmp/mymessage
echo 'GET $OWNGET$MESSAGE HTTP/1.0' >> /var/tmp/mymessage
echo 'Host: $VIRTUAL' >> /var/tmp/mymessage
echo "" >> /var/tmp/mymessage
echo "EOF_OWN" >> /var/tmp/mymessage
chmod a+x /var/tmp/mymessage

Der callmonitor.listeners-Eintrag dazu:
Code:
www.example.com /var/tmp/mymessage

Damit wird an call.php $MSISDN, $CALLED, $CALLER und Datum/Zeit
übergeben, was mir dann als Betreff in einer Mail geschickt wird (->SMS)

Hatte Probleme mymessage per "cat <<EOP ..." zu erzeugen,
wahrscheinlich wegen irgendwelcher " oder ' o.a.,
daher auf echo umgestellt.

Wenn ein Fehler in debug.cfg war (bzgl. mymessage-Erzeugung),
dann wurde nach reboot immer "irgendwie" ein "andres" Image (?)
geladen. Das merkte ich dadurch, dass das root-Passwort wieder auf
"fritzbox" und nicht auf meinem gesetzen stand.
Ist das korrekt so ?

Gibts eigentlich ne Größenbeschränkung von debug.cfg ? :)

Fritzbox modden macht Spass :)

Haveaniceday, aber trotzdem danke, dass du was änderst,
bin dafür auch gerne Betatester, auch wenn ich jetzt meine
eigene Lösung habe.

Gruß
Uwe

EDIT:
Und da $MESSAGE auch in /tmp/call.log geschrieben wird,
habe ich auch ne Art Anrufliste (bis zum nächsten reboot).
Zu der 'echo "OWNGET..."'-Zeile da oben gehört natürlich noch
der Rest in der nächsten Zeile.
 
Hi Uwe,

mit der eigenen Datei geht es natürlich auch. Hatet ich noch gar nicht gesehen....
Die Box hat ein Limit für die Debug.cfg: Alle Konfigurationsdateien dürfen zusammen 64 KB nicht überschreiten. Ich weiss allerdings nicht wieviel Verwaltungsinformation
benötigt wird. /var/flash/* liegt komplett dort. Es könnte durch aus ein Recoverfall
entstehen, wenn man den Bereich vollschreibt !

cat > /var/tmp/myfile <<diesesistderbegrenzer
text
diesesistderbegrenzer

Alles zwischen "diesesistderbegrenzer" ist ein "here document"
Es kann ein beliebiger Text hinter "<<" genommen werden.
Der gleiche Text muss dann alleine, ohne etwas dahinter oder davor, in einer
Zeile stehen. Das ist dann das "Ende" des here documents.

bei <<[highlight=red:1540b8d549]\[/highlight:1540b8d549]diesesistderbegrenzer werden z.B. Variablen ( $... ) und "`befehl ...`" nicht ersetzt. Ohne "\" werden Variablen ersetzt.

Eventuell war das dein Problem mit dem "here document" .

Haveaniceday
 
Hi,

ich weiss, was ein here Dokument ist,
hatte auch EOP nicht vergessen, trotzdem gabs Probleme.

Uwe

EDIT:
Heaveaniceday, du hattest recht, ich muss hier "<<[highlight=red:1bb5aa7ec2]\[/highlight:1bb5aa7ec2]EOP" nutzen,
danke.
 
Und den Backslash mit Variablenersetzung ? Ist fast immer eine Tipp wert ;-)

Haveaniceday
 
@ u.g
habe deine Modifikation mal ausprobiert, der get-befehl kommt allerdings nicht beim server an... bin jetzt aber auch zu müde ;)
 
@ haveaniceday:
Ja, kann auch sein, dass ich mich beim here Dokument irgendwie
vertippt habe. Vielleicht probiere ich es ja nochmal ... :)

@ frage:
Hast du denn auch CALLOWNGET an deine Bedürfnisse angepasst ?
Hast du call.php o.a. auf dem Webserver ?
Bei mir steht da das drin:
Code:
<?php
mail("[email protected]", "[" .  $_GET['nr'] . "]", "<" . $_GET['nr'] . ">");
?>
Steht denn was in /tmp/call.log ?
Enthält mymessage auch die Leerzeile nach Host: ?

[....]
echo 'Host: $VIRTUAL' >> /var/tmp/mymessage
echo "" >> /var/tmp/mymessage
echo "EOF_OWN" >> /var/tmp/mymessage
 
Hm, keine AHnung, das hier ist die mymessage

Code:
IP=$1 ; MSISDN=$2 ; CALLER=$3 ; CALLED=$4 ; VIRTUAL=${5:-$1}
MESSAGE="$CALLED*$MSISDN*$CALLER*`date +%d.%m-%H:%M`"
OWNGET="/call.php?wer=xyz&nr="
BOXNAME=$1
echo "$MESSAGE" >> /tmp/call.log
nc -w 1 $BOXNAME 80 <<EOF_OWN
GET $OWNGET$MESSAGE HTTP/1.0
Host: $VIRTUAL

EOF_OWN

und hier die call.log

Code:
*01usw*Kein Name gefunden*30.03-09:32

bleibt die Frage, wo genau Du den callmonitor.listeners Eintrag gemacht hast... vielleicht habe ich die Sache in diesem Punkt nicht verstanden.

Zu dem Webserver: das funktioniert bisher super, ich speichere es in einer Datenbank. Aber die Möglichkeit, die gerufene Nummer zu haben hat mich natürlich aufhorchen lassen...
 
Hallo frage, hier ist Antwort :)

die callmonitor.listeners wird -wie bisher- über debug.cfg
erzeugt. Aber der Eintrag scheint bei dir zu stimmen, sonst
hättest du keine /tmp/call.log.

Deine call.log passt nicht zu deiner mymessage, wahrscheinlich
hast du die Rufnummer aus dem Log-Eintrag (wg. Forum) entfernt.

Ich denke, dass Problem sind die Leerzeichen in der Message
(Kein Name gefunden).
Dafür müsste MESSAGE wohl noch mal in Anführungszeichen gekapselt
werden, muss ich zuhause heute abend nochmal testen.
Kannst ja zu Testzwecken erstmal $CALLER aus MESSAGE entfernen
(MESSAGE="$CALLED*$MSISDN*`date +%d.%m-%H:%M`" )
(also in debug.cfg die entsprechende echo-Zeile ändern).

Freut mich, dass meine Änderung auch anderen was bringt.
 
ok, so klappt es

Verwirrung stiftet noch die $CALLED Variable: übergeben werden SIP1, SIP2 etc, rufe ich den analogen Festnetzanschluss an, bleibt diese Variable ohne Wert.
Ist das nur bei analogen Anschlüssen so, oder auch bei ISDN? Denn gerade hier wäre es wieder interessant. Bei meinem analogen Anschluss kann ich ja einfach bestimmen, dass der Festnetzanschluss angerufen wurde, wenn eben kein Wert übergeben wird.

Hast Du es mit ISDN testen können? (Interessiert mich, da ich noch eine Box an einem ISDN-Anschluss betreibe, da aber gerade nicht hinkomme...)

Besten Dank für die Hilfe. Ist wirklich toll was man mit dieser Box alles machen kann.
 
Verstehe dein Problem nicht ganz, ist bei dir $CALLED IMMER leer ?
Ich habe ISDN. Bisher hatte $CALLED immer den richtigen Inhalt.
 
hab mich blöde ausgedrückt:

wenn ich über seinen sip-anbieter anrufe, dann wird SIP1 etc übergeben. Rufe ich auf dem Festnetz (analog) an, dann wird CALLED nicht übergeben.

Verstehe ich Dich richtig, dass bei Dir auch bei normalen ISDN Anrufen die MSN mit übertragen wird? Das wäre toll.

P.S.:
kleine Anregung, habe die MESSAGE Zeile so geändert, dass die Variablen einzeln übergeben werden (für Mitlesende, Du schickst Dir ja eine sms)
Code:
MESSAGE="$MSISDN&an=$CALLED&date=`date +%d.%m-%H:%M`"
 
Ja, bei mir hatte $CALLED immer den richtigen Inhalt.
Kann heute abend zuhause nochmal intensiver testen,
bisher war es aber immer korrekt.
Habe aber noch nicht getestet mit reinen VoIp-Anrufen.
 
Soo, hat n bissl länger gedauert, aber dafür habe ich
auch noch bissl was rausgefunden:

Die angerufene Nr wird bei mir (ISDN) immer übergeben,
egal ob Anruf über Festnetz oder VoIP.

Die Leerzeichen in der aufgerufenen URL müssen durch "%20"
ersetzt werden, z.B. so:

echo 'MESSAGE=`echo "$MESSAGE" | sed s/\ /%20/g`' >> /var/tmp/mymessage

(z.B. bei MSISDN="Rufnummer unterdrückt ...")

Damit auch Internet-Verbindung besteht, habe ich noch
einen ping-Aufruf in mymessage eingebaut (vor nc...):
ping -c 1 www.heise.de

Außerdem wird noch der Rückgabewert von nc geloggt.
Dabei ist mir nach langem Suchen endlich aufgefallen,
dass nc unter diesen Umständen wohl gerne eine Ausgabe-Umlenkung
hätte (z.B. > /dev/null), damit auch 0 zurückgegeben wird !!!


nc -w 8 $BOXNAME 80 <<EOF_OWN
[...]
x=$?
==> Seite wird aufgerufen/Webzugriff findet statt,
aber x ist 1 (=> Fehler)

nc -w 8 $BOXNAME 80 <<EOF_OWN > /dev/null
[...]
x=$?
==> Seite wird aufgerufen/Webzugriff findet statt,
und x ist auch 0


Gruß
Uwe

Und die Wartezeit (-w 1) beim nc war mir übrigens auch zu kurz.

EDIT:
Hallo Haveaniceday,

wg. obiger Erfahrungen mein "Verbesserungsvorschlag" fürs
nächste mod: die nc-Ausgabeumlenkung (siehe oben) :)
 
Bei meinen Vorbereitungen nutze ich die Funktion "maskieren()" + ":nc -w 2"

maskieren()
{
echo "$@" | sed -e 's/ /%20/g' -e 's#/#%2F#g' -e 's#\\n#%0A#' -e 's#\\t#%09#' -e 's#\\r#%0D#'
}
dreammessage () {
IP=$1 ; MSISDN=$2 ; CALLER=$3 ; CALLED=$4 ; VIRTUAL=${5:-$1}
MESSAGE=${6:-"Anruf an $CALLED %0A%0A von $MSISDN %0A $CALLER"}
nc -w 2 $IP 80 <<EOF_DREAMBOX
GET /cgi-bin/xmessage?timeout=10&caption=`maskieren $MESSAGE` HTTP/1.0
Host: $VIRTUAL

EOF_DREAMBOX
}

Haveaniceday
 
Hi,

vielleicht bringt ja meine Idee andere Mitleser auf andere oder ähnliche Ideen, daher ...

Habe mein listener-Skript so erweitert, dass bei Anruf von
meinem Handy (Rufnr.-Übermittlung !) auf eine bestimmte
meiner MSNs dropbear gestartet wird und bei Anruf auf ne andere
Nummer wieder gekillt wird.

z.B. so:

if [ "$MSISDN" = "012345678901" ] && [ "$CALLED" = "123456" ]; then
echo "$OWNGET" >> /tmp/log
echo "starte sshd" >> /tmp/log
killall dropbear 2>/dev/null
/usr/sbin/dropbear -p 22
endif

Soo komme ich bei Bedarf per ssh auf meine Box,
und sshd läuft aber nur solange wie ich es brauche. :))

Damit dropbear beim Booten erstmal gestoppt wird,
nach "...modstart..." in debug.cfg noch ein
killall dropbear 2>/dev/null
hinzufügen.

Gruß
Uwe
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
244,840
Beiträge
2,219,268
Mitglieder
371,543
Neuestes Mitglied
Brainbanger
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.