Ich habe in der Zwischenzeit einen Weg gefunden, die Kontakte zu synchronisieren.
Es lag an der Server-URL zu den Kontakten.
Um herauszufinden, wo die Kontakte tatsächlich abgelegt sind, habe ich mit folgender Anleitung die Ordnerstruktur der der Nextcloud bezüglich Webdav ermittelt.
https://www.schirmacher.de/display/INFO/Mit+WebDAV+Verzeichnis+verbinden


damit habe ich die Quelle für die Kontakte genau eruieren und musste die entsprechende Zeile wie Folgt änderen:

Code:
            'url' => 'http://192.168.178.47/nextcloud/remote.php/dav/addressbooks/users/fritzboxusr/Kontakte_shared_by_onestyle',

Ausserdem habe ich noch den Formatierungsteil so adaptiert, dass es meinen Wünschen entspricht. Da steht nun nur noch:
Code:
    'realName' => [
            '{firstname} {lastname}',
            '{fullname}'
        ],

Jetzt funktioniert alles tiptop. Ich bedanke mich herzlich für die Ausführungen hier und für das sehr praktische tool! Ein weiterer Schritt um mich von Google (zumindest etwas) loszulössen. Irgendwo muss man ja mal starten ;-)
 
Ich bin bis 18.07. im Urlaub - bis dahin kann ich nur mitlesen.
Im Zweifel ein issue auf github aufmachen

Eigentlich müsste doch bald der 18.7. sein ;)

Wenn Du wieder "sortiert" bist, wäre ich echt um Hilfe dankbar
Danke
Andreas

PS: Eigener Benutzer in Fritzbox wurde angelegt mit allen Rechten
 
Hallo ak68,

immer noch der gleiche Fehler wie Ende Juni beschrieben?
Wenn ja, basierend auf dem zweiten Screenshot klingt das für mich nach einer inkonsistenten Installation. Offenbar findet das script ja diverse Dateien (z.B. die autoload.php) nicht in dem Pfad in deinem /home/..-Verzeichnis.
Wenn Du ein Win-User bist, dann installiere dir doch mal WinSCP und browse damit durch die Ordner auf dem Pi.

Ggf. die Installation einfach noch einmal vom scratch an nicht im /home/..-Verzeichnis sondern direkt in /carddav2fb.

Grüße mit Jetlag

Black Senator


P.S. Um was für einen CardDAV-Server handelt es sich eigentlich? Wenn ich den Thread richtig lese, dann ging der Download mit der vorherigen Version aber der Upload nicht. Mit dieser Version scheitert der Download. Richtig?
 
[
Hallo ak68,

immer noch der gleiche Fehler wie Ende Juni beschrieben?
Wenn ja, basierend auf dem zweiten Screenshot klingt das für mich nach einer inkonsistenten Installation. Offenbar findet das script ja diverse Dateien (z.B. die autoload.php) nicht in dem Pfad in deinem /home/..-Verzeichnis.
Wenn Du ein Win-User bist, dann installiere dir doch mal WinSCP und browse damit durch die Ordner auf dem Pi.

Ggf. die Installation einfach noch einmal vom scratch an nicht im /home/..-Verzeichnis sondern direkt in /carddav2fb.

Grüße mit Jetlag

Black Senator


P.S. Um was für einen CardDAV-Server handelt es sich eigentlich? Wenn ich den Thread richtig lese, dann ging der Download mit der vorherigen Version aber der Upload nicht. Mit dieser Version scheitert der Download. Richtig?

Hallo,

bin Deinem Rat gefolgt und habe Alles neu installiert in /Carddav2fb und NICHT in /home/...:

2018_07_18_18_10_53_Raspberry_Pi_sftp_pi_10.10.1.36_FileZilla.png


Der Zugriff auf meinen Owncloud-Server (und der Download) ist o.K, jedoch scheint der Zugriff auf die FB 7490 nicht zu klappen:

2018_07_18_18_08_22_pi_Raspberrypi_carddav2fb.png

Die Einstellungen in der config sind:
2018_07_18_18_16_42_D_config.php_Notepad_.png

Dieser Benutzer hat in der Fritzbox ALLE Rechte !!!

Statt der IP habe ich auch schon "fritz.box" verwendet -> ohne Erfolg!

Um Hilfe wäre ich dankbar !

Können evtl. die Firewall-Einstellungen der FB einen Zugriff blocken ?

Danke Euch
Andreas
 

Anhänge

  • 2018_07_18_18_08_22_pi_Raspberrypi_carddav2fb.png
    2018_07_18_18_08_22_pi_Raspberrypi_carddav2fb.png
    5.7 KB · Aufrufe: 5
Hallo Andreas,

wenn Du so weit gekommen bist - dann schaffen wir den Rest der Wegstrecke auch noch :)

