39 lines
850 B
Go
39 lines
850 B
Go
//go:build ios || ios_target
|
|||
|
|
|
||
|
|
package config
|
||
|
|
|
||
|
|
import (
|
||
|
|
"crypto/rand"
|
||
|
|
"encoding/hex"
|
||
|
|
"log"
|
||
|
|
"os"
|
||
|
|
"strings"
|
||
|
|
)
|
||
|
|
|
||
|
|
const iosMachineIDFile = "config/ios_machine_id"
|
||
|
|
|
||
|
|
func platformMachineID() string {
|
||
|
|
data, err := os.ReadFile(iosMachineIDFile)
|
||
|
|
if err == nil {
|
||
|
|
if id := strings.TrimSpace(string(data)); id != "" {
|
||
|
|
return id
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
b := make([]byte, 16)
|
||
|
|
if _, err := rand.Read(b); err != nil {
|
||
|
|
log.Printf("[identity] WARNING: failed to generate iOS machine ID: %v", err)
|
||
|
|
return ""
|
||
|
|
}
|
||
|
|
id := hex.EncodeToString(b)
|
||
|
|
|
||
|
|
if err := os.MkdirAll("config", 0700); err != nil {
|
||
|
|
log.Printf("[identity] WARNING: failed to create config dir for iOS machine ID: %v", err)
|
||
|
|
return id
|
||
|
|
}
|
||
|
|
if err := os.WriteFile(iosMachineIDFile, []byte(id), 0600); err != nil {
|
||
|
|
log.Printf("[identity] WARNING: failed to persist iOS machine ID: %v", err)
|
||
|
|
}
|
||
|
|
return id
|
||
|
|
}
|