mirror of
https://github.com/m1ngsama/TNT.git
synced 2025-12-24 10:51:41 +00:00
TNT's Not Tunnel
- Allow SSH_AUTH_METHOD_NONE for passwordless authentication - Replace all \n with \r\n in TUI rendering for proper line breaks - Fixes messages appearing misaligned on terminal |
||
|---|---|---|
| include | ||
| src | ||
| .gitignore | ||
| CHANGELOG.md | ||
| commits.txt | ||
| fix_year.sh | ||
| LICENSE | ||
| Makefile | ||
| README.md | ||
TNT
TNT's Not Tunnel - A lightweight terminal chat server written in C
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 executable
- 🔒 SSH access - Secure encrypted connections
- 🖥️ Auto terminal detection - Adapts to your terminal size
- 💾 Message persistence - All messages saved to log file
- ⚡ Low resource usage - Minimal memory and CPU
Building
Dependencies:
- libssh (required for SSH support)
Install dependencies:
# On macOS
brew install libssh
# On Ubuntu/Debian
sudo apt-get install libssh-dev
# On Fedora/RHEL
sudo dnf install libssh-devel
Build:
make
For debug build:
make debug
Running
./tnt
Connect from another terminal:
ssh -p 2222 localhost
The server will prompt for a password (any password is accepted) and then ask for your username.
Usage
Operating Modes
- INSERT - Type and send messages (default)
- NORMAL - Browse message history
- COMMAND - Execute commands
Keyboard Shortcuts
INSERT Mode
ESC- Enter NORMAL modeEnter- Send messageBackspace- Delete characterCtrl+C- Exit
NORMAL Mode
i- Return to INSERT mode:- Enter COMMAND modej- Scroll down (older messages)k- Scroll up (newer messages)g- Jump to topG- Jump to bottom?- Show helpCtrl+C- Exit
COMMAND Mode
Enter- Execute commandESC- Cancel, return to NORMALBackspace- Delete character
Available Commands
list,users,who- Show online usershelp,commands- Show available commandsclear,cls- Clear command output
Architecture
- Network: Multi-threaded SSH server using libssh
- TUI: ANSI escape sequences with automatic terminal size detection
- Storage: Append-only log file
- Concurrency: pthread + rwlock
- Security: Encrypted SSH connections with host key authentication
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
- SSH protocol with PTY support for terminal size detection
- Dynamic window resize handling
Security
- Encrypted connections: All traffic is encrypted via SSH
- Host key authentication: RSA host key generated on first run
- Password authentication: Currently accepts any password (customize for production)
- Host key persistence: Stored in
host_keyfile - No plaintext: Unlike telnet, all data is encrypted in transit
License
MIT License - see LICENSE file