Offenbar bekommt das script keine (valide) SID (Session-ID) übergeben. Probiere es doch einmal mit dem User "dslf-config" und deinem Standard-Anmeldepasswort für die Box.

Grüße

Black Senator
 
Hallo Andreas,

wenn Du so weit gekommen bist - dann schaffen wir den Rest der Wegstrecke auch noch :)

Offenbar bekommt das script keine (valide) SID (Session-ID) übergeben. Probiere es doch einmal mit dem User "dslf-config" und deinem Standard-Anmeldepasswort für die Box.

Grüße

Black Senator


Genau das war´s:

2018_07_18_20_54_52_pi_Raspberrypi_carddav2fb.png

Ich habe auch schon 5 (!) verschiedene Telefonbücher abgefragt- erfolgreich !!!

Nur mit der Details wie z.B. Namen-/ Nummern-Darstellung etc muss ich noch ein bisschen"Spielen".

Noch einmal vielen Dank
Andreas
 
Erst einmal schön, dass es geklappt hat!
Dann sollte es eigentlich auch mit dem dedizierten User funktionieren! Offenbar hat er doch nicht "alle [notwendigen] Rechte" - ich wollte das aber nicht ohne den Test mit dem Standard-User behaupten.

Hier noch meine Einstellungen (ich nutze nur iCloud als CardDAV-Server):

Code:
        'realName' => [                        // are processed consecutively. Order decides!
            '{lastname}, {prefix} {nickname}',
            '{lastname}, {prefix} {firstname}',
            '{lastname}, {nickname}',
            '{lastname}, {firstname}',
            '{organization}',
            '{fullname}'
        ],

        'phoneTypes' => [                      // you mustn´t define 'fax' - this conversion is set fix in code
            'WORK'    => 'work',
            'HOME'    => 'home',
            'CELL'    => 'mobile',
            'MAIN'    => 'work',
            'FAX'     => 'fax',
            'default' => 'work',
        ],

        'emailTypes' => [
            'WORK' => 'work',
            'HOME' => 'home'
        ],

        'phoneReplaceCharacters' => [          // are processed consecutively. Order decides!
            '+491'  => '01',                   // domestic numbers without country code
            '+492'  => '02',
            '+493'  => '03',
            '+494'  => '04',
            '+495'  => '05',
            '+496'  => '06',
            '+497'  => '07',
            '+498'  => '08',
            '+499'  => '09',
            '+49 1' => '01',
            '+49 2' => '02',
            '+49 3' => '03',
            '+49 4' => '04',
            '+49 5' => '05',
            '+49 6' => '06',
            '+49 7' => '07',
            '+49 8' => '08',
            '+49 9' => '09',
            '+49'   => '',
            '('     => '',                     // delete separators
            ')'     => '',
            '/'     => '',
            '-'     => '',
            '+'     => '00'                    // normalize foreign numbers
        ],
    ],
 
Erst einmal schön, dass es geklappt hat!

Dann sollte es eigentlich auch mit dem dedizierten User funktionieren! Offenbar hat er doch nicht "alle [notwendigen] Rechte" - ich wollte das aber nicht ohne den Test mit dem Standard-User behaupten.

Neuer Benutzer, volle Rechte, .....
2018_07_19_13_25_52_FRITZ_Box_7490_Opera.png

... gleicher Fehler ....... :

2018_07_19_13_26_22_pi_Raspberrypi_carddav2fb.png
 
probiere es doch einfach mal mit "Zugang aus dem Internet erlaubt"
 
Hmmm,

dann bin ich mit meinem Latein auch am Ende - leider!
Mein User hat (bis auf VPN) die identischen Einstellungen - von daher kann ich mir nicht erklären, warum es mit dem Standard-user klappt und mit deinem "owncloud" nicht...
Trotzdem noch zur Sicherheit die Frage: unter Heimnetz -> Netzwerk -> Netzwerkeinstellungen ist "Zugriff für Anwendungen zulassen" aktiviert?

