https://bugs.freedesktop.org/show_bug.cgi?id=56240
--- Comment #10 from Patrick Ohly <patrick.ohly(a)gmx.de> ---
(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 <tobiasmue(a)gnome.org>
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.