Skip to content

Commit

Permalink
[client>android] add serial, product model, product manufacturer
Browse files Browse the repository at this point in the history
Signed-off-by: Edouard Vanbelle <[email protected]>
  • Loading branch information
EdouardVanbelle committed Nov 29, 2024
1 parent 9203690 commit 81eab20
Showing 1 changed file with 37 additions and 1 deletion.
38 changes: 37 additions & 1 deletion client/system/info_android.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,9 @@ func GetInfo(ctx context.Context) *Info {
WiretrusteeVersion: version.NetbirdVersion(),
UIVersion: extractUIVersion(ctx),
KernelVersion: kernelVersion,
SystemSerialNumber: serial(),
SystemProductName: productModel(),
SystemManufacturer: productManufacturer(),
}

return gio
Expand All @@ -49,13 +52,42 @@ func checkFileAndProcess(paths []string) ([]File, error) {
return []File{}, nil
}

func serial() string {
// try to fetch serial ID using different properties
properties := []string{"ril.serialnumber", "ro.serialno", "ro.boot.serialno", "sys.serialnumber"}
var value string

for _, property := range properties {
value = getprop(property)
if len(value) > 0 {
return value
}
}

// unable to get serial ID, fallback to ANDROID_ID
return androidId()
}

func androidId() string {
// this is a uniq id defined on first initialization, id will be a new one if user wipes his device
return run("/system/bin/settings", "get", "secure", "android_id")
}

func productModel() string {
return getprop("ro.product.model")
}

func productManufacturer() string {
return getprop("ro.product.manufacturer")
}

func uname() []string {
res := run("/system/bin/uname", "-a")
return strings.Split(res, " ")
}

func osVersion() string {
return run("/system/bin/getprop", "ro.build.version.release")
return getprop("ro.build.version.release")
}

func extractUIVersion(ctx context.Context) string {
Expand All @@ -66,6 +98,10 @@ func extractUIVersion(ctx context.Context) string {
return v
}

func getprop(arg ...string) string {
return run("/system/bin/getprop", arg...)
}

func run(name string, arg ...string) string {
cmd := exec.Command(name, arg...)
cmd.Stdin = strings.NewReader("some")
Expand Down

0 comments on commit 81eab20

Please sign in to comment.