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

carddav2fb - angepaßte Version

Dieses Thema im Forum "andere Software" wurde erstellt von SnoopyDog, 15 Feb. 2014.

  1. SnoopyDog

    SnoopyDog Aktives Mitglied

    Registriert seit:
    14 Juli 2005
    Beiträge:
    2,600
    Zustimmungen:
    19
    Punkte für Erfolge:
    48
    #1 SnoopyDog, 15 Feb. 2014
    Zuletzt bearbeitet: 13 März 2014
    Hallo,

    da ich seit einiger Zeit meine Kontakte und Kalender auf einer ownCloud zu Hause verwalte, fehlte der automatische Telefonbuchimport der Frtiz!box von einem Online-Anbieter. Ein Carddav-Import ist derzeit nicht auf der Fritzbox verfügbar. Nach einiger Suche fand ich das Script "carddav2fb.php", welcher aber leider nicht weiter gepflegt wurde. Also habe ich mich hingesetzt und das vorhandene erweitert bzw. an das neue Fritz!box API angepaßt.
    Funktionen:

    • Auslesen eines oder mehrerer CardDAV-Adreßbücher und Export dieser Daten direkt in die Fritz!box oder in eine XML-Datei.
    • Unterstützung mehrerer interner Telefonbücher der Fritz!box.
    • Optionaler Import-Filter nach Kontaktgruppen.
    • Alle Kontakte, welche der Gruppe "VIP" angehören (Name konfigurierbar), werden im FBF-Telefonbuch als "wichtig" angelegt. Derzeit nur im ersten Telefonbuch der Box möglich.
    • Rudimentäre Unterstützung für Kontaktfotos.

    "Installation":
    • Das zip-File irgendwo auf eurem Server entpacken. Die Ordnerstrutur muß erhalten bleiben!
    • Zugriffsrechte auf "root" setzen.
    • In Fritz!box und Cloudsoftware am besten neue Logins anlegen, da diese mit Paßwort im Klartext in der Konfigdatei gespeichert werden.
    • Die Datei "config.example.php" umbenennen in "config.php" und die darin enthaltenen Daten anpassen.
    • Optional für weitere Telefonbücher in der Box je eine neue config-Datei erstellen.

    Aufruf: php -f carddav2fb.php [configfile]

    [configfile] ist ein optionaler Parameter, wenn er fehlt wird "config.php" verwendet.

    Beschreibung der Konfigdatei - zum Aktivieren von optionalen Parametern vorne das "//" entfernen und mit sinnvollen Werten ersetzen:

    $config['fritzbox_ip'] = 'fritz.box';
    => Name der Fritzbox im Netzwerk. Kann auch durch IP-Adresse ersetzt werden.

    $config['fritzbox_user'] = 'fb_username';
    => Login-Name an der Fritz!box

    $config['fritzbox_pw'] = 'fb_password';
    => Paßwort für obigen Benutzer

    $config['phonebook_number'] = '0';
    => Nummer des internen Telefonbuchs. '0' ist das Haupt-Telefonbuch, '1'..'n' alle weiteren.

    $config['phonebook_name'] = 'FBF_Name';
    => Name für das Telefonbuch, wie er in der Box angezeigt werden soll. Geht derzeit nicht/nur teilweise beim primären Telefonbuch.

    //$config['output_file'] = '/media/share/phonebook.xml';
    => Optional: Ausgaben in die angegebene Datei schreiben, anstatt sie direkt zur Box zu senden.

    //$config['group_filter'] = array('Arzt','Familie','Freunde','Friseur','Geschäftlich','Hotline','Notruf','Restaurant','Shops');
    => Optional: Nur Kontakte der angegebenen Gruppen einlesen.

    $config['group_vip'] = 'VIP';
    => Gruppenname für "wichtige" Anrufer.

    //$config['usb_disk'] = 'USBDISK2-0-01';
    => Optional: Basispfad des USB-Speichers an der Fritzbox, unterhalb dessen sich das Verzeichnis "FRITZ\fonpix" befindet.

    $config['carddav'][0] = array(
    'url' => 'https://raspserver/owncloud/remote.php/carddav/addressbooks/fritzbox/fb_contacts',
    => Url des ersten einzulesenden Adressbuchs des Cloudspeichers.

    'user' => 'oc_username',
    => Benutzername dieses Cloudspeichers.

    'pw' => 'oc_password'
    => Paßwort für obigen Benutzernamen.
    );

    ... optional beliebig viele weitere zu importierende Adressbücher. Alle Adressbücher werden zu einem Fritz!box-Telefonbuch zusammengefaßt.

    Anmerkungen zu Kontaktfotos: Wenn die Option 'usb_disk' aktiviert wurde, werden in die XML-Datei Links auf Kontaktfotos eingefügt. Diese Fotos müssen derzeit VOR dem Export zur Fritz!box auf deren USB-Speicher vorhanden sein! Falls die Box wie oben den Namen "USBDISK2-0-01" vergeben hat, kopiert man die Fotos nach "\\fritz.box\FRITZ.NAS\USBDISK2-0-01\FRITZ\fonpix".
    Konventionen für diese Bilder:
    • Format quadratisch.
    • Nicht größer als 600x600 Pixel.
    • Dateiformat jpeg mit Endung .jpg
    • Name muß dem vollen Kontaktnamen, wie er in der Fritzbox angelegt wird, entsprechen. Umlaute werden wie folgt ersetzt: Ä => Ae / Ö => Oe / Ü => Ue / ä => ae / ö => oe / ü => ue / ß => ss / Akzente werden einfach entfernt ( z.B.à => a). Leerzeichen und kaufmännisches und (&) werden durch einen Unterstrich ersetzt ( _ ) . Ein Foto für "Heiner Müller" muß "Heiner_Mueller.jpg" heißen, bei "Betty & Fritz" wird daraus "Betty___Fritz.jpg". Linux packt die Umlaute zwar teilweise, aber das Mobilteil nicht.
    Nach einem Telefonbuch-Upload mit Kontaktfotos kann es sein, daß das/die entsprechende(n) Mobilteil(e) für einen längeren Zeitraum den Text "Synchronisation" oben im Display anzeigen. Dies bedeutet, daß sie sich die Bilder "reinziehen".
    Bildqualität ist auf einem MT-F subjektiv besser, als wenn man sie über die Fritz!box-Oberfläche hochlädt.

    Getestet mit ownCloud unter Raspbian und Cubian. Fritzbox ist eine 7270 V3 mit aktueller Beta-Firmware. Ich habe die Scripten so weit hinbekommen, daß keine Warnungen mehr angezeigt werden.

    Fritzbox-API vom User "spackmat" habe ich leicht modifiziert, daß man nur eine einzige Konfigdatei braucht.

    Links:
    Fritz!box-API: http://www.ip-phone-forum.de/showthread.php?t=196309
    Originalversion carddav2fb: https://github.com/carlos22/carddav2fb
     

    Anhänge:

  2. dirk.fischer

    dirk.fischer Neuer User

    Registriert seit:
    20 Jan. 2012
    Beiträge:
    1
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo,
    genau das ist es, was ich suchen. Ich möchte auch von meiner FB 7390 auf Kontakte zurükgreifen welche auf einem CardDAV Server liegen (bei mir posteo.de).
    Was ich aber noch nicht ganz verstehe ist ob es ein manuelles Einlesen oder oder ein automatischer Sync der Daten ist. Ebenso ist mir nicht klar mit welchen Tools (php) ich das unter Windows hinbekomme.
    Würd mich freuen wenn du mich erleuchten könntest :)
     
  3. SnoopyDog

    SnoopyDog Aktives Mitglied

    Registriert seit:
    14 Juli 2005
    Beiträge:
    2,600
    Zustimmungen:
    19
    Punkte für Erfolge:
    48
    Hallo Dirk,

    Du kannst Dir aussuchen, wie Du das Skript betreibst. Man kann es in der Kommandozeile manuell aufrufen oder automatisiert über einen Cronjob. Für Windows müßte es auch einen PHP-Interpreter geben, aber ich weiß nicht, ob man dann in den Skripten enthaltene Pfade umstellen muß ( "/" => "\" ) und ob es grundsätzlich funktioniert.

    Benutzen tu ich das Ganze nur auf meinem Cubietruck (zuvor einem Raspberry Pi) und getestet wurde es auch nur unter Linux. Im Link zum Fritz!box API gibt es hierzu ein paar Informationen.
     
  4. phreichmuth

    phreichmuth Neuer User

    Registriert seit:
    16 März 2014
    Beiträge:
    13
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Für welche Firmware-Version wurde das Script geschrieben? Funktioniert das mit 6.04?
     
  5. Chosen_One

    Chosen_One Neuer User

    Registriert seit:
    17 Feb. 2009
    Beiträge:
    7
    Zustimmungen:
    0
    Punkte für Erfolge:
    1
    Ich weiß nicht, wie ich dir danken soll! Funktioniert perfekt!

    - FritzBox 7390 (06.03)
    - RaspBerry Pi mit Baikal (CardDAV)

    config.php anpassen mit IP, PW und den Daten für Baikal und das Teil rennt los...

    Ich habe gestern bis 23.30 Uhr mit der Originalversion gekämpft und dann deine Version gefunden. Heute nach 5 Minuten war das Telefonbuch wieder up2date :D
    Jetzt nur noch einen Cronjob und das wars.
     
  6. OL_1973

    OL_1973 Neuer User

    Registriert seit:
    9 Sep. 2005
    Beiträge:
    59
    Zustimmungen:
    0
    Punkte für Erfolge:
    6
    Hallo SnoopyDog,
    super Arbeit.
    Beim ersten Versuch hat es gleich funktioniert!!
    Nutze owncloud auf einer Synology.
     
  7. TLU

    TLU Neuer User

    Registriert seit:
    22 März 2008
    Beiträge:
    31
    Zustimmungen:
    0
    Punkte für Erfolge:
    6
    Ort:
    Hamburg
    FB 7490 6.05 geht der auto-upload nicht, ggfs. das mehrere FB User konfiguriert sind?

    Quelle ownCloud 6.0.2 funktioniert

    Zwei weitere Kleinigkeiten:

    1. Problem in vCard.php(606): $TempTypeParams = self::parseParameters($Key, explode('=', $RawParams[$Index]));
    mit Mac OSX angepassten Bildern (Komma durch Gleichheitszeichen ersetzt):
    PHOTO;X-ABCROP-RECTANGLE=ABClipRect_1&144&1&256&256&/EzolKFopr7IIoM39Fnl9A=
    =
    ;ENCODING=b;TYPE=JPEG:/9j/4AAQSkZJRgABAQAAAQABAAD/4QBARXhpZgAATU0AKgAAAAg
    AAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAA

    2. Für Anpassung NN, VN oder Firmenname sofern kein VN/NN angegeben wurde in carddav2fb.php(ab 103):

    // name
    $name_arr = $vcard_obj->n[0];

    if ($name_arr['LastName'] != "" || $name_arr['FirstName'] != "") {
    $name=$name_arr['LastName'];
    if ($name_arr['FirstName'] != "") {
    $name = $name . ", " . $name_arr['FirstName'];
    }
    }
    else {
    if ($vcard_obj->org) {
    $org_arr = $vcard_obj->org[0];
    $name = $org_arr['Name'];
    }
    else
    $name="";
    }
     
  8. phreichmuth

    phreichmuth Neuer User

    Registriert seit:
    16 März 2014
    Beiträge:
    13
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #8 phreichmuth, 30 März 2014
    Zuletzt bearbeitet: 30 März 2014
    Hallo zusammen

    Die Funktion, welche das Skript bietet, ist genau das, weshalb ich mir eine Fritzbox zugelegt habe. Jetzt bekomme ich das Skript aber nicht zum laufen.

    Konfiguration:
    - DAViCal 1.1.1 Cal- und CardDAV-Server auf einem Qnap NAS TS-219P+ (http://wiki.makeitfit.ch/DAViCal_(Qnap_Linux)
    - Fritz!box 7490 mit Fritz-OS 6.04
    - carddav2fb auf dem Qnap-NAS entpackt und konfiguriert mit Server-Adresse, User, Passwort, Adressbuch-Name etc.

    Wenn ich das Sktipt mit folgendem Befehl starte
    /mnt/ext/opt/apache/bin/php -f /usr/share/davical/carddav2fb/carddav2fb.php /usr/share/davical/carddav2fb/config.php

    bekommen ich folgende Fehlermeldungen ausgespuckt:
    Get all entries from CardDAV server(s)...
    Warning: SimpleXMLElement::__construct(): Entity: line 2: parser warning : xmlns: DAV: not a valid URI in /share/MD0_DATA/.qpkg/davical/carddav2fb/lib/CardDAV-PHP/carddav.php on line 478

    Warning: SimpleXMLElement::__construct(): <multistatus xmlns="DAV:" xmlns:C="urn:ietf:params:xml:ns:carddav"> in /share/MD0_DATA/.qpkg/davical/carddav2fb/lib/CardDAV-PHP/carddav.php on line 478

    Warning: SimpleXMLElement::__construct(): ^ in /share/MD0_DATA/.qpkg/davical/carddav2fb/lib/CardDAV-PHP/carddav.php on line 478
    Done.
    Transform to FritzBox XML File...
    Fatal error: Uncaught exception 'Exception' with message 'No entries available! Call get_carddav_entries or set $this->entries manually!' in /share/MD0_DATA/.qpkg/davical/carddav2fb/carddav2fb.php:188
    Stack trace:
    #0 /share/MD0_DATA/.qpkg/davical/carddav2fb/carddav2fb.php(55): CardDAV2FB->build_fb_xml()
    #1 {main}
    thrown in /share/MD0_DATA/.qpkg/davical/carddav2fb/carddav2fb.php on line 188

    Deshalb habe ich folgende Fragen:
    - wo muss das Skript carddav2fb installiert werden? auf der Fritzbox oder auf einem anderen Computer?
    - muss die Fritzbox API http://www.ip-phone-forum.de/showthread.php?t=196309 auch installiert werden oder nur carddav2fb? Wenn ja, wo muss dieses installiert werden?
    - muss auf der Fritzbox sonst etwas noch installiert werden?

    Gruss
    Philipp
     
  9. OL_1973

    OL_1973 Neuer User

    Registriert seit:
    9 Sep. 2005
    Beiträge:
    59
    Zustimmungen:
    0
    Punkte für Erfolge:
    6
    Kontaktbilder werden nur auf einem MT-F angezeigt u. Einträge nicht passend

    Hallo liebe Nutzer,

    das Skript funktioniert bei mir bisher sehr gut. Bisher aufgefallen ist mir, nach dem Abgleich der Einträge und hochladen in das Telefonbuch (eigenes erstellt), werden die zugehörigen Kontaktbilder nur auf einem meiner zwei MT-F angezeigt. Bei dem anderen kommt immer nur die Statusmeldung, dass diese noch nicht zur Verfügung stehen (oder so ähnlich).

    Habe ich hier einen Gedankenfehler? Oder muss ich noch etwas einstellen?

    Desweiteren habe ich das Problem, dass z.B. Faxnummern im Fritz!Box Telefonbuch als "Privat" angezeigt werden, obwohl diese in owncloud (6.02) als Faxnummer gekennzeichnet sind. Muss ich hier auch noch etwas anpassen was mir bisher entgangen ist?

    Vielen Dank schon einmal im Voraus fur die Hilfestellungen.
     
  10. nogenius

    nogenius Neuer User

    Registriert seit:
    9 März 2009
    Beiträge:
    40
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #10 nogenius, 1 Apr. 2014
    Zuletzt bearbeitet: 1 Apr. 2014
    Hallo!

    Super Arbeit, vielen Dank!

    Ich hatte ein kleines Problem beim ersten Versuch, das mich einiges an Zeit gekostet hat - vielleicht hilft dies dem ein oder anderen der ein ähnliches Probelm hat:

    Setup: Owncloud auf Raspbian, Skript ebenfalls auf Raspbian, FritzBox 7270

    Ich habe folgende Fehlermeldung erhalten:
    Code:
    Get all entries from CardDAV server(s)... PHP Fatal error:  Uncaught exception 'Exception' with message 'Woops, something's gone wrong! The CardDAV server returned the http status code 404.' in /home/pi/carddav2fb/lib/CardDAV-PHP/carddav.php:309
    Stack trace:
    #0 /home/pi/carddav2fb/lib/CardDAV-PHP/carddav.php(510): carddav_backend->get_vcard('C5CD17B5-66E0-0...')
    #1 /home/pi/carddav2fb/lib/CardDAV-PHP/carddav.php(280): carddav_backend->simplify('<?xml version="...', true)
    #2 /home/pi/carddav2fb/carddav2fb.php(86): carddav_backend->get()
    #3 /home/pi/carddav2fb/carddav2fb.php(48): CardDAV2FB->get_carddav_entries()
    #4 {main}
      thrown in /home/pi/carddav2fb/lib/CardDAV-PHP/carddav.php on line 309
    
    LÖSUNG: Als ich mir dann irgendwann die Dateinamen der .vcf Files auf dem Server angeschaut habe, habe ich gesehen, dass es einige Dateien gibt, die zwei mal .vcf als Dateiendung haben (xxxxxxxx.vcf.vcf).

    Nachdem ich diese entfernt habe hats funktioniert :)

    Ein paar weitere Hinweise:
    • FritzBox Login muss entsprechend konfiguriert sein: System --> FRITZ!Box-Kennwort --> Anmeldung mit FRITZ!Box-Benutzernamen und Kennwort
    • FritzBox User muss angelegt sein: System --> FRITZ!Box-Kennwort --> Tab "FRITZ!Box-Benutzer"
     
  11. Florie

    Florie Neuer User

    Registriert seit:
    8 Apr. 2014
    Beiträge:
    3
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ich bekomme leider nur das hier:

    Wie kann ich denn den Fehler wegbekommen? Er scheint aber das Telefonbuch von meiner ownCloud auslesen zu können, da bei falscher Pfadangebe oder der Angabe "http://IP-DES-SERVERS/owncloud/remote.php/carddav/addressbooks/Nutzername/default" mekert, es geht aber ohne den Zusatz "default", nur dann kommt eben oben genannte Fehlermeldung :(
     
  12. TLU

    TLU Neuer User

    Registriert seit:
    22 März 2008
    Beiträge:
    31
    Zustimmungen:
    0
    Punkte für Erfolge:
    6
    Ort:
    Hamburg
  13. Florie

    Florie Neuer User

    Registriert seit:
    8 Apr. 2014
    Beiträge:
    3
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ok, das geht jetzt soweit, Problem ist aber, dass er jetzt immer eine Fehlermeldung a la
    bringt.

    Erhöhe ich in der php.ini das Memorylimit, erhöht sich bei der Fehlermeldung nur die Bytezahl. Nehme ich das Memorylimit mit dem Wert "-1" heraus, hängt mein Server total und kommt nicht zum Ende.

    Server ist ein Intel(R) Atom(TM) CPU D2701 @ 2.13GHz, 4 cores mit 3 GB RAM und Ubuntu 13.10 drauf, das sollte ja für rund 80 Kontakte reichen ;)
     
  14. TLU

    TLU Neuer User

    Registriert seit:
    22 März 2008
    Beiträge:
    31
    Zustimmungen:
    0
    Punkte für Erfolge:
    6
    Ort:
    Hamburg
    Kenne ich auch - ggfs. Post #7 Punkt 1 mit den OSX Bilddaten?
     
  15. Florie

    Florie Neuer User

    Registriert seit:
    8 Apr. 2014
    Beiträge:
    3
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Super das wars, vielen Dank :D
     
  16. OL_1973

    OL_1973 Neuer User

    Registriert seit:
    9 Sep. 2005
    Beiträge:
    59
    Zustimmungen:
    0
    Punkte für Erfolge:
    6
    #16 OL_1973, 11 Apr. 2014
    Zuletzt bearbeitet: 11 Apr. 2014
    Immer noch keine Kontaktbilder auf den MT-F's

    Ich habe leider immer noch das Problem, dass die Kontaktbilder nicht auf meinen beiden MT-F angezeigt werden. Ich habe einmal die Bildverknüpfung in der Fritz!Box geprüft. Hier werden die Bilder unter den Kontakten angezeigt.

    Ich habe das hochgeladene Telefonbuch aus owncloud einmal angeschaut. Der Pfad scheint korrekt zu sein?:

    Code:
     <realName>Telefonbucheintrag_Name</realName> 
      <imageURL>file:///var/media/ftp/MEINE-USB-FESTPLATTE/FRITZ/fonpix/Telefonbucheintrag_Name.jpg</imageURL> 
      </person>
    - <telephony nid="1">
    Könnt Ihr mir hier weiterhelfen, bzw. einen Denkanstoss geben?

    Vielen Dank schon einmal.
     
  17. TLU

    TLU Neuer User

    Registriert seit:
    22 März 2008
    Beiträge:
    31
    Zustimmungen:
    0
    Punkte für Erfolge:
    6
    Ort:
    Hamburg
    Lege mal einen Eintrag mit Bild manuell 'wie vorgesehen' an. Der sollte auf dem MTF angezeigt werden. Dann vergleichst du Bild und Pfade mit den anderen und solltest einen Unterschied sehen...
     
  18. OL_1973

    OL_1973 Neuer User

    Registriert seit:
    9 Sep. 2005
    Beiträge:
    59
    Zustimmungen:
    0
    Punkte für Erfolge:
    6
    So, habe einmal einen Eintrag manuell in der Fritz!Box im entsprechenden (owncloud) Telefonbuch angelegt. Auch hier wird das Bild nicht angezeigt auf den MT-F. Hinzu kommt, dass das Foto im internen Speicher abgelegt wird (siehe nachfolgend):
    Code:
    <realName>Telefonbucheintrag</realName><imageURL>file:///var/InternerSpeicher/FRITZ/fonpix/1397295689-0.jpg</imageURL></person><telephony
    nid="1">
    Stehe hier irgendwie völlig auf dem Schlauch. Bin ich zu blöd?
     
  19. TLU

    TLU Neuer User

    Registriert seit:
    22 März 2008
    Beiträge:
    31
    Zustimmungen:
    0
    Punkte für Erfolge:
    6
    Ort:
    Hamburg
    Bei mir gingen einige Sachen wie VIP nur im 'originalen ersten' Telefonbuch. Geht das Bild vielleicht dort oder in einem anderen neuen Telefonbuch mit nur dem einen manuellen Eintrag? (Habe leider selber kein MTF zum Testen...)
     
  20. OL_1973

    OL_1973 Neuer User

    Registriert seit:
    9 Sep. 2005
    Beiträge:
    59
    Zustimmungen:
    0
    Punkte für Erfolge:
    6
    Hallo TLU,
    ich habe dies mit dem "ersten" Telefonbuch getestet. Leider werden nur sporadisch Bilder übertragen. Nicht alle. Gleiches gilt bei Anlage eines neuen Telefonbuches.
    Komme einfach nicht hinter die Logik. So viele Bilder sind es auch nicht.