Grüße

Black Senator
 
Hallo zusamen,

erst einmal vielen Dank für das Tool - habe es installiert und es rennt sofort.

Nun zu einer Besonderheit mit meinen Kontakten. Da verschiedene Systeme gerne die Darstellung und Sortierung von Namen nach belieben anpassen (einige nur nach Vorname - und nicht umstellbar!) und ich zudem über den Namen auch Gruppen bilden wollte, ist bei mir - historisch beding - der Name nie auf die Felder Vor- und Nachname verteilt, sondern es steht im Nachnamensfeld vollständig drin. Also z.B. Nachname: "Kegelklub, Meier, Gisela" (was besseres fällt mir gerade nicht ein)

Das ist erstmal kein Problem - aber leider macht der Konvertierer aus den Kommata ein "\," - also steht in der FB dann drin "Kegelclub\, Meier\, Gisela". Es müsste doch eine zentrale Stelle geben, wo man das mal konvertieren könnte...

Ansonsten: *ThumbUp*

EDIT sagt:
Hab mir erst mal selbst geholfen, in ./src/FritzBox/Converter.php in Zeile 90:
$name = htmlspecialchars(str_replace(["\\,"], ",", $this->getProperty('realName')));
Das bewerte ich aber mal als "Dirty Hack"...
 
Zuletzt bearbeitet:
Hallo Black Senator,

Ich habe gerade das Script auf meinem Raspi installiert und problemlos meine NextCloud-Adressbücher auf die Fritzbox laden können.

Vielen Dank für deine Arbeit.

Wolfgang
 
Hallo,

nachdem ich die "erste" neue Carddav2fb für PHP7 erfolgreich am Laufen habe, wollte ich jetzt auch wieder Bilder mit hochladen (carddav2fb_XD).
Ich habe mir die Config.php zunächst entsprechend erweitert - funktionierte leider nicht wie gewünscht... Dann habe ich das Beispiel entsprechend modifiziert - aber immer noch kein Erfolg - ich bekomme diesen Fehler:
PHP:
php ./carddav2fb.php run
PHP Parse error:  syntax error, unexpected '',' (T_CONSTANT_ENCAPSED_STRING), expecting ']' in /root/carddav2fb_XR/config.php on line 13
PHP:
<?php

