pt-plugins / PT-Plugin-Plus

PT 助手 Plus,为 Microsoft Edge、Google Chrome、Firefox 浏览器插件(Web Extensions),主要用于辅助下载 PT 站的种子。
MIT License
6.82k stars 845 forks source link

请求增加对 Deluge Daemon 的直接支持 #207

Closed GoldJohnKing closed 4 years ago

GoldJohnKing commented 5 years ago

您的功能请求是否与问题有关? 请描述一下。 PT-Plugin-Plus 的下载服务器适配中似乎缺乏对 Deluge Daemon 的支持。 简言之,Deluge Daemon 要求用户名和密码,而 PT-Plugin-Plus 当前只要求密码而无用户名。 请详见末尾截图中,目前 PT-Plugin-Plus 的 Deluge 适配与实际上 Deluge Daemon 服务器登录要求的区别。

描述你想要的解决方案 希望能够直接增加对 Deluge Daemon 下载服务器的支持。

描述您考虑过的替代方案 填写 Deluge Web 的参数则可以连接,但毕竟服务器上还得多装一个 deluge-web 软件包,多走一层代理毕竟也多容易出一层问题。实际上,Deluge 的客户端软件已经支持直接连接到远程 Deluge Daemon 服务器。末尾截图就是 Deluge 的 Windows 客户端的远程连接功能。

其他附加信息 屏幕截图(9) 屏幕截图(10)

Rhilip commented 5 years ago

可能不会考虑支持,原因如下:

  1. 我未能找到直接的基于你所述的Deluge Daemon 使用Javascript实现的其他例子或者官方调用说明,如果你能找到的话,还请告知我查看。
  2. 你所述的“Deluge 的 Windows 客户端的远程连接功能”(即Thin Client,下同),我尝试使用后发现该功能使用RPC形式与Deluge Daemon进行联系,而非目前Deluge Web的HTTP request形式。且插件目前未有对Javscript RPC的支持。
GoldJohnKing commented 5 years ago

我未能找到直接的基于你所述的Deluge Daemon 使用Javascript实现的其他例子或者官方调用说明,如果你能找到的话,还请告知我查看。

个人能力所限,对此不太了解。不知 Deluge 客户端的 Python 版本可否用于参考。 https://github.com/deluge-torrent/deluge

你所述的“Deluge 的 Windows 客户端的远程连接功能”(即Thin Client,下同),我尝试使用后发现该功能使用RPC形式与Deluge Daemon进行联系,而非目前Deluge Web的HTTP request形式。且插件目前未有对Javscript RPC的支持。

Thin Client 确实使用 RPC 方式与 Daemon 连接,不如说目前以 rpc 方式连接 daemon 算是更主流的做法。不过一款叫做 Transmission Remote GUI 的客户端也是以 RPC 连接 Transmission 服务器的,不知可否参考。 https://github.com/transmission-remote-gui/transgui

Rhilip commented 5 years ago

可能之前一些说法让你有些误解。本人在回复之前看过Deluge的repo,并看过Thin Client关于remote支持的情况并使用抓包软件进行测试过。 Deluge的Thin Client使用 RPC 方式与 Daemon 连接,但是是以TCP Socket的形式连接的,TCP Socket(不是WebSocket)目前不受浏览器直接支持(下注)。而Transmission虽然也是RPC,但是他的RPC接口支持HTTP (per XMLHttpRequest) 请求。

refs:

ronggang commented 5 years ago

如果是socket来连接,插件无法获取权限,只有Chrome App 才有权限。所以这种方式插件目前无法实现。

GoldJohnKing commented 5 years ago

我明白了。 既然无法实现,那就 Close issue 了。

GoldJohnKing commented 4 years ago

你好,我发现 Deluge 有相关的 JSON API 扩展插件 deluge-webapi,使用HTTP协议进行通讯,不值可否供参考。 项目地址:https://github.com/idlesign/deluge-webapi 项目文档地址:https://deluge-webapi.readthedocs.io/en/latest/index.html

Rhilip commented 4 years ago

@GoldJohnKing 您好,通过对您贴出的链接以及该项目的测试例 阅读,我认为: 该项目提供的webapi并虽然能绕过deluged-web,但其并不需要我们修改现有deluge下载推送方式或者添加新的下载服务器类型。 因为该组件也是直接使用单密码进行验证,且使用接口和现有下载服务器相同。 您可以直接修改目前下载服务器配置端口从deluge-web到deluge-deamon进行测试。 期待您的测试结果。

GoldJohnKing commented 4 years ago

@GoldJohnKing 您好,通过对您贴出的链接以及该项目的测试例 阅读,我认为: 该项目提供的webapi并虽然能绕过deluged-web,但其并不需要我们修改现有deluge下载推送方式或者添加新的下载服务器类型。 因为该组件也是直接使用单密码进行验证,且使用接口和现有下载服务器相同。 您可以直接修改目前下载服务器配置端口从deluge-web到deluge-deamon进行测试。 期待您的测试结果。

启用webapi插件并设定可访问域名后,直接将PT-Plugin-Plus的Deluge服务器端口配置到daemon的端口上,无法正常连接,提示“服务器不可用或网络错误”。

ronggang commented 4 years ago

@GoldJohnKing 我怎么看那文档的接口好像和助手现在用的接口是一样的呢。 提示错误,可否看一下实际网络的请求结果?

GoldJohnKing commented 4 years ago

插件日志: {"data":{"code":0,"msg":"服务器不可用或网络错误","status":"error"},"success":false,"type":"error"}{"data":{"code":0,"msg":"服务器不可用或网络错误","status":"timeout"},"success":false,"type":"error"}

ronggang commented 4 years ago

插件日志: {"data":{"code":0,"msg":"服务器不可用或网络错误","status":"error"},"success":false,"type":"error"}{"data":{"code":0,"msg":"服务器不可用或网络错误","status":"timeout"},"success":false,"type":"error"}

感谢反馈,看起来是连接超时,如果可以请根据以下方法跟踪网络请求: https://github.com/ronggang/PT-Plugin-Plus/wiki/how-to-open-background-page 看看实际的 HeadersResponse 是什么。

Rhilip commented 4 years ago

根据本人的测试(Deluge 1.3.9 启用WEBUI和WEBAPI,daemon端口在58846)

# curl -X POST http://127.0.0.1:58846/json -H "Content-Type: application/json" -d '{"id":0,"method":"auth.login","params":["xxxxxxxxxx"]}'
curl: (52) Empty reply from server

以及 项目测试例,特别是已有PHP的实现 https://github.com/idlesign/deluge-webapi/blob/master/webapi/test.py https://github.com/kaysond/deluge-php

lz在前面提出的 JSON API 扩展插件 deluge-webapi 仍然是基于当前deluge-web方法的扩展,并不具有 Deluge Daemon 的直接支持 的功能

image