https://github.com/sigmasd/eltrafico
NetLimiter-like traffic shaping for Linux
https://github.com/sigmasd/eltrafico
bandwidth-limiting linux networking rust traffic-shaping
Last synced: over 1 year ago
JSON representation
NetLimiter-like traffic shaping for Linux
- Host: GitHub
- URL: https://github.com/sigmasd/eltrafico
- Owner: sigmaSd
- License: gpl-3.0
- Created: 2020-01-04T15:19:50.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2024-10-08T06:41:16.000Z (over 1 year ago)
- Last Synced: 2025-02-27T18:07:05.697Z (over 1 year ago)
- Topics: bandwidth-limiting, linux, networking, rust, traffic-shaping
- Language: Rust
- Homepage: https://crates.io/crates/eltrafico
- Size: 406 KB
- Stars: 20
- Watchers: 4
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Eltrafico
NetLimiter-like traffic shaping for Linux
This is a port of https://github.com/cryzed/TrafficToll to rust.
And a gui on top

With network usage:

The repo have the gtk frontend among others, other frontends can be written:
- [bandito](https://github.com/sigmaSd/bandito)
- Traffictoll: https://github.com/sigmaSd/Eltrafico/tree/master/frontend/traffictoll
The easiest one to test is bandito, since it provides appimages (that bundles all runtime dependencies) in the github ci
# Usage
`eltrafico`
# Howto
Choose the correct interface, and eltrafico will monitor it for active connections
Active program will automatically show up
Choose your limits then activate it by toggling the corresponding checkbox on.
If [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
You can run eltrafico with `--advanced` flag to get more options in the gui
## Technical details
Eltrafico is split on 2 crates that communicate through stdin/out:
1- `crates/gui`: create gui and call `bandwhich`/`nethogs` and `eltrafico_tc` as privileged process using pkexec
2- `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
This allows to run the gui as a normal user, and ask for higher privilege only for `eltrafico_tc` and `bandwhich`/`nethogs` binaries
`eltrafico_tc` needs to be in `$PATH` or you can specify a custom path via `--eltrafico-tc $path_to_binary`
**pkexec usage:**
- pkexec eltrafico_tc
- pkexec bandhwich
- pkexec nethogs
- pkexec pkill nethogs
- pkexec pkill bandwhich
## Hacking tips
When developping make sure to use env `RUST_LOG=debug`
## Current State
Works on my pc (TM)
## Dependencies
- `iproute2`
**optional:**
- [nethogs](https://github.com/raboof/nethogs)
- [bandwhich](https://github.com/imsnif/bandwhich)
## Binary Releases
- Automatic releases by github actions are uploaded here https://github.com/sigmaSd/eltrafico/releases
## Community Packages
- *Arch aur (by @fanzhuyifan)*: [eltrafico-git](https://aur.archlinux.org/packages/eltrafico-git)
## Installation
- needs gtk-dev: https://gtk-rs.org/docs/requirements.html
- cargo install eltrafico
## Building/Dev
- needs gtk-dev: https://gtk-rs.org/docs/requirements.html
- cargo b
- cargo r --bin gui -- --eltrafico-tc target/debug/eltrafico_tc
Its a good idea to set `RUST_LOG=trace` when devoloping
## [Changelog](./CHANGELOG.md)