SynologySwift
DiskStation 的 Swift 库,用于使用 DSM API
工具
- 基于 QuickConnectId 解析 NAS 主机/IP
- 列出可用的 API
- 加密登录
安装
Swift 5
使用 Cocoapods
pod 'SynologySwift'
使用 Carthage
github "Thomaslegravier/SynologySwift"
用法
import SynologySwift
解析特定 QuickConnectId 的 DS 可达接口
SynologySwift.resolveURL(quickConnectId: "your-quick-id") { (result) in
switch result {
case .success(let data):
let dsPort = data.port
let dsHost = data.host
case .failure(let error): break
}
}
列出 DS 上的可用 API
SynologySwift.resolveAvailableAPIs { (result) in
switch result {
case .success(let data):
for service in data.apiList! {
let serviceName = service.key // Example : SYNO.API.Auth
let servicePath = service.value.path // Example : auth.cgi
}
case .failure(let error): break
}
}
加密认证连接
SynologySwift.login(quickConnectid: "your-quick-id", sessionType: "DownloadStation", login: "login", password: "password", useDefaultCacheApis: false) { (result) in
switch result {
case .success(let data):
let accountName = data.account // Account name
let sessionId = data.sid // Sid param for futher connected calls
case .failure(let error): break
}
}
/* NB : Set 'useDefaultCacheApis' for faster login. If true, we use default auth and encryption APIs paths, instead fetch all available APIs on your DS. Use at your own risk. */
获取特定服务的详细信息
let dlService = SynologySwift.serviceInfos(serviceName: "SYNO.DownloadStation.Info")
let path = dlService.path
登出
let dsAuthInfos = SynologySwiftAuth.DSAuthInfos(sid: "XXXXXXXXX", account: "account-name", dsInfos: SynologySwiftURLResolver.DSInfos(quickId: "your-quick-id", host: "XXXXXXX", port: 5000))
SynologySwift.logout(dsAuthInfos: dsAuthInfos, sessionType: "DownloadStation") { (result) in
switch result {
case .success(_): print("Success logout")
case .failure(let error): print(error)
}
}
/* NB : Use auth infos from your last login session to perform logout. */
详细信息
登录助手
- 根据 QuickConnectId 自动解析您的 DS 主机
- 列出 DS 上的可用 API
- 获取加密详细信息
- 使用您的账户信息进行登录。
- 支持 OTP 代码登录
- 获取特定服务信息路径
- 从特定会话登出
您的登录和密码被加密且不会存储。
致谢
- 感谢 @Frizlab 在 RSA/AES 加密部分的贡献。
- 感谢 @soyersoyer 对 SwCrypt 实现的 RSA 部分的贡献。