PT-Plugin-Plus icon indicating copy to clipboard operation
PT-Plugin-Plus copied to clipboard

群晖 DSM 7.0 API 发生改动

Open sfwn opened this issue 4 years ago • 14 comments

  • PT 助手版本: 栽培者 2021, 版本 v1.5.1
  • PT 助手安装方式:zip
  • 浏览器名称及版本:chrome
  • 浏览器是否安装了其他插件:yes
  • 停用其他插件后是否正常工作:no
  • 问题描述:

Synology DSM 7.0 API broked!

  • 相关截图:

失败的 URL: http://x.x.x.x:5000/webapi/auth.cgi?api=SYNO.API.Auth&version=2&method=login&account=myname&passwd=mypassword&session=DownloadStation&format=sid

image

成功的 URL: (version changed from 2 to 7) http://x.x.x.x:5000/webapi/auth.cgi?api=SYNO.API.Auth&version=7&method=login&account=myname&passwd=mypassword&session=DownloadStation&format=sid

image

  • 重现步骤:

使用 DSM 7.0 即可复现。7.0 在官网可以免费试用,https://demo.synology.cn/zh-cn/dsm#dsm70beta

sfwn avatar Jan 31 '21 16:01 sfwn

I found version in synologyDownloadStation init.ts is a hard-code value 2.

I changed this hard-code value to 7 and reimport decompressed crt. then it works.

image

sfwn avatar Jan 31 '21 16:01 sfwn

发送辅种任务仍然失败

sfwn avatar Jan 31 '21 16:01 sfwn

改成3试试?7过高了

curl "https://b74.dsm7demo.synology.com:5001/webapi/query.cgi"  --data-raw "query=all&api=SYNO.API.Info&method=query&version=1"

的结果显示

"SYNO.DownloadStation.Task":{"maxVersion":3,"minVersion":1,"path":"DownloadStation/task.cgi"}

即我们使用的API最高支持才到3

但 Auth 这个实在有些说不过去 {"SYNO.API.Auth":{"maxVersion":7,"minVersion":1,"path":"entry.cgi"}

因为看API返回是正常的,但demo环境我这边无法进行登录测试。

Rhilip avatar Feb 01 '21 03:02 Rhilip

image

改成 3 了,测试服务器连接可以的,但是发送辅种失败。

sfwn avatar Feb 01 '21 14:02 sfwn

emmm,因为官网的demo,并没有给用户名和密码信息,且本人并没有DSM 7环境,所以我也没办法进行进一步的测试。 那目前我能想到的比较好的方法是sid获取走version:3或者更高的接口,推送还是走version:2 的原始接口。 即不改动 init.js中写死的 this.version = 2,而是只改动 getSessionId()部分提交的version。

Index: resource/clients/synologyDownloadStation/init.js
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/resource/clients/synologyDownloadStation/init.js b/resource/clients/synologyDownloadStation/init.js
--- a/resource/clients/synologyDownloadStation/init.js	(revision 61365938efaf49b892118c0776d6477e5dec1329)
+++ b/resource/clients/synologyDownloadStation/init.js	(date 1612191034762)
@@ -18,7 +18,7 @@
      */
     getSessionId() {
       return new Promise((resolve, reject) => {
-        let url = `${this.options.address}/webapi/auth.cgi?api=SYNO.API.Auth&version=${this.version}&method=login&account=${encodeURIComponent(this.options.loginName)}&passwd=${encodeURIComponent(this.options.loginPwd)}&session=DownloadStation&format=sid`;
+        let url = `${this.options.address}/webapi/auth.cgi?api=SYNO.API.Auth&version=3&method=login&account=${encodeURIComponent(this.options.loginName)}&passwd=${encodeURIComponent(this.options.loginPwd)}&session=DownloadStation&format=sid`;
         $.ajax({
           url,
           timeout: PTBackgroundService.options.connectClientTimeout,

但是我不清楚具体可行性,如果不行的话,我这边也暂时没有精力将 DS 的 API 切到新版的 entry.cgi

据下述两条链接的测试,这样操作应该是可行的:

  • https://github.com/Sonarr/Sonarr/issues/3943#issuecomment-765066039
  • https://community.synology.com/enu/forum/20/post/139113?reply=440990

Rhilip avatar Feb 01 '21 14:02 Rhilip

我测试了一下 getSessionId 使用 version=3,其他用 2。测试连接没有问题呢,下载种子失败。 错误如图: image

sfwn avatar Feb 12 '21 09:02 sfwn

了解了, 鉴于 DSM 7 还处于beta版本,且 DownloadStation 对应文档未有更新说明, 加之此错误码过于宽泛,我们无法明确DSM7下的为什么原有方法无法走通, 我还是想等等社区看看其他人的解决方法。


在我们这边尽可能将方法切换到 entry.cgi 前,建议:

  1. 您工单向Synology技术支持反馈对应问题,这更应该是他们的兼容问题。
  2. 使用Docker下的其他客户端。

Rhilip avatar Feb 15 '21 10:02 Rhilip

目前最简便的方法,卸载新版DownloadStation 手动安装 上一个版本 官网下载的spk文件,不放心可以去官网下载 链接: https://pan.baidu.com/s/1vpu5LM9NIJ_s46wxpnOKFA 提取码: jysy

sdomusic avatar Mar 19 '21 10:03 sdomusic

其他一些repo关于 DSM7和部分较高版本的DS 无法推送的讨论,请参阅:

https://github.com/seansfkelley/synology-download-manager/issues/166 https://github.com/seansfkelley/synology-download-manager/issues/177 https://github.com/Sonarr/Sonarr/issues/4388 https://github.com/pymedusa/Medusa/issues/9366

Rhilip avatar Apr 05 '21 04:04 Rhilip

download station不好用啊,用docker装qb不香嘛?DSM 7用的很好

1tonsilla avatar Apr 07 '21 12:04 1tonsilla

download station不好用啊,用docker装qb不香嘛?DSM 7用的很好

感觉download station很好用,跨平台有app,还有各种浏览器插件

yongman avatar Nov 12 '21 03:11 yongman

请于 #964 报告DSM7以及较老版本的适配情况。

Rhilip avatar Jan 25 '22 13:01 Rhilip

SYNO.API.Auth对应的version取6可能更合适? 根据手册, https://cndl.synology.cn/download/Document/Software/DeveloperGuide/Os/DSM/All/enu/DSM_Login_Web_API_Guide_enu.pdf version=6 is recommended

specialpointcentral avatar Feb 05 '22 06:02 specialpointcentral

SYNO.API.Auth对应的version取6可能更合适? 根据手册, cndl.synology.cn/download/Document/Software/DeveloperGuide/Os/DSM/All/enu/DSM_Login_Web_API_Guide_enu.pdf version=6 is recommended

有点过,version=3 已经能满足我们所需要的所有参数。如果能用的话,没有必要强行推高到 version=6 另外也要考虑非DSM7的用户使用。

Rhilip avatar Feb 05 '22 09:02 Rhilip

目前最简便的方法,卸载新版DownloadStation 手动安装 上一个版本 官网下载的spk文件,不放心可以去官网下载 链接: https://pan.baidu.com/s/1vpu5LM9NIJ_s46wxpnOKFA 提取码: jysy

您好,7.1.1DSM提示套件格式不正确了。 请教一下,version=6 这个配置文件是在哪里的?

beijiaoff avatar Oct 23 '22 04:10 beijiaoff

修改版本号后DSM7.1.1,能添加ysnology download station,但是无法推送种子,我看了前面的issues进展,这么久了都没有解决。不知道有没有成功的朋友,指点一下。

tyejuan avatar Nov 19 '22 12:11 tyejuan