Files
web_hgdjb_server/pub/common/m3u8/enkey.go
T
2026-11-07 10:47:32 +08:00

64 lines
1.2 KiB
Go

package m3u8
import (
"bytes"
"context"
"io/ioutil"
"sync"
)
var (
cacheEnkey []byte
cacheLsjEnkey []byte
initOnce sync.Once
cacheNewEnkey []byte
newEnkeyErr error
newEnkeyOnce sync.Once
)
func initEnkey() {
initOnce.Do(func() {
if len(cacheEnkey) == 0 {
data, err := ioutil.ReadFile("conf/m3u8.key")
if err != nil {
panic(err)
}
cacheEnkey = data
}
if len(cacheLsjEnkey) == 0 {
data, err := ioutil.ReadFile("conf/lsjm3u8.key")
if err != nil {
panic(err)
}
cacheLsjEnkey = data
}
})
}
func Enkey(ctx context.Context) (buffer *bytes.Buffer, err error) {
if cacheEnkey == nil {
initEnkey()
}
buffer = bytes.NewBuffer(cacheEnkey)
return
}
// NewEnkey 返回短剧原片使用的新 M3U8 解密密钥。
func NewEnkey(ctx context.Context) (buffer *bytes.Buffer, err error) {
newEnkeyOnce.Do(func() {
cacheNewEnkey, newEnkeyErr = ioutil.ReadFile("conf/newm3u8.key")
})
if newEnkeyErr != nil {
return nil, newEnkeyErr
}
return bytes.NewBuffer(cacheNewEnkey), nil
}
func LsjEnkey(ctx context.Context) (buffer *bytes.Buffer, err error) {
if cacheLsjEnkey == nil {
initEnkey()
}
buffer = bytes.NewBuffer(cacheLsjEnkey)
return
}