{"id":13587120,"url":"https://github.com/untitaker/mysteryshack","last_synced_at":"2025-03-16T21:31:07.517Z","repository":{"id":2472947,"uuid":"44990939","full_name":"untitaker/mysteryshack","owner":"untitaker","description":"A remoteStorage-server","archived":false,"fork":false,"pushed_at":"2023-04-03T19:25:05.000Z","size":1609,"stargazers_count":117,"open_issues_count":16,"forks_count":7,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-03-09T00:43:49.800Z","etag":null,"topics":["remotestorage","remotestorage-server","rust"],"latest_commit_sha":null,"homepage":"https://shack.unterwaditzer.net/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/untitaker.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2015-10-26T19:05:16.000Z","updated_at":"2025-03-02T05:26:04.000Z","dependencies_parsed_at":"2023-07-06T21:46:55.028Z","dependency_job_id":null,"html_url":"https://github.com/untitaker/mysteryshack","commit_stats":{"total_commits":382,"total_committers":2,"mean_commits":191.0,"dds":0.002617801047120394,"last_synced_commit":"7413ecc205568ac3ad0696411f6b9a55526546c6"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/untitaker%2Fmysteryshack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/untitaker%2Fmysteryshack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/untitaker%2Fmysteryshack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/untitaker%2Fmysteryshack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/untitaker","download_url":"https://codeload.github.com/untitaker/mysteryshack/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243830949,"owners_count":20354854,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["remotestorage","remotestorage-server","rust"],"created_at":"2024-08-01T15:06:01.978Z","updated_at":"2025-03-16T21:31:07.233Z","avatar_url":"https://github.com/untitaker.png","language":"Rust","funding_links":[],"categories":["Rust","rust"],"sub_categories":[],"readme":"# not maintained\n\nPlease see https://github.com/untitaker/mysteryshack/issues/74\n\n# mysteryshack [![Build Status](https://travis-ci.org/untitaker/mysteryshack.svg?branch=master)](https://travis-ci.org/untitaker/mysteryshack)\n\n\u003cimg src=\"https://shack.unterwaditzer.net/static/logo.svg\" width=120 height=120 /\u003e\n\nMysteryshack is a lightweight, yet self-contained\n[remoteStorage](http://remotestorage.io/)-server.\n\n***This project is still in active development. Do not use with sensitive data, or without backup.***\n\nUse username `demo` and password `demo` on [my\nserver](https://shack.unterwaditzer.net) to try it out. Don't use that account\nfor actual data though: It is reset daily.\n\n## Installation\n\nYou need [OpenSSL](https://openssl.org/) installed.\n\n* Install [Rust](https://www.rust-lang.org/) and [Cargo](https://crates.io/install).\n* Clone this repository.\n* Run `make`.\n* Stick `./target/release/mysteryshack` into your PATH.\n\n## Usage\n\n* Edit `config.example` and save it as `config`.\n* `mysteryshack user create foo` to create a new user called `foo`.\n* `mysteryshack serve` to run the server as configured in `./config`.\n\nFor advanced usage, see `mysteryshack --help` and `mysteryshack user --help`.\n\n## Updating\n\nJust `git pull` and `make` again.\n\n----\n\n## Troubleshooting\n\n### OS X and OpenSSL\n\nAs of OS X 10.11, OpenSSL isn't installed anymore. You'll need to install it manually:\n\n    brew install openssl\n    brew link --force openssl\n\n## Implementation notes\n\n* Mysteryshack mostly implements `draft-dejong-remotestorage-05.txt`, however:\n\n  - it sends two kinds of webfinger responses to stay compatible with\n    `remotestorage.js`.\n\n  - The app-provided `client_id` is ignored, Origin of `redirect_uri` is used\n    for app identification.\n\n* Mysteryshack is set up to be tested against the official [api test\n  suite](https://github.com/remotestorage/api-test-suite/) automatically (in\n  Travis).\n\n* Mysteryshack's approach to concurrency is very simplistic. Only storage\n  operations are safe to perform concurrently. User creation and deletion, app\n  authorization and de-authorization are not, because it is assumed that the\n  user performing those operations is a single human with only two hands and\n  one keyboard.\n\n* Web admin sessions are stored inside signed cookies. The key is generated at\n  server startup. To log everybody out, restart the server.\n\n* OAuth tokens are JSON signed with a per-user key. The server stores a list\n  of `client_id`s the user has authorized, and checks if the token's\n  `client_id` claim is found in that list.\n\n* Mysteryshack violates the WebFinger RFC by returning bogus information for\n  nonexistent accounts. This is done to prevent account enumeration.\n\n\n## License\n\n* Logo is licensed under\n  [CC-BY-SA](https://creativecommons.org/licenses/by-sa/3.0/), based on:\n\n  * [Rust logo, CC-BY](https://www.rust-lang.org/legal.html)\n\n  * [remoteStorage logo, CC-BY-SA](https://github.com/remotestorage/design)\n\n* Source code is licensed under the MIT, see `LICENSE`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funtitaker%2Fmysteryshack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Funtitaker%2Fmysteryshack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funtitaker%2Fmysteryshack/lists"}