{"id":17951959,"url":"https://github.com/tpaschalis/goof","last_synced_at":"2026-02-28T23:32:18.801Z","repository":{"id":111537570,"uuid":"152334060","full_name":"tpaschalis/goof","owner":"tpaschalis","description":"Go Offer File - Easily serve files and directories over a network; a Golang implementation of `woof`.","archived":false,"fork":false,"pushed_at":"2020-10-16T10:58:23.000Z","size":4725,"stargazers_count":25,"open_issues_count":2,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-05T00:03:03.773Z","etag":null,"topics":["cli","file-sharing","golang","lightweight"],"latest_commit_sha":null,"homepage":"","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/tpaschalis.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-10-09T23:21:04.000Z","updated_at":"2025-01-03T05:11:16.000Z","dependencies_parsed_at":null,"dependency_job_id":"1ff12fcc-f4a5-4554-84e1-af9ef6fb2ee6","html_url":"https://github.com/tpaschalis/goof","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/tpaschalis/goof","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tpaschalis%2Fgoof","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tpaschalis%2Fgoof/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tpaschalis%2Fgoof/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tpaschalis%2Fgoof/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tpaschalis","download_url":"https://codeload.github.com/tpaschalis/goof/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tpaschalis%2Fgoof/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29954968,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-28T22:53:01.873Z","status":"ssl_error","status_checked_at":"2026-02-28T22:52:50.699Z","response_time":90,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["cli","file-sharing","golang","lightweight"],"created_at":"2024-10-29T09:52:40.614Z","updated_at":"2026-02-28T23:32:18.769Z","avatar_url":"https://github.com/tpaschalis.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# goof\nAn implementation of Simon's wonderful `woof` [Python script](http://www.home.unix-ag.org/simon/woof.html) in Golang.\n\nIt's 2018 and serving a file over a network is [not as easy as it should be.](https://tpaschalis.github.io/excellent-software-woof/). The original script, as well as this Go command-line application try to provide a solution to this problem.\n\n\n## Usage\nThe binary can either serve a file/directory or itself to the specified IP and port. If a URL is provided, it will download from that URL.   \nThe help text is pretty straightforward and conveys the main idea.  \n```\n$ ./goof --help\n\nServes a single file \u003ccount\u003e times via http on port \u003cport\u003e, on IP address \u003cip_addr\u003e.\nIf a directory is specified, a .zip archive of that directory archive is served instead.\n\nIf started with an url as an argument, goof will act as a client, and will download and save the file in the current directory.\n\nUsage of ./goof:\n  -c int\n        -c \u003ccount\u003e.      How many times the file or directory will get served. (default 1)\n  -i string\n        -i \u003cip_addr\u003e.    The address to serve the file or directory from. (default \"127.0.0.1\")\n  -p string\n        -p \u003cport\u003e.       The port to serve the file or directory from. (default \"8080\")\n  -s    -s.              When specified, goof will distribute/serve itself\n\nCan only serve single files/directories\n```\n\n```\n$ ./goof myfile\nNow serving on http://127.0.0.1:8080/myfile\n# after file has been received on the other end\nExiting gracefully...\n\n$ ./goof http://ipv4.download.thinkbroadband.com:8080/10MB.zip\nDownload Progress : 10.0 MiB complete\n\nFile downloaded in: 4.531359s\n\n$ ./goof -s \nNow serving on http://127.0.0.1:8080/goof\n```\n\n\n## Installation \nThe code was developed using go `v1.9.7`, but should run on any non-totally-antiquated go version.  \nYou can clone the repository or download the `goof.go` source file and then `go build` it to get the executable binary, or `go install goof.go` to put in on your `$GOPATH/bin`.   \nTo access the binary from anywhere in your system, you can add its location to `$PATH`.  \n\n## ToDo List\n- Add test coverage\n- Make code more Golang-idiomatic\n- Document and port on other platforms.\n- Test throughput limits\n- Get feedback for future improvements\n\n## Feedback\nIt's my first Go code that I'm getting out in public, so criticism and improvement points are not only welcome, but encouraged. Feel free to open an issue, or send me an email!\n\n```\n                    __ \n                   / _|\n  ____  ___   ___ | |_ \n / _  |/ _ \\ / _ \\|  _|\n| (_| | (_) | (_) | |  \n \\__, |\\___/ \\___/|_|  \n  __/ |                \n |___/                 \n```\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftpaschalis%2Fgoof","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftpaschalis%2Fgoof","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftpaschalis%2Fgoof/lists"}