$config = [
   
    'script' => [
        'cache' => '/root/carddav2fb/cache',        // your stick, drive or share designated for caching
        'log'   => '/root/carddav2fb/cache',        // at you Raspberry, on your NAS or ...
    ],

    'server' => [
        [
            'url'      => 'https://freenas.fritz.box:443/remote.php/dav/addressbooks/users/christoph/familie/'',
            'user'     => 'xxxxxxxx',
            'password' => 'xxxxxxxxxxxxxxxxxxx',
            ],
   
    ],

    'fritzbox' => [
        'url'      => 'fritz.box',
        'user'     => 'carddav',                                     // e.g. 'dslf-config' AVM standard user for usual login
        'password' => 'xxxxxxxxx',
        'fonpix'   => '/WDC WD10 EARS-00Y5B1/FRITZ/fonpix',               // the additional usb memory at the Fritz! box
        'fritzadr' => '/media/fritzbox/FRITZ/mediabox/FritzAdr.dbf'    // a mounted storage; if not empty FRITZadr Database
                                                                    // will be written to this location
                                                                    // (will be changed to ftp soon)
    ],

    'phonebook' => [
        'id'           => 0,               // only '0' can store quick dial and vanity numbers as well as images
        'name'         => 'Telefonbuch_Test',
        'imagepath'    => 'file:///var/InternerSpeicher/WDC WD10 EARS-00Y5B1/FRITZ/fonpix/', // mandatory if you use the -i option
        'forcedupload' => 3,               // 3 = CardDAV contacts overwrite phonebook on Fritz!Box
    ],                                     // 2 = like 3, but newer entries will send as VCF via eMail (-> reply)
                                           // 1 = like 2, but vCards are only downloaded if they are newer than the phonebook

    'reply' => [                                                    // mandatory if you use "forcedupload" < 3 !
        'url'      => 'smtp...',
        'port'     => 587,                                          // alternativ 465
        'secure'   => 'tls',                                        // alternativ 'ssl'
        'user'     => '[USER]',                                     // your sender email adress e.g. account
        'password' => '[PASSWORD]',
        'receiver' => '[email protected]',                  // your email adress to receive the secured contacts
        'debug'    => 0,                                            // 0 = off (for production use)
                                                                    // 1 = client messages
                                                                    // 2 = client and server messages
    ],

    'filters' => [
        'include' => [                                              /* if empty include all by default
            'categories' => [                                          if your server is iCloud, groups can be used (XOR)
            ],
            'group' => [
            ],                                                      */
        ],

        'exclude' => [
            'categories' => [
                'A',
                'B',
                'C',
            ],                                                      /*
            'group' => [                                               if your server is iCloud, groups can be used (XOR)
                'D',
                'E',
                'F',
            ],                                                      */
        ],

    'conversions' => [
       
        'substitutes' => [                                          // you must not change this!
            'PHOTO',                                                // Otherwise image upload failed!
        ],      
       
        'vip' => [
            'categories' => ['VIP'                                  // the category / categories, which should be marked as VIP
            ],
        ],
       
        'realName' => [                                             // are processed consecutively. Order decides!
            '{lastname}, {prefix} {nickname}',
            '{lastname}, {prefix} {firstname}',
            '{lastname}, {nickname}',
            '{lastname}, {firstname}',
            '{organization}',
            '{fullname}'
        ],

        'phoneTypes' => [                                           // you mustn´t define 'fax'!
            'WORK'    => 'work',                                    // this conversion is set fix in code!
            'HOME'    => 'home',
            'CELL'    => 'mobile',
            'MAIN'    => 'work',
            'FAX'     => 'fax',
            'default' => 'work',
        ],

        'emailTypes' => [
            'WORK' => 'work',
            'HOME' => 'home'
        ],
       
        'phoneReplaceCharacters' => [                               // are processed consecutively. Order decides!
            '+491'  => '01',                                        // domestic numbers without country code
            '+492'  => '02',
            '+493'  => '03',
            '+494'  => '04',
            '+495'  => '05',
            '+496'  => '06',
            '+497'  => '07',
            '+498'  => '08',
            '+499'  => '09',
            '+49 1' => '01',
            '+49 2' => '02',
            '+49 3' => '03',
            '+49 4' => '04',
            '+49 5' => '05',
            '+49 6' => '06',
            '+49 7' => '07',
            '+49 8' => '08',
            '+49 9' => '09',
            '+49'   => '',
            '('     => '',                                          // delete separators
            ')'     => '',
            '/'     => '',
            '-'     => '',
            '+'     => '00'                                         // normalize foreign numbers
        ]
    ]
];

Übersehe ich da etwas? Oder woher kommt das?

Gruß, Christoph
 
Hallo,

bin unterwegs: daher in Kurzform:
Probiere doch mal deine URL ohne doppeltes Hochkomma am Ende - also mit > ../familie/', <, steht ja auch so in der Fehlermeldung
 
Hallo,

ich versuche carddav2fb auchzum Laufen zu bekommen.
Zum Testen habe ich es per "Download" aufgerufen. Allerdings werden nur die ersten 280 Kontakte (oc 10.0.9) heruntergeladen. Danach erscheint reproduzierbar
Code:
Downloading vCard(s) from account td                                                                                         
  280 [>---------------------------]
In RequestException.php line 113:
                                                                                                                            
  Client error: `GET http://192.168.1.200/owncloud/remote.php/dav/addressbooks/users/td/contacts/bcb8db16-2e30-4fc0-a765-41 
  22493f2255vcf.vcf` resulted in a `404 Not Found` response:                                                                 
  <?xml version="1.0" encoding="utf-8"?>                                                                                     
  <d:error xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">                                                                 
    <s:exception>Sabre\DA (truncated...)

"-vvv" ergibt
Code:
Exception trace:
GuzzleHttp\Exception\RequestException::create() at /home/thomas/bin/own/carddav2fb/vendor/guzzlehttp/guzzle/src/Middleware.ph
p:66
GuzzleHttp\Middleware::GuzzleHttp\{closure}() at /home/thomas/bin/own/carddav2fb/vendor/guzzlehttp/promises/src/Promise.php:2
03
GuzzleHttp\Promise\Promise::callHandler() at /home/thomas/bin/own/carddav2fb/vendor/guzzlehttp/promises/src/Promise.php:156
GuzzleHttp\Promise\Promise::GuzzleHttp\Promise\{closure}() at /home/thomas/bin/own/carddav2fb/vendor/guzzlehttp/promises/src/
TaskQueue.php:47
GuzzleHttp\Promise\TaskQueue->run() at /home/thomas/bin/own/carddav2fb/vendor/guzzlehttp/promises/src/Promise.php:246
GuzzleHttp\Promise\Promise->invokeWaitFn() at /home/thomas/bin/own/carddav2fb/vendor/guzzlehttp/promises/src/Promise.php:223
GuzzleHttp\Promise\Promise->waitIfPending() at /home/thomas/bin/own/carddav2fb/vendor/guzzlehttp/promises/src/Promise.php:267
GuzzleHttp\Promise\Promise->invokeWaitList() at /home/thomas/bin/own/carddav2fb/vendor/guzzlehttp/promises/src/Promise.php:22
5
GuzzleHttp\Promise\Promise->waitIfPending() at /home/thomas/bin/own/carddav2fb/vendor/guzzlehttp/promises/src/Promise.php:62
GuzzleHttp\Promise\Promise->wait() at /home/thomas/bin/own/carddav2fb/vendor/guzzlehttp/guzzle/src/Client.php:106
GuzzleHttp\Client->send() at /home/thomas/bin/own/carddav2fb/src/CardDav/Backend.php:230
Andig\CardDav\Backend->query() at /home/thomas/bin/own/carddav2fb/src/CardDav/Backend.php:143
Andig\CardDav\Backend->getVcard() at /home/thomas/bin/own/carddav2fb/src/CardDav/Backend.php:177
Andig\CardDav\Backend->simplify() at /home/thomas/bin/own/carddav2fb/src/CardDav/Backend.php:109
Andig\CardDav\Backend->getVcards() at /home/thomas/bin/own/carddav2fb/src/functions.php:38
Andig\download() at /home/thomas/bin/own/carddav2fb/src/DownloadCommand.php:55
Andig\DownloadCommand->execute() at /home/thomas/bin/own/carddav2fb/vendor/symfony/console/Command/Command.php:251
Symfony\Component\Console\Command\Command->run() at /home/thomas/bin/own/carddav2fb/vendor/symfony/console/Application.php:94
6
Symfony\Component\Console\Application->doRunCommand() at /home/thomas/bin/own/carddav2fb/vendor/symfony/console/Application.p
hp:248
Symfony\Component\Console\Application->doRun() at /home/thomas/bin/own/carddav2fb/vendor/symfony/console/Application.php:148
Symfony\Component\Console\Application->run() at /home/thomas/bin/own/carddav2fb/carddav2fb.php:19
Ich bitte um Unterstützung.

td
 
Hallo,

dass liest sich wie ein Fehler in der Datenbank.
Kannst du die vCard identifizieren, die den Abbruch verursacht? Versuche mit Thunderbird und dem AddOn Cardbook dir den Datensatz anzusehen.

Mit freundlichen Grüßen

Black Senator
 
Hallo Black Senator,

das habe ich, die vcard ist ja anhand der UID einfach zu identifizieren. Cardbook habe ich im TB ohnehin installiert. In keiner Ansicht (Cardbook, owncloud, Smartphone) ist in dem Eintrag etwas Verdächtiges zu finden, es sind ohnehin nur Name, email-Adresse und Telephonnummer eingetragen. Ich habe den Eintrag gelöscht und manuell wieder aufgenommen. Anschließen brach carddav2fb noch einmal wg einer ungültigen Datumsangabe in einem anderen Datensatz ab.
Nun aber laufen Download und Upload problemlos durch.

Herzlichen Dank für die Hilfe!
td
 
Add 1: dann lag es trotzdem an der vCard

Add2: Dann stimmte was mit der config.php nicht. Wenn du da noch Hilfe brauchst: Am besten stellst du die einmal ohne deine credentials ein.

Mit freundlichen Grüßen


Black Senator
 
Danke. Wie geschrieben: Es funktioniert nun alles hervorragend!

td
 
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.