trzsz/trzsz.js

GitHub: trzsz/trzsz.js

trzsz.js是trzsz的JavaScript实现,让基于Electron和Web的终端应用支持trz/tsz文件传输,完美兼容tmux。

Stars: 201 | Forks: 16

# trzsz.js ( trz / tsz ) - trzsz 的 js 版本 [![MIT License](https://img.shields.io/badge/license-MIT-green.svg?style=flat)](https://choosealicense.com/licenses/mit/) [![npmjs trzsz](https://img.shields.io/npm/v/trzsz.svg?style=flat)](https://www.npmjs.com/package/trzsz) [![WebSite](https://img.shields.io/badge/WebSite-https%3A%2F%2Ftrzsz.github.io%2Fjs-blue?style=flat)](https://trzsz.github.io/js) [![中文文档](https://img.shields.io/badge/%E4%B8%AD%E6%96%87%E6%96%87%E6%A1%A3-https%3A%2F%2Ftrzsz.github.io%2Fcn%2Fjs-blue?style=flat)](https://trzsz.github.io/cn/js) `trzsz.js` 使使用 electron 和 webshell 构建的终端支持 [trzsz](https://trzsz.github.io/) ( trz / tsz ),类似于 ( rz / sz ),且兼容 tmux。 _关于 `trzsz ( trz / tsz )` 的更多信息,请查看 [https://trzsz.github.io](https://trzsz.github.io)。_ ## 入门指南 - 安装模块 npm install trzsz 或 yarn add trzsz - 在 Node.js 中使用 import { TrzszFilter } from "trzsz"; 或 const { TrzszFilter } = require("trzsz"); - 在浏览器中使用 - 为每个连接创建 `TrzszFilter` 对象。 const trzszFilter = new TrzszFilter({ // trzsz 选项,见下文 }); - 通常,服务器的输出会被转发到终端。将输出传递给 `TrzszFilter` 处理。 const trzszFilter = new TrzszFilter({ // 除非用户在服务器上运行 ( trz / tsz ),否则输出会被 TrzszFilter 转发回来。 writeToTerminal: (data) => terminal.write(typeof data === "string" ? data : new Uint8Array(data)), }); // 将输出转发给 TrzszFilter webSocket.addEventListener("message", (ev) => trzszFilter.processServerOutput(ev.data)); - 通常,用户输入会被转发到服务器。将用户输入传递给 `TrzszFilter` 处理。 const trzszFilter = new TrzszFilter({ // 除非正在传输文件,否则用户输入会被 TrzszFilter 转发回来。 sendToServer: (data) => webSocket.send(data), }); // 将用户输入转发给 TrzszFilter terminal.onData((data) => trzszFilter.processTerminalInput(data)); // 将二进制输入转发给 TrzszFilter terminal.onBinary((data) => trzszFilter.processBinaryInput(data)); - 让 `TrzszFilter` 知道终端列数以渲染进度条。 const trzszFilter = new TrzszFilter({ // 初始化终端列数 terminalColumns: terminal.cols, }); // 重置终端列数 terminal.onResize((size) => trzszFilter.setTerminalColumns(size.cols)); - 如果远程服务器是 Windows shell,例如 `cmd` 和 `PowerShell`。 const trzszFilter = new TrzszFilter({ // 这是一个 windows shell isWindowsShell: true, }); - 如果在 `Node.js` 中运行且 `TrzszFilter` 可以 `require('fs')`,则需要 `chooseSendFiles` 和 `chooseSaveDirectory`。如果在 Web 浏览器中运行,它们将被忽略。注意它们是 `async` 函数。 const trzszFilter = new TrzszFilter({ // 当用户在服务器上运行 trz(上传文件)且 require('fs') 无报错时调用。 chooseSendFiles: async (directory) => { // 如果 `directory` 为 `true`,允许选择多个目录和文件。 // 否则,只允许选择多个文件。 // 如果用户取消则返回 `undefined`。 // 返回用户选择的文件路径数组。 return ["/path/to/file1", "/path/to/file2", "/path/to/directory3"]; }, // 当用户在服务器上运行 tsz(下载文件)且 require('fs') 无报错时调用。 chooseSaveDirectory: async () => { // 如果用户取消则返回 `undefined`。 // 返回用户选择的目录路径。 return "/path/to/directory"; }, }); - 支持拖拽文件或目录上传。 terminalHtmlElement.addEventListener("dragover", (event) => event.preventDefault()); terminalHtmlElement.addEventListener("drop", (event) => { event.preventDefault(); trzszFilter .uploadFiles(event.dataTransfer.items) .then(() => console.log("upload success")) .catch((err) => console.log(err)); }); - `TrzszAddon` 是 `TrzszFilter` 的封装。如果你正在使用 [xterm-addon-attach](https://www.npmjs.com/package/xterm-addon-attach),只需用 `TrzszAddon` 替换 `AttachAddon` 即可。 import { Terminal } from "xterm"; import { TrzszAddon } from "trzsz"; const terminal = new Terminal(); const trzszAddon = new TrzszAddon(webSocket); terminal.loadAddon(trzszAddon); ## 示例 - [Browser](https://github.com/trzsz/trzsz.js/blob/main/examples/browser) web shell 示例。 - [Electron](https://github.com/trzsz/trzsz.js/blob/main/examples/electron) 终端应用示例。 - [TrzszAddon](https://github.com/trzsz/trzsz.js/blob/main/examples/addon) xterm 插件示例。 ## 截图 #### 在 Web 浏览器中上传和下载文件 ![browser example](https://trzsz.github.io/images/browser.gif) #### 在 Electron 应用中上传和下载文件 ![electron example](https://trzsz.github.io/images/electron.gif) ## 联系方式 欢迎给作者发邮件 ,或创建一个 [issue](https://github.com/trzsz/trzsz.js/issues)。欢迎加入 QQ 群:318578930。 ## 赞助 [❤️ 赞助 trzsz ❤️](https://github.com/trzsz),请作者喝杯饮料 🍺 ?感谢您的支持!
标签:CMS安全, Electron, GNU通用公共许可证, JavaScript, MITM代理, Node.js, PE 加载器, rz/sz, SSH客户端, Tmux兼容, trz, trzsz, tsz, TypeScript, WebShell, Xterm.js, ZModem替代, 前端组件, 威胁情报, 安全插件, 开发者工具, 开源库, 搜索引擎爬虫, 数据可视化, 文件上传, 文件下载, 文件传输, 终端工具, 自动化攻击