A high-performance, secure, and modular BDIX (Bangladesh Internet Exchange) server monitoring tool written in modern C17. Features multithreaded server checking, real-time latency monitoring, and beautiful terminal UI.
- π Multithreaded Checking - Concurrent server testing with configurable thread pools
- π Real-time Monitoring - Live latency measurements and status updates
- π Markdown Export - Save successful check results to a file
- π¨ Beautiful UI - Color-coded terminal output with progress indicators
- π Security First - Input validation, bounds checking, and secure HTTP
- π¦ Modular Design - Clean separation of concerns for maintainability
- β‘ High Performance - Optimized C implementation with minimal overhead
- π§ͺ Well Tested - Comprehensive unit test coverage
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β main.c β
β (Entry Point) β
βββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββ΄βββββββββ¬ββββββββββββββ¬βββββββββββββ
β β β β
βββββββΌβββββββ ββββββββΌββββββ ββββββΌβββββ ββββββΌβββββ
β ui.c β β config.c β βserver.c β βchecker.cβ
β (Display) β β (Loader) β β (Data) β β (HTTP) β
ββββββββββββββ ββββββββββββββ βββββββββββ βββββββ¬ββββ
β
ββββββββΌββββββββββ
β thread_pool.c β
β (Concurrency) β
ββββββββββββββββββ
- GCC >= 9.0 or Clang >= 10.0
- libcurl >= 7.68.0
- jansson >= 2.13
- pthread (POSIX threads)
sudo apt update
sudo apt install build-essential libcurl4-openssl-dev libjansson-devsudo dnf install gcc make libcurl-devel jansson-develbrew install curl janssongit clone https://github.com/fam007e/bdix-server-monitor.git
cd bdix-server-monitormake./bin/bdix-monitorOr install system-wide:
sudo make install
bdix-monitorβ― ./bdix-monitor
[INFO] Checker subsystem initialized
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β BDIX SERVER MONITOR - SECURE C EDITION β
β Multithreaded FTP, TV, and Media Server Tester β
β Version 1.0.0 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
[INFO] Server data initialized successfully
[WARN] File does not exist: data/server.json
[INFO] Found configuration at: ../data/server.json
[INFO] Loading servers from: ../data/server.json
[INFO] Loading configuration from: ../data/server.json
[INFO] Successfully loaded 891 servers from configuration
[SUCCESS] Loaded: 596 FTP, 80 TV, 215 other servers
βββββββββββββββββββββ MENU βββββββββββββββββββ
β 1. Check FTP Servers β
β 2. Check TV Servers β
β 3. Check Other Servers β
β 4. Check All Servers β
β 5. Set Thread Count (Current: 15) β
β 6. Toggle Show Only OK (Current: OFF) β
β 7. Server Statistics β
β 8. Reload Configuration β
β 9. Save Results to Markdown β
β 0. Exit β
ββββββββββββββββββββββββββββββββββββββββββββββ
Enter choice: 0
[SUCCESS] Exiting... Goodbye!
[INFO] Checker subsystem cleaned upThis will launch an interactive menu in your terminal. Use the arrow keys or number keys to navigate.
- Options 1-4: Check servers.
- Option 9: Save Results to Markdown. This will export the list of currently ONLINE servers to a timestamped file (e.g.,
bdix_results_20251215_120000.md).
bdix-monitor [OPTIONS]
Options:
-c, --config FILE Use custom config file (default: data/server.json)
-t, --threads NUM Number of threads (1-64, default: 15)
-f, --ftp Check only FTP servers
-v, --tv Check only TV servers
-o, --others Check only other servers
-a, --all Check all servers (default)
-q, --quiet Show only successful checks
-n, --no-color Disable colored output
-i, --interactive Start in interactive mode (default)
-s, --stats Show statistics only
-h, --help Show this help message
-V, --version Show version information# Check all servers with 32 threads
bdix-monitor --threads 32
# Check only FTP servers, show only successful
bdix-monitor --ftp --quiet
# Use custom config file
bdix-monitor --config /path/to/servers.jsonCreate data/server.json:
{
"ftp": [
"http://ftp.amigait.com",
"http://ftp.dhakacom.net",
"http://ftp.circleftp.net"
],
"tv": [
"http://tv.bdix.app",
"http://iptv.live.net.bd"
],
"others": [
"http://cache.google.com",
"http://mirror.dhakacom.com"
]
}make debugmake tests
make checkmake formatmake analyzeContributions are welcome! Please read CONTRIBUTING.md first.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Typical performance on modern hardware:
- 100 servers: ~2-5 seconds (15 threads)
- 500 servers: ~10-15 seconds (32 threads)
- Memory usage: ~2-5 MB
- Thread overhead: Minimal with thread pool
- Input validation on all user inputs
- Bounds checking on arrays and buffers
- SSL/TLS verification enabled
- No arbitrary code execution
- Safe string operations (no strcpy/sprintf)
- Memory sanitization on cleanup
This project is licensed under the MIT License - see the LICENSE file for details.
- Original Python version: 0xAhmadYousuf/BDIX
- Inspired by the BDIX community in Bangladesh
- Built with β€οΈ for network administrators
- Maintainer: fam007e
- Email: email
- Issues: GitHub Issues
- Discussions: GitHub Discussions