andig / carddav2fb

Download CardDAV VCards and upload as phonebook to AVM FRITZ!Box
63 stars 19 forks source link

Posteo download results in: [Sabre\VObject\ParseException] NULL" id MimeDir file. expected: "END:VCARD" got: "END:VCARD #241

Open gerdneuman opened 2 years ago

gerdneuman commented 2 years ago

I upgraded my Raspberry PI to a newer version. So I thought of migrating from the original jens-maus repo to this more maintained fork here, too.

However, I get this error with the fork:

$ php bin/carddav2fbneu/carddav2fb -vvv download test1.txt
Downloading vCard(s) from account my_posteo_user_name
    1 [->--------------------------] < 1 sec 6.0 MiB
In MimeDir.php line 182:

  [Sabre\VObject\ParseException]                                    
NULL"  id MimeDir file. expected: "END:VCARD" got: "END:VCARD

Exception trace:
  at /home/pi/bin/carddav2fbneu/vendor/sabre/vobject/lib/Parser/MimeDir.php:182
 Sabre\VObject\Parser\MimeDir->parseDocument() at /home/pi/bin/carddav2fbneu/vendor/sabre/vobject/lib/Parser/MimeDir.php:90
 Sabre\VObject\Parser\MimeDir->parse() at /home/pi/bin/carddav2fbneu/vendor/sabre/vobject/lib/Reader.php:47
 Sabre\VObject\Reader::read() at /home/pi/bin/carddav2fbneu/src/CardDav/Backend.php:198
 Andig\CardDav\Backend->getVcards() at /home/pi/bin/carddav2fbneu/src/functions.php:51
 Andig\download() at /home/pi/bin/carddav2fbneu/src/DownloadTrait.php:35
 Andig\DownloadCommand->downloadProvider() at /home/pi/bin/carddav2fbneu/src/DownloadTrait.php:70
 Andig\DownloadCommand->downloadAllProviders() at /home/pi/bin/carddav2fbneu/src/DownloadCommand.php:37
 Andig\DownloadCommand->execute() at /home/pi/bin/carddav2fbneu/vendor/symfony/console/Command/Command.php:298
 Symfony\Component\Console\Command\Command->run() at /home/pi/bin/carddav2fbneu/vendor/symfony/console/Application.php:1015
 Symfony\Component\Console\Application->doRunCommand() at /home/pi/bin/carddav2fbneu/vendor/symfony/console/Application.php:299
 Symfony\Component\Console\Application->doRun() at /home/pi/bin/carddav2fbneu/vendor/symfony/console/Application.php:171
 Symfony\Component\Console\Application->run() at /home/pi/bin/carddav2fbneu/carddav2fb:20

download [-d|--dissolve] [-f|--filter] [-i|--image] [-l|--local [LOCAL]] [-c|--config CONFIG] [--] <filename>

My config looks like this:

// or server (is considered with the run and download command)
    'server' => [
        [
            'url' => 'https://posteo.de:8443/addressbooks/my_posteo_user_name/default/',
            'user' => 'my_posteo_user_name',
            'password' => 'xxx',
            'http' => [           // http client options are directly passed to Guzzle http client
                // 'verify' => false, // uncomment to disable certificate check
                // 'auth' => 'digest', // uncomment for digest auth
            ],
            // 'method' => 'PROPFIND';  // uncomment if 'REPORT' (default) causes an error (e.g. t-online)
        ],
    ],

I do not get the error with the original jens-maus repo - there retrieving the carddav file works.

Any ideas or workarounds? I googled the error and found e.g. https://github.com/nextcloud/server/issues/8827 though I do not know if its really related.

I think you are using https://github.com/sabre-io/vobject (but not sure) but could not find any bug report there. Maybe it is also a bug in posteo's implementation rather...

blacksenator commented 2 years ago

@gerdneuman Hi Gerd, sorry for delay - I'm quite busy at the moment to investigate this more detailed. First of all: yes we use sabre for reading and parsing the vCards. From my point of view the error message give a clear hint, that the source data are not as expected. Therefore I suggest (if possible) to implement a new simple one (or few) contacts as test database on posteo in parallel. Test if you can load this test contacts.

gerdneuman commented 2 years ago

@blacksenator Sorry, I just switched back to the old jens-maus repo (which just works) now and do not have time to investigate this any deeper. So maybe just close this if you also do not have the time.