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

fix: 解决多吉云临时秘钥两个小时过期的问题 #6273

Merged
merged 9 commits into from
Mar 27, 2024
Merged

fix: 解决多吉云临时秘钥两个小时过期的问题 #6273

merged 9 commits into from
Mar 27, 2024

Conversation

eryajf
Copy link
Contributor

@eryajf eryajf commented Mar 26, 2024

如题,多吉云的临时秘钥是两个小时过期,之前对项目秘钥加载机制不是很了解,以为会自动处理。经体验之后发现不会,现在通过定时任务,定时刷新认证。

@anwen-anyi
Copy link
Contributor

当第一次S3支持三段式的时候 就想试试多吉云来着,但是获取的秘钥只有2小时,而且还得使用多吉云官方的API获取并不是直接后台获取,挺不方便的

大佬你这个三段式秘钥第一次获取也是通过官方API获取吗?然后后续会自动刷新? 😹

@eryajf
Copy link
Contributor Author

eryajf commented Mar 27, 2024

当第一次S3支持三段式的时候 就想试试多吉云来着,但是获取的秘钥只有2小时,而且还得使用多吉云官方的API获取并不是直接后台获取,挺不方便的

大佬你这个三段式秘钥第一次获取也是通过官方API获取吗?然后后续会自动刷新? 😹

确实不够方便,但因为我个人一直在用多吉云,所以就想折腾一下。这里刷新的逻辑,也是参考了其他几个driver的刷新方案,算是加了个定时任务,定时刷新,我昨天自己实测应该是没问题了。

@anwen-anyi
Copy link
Contributor

所以第一次获取三段式的第三段的秘钥是通过多吉云API获取还是填写前两段正常的吗,然后第三段自己会自动填充

@eryajf
Copy link
Contributor Author

eryajf commented Mar 27, 2024

所以第一次获取三段式的第三段的秘钥是通过多吉云API获取还是填写前两段正常的吗,然后第三段自己会自动填充

我知道你想问什么了,对的,控制台配置就还是配置多吉云提供的永久秘钥,然后程序认证之前会先通过永久秘钥请求多吉云的接口生成临时秘钥,然后用这个临时秘钥跟他交互。这次pr就是为了解决这个临时秘钥只有2小时有效期的问题。

@anwen-anyi
Copy link
Contributor

所以第一次获取三段式的第三段的秘钥是通过多吉云API获取还是填写前两段正常的吗,然后第三段自己会自动填充

我知道你想问什么了,对的,控制台配置就还是配置多吉云提供的永久秘钥,然后程序认证之前会先通过永久秘钥请求多吉云的接口生成临时秘钥,然后用这个临时秘钥跟他交互。这次pr就是为了解决这个临时秘钥只有2小时有效期的问题。

昂 那还是有点儿门槛,正常用户不会去请求接口获取临时秘钥 哈哈~ 😹 😹

@eryajf
Copy link
Contributor Author

eryajf commented Mar 27, 2024

所以第一次获取三段式的第三段的秘钥是通过多吉云API获取还是填写前两段正常的吗,然后第三段自己会自动填充

我知道你想问什么了,对的,控制台配置就还是配置多吉云提供的永久秘钥,然后程序认证之前会先通过永久秘钥请求多吉云的接口生成临时秘钥,然后用这个临时秘钥跟他交互。这次pr就是为了解决这个临时秘钥只有2小时有效期的问题。

昂 那还是有点儿门槛,正常用户不会去请求接口获取临时秘钥 哈哈~ 😹 😹

其实还好,一般用户的确不用关心,因为之前做过这块儿交互,所以相对熟悉一点。 最后,期待 @xhofe 早日合并。

@anwen-anyi
Copy link
Contributor

其实还好,一般用户的确不用关心,因为之前做过这块儿交互,所以相对熟悉一点。 最后,期待 @xhofe 早日合并。

哈哈 我想说的是 普通用户也想挂载这个 哈哈 就卡在了获取临时秘钥的门槛 😹

@eryajf
Copy link
Contributor Author

eryajf commented Mar 27, 2024

其实还好,一般用户的确不用关心,因为之前做过这块儿交互,所以相对熟悉一点。 最后,期待 @xhofe 早日合并。

哈哈 我想说的是 普通用户也想挂载这个 哈哈 就卡在了获取临时秘钥的门槛 😹

我怎么感觉你理解偏了呢,如果现在用alist最新版,你添加存储,选择Doge这个类型,然后填写多吉云那里的永久秘钥就可以直接使用了。不需要管什么临时秘钥的事儿,代码里做处理了。

@anwen-anyi
Copy link
Contributor

其实还好,一般用户的确不用关心,因为之前做过这块儿交互,所以相对熟悉一点。 最后,期待 @xhofe 早日合并。

哈哈 我想说的是 普通用户也想挂载这个 哈哈 就卡在了获取临时秘钥的门槛 😹

我怎么感觉你理解偏了呢,如果现在用alist最新版,你添加存储,选择Doge这个类型,然后填写多吉云那里的永久秘钥就可以直接使用了。不需要管什么临时秘钥的事儿,代码里做处理了。

这样就理解通透了 👍

Copy link
Collaborator

@xhofe xhofe left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cron定时任务需要在Drop函数中停止。

@eryajf
Copy link
Contributor Author

eryajf commented Mar 27, 2024

cron定时任务需要在Drop函数中停止。

已添加

@xhofe xhofe merged commit 8a18f47 into AlistGo:main Mar 27, 2024
3 checks passed
@eryajf
Copy link
Contributor Author

eryajf commented Mar 28, 2024

@xhofe 目前来看,应该还有问题。我在本地测试了下,打印了重置的操作,以及临时秘钥过期时间,本地有如下输出:

Doge init session
ExpiredAt: 2024-03-28 12:42:55 +0800 CST

Doge init session
ExpiredAt: 2024-03-28 14:40:57 +0800 CST

这里能看到 initSession() 方法已经被重新调用了,但不知道为什么,我在主页下,发现仍旧还会变403。这里想请教下,难道真正获取列表的方法,不是使用 initSession() 里边生成的session吗?

@eryajf
Copy link
Contributor Author

eryajf commented Mar 28, 2024

@xhofe 目前来看,应该还有问题。我在本地测试了下,打印了重置的操作,以及临时秘钥过期时间,本地有如下输出:

Doge init session
ExpiredAt: 2024-03-28 12:42:55 +0800 CST

Doge init session
ExpiredAt: 2024-03-28 14:40:57 +0800 CST

这里能看到 initSession() 方法已经被重新调用了,但不知道为什么,我在主页下,发现仍旧还会变403。这里想请教下,难道真正获取列表的方法,不是使用 initSession() 里边生成的session吗?

不知道是不是漏掉了两行代码的缘故,我现在把这里的逻辑调整了下:

	if d.config.Name == "Doge" {
		d.cron = cron.NewCron(time.Minute * 118)
		d.cron.Do(func() {
			err := d.initSession()
			if err != nil {
				log.Errorln("Doge init session error:", err)
			}
			d.client = d.getClient(false)
			d.linkClient = d.getClient(true)
		})
	}

是不是需要重新getClient一下。至少下午本地测试验证的时候,貌似没有403的问题了。我再持续跟踪一下下一波看看会不会有问题了。

另外一个问题就是目前用的sqlite包有点尴尬,我想把项目打起来,在centos运行,就有CGO依赖上的问题,导致不好在服务器运行验证,这个还挺麻烦的。如果这块儿有打算调整,可参见我之前的笔记:记录VSCode中写Go代码切换Sqlite无CGO依赖版本的过程以及遇到的五个问题,或者需要的话,我也可以提个这方面的pr。

EtherealAO pushed a commit to EtherealAO/alist that referenced this pull request Apr 12, 2024
…tGo#6273)

* feat: add doge driver

* doc: 补充readme文档

* fix: 对齐meta信息

* fix: 调整结构体名字,与driver保持一致

* perf: merge to s3

* Rename goge.go to doge.go

* fix: 解决多吉云临时秘钥两个小时过期的问题

* fix: 定时任务在Drop中Stop

---------

Co-authored-by: Andy Hsu <[email protected]>
EtherealAO pushed a commit to EtherealAO/alist that referenced this pull request Apr 12, 2024
…tGo#6273)

* feat: add doge driver

* doc: 补充readme文档

* fix: 对齐meta信息

* fix: 调整结构体名字,与driver保持一致

* perf: merge to s3

* Rename goge.go to doge.go

* fix: 解决多吉云临时秘钥两个小时过期的问题

* fix: 定时任务在Drop中Stop

---------

Co-authored-by: Andy Hsu <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants