Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/untitaker/mysteryshack

A remoteStorage-server
https://github.com/untitaker/mysteryshack

remotestorage remotestorage-server rust

Last synced: 17 days ago
JSON representation

A remoteStorage-server

Awesome Lists containing this project

README

        

# not maintained

Please see https://github.com/untitaker/mysteryshack/issues/74

# mysteryshack [![Build Status](https://travis-ci.org/untitaker/mysteryshack.svg?branch=master)](https://travis-ci.org/untitaker/mysteryshack)

Mysteryshack is a lightweight, yet self-contained
[remoteStorage](http://remotestorage.io/)-server.

***This project is still in active development. Do not use with sensitive data, or without backup.***

Use username `demo` and password `demo` on [my
server](https://shack.unterwaditzer.net) to try it out. Don't use that account
for actual data though: It is reset daily.

## Installation

You need [OpenSSL](https://openssl.org/) installed.

* Install [Rust](https://www.rust-lang.org/) and [Cargo](https://crates.io/install).
* Clone this repository.
* Run `make`.
* Stick `./target/release/mysteryshack` into your PATH.

## Usage

* Edit `config.example` and save it as `config`.
* `mysteryshack user create foo` to create a new user called `foo`.
* `mysteryshack serve` to run the server as configured in `./config`.

For advanced usage, see `mysteryshack --help` and `mysteryshack user --help`.

## Updating

Just `git pull` and `make` again.

----

## Troubleshooting

### OS X and OpenSSL

As of OS X 10.11, OpenSSL isn't installed anymore. You'll need to install it manually:

brew install openssl
brew link --force openssl

## Implementation notes

* Mysteryshack mostly implements `draft-dejong-remotestorage-05.txt`, however:

- it sends two kinds of webfinger responses to stay compatible with
`remotestorage.js`.

- The app-provided `client_id` is ignored, Origin of `redirect_uri` is used
for app identification.

* Mysteryshack is set up to be tested against the official [api test
suite](https://github.com/remotestorage/api-test-suite/) automatically (in
Travis).

* Mysteryshack's approach to concurrency is very simplistic. Only storage
operations are safe to perform concurrently. User creation and deletion, app
authorization and de-authorization are not, because it is assumed that the
user performing those operations is a single human with only two hands and
one keyboard.

* Web admin sessions are stored inside signed cookies. The key is generated at
server startup. To log everybody out, restart the server.

* OAuth tokens are JSON signed with a per-user key. The server stores a list
of `client_id`s the user has authorized, and checks if the token's
`client_id` claim is found in that list.

* Mysteryshack violates the WebFinger RFC by returning bogus information for
nonexistent accounts. This is done to prevent account enumeration.

## License

* Logo is licensed under
[CC-BY-SA](https://creativecommons.org/licenses/by-sa/3.0/), based on:

* [Rust logo, CC-BY](https://www.rust-lang.org/legal.html)

* [remoteStorage logo, CC-BY-SA](https://github.com/remotestorage/design)

* Source code is licensed under the MIT, see `LICENSE`.