Dynalon / Rainy

Simple Tomboy/Tomdroid cloud/syncing server. Written in C# with AngularJS web frontend. Supports SQLite & Postgres Backends.
http://dynalon.github.io/Rainy
GNU Affero General Public License v3.0
88 stars 15 forks source link

Support for Conboy (Tomboy client for N900) #9

Open enekux opened 11 years ago

enekux commented 11 years ago

Hello there,

I have successfully installed Rainy and I am capable of synchronizing my notes in my different machines using Tomboy as client.

But in my N900 I have a client for Tomboy called Conboy, which it was working great with UbuntuOne:

http://conboy.garage.maemo.org/

but I have troubles to do the same with Rainy. When I put the sync URL to:

http://yourserver.com:8080/username/password/

I get the next error: Could not connect to host. Error Message: Server reply was no valid JSON string.

Anyone has some experience with this issue?

Thanks ;O)

Dynalon commented 11 years ago

The url you have to enter in conboy is not http://yourserver.com///

you actually have to include the username and password into the url, something like this:

http://yourserver.com/johndoe/mypassword/

Where "johndoe" is the username and "mypassword" is the password you specified in the settings.conf file.

enekux commented 11 years ago

I have edited the post (it was wrong).

Yes I put the url of my server port 8080 and the username and password specified in the settings.conf but nothing...

http://yourserver.com:8080/username/password/

Did u make it work using Conboy?

Dynalon commented 11 years ago

I don't have a Maemo-capable device myself and I have no reports of anyone using it with Rainy. Can you start Rainy with the "-vvvv" parameter and attach the output of the log, when the connection fails?

enekux commented 11 years ago

Hi Dynalon,

here you have the log from my server when I am trying to connect via conboy (Please not that I have edited the logs to not show my credentials):

126 [DEBUG] Logsystem->SetupLogging - logsystem initialized 174 [DEBUG] Logsystem->SetupLogging - Writing all log messages to file: debug.log 871 [DEBUG] Rainy.RainyStandaloneServer->Start - starting http listener at: http://*:8080/ Press RETURN to stop Rainy 7173 [DEBUG] Rainy.WebService.RequestLogFilterAttribute->RequestFilter - Received request at: /username/password//api/1.0?oauth_consumer_key=anyone&oauth_nonce=mtJC8fyovWUbuPkId&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1362598459&oauth_token=&oauth_version=1.0&oauth_signature=2Sf2vDZW78Vujm7VKntiRYdglUw%3D Data received: { Username: username, Password: password } 7181 [DEBUG] Rainy.WebService.ApiService->Get - ApiRequest received 7185 [DEBUG] Rainy.WebService.ResponseLogFilterAttribute->ResponseFilter - Sending response: { user-ref: { api-ref: "http://myserver:8080/api/1.0/username", href: "http://myserver:8080/username" }, oauth_request_token_url: "http://myserver:8080/oauth/request_token", oauth_authorize_url: "http://myserver:8080/oauth/authorize/username/password/", oauth_access_token_url: "http://myserver:8080/oauth/access_token", api-version: 1.0 } 22988 [ERROR] Rainy.WebService.OAuth.OAuthService->Any - Caught exception: Argument cannot be null. Parameter name: key

enekux commented 11 years ago

and this is the log when I succesfully authenticate when using Tomboy:

126 [DEBUG] Logsystem->SetupLogging - logsystem initialized 174 [DEBUG] Logsystem->SetupLogging - Writing all log messages to file: debug.log 336 [DEBUG] Rainy.RainyStandaloneServer->Start - starting http listener at: http://*:8080/ Press RETURN to stop Rainy 5469 [DEBUG] Rainy.WebService.RequestLogFilterAttribute->RequestFilter - Received request at: /username/password/api/1.0 Data received: { Username: username, Password: password } 5477 [DEBUG] Rainy.WebService.ApiService->Get - ApiRequest received 5482 [DEBUG] Rainy.WebService.ResponseLogFilterAttribute->ResponseFilter - Sending response: { user-ref: { api-ref: "http://myserver:8080/api/1.0/username", href: "http://myserver:8080/username" }, oauth_request_token_url: "http://myserver:8080/oauth/request_token", oauth_authorize_url: "http://myserver:8080/oauth/authorize/username/password/", oauth_access_token_url: "http://myserver:8080/oauth/access_token", api-version: 1.0 } 5670 [DEBUG] Rainy.WebService.OAuth.OAuthService->Any - granting request token oauth_token=5b5c3df0-b010-4cb8-b28d-73d24b81eab0&oauth_token_secret=87c23d73-ddf5-4eaa-aed2-92187170a737&oauth_callback_confirmed=true to consumer 5995 [DEBUG] Rainy.WebService.RequestLogFilterAttribute->RequestFilter - Received request at: /oauth/authorize/username/password/?oauth_token=5b5c3df0-b010-4cb8-b28d-73d24b81eab0&oauth_callback=http%3a%2f%2flocalhost%3a8000%2ftomboy-web-sync%2f Data received: { Username: username, Password: password } 6004 [INFO ] Rainy.WebService.OAuth.OAuthAuthorizeService->Any - Successfully authorized user: username 6005 [DEBUG] Rainy.WebService.OAuth.OAuthAuthorizeService->Any - created an access token for user username: oauth_token=5b5c3df0-b010-4cb8-b28d-73d24b81eab0&oauth_token_secret=87c23d73-ddf5-4eaa-aed2-92187170a737&oauth_callback_confirmed=true 6005 [DEBUG] Rainy.WebService.OAuth.OAuthAuthorizeService->Any - redirecting user to consumer at: http://localhost:8000/tomboy-web-sync/?oauth_verifier=337ca466-7f30-4c7c-afbb-e137c1dc935e&oauth_token=5b5c3df0-b010-4cb8-b28d-73d24b81eab0 6263 [DEBUG] Rainy.WebService.RequestLogFilterAttribute->RequestFilter - Received request at: /oauth/access_token Data received: {

} 6266 [DEBUG] Rainy.WebService.OAuth.OAuthAccessTokenService->Any - permanently authorizting access token: oauth_token=263056ee-3303-4273-92d9-fd5190c2f392&oauth_token_secret=ff27860b-b89d-4e20-a57d-03e09577dc74

Dynalon commented 11 years ago

I think I found the problem, Rainy's current OAuth is limited to accepting parameters via query string, but it seems conboy uses HTTP POST (which is allowed by the OAuth specs) which is not yet implemented in Rainy (that what I could find out by the source of conboy at https://garage.maemo.org/plugins/scmsvn/viewcvs.php/conboy/trunk/conboy/src/conboy_oauth.c?view=markup)

I was aware of that while implementing the OAuth stuff and had made a note in the source: https://github.com/Dynalon/Rainy/blob/master/Rainy/WebService/OAuth/OAuthService.cs#L73

So this is a valid bug that I'd like to have fixed, but sorry I can't provide an ETA right now.

enekux commented 11 years ago

Hi Dynalon,

Rainy is working great between my workstations, but I am really missing the fact that I can't use it in my N900... are u planning to implement the code with support of HTTP POST in the near future?

Dynalon commented 11 years ago

I'm sorry, I don't know when this will be done. Right now all work goes towards making Rainy a public server with open registration, and there is lots of stuff missing for that. Fixing this bug would be especially hard since I can't reproduce. And since the N900/Maemo are rare devices, I can't tell when this bug gets fixed, sorry.

enekux commented 11 years ago

It's a pity :(

Would it be too difficult to implement this option? I don't have much experience in programation but maybe I could give it a try, do you have some ideas or recommendations of how could this be done? Thanks

Martinique commented 11 years ago

I'd like to see this working, too. Conboy is one of the reasons why I still use a N900, and Rainy may attract more N900/N9 users now that they must look for alternatives to U1 syncing.

enekux, have you tried contacting the Conboy developer or Maemo forum members? Perhaps it could be modified instead, replacing "POST" with "GET" in oauth_sign_url2 calls and possibly some http_post auth calls with http_get. My C skills are rusty, but I bet anyone with a bit more experience could make those changes, as Conboy's OAuth code seems quite simple.

enekux commented 11 years ago

Hi Martinique! I see that we share similar problem and I was planning to notify Conboy developers about this issue but I see that u have already done it, which is great. Thanks and let us keep informed about this issue.

enekux commented 10 years ago

Hi again,

I see you have a done a big progress with your project. Any chance to make it work with Conboy? You can use me for tests :)

Dynalon commented 10 years ago

I won't be doing Conboy support, but would of course accept it as a contribution. I personally consider it a "legacy" software as development on conboy seems to have halted and the device it runs (Meego based) have very low market share and tendency is more that it is going to be even fewer in the future.

elperepat commented 10 years ago

N900 might be old, but I'm one more user who would really appreciate to have conboy working with Rainy. I'll take a look myself, but I never touch C#.

cweiske commented 10 years ago

Conboy sync works with grauphel, the owncloud tomboy plugin. It supports POSTed oauth parameters. Maybe it could be an alternative for you.

Martinique commented 10 years ago

What a coincidence. Not long ago I started running OwnCloud and I was wondering if it could be used for note syncing. I'm going to need Tomdroid support and preferrably a web interface too, though, but I'll keep an eye on that project. Thanks for the tip, cweiske!