Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ttyd 1.7.3 : How to support trzsz #1086

Closed
hdfg159 opened this issue Mar 11, 2023 · 21 comments
Closed

ttyd 1.7.3 : How to support trzsz #1086

hdfg159 opened this issue Mar 11, 2023 · 21 comments
Labels

Comments

@hdfg159
Copy link

hdfg159 commented Mar 11, 2023

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
Copy link
Owner

tsl0922 commented Mar 14, 2023

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

@gitlsl
Copy link

gitlsl commented Mar 15, 2023

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
Copy link
Author

hdfg159 commented Mar 15, 2023

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

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

@lonnywong
Copy link
Contributor

lonnywong commented Mar 15, 2023

The browser doesn't support the File System Access API

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

@lonnywong
Copy link
Contributor

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

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

@hdfg159
Copy link
Author

hdfg159 commented Mar 15, 2023

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
Copy link
Contributor

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
Copy link

gitlsl commented Mar 15, 2023

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

@lonnywong
Copy link
Contributor

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

画面上有什么提示吗?

@gitlsl
Copy link

gitlsl commented Mar 15, 2023

@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
Copy link
Contributor

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

@gitlsl
Copy link

gitlsl commented Mar 15, 2023

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

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

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

@lonnywong
Copy link
Contributor

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

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

@gitlsl
Copy link

gitlsl commented Mar 15, 2023

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

@hdfg159
Copy link
Author

hdfg159 commented Mar 15, 2023

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

@hdfg159 hdfg159 closed this as completed Mar 15, 2023
@lonnywong
Copy link
Contributor

lonnywong commented Mar 16, 2023

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

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

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

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

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

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,
});

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
Copy link
Contributor

@gitlsl @tsl0922 The PR #1084 works on Windows.

@lonnywong
Copy link
Contributor

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

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

@hdfg159 trzsz.js 1.1.0 开始支持传输文件夹了,ttyd 的 PR:#1084

@gitlsl
Copy link

gitlsl commented Aug 17, 2023

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

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

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

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

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,
});

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
还是存在之前一样的问题 #1086 (comment)

@lonnywong
Copy link
Contributor

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

@gitlsl
Copy link

gitlsl commented Aug 18, 2023

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants