guacamole-server0.9.9(RDP server)

本文主要分析guacamole-server0.9.9中的RDP服务器部分,详解guacd如何作为守护进程监听并处理客户端连接,加载RDP协议插件,初始化客户端,以及关键结构体和流程。

guacamole-server0.9.9(RDP server)

guacamole支持不同的远程桌面连接,也就是说guacamole需要支持不同的远程桌面协议。本节内容是单指基于RDP协议的部分。guacamole 整个项目分为三个部分,分别是guacamole server、guacamole client以及web application。guacamole server的功能是为client和RDP server提供通信接口。guacamole server又可以称作guacd。guacd与guacamole client之间的通信是依靠guacamole协议,与RDP server通信是依靠RDP协议,具体到代码中使用的是开源项目freerdp。guacd通过加载不同的动态链接库来支持不同的协议。此处加载RDP动态链接库。

guacamole server与其他部分的通信机制如下图所示:


guacd在系统中维持一个守护进程,守护进程中主要是监听来自guacamole client的socket数据包,收到数据包之后创建子进程进行连接处理。

以上是大体介绍了guacamole server的结构,下面将从main函数开始分析代码。分析的重点:

1.     关键结构体分析,包括元素的意义、函数指针的调用;

2.     关键流程的记录;

3.     结构体之间的关系;

4.     关键函数的分析;

1.  main()

l  流程:

1.     新建guacd_client_map,管理连接的client

2.     从配置文件中读取client地址和端口号

(配置文件应该是/etc/guacamole/guacamole.properties,在实测中IP地址:127.0.0.1 端口号:4822)

3.     得到client端socket,描述符socket_fd,并绑定地址

4.     开启守护进程,向配置文件中写入进程pid,设置信号相应模式

5.     listen(socket_fd),监听client端的socket

------------------------------------------连接到guacamole client-----------------------------------

6.     循环daemon loop

l  client数据

       guacd的clie

### Guacamole Server 0.9.7 下载及安装 #### 获取源码包 为了获取 `guacamole-server` 的特定版本 0.9.7,可以利用官方提供的链接来下载压缩文件。执行如下指令完成下载操作: ```bash cd /root/Downloads/ wget https://sourceforge.net/projects/guacamole/files/current/source/guacamole-server-0.9.7.tar.gz/download -O guacamole-server-0.9.7.tar.gz ``` 此命令会切换到 `/root/Downloads/` 文件夹并从中下载指定版本的软件包[^1]。 #### 解压与编译构建 解压缩刚刚获得的 `.tar.gz` 文件之后进入对应的目录准备进一步处理: ```bash tar -zxvf guacamole-server-0.9.7.tar.gz cd guacamole-server-0.9.7/ ``` 接下来按照常规流程来进行编译工作之前先确认已经安装好必要的依赖项(例如 libpng-devel、freetype-devel 和 freerdp 开发库)。接着运行下面几条语句实现编译过程以及最终的服务端组件部署: ```bash ./configure --with-init-dir=/etc/init.d make sudo make install ldconfig ``` 上述脚本中的选项指定了初始化脚本放置的位置以便于后续管理服务;最后一步刷新共享库缓存确保新加入的内容能够被识别出来。 #### 配置环境变量和服务启动设置 为了让系统知道如何找到刚安裝好的可执行程序路径,建议编辑 profile 或者 bashrc 添加相应的环境变量定义。另外还需要创建 symbolic link 来让 init system 可以控制该应用作为后台进程运作: ```bash echo 'export PATH=$PATH:/usr/local/sbin' >> ~/.bashrc && source ~/.bashrc ln -s /etc/init.d/guacd /etc/rc.d/rc3.d/S99guacd ``` 至此完成了整个服务器部分的基础搭建任务,不过要想正常使用还需继续配置 Tomcat 容器加载前端 Web 应用,并调整相关参数适应实际应用场景需求[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值