https://bugs.freedesktop.org/show_bug.cgi?id=56240
--- Comment #10 from Patrick Ohly <[email protected]> --- (In reply to comment #9) > (In reply to comment #4) > > Hmm, somehow libneon doesn't include credentials in the request header here, > > despite recognizing the challenge (the "auth" output is from libneon). > > > > I'm out of ideas. Can you recompile from source with the Basic > > authentication disabled? In Neon.cpp, comment out the content of > > Session::forceAuthorization(). > > > > > > I tried. As > ./configure --enable-dav --enable-developer-mode > --prefix=/tmp/syncevolution/ > --with-synthesis-src=git://gitorious.org/libsynthesis/libsynthesis.git > > failed with: configure: error: need at least libsynthesis >= 3.4.0.16.8; the > latest libsynthesis for SyncEvolution is the one from > http://meego.gitorious.org/meego-middleware/libsynthesis That error message is incorrect. The latest source is on freedesktop.org, just like SyncEvolution itself: http://cgit.freedesktop.org/SyncEvolution/libsynthesis > but after making, ./src/syncevolution fails: [...] > $ syncevolution --daemon=no --configure --template webdav > username=user1 password=pw1 syncURL=${URL} > target-config@radicale > [ERROR] No configuration template for 'webdav' available. [...] > After having it make installed, it worked better, though. Exactly. The templates are only found at the path compiled into the binaries, or at the location specified via env variables (see end of README). They are not found in the source tree. > But with my patch: > > commit f80ff66d2ae9a93808f22fa8bb1c90170a92d68b > Author: Tobias Mueller <[email protected]> > Date: Sat Nov 17 04:29:38 2012 +0100 > > unforce authorization > > diff --git a/src/backends/webdav/NeonCXX.cpp > b/src/backends/webdav/NeonCXX.cpp > index 26a6ea5..62db8dd 100644 > --- a/src/backends/webdav/NeonCXX.cpp > +++ b/src/backends/webdav/NeonCXX.cpp > @@ -316,9 +316,10 @@ int Session::getCredentials(void *userdata, const char > *realm, int attempt, ch > > void Session::forceAuthorization(const std::string &username, const > std::string &password) > { > - m_forceAuthorizationOnce = true; > +/* m_forceAuthorizationOnce = true; > m_forceUsername = username; > m_forcePassword = password; > +*/ > } > > void Session::preSendHook(ne_request *req, void *userdata, ne_buffer > *header) throw() > > > > it doesn't authenticate properly: > > > $ SYNCEVOLUTION_DEBUG=1 syncevolution --daemon=no loglevel=4 --run > target-config@radicale cards1 > [DEBUG 00:00:00] Sat 2012-11-17 04:01:49 UTC = 05:01 +0100 CET > [DEVELOPER 00:00:00] SyncML server account: user1 > [DEVELOPER 00:00:00] client: SyncEvolution > 1.3.99.1+20121117+SE+f80ff66+unclean for workstation > [DEVELOPER 00:00:00] device ID: > syncevolution-3e6db3aa-82f0-4f47-bb4f-63d0c9f7d2df > [DEVELOPER 00:00:00] > [DEVELOPER 00:00:00] Scanning backend libraries in > /home/muelli/git/syncevolution/src/backends/ > [DEVELOPER 00:00:00] Scanning backend libraries in > /home/muelli/git/syncevolution/src/backends//activesync/.libs > [DEVELOPER 00:00:00] Loading backend library syncactivesync.so > [DEVELOPER 00:00:00] Scanning backend libraries in > /home/muelli/git/syncevolution/src/backends//addressbook/.libs > [DEVELOPER 00:00:00] Loading backend library syncaddressbook.so > [DEVELOPER 00:00:00] Scanning backend libraries in > /home/muelli/git/syncevolution/src/backends//akonadi/.libs > [DEVELOPER 00:00:00] Loading backend library syncakonadi.so > [DEVELOPER 00:00:00] Scanning backend libraries in > /home/muelli/git/syncevolution/src/backends//evolution/.libs > [DEVELOPER 00:00:00] Loading backend library syncebook.so > [DEVELOPER 00:00:00] Loading backend library syncecal.so > [DEVELOPER 00:00:00] Scanning backend libraries in > /home/muelli/git/syncevolution/src/backends//file/.libs > [DEVELOPER 00:00:00] Loading backend library syncfile.so > [DEVELOPER 00:00:00] Scanning backend libraries in > /home/muelli/git/syncevolution/src/backends//gnome/.libs > [DEVELOPER 00:00:00] Loading backend library platformgnome.so > [DEVELOPER 00:00:00] Scanning backend libraries in > /home/muelli/git/syncevolution/src/backends//kcalextended/.libs > [DEVELOPER 00:00:00] Loading backend library synckcalextended.so > [DEVELOPER 00:00:00] Scanning backend libraries in > /home/muelli/git/syncevolution/src/backends//kde/.libs > [DEVELOPER 00:00:00] Loading backend library platformkde.so > [DEVELOPER 00:00:00] Scanning backend libraries in > /home/muelli/git/syncevolution/src/backends//maemo/.libs > [DEVELOPER 00:00:00] Loading backend library syncmaemocal.so > [DEVELOPER 00:00:00] Scanning backend libraries in > /home/muelli/git/syncevolution/src/backends//pbap/.libs > [DEVELOPER 00:00:00] Loading backend library syncpbap.so > [DEVELOPER 00:00:00] Scanning backend libraries in > /home/muelli/git/syncevolution/src/backends//qtcontacts/.libs > [DEVELOPER 00:00:00] Loading backend library syncqtcontacts.so > [DEVELOPER 00:00:00] Scanning backend libraries in > /home/muelli/git/syncevolution/src/backends//sqlite/.libs > [DEVELOPER 00:00:00] Loading backend library syncsqlite.so > [DEVELOPER 00:00:00] Scanning backend libraries in > /home/muelli/git/syncevolution/src/backends//webdav/.libs > [DEVELOPER 00:00:00] Loading backend library syncdav.so > [DEVELOPER 00:00:00] Scanning backend libraries in > /home/muelli/git/syncevolution/src/backends//xmlrpc/.libs > [DEVELOPER 00:00:00] Loading backend library syncxmlrpc.so > [INFO 00:00:00] addressbook: inactive > [INFO 00:00:00] calendar: inactive > [INFO 00:00:00] calendar1: inactive > [INFO 00:00:00] memo: inactive > [INFO 00:00:00] todo: inactive > [DEBUG 00:00:00] checking sync password syncURL > [DEBUG 00:00:00] checking sync password username > [DEBUG 00:00:00] checking sync password password > [DEBUG 00:00:00] checking sync password logdir > [DEBUG 00:00:00] checking sync password loglevel > [DEBUG 00:00:00] checking sync password notifyLevel > [DEBUG 00:00:00] checking sync password printChanges > [DEBUG 00:00:00] checking sync password dumpData > [DEBUG 00:00:00] checking sync password maxlogdirs > [DEBUG 00:00:00] checking sync password autoSync > [DEBUG 00:00:00] checking sync password autoSyncInterval > [DEBUG 00:00:00] checking sync password autoSyncDelay > [DEBUG 00:00:00] checking sync password preventSlowSync > [DEBUG 00:00:00] checking sync password useProxy > [DEBUG 00:00:00] checking sync password proxyHost > [DEBUG 00:00:00] checking sync password proxyUsername > [DEBUG 00:00:00] checking sync password proxyPassword > [DEBUG 00:00:00] checking sync password clientAuthType > [DEBUG 00:00:00] checking sync password RetryDuration > [DEBUG 00:00:00] checking sync password RetryInterval > [DEBUG 00:00:00] checking sync password remoteIdentifier > [DEBUG 00:00:00] checking sync password PeerIsClient > [DEBUG 00:00:00] checking sync password SyncMLVersion > [DEBUG 00:00:00] checking sync password PeerName > [DEBUG 00:00:00] checking sync password deviceId > [DEBUG 00:00:00] checking sync password remoteDeviceId > [DEBUG 00:00:00] checking sync password enableWBXML > [DEBUG 00:00:00] checking sync password enableRefreshSync > [DEBUG 00:00:00] checking sync password maxMsgSize > [DEBUG 00:00:00] checking sync password maxObjSize > [DEBUG 00:00:00] checking sync password SSLServerCertificates > [DEBUG 00:00:00] checking sync password SSLVerifyServer > [DEBUG 00:00:00] checking sync password SSLVerifyHost > [DEBUG 00:00:00] checking sync password WebURL > [DEBUG 00:00:00] checking sync password IconURI > [DEBUG 00:00:00] checking sync password ConsumerReady > [DEBUG 00:00:00] checking sync password peerType > [DEBUG 00:00:00] checking sync password HashCode > [DEBUG 00:00:00] checking sync password ConfigDate > [DEBUG 00:00:00] checking sync password lastNonce > [DEBUG 00:00:00] checking sync password deviceData > [DEBUG 00:00:00] checking sync password defaultPeer > [DEBUG 00:00:00] checking sync password keyring > [DEBUG 00:00:00] checking sync password webDAVCredentialsOkay > [DEBUG 00:00:00] checking source cards1 password sync > [DEBUG 00:00:00] checking source cards1 password uri > [DEBUG 00:00:00] checking source cards1 password backend > [DEBUG 00:00:00] checking source cards1 password syncFormat > [DEBUG 00:00:00] checking source cards1 password forceSyncFormat > [DEBUG 00:00:00] checking source cards1 password database > [DEBUG 00:00:00] checking source cards1 password databaseFormat > [DEBUG 00:00:00] checking source cards1 password databaseUser > [DEBUG 00:00:00] checking source cards1 password databasePassword > [DEBUG 00:00:00] checking source cards1 password adminData > [DEBUG 00:00:00] checking source cards1 password synthesisID > [DEBUG 00:00:00] sync is starting, catch signals > [DEBUG 00:00:00] SuspendFlags: (re)activating, currently inactive > [DEBUG 00:00:00] SuspendFlags: activating signal handler(s) with fds 7->6 > [DEBUG 00:00:00] SuspendFlags: catch SIGINT > [DEBUG 00:00:00] SuspendFlags: catch SIGTERM > [DEBUG 00:00:00] ready to sync > [DEBUG 00:00:00] using libneon neon 0.29.6: Library build, IPv6, Expat > 2.0.1, zlib 1.2.5, GNU TLS 2.12.14. with SSL, ZLIB, IPV6, TS_SSL, I18N > HTTP session to ${URL}:80 begins. > sess: libproxy #0=direct:// > [DEBUG 00:00:00] starting PROPFIND, credentials unverified, deadline in > 300.0s > ah_create, for WWW-Authenticate > Running pre_send hooks > Sending request headers: > PROPFIND /muelli/cards/ HTTP/1.1 > Keep-Alive: > Connection: TE, Keep-Alive > TE: trailers > Host: ${URL} > Depth: 1 > Content-Length: 141 > Content-Type: application/xml > > Sending request-line and headers: > Doing DNS lookup on ${URL}... > req: Connecting to ip.ip.ip.ip:80 > Sending request body: > Body block (141 bytes): > [<?xml version="1.0" encoding="utf-8"?> > <propfind xmlns="DAV:"><prop> > <getetag xmlns="DAV:"/> > <resourcetype xmlns="DAV:"/> > </prop></propfind> > ] > Request sent; retry is 0. > [status-line] < HTTP/1.1 401 Authorization Required > [hdr] Date: Sat, 17 Nov 2012 04:01:49 GMT > Header Name: [date], Value: [Sat, 17 Nov 2012 04:01:49 GMT] > [hdr] Server: Apache > Header Name: [server], Value: [Apache] > [hdr] WWW-Authenticate: Digest realm="calendar", > nonce="1gOP8ajOBAA=1381417d1268db9f4ed8963b0e66cc58bf3f845e", algorithm=MD5, > domain="calendar", qop="auth" > Header Name: [www-authenticate], Value: [Digest realm="calendar", > nonce="1gOP8ajOBAA=1381417d1268db9f4ed8963b0e66cc58bf3f845e", algorithm=MD5, > domain="calendar", qop="auth"] > [hdr] Content-Length: 480 > Header Name: [content-length], Value: [480] > [hdr] Keep-Alive: timeout=15, max=100 > Header Name: [keep-alive], Value: [timeout=15, max=100] > [hdr] Connection: Keep-Alive > Header Name: [connection], Value: [Keep-Alive] > [hdr] Content-Type: text/html; charset=iso-8859-1 > Header Name: [content-type], Value: [text/html; charset=iso-8859-1] > [hdr] > End of headers. > Running post_headers hooks > Reading 480 bytes of response body. > Got 480 bytes. > Read block (480 bytes): > [<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> > <html><head> > <title>401 Authorization Required</title> > </head><body> > <h1>Authorization Required</h1> > <p>This server could not verify that you > are authorized to access the document > requested. Either you supplied the wrong > credentials (e.g., bad password), or your > browser doesn't understand how to supply > the credentials required.</p> > <hr> > <address>Apache Server at ${URL} Port 80</address> > </body></html> > ] > Running post_send hooks > ah_post_send (#0), code is 401 (want 401), WWW-Authenticate is Digest > realm="calendar", > nonce="1gOP8ajOBAA=1381417d1268db9f4ed8963b0e66cc58bf3f845e", algorithm=MD5, > domain="calendar", qop="auth" > auth: Got challenge (code 401). > auth: Got 'Digest' challenge. > auth: Trying Digest challenge... > auth: Using domain /calendar from calendar > [DEBUG 00:00:00] retry request with credentials > auth: Got qop, using 2617-style. > auth: H(A1) is [a372f9146dc16960158864aa6b0d93df] > auth: Accepting digest challenge. > auth: Accepted Digest challenge. > Running pre_send hooks > auth: Sending 'Digest' response. > auth: '/muelli/cards/' is inside auth domain: 0. > Sending request headers: > PROPFIND /muelli/cards/ HTTP/1.1 > Keep-Alive: > Connection: TE, Keep-Alive > TE: trailers > Host: ${URL} > Depth: 1 > Content-Length: 141 > Content-Type: application/xml Still no Authorization with method Digest. I wonder whether libneon using gnutls supports that. Can you compile again with libneon for openssl? For example, Debian lets you choose, install libneon27-gnutls-dev for gnutls and libneon27-dev for openssl. > Interestingly, it loads stuff from the build directory: [DEVELOPER 00:00:00] > Scanning backend libraries in > /home/muelli/git/syncevolution/src/backends//xmlrpc/.libs > although I installed it. Weird. > $ type -a syncevolution > syncevolution is /tmp/syncevolution/bin/syncevolution > syncevolution is /home/muelli/git/syncevolution/src/syncevolution > syncevolution is /usr/bin/syncevolution > syncevolution is /bin/syncevolution Hmm, the search for backends might be different from the loading of other files. I agree, it should better be consistent. -- You are receiving this mail because: You are on the CC list for the bug. You are the assignee for the bug.
_______________________________________________ Syncevolution-issues mailing list [email protected] http://lists.syncevolution.org/listinfo/syncevolution-issues
