{"id":13608115,"url":"https://github.com/Antonito/gfile","last_synced_at":"2025-04-12T14:32:00.938Z","repository":{"id":44163253,"uuid":"174478433","full_name":"Antonito/gfile","owner":"Antonito","description":"Direct file transfer over WebRTC","archived":false,"fork":false,"pushed_at":"2023-02-25T02:39:13.000Z","size":161,"stargazers_count":742,"open_issues_count":7,"forks_count":51,"subscribers_count":16,"default_branch":"master","last_synced_at":"2024-10-13T12:31:59.766Z","etag":null,"topics":["file-sharing","go","golang","peer-to-peer","peer2peer","webassembly","webrtc"],"latest_commit_sha":null,"homepage":"https://github.com/Antonito/gfile","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/Antonito.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}},"created_at":"2019-03-08T06:02:16.000Z","updated_at":"2024-10-08T18:20:34.000Z","dependencies_parsed_at":"2023-10-20T17:29:26.021Z","dependency_job_id":null,"html_url":"https://github.com/Antonito/gfile","commit_stats":{"total_commits":68,"total_committers":3,"mean_commits":"22.666666666666668","dds":0.02941176470588236,"last_synced_commit":"6fb075b468575d9b78bc8315094bd87941528121"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Antonito%2Fgfile","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Antonito%2Fgfile/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Antonito%2Fgfile/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Antonito%2Fgfile/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Antonito","download_url":"https://codeload.github.com/Antonito/gfile/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248581261,"owners_count":21128137,"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":["file-sharing","go","golang","peer-to-peer","peer2peer","webassembly","webrtc"],"created_at":"2024-08-01T19:01:24.388Z","updated_at":"2025-04-12T14:32:00.532Z","avatar_url":"https://github.com/Antonito.png","language":"Go","funding_links":[],"categories":["Misc","Software Packages","DataChannel","Go","Projects","软件包","Go Tools","Repositories","Go 工具","Other Software"],"sub_categories":["Other Software","File Transfer","其他软件","其他软件库和软件包"],"readme":"[![Build Status](https://travis-ci.org/Antonito/gfile.svg?branch=master)](https://travis-ci.org/Antonito/gfile)\n[![Go Report Card](https://goreportcard.com/badge/github.com/Antonito/gfile)](https://goreportcard.com/report/github.com/Antonito/gfile)\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/5888662aebd54d2681f9a737dfd33913)](https://www.codacy.com/app/Antonito/gfile?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=Antonito/gfile\u0026amp;utm_campaign=Badge_Grade)\n[![Coverage Status](https://coveralls.io/repos/github/Antonito/gfile/badge.svg?branch=master)](https://coveralls.io/github/Antonito/gfile?branch=master)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Mentioned in Awesome Go](https://awesome.re/mentioned-badge.svg)](https://github.com/avelino/awesome-go)  \n\n# GFile\n\ngfile is a WebRTC based file exchange software.\n\nIt allows to share a file directly between two computers, without the need of a third party.\n\n![ezgif-5-9936f8008e4d](https://user-images.githubusercontent.com/11705040/55694519-686e2d80-5969-11e9-9bc1-f7a59b62732f.gif)\n\n## Note\n\nThis project is still in its early stage.\n\n## How does it work ?\n\n![Schema](https://user-images.githubusercontent.com/11705040/55741923-4dd89a80-59e3-11e9-917c-daf9f08f164d.png)\n\nThe [STUN server](https://en.wikipedia.org/wiki/STUN) is only used to retrieve informations metadata (how to connect the two clients). The data you transfer with `gfile` **does not transit through it**.\n\n\u003e More informations [here](https://webrtc.org/)\n\n## Usage\n\n### Sender\n\n```bash\ngfile send --file filename\n```\n\n-   Run the command\n-   A base64 encoded [SDP](https://tools.ietf.org/html/rfc4566) will appear, send it to the remote client\n-   Follow the instructions to send the client's SDP to your process\n-   The file transfer should start\n\n### Receiver\n\n```bash\n# SDP being the base64 SDP gotten from the other client\necho \"$SDP\" | gfile receive -o filename\n```\n\n-   Pipe the other client's SDP to gfile\n-   A base64 encoded SDP will appear, send it to the remote client\n-   The file transfer should start\n\n### Benchmark\n\n`gfile` is able to benchmark the network speed between 2 clients (1 _master_ and 1 _slave_) with the `bench` command.\nFor detailed instructions, see `Sender` and `Receiver` instructions.\n\nThis feature is still an experiment.\n\n```bash\n# Run as 'master'\ngfile bench -m\n\n# Run as 'slave'\necho \"$SDP\" |  gfile bench\n```\n\n### Web Interface\n\nA web interface is being developed via WebAssembly. It is currently **not** working.\n\n### Debug\n\nIn order to obtain a more verbose output, it is possible to define the logging level via the `GFILE_LOG` environment variable.\n\n\u003e Example: `export GFILE_LOG=\"TRACE\"`\n\u003e See function `setupLogger` in  `main.go` for more information\n\n## Contributors\n\n-   Antoine Baché ([https://github.com/Antonito](https://github.com/Antonito)) **Original author**\n\nSpecial thanks to [Sean DuBois](https://github.com/Sean-Der) for his help with [pion/webrtc](https://github.com/pion/webrtc) and [Yutaka Takeda](https://github.com/enobufs) for his work on [pion/sctp](https://github.com/pion/sctp)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAntonito%2Fgfile","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAntonito%2Fgfile","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAntonito%2Fgfile/lists"}