{"id":20002552,"url":"https://github.com/abhishekkr/dory","last_synced_at":"2025-05-04T15:34:20.586Z","repository":{"id":57577885,"uuid":"106917596","full_name":"abhishekkr/dory","owner":"abhishekkr","description":"secret sharing service with auto-expiry as default, doesn't need accounts","archived":false,"fork":false,"pushed_at":"2022-03-16T20:04:29.000Z","size":828,"stargazers_count":20,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-08T08:03:02.825Z","etag":null,"topics":["datastore","golang","secret","secret-sharing","secrets","service"],"latest_commit_sha":null,"homepage":"https://abhishekkr.github.io/dory/","language":"Go","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/abhishekkr.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-10-14T10:06:10.000Z","updated_at":"2023-05-08T14:40:35.000Z","dependencies_parsed_at":"2022-09-26T19:10:53.755Z","dependency_job_id":null,"html_url":"https://github.com/abhishekkr/dory","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abhishekkr%2Fdory","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abhishekkr%2Fdory/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abhishekkr%2Fdory/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abhishekkr%2Fdory/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abhishekkr","download_url":"https://codeload.github.com/abhishekkr/dory/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252356983,"owners_count":21735061,"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":["datastore","golang","secret","secret-sharing","secrets","service"],"created_at":"2024-11-13T05:22:10.226Z","updated_at":"2025-05-04T15:34:20.167Z","avatar_url":"https://github.com/abhishekkr.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"## dory\n\nShare your secret with a fish that have short term memory.\n\n\u003e * this is a secret sharing service for masses, where you don't need to be authenticated at service to store and share secret\n\u003e\n\u003e * anyone with access to service can upload a secret and share the token with people they wanna share it\n\u003e\n\u003e * if accessed without an explicit retention parameter, the secret gets purged on first fetch\n\u003e\n\u003e * if stored in `cache` mode, it self expires after a TTL if not accessed for that duration\n\u003e\n\u003e * even service admin can't decipher a secret posted by any user\n\n[![Go Report Card](https://goreportcard.com/badge/abhishekkr/dory)](https://goreportcard.com/report/abhishekkr/dory) [![Build Status](https://travis-ci.org/abhishekkr/dory.svg?branch=master)](https://travis-ci.org/abhishekkr/dory)\n\nquick try using docker [abhishekkr/dory:1.2-alpine](https://hub.docker.com/r/abhishekkr/dory/)\n\n[quick usage guide for dory server and client](https://abhishekkr.github.io/dory/usage)\n\nWhen you run `dory`, webserver by default will be available at [:8080](http://localhost:8080) and hosts [help document](http://localhost:8080/help) for quick overview.\n\n\nCurrent Features:\n\n* local-auth has 2 kind of datastores, non-persistent `cache` and persistent `disk`\n\n\u003e * both of these stores purge their entry on any fetch by default, unless asked to `keep=true` it further\n\u003e\n\u003e * `cache` store has extra expiry attached to it, for keys to self-delete if not accessed for TTL (default 300seconds)\n\u003e\n\u003e * `disk` store persists secrets which are resumable even after service restart\n\u003e\n\u003e * all secrets are stored post AES encryption with per secret unique token\n\u003e\n\u003e * every secret can only be deciphered by it's token which is returned as response of posting the secret, so if token is lost... so is data in secret\n\u003e\n\u003e * token is also required to delete the secret by normal users\n\n\n* admin tasks\n\n\u003e * listing of all the keys against which secrets are stored\n\u003e\n\u003e * purge one key, if by mistake wrong or undesired secret has been shared\n\u003e\n\u003e * purge all keys, for cleanup or in times of threat\n\u003e\n\u003e `just a reminder that value is not recoverable using Admin Token`\n\n\n* `/ping` api listing count of keys in cache and disk\n\n\n### Using\n\n* Managing simple secrets\n\n```\n## adding expirable secret file, life of 180sec if not read\nDORY_KEY=$(curl -skL -v -X POST -H \"Content-Type: multipart/form-data\" \\\n        -d@secret.json  \\\n        \"http://127.0.0.1:8080/local-auth/mysecret?ttlsecond=180\")\n\n## fetching secret, which expires on read\ncurl -skL -v --request GET -o secret.json  \\\n        --header \"X-DORY-TOKEN: ${DORY_KEY}\" \\\n        \"http://127.0.0.1:8080/local-auth/mysecret\"\n```\n\n\n* Support for big files which need multipart form-data\n\n```\nSECRET_FILE=\"mysecret.store\"\n\n## adding expirable secret file, life of 300sec if not read\nDORY_KEY=$(curl -skL -v -X POST -H \"Content-Type: multipart/form-data\" \\\n        -F \"form=@${SECRET_FILE}\" \\\n        \"http://127.0.0.1:8080/local-auth/${SECRET_FILE}?ttlsecond=300\u0026file-field=form\")\n\n## fetching secret, which expires on read\ncurl -skL -v --request GET -o secret.store  \\\n        --header \"X-DORY-TOKEN: ${DORY_KEY}\" \\\n        \"http://127.0.0.1:8080/local-auth/${SECRET_FILE}\"\n```\n\n---\n\n[developer's documentation](https://abhishekkr.github.io/dory/development)\n\n---\n\n![image of dory](w3assets/images/dory-1024px.jpg)\n\n---\n\n[MIT Licensed](./LICENSE)\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabhishekkr%2Fdory","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabhishekkr%2Fdory","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabhishekkr%2Fdory/lists"}