From d3f8812290f8311acb71ee8c50cbcdba146a3615 Mon Sep 17 00:00:00 2001 From: Joseph Date: Tue, 8 Jul 2025 13:35:50 +0700 Subject: [PATCH] update readme --- README.md | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) diff --git a/README.md b/README.md index e69de29..971a92f 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,89 @@ +# 🖥️ Cisco Telnet CLI Streaming + +Stream CLI của thiết bị Cisco (qua Telnet) lên trình duyệt theo thời gian thực. +Cho phép người dùng thao tác trực tiếp từ giao diện web với thiết bị như một terminal thật — hỗ trợ cả phím `TAB`, `ENTER`, `CTRL+C`, mũi tên,… + +--- + +## 📦 Tính năng + +- ✅ Kết nối trực tiếp tới thiết bị Cisco qua Telnet +- ✅ Stream CLI real-time bằng Socket.IO +- ✅ Giao diện terminal tương tác bằng [xterm.js](https://xtermjs.org/) +- ✅ Gửi từng phím người dùng gõ (raw input) +- ✅ Nhận toàn bộ phản hồi từ thiết bị Cisco và hiển thị trực tiếp +- ✅ Không cần giả lập từng lệnh hay phân tích kết quả + +--- + +## 🧩 Kiến trúc hệ thống + +``` +Frontend (React + xterm.js) + │ + ▼ +Socket.IO (real-time) + │ + ▼ +Backend (Node.js + net.Socket) + │ + ▼ +Cisco Device (Telnet) +``` + +--- + +## 🚀 Hướng dẫn sử dụng + +### 1. Backend (Node.js) + +```bash +git clone https://github.com/your-org/cisco-telnet-cli-stream.git +cd cisco-telnet-cli-stream +npm install +node server.js +``` + +> ⚙️ Mặc định kết nối đến thiết bị tại `172.18.8.20:23`. +> Bạn có thể sửa địa chỉ này trong file `server.js` dòng: + +```js +const telnet = net.createConnection({ host: "172.18.8.20", port: 23 }); +``` + +--- + +### 2. Frontend (React) + +> Sử dụng Vite, CRA hoặc Next.js đều được. + +```bash +cd frontend +npm install +npm run dev +``` + +Mặc định kết nối socket đến `http://localhost:3000`. + +--- + +## 🛠 Cấu hình thêm + +Bạn có thể mở rộng thêm: + +- Gửi username/password tự động nếu gặp dòng `Username:` hoặc `Password:` +- Tạo mỗi phiên `Socket.IO` một `Telnet session` riêng +- Lưu log toàn bộ thao tác +- Phân quyền user và giới hạn thao tác + +--- + +## 🖼 Screenshot + +![screenshot terminal](./docs/screenshot.png) + +--- + +## 📄 License + +MIT License © 2025 [Your Name]