CARDDAV Server (Owncloud) mit einer Fritzbox 7490 synchronisieren

Status
Für weitere Antworten geschlossen.

Edda1000

Benutzer
Mitglied seit
22. Mrz 2018
Beiträge
79
Punkte für Reaktionen
1
Punkte
8
So, das Problem mit der Erweiterung ist gelöst. Habe eine phpinfo.php abgespeichert und aufgerufen. Das PHP-mbstring module" ist aktiv.

Für mich stellt sich als nächste Frage, ob die Version unter:

https://github.com/carlos22/carddav2fb

die aktuellste Version ist und was "Frogman" wie im Posting 77 geschrieben hat angepasst hat?
 

sohnemann

Benutzer
Mitglied seit
09. Nov 2018
Beiträge
7
Punkte für Reaktionen
0
Punkte
0
Moin,

ich stelle mich mal in die Reihe derer, die carddav2fb nutzen wollen, aber einige Startschwierigkeiten haben. Ich habe die aktuellste Variante bei GitHub geladen, auf meinem Synology-NAS mit Web Station (PHP 5.6) zum Laufen bekommen und scheitere am Upload.

Meine config.php sieht wie folgt aus:

PHP:
$config['fritzbox_ip'] = 'fritz.box';
$config['fritzbox_ip_ftp'] = 'fritz.box';
$config['fritzbox_user'] = '';
$config['fritzbox_pw'] = 'passwort';
$config['fritzbox_force_local_login'] = true;

Ich habe mit lokaler IP-Adresse, MyFritz-Zugang und entsprechenden Zugangsdaten etc. variiert, erhalte aber immer folgenden Fehler:

PHP:
Retrieving VCards from all CardDAV server(s):
 [0]: https://URL ......................................... 41 VCards retrieved.
Done.
Converting VCards to FritzBox XML format:
[...]
Done.
Upload data to FRITZ!Box @ fritz.box
PHP Fatal error:  Call to undefined function ftp_ssl_connect() in /volume1/web/carddav/carddav2fb.php on line 701

Nach drei Stunden gebe ich's auf. Hat jemand von euch vielleicht eine Idee?

Beste Grüße,
sohnemann
 

Frogman

Benutzer
Mitglied seit
01. Sep 2012
Beiträge
17.485
Punkte für Reaktionen
8
Punkte
414
Versuche es einmal mit der lokalen IP der Fritzbox statt fritz.box.
 

sohnemann

Benutzer
Mitglied seit
09. Nov 2018
Beiträge
7
Punkte für Reaktionen
0
Punkte
0
Danke für den Hinweis, habe es mit 192.168.178.1 (das ist doch richtig, oder?) probiert, leider ebenfalls ohne Erfolg (gleicher Fatal Error).

Ist es eigentlich korrekt, dass bei lokaler Anmeldung der Nutzername leer bleibt? Die Oberfläche wird ja nur via Passwort aufgerufen …
 

Frogman

Benutzer
Mitglied seit
01. Sep 2012
Beiträge
17.485
Punkte für Reaktionen
8
Punkte
414
Nein, du solltest auf eine nutzerbasierte Anmeldung umstellen. Die IP der Fritzbox ergibt sich aus Deinem lokalen Subnet, die 192.168.178.1 ist die fest verdrahtete IP der Fritte.
 

Frogman

Benutzer
Mitglied seit
01. Sep 2012
Beiträge
17.485
Punkte für Reaktionen
8
Punkte
414
Auf der Fritte anmelden und bspw. unter Heimnetz -> Mesh nachschauen.
 

sohnemann

Benutzer
Mitglied seit
09. Nov 2018
Beiträge
7
Punkte für Reaktionen
0
Punkte
0
Auf der Fritte anmelden und bspw. unter Heimnetz -> Mesh nachschauen.
Ok, dann war mein Ansatz ja gar nicht so falsch. Ich frage deshalb, weil IP-Scanner und auch die Übersicht aktiver Geräte im Netzwerk für die FB nur die IP 192.168.178.1 raushauen ...

//edit: Und mit 192.168.178.1 geht's nach wie vor nicht, obwohl ich die nutzerbasierte Anmeldung aktiviert habe ...
 
Zuletzt bearbeitet:

Edda1000

Benutzer
Mitglied seit
22. Mrz 2018
Beiträge
79
Punkte für Reaktionen
1
Punkte
8
Hallo zusammen. Ich habe nun auch soweit nach den Anleitungen umgesetzt. Führe ich nun ein
php carddav2fb.php
aus erscheint folgende Fehlermeldung:

Retrieving VCards from all CardDAV server(s):
[0]: https://192.168.178.74:8443/adressbooks/geschaeftlich/geschaeftlich PHP Fatal error: Uncaught exception 'Exception' with message 'Woops, something's gone wrong! The CardDAV server returned the http status code 404.' in /usr/local/carddav2fb/lib/CardDAV-PHP/carddav.php:349
Stack trace:
#0 /usr/local/carddav2fb/carddav2fb.php(217): CardDavPHP\CardDavBackend->get()
#1 /usr/local/carddav2fb/carddav2fb.php(79): CardDAV2FB->get_carddav_entries()
#2 {main}
thrown in /usr/local/carddav2fb/lib/CardDAV-PHP/carddav.php on line 349

Fatal error: Uncaught exception 'Exception' with message 'Woops, something's gone wrong! The CardDAV server returned the http status code 404.' in /usr/local/carddav2fb/lib/CardDAV-PHP/carddav.php:349
Stack trace:
#0 /usr/local/carddav2fb/carddav2fb.php(217): CardDavPHP\CardDavBackend->get()
#1 /usr/local/carddav2fb/carddav2fb.php(79): CardDAV2FB->get_carddav_entries()
#2 {main}
thrown in /usr/local/carddav2fb/lib/CardDAV-PHP/carddav.php on line 349

Ich glaube, es liegt an einem Fehler in der URL des Adressbuches auf meinem Server. In der config.php habe ich da folgendes eingetragen:

// first
$config['carddav'][0] = array(
// URL of first CardDAV address book on cloud storage
'url' => 'https://192.168.178.74:8443/adressbooks/geschaeftlich/geschaeftlich',
// user name/password for CardDAV access
'user' => 'geschaeftlich',
'pw' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx',
// vcf extension
'extension' => '.vcf'
);

Zur Info, für mein geschäftliches Adressbuch habe ich ein Adressbuch mit der Bezeichnung "geschaeftlich" angelegt" und dazu auch einen eigenen User auch mit dem Namen "geschaeftlich". Hat einer eine Idee was da bei der URL zum Adressbuch rein kommt?

Viele Grüße,
Sigi
 

Frogman

Benutzer
Mitglied seit
01. Sep 2012
Beiträge
17.485
Punkte für Reaktionen
8
Punkte
414

sohnemann

Benutzer
Mitglied seit
09. Nov 2018
Beiträge
7
Punkte für Reaktionen
0
Punkte
0
Bitte mal die gesamte config.php

Der aktuelle Stand ...

PHP:
<?php

// CONFIG

// hostname or IP address of Fritz!Box
// Note: Some Boxes are configured to reject login via IP.
//       If that's the case with your box, then you have to specify the hostname.
$config['fritzbox_ip'] = '192.168.178.1';
$config['fritzbox_ip_ftp'] = '192.168.178.1';

// user name/password to access Fritz!Box
$config['fritzbox_user'] = 'user';
$config['fritzbox_pw'] = 'pw';
$config['fritzbox_force_local_login'] = true;

// number of the internal phone book and its name
// 0    - main phone book
// 1..n - additional phone books
$config['phonebook_number'] = '0';
$config['phonebook_name'] = 'Telefonbuch';

// Fullname format options
// 'only if exist and switched to true here in config'
// 0: "Prefix Lastname, Firstname AdditionalNames Suffix (orgname)"
// 1: "Prefix Firstname Lastname AdditionalNames Suffix (orgname)"
// 2: "Prefix Firstname AdditionalNames Lastname Suffix (orgname)"
$config['fullname_format'] = 0;

// Fullname parts
$config['prefix'] = false; // include prefix in fullname if existing
$config['suffix'] = false; // include suffix in fullname if existing
$config['addnames'] = false; // include additionalnames in fullname if existing
$config['orgname'] = false; // include organisation (company) in fullname if existing

// Quickdial starting keyword in notes
//$config['quickdial_keyword'] = 'Quickdial:'; // once activated you may add 'Quickdial:+49030123456:**709' to the contact note field and the number will set as quickdialnumber. You may add more quickdials for a single contact each in a new line

