TNT's Not Tunnel
Find a file
2025-08-28 13:33:00 +08:00
include Initial commit 2025-07-01 09:00:00 +08:00
src Initial commit 2025-07-01 09:00:00 +08:00
.gitignore Initial commit 2025-07-01 09:00:00 +08:00
CHANGELOG.md Minor fixes 2025-08-28 13:33:00 +08:00
commits.txt Initial commit 2025-07-01 09:00:00 +08:00
fix_year.sh Initial commit 2025-07-01 09:00:00 +08:00
LICENSE Initial commit 2025-07-01 09:00:00 +08:00
Makefile Initial commit 2025-07-01 09:00:00 +08:00
README.md Remove development timeline from README 2025-10-01 11:00:00 +08:00

TNT

TNT's Not Tunnel - A lightweight terminal chat server written in C

License Language

Features

  • Vim-style operations - INSERT/NORMAL/COMMAND modes
  • 📜 Message history - Browse with j/k keys
  • 🕐 Full timestamps - Year-month-day hour:minute with timezone
  • 📖 Bilingual help - Press ? for Chinese/English help
  • 🌏 UTF-8 support - Full support for Chinese, Japanese, Korean
  • 📦 Single binary - Lightweight ~50KB executable
  • 🚀 Telnet access - No client installation needed
  • 💾 Message persistence - All messages saved to log file
  • Low resource usage - Minimal memory and CPU

Building

make

For debug build:

make debug

Running

./tnt

Connect from another terminal:

telnet localhost 2222

Usage

Operating Modes

  • INSERT - Type and send messages (default)
  • NORMAL - Browse message history
  • COMMAND - Execute commands

Keyboard Shortcuts

INSERT Mode

  • ESC - Enter NORMAL mode
  • Enter - Send message
  • Backspace - Delete character
  • Ctrl+C - Exit

NORMAL Mode

  • i - Return to INSERT mode
  • : - Enter COMMAND mode
  • j - Scroll down (older messages)
  • k - Scroll up (newer messages)
  • g - Jump to top
  • G - Jump to bottom
  • ? - Show help
  • Ctrl+C - Exit

COMMAND Mode

  • Enter - Execute command
  • ESC - Cancel, return to NORMAL
  • Backspace - Delete character

Available Commands

  • list, users, who - Show online users
  • help, commands - Show available commands
  • clear, cls - Clear command output

Architecture

  • Network: Multi-threaded TCP server
  • TUI: ANSI escape sequences
  • Storage: Append-only log file
  • Concurrency: pthread + rwlock

Configuration

Set port via environment variable:

PORT=3333 ./tnt

Technical Details

  • Written in C11
  • POSIX-compliant
  • Thread-safe operations
  • Proper UTF-8 handling for CJK characters
  • Box-drawing characters for UI

License

MIT License - see LICENSE file