diff --git a/.all-contributorsrc b/.all-contributorsrc index 87342cd8..e56df8da 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -630,6 +630,15 @@ "design", "a11y" ] + }, + { + "login": "domcyrus", + "name": "Marco Cadetg", + "avatar_url": "https://avatars.githubusercontent.com/u/884083?v=4", + "profile": "https://github.com/domcyrus", + "contributions": [ + "platform" + ] } ], "contributorsPerLine": 7, diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..50d4dff2 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,16 @@ +# Ignore everything +* + +# Explicitly allow files +!src/**/*.rs +!build.rs +!Cargo.toml +!Cargo.lock +!Dockerfile +!services.txt +!resources/countries_flags/**/*.svg +!resources/DB/*.mmdb +!resources/fonts/subset/*.ttf +!resources/logos/raw/icon.png +!resources/packaging/windows/graphics/sniffnet.ico +!resources/sounds/*.mp3 diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml new file mode 100644 index 00000000..35afb8d6 --- /dev/null +++ b/.github/workflows/docker.yml @@ -0,0 +1,42 @@ +name: Docker + +on: + workflow_dispatch: + +jobs: + docker: + name: Docker Build + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Extract version from Cargo.toml + id: cargo-version + run: | + VERSION=v$(grep -m1 "^version" Cargo.toml | cut -d'"' -f2) + echo "VERSION=$VERSION" >> $GITHUB_ENV + echo "version=$VERSION" >> $GITHUB_OUTPUT + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: GyulyVGC + password: ${{ secrets.GHCR_TOKEN }} + + - name: Build and push + uses: docker/build-push-action@v5 + with: + context: . + platforms: linux/amd64,linux/arm64 + push: true + tags: | + ghcr.io/gyulyvgc/sniffnet:latest + ghcr.io/gyulyvgc/sniffnet:${{ env.VERSION }} diff --git a/.gitignore b/.gitignore index 05386a8f..fe36f504 100644 --- a/.gitignore +++ b/.gitignore @@ -55,6 +55,5 @@ $RECYCLE.BIN/ *.lnk ### Custom... ### -Dockerfile lcov.info -*.pcap \ No newline at end of file +*.pcap diff --git a/CHANGELOG.md b/CHANGELOG.md index 15bf1df7..3425ac85 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ All Sniffnet releases with the relative changes are documented in this file. - Show data agglomerates in _Inspect_ page table ([#684](https://github.com/GyulyVGC/sniffnet/pull/684) โ€” fixes [#601](https://github.com/GyulyVGC/sniffnet/issues/601)) - Added Traditional Chinese (Taiwan) translation ๐Ÿ‡น๐Ÿ‡ผ ([#774](https://github.com/GyulyVGC/sniffnet/pull/774)) - Added Indonesian translation ๐Ÿ‡ฎ๐Ÿ‡ฉ ([#611](https://github.com/GyulyVGC/sniffnet/pull/611)) +- A Docker image of Sniffnet is now available ([#735](https://github.com/GyulyVGC/sniffnet/pull/735)) - Updated some of the existing translations to v1.3: - Portuguese ([#690](https://github.com/GyulyVGC/sniffnet/pull/690)) - Ukrainian ([#692](https://github.com/GyulyVGC/sniffnet/pull/692)) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 47fc150f..6ff792aa 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -51,42 +51,43 @@ A big shout-out to all the contributors of Sniffnet ([emoji key](https://allcont Marc Gavilรกn
Marc Gavilรกn

๐ŸŒ + Marco Cadetg
Marco Cadetg

๐Ÿ“ฆ Matthias Braun
Matthias Braun

๐Ÿ“– Michel Hansma
Michel Hansma

๐ŸŽจ ๏ธ๏ธ๏ธ๏ธโ™ฟ๏ธ Morgan Hill
Morgan Hill

๐Ÿ›ก๏ธ Muhammadali Hakimov
Muhammadali Hakimov

๐ŸŒ Oleksii Filonenko
Oleksii Filonenko

๐ŸŒ Orhun Parmaksฤฑz
Orhun Parmaksฤฑz

๐Ÿ“– ๐Ÿ“ฆ ๐Ÿ’ต - Peter Dave Hello
Peter Dave Hello

๐ŸŒ + Peter Dave Hello
Peter Dave Hello

๐ŸŒ Phil Clifford
Phil Clifford

๐Ÿ“ฆ Quetzal-coalt
Quetzal-coalt

