我设法使用扩展名更改了 guacamole 上的 tomcat HTML 文件,但不是按照文档建议的方式。
首先,我将这些文件从容器 guacamole 复制到主机:
docker cp <containerid>:/usr/local/tomcat /root/myhome
docker cp <containerid>:/opt/guacamole/bin/start.sh /root/myhome
然后,当我拥有文件时,我可以编辑下面的 client.html
tomcat/webapps/guacamole/app/client/templates/client.html 在我的本地主机上。
所以我做扩展的方法是首先你去 start.sh 脚本
我在 localhost 上复制并将此行添加到此行号:
238: ln -s /opt/guacamole/program.jar "$GUACAMOLE_EXT"
389: ln -s /opt/guacamole/program.jar "$GUACAMOLE_EXT"
应该在 start.sh 上:
# Add required .jar files to GUACAMOLE_LIB and GUACAMOLE_EXT
ln -s /opt/guacamole/postgresql/postgresql-*.jar "$GUACAMOLE_LIB"
ln -s /opt/guacamole/postgresql/guacamole-auth-*.jar "$GUACAMOLE_EXT"
ln -s /opt/guacamole/program.jar "$GUACAMOLE_EXT" #ADDED
这里:
# Add required .jar files to GUACAMOLE_LIB and GUACAMOLE_EXT
ln -s /opt/guacamole/mysql/mysql-connector-*.jar "$GUACAMOLE_LIB"
ln -s /opt/guacamole/mysql/guacamole-auth-*.jar "$GUACAMOLE_EXT"
ln -s /opt/guacamole/program.jar "$GUACAMOLE_EXT" #ADDED
现在,我们需要对 HTML 和 JS 进行扩展和更改:
在本地主机中:
mkdir myExt
cd myExt
vi guac-manifest.json#创建guac-manifest.json
{ "guacamoleVersion" : "*",
"name" : "B-Override",
"namespace" : "b-override",
"html" : [ "client.html" ],
"js": ["clientController.js"]
}
我想更改client.html和clientController.js(替换原文件名没关系,我选择不替换guac-manifest.json中的原名。
我想从用户面板菜单(ctrl+alt+shift) 中删除连接下拉菜单 + 注销或回家的选项,所以我从我们复制到本地主机的 tomcat 文件中复制了原始 client.html:
cp ../tomcat/webapps/guacamole/app/client/templates/client.html .
还有:
cp ../tomcat//webapps/guacamole/app/client/controllers/clientController.js .
因为我还想从 guacamole 在 vm 关闭时提供的弹出窗口中删除主页和注销按钮。(重新连接 - 主页 - 注销)
现在,
我编辑了刚刚复制到 myExt 的文件:
vi client.html
我在文件顶部添加了这个:
<meta name="replace-children" content=".menu .menu-content .header">
它替换了我想要的 HTML 中的部分,我可以从文件中删除我不编辑的部分,它只会在原始文件中替换我在内容中添加的类
小例子:
<meta name="replace-children" content=".menu .menu-content .header">
<div class="menu" ng-class="{open: menu.shown}" id="guac-menu">
<div class="menu-content" ng-if="menu.shown">
<!-- Stationary header -->
<div class="header">
<h2 class="connection-select-menu" ng-show="rootConnectionGroups">
<guac-menu menu-title="client.name" interactive="true">
您可以将要替换的代码上的类添加到内容中,并带有“。”在它前面(这就是我对如何更换零件的理解,我知道它与 css 文件有关,但这样让我更容易理解)
在我想要修改的 js 中,我没有删除我不需要更改的部分,因为它不一样,我去了“action =”并删除了HOME 和 @ 987654338@ 选项并像这样保存它,不需要像 HTML 这样的文件头上的任何东西。
现在扩展已经准备好了,我们需要将它作为一个 jar 文件 + 卷 start.sh 到 guacamole 容器:
首先我们需要安装它来获得 jar 选项:(ubuntu)
apt install default-jdk openjdk-11-jdk-headless fastjar openjdk-8-jdk-headless
然后我们走出 myExt 目录:
cd ..
jar cvf program.jar -C myExt .
现在我们转到docker-compose.yml 并添加卷:
guacamole:
image: guacamole/guacamole:latest
depends_on:
- guacd
- postgres_gqm
volumes:
- /root/myhome/start.sh:/opt/guacamole/bin/start.sh #ADDED
- /root/myhome/program.jar:/opt/guacamole/program.jar #ADDED
environment:
- "GUACD_HOSTNAME=guacd"
- "POSTGRES_DATABASE=guacamole_db"
- "POSTGRES_HOSTNAME=postgres_gqm"
- "POSTGRES_PASSWORD=PassWrdGQM"
- "POSTGRES_USER=guacamole_user"
- "GUACD_LOG_LEVEL=debug"
links:
- guacd
ports:
- 8080/tcp
restart: always
现在:
docker-compose down
docker-compose up -d ; docker-compose logs -f --tail=10 guacamole
并寻找扩展负载:
guacamole_1 | 09:50:10.683 [localhost-startStop-1] INFO o.a.g.extension.ExtensionModule - Extension "B-Override" loaded.
如果您发现自己犯了错误,您可以随时返回并通过删除
/root/myhome/program.jar 来自本地主机,返回 myEXT 重新复制 client.html 文件或编辑它,再次将其作为 jar 和 docker-compose down + up 关闭。