{"id":26166034,"url":"https://github.com/drduh/gone","last_synced_at":"2026-06-17T19:01:54.972Z","repository":{"id":280537850,"uuid":"942329361","full_name":"drduh/gone","owner":"drduh","description":"Ephemeral content server - share files, messages and more using command-line or a script-free interface.","archived":false,"fork":false,"pushed_at":"2026-06-14T00:00:00.000Z","size":678,"stargazers_count":14,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-06-14T02:07:09.199Z","etag":null,"topics":["ephemeral","file-server","file-share","file-sharing","go","golang","http","http-server","share","transfer","web-server"],"latest_commit_sha":null,"homepage":"https://drduh.github.io/gone/","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/drduh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":"audit/config.go","citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-03-04T00:02:20.000Z","updated_at":"2026-06-12T01:00:06.000Z","dependencies_parsed_at":"2026-04-28T05:00:48.892Z","dependency_job_id":"9d7ad5c9-08f5-4427-a8b5-986841b665f7","html_url":"https://github.com/drduh/gone","commit_stats":null,"previous_names":["drduh/gone"],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/drduh/gone","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drduh%2Fgone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drduh%2Fgone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drduh%2Fgone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drduh%2Fgone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/drduh","download_url":"https://codeload.github.com/drduh/gone/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drduh%2Fgone/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34461618,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-17T02:00:05.408Z","response_time":127,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["ephemeral","file-server","file-share","file-sharing","go","golang","http","http-server","share","transfer","web-server"],"created_at":"2025-03-11T16:28:24.924Z","updated_at":"2026-06-17T19:01:54.966Z","avatar_url":"https://github.com/drduh.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"gone is an ephemeral content server written in [Go](https://go.dev/).\n\nThe primary goal is to share files and text using an HTML interface and API.\n\n[![test](https://github.com/drduh/gone/actions/workflows/test.yml/badge.svg)](https://github.com/drduh/gone/actions/workflows/test.yml)\n[![lint](https://github.com/drduh/gone/actions/workflows/lint.yml/badge.svg)](https://github.com/drduh/gone/actions/workflows/lint.yml)\n[![gosec](https://github.com/drduh/gone/actions/workflows/gosec.yml/badge.svg)](https://github.com/drduh/gone/actions/workflows/gosec.yml)\n\n## Features\n\n- No disk storage (memory only) - content cleared on exit\n- No third-party dependencies - only Go required to build\n- No Javascript required to use HTML-based user interface\n- Share multiple files: upload, download and list feature\n- Files expire after number of downloads or time duration\n- Share plain-text messages and shared text area for edit\n- JSON-based configurations, logging and server responses\n- Token (string-based) authentication and request limiter\n\n# Development\n\ngone requires [Go](https://go.dev/doc/install) to develop.\n\n[Makefile](https://github.com/drduh/gone/blob/main/Makefile) provides functionality to build, run and test the application.\n\n## Build\n\n```bash\nmake build\n```\n\nBinaries are built to the `release` directory.\n\n## Run\n\n```bash\nmake run\n```\n\n## Debug\n\n```bash\nmake debug\n```\n\n## Install (Linux)\n\nInstall as a service on systemd Linux:\n\n```bash\nmake install\n```\n\n# Output\n\nOutput is in JSON format and can be parsed with `jq`:\n\n```bash\ngone | jq '.message'\n```\n\n# Configuration\n\n[Default settings](https://github.com/drduh/gone/blob/main/settings/defaultSettings.json) are embedded into the application. To configure, pass a modified settings file using `-config` or `-settings`:\n\n```bash\ngone -config mySettings.json\n```\n\nSet an empty handler path to disable it; for example, to turn off text features:\n\n```json\n\"paths\": {\n  \"message\": \"\",\n  \"wall\": \"\"\n```\n\n# Clients\n\nA basic HTML user interface is available at the `root` path (`/` by default) - [127.0.0.1:8080](http://127.0.0.1:8080/) when running locally.\n\nFeatures are also available using command-line programs such as curl:\n\n## Status\n\nGet server status:\n\n```bash\ncurl 127.0.0.1:8080/status\n```\n\nGet user request information:\n\n```bash\ncurl 127.0.0.1:8080/user\n```\n\n## Upload\n\nUpload file:\n\n```bash\ncurl 127.0.0.1:8080/upload -F \"file=@example.txt\"\n```\n\nUpload multiple files:\n\n```bash\ncurl 127.0.0.1:8080/upload -F \"file=@example1.txt\" -F \"file=@example2.txt\"\n```\n\nUpload file with 5 downloads allowed:\n\n```bash\ncurl 127.0.0.1:8080/upload -F \"downloads=5\" -F \"file=@example.txt\"\n```\n\nUpload file with 5 minute expiration:\n\n```bash\ncurl 127.0.0.1:8080/upload -F \"duration=5m\" -F \"file=@example.txt\"\n```\n\n## List\n\nList uploaded files:\n\n```bash\ncurl 127.0.0.1:8080/list\n```\n\n## Download\n\nDownload a file ([default settings](https://github.com/drduh/gone/blob/main/settings/defaultSettings.json) require token-based authentication):\n\n```bash\ncurl 127.0.0.1:8080/download/example.txt -H \"X-Auth: mySecret\"\n```\n\nGet static (never expires) content:\n\n```bash\ncurl 127.0.0.1:8080/static\n```\n\n## Message\n\nPost a plain-text message (use single quotes to wrap special characters):\n\n```bash\ncurl 127.0.0.1:8080/msg -d 'message=hello, world!'\n```\n\nGet message text only:\n\n```bash\ncurl 127.0.0.1:8080/msg | jq '.[].data'\n```\n\n## Wall\n\nPost multi-line text for shared edit:\n\n```bash\ncurl 127.0.0.1:8080/wall -F \"wall=$(cat /etc/resolv.conf)\"\n```\n\nGet shared multi-line text:\n\n```bash\ncurl 127.0.0.1:8080/wall | jq -r\n```\n\n## Random\n\nGet [random values](https://github.com/drduh/gone/blob/main/util/random.go) of certain type:\n\n```bash\ncurl 127.0.0.1:8080/random/\n\ncurl 127.0.0.1:8080/random/coin\n\ncurl 127.0.0.1:8080/random/hex\n\ncurl 127.0.0.1:8080/random/id\n\ncurl 127.0.0.1:8080/random/mask\n\ncurl 127.0.0.1:8080/random/name\n\ncurl 127.0.0.1:8080/random/nato\n\ncurl 127.0.0.1:8080/random/number\n\ncurl 127.0.0.1:8080/random/pass\n```\n\n## Functions\n\nSee [config/zshrc](https://github.com/drduh/config/blob/main/zshrc#L614) for alias and function examples, such as:\n\n```bash\n$ gonePut test.txt 3 30m\n[\n  {\n    \"id\": \"1J81kxgMK0JEJa5VpMb7AJJvwutwaq7bhV26xtEaFL4w\",\n    \"name\": \"test.txt\",\n    \"sum\": \"4dca0fd5f424a31b03ab807cbae77eb32bf2d089eed1cee154b3afed458de0dc\",\n    \"downloads\": {\n      \"allow\": 3\n    },\n    \"size\": \"14 bytes\",\n    \"type\": \"text/plain; charset=utf-8\",\n    \"owner\": {\n      \"address\": \"127.0.0.1:12345\",\n      \"mask\": \"Bob123\",\n      \"agent\": \"curl/8.7.1\"\n    },\n    \"time\": {\n      \"allow\": \"30m0s\",\n      \"upload\": \"2026-05-20T12:00:00.00000-00:00\"\n    }\n  }\n]\n```\n\n# Documentation\n\nApplication documentation is available with [godoc](https://go.dev/blog/godoc):\n\n```bash\nmake doc\n```\n\n# Testing\n\nTests and lint are validated with a [workflow](https://github.com/drduh/gone/blob/main/.github/workflows/test-and-lint.yml) on changes, or manually:\n\n```bash\nmake lint\n\nmake test\n\nmake test-verbose\n\nmake test-race\n```\n\nTest coverage is also available - to generate an HTML report as `testCoverage.html`:\n\n```bash\nmake cover\n```\n\n# Container\n\nThe application can run in a container using [`Dockerfile`](https://github.com/drduh/gone/blob/main/Dockerfile)\n\nOn macOS, using [apple/container](https://github.com/apple/container):\n\n```bash\nmake build-container\n\nmake run-container\n```\n\nGet the server IP address:\n\n```bash\ncontainer ls | grep gone | grep --color --text -Eo \"([0-9]{1,3}\\.){3}[0-9]{1,3}\"\n\ncurl 192.168.64.3:8080\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrduh%2Fgone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdrduh%2Fgone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrduh%2Fgone/lists"}