Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[client>android] add serial, product model, product manufacturer #2958

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading