Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

群晖 DSM 7.0 API 发生改动 #687

Closed
sfwn opened this issue Jan 31, 2021 · 16 comments · Fixed by #964
Closed

群晖 DSM 7.0 API 发生改动 #687

sfwn opened this issue Jan 31, 2021 · 16 comments · Fixed by #964
Labels
bug Something isn't working need more information 需要更多的信息

Comments

@sfwn
Copy link

sfwn commented Jan 31, 2021

  • 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 sfwn added the bug Something isn't working label Jan 31, 2021
@sfwn
Copy link
Author

sfwn commented Jan 31, 2021

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
Copy link
Author

sfwn commented Jan 31, 2021

发送辅种任务仍然失败

@Rhilip
Copy link
Collaborator

Rhilip commented Feb 1, 2021

改成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 Rhilip added the need more information 需要更多的信息 label Feb 1, 2021
@sfwn
Copy link
Author

sfwn commented Feb 1, 2021

image

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

@Rhilip
Copy link
Collaborator

Rhilip commented Feb 1, 2021

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

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

@sfwn
Copy link
Author

sfwn commented Feb 12, 2021

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

@Rhilip
Copy link
Collaborator

Rhilip commented Feb 15, 2021

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


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

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

@sdomusic
Copy link

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

@Rhilip
Copy link
Collaborator

Rhilip commented Apr 5, 2021

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

seansfkelley/nas-download-manager#166
seansfkelley/nas-download-manager#177
Sonarr/Sonarr#4388
pymedusa/Medusa#9366

@1tonsilla
Copy link

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

@yongman
Copy link

yongman commented Nov 12, 2021

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

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

@Rhilip Rhilip linked a pull request Jan 25, 2022 that will close this issue
@Rhilip
Copy link
Collaborator

Rhilip commented Jan 25, 2022

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

@specialpointcentral
Copy link

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

@Rhilip
Copy link
Collaborator

Rhilip commented Feb 5, 2022

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的用户使用。

@beijiaoff
Copy link

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

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

@tyejuan
Copy link

tyejuan commented Nov 19, 2022

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

@Rhilip Rhilip unpinned this issue Nov 19, 2022
@Rhilip Rhilip closed this as completed Nov 19, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working need more information 需要更多的信息
Projects
None yet
Development

Successfully merging a pull request may close this issue.

8 participants