๐ŸŒ Safaraliev Maxim
Safaraliev Maxim

๐ŸŒ Shawn Yeager
Shawn Yeager

๐Ÿ’ต The Artifex
The Artifex

๐ŸŒ ๐Ÿ“ฆ Trแป‹nh Duy Hฦฐng
Trแป‹nh Duy Hฦฐng

๐ŸŒ - TyseEX
TyseEX

๐Ÿ› + TyseEX
TyseEX

๐Ÿ› Victor Nilsson
Victor Nilsson

๐ŸŒ Wang Zishi
Wang Zishi

๐ŸŒ Yevhen
Yevhen

๐ŸŒ ZEROF
ZEROF

๐Ÿ’ต ZeroDot1
ZeroDot1

๐ŸŽจ ๏ธ๏ธ๏ธ๏ธโ™ฟ๏ธ clr
clr

๐Ÿ“– ๐ŸŒ - ervinpopescu
ervinpopescu

๐ŸŒ + ervinpopescu
ervinpopescu

๐ŸŒ glitsj16
glitsj16

๐Ÿ“ฆ guilherme-demarchi
guilherme-demarchi

๐ŸŒ hirotake111
hirotake111

๐ŸŒ luca3s
luca3s

๐ŸŒ pia
pia

๐ŸŒ pin
pin

๐Ÿ“ฆ - shu-kitamura
shu-kitamura

๐Ÿ’ป + shu-kitamura
shu-kitamura

๐Ÿ’ป starccy
starccy

๐Ÿ’ป tiansheng li
tiansheng li

๐Ÿ’ต vtiinanen
vtiinanen

