{"id":20237816,"url":"https://github.com/aburdulescu/ez","last_synced_at":"2025-10-09T07:12:46.245Z","repository":{"id":57618392,"uuid":"295134503","full_name":"aburdulescu/ez","owner":"aburdulescu","description":"Easy to use cross-platform p2p file transfer tool for your local network","archived":false,"fork":false,"pushed_at":"2023-12-12T14:55:13.000Z","size":227,"stargazers_count":1,"open_issues_count":21,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-09-13T12:06:53.017Z","etag":null,"topics":["cross-platform","file-sharing","file-transfer","local-network","p2p","peer-to-peer"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aburdulescu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2020-09-13T11:12:27.000Z","updated_at":"2023-12-15T10:38:44.000Z","dependencies_parsed_at":"2024-06-20T12:03:24.598Z","dependency_job_id":null,"html_url":"https://github.com/aburdulescu/ez","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/aburdulescu/ez","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aburdulescu%2Fez","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aburdulescu%2Fez/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aburdulescu%2Fez/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aburdulescu%2Fez/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aburdulescu","download_url":"https://codeload.github.com/aburdulescu/ez/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aburdulescu%2Fez/sbom","scorecard":{"id":162027,"data":{"date":"2025-08-11","repo":{"name":"github.com/aburdulescu/ez","commit":"afbaca667f2f7d2353b856e00e775fb7d40c50ab"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.4,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":0,"reason":"license file not detected","details":["Warn: project does not have a license file"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: containerImage not pinned by hash: Dockerfile:1","Warn: containerImage not pinned by hash: Dockerfile:3","Warn: containerImage not pinned by hash: Dockerfile:18","Warn: containerImage not pinned by hash: dockerfiles/seeder/Dockerfile:1","Warn: containerImage not pinned by hash: dockerfiles/tracker/Dockerfile:1","Info:   0 out of   5 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 3 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-16T13:45:09.300Z","repository_id":57618392,"created_at":"2025-08-16T13:45:09.300Z","updated_at":"2025-08-16T13:45:09.300Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279000984,"owners_count":26082971,"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","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"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":["cross-platform","file-sharing","file-transfer","local-network","p2p","peer-to-peer"],"created_at":"2024-11-14T08:28:56.348Z","updated_at":"2025-10-09T07:12:46.212Z","avatar_url":"https://github.com/aburdulescu.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ez\n\nEasy to use cross-platform p2p file transfer tool for your local network.\n\n## Getting started\n\nThere are 4 types of entities that participate in the transfer of a file:\n\n- tracker(binary executable named `ezt`)\n- seeder(binary executable named `ezs`)\n- seeder client(binary executable named `ezl`)\n- client(binary executable named `ez`)\n\nThere needs to be one tracker and at least one seeder in order to start downloading files.\n\nThe tracker, as the name suggests, is responsible to track where the files are(i.e. it stores information about the seeders for each file)\nand to respond to queries from the client about the files.\n\nThe seeder has a list of files which it makes available for download and serves file chunks when requested by clients.\n\nThe seeder client manages the set of files which the seeder is responsible for.\n\nThe client lists the available files and downloads them if requested.\n\n\n### Install\n\n- [install golang](https://golang.org/doc/install)\n- download binaries:\n\n```\ngo get -ldflags=\"-s -w\" github.com/aburdulescu/ez/cmd/...\n```\n\n### Simple setup\n\nYou need at least 2 machines(containers, VMs, native).\n\nOne will be the client and the other will be the server(tracker+seeder).\n\n#### Machine1(server)\n\n- setup the tracker\n\nThis is simple, just run the binary `ezt`.\n\n- setup the seeder\n\nThe seeder needs some config flags when it's started:\n\n```\nUsage of ezs:\n  -dbpath string\n        path where the database is stored (default \"./seeder.db\")\n  -disable-log\n        disable logging\n  -seedaddr string\n        address to used by peers\n  -trackeraddr string\n        tracker address\n```\n\nWe need to provide `seedaddr` and `trackeraddr`, the rest will be left as default:\n\n```\nezs -seedaddr \"here goes the IP/name that is available to other machines\" -trackeraddr \"the IP/name of the tracker\"\n```\n\nIf, for example, Machine1 can be reached by the IP 192.168.0.10, the seedaddr will be 192.168.0.10 and\nthe trackeraddr can be 192.168.0.10 or localhost because the tracker is on the same machine.\n\n```\nezs -seedaddr 192.168.0.10 -trackeraddr localhost\n```\n\n- add files to seeder\n\n`ezl` is used for adding files.\n\nYou can add a file:\n\n`ezl add path_to_file`\n\nAnd then list the available files:\n\n`ezl ls`\n\nThis is the whole setup needed on the server machine.\n\n#### Machine2(client)\n\nFirst, you need to setup the tracker address:\n\n`ez tracker tracker_address`\n\nNow you can list the available files:\n\n`ez ls`\n\nAnd download one of them:\n\n`ez get file_id`\n\n### A more real setup\n\nWhen serving multiple big files, it would be best to have the tracker and the seeders on separate machines.\n\nAlso there needs to be more than one seeder for each file, otherwise there is no point in using this tool.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faburdulescu%2Fez","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faburdulescu%2Fez","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faburdulescu%2Fez/lists"}