tsl0922 / ttyd

Share your terminal over the web
https://tsl0922.github.io/ttyd
MIT License
8.18k stars 898 forks source link

ttyd 1.7.3 : How to support trzsz #1086

Closed hdfg159 closed 1 year ago

hdfg159 commented 1 year ago

ttyd server command:

ttyd -w /root -t enableTrzsz=true -t enableSixel=true zsh

ttyd version:ttyd version 1.7.3-a8cae75

There is a problem when I use it in the browser with 'trz'.

➜  ~ trz
The browser doesn't support the File System Access API
tsl0922 commented 1 year ago

The error comes from trzsz.js, it does not support your browser.

gitlsl commented 1 year ago

https://github.com/trzsz/trzsz-go 从这下了windows版本的

2022/12/10  13:11         2,886,656 trz.exe
2022/12/10  13:11         2,918,912 trzsz.exe
2022/12/10  13:11         2,900,992 tsz.exe
2023/03/15  15:56         1,389,056 ttyd.exe

ttyd -p 8087 -B enableTrzsz=true cmd ttyd -p 8087 -B enableTrzsz=true powershell 这些命令都会出现下面 的错误 运行命令后打开的浏览器无法正常显示, 控制台一直报错 == CreateProcessW failed with error 2: 系统找不到指定的文件。

@tsl0922 @lonnywong

hdfg159 commented 1 year ago

The error comes from trzsz.js, it does not support your browser.

谷歌 edge firefox全部试了一遍都不行,所以那是那个浏览器支持哈哈哈,作者方便解答一下吗@lonnywong

lonnywong commented 1 year ago

The browser doesn't support the File System Access API

@hdfg159 非本地 127.0.0.1 的,需要用 https( 不支持 http 的 ),试试加 -S 启动,用 https 访问?

lonnywong commented 1 year ago

ttyd -p 8087 -B enableTrzsz=true cmd ttyd -p 8087 -B enableTrzsz=true powershell

@gitlsl 不是 -B,是 -t enableTrzsz=true

hdfg159 commented 1 year ago

The browser doesn't support the File System Access API

@hdfg159 非本地 127.0.0.1 的,需要用 https( 不支持 http 的 ),试试加 -S 启动,用 https 访问?

可以了谢谢,现在的问题是不支持传输文件夹吗

➜  ~ trz -d
The client doesn't support transfer directory
lonnywong commented 1 year ago

The browser doesn't support the File System Access API

@hdfg159 非本地 127.0.0.1 的,需要用 https( 不支持 http 的 ),试试加 -S 启动,用 https 访问?

可以了谢谢,现在的问题是不支持传输文件夹吗

➜  ~ trz -d
The client doesn't support transfer directory

是的,我刚又去看了下 API,看起来是支持的,我抽空试着实现一下。

gitlsl commented 1 year ago

ttyd -p 8087 -B -t enableTrzsz=true cmd 可以正常跑起来打开页面了 但是运行 trz tsz 都只是切换到Trzsz的画面, 实际没有上传下载 @lonnywong

lonnywong commented 1 year ago

ttyd -p 8087 -B -t enableTrzsz=true cmd 可以正常跑起来打开页面了 但是运行 trz tsz 都只是切换到Trzsz的画面, 实际没有上传下载 @lonnywong

画面上有什么提示吗?

gitlsl commented 1 year ago

@lonnywong

                                                                             ooooooooooooo      ooooooooo.         oooooooooooo       .oooooo..o       oooooooooooo
                                                                             8'   888   '8      `888   `Y88.      d'''''''d888'      d8P'    `Y8      d'''''''d888'
                                                                                  888            888   .d88'            .888P        Y88bo.                 .888P
                                                                                  888            888ooo88P'            d888'          `'Y8888o.            d888'
                                                                                  888            888`88b.            .888P                `'Y88b         .888P
                                                                                  888            888  `88b.         d888'    .P      oo     .d8P        d888'    .P
                                                                                 o888o          o888o  o888o      .888d888d88P       d888d88P'        .888d888d88P
::TRZSZ:TRANSFER:R:1.0.0:7888457700510

就一直这么个状态 , 浏览器控制台 ttyd 控制台都没有什么输出

等个10秒, 这个时候 刷新一下页面, 页面再也出不来了, 感觉是 ttyd死掉了?或者一直等待外部进程, 在ttyd 的控制台 按 ctrl+c 没任何反应,无法结束掉ttyd

lonnywong commented 1 year ago

