Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
alist-org
GitHub Repository: alist-org/alist
Path: blob/main/internal/sign/sign.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 once sync.Once
13
var instance sign.Sign
14
15
func Sign(data string) string {
16
expire := setting.GetInt(conf.LinkExpiration, 0)
17
if expire == 0 {
18
return NotExpired(data)
19
} else {
20
return WithDuration(data, time.Duration(expire)*time.Hour)
21
}
22
}
23
24
func WithDuration(data string, d time.Duration) string {
25
once.Do(Instance)
26
return instance.Sign(data, time.Now().Add(d).Unix())
27
}
28
29
func NotExpired(data string) string {
30
once.Do(Instance)
31
return instance.Sign(data, 0)
32
}
33
34
func Verify(data string, sign string) error {
35
once.Do(Instance)
36
return instance.Verify(data, sign)
37
}
38
39
func Instance() {
40
instance = sign.NewHMACSign([]byte(setting.GetStr(conf.Token)))
41
}
42
43