• Stars
    star
    112
  • Rank 312,240 (Top 7 %)
  • Language
    Rust
  • License
    MIT License
  • Created about 9 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A remoteStorage-server

not maintained

Please see #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

More Repositories

1

python-atomicwrites

Powerful Python library for atomic file writes.
Python
315
star
2

html5gum

A WHATWG-compliant HTML5 tokenizer and tag soup parser
Rust
137
star
3

quickenv

An unintrusive environment manager
Rust
124
star
4

hyperlink

Very fast link checker for CI.
Rust
112
star
5

rust-atomicwrites

Atomic file-writes.
Rust
81
star
6

spacemod

A easy to understand and powerful text search-and-replace tool
Rust
39
star
7

mastodon-bookmark-rss

A small app to let you connect your mastodon bookmarks to your RSS reader.
Rust
22
star
8

script-macro

Write simple proc-macros inline with other source code.
Rust
19
star
9

pytest-subtesthack

A hack to explicitly set up and tear down fixtures.
Python
17
star
10

shippai

Use Rust failures as Python exceptions
Python
16
star
11

rust-vobject

VObject parser and generator for Rust
Rust
15
star
12

pytest-fixture-typecheck

A pytest plugin to assert type annotations at runtime.
Python
12
star
13

python-sensitive-variables

strip local variables in tracebacks
Python
10
star
14

watdo

ABANDONED -- A task-manager for the command line.
Python
8
star
15

in-app-browser-framebreaker

HTML
6
star
16

taskrs

A tasks app
JavaScript
6
star
17

iron-login

ABANDONED Basic session management in Iron.
Rust
6
star
18

uberspace-deploy-scripts

Some deployment scripts for uberspace.de
Python
3
star
19

sentry-toolz

Python
3
star
20

python-structural-matching-benchmarks

Python
2
star
21

vdir

2
star
22

dotfiles

My dotfiles
Vim Script
2
star
23

rust-webicon

Favicon and apple-touch-icon scraper for Rust
Rust
2
star
24

fdwalk

Rust
2
star
25

memoria

A bad memory "profiler" for production.
Rust
2
star
26

bottom-import-demo

Python
1
star
27

diyrss

A simple feed generator website
Python
1
star
28

quicktype-markdown

Generate Markdown documentation from JSON schema, powered by quicktype
JavaScript
1
star
29

facebook-delete-messages

Userscript for Facebook Messages to replace the archive button with a delete button. Based on http://userscripts.org/scripts/show/106261
JavaScript
1
star
30

aoc2020

Python
1
star
31

firefox2pass

Migrate passwords from Firefox to passwordstore
Python
1
star
32

python-move-semantics

Python
1
star
33

gitgone

Rust
1
star
34

rust-fake-yield

Simple generators in Rust
Rust
1
star
35

untitaker

1
star
36

maildropper.py

Easy to use mail delivery agent
Python
1
star
37

serde-annotated

Rust
1
star