rustdesk1.2.X版自建API服务器
本帖最后由 sany217 于 2023-8-25 15:21 编辑一直在内网用着本地部署的rustdesk,不是mstsc不香,主要是不想记那么多IP和密码。最开始使用客户端本机保存连接密码,
后来看到v5star大佬的帖子https://www.52pojie.cn/thread-1708319-1-1.html又搞了API服务,其他电脑也可以同步本机的通讯录了,
缺点是密码未同步(等官方后期升级吧)。效果如下:
最近rustdesk升级了客户端(版本号1.2开头),结果API服务跛了,无法登录。由于API服务接口仅有一个php文件,而且注释很友好,
先抓了几个包。然后再结合GMCN大佬的Python版本https://www.52pojie.cn/thread-1792530-1-1.html直接手搓了1.2的接口。
新版确实好看点儿,效果如下:
抓包过程也看一下吧,都是http包,主要login、loginout、ab、heartbeat几个接口,
接口文件下载
扯了半天就放了个接口文件,这跟自建API服务器标题差远了,好吧,接着水。。。
1、说明(前面说得太多,不敢再写介绍了)
话说文件只有一个php脚本,主力系统又是windows,手搓接口容易,测试可不简单:修改接口、终端上传、配置测试。。。
几百行代码记事本手搓,谁能一次就过?行不通?那就本地搭一个吧。就这一个文件的接口,搞nginx、php搭环境这就有点儿大炮打蚊子意思了,
那就拿aardio写一个吧。为了保证便携性,选了php 5.2,再顺手打了个包,主程序26MB+93.7KB接口文件压缩完7.25MB,
随便找个windows电脑丢上去(解压+运行,PC需放行相关端口)就可以了。
核心代码如下:
import wsock.tcp.simpleHttpServer;
import process.php.5.2;
//放 *.php 文件的工程目录「内嵌资源」属性必须为 false
var documentRoot = "/res/www/";
process.php.startPort = 91;
process.php.startIp = ..wsock.tcp.client.getLocalIp();
process.php.app = function(response,request,session){
if(!..io.exist(request.path)){
response.errorStatus(404);
}
import process.php.cgi;
if( string.endWith(request.path,".php",true) ){
process.php.cgi(response,request,phpCgiPath,phpIniPath);
}
else {
response.loadcode( request.path );
}
}
var php = process.php(, documentRoot);
2.界面截图
3.下载地址
https://wwwg.lanzouc.com/b04ehcwte
密码:27tn
4.使用方法
解压到windows Server或PC任意位置(当然本机也是可以的),运行PHPServer_all.exe即可。
初次使用需在软件启动后,通过浏览器执行http://xx.xx.xx.xx:91/index2.php?ac=runonce 生成数据库,
若由v5star大佬前期版本升级而来,可执行http://xx.xx.xx.xx:91/index2.php?ac=datamig 迁移原通讯录数据。
rustdesk客户端配置API服务器http://xx.xx.xx.xx:91/index2.php?s=
(客户端版本为1.2.x以下配置为http://xx.xx.xx.xx:91/index.php?s=)
客户端登录默认账号密码均为admin
备注:其他php代码测试,直接将脚本文件放到res/www/目录下,便可使用浏览器访问相关页面。 sany217 发表于 2023-8-25 15:17
不用注册,默认用户名、密码都是admin
我也刚好有这个需求,但是实话说,做网络的,不会编程,依葫芦画瓢整了一段。只有添加,没有删除。
// 添加一个用户,链接地址为 http://XXXXX.xxxx.xxxx:端口/index2.php?ac=new&username=用户名&password=密码
if($ac=='new'){
$username = trim($_GET['username']);
$password = trim($_GET['password']);
if( strlen($username) >0 && strlen($password) >0){
echo 'new'.$username.$password;
$sql2 = "select count(*) from rustdesk_users where username='{$username}'";
echo $sql2;
$ret = $db->querySingle($sql2);
if($ret == 0){
$pwd = md5($password.'rustdesk');
//echo $pwd;
$sql ="INSERT INTO rustdesk_users (username,password) VALUES ('".$username."','".$pwd."');";
$ret = $db->exec($sql);
if($ret == 1){
echo "用户.$username.添加成功";
}
}else{
print "已存在该用户,换个用户名再来";
}
}else{
print "用户名或者密码为空,检查后再来";
}
} 本帖最后由 v5star 于 2023-8-24 16:00 编辑
很好很强大,{:1_921:}
其实,升级1.2.1后,连接延迟很大(大约在5~10秒),所以我就没有更新,1.1.9 都是毫秒级,如果想更新的话,把我那个接口的,加一行的就可以登录了(登录的那个接口)。
原来的代码:
$res = array(
'access_token' => $token,
'user' => array('name'=> $info['username'])
);
修改后:
$res = array(
'type' => 'access_token',//这行就是区别
'access_token' =>$token,
'user' => array('name'=> $info['username'])
);
Sheal 发表于 2023-8-24 15:46
不错,已经私信v5star大佬了。不知道他能不能改个SQLite版! 丢进宝塔直接运行,什么都不用改。很方便
附件里的接口文件就是sqlite版的,一个脚本丢到服务器就可以了 之前测试过这个本地搭服务器远程,显示效果太差了,内网还是用radmin 远程桌面外加这个
RDP 优化操作 微软远程桌面 开启显卡加速、60FPS、USB设备重定向
https://blog.csdn.net/csdn_life18/article/details/108250846 不知道远程效果怎么样,先感谢楼主分享 先收藏下,我目前用的是群辉上的中转服务,没用API,只是自己用还好,本机连接后有连接记录,感觉API好像也就没那么重要了 有用的资源又增加了,感谢楼主 bbs119 发表于 2023-8-24 14:41
之前测试过这个本地搭服务器远程,显示效果太差了,内网还是用radmin
内网radmin 简直yyds
不错,已经私信v5star大佬了。不知道他能不能改个SQLite版! 丢进宝塔直接运行,什么都不用改。很方便 v5star 发表于 2023-8-24 15:55
很好很强大,
其实,升级1.2.1后,连接延迟很大(大约在5~10秒),所以我就没有更新,1.1.9 都 ...
近距离感谢大佬