fsantini / KoboCloud

A set of scripts to synchronize a kobo reader with popular cloud services
Other
1.01k stars 97 forks source link

Not working for recent Kobo? #2

Closed therourke closed 5 years ago

therourke commented 6 years ago

I would love to be able to sync directly from Dropbox, but KoboCloud doesn't seem to work on latest firmware. Any chance of an update?

Thanks

fsantini commented 6 years ago

Hi! Well I haven't maintained it in a long time, but I'll see what I can do... Follow this issue and I'll report the progress here!

therourke commented 6 years ago

Thanks for the fast reply! Fingers crossed you can get it working again. I would adore this feature.

fsantini commented 6 years ago

So well it turns out that the problem is curl, which segfaults whatever I do... I tried recompiling a more recent OpenSSL and Curl, but still same result. Unfortunately I don't have time to try harder at the moment, if anybody would like to give it a go, be my guest.

cburschka commented 5 years ago

I see the segfault as well... is there a way to see more detailed output? Or a way to run the Kobo firmware in some kind of sandbox on a Linux desktop?

My first suspicion would be that some standard library is either missing or incompatible with whatever curl was compiled against, maybe...

cburschka commented 5 years ago

I found a potential solution for running curl on Kobo firmware, which I'll test when I next get the opportunity: https://www.mobileread.com/forums/showthread.php?p=3734553

fsantini commented 5 years ago

That would be awesome!

cburschka commented 5 years ago

Using the curl binary from the link, I was indeed able to download URLs. (I suppose it would be especially useful to know how to compile it from source, though...)

Unfortunately, the next issue is that the NextCloud script seems to be out of date, and relying on static HTML. As far as I can tell, it's no longer possible to access NextCloud web pages that way, since they use client-side rendering now. The only API offered by NextCloud is WebDAV, which unfortunately doesn't work with public shared folders (it requires password authentication).

I could try to circumvent this by downloading the entire folder as a zip file (appending /download to the URL), but that's going to become impractical quickly as the library grows... :/

Edit: The Dropbox script still seems to be working, at least.

fsantini commented 5 years ago

This is really good news! Dropbox had a similar problem, but I was able to go around it. I would need access to a current NextCloud folder though, would you be able to set one up for me? Just with any text file inside. I only have an old ownCloud installation and I don't feel like upgrading any time soon.

cburschka commented 5 years ago

PS: Spoke too soon about WebDAV requiring passwords. It actually looks like the NextCloud page itself uses WebDAV queries to get the directory listing; it does this even when anonymously viewing a public folder. So in theory, there has to be some way to extract the credentials and send that query directly to get an XML file with the directory contents.

Maybe a project for another day. :)

cburschka commented 5 years ago

Sure! This is a public folder on my NextCloud 13 instance: https://cloud.burschka.de/s/kXExESE97ryCLso

Thanks for taking a look at this! :D

fsantini commented 5 years ago

Great! Thanks! Would you mind creating a small text file in it?

cburschka commented 5 years ago

Oh right! Yeah, there's a test.txt in it now.

fsantini commented 5 years ago

OK it works! (Well at least on my PC) You can find the directory listing with:

curl -i -X PROPFIND -u kXExESE97ryCLso: https://cloud.burschka.de/public.php/webdav/ --upload-file - -H "Depth: 1" <<end
<?xml version="1.0"?>
<a:propfind xmlns:a="DAV:">
<a:prop><a:resourcetype/></a:prop>
</a:propfind>
end

and get the file with curl -u kXExESE97ryCLso: https://cloud.burschka.de/public.php/webdav/test.txt

Note that you pass the user with -u and the user name is the directory name in the link. The colon after the user name is to specify that there is no password.

I'm going to implement this when I have some time!

fsantini commented 5 years ago

Ok it seems to be working! Thanks for your help!