GitXplorerGitXplorer
u

mysteryshack

public
116 stars
6 forks
16 issues

Commits

List of commits on branch master.
Unverified
1d1ee84931f521c6857cf2738fd98adc373b031f

Cache libsodium in travis

uuntitaker committed 8 years ago
Unverified
728361831291e34dfd4f1c1b64c4ce10e60933ba

Install libsodium automatically

uuntitaker committed 8 years ago
Unverified
cedc85ad98d6f268491189551c42ed65cdb67e7d

Fix serialization bug

uuntitaker committed 8 years ago
Unverified
4865d06ebbb779ca56bf1fa8680b1214728f9b15

Switch to serde, fix #66

uuntitaker committed 8 years ago
Unverified
56d86ef99e96d9407941fb4a22fc9dea7707cc08

Fix handlebars bugs

uuntitaker committed 8 years ago
Unverified
baf3b86b00e5f0dfcb2606094e17c646c337c5d5

Update handlebars

uuntitaker committed 8 years ago

README

The README file for this repository.

not maintained

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

mysteryshack Build Status

Mysteryshack is a lightweight, yet self-contained remoteStorage-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 to try it out. Don't use that account for actual data though: It is reset daily.

Installation

You need OpenSSL installed.

  • Install Rust and Cargo.
  • 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 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_ids 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