Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Documentation of Websocket API #116

Open
anoadragon453 opened this issue Nov 16, 2018 · 6 comments
Open

Documentation of Websocket API #116

anoadragon453 opened this issue Nov 16, 2018 · 6 comments

Comments

@anoadragon453
Copy link
Contributor

Not entirely sure if this is a large or small amount of work, but if I'm not mistaken, it should be possible to control ZeroNet's python daemon by speaking Websocket to it from places outside of the browser? Such as a C++ websockets library?

If so, some documentations of commands accepted by the Websockets server would be appreciated. I imagine they're very similar to those in the ZeroFrame API, but some guidance on the formatting for the actual Websocket request would most definitely be appreciated!

@HelloZeroNet
Copy link
Owner

HelloZeroNet commented Nov 16, 2018

Yes, it's totally possible. The commands are the same as ZeroFrame API. Here is an example, standalone client:

HelloZeroNet/ZeroNet#1137 (comment)

@anoadragon453
Copy link
Contributor Author

Very cool, thanks! I'll make a note about it in the docs somewhere.

This means we can make libraries for third-party programs to store data on ZeroNet, and then have that data be readable in a nice UI in the browser!

@anoadragon453
Copy link
Contributor Author

anoadragon453 commented Nov 23, 2018

Is it possible to retrieve a cert and change user to that cert entirely over the WebSocket API?

Edit: Would it possibly have to be a clearnet request for ZeroID?

Yes, it is!

@anoadragon453
Copy link
Contributor Author

Note: Document that IP's are accepted in v>XXX.

@anoadragon453
Copy link
Contributor Author

Note: Document how Multiuser uses cookies in the WebSocket handshake.

Example of a python2 script that can talk to the Multiuser plugin:

import urllib2
import re
import json
import time

import websocket

req = urllib2.Request("http://127.0.0.1:43110/1HeLLo4uzjaLetFx6NH3PMwFP3qbRbTf3D/", headers={"Accept" : "text/html"})
wrapper_body = urllib2.urlopen(req).read()
wrapper_key = re.search('wrapper_key = "(.*?)"', wrapper_body).group(1)
wrapper_nonce = re.search('wrapper_nonce = "(.*?)"', wrapper_body).group(1)

# 

ws = websocket.create_connection("ws://127.0.0.1:43110/Websocket?wrapper_key=%s" % wrapper_key,
        cookie="master_address=1JtHVmhWqmvK6KLbVcQ8RT2oEhW9TLAmRv")
ws.send(json.dumps({"cmd":"userLoginForm","params":{},"id":-2}))
res = ws.recv()
print res

@filips123
Copy link

@anoadragon453 I created ZeroFrame WebSocket API for JavaScript. I'm currently also creating clients for other languages. See HelloZeroNet/ZeroNet#1289 (comment) for details.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants