.titleBar { margin-bottom: 5px!important; }

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

Dieses Thema im Forum "FRITZ!Box Fon: Modifikationen" wurde erstellt von u.g, 28 März 2005.

  1. u.g

    u.g Aktives Mitglied

    Registriert seit:
    27 März 2005
    Beiträge:
    1,398
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    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.
     
  2. butz

    butz Mitglied

    Registriert seit:
    4 März 2005
    Beiträge:
    311
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo,

    ATA= Analog Telphone Adapter


    butz
     
  3. haveaniceday

    haveaniceday Aktives Mitglied

    Registriert seit:
    14 Okt. 2004
    Beiträge:
    1,305
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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 ;-)
     
  4. u.g

    u.g Aktives Mitglied

    Registriert seit:
    27 März 2005
    Beiträge:
    1,398
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    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
     
  5. haveaniceday

    haveaniceday Aktives Mitglied

    Registriert seit:
    14 Okt. 2004
    Beiträge:
    1,305
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.
     
  6. u.g

    u.g Aktives Mitglied

    Registriert seit:
    27 März 2005
    Beiträge:
    1,398
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    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.
     
  7. haveaniceday

    haveaniceday Aktives Mitglied

    Registriert seit:
    14 Okt. 2004
    Beiträge:
    1,305
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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 !

    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
     
  8. u.g

    u.g Aktives Mitglied

    Registriert seit:
    27 März 2005
    Beiträge:
    1,398
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    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.
     
  9. haveaniceday

    haveaniceday Aktives Mitglied

    Registriert seit:
    14 Okt. 2004
    Beiträge:
    1,305
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Und den Backslash mit Variablenersetzung ? Ist fast immer eine Tipp wert ;-)

    Haveaniceday
     
  10. fritzchen

    fritzchen Aktives Mitglied

    Registriert seit:
    29 Dez. 2004
    Beiträge:
    813
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    @ u.g
    habe deine Modifikation mal ausprobiert, der get-befehl kommt allerdings nicht beim server an... bin jetzt aber auch zu müde ;)
     
  11. u.g

    u.g Aktives Mitglied

    Registriert seit:
    27 März 2005
    Beiträge:
    1,398
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    @ 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("test@example.com", "[" .  $_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
     
  12. fritzchen

    fritzchen Aktives Mitglied

    Registriert seit:
    29 Dez. 2004
    Beiträge:
    813
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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...
     
  13. u.g

    u.g Aktives Mitglied

    Registriert seit:
    27 März 2005
    Beiträge:
    1,398
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    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.
     
  14. fritzchen

    fritzchen Aktives Mitglied

    Registriert seit:
    29 Dez. 2004
    Beiträge:
    813
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.
     
  15. u.g

    u.g Aktives Mitglied

    Registriert seit:
    27 März 2005
    Beiträge:
    1,398
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Verstehe dein Problem nicht ganz, ist bei dir $CALLED IMMER leer ?
    Ich habe ISDN. Bisher hatte $CALLED immer den richtigen Inhalt.
     
  16. fritzchen

    fritzchen Aktives Mitglied

    Registriert seit:
    29 Dez. 2004
    Beiträge:
    813
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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`" 
    
     
  17. u.g

    u.g Aktives Mitglied

    Registriert seit:
    27 März 2005
    Beiträge:
    1,398
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    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.
     
  18. u.g

    u.g Aktives Mitglied

    Registriert seit:
    27 März 2005
    Beiträge:
    1,398
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    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) :)
     
  19. haveaniceday

    haveaniceday Aktives Mitglied

    Registriert seit:
    14 Okt. 2004
    Beiträge:
    1,305
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Bei meinen Vorbereitungen nutze ich die Funktion "maskieren()" + ":nc -w 2"

    Haveaniceday
     
  20. u.g

    u.g Aktives Mitglied

    Registriert seit:
    27 März 2005
    Beiträge:
    1,398
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    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.

    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