Skip to content

A GUI viewer for saphics/ip-location-db ip-geolocation databases, which can display your computer's live network traffic and perform trace routes.

License

Notifications You must be signed in to change notification settings

grantshandy/ipmap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ipmap

Note

Old versions of ipmap are now located at grantshandy/ipmap-old.

This version of ipmap is not complete, but is nearly done. Release tarballs will be available soon.

A GUI viewer for saphics/ip-location-db ip-geolocation databases, which can display your computer's live network traffic and perform trace routes.

Search Capture Traceroute
search capture traceroute

Requirements

On Linux, install WebKitGTK.

Network Monitor

  • On Linux, install libpcap.
  • On Windows, install Npcap with network capture for non-administrator users.
  • On MacOS, libpcap is already installed.

Traceroute

On Windows, you must enable a firewall rule to send ICMP packets for the traceroute feature.

New-NetFirewallRule -DisplayName "ICMPv4 Ipmap Allow" -Name ICMPv4_IPMAP_ALLOW -Protocol ICMPv4 -Action Allow
New-NetFirewallRule -DisplayName "ICMPv6 Ipmap Allow" -Name ICMPv6_IPMAP_ALLOW -Protocol ICMPv6 -Action Allow

Enable-NetFirewallRule ICMPv4_IPMAP_ALLOW
Enable-NetFirewallRule ICMPv6_IPMAP_ALLOW

Building

Requirements:

 $ pnpm install -C ui
 $ cargo build --release --package ipmap-child
 $ cargo tauri build

Source Contents

  • /crates
    • /desktop - The main program entrypoint, starts tauri and generates Typescript IPC types.
    • /ipgeo - Data structures for representing ip-geolocation databases.
    • /ipgeo-state - UI state and methods for loading and switching ip-geolocation databases.
    • /pcap-dyn - Dynamic bindings to the libpcap C library, modeled after the pcap crate.
    • /pcap-state - UI state and command for packet capture.
    • /child - A separate child process (ipmap-child) for executing privileged features such as packet capture and traceroute.
    • /child-ipc - Shared types between pcap-state and ipmap-child for IPC and methods for executing ipmap-child.
  • /ui - The desktop UI, written with Svelte and Typescript.
flowchart TD
    subgraph ipmap["ipmap process"]
        subgraph backend["Rust Backend"]
            desktop -> ipgeo
        end

        frontend["Native WebView UI (Svelte)"] <--specta generated typescript IPC--> desktop
    end

    subgraph child["ipmap-child process"]
        trippy-core
        pcap-dyn
    end

    desktop <--child-ipc types--> child
Loading

TODO:

  • Check MacOS compatibility.
  • Improve logging.
  • Add database file association.
  • Find a new project name (?).
  • Animated demo in readme.
  • Light/dark mode with system. Try to match native UI?
  • Translate user interface.
  • Get default network interfaces with native APIs.
  • Add multi-lingual readmes (zh, es).
  • Remove public-ip-address bloated dependency, create our own solution.
  • Add settings dialog.
    • Different map layers?
    • Capture report frequency and connection timeout.
  • Reverse location-to-ip-block search
  • Location Heatmap generation (custom webview protocol that serves leaflet tiles?)
  • Set child permissions through UI

About

A GUI viewer for saphics/ip-location-db ip-geolocation databases, which can display your computer's live network traffic and perform trace routes.

Resources

License

Stars

Watchers

Forks

Releases

No releases published