pimutils / vdirsyncer

📇 Synchronize calendars and contacts.
https://vdirsyncer.pimutils.org/
Other
1.57k stars 163 forks source link

Usage with Synology NAS #498

Closed cinghiopinghio closed 8 years ago

cinghiopinghio commented 8 years ago

Hello, I'm trying to setup this great piece of code. I'm pretty much ignorant in this field but I'm confident enough with the CLI. I setup a caldav in a Synology NAS at home and I'm trying to sync the calendar to my workstation.

When I run vsyncdir discover I got the error InvalidXMLResponse() to a current-user-principal query.

I've set verify : false in config file.

here is the output:

debug: Using 1 maximal workers.
debug: Fetching value for username.fetch with command strategy.
debug: Fetching value for password.fetch with command strategy.
Discovering collections for pair calendar
debug: PROPFIND https://XXXXX:YYY/homes/user/webdav/calendar/sync/
debug: {'Content-Type': 'application/xml; charset=UTF-8', 'Depth': '0', 'User-Agent': 'vdirsyncer'}
debug: 
debug:         <d:propfind xmlns:d="DAV:">
debug:             <d:prop>
debug:                 <d:current-user-principal />
debug:             </d:prop>
debug:         </d:propfind>
debug:         
debug: Sending request...
debug: 207
debug: {'Server': 'Apache', 'Content-Type': 'application/xml; charset="utf-8"', 'Content-Length': '361', 'Connection': 'Keep-Alive', 'Keep-Alive': 'timeout=5, max=100', 'Date': 'Wed, 07 Sep 2016 08:26:06 GMT'}
debug: b'<?xml version="1.0" encoding="utf-8"?>\n<D:multistatus xmlns:D="DAV:" xmlns:ns0="DAV:">\n<D:response xmlns:lp1="DAV:">\n<D:href>/homes/mauro/webdav/calendar/sync/</D:href>\n<D:propstat>\n<D:prop>\n<lp1:current-user-principal><D:unauthenticated/></lp1:current-user-principal>\n</D:prop>\n<D:status>HTTP/1.1 200 OK</D:status>\n</D:propstat>\n</D:response>\n</D:multistatus>\n'
debug: GET https://XXXXXXX:YYYYY/.well-known/caldav/
debug: {'Content-Type': 'application/xml; charset=UTF-8', 'User-Agent': 'vdirsyncer'}
debug: None
debug: Sending request...
debug: 404
debug: {'Server': 'Apache', 'Content-Type': 'text/html; charset=iso-8859-1', 'Content-Length': '217', 'Connection': 'Keep-Alive', 'Keep-Alive': 'timeout=5, max=99', 'Date': 'Wed, 07 Sep 2016 08:26:06 GMT'}
debug: b'<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">\n<html><head>\n<title>404 Not Found</title>\n</head><body>\n<h1>Not Found</h1>\n<p>The requested URL /.well-known/caldav/ was not found on this server.</p>\n</body></html>\n'
debug: Server does not support well-known URIs.
debug: PROPFIND https://XXXXXXX:YYYY/homes/user/webdav/calendar/sync/
debug: {'Content-Type': 'application/xml; charset=UTF-8', 'Depth': '0', 'User-Agent': 'vdirsyncer'}
debug: 
debug:         <d:propfind xmlns:d="DAV:">
debug:             <d:prop>
debug:                 <d:current-user-principal />
debug:             </d:prop>
debug:         </d:propfind>
debug:         
debug: Sending request...
debug: 207
debug: {'Server': 'Apache', 'Content-Type': 'application/xml; charset="utf-8"', 'Content-Length': '361', 'Connection': 'Keep-Alive', 'Keep-Alive': 'timeout=5, max=98', 'Date': 'Wed, 07 Sep 2016 08:26:06 GMT'}
debug: b'<?xml version="1.0" encoding="utf-8"?>\n<D:multistatus xmlns:D="DAV:" xmlns:ns0="DAV:">\n<D:response xmlns:lp1="DAV:">\n<D:href>/homes/mauro/webdav/calendar/sync/</D:href>\n<D:propstat>\n<D:prop>\n<lp1:current-user-principal><D:unauthenticated/></lp1:current-user-principal>\n</D:prop>\n<D:status>HTTP/1.1 200 OK</D:status>\n</D:propstat>\n</D:response>\n</D:multistatus>\n'
error: The server returned something vdirsyncer doesn't understand. Error message: InvalidXMLResponse()
error: While this is most likely a serverside problem, the vdirsyncer devs are generally interested in such bugs. Please report it in the issue tracker at https://github.com/pimutils/vdirsyncer/issues
error: 1 out of 1 tasks failed.
untitaker commented 8 years ago

It appears that the server thinks you're unauthenticated. Do you have username and password properly set?

On 7 September 2016 11:03:37 CEST, Cinghio Pinghio notifications@github.com wrote:

Hello, I'm trying to setup this great piece of code. I'm pretty much ignorant in this field but I'm confident enough with the CLI. I setup a caldav in a Synology NAS at home and I'm trying to sync the calendar to my workstation.

When I run vsyncdir discover I got the error InvalidXMLResponse() to a current-user-principal query.

  • vdirsyncer version is 0.12.1
  • the server is the default provided by Synology
  • Python version is 3.5.2
  • Operating system Arch-linux

I've set verify : false in config file.

here is the output:

debug: Using 1 maximal workers.
debug: Fetching value for username.fetch with command strategy.
debug: Fetching value for password.fetch with command strategy.
Discovering collections for pair calendar
debug: PROPFIND https://XXXXX:YYY/homes/user/webdav/calendar/sync/
debug: {'Content-Type': 'application/xml; charset=UTF-8', 'Depth': '0',
'User-Agent': 'vdirsyncer'}
debug: 
debug:         <d:propfind xmlns:d="DAV:">
debug:             <d:prop>
debug:                 <d:current-user-principal />
debug:             </d:prop>
debug:         </d:propfind>
debug:         
debug: Sending request...
debug: 207
debug: {'Server': 'Apache', 'Content-Type': 'application/xml;
charset="utf-8"', 'Content-Length': '361', 'Connection': 'Keep-Alive',
'Keep-Alive': 'timeout=5, max=100', 'Date': 'Wed, 07 Sep 2016 08:26:06
GMT'}
debug: b'<?xml version="1.0" encoding="utf-8"?>\n<D:multistatus
xmlns:D="DAV:" xmlns:ns0="DAV:">\n<D:response
xmlns:lp1="DAV:">\n<D:href>/homes/mauro/webdav/calendar/sync/</D:href>\n<D:propstat>\n<D:prop>\n<lp1:current-user-principal><D:unauthenticated/></lp1:current-user-principal>\n</D:prop>\n<D:status>HTTP/1.1
200 OK</D:status>\n</D:propstat>\n</D:response>\n</D:multistatus>\n'
debug: GET https://XXXXXXX:YYYYY/.well-known/caldav/
debug: {'Content-Type': 'application/xml; charset=UTF-8', 'User-Agent':
'vdirsyncer'}
debug: None
debug: Sending request...
debug: 404
debug: {'Server': 'Apache', 'Content-Type': 'text/html;
charset=iso-8859-1', 'Content-Length': '217', 'Connection':
'Keep-Alive', 'Keep-Alive': 'timeout=5, max=99', 'Date': 'Wed, 07 Sep
2016 08:26:06 GMT'}
debug: b'<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML
2.0//EN">\n<html><head>\n<title>404 Not
Found</title>\n</head><body>\n<h1>Not Found</h1>\n<p>The requested URL
/.well-known/caldav/ was not found on this
server.</p>\n</body></html>\n'
debug: Server does not support well-known URIs.
debug: PROPFIND https://XXXXXXX:YYYY/homes/user/webdav/calendar/sync/
debug: {'Content-Type': 'application/xml; charset=UTF-8', 'Depth': '0',
'User-Agent': 'vdirsyncer'}
debug: 
debug:         <d:propfind xmlns:d="DAV:">
debug:             <d:prop>
debug:                 <d:current-user-principal />
debug:             </d:prop>
debug:         </d:propfind>
debug:         
debug: Sending request...
debug: 207
debug: {'Server': 'Apache', 'Content-Type': 'application/xml;
charset="utf-8"', 'Content-Length': '361', 'Connection': 'Keep-Alive',
'Keep-Alive': 'timeout=5, max=98', 'Date': 'Wed, 07 Sep 2016 08:26:06
GMT'}
debug: b'<?xml version="1.0" encoding="utf-8"?>\n<D:multistatus
xmlns:D="DAV:" xmlns:ns0="DAV:">\n<D:response
xmlns:lp1="DAV:">\n<D:href>/homes/mauro/webdav/calendar/sync/</D:href>\n<D:propstat>\n<D:prop>\n<lp1:current-user-principal><D:unauthenticated/></lp1:current-user-principal>\n</D:prop>\n<D:status>HTTP/1.1
200 OK</D:status>\n</D:propstat>\n</D:response>\n</D:multistatus>\n'
error: The server returned something vdirsyncer doesn't understand.
Error message: InvalidXMLResponse()
error: While this is most likely a serverside problem, the vdirsyncer
devs are generally interested in such bugs. Please report it in the
issue tracker at https://github.com/pimutils/vdirsyncer/issues
error: 1 out of 1 tasks failed.

You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/pimutils/vdirsyncer/issues/498

Sent from my Android device with K-9 Mail. Please excuse my brevity.

cinghiopinghio commented 8 years ago

Thanks for the fast reply.

I'm pretty sure I used the right user and password values (I also tried to write them down in plain text n the config file). If I use the wrong user or password I get a different behavior with a 401 code and a lot of time lag.

untitaker commented 8 years ago

Seems like a bug with Synology devices: https://forums.bitfire.at/topic/296/can-t-configure-davdroid-account-with-synology/8

cinghiopinghio commented 8 years ago

Thanks, seems to be a unsolvable problem (Synology won't fix this at least in the short time period). I'm trying to install a new CalDav server (Radicale).

rfc2822 commented 8 years ago

Currently, Synology DSM just doesn't support current-user-principal (RFC 5397), which is not required for advertising CalDAV support. However, if you query the /storage directory, it will say that it's a calendar home set (containing calendar member collections). This is how DAVdroid currently detects Synology's collections, at least for a given storage.

untitaker commented 8 years ago

I see, in that case setting url = https://my.server/storage should work. Could you try this @cinghiopinghio?

On Fri, Sep 09, 2016 at 03:44:31PM -0700, rfc2822 wrote:

Currently, Synology DSM just doesn't support current-user-principal (RFC 5397), which is not required for advertising CalDAV support. However, if you query the /storage directory, it will say that it's a calendar home set (containing calendar member collections). This is how DAVdroid currently detects Synology's collections, at least for a given storage.

You are receiving this because you modified the open/close state. Reply to this email directly or view it on GitHub: https://github.com/pimutils/vdirsyncer/issues/498#issuecomment-246061256

cinghiopinghio commented 8 years ago

Hi, I don't really understand what should replace storage but I tried several paths and never worked.

As suggested in the synology help centre and in the DAVdroid webpage, if my calendars are located in USER's home at path/to/calendars, I should write in the config file url = https://xxx.xxx.xxx.xxx:yyyy/path/to/calendars but it gives me the same error as above.

I also changed to /volume1... /homes/USER/... /var/services/homes/... with no luck.

PS. the cardDAV server works smoothly.

untitaker commented 8 years ago

I'll reopen this, it is at least a documentation issue.

untitaker commented 8 years ago

Ah, I have bad reading comprehension, this requires changes within vdirsyncer!

untitaker commented 8 years ago

@cinghiopinghio Could you try the git-version of vdirsyncer?

cinghiopinghio commented 8 years ago

That works smoothly! Great.

One comment on the output. The following error line is a bit misleading, Should it be labelled as a warning?

error: No collection "My Collection" found for storage calendar_local.

Thank you for this great software.

untitaker commented 8 years ago

What do you mean? Do you mean the fact that it's an error?

cinghiopinghio commented 8 years ago

Yeah, In fact it's not an error that a remote or local collection is absent on the other side, that's actually why we run a discover.

untitaker commented 8 years ago

Thanks for your feedback, should be fixed now.

On Wed, Sep 14, 2016 at 02:00:37AM -0700, Cinghio Pinghio wrote:

Yeah, In fact it's not an error that a remote or local collection is absent on the other side, that's actually why we run a discover.

You are receiving this because you modified the open/close state. Reply to this email directly or view it on GitHub: https://github.com/pimutils/vdirsyncer/issues/498#issuecomment-246949883

cinghiopinghio commented 8 years ago

Thank you for your this great code. Cheers