此时应该弹出选择文件的对话框的,可能在 windows 上有点问题,我抽空在 windows 上试试看能不能复现。

gitlsl commented 1 year ago

此时应该弹出选择文件的对话框的,可能在 windows 上有点问题,我抽空在 windows 上试试看能不能复现。

对话框有出来的, 我上面说的就是选择完文件后, 一直停着不动了

目前我这边2台电脑是必现的

lonnywong commented 1 year ago

@gitlsl ttyd 1.7.3 还在用 trzsz.js 0.4.3 的版本,你会自己升级 trzsz.js 到 1.0.0 自己编译一个试试不?

trzsz.js 1.0.0 对 windows 做了一些优化的,或许解决了这个问题。

gitlsl commented 1 year ago

没事,我c#的,不熟悉 js go环境搭建,等后面更新再测试好了 @lonnywong

hdfg159 commented 1 year ago

那我先关闭这个问题了,谢谢各位 @tsl0922 @lonnywong @gitlsl

lonnywong commented 1 year ago

对话框有出来的, 我上面说的就是选择完文件后, 一直停着不动了

目前我这边2台电脑是必现的

@gitlsl 我在 Windows 上试了一下,确实如你所说的。

@tsl0922 对于 Windows 平台,在初始化 trzsz 时,isWindowsShell 要设置为 true( 默认为 false 的 ),如果不是 Windows 平台就不要设置为 true 。在 js 中有什么办法能获取到当前是什么平台不?

这里需要获取服务器是不是 Windows,而不是浏览器是不是运行在 Windows 上,trzsz.jsdemo 是通过 http 请求来获取的。

https://github.com/tsl0922/ttyd/blob/a767971836c451fbc22e23fd01f78d1b372e9207/html/src/components/terminal/xterm/addons/zmodem.ts#L61-L71

this.trzszFilter = new TrzszFilter({
    writeToTerminal: data => {
        if (!this.trzszFilter.isTransferringFiles() && zmodem) {
            this.sentry.consume(data);
        } else {
            writer(typeof data === 'string' ? data : new Uint8Array(data as ArrayBuffer));
        }
    },
    sendToServer: data => sender(data),
    terminalColumns: terminal.cols,
    isWindowsShell: true,  // 如果是 Windows 则设为 true,其他则设置为 false
});
lonnywong commented 1 year ago

@gitlsl @tsl0922 The PR https://github.com/tsl0922/ttyd/pull/1084 works on Windows.

lonnywong commented 1 year ago

现在的问题是不支持传输文件夹吗

➜  ~ trz -d
The client doesn't support transfer directory

@hdfg159 trzsz.js 1.1.0 开始支持传输文件夹了,ttyd 的 PR:https://github.com/tsl0922/ttyd/pull/1084

gitlsl commented 1 year ago

对话框有出来的, 我上面说的就是选择完文件后, 一直停着不动了 目前我这边2台电脑是必现的

@gitlsl 我在 Windows 上试了一下,确实如你所说的。

@tsl0922 对于 Windows 平台,在初始化 trzsz 时,isWindowsShell 要设置为 true( 默认为 false 的 ),如果不是 Windows 平台就不要设置为 true 。在 js 中有什么办法能获取到当前是什么平台不?

这里需要获取服务器是不是 Windows,而不是浏览器是不是运行在 Windows 上,trzsz.jsdemo 是通过 http 请求来获取的。

https://github.com/tsl0922/ttyd/blob/a767971836c451fbc22e23fd01f78d1b372e9207/html/src/components/terminal/xterm/addons/zmodem.ts#L61-L71

this.trzszFilter = new TrzszFilter({
    writeToTerminal: data => {
        if (!this.trzszFilter.isTransferringFiles() && zmodem) {
            this.sentry.consume(data);
        } else {
            writer(typeof data === 'string' ? data : new Uint8Array(data as ArrayBuffer));
        }
    },
    sendToServer: data => sender(data),
    terminalColumns: terminal.cols,
    isWindowsShell: true,  // 如果是 Windows 则设为 true,其他则设置为 false
});

@lonnywong @tsl0922 我今天用最新版的 trzsz.go ,ttyd 测试 ttyd -t enableTrzsz=true cmd 还是存在之前一样的问题 https://github.com/tsl0922/ttyd/issues/1086#issuecomment-1469949363

lonnywong commented 1 year ago

@gitlsl 你用的是 ttyd 1.7.3 ? 那应该是前面修复的 commit 还没发布。

gitlsl commented 1 year ago

@lonnywong 好的 @hdfg159 老哥啥时候发布呢