Skip to content

Commit

Permalink
2.0.2 ptyshell解析问题
Browse files Browse the repository at this point in the history
  • Loading branch information
xiaobaidadada committed Jan 16, 2025
1 parent c31e4f3 commit 71ca28e
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 5 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ url: http://116.198.245.137:5569/
- 系统内存cpu信息,进程cpu信息(利用c插件、使用极低的资源,实时查看系统全部进程信息,类似windows的任务管理器),systemd管理(linux下才有)
- wol网络唤醒
- 虚拟网络,可以实现p2p,vpn功能。(不是端口转发,而是利用tun在主机上创建虚拟ip)
- 权限,支持各种系统权限,文件操作权限,命令权限.
## 五. 功能说明
1. 由于一些库目前不支持mac(比如虚拟网络) **mac下无法使用**上面的安装方式直接安装成功,在windows需要管理员模式下运行,linux需要root权限才可以使用该功能。此外还很多功能没有在macos下测试过,只支持windows和Linux;
2. 部分功能目前处于demo阶段,未来会持续优化;
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "filecat",
"version": "2.0.1",
"version": "2.0.2",
"description": "filecat 文件管理器",
"author": "xiaobaidadada",
"scripts": {
Expand Down
13 changes: 9 additions & 4 deletions src/main/domain/shell/PtyShell.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import {SysEnum} from "../../../common/req/user.req";
* 3. 支持 ls pwd 等内置命令 , 除了 cd 所有命令都可以自定义
* 4. 不存在的命令会被用子进程执行
* 5. 对于特殊的 shell 命令 会使用 node-pty 来执行 并让shell托管所有的输入输出数据
* 6. 目前并不支持管道等功能 也就是 && | 这样的功能
* 6. 使用了shell: true 参数 系统的默认shell可以支持管道等操作,还可以支持程序路劲查找的功能
*/

const cmd_list = ['ls', 'cd', 'pwd']; // 仅支持这三个内置命令 cd 命令是唯一支持参数的
Expand Down Expand Up @@ -405,8 +405,9 @@ export class PtyShell {
line_reduce_num?: number,
p_line?: string
}) {
const prompt = !this.child ? this.raw_prompt : this.child_now_line;
let len = this.prompt_call_len + this.line_char_index; // 字符串前面的字符数量
const not_have_child = !this.child;
const prompt = not_have_child ? this.raw_prompt : this.child_now_line;
let len = not_have_child ?this.prompt_call_len:PtyShell.get_full_char_num(this.child_now_line) + this.line_char_index; // 字符串前面的字符数量
if (param && param.line_add_num) {
len += param.line_add_num;
} else if (param && param.line_reduce_num) {
Expand Down Expand Up @@ -808,6 +809,7 @@ export class PtyShell {
this.is_pty = false;
// 其他的没有必要再创建一个 tty 都是资源消耗
this.child = this.node_require.child_process.spawn(exe, params, {
shell:true,
cwd: this.cwd, // 设置子进程的工作目录
env: {...process.env, ...this.env}, // 传递环境变量
// stdio: 'inherit' // 让子进程的输入输出与父进程共享 pipe ignore inherit
Expand All @@ -816,7 +818,7 @@ export class PtyShell {
...spawn_option
});
this.child.stdout.on('data', (data) => {
const v = data.toString();
const v = data.toString(); // 子程序没有换行等符号不会立即输出 有缓冲区
this.send_and_enter(v);
});
this.child.stderr.on('data', (data) => {
Expand Down Expand Up @@ -902,6 +904,9 @@ export class PtyShell {
start = -1;
}
}
if(start !== -1) {
params.push(str.substring(start));
}
return {exe, params};
}

Expand Down

0 comments on commit 71ca28e

Please sign in to comment.