Skip to content

ktalanov/netgui

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Network Status Monitor

Version: v0.04 · Released: 2026-04-30 · License: MIT

⚠️ Use at your own risk. This software is provided as-is, with no warranty of any kind. See the License section below.


What does it do?

Network Status Monitor is a Linux host-analysis dashboard that gives you as much useful network information as possible about any IP address or hostname — directly from a graphical window or a terminal UI.

Point it at any target and it will:

  1. Resolve the hostname to an IP address (DNS A/AAAA lookup).
  2. Port-scan a configurable list of TCP ports and report each as OPEN, CLOSED, or FILTERED.
  3. Show per-port latency (response time in ms for open ports).
  4. Run DNS intelligence on every refresh:
    • nslookup + dig full output
    • Reverse PTR lookup when the target is an IP address
    • whois (registrar, expiry, nameservers) when the target is a domain name
  5. nmap integration — choose a scan type (Quick, Port, Service/Version, OS Detection, Full) and stream live output into the UI.
  6. Persistent history — every check is appended to ~/.local/share/nettest/log.txt.

It comes in two flavours so you can use whichever suits your situation:

Program Interface Best for
network-status Graphical window (GTK3) Desktop / KDE Plasma
network-status-tui Terminal UI (ncurses) SSH sessions, virtual consoles

Installing

1. Install the build tools

Open a terminal and run the command for the version(s) you want:

# GUI version only
pkexec dnf install gcc gtk3-devel

# Terminal version only
pkexec dnf install gcc ncurses-devel

# Both at once (recommended)
pkexec dnf install gcc gtk3-devel ncurses-devel

2. Build

./build.sh

build.sh automatically detects which libraries are installed and compiles accordingly. When it finishes you will see network-status and/or network-status-tui in the same folder.

3. Run

./network-status        # opens the graphical window
./network-status-tui    # runs in your current terminal

Using the GUI

  • The window opens and immediately begins checking your ports.
  • The Hostname field (top of window) is editable — type any IP or domain name and press Refresh.
  • Each port shows a green ✓ Open or red ✗ Closed label with latency.
  • DNS/WHOIS/PTR results appear in a scrollable pane below the port results.
  • Click Settings to add or remove ports, change the default hostname, or run a one-off single-port check.
  • Click nmap to run a guided nmap scan against the current hostname.
  • Click Refresh to re-run all checks without restarting the program.
  • Click OK (or close the window) to exit.

Using the terminal version

Key Action
r Refresh — re-run all checks + DNS lookups
e Edit hostname field
s Settings — add/remove ports, change default hostname
n nmap — choose scan type and run
a About — show version and license info
q Quit

The terminal UI resizes automatically when you resize your terminal window.


System requirements

  • Fedora Linux 41 or newer (tested on Fedora 43)
  • KDE Plasma / KWin on Wayland, or any terminal emulator for the TUI version
  • Build tools: gcc, gtk3-devel (GUI), ncurses-devel (TUI)

Version history

v0.03 — 2026-04-29

  • Per-port latency: OPEN ports show [Xms] response time.
  • Persistent check history appended to ~/.local/share/nettest/log.txt.
  • --nolog / --log flags to control history logging.
  • Last-check timestamp displayed in both GUI and TUI.
  • --ports CSV flag to override the default port list at runtime.
  • --host HOSTNAME flag to override the target hostname at runtime.
  • Settings JSON at ~/.config/nettest/settings.json — auto-created on first run, loaded at startup; CLI flags override config values.
  • Security fix: use-after-free on TUI quit eliminated (pthread_join + g_quit flag).
  • Security fix: mkdir now creates intermediate parent directories (~/.config, ~/.local/share) before the leaf nettest directory.

v0.02 — 2026-04-29

  • External IP cross-checked against ifconfig.me; ⚠ MISMATCH warning if the two sources disagree.
  • Raw TCP diagnostics: each CLOSED/FILTERED port now shows the POSIX error name (ECONNREFUSED, ETIMEDOUT, etc.).
  • --debug flag writes a timestamped debug.log with per-action results.
  • Internet diagnostics: if no connection is detected, pings 1.1.1.1 and checks ip addr to suggest a plain-English explanation.
  • TUI: pixel-accurate terminal resize via ioctl(TIOCGWINSZ) + resizeterm().
  • -h / --help flags, About dialog (GUI) and screen (TUI), 3-retry logic for filtered ports.
  • Security fixes: bounds-checked --tui path builder, Pango markup escaping for external IP data, sig_atomic_t for signal flag.

v0.01 — 2026-04-27 · Initial release

  • GTK3 GUI: external IP display, colour-coded port status, Refresh and Quit buttons.
  • ncurses TUI: same checks, resize-aware, r to refresh, a for About, q to quit.
  • Non-blocking TCP port tests with a 5-second timeout and correct OPEN/CLOSED/FILTERED detection.
  • DNS-based external IP resolution via leninlab.zapto.org.
  • Auto-detecting build script (build.sh) and Makefile.

Coming in v0.04

  • Editable Hostname field (GUI entry widget + TUI inline edit).
  • Settings dialog / screen: add/remove ports, set default hostname, configure timeout, named host presets.
  • Check Port: one-off single-port check from the Settings dialog.
  • DNS intelligence on every Refresh: nslookup, dig, reverse PTR (IPs) or whois (domains).
  • nmap button/key: scan-type selector, live streaming output.
  • Security hardening: O_NOFOLLOW on config files, startup config validation.
  • JSON result export (--output result.json).

License

MIT License — Copyright © 2026 Kirill Talanov kirill@talanov.ca

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

About

Network Status Monitor — GTK3 GUI and ncurses TUI for host/port analysis

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors