前期准备
- 会使用git远程连接github仓库,并会简单的git push指令
- 已搭建好rustdesk自托管服务器和api服务器
- 本指南适用于目前最新的1.4.0版本
操作指南
- fork或者import rustdesk/hbb_common和rustdesk/rustdesk这两个项目(建议import并设置不公开,因为后面如果需要固定被控端密码的话,你的密码会以明文的形式公开在自己名下的仓库中)
- 针对hbb_common仓库的操作
git clone 你自己名下的hbb_common仓库到本地,在src/config.rs中修改RSENDZVOUS_SERVER字段为自己的服务器地址,修改RS_PUB_KEY字段为自己的服务器key(简单的替换即可)
还是src/config.rs文件,找到HARD_SETTINGS字段
将那一整行替换为如下代码块:
pub static ref HARD_SETTINGS: RwLock<HashMap<String, String>> = {
let mut map = HashMap::new();
map.insert("password".to_string(), "<明文填写你要固定的被控端密码>".to_string());
RwLock::new(map)
};
最后,将以上所有调整push到github仓库
(hbb_common仓库的相关改动直接在网页修改也可以)
- 针对rustdesk仓库的操作
git clone 你自己名下的rustdesk仓库到本地,首先删除官方源码中的引用hbb_common子模块(直接在本地删除libs/hbb_common那个空文件夹即可)
cd到本地rustdesk仓库根目录,添加上面自己修改过的hbb_common子模块git submodule add https://github.com/<你自己的github用户名>/hbb_common libs/hbb_common
替换过子模块后push,再输一次如下指令强制更新子模块
git submodule sync
查找到rustdesk仓库中src/common.rs文件的get_custom_rendezvous_server这个函数,下面有个官方的api地址,将其替换成自己的,最后push(这一步其实也可以直接在网页操作)
找到rustdesk仓库中src/common.rs文件的“secure_tcp(conn: &mut Stream, key: &str) -> ResultType<()>”字段,将下面的“if use_ws()”判断去掉直接return ok
对两个仓库所作的修改完毕,务必记得一定要push到github上自己名下的仓库!!!
- 使用github action在线编译
在<自己名下的>/rustdesk项目,找到Settings -> Actions -> General,确保勾选Allow all actions and reusable workflows和Read and write permissions两项
回到本地rustdesk仓库,创建一个tag
git tag -a <自己拟一个tag名> -m "这是我的自定义客户端tag"
在<自己名下的>/rustdesk项目,找到Actions,点击"i understand xxxx"那个按钮
回到本地rustdesk仓库,输入
git push --tags
将刚才新创建的标签同步到远程仓库
在actions页找到Full Flutter CI,选择"run workflow"并点开branch下拉,选择刚才创建的标签
然后,愉快的开始run,等跑完去releases就能下到自己的专属rustdesk客户端啦~