44 lines
756 B
Go
44 lines
756 B
Go
package core
|
|
|
|
import (
|
|
"crypto/hmac"
|
|
"crypto/sha256"
|
|
"encoding/hex"
|
|
|
|
"github.com/cdle/sillyplus/core/storage"
|
|
"github.com/cdle/sillyplus/utils"
|
|
)
|
|
|
|
func protect(appID, id string) string {
|
|
mac := hmac.New(sha256.New, []byte(id))
|
|
mac.Write([]byte(appID))
|
|
return hex.EncodeToString(mac.Sum(nil))
|
|
}
|
|
|
|
func init() {
|
|
GetMachineID()
|
|
storage.Watch(sillyGirl, "machine_id", func(old, new, key string) *storage.Final {
|
|
if old == "" {
|
|
return nil
|
|
}
|
|
return &storage.Final{
|
|
Now: old,
|
|
}
|
|
})
|
|
}
|
|
|
|
var machine_id = ""
|
|
|
|
var GetMachineID = func() string {
|
|
var id = ""
|
|
if id == "" {
|
|
id = sillyGirl.GetString("machine_id")
|
|
}
|
|
if id == "" {
|
|
id = protect(utils.GenUUID(), "sillyplus")
|
|
sillyGirl.Set("machine_id", id)
|
|
}
|
|
machine_id = id
|
|
return id
|
|
}
|