mirror of
https://github.com/m1ngsama/TNT.git
synced 2026-02-08 00:54:03 +00:00
TNT's Not Tunnel
Replace deprecated message-based authentication and channel APIs with modern callback-based server implementation (libssh 0.9+). Changes: - Replace ssh_message_auth_password with auth_password_function callback - Replace ssh_message_channel_request_pty_* with channel_pty_request_function - Remove #pragma GCC diagnostic ignored "-Wdeprecated-declarations" - Implement session_context_t to pass state between callbacks - Fix event loop to wait for auth, channel open, AND channel ready (PTY/shell/exec) Key improvements: - Eliminates message loop complexity (libssh handles state machine) - Proper handling of SSH exec requests (e.g., "ssh host exit") - More maintainable and future-proof code Testing: - All tests passing (17/17) - Basic functionality: 3/3 - Anonymous access: 2/2 - Security features: 11/11 - Stress test: pass This closes the maintenance debt listed in TODO.md and ensures compatibility with future libssh versions. |
||
|---|---|---|
| .github/workflows | ||
| include | ||
| scripts | ||
| src | ||
| tests | ||
| .gitignore | ||
| ANONYMOUS_ACCESS_SUMMARY.md | ||
| CHANGELOG.md | ||
| CICD.md | ||
| DEPLOYMENT.md | ||
| EASY_SETUP.md | ||
| HACKING | ||
| IMPLEMENTATION_SUMMARY.txt | ||
| install.sh | ||
| LICENSE | ||
| Makefile | ||
| QUICKREF | ||
| README | ||
| README.md | ||
| SECURITY_QUICKREF.md | ||
| TEST_RESULTS.md | ||
| tnt.service | ||
| TODO.md | ||
TNT
Terminal chat server. Vim-style interface. SSH-based.
Install
curl -sSL https://raw.githubusercontent.com/m1ngsama/TNT/main/install.sh | sh
Or download from releases.
Run
tnt # port 2222
tnt -p 3333 # custom port
PORT=3333 tnt # env var
Connect: ssh -p 2222 localhost
Anonymous Access: By default, users can connect with ANY username and ANY password (or empty password). No SSH keys required. This makes TNT perfect for public chat servers.
Security
Configure via environment variables.
Access Control
TNT_ACCESS_TOKEN="secret" tnt # require password
TNT_BIND_ADDR=127.0.0.1 tnt # localhost only
Without TNT_ACCESS_TOKEN, server is open (default).
Rate Limiting
TNT_MAX_CONNECTIONS=100 tnt # total limit
TNT_MAX_CONN_PER_IP=10 tnt # per-IP limit
TNT_RATE_LIMIT=0 tnt # disable (testing only)
Default: 64 total, 5 per IP, rate limiting enabled.
SSH Options
TNT_SSH_LOG_LEVEL=3 tnt # verbose logging (0-4)
Keys
INSERT (default)
ESC→ NORMALEnter→ sendBackspace→ delete
NORMAL
i→ INSERT:→ COMMANDj/k→ scrollg/G→ top/bottom?→ help
COMMAND
:list→ users:help→ commandsESC→ back
Build
make # normal
make debug # with symbols
make asan # sanitizer
make check # static analysis
Requires: libssh
Deploy
See DEPLOYMENT.md for systemd setup.
Files
messages.log chat history
host_key SSH key (auto-gen)
tnt.service systemd unit
Test
make test # run comprehensive test suite
# Individual tests are in tests/ directory
Docs
README- man page styleEASY_SETUP.md- 🚀 快速部署指南 / Quick Setup GuideHACKING- dev guideDEPLOYMENT.md- productionCICD.md- automationQUICKREF- cheat sheet
License
MIT