From cd4e2358495459ce030d54b6e0325ae324f2527c Mon Sep 17 00:00:00 2001 From: FriendlyNeighborhoodShane Date: Wed, 11 Jan 2023 09:54:03 +0530 Subject: [PATCH 1/2] npem: factor out get_uid --- Full/system/bin/nanodroid-perm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Full/system/bin/nanodroid-perm b/Full/system/bin/nanodroid-perm index 19be7065..93bb927f 100755 --- a/Full/system/bin/nanodroid-perm +++ b/Full/system/bin/nanodroid-perm @@ -25,9 +25,6 @@ nlpDejavu="org.fitchfamily.android.dejavu" nlpApple="org.microg.nlp.backend.apple" nlpBmap="org.openbmap.unifiedNlp" -# GmsCore userId -gms_uid=$(dumpsys package com.google.android.gms | awk -F= '/userId/{print $2; exit}') - error () { echo "!! ${@}" exit 1 @@ -64,6 +61,10 @@ permissions () { fi } +get_uid () { + dumpsys package ${1} | awk -F= '/userId/{print $2; exit}' +} + get_app_location () { pm list packages -f ${1} | sed 's|package:\(.*\)=[^=]*|\1|g' } @@ -87,6 +88,8 @@ user_install () { [[ $(whoami) = "root" ]] || [[ $(whoami) = "shell" ]] || error "not running as either ADB or root" +gms_uid=$(get_uid ${microG}) + if [ "$(getprop ro.build.version.sdk)" -ge 29 ]; then # microG GmsCore needs to be installed as user app for all permissions to be granted # see https://github.com/microg/android_packages_apps_GmsCore/issues/1100#issuecomment-711088518 From b6587525e0722fef4add312fd2236d48a73124ba Mon Sep 17 00:00:00 2001 From: FriendlyNeighborhoodShane Date: Wed, 11 Jan 2023 10:03:47 +0530 Subject: [PATCH 2/2] npem: add LOS network allowlisting LOS now uses a new uid-based network allowlist, which seems to not grant internet access on boot sometimes. Automate enabling access. --- Full/system/bin/nanodroid-perm | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/Full/system/bin/nanodroid-perm b/Full/system/bin/nanodroid-perm index 93bb927f..cbfc62ff 100755 --- a/Full/system/bin/nanodroid-perm +++ b/Full/system/bin/nanodroid-perm @@ -86,14 +86,34 @@ user_install () { esac } +allow_networking () { + oldlist="$(settings get global uids_allowed_on_restricted_networks)" + newlist="$(echo "${oldlist}" | sed 's|;|\n|g')" + if echo "${newlist}" | grep -q "^${2}$"; then + echo "package ${1} already in LOS networking allowlist" + return + fi + newlist="$( { echo "${newlist}"; echo "${2}"; } | sort -nu)" + newlist="$(printf '%d;' ${newlist})" + newlist="${newlist%;}" + settings put global uids_allowed_on_restricted_networks "${newlist}" + echo "package ${1} added to LOS networking allowlist" +} + [[ $(whoami) = "root" ]] || [[ $(whoami) = "shell" ]] || error "not running as either ADB or root" gms_uid=$(get_uid ${microG}) +play_uid=$(get_uid ${PlayStore}) if [ "$(getprop ro.build.version.sdk)" -ge 29 ]; then # microG GmsCore needs to be installed as user app for all permissions to be granted # see https://github.com/microg/android_packages_apps_GmsCore/issues/1100#issuecomment-711088518 user_install ${microG} + if settings list global | grep -q "^uids_allowed_on_restricted_networks="; then + # both need this on LOS-based ROMs in some situations like it restricting their internet for no reason + allow_networking ${microG} ${gms_uid} + allow_networking ${PlayStore} ${play_uid} + fi; fi # Fake Package Signature