๐ŸŒ diff --git a/Cargo.lock b/Cargo.lock index 7abf03a6..e2d5e6ec 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -647,9 +647,9 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" -version = "0.4.40" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c" +checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" dependencies = [ "android-tzdata", "iana-time-zone", @@ -828,7 +828,7 @@ dependencies = [ "directories", "serde", "thiserror 1.0.69", - "toml 0.8.20", + "toml 0.8.22", ] [[package]] @@ -4715,7 +4715,7 @@ dependencies = [ "serde_test", "serial_test", "splines", - "toml 0.8.20", + "toml 0.8.22", "winres", ] @@ -5153,9 +5153,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.20" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148" +checksum = "05ae329d1f08c4d17a59bed7ff5b5a769d062e64a62d34a3261b219e62cd5aae" dependencies = [ "serde", "serde_spanned", @@ -5165,26 +5165,33 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.22.24" +version = "0.22.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" +checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e" dependencies = [ "indexmap", "serde", "serde_spanned", "toml_datetime", + "toml_write", "winnow", ] +[[package]] +name = "toml_write" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfb942dfe1d8e29a7ee7fcbde5bd2b9a25fb89aa70caea2eba3bee836ff41076" + [[package]] name = "tower" version = "0.5.2" diff --git a/Cargo.toml b/Cargo.toml index 6550c1f1..33f5d07a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -39,7 +39,7 @@ strip = true [dependencies] pcap = "2.2.0" etherparse = "0.18.0" -chrono = { version = "0.4.40", default-features = false, features = ["clock"] } +chrono = { version = "0.4.41", default-features = false, features = ["clock"] } plotters = { version = "0.3.7", default-features = false, features = ["area_series", "line_series"] } iced = { version = "0.13.1", features = ["tokio", "svg", "advanced", "lazy", "image"] } plotters-iced = "0.11.0" @@ -48,7 +48,7 @@ confy = "0.6.1" serde = { version = "1.0.219", default-features = false, features = ["derive"] } rodio = { version = "0.20.1", default-features = false, features = ["mp3"] } dns-lookup = "2.0.4" -toml = "0.8.20" +toml = "0.8.22" ctrlc = { version = "3.4.6", features = ["termination"] } rfd = "0.15.3" phf = "0.11.3" diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..ad96da93 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,34 @@ +FROM rust:1.85-slim AS builder + +# Install build dependencies for both X11 and Wayland +RUN apt-get update && apt-get install -y \ + libfreetype6-dev \ + libexpat1-dev \ + libpcap-dev \ + libasound2-dev \ + libfontconfig1-dev \ + libgtk-3-dev \ + pkg-config \ + && rm -rf /var/lib/apt/lists/* + +WORKDIR /usr/src/sniffnet +COPY . . + +RUN cargo build --release + +# Runtime stage +FROM debian:bookworm-slim + +# Install runtime dependencies for both X11 and Wayland +RUN apt-get update && apt-get install -y \ + libfreetype6 \ + libexpat1 \ + libpcap0.8 \ + libasound2 \ + libfontconfig1 \ + libgtk-3-0 \ + && rm -rf /var/lib/apt/lists/* + +COPY --from=builder /usr/src/sniffnet/target/release/sniffnet /usr/local/bin/sniffnet + +ENTRYPOINT ["sniffnet"] diff --git a/README.md b/README.md index af0b231c..d8bb4c9a 100644 --- a/README.md +++ b/README.md @@ -64,113 +64,12 @@ Do you want to help the project in an alternative way? You can also head to the |         [64‑bit](https://github.com/GyulyVGC/sniffnet/releases/latest/download/Sniffnet_Windows_64-bit.msi) \| [32‑bit](https://github.com/GyulyVGC/sniffnet/releases/latest/download/Sniffnet_Windows_32-bit.msi)         | [Intel](https://github.com/GyulyVGC/sniffnet/releases/latest/download/Sniffnet_macOS_Intel.dmg) \| [Apple silicon](https://github.com/GyulyVGC/sniffnet/releases/latest/download/Sniffnet_macOS_AppleSilicon.dmg) | [amd64](https://github.com/GyulyVGC/sniffnet/releases/latest/download/Sniffnet_LinuxDEB_amd64.deb) \| [arm64](https://github.com/GyulyVGC/sniffnet/releases/latest/download/Sniffnet_LinuxDEB_arm64.deb) \| [i386](https://github.com/GyulyVGC/sniffnet/releases/latest/download/Sniffnet_LinuxDEB_i386.deb) \| [armhf](https://github.com/GyulyVGC/sniffnet/releases/latest/download/Sniffnet_LinuxDEB_armhf.deb) |         [x86_64](https://github.com/GyulyVGC/sniffnet/releases/latest/download/Sniffnet_LinuxRPM_x86_64.rpm) \| [aarch64](https://github.com/GyulyVGC/sniffnet/releases/latest/download/Sniffnet_LinuxRPM_aarch64.rpm)         | Links in the table above will download the latest version of Sniffnet directly from [GitHub releases](https://github.com/GyulyVGC/sniffnet/releases).
+Not what you're looking for? Check out [alternative installation methods](https://github.com/GyulyVGC/sniffnet/wiki/Alternative-installation-methods). > [!NOTE] > > Remember to also install the [required dependencies](https://github.com/GyulyVGC/sniffnet/wiki/Required-dependencies) for your operating system. -**Alternative installation methods** are reported in the following: - -
- - from Crates.io - -Follow this method only if you have [Rust installed](https://www.rust-lang.org/tools/install) on your machine.
-In this case, the application binary can be built and installed with: - -```sh -cargo install sniffnet --locked -``` - -
- - -
- - from Homebrew - - You can install [Sniffnet Homebrew package](https://github.com/Homebrew/homebrew-core/pkgs/container/core%2Fsniffnet) with: - - ```sh -brew install sniffnet -``` - -
- -
- - from Nixpkgs - - You can install [Sniffnet Nix package](https://search.nixos.org/packages?channel=23.05&show=sniffnet&from=0&size=50&sort=relevance&type=packages&query=sniffnet) adding the following Nix code to your NixOS Configuration, usually located in `/etc/nixos/configuration.nix`: - - ```nix - environment.systemPackages = [ - pkgs.sniffnet - ]; -``` - - Alternatively, you can install it in your home using [Home Manager](https://github.com/nix-community/home-manager) with: - - ```nix - home.packages = [ - pkgs.sniffnet - ]; -``` - - Alternatively, you can try it in a shell with: - ```sh -nix-shell -p sniffnet -``` - -
- -
- - on Arch Linux - - You can install Sniffnet community package via [pacman](https://wiki.archlinux.org/title/Pacman): - - ```sh -pacman -S sniffnet -``` - -
- -
- - on FreeBSD - -You can install Sniffnet port with: - - ```sh -pkg install sniffnet -``` - -
- -
- - on NetBSD - -You can install Sniffnet from the official repositories via [pkgin](https://pkgin.net): - - ```sh -pkgin install sniffnet -``` - -
-
- - on Tiny Core Linux - -You can install Sniffnet from the official repository with: - - ``` -tce-load -wi sniffnet -``` - -
- ## Features - ๐Ÿ’ป choose a **network adapter** of your PC to inspect