{"id":16839254,"url":"https://github.com/sigmasd/eltrafico","last_synced_at":"2025-03-17T04:33:33.997Z","repository":{"id":57624501,"uuid":"231784147","full_name":"sigmaSd/Eltrafico","owner":"sigmaSd","description":"NetLimiter-like traffic shaping for Linux","archived":false,"fork":false,"pushed_at":"2024-10-08T06:41:16.000Z","size":416,"stargazers_count":20,"open_issues_count":1,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-02-27T18:07:05.697Z","etag":null,"topics":["bandwidth-limiting","linux","networking","rust","traffic-shaping"],"latest_commit_sha":null,"homepage":"https://crates.io/crates/eltrafico","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sigmaSd.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2020-01-04T15:19:50.000Z","updated_at":"2025-01-06T04:41:09.000Z","dependencies_parsed_at":"2024-09-16T17:57:01.226Z","dependency_job_id":"b821ca66-1283-4f46-82df-30536930983f","html_url":"https://github.com/sigmaSd/Eltrafico","commit_stats":{"total_commits":136,"total_committers":2,"mean_commits":68.0,"dds":"0.014705882352941124","last_synced_commit":"0b5d38af8f95972d2a9fd85d35dfe22c106f2813"},"previous_names":[],"tags_count":27,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigmaSd%2FEltrafico","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigmaSd%2FEltrafico/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigmaSd%2FEltrafico/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigmaSd%2FEltrafico/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sigmaSd","download_url":"https://codeload.github.com/sigmaSd/Eltrafico/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243842137,"owners_count":20356611,"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":["bandwidth-limiting","linux","networking","rust","traffic-shaping"],"created_at":"2024-10-13T12:30:28.954Z","updated_at":"2025-03-17T04:33:33.696Z","avatar_url":"https://github.com/sigmaSd.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Eltrafico\nNetLimiter-like traffic shaping for Linux\n\nThis is a port of https://github.com/cryzed/TrafficToll to rust.\n\nAnd a gui on top\n\n\u003cimg src=\"./gui.png\" width=\"70%\" height=\"70%\"\u003e\n\nWith network usage:\n\n\u003cimg src=\"./gui_with_network_usage.png\" width=\"70%\" height=\"70%\"\u003e\n\nThe repo have the gtk frontend among others, other frontends can be written:\n\n- [bandito](https://github.com/sigmaSd/bandito) \u003cimg width=\"70%\" height=\"70%\" src=\"https://user-images.githubusercontent.com/22427111/187526633-de317357-ce9f-4314-b721-27fa62e0e9ce.png\"/\u003e\n- Traffictoll: https://github.com/sigmaSd/Eltrafico/tree/master/frontend/traffictoll\n\nThe easiest one to test is bandito, since it provides appimages (that bundles all runtime dependencies) in the github ci\n\n# Usage\n`eltrafico`\n\n# Howto\nChoose the correct interface, and eltrafico will monitor it for active connections\n\nActive program will automatically show up\n\nChoose your limits then activate it by toggling the corresponding checkbox on.\n\nIf [bandwhich](https://github.com/imsnif/bandwhich) or [nethogs](https://github.com/raboof/nethogs) is installed on your system, `eltrafico` will use it automatically to show programs live network usage\n\nYou can run eltrafico with `--advanced` flag to get more options in the gui\n\n## Technical details\nEltrafico is split on 2 crates that communicate through stdin/out:\n\n1- `crates/gui`: create gui and call `bandwhich`/`nethogs` and `eltrafico_tc` as privileged process using pkexec\n\n2- `crates/tc`: traffic shaping, can be controlled via stdin, for the list of commands see (TODO)https://github.com/sigmaSd/Eltrafico/blob/sudo_isolation/src/eltrafico_tc/main.rs#L252 and (TODO)https://github.com/sigmaSd/Eltrafico/blob/sudo_isolation/src/eltrafico_tc/main.rs#L79\n\nThis allows to run the gui as a normal user, and ask for higher privilege only for `eltrafico_tc` and `bandwhich`/`nethogs` binaries\n\n`eltrafico_tc` needs to be in `$PATH` or you can specify a custom path via `--eltrafico-tc $path_to_binary`\n\n**pkexec usage:**\n\n- pkexec eltrafico_tc\n- pkexec bandhwich\n- pkexec nethogs\n- pkexec pkill nethogs\n- pkexec pkill bandwhich\n\n## Hacking tips\n\nWhen developping make sure to use env `RUST_LOG=debug`\n\n## Current State\nWorks on my pc (TM)\n\n## Dependencies\n - `iproute2`\n \n **optional:**\n - [nethogs](https://github.com/raboof/nethogs)\n - [bandwhich](https://github.com/imsnif/bandwhich)\n\n## Binary Releases\n- Automatic releases by github actions are uploaded here https://github.com/sigmaSd/eltrafico/releases\n\n## Community Packages\n\n- *Arch aur (by @fanzhuyifan)*: [eltrafico-git](https://aur.archlinux.org/packages/eltrafico-git)\n\n## Installation\n - needs gtk-dev: https://gtk-rs.org/docs/requirements.html\n - cargo install eltrafico\n \n## Building/Dev\n- needs gtk-dev: https://gtk-rs.org/docs/requirements.html\n- cargo b\n- cargo r --bin gui -- --eltrafico-tc target/debug/eltrafico_tc\n\nIts a good idea to set `RUST_LOG=trace` when devoloping\n\n## [Changelog](./CHANGELOG.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsigmasd%2Feltrafico","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsigmasd%2Feltrafico","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsigmasd%2Feltrafico/lists"}