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

分享多个EC版本同时运行的一个方案 及纯CLI登录的讨论 #35

Closed
shmilee opened this issue Feb 24, 2021 · 7 comments
Closed

Comments

@shmilee
Copy link

shmilee commented Feb 24, 2021

首先感谢 Hagb 的详细的文档和代码,让我少踩了一些坑。
在你的基础上,我又看了安装包内的一些脚本,重新组织了代码,写了一个多个EC版本同时运行的一个方案。
顺便填坑 #25 (comment)
Hagb的多个镜像也可以同时开,我改的初衷主要是减小镜像数量和体积,多个EC版本用到时再挂载,更自由一些。

代码放在这 https://github.com/shmilee/scripts/tree/master/easyconnect-in-docker
已测试版本有 7.6.3, 7.6.7

使用分三步:

  1. 构建build一个多EC版本共用的docker镜像。
  2. 部署deploy多个EC版本到某目录,不同版本有各自的启动脚本start.sh, 以及处理各种问题、启动其他服务的脚本hook_script.sh
  3. 运行不同版本的start.sh,同时向 docker run 传所需的OPTIONS。
    运行正常后,修改版本对应的desktop文件,之后就可以不用命令行打开了。

需要注意的是有几个不同的默认值:

  1. 默认用的X11显示登录界面,VNC的安装、启动放在hook_script.sh,对于使用VNC的用户每次都需安装VNC相关的包,因此可以移入dockerfile,以节省很多时间。
  2. 默认IPTABLES的设置是关闭的。
  3. 代理软件danted配置内权限相关的部分做了修改。
  4. 添加的sshd默认是关闭的。
  5. EC调用浏览器打开网址,处理方式类似之前网址写到文件,不过打开不是在容器内窗口显示,而是在host用默认浏览器打开。
  6. 不同EC版本保存的登录信息在各自的conf目录内,不需要单独挂载处理。

其他反馈:

  1. 登陆过程中的cms client connect failed, 版本7.6.7不需hack,EC能自己处理。
  2. IPTABLES默认关闭,在我使用过程中没发现问题。
  3. 安装包内的脚本最主要的是postinst,处理文件权限相关的部分。
  4. 为了能通过desktop文件运行并且不打开终端窗口,需要docker run不带-i
@shmilee shmilee closed this as completed Feb 26, 2021
@shmilee
Copy link
Author

shmilee commented Mar 4, 2021

更新添加一个纯 cli 的版本:easyconn_7.6.8.2-ubuntu_amd64.deb。
未找到官方下载地址,天河那边给的,已上传到github方便大家下载。

现已测试版本有

  • 7.6.3
  • 7.6.7
  • 7.6.8(CLI)

7.6.7 与 7.6.8(CLI) 都可以正常登录天河,CLI版本自动登录正常。唯一的问题是CLI版本的密码只能明文输入。

======

已将7.6.8(CLI) 的resources/bin合并到7.6.3,7.6.7内,设置USEUI=<X11,VNC,CLI>方便以三种方式登录。

@Hagb

This comment has been minimized.

@Hagb
Copy link
Collaborator

Hagb commented Mar 4, 2021

(原谅我刚才情不自禁发了一句没有意义的话)请问我能把这个仓库在 README 里提到吗?
(不过现在电脑不在身边,得多一两天才能操作)

@shmilee
Copy link
Author

shmilee commented Mar 5, 2021

可以的啊,多一点人知道,就有多一点人测试这个包兼容哪些版本了。
不过我看打包的deb不怎么规范,包含了多余的mac平台的文件,所以极有可能是为客户需求临时做的,而不是正式发布版本。说不定版本检查可能比较松?

Hagb added a commit that referenced this issue Mar 6, 2021
@Hagb
Copy link
Collaborator

Hagb commented Mar 6, 2021

可以的啊,多一点人知道,就有多一点人测试这个包兼容哪些版本了。
不过我看打包的deb不怎么规范,包含了多余的mac平台的文件,所以极有可能是为客户需求临时做的,而不是正式发布版本。说不定版本检查可能比较松?

版本检查看起来是有的,不过我发现可以把不同版本的部件组合起来使用,昨天把 7.6.3 的和 7.6.8 cli 的组合起来用实现了 7.6.3 的纯 cli 版本。
大体操作就是把旧版的包中的 ECAgent 用新版的替换(起个别的名字放在统一目录,不替换也行)了,把 easyconn 也加进去,然后运行 ECAgenteasyconn 登陆,成功登陆后(比如通过杀掉 ECAgent)阻止它发心跳包(发心跳包反而会导致断线,不发一切正常)。

这样可玩性就增加许多了呀!

@shmilee
Copy link
Author

shmilee commented Mar 6, 2021

一开始我只把easyconn放到旧版两个来用,结果最后的登录过程一直在死循环,原来是少了resources/bin/ECAgent
为了减少三个版本占用的体积,之前对比过他们的文件。resources/lib64,三者相同。7.6.3与 7.6.7 GUI相关的大部分也相同。所以如果碰到其他7.6.x的版本混搭用,留意一下resources/{bin,conf},估计问题也不大。

@Hagb
Copy link
Collaborator

Hagb commented Mar 6, 2021

一开始我只把easyconn放到旧版两个来用,结果最后的登录过程一直在死循环,原来是少了resources/bin/ECAgent
为了减少三个版本占用的体积,之前对比过他们的文件。resources/lib64,三者相同。7.6.3与 7.6.7 GUI相关的大部分也相同。所以如果碰到其他7.6.x的版本混搭用,留意一下resources/{bin,conf},估计问题也不大。

(突然发现我们偏题好久了… 改一下这个标题或者新开一个 issue 吧)

我在 Dockerfile 中这样给纯 cli 的 3.6.3 版清除无用文件,效果明显:

rm -rf /tmp/* && \
cd /usr/share/sangfor/EasyConnect/ && { rm -f * ; true ; } && rm -fr locales/ ec/ && \
cd resources/ && rm -rf *.asar *.png re/ && \
cd lib64 && rm libf* libg* libnssckbi.so libnsssysinit.so libnssdbm3.so libsoftokn3.so libsqlite3.so libssl3.so

@shmilee shmilee changed the title 分享多个EC版本同时运行的一个方案 分享多个EC版本同时运行的一个方案 及纯CLI登录的讨论 Mar 6, 2021
Hagb added a commit that referenced this issue Mar 6, 2021
Thanks @shmilee for providing cli easyconn #35
Hagb added a commit that referenced this issue Mar 6, 2021
Thank @shmilee for providing cli easyconn #35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants