No Description
Kieran Gibb e6b08d0a69
comment out state log (drive) test
2 years ago
app fix groups/replicators tests and update controllers to use injected api 2 years ago
docs update swagger docs 2 years ago
lib refactor to remove decorators 2 years ago
test comment out state log (drive) test 2 years ago
.gitignore beginnings of a groups depot / factory class 3 years ago
.gitmodules add the cli as an optional submodule 2 years ago
LICENSE add AGPL license 3 years ago
README.md readme 2 years ago
cobox-banner.js cheeky extra commit 2 years ago
index.js begin fixing tests 2 years ago
main.js remove stored mount, add process killer, remove existing mount directory 2 years ago
package.json 2.0.1 2 years ago
server.js remove stored mount, add process killer, remove existing mount directory 2 years ago
start.js move rimraf to main deps 2 years ago
util.js move helper code to util 2 years ago

README.md

cobox-server

A REST API for interacting with your cobox groups and replicator devices.

Check out our command line interface which will run this server for you. Check out cobox-cli.

Install

# if you just want the server code
git clone http://ledger-git.dyne.org:3000/CoBox/cobox-server

# if you want the cli too...
git clone --recursive http://ledger-git.dyne.org:3000/CoBox/cobox-server

npm start

Development

npm run dev:server

# to pass arguments, such as port (note the extra double dash)...
npm run dev:server -- --port 1234

Swagger docs are available at http://localhost:3000/api-docs.

Running cobox

:warning: this code is in flux so please note there is active development and things may change. That being said playing with shiny things is fun.

First you need to start the cobox server

npm start

This will launch a process which you can see by navigating in a browser to

http://localhost:3000

If you already have something running on port 3000 then you can run

npm start -- --port 1234

Great, you have a server running. In another terminal you can run (you can use any name you like)

npm cli groups create --name my-new-group

If you have been given an address and an encryption key for a group you want to join, you can create the group by adding the flags --address / -A, or --encryption-key or -k

npm cli groups create -n my-new-group -A b74717c149390c3e8e939f6e94169751d9ade8e2e21e0255ee593fdccb504603 -k 0e90565c93f742019f0956ce7da1c952df343dde4a2c48254fbbb9cbcd7d22be

You would then be able to see this new group by navigating to

http://localhost:3000/groups

You can see the list of other commands implemented here

cobox help

RESTful approach to our API

:warning: this is not yet stable

Verb Path Controller Action Comment
GET /groups groups.js#index list all groups
POST /groups/:id groups.js#create create a single group
POST /groups/:id/mount groups/mount.js#create mount a group
DELETE /groups/:id/mount groups/mount.js#destroy unmount a group
POST /groups/:id/sync groups/sync.js#create sync a group
DELETE /groups/:id/sync groups/sync.js#destroy unsync a group
GET /groups/:id/files groups/files.js#readdir list a group’s files
GET /groups/:id/files/:filename groups/files.js#readFile OR groups/files.js#createReadStream download / get a file
GET /settings settings.js#index list settings. Currently includes the public key needed for invite codes
PATCH /settings settings.js#update change settings e.g. name, mountdir, etc
GET /groups/:id/drive groups/drive.js#index get drive state / history
GET /admin/devices admin/devices.js#index list all coboxes devices we hold an admin passphrase for (get from config.yml)
GET /devices devices.js#index listen for locally broadcasting devices, send the pubKey to the front-end
POST /admin/devices/:id admin/devices.js#create using the broadcasted pubKey, send a request to save that device, store the passphrase in config.yml, send it back in response