Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
alist-org
GitHub Repository: alist-org/alist
Path: blob/main/drivers/123_link/util.go
1986 views
1
package _123Link
2
3
import (
4
"crypto/md5"
5
"fmt"
6
"math/rand"
7
"net/url"
8
"time"
9
)
10
11
func SignURL(originURL, privateKey string, uid uint64, validDuration time.Duration) (newURL string, err error) {
12
if privateKey == "" {
13
return originURL, nil
14
}
15
var (
16
ts = time.Now().Add(validDuration).Unix() // 有效时间戳
17
rInt = rand.Int() // 随机正整数
18
objURL *url.URL
19
)
20
objURL, err = url.Parse(originURL)
21
if err != nil {
22
return "", err
23
}
24
authKey := fmt.Sprintf("%d-%d-%d-%x", ts, rInt, uid, md5.Sum([]byte(fmt.Sprintf("%s-%d-%d-%d-%s",
25
objURL.Path, ts, rInt, uid, privateKey))))
26
v := objURL.Query()
27
v.Add("auth_key", authKey)
28
objURL.RawQuery = v.Encode()
29
return objURL.String(), nil
30
}
31
32