// optional: write output to file of sending it to the Fritz!Box
//$config['output_file'] = '/media/usbdisk/share/phonebook.xml';
// optional: once activated phonebook will also be upload to FRITZ!Box if changes are detectet (output_file must be set)
//$config['output_and_upload'] = false;

// optional: import only contacts of the given groups
//$config['group_filter'] = array('Arzt','Familie','Freunde','Friseur','Geschäftlich','Hotline','Notruf','Restaurant','Shops');

// group name of 'important' callers
$config['group_vip'] = 'VIP';

// base path of USB storage of Fritz!Box under which the path 'FRITZ\fonpix' could be found
// '' -> use internal fritzbox storage
//$config['usb_disk'] = 'Generic-FlashDisk-01';

// many version Fritz!Box use 'file:///var/media/ftp/' others 'file:///var/InternerSpeicher/' to check just export an your current phonebook and have a look at any imageURL tag `<imageURL>file:///var/media/ftp/(HERE_config_from:usb_disk)/FRITZ/fonpix/9.jpg</imageURL>`. 
//$config['fritzbox_path'] = 'file:///var/media/ftp/';

// multiple carddav adressbooks could be specified and will be merged together.

// first
$config['carddav'][0] = array(
  // URL of first CardDAV address book on cloud storage
  'url' => 'https://URL',
  // user name/password for CardDAV access
  'user' => 'user',
  'pw' => 'pw',
  // vcf extension
  'extension' => '.vcf'
);
 

Edda1000

Benutzer
Mitglied seit
22. Mrz 2018
Beiträge
79
Punkte für Reaktionen
1
Punkte
8
So, dann habe ich dann auch die richtige URL des Adressbuches auf dem Server gefunden. Richtig lautet Sie:


Und damit bin ich jetzt genau an dem Punkt angekommen, wo es auch bei "sohnemann" scheitert.

Ich bekomme genau wie er diese Fehlermeldung:

Upload data to FRITZ!Box @ 192.168.178.1
PHP Fatal error: Call to undefined function ftp_ssl_connect() in /usr/local/carddav2fb/carddav2fb.php on line 701

Fatal error: Call to undefined function ftp_ssl_connect() in /usr/local/carddav2fb/carddav2fb.php on line 701

In der config.php habe ich dies stehen:

$config['fritzbox_ip'] = '192.168.178.1';
$config['fritzbox_ip_ftp'] = '192.168.178.1';

// user name/password to access Fritz!Box
$config['fritzbox_user'] = 'Telefonbuch';
$config['fritzbox_pw'] = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx';
//$config['fritzbox_force_local_login'] = true;

// number of the internal phone book and its name
// 0 - main phone book
// 1..n - additional phone books
$config['phonebook_number'] = '4';
$config['phonebook_name'] = 'Büro';

Zur Info. Ich habe tatsächlich in der FritzBox einen User "Telefonbuch" mit entsprechenden Rechten eingerichtet. Und das ganze Telefonbuch vom Server soll sich in der FritzBox als phonebook number 4 unter dem phonebook name Büro abspeichern.

Viele Grüße,
Sigi

Hier mal meine komplette config.php:

PHP:
<?php

// CONFIG

// hostname or IP address of Fritz!Box
// Note: Some Boxes are configured to reject login via IP.
//       If that's the case with your box, then you have to specify the hostname.
$config['fritzbox_ip'] = '192.168.178.1';
$config['fritzbox_ip_ftp'] = '192.168.178.1';

// user name/password to access Fritz!Box
$config['fritzbox_user'] = 'Telefonbuch';
$config['fritzbox_pw'] = 'xxxxxxxxxxxxxxxx';
//$config['fritzbox_force_local_login'] = true;

// number of the internal phone book and its name
// 0    - main phone book
// 1..n - additional phone books
$config['phonebook_number'] = '4';
$config['phonebook_name'] = 'Büro';

// Fullname format options
// 'only if exist and switched to true here in config'
// 0: "Prefix Lastname, Firstname AdditionalNames Suffix (orgname)"
// 1: "Prefix Firstname Lastname AdditionalNames Suffix (orgname)"
// 2: "Prefix Firstname AdditionalNames Lastname Suffix (orgname)"
$config['fullname_format'] = 0;

// Fullname parts
$config['prefix'] = false; // include prefix in fullname if existing
$config['suffix'] = false; // include suffix in fullname if existing
$config['addnames'] = false; // include additionalnames in fullname if existing
$config['orgname'] = false; // include organisation (company) in fullname if existing

// Quickdial starting keyword in notes
//$config['quickdial_keyword'] = 'Quickdial:'; // once activated you may add 'Quickdial:+49030123456:**709' to the contact note field and the number will set as quickdialnumber. You may add more quickdials for a single contact each in a new line

// optional: write output to file of sending it to the Fritz!Box
//$config['output_file'] = '/media/usbdisk/share/phonebook.xml';
// optional: once activated phonebook will also be upload to FRITZ!Box if changes are detectet (output_file must be set)
//$config['output_and_upload'] = false;

// optional: import only contacts of the given groups
//$config['group_filter'] = array('Arzt','Familie','Freunde','Friseur','Geschäftlich','Hotline','Notruf','Restaurant','Shops');

// group name of 'important' callers
$config['group_vip'] = 'VIP';

// base path of USB storage of Fritz!Box under which the path 'FRITZ\fonpix' could be found
// '' -> use internal fritzbox storage
//$config['usb_disk'] = 'Generic-FlashDisk-01';

// many version Fritz!Box use 'file:///var/media/ftp/' others 'file:///var/InternerSpeicher/' to check just export an your current phonebook and have a look at any imageURL tag `<imageURL>file:///var/media/ftp/(HERE_config_from:usb_disk)/FRITZ/fonpix/9.jpg</imageURL>`. 
//$config['fritzbox_path'] = 'file:///var/media/ftp/';

// multiple carddav adressbooks could be specified and will be merged together.

// first
$config['carddav'][0] = array(
  // URL of first CardDAV address book on cloud storage
    'url' => 'https://192.168.178.74:8443/addressbooks/users/geschaeftlich/addressbook',
  // user name/password for CardDAV access
  'user' => 'geschaeftlich',
  'pw' => 'xxxxxxxxxxxxxxxxxxxxxx',
  // vcf extension
  'extension' => '.vcf'
);

// second
//$config['carddav'][1] = array(
//  'url' => 'https://raspserver/owncloud/remote.php/carddav/addressbooks/fritzbox/fb_contacts_second',
//  'user' => 'oc_username',
//  'pw' => 'oc_password',
//  'extension' => '.vcf'
//);
 
Zuletzt bearbeitet:

Frogman

Benutzer
Mitglied seit
01. Sep 2012
Beiträge
17.485
Punkte für Reaktionen
8
Punkte
414

Anhänge

  • carddav2fb.zip
    7,4 KB · Aufrufe: 9

Edda1000

Benutzer
Mitglied seit
22. Mrz 2018
Beiträge
79
Punkte für Reaktionen
1
Punkte
8
Hi Frogmann,

ich versuche, da ich ja den gleichen Fehler bekomme wie sohnemann, Deine Tipps umzusetzen. Da ich keinen USB-Speicher nutze habe ich lediglich die $config['fritzbox_path'] ausgefüllt. Habe gesehen das dort die Bilder der Kontakte unter var/InternerSpeicher abgespeichert werden. Nun steht da in der config.php:

$config['fritzbox_path'] = 'file:///var/InternerSpeicher/';

Gleiche Fehlermeldung.

Habe es nach langem versuchen nun auch geschafft Deine carddav2fb.php mit meiner zu ersetzen.

Gleiche Fehlermeldung.

Viele Grüße,
Sigi
 
Zuletzt bearbeitet:

sohnemann

Benutzer
Mitglied seit
09. Nov 2018
Beiträge
7
Punkte für Reaktionen
0
Punkte
0
Füll mal bitte $config['usb_disk'] (falls Du einen USB-Speicher nutzt) und $config['fritzbox_path'] aus. Und nimm mal die angefügte carddav2fb.php.

Danke für deine Hilfe, kann aber leider nichts anderes als Edda1000 berichten. carddav2fb.php ist ersetzt, $config['fritzbox_path'] ausgefüllt, Fehlermeldung bleibt aber bestehen.
 

Edda1000

Benutzer
Mitglied seit
22. Mrz 2018
Beiträge
79
Punkte für Reaktionen
1
Punkte
8
Zuletzt bearbeitet:

Frogman

Benutzer
Mitglied seit
01. Sep 2012
Beiträge
17.485
Punkte für Reaktionen
8
Punkte
414
Danke für deine Hilfe, kann aber leider nichts anderes als Edda1000 berichten. carddav2fb.php ist ersetzt, $config['fritzbox_path'] ausgefüllt, Fehlermeldung bleibt aber bestehen.
Welche Zugriffsrechte hat Deine config.php?
 

Edda1000

Benutzer
Mitglied seit
22. Mrz 2018
Beiträge
79
Punkte für Reaktionen
1
Punkte
8
Bei mir steht da:

PHP:
-rw-r--r-- 1 root root 3269 Nov 12 08:02 config.php
 

Edda1000

Benutzer
Mitglied seit
22. Mrz 2018
Beiträge
79
Punkte für Reaktionen
1
Punkte
8
Kleine Ergänzung. Ich habe php 5.6 laufen und bei open_basdir diese Zeile eingefügt:

Rich (BBCode):
/etc.defaults:/etc:/usr/syno/synoman:/tmp:/var/services/tmp:/var/services/web:/var/services/homes:/dev/urandom:/usr/local/carddav2fb

Ausgeführt wird das Skript dan über Putty mit:

Rich (BBCode):
/usr/local/bin/php56 /usr/local/carddav2fb/carddav2fb.php

Ist doch richtig so, oder?

Dann noch nee Frage. Es wird hier ab und zu geschrieben den "Neustart" nicht zu vergessen. Was soll neu gestartet werden? Wenn php 5.6 gemeint ist, müsste ich wissen mit welchem Befehl ich über Putty den Neustart hinbekomme.
 

sohnemann

Benutzer
Mitglied seit
09. Nov 2018
Beiträge
7
Punkte für Reaktionen
0
Punkte
0
So Leute, ich habe es hinbekommen! :cool: Da vieles für mich neu war, poste ich hier meine Schritt-für-Schritt-Anleitung, eventuell erspare ich damit ja so manchem Synchronisierungs-Freund schlaflose Nächte bzw. durchgemachte Wochenenden vor dem Terminal ...

1. Schritt

Nachdem sämtliche Anhaltspunkte und Hinweise aus dem Forum keine Abhilfe geschafft haben, bin ich grundsätzlicher ans Problem herangegangen:
PHP:
PHP Fatal error: Call to undefined function ftp_ssl_connect()
heißt ja nichts anderes als dass die FTP-Funktion nicht funktioniert, ergo nicht aktiv ist. Als erstes habe ich deshalb getestet, ob FTP auf meinem NAS überhaupt läuft:

PHP:
php -r "ftp_ssl_connect('test');"

Bei mir erschien die gewohnte Fehlermeldung, womit ich ausschließen konnte, dass es ein Script- oder Rechtefehler ist ...

2. Schritt

In der Webstation habe ich dann unter PHP-Einstellungen > Erweiterungen den Punkt ftp aktiviert, der ist wohl per default nicht aktiv. Weil auch das unwirksam war, habe ich eine Ergänzung an der php.ini vorgenommen. Um das zu tun, müsst ihr erst einmal den Speicherort der php.ini herausfinden. Im Terminal macht ihr das mit dem Befehl

PHP:
php --ini

und erhaltet dann eine Ausgabe ähnlich dieser:

PHP:
Configuration File (php.ini) Path: /etc/php
Loaded Configuration File:         /etc/php/php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed:      (none)

Mit dem Pfad in der Hinterhand könnt ihr dann die php.ini im VI aufrufen und editieren, und zwar über folgenden Befehl:

PHP:
sudo vi /etc/php/php.ini

Im VI ergänzt ihr folgende Zeile (zur extensions-Zeile navigieren, VI-Kommando i für Einfügen, Zeile einfügen, ESC drücken, ZZ für Speichern und Schließen):

PHP:
extension = /volume1/@appstore/PHP5.6/usr/local/lib/php56/modules/ftp.so

3. Schritt

Telefonnummern importieren! :D

Danke an alle für die Hilfe und frohes Telefonieren,
sohnemann

P.S.: Was mich jetzt noch interessiert: Wie kann ich das Script automatisch einmal täglich/wöchentlich ausführen?
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat