Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
alist-org
GitHub Repository: alist-org/alist
Path: blob/main/internal/sign/archive.go
1560 views
1
package sign
2
3
import (
4
"sync"
5
"time"
6
7
"github.com/alist-org/alist/v3/internal/conf"
8
"github.com/alist-org/alist/v3/internal/setting"
9
"github.com/alist-org/alist/v3/pkg/sign"
10
)
11
12
var onceArchive sync.Once
13
var instanceArchive sign.Sign
14
15
func SignArchive(data string) string {
16
expire := setting.GetInt(conf.LinkExpiration, 0)
17
if expire == 0 {
18
return NotExpiredArchive(data)
19
} else {
20
return WithDurationArchive(data, time.Duration(expire)*time.Hour)
21
}
22
}
23
24
func WithDurationArchive(data string, d time.Duration) string {
25
onceArchive.Do(InstanceArchive)
26
return instanceArchive.Sign(data, time.Now().Add(d).Unix())
27
}
28
29
func NotExpiredArchive(data string) string {
30
onceArchive.Do(InstanceArchive)
31
return instanceArchive.Sign(data, 0)
32
}
33
34
func VerifyArchive(data string, sign string) error {
35
onceArchive.Do(InstanceArchive)
36
return instanceArchive.Verify(data, sign)
37
}
38
39
func InstanceArchive() {
40
instanceArchive = sign.NewHMACSign([]byte(setting.GetStr(conf.Token) + "-archive"))
41
}
42
43