{"id":16646424,"url":"https://github.com/landhb/portal","last_synced_at":"2025-03-16T22:31:49.089Z","repository":{"id":42498825,"uuid":"296726999","full_name":"landhb/portal","owner":"landhb","description":"A Secure file transfer utility \u0026 library. The library utilizes SPAKE2 for key negotiation over an insecure channel, and ChaCha20Poly1305 Authenticated Encryption to encrypt the file with the derived shared symmetric key. This enables two peers to transfer a file over any channel without needing to trust the intermediary relay.","archived":false,"fork":false,"pushed_at":"2023-10-14T23:36:07.000Z","size":1927,"stargazers_count":23,"open_issues_count":2,"forks_count":3,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-02-27T15:03:43.562Z","etag":null,"topics":["chacha20-poly1305","file-sharing","file-transfer","rust","spake2","wormhole"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/landhb.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-09-18T20:49:09.000Z","updated_at":"2024-12-04T04:06:36.000Z","dependencies_parsed_at":"2023-02-08T12:31:22.158Z","dependency_job_id":null,"html_url":"https://github.com/landhb/portal","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/landhb%2Fportal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/landhb%2Fportal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/landhb%2Fportal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/landhb%2Fportal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/landhb","download_url":"https://codeload.github.com/landhb/portal/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243832255,"owners_count":20355074,"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":["chacha20-poly1305","file-sharing","file-transfer","rust","spake2","wormhole"],"created_at":"2024-10-12T08:27:34.375Z","updated_at":"2025-03-16T22:31:48.792Z","avatar_url":"https://github.com/landhb.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n## Portal  \n[![cargo-badge-lib][]][cargo-lib] [![docs-badge-lib][]][docs-lib] [![license-badge][]][license] [![rust-version-badge][]][rust-version] [![build][]][build-url] [![codecov][]][codecov-url]  \n\nSecurely \u0026 quickly transport your files.\n\n\n### Client Install \n[![cargo-badge-client][]][cargo-client] \n\nThe client binary can be installed via Cargo:\n\n```\ncargo install portal-client\n```\n\nOn the first run, a configuration file will be created in:\n\n|Platform | Value                                 | Example                                  |\n| ------- | ------------------------------------- | ---------------------------------------- |\n| Linux   | `$XDG_CONFIG_HOME` or `$HOME`/.config | /home/alice/.config/portal                     |\n| macOS   | `$HOME`/Library/Application Support   | /Users/Alice/Library/Application Support/portal |\n| Windows | `{FOLDERID_RoamingAppData}`           | C:\\Users\\Alice\\AppData\\Roaming\\portal           |\n\n\nNote: The default relay is `portal-relay.landhb.dev`. Your peer must connect to the same portal-relay as you. You can also host your own relay and change the value to any domain/IP address in your config.\n\n\nTo send a file: \n\n```bash\nportal send /path/to/file\n```\n\nTo receive a file:\n\n```bash\nportal recv\n```\n\n### Relay Install\n[![cargo-badge-relay][]][cargo-relay] \n\nIf you wish to run your own relay, you can install the binary on a server with:\n\n```\ncargo install portal-relay\n```\n\nNote: An example service file is included in the `relay/` directory.\n\n### Development:\n\nThe repo is a cargo workspace with the following directory structure:\n\n```\nlib/        # implementation of the protocol\nrelay/      # relay server source\nclient/     # client source\n```\n\nYou can run the binaries individually with:\n\n```\n# window 1\ncargo run --bin portal-relay\n\n# window 2\ncargo run --bin portal -- recv\n\n# window 3\ncargo run --bin portal -- send [FILE]\n```\n\n### Acknowledgements:\n\nThis tool was a quick early pandemic project to learn rust, and has similar ideas/functionality to Wormhole written by [Brian Warner](https://github.com/warner), he actually also contributed a large amount to the [RustCrypto project's SPAKE2 implementation](https://github.com/RustCrypto/PAKEs/tree/master/spake2) that Portal uses.\n\n\n[//]: # (badges)\n[license-badge]: https://img.shields.io/badge/license-MIT/Apache--2.0-lightgray.svg?style=flat-square\n[license]: #license\n[rust-version-badge]: https://img.shields.io/badge/rust-latest%20stable-blue.svg?style=flat-square\n[rust-version]: #rust-version-policy\n\n[cargo-badge-relay]: https://img.shields.io/crates/v/portal-relay.svg?style=flat-square\u0026label=portal-relay\n[cargo-relay]: https://crates.io/crates/portal-relay\n[cargo-badge-client]: https://img.shields.io/crates/v/portal-client.svg?style=flat-square\u0026label=portal-client\n[cargo-client]: https://crates.io/crates/portal-client\n[cargo-badge-lib]: https://img.shields.io/crates/v/portal-lib.svg?style=flat-square\u0026label=portal-lib\n[cargo-lib]: https://crates.io/crates/portal-lib\n\n[docs-badge-client]: https://docs.rs/portal-client/badge.svg?style=flat-square\n[docs-client]: https://docs.rs/portal-client\n[docs-badge-lib]: https://docs.rs/portal-lib/badge.svg?style=flat-square\n[docs-lib]: https://docs.rs/portal-lib\n\n[codecov]: https://img.shields.io/codecov/c/github/landhb/portal?style=flat-square\n[codecov-url]: https://codecov.io/gh/landhb/portal\n\n[build]: https://img.shields.io/github/actions/workflow/status/landhb/portal/build.yml?branch=main\u0026style=flat-square\n[build-url]: https://github.com/landhb/portal/actions?query=workflow%3ABuild\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flandhb%2Fportal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flandhb%2Fportal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flandhb%2Fportal/lists"}