1
0
mirror of https://github.com/Mrs4s/MiraiGo.git synced 2025-05-04 19:17:38 +08:00

Merge pull request #102 from lz1998/master

more device info
This commit is contained in:
Mrs4s 2021-01-19 00:20:00 +08:00 committed by GitHub
commit 442ede44f3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -61,16 +61,36 @@ type Version struct {
} }
type DeviceInfoFile struct { type DeviceInfoFile struct {
Display string `json:"display"` Display string `json:"display"`
Product string `json:"product"` Product string `json:"product"`
Device string `json:"device"` Device string `json:"device"`
Board string `json:"board"` Board string `json:"board"`
Model string `json:"model"` Model string `json:"model"`
FingerPrint string `json:"finger_print"` FingerPrint string `json:"finger_print"`
BootId string `json:"boot_id"` BootId string `json:"boot_id"`
ProcVersion string `json:"proc_version"` ProcVersion string `json:"proc_version"`
Protocol int `json:"protocol"` // 0: Pad 1: Phone 2: Watch Protocol int `json:"protocol"` // 0: Pad 1: Phone 2: Watch
IMEI string `json:"imei"` IMEI string `json:"imei"`
Brand string `json:"brand"`
Bootloader string `json:"bootloader"`
BaseBand string `json:"base_band"`
Version *VersionFile `json:"version"`
SimInfo string `json:"sim_info"`
OsType string `json:"os_type"`
MacAddress string `json:"mac_address"`
IpAddress []int32 `json:"ip_address"`
WifiBSSID string `json:"wifiBSSID"`
WifiSSID string `json:"wifiSSID"`
ImsiMd5 string `json:"imsiMd5"`
AndroidId string `json:"android_id"`
Apn string `json:"apn"`
}
type VersionFile struct {
Incremental string `json:"incremental"`
Release string `json:"release"`
Codename string `json:"codename"`
Sdk uint32 `json:"sdk"`
} }
type groupMessageBuilder struct { type groupMessageBuilder struct {
@ -218,6 +238,24 @@ func (info *DeviceInfo) ToJson() []byte {
BootId: string(info.BootId), BootId: string(info.BootId),
ProcVersion: string(info.ProcVersion), ProcVersion: string(info.ProcVersion),
IMEI: info.IMEI, IMEI: info.IMEI,
Brand: string(info.Brand),
Bootloader: string(info.Bootloader),
BaseBand: string(info.BaseBand),
AndroidId: string(info.AndroidId),
Version: &VersionFile{
Incremental: string(info.Version.Incremental),
Release: string(info.Version.Release),
Codename: string(info.Version.CodeName),
Sdk: info.Version.Sdk,
},
SimInfo: string(info.SimInfo),
OsType: string(info.OSType),
MacAddress: string(info.MacAddress),
IpAddress: []int32{int32(info.IpAddress[0]), int32(info.IpAddress[1]), int32(info.IpAddress[2]), int32(info.IpAddress[3])},
WifiBSSID: string(info.WifiBSSID),
WifiSSID: string(info.WifiSSID),
ImsiMd5: hex.EncodeToString(info.IMSIMd5),
Apn: string(info.APN),
Protocol: func() int { Protocol: func() int {
switch info.Protocol { switch info.Protocol {
case IPad: case IPad:
@ -239,20 +277,47 @@ func (info *DeviceInfo) ToJson() []byte {
func (info *DeviceInfo) ReadJson(d []byte) error { func (info *DeviceInfo) ReadJson(d []byte) error {
var f DeviceInfoFile var f DeviceInfoFile
if err := json.Unmarshal(d, &f); err != nil { if err := json.Unmarshal(d, &f); err != nil {
return errors.Wrap(err, "failed to unmarshal protobuf message") return errors.Wrap(err, "failed to unmarshal json message")
} }
info.Display = []byte(f.Display) SetIfNotEmpty := func(trg []byte, str string) {
if f.Product != "" { if str != "" {
info.Product = []byte(f.Product) trg = []byte(str)
info.Device = []byte(f.Device) }
info.Board = []byte(f.Board)
info.Model = []byte(f.Model)
} }
info.FingerPrint = []byte(f.FingerPrint) SetIfNotEmpty(info.Display, f.Display)
info.BootId = []byte(f.BootId) SetIfNotEmpty(info.Product, f.Product)
info.ProcVersion = []byte(f.ProcVersion) SetIfNotEmpty(info.Device, f.Device)
info.IMEI = f.IMEI SetIfNotEmpty(info.Board, f.Board)
info.AndroidId = SystemDeviceInfo.Display SetIfNotEmpty(info.Brand, f.Brand)
SetIfNotEmpty(info.Model, f.Model)
SetIfNotEmpty(info.Bootloader, f.Bootloader)
SetIfNotEmpty(info.FingerPrint, f.FingerPrint)
SetIfNotEmpty(info.BootId, f.BootId)
SetIfNotEmpty(info.ProcVersion, f.ProcVersion)
SetIfNotEmpty(info.BaseBand, f.BaseBand)
SetIfNotEmpty(info.SimInfo, f.SimInfo)
SetIfNotEmpty(info.OSType, f.OsType)
SetIfNotEmpty(info.MacAddress, f.MacAddress)
if len(f.IpAddress) == 4 {
info.IpAddress = []byte{byte(f.IpAddress[0]), byte(f.IpAddress[1]), byte(f.IpAddress[2]), byte(f.IpAddress[3])}
}
SetIfNotEmpty(info.WifiBSSID, f.WifiBSSID)
SetIfNotEmpty(info.WifiSSID, f.WifiSSID)
if len(f.ImsiMd5) != 0 {
imsiMd5, err := hex.DecodeString(f.ImsiMd5)
if err != nil {
info.IMSIMd5 = imsiMd5
}
}
if f.IMEI != "" {
info.IMEI = f.IMEI
}
SetIfNotEmpty(info.AndroidId, f.AndroidId)
SetIfNotEmpty(info.APN, f.Apn)
info.AndroidId = info.Display // 兼容旧的
SetIfNotEmpty(info.AndroidId, f.Display)
switch f.Protocol { switch f.Protocol {
case 1: case 1:
info.Protocol = AndroidPhone info.Protocol = AndroidPhone