Add misc conf functions

gf-arm64
ShaneTheAwesome 5 years ago
parent 6cf65259f0
commit f2f97c1bd8

@ -0,0 +1,66 @@
user_conf() {
for dir in "$(dirname "$0")" "$(dirname "$zipfile")" "$moddir" "/data/adb"; do
[ -f "$dir/includelist.txt" -o "$dir/excludelist.txt" ] && {
ui_print " ";
[ -f "$dir/includelist.txt" ] && {
ui_print "Processing include config from $dir...";
includelist="$(cat "$dir/includelist.txt" | sed -e 's|\#.*||g' -e 's/[\#%&\`|*+=!@:;\t$^()?\[\]{}<>]/ /g')";
} || {
ui_print "Processing exclude config from $dir...";
excludelist="$(cat "$dir/excludelist.txt" | sed -e 's|\#.*||g' -e 's/[\#%&\`|*+=!@:;\t$^()?\[\]{}<>]/ /g')";
}
break;
}
done;
[ "$includelist" ] && {
new_stuff="";
new_stuff_arch="";
new_stuff_sdk="";
new_stuff_arch_sdk="";
for include in $includelist; do
log "Including keyword $include";
new_stuff="$new_stuff $(echo "$stuff" | grep -oi "[ ]*[^ ]*$include[^ ]*[ ]*")";
new_stuff_arch="$new_stuff_arch $(echo "$stuff_arch" | grep -oi "[ ]*[^ ]*$include[^ ]*[ ]*")";
new_stuff_sdk="$new_stuff_sdk $(echo "$stuff_sdk" | grep -oi "[ ]*[^ ]*$include[^ ]*[ ]*")";
new_stuff_arch_sdk="$new_stuff_arch_sdk $(echo "$stuff_arch_sdk" | grep -oi "[ ]*[^ ]*$include[^ ]*[ ]*")";
done;
stuff="$new_stuff";
stuff_arch="$new_stuff_arch";
stuff_sdk="$new_stuff_sdk";
stuff_arch_sdk="$new_stuff_arch_sdk";
}
[ "$excludelist" ] && {
new_stuff="$stuff";
new_stuff_arch="$stuff_arch";
new_stuff_sdk="$stuff_sdk";
new_stuff_arch_sdk="$stuff_arch_sdk";
for exclude in $excludelist; do
log "Including keyword $include";
new_stuff="$(echo "$new_stuff" | sed "s|[ ]*[^ ]*$exclude[^ ]*[ ]*| |ig")";
new_stuff_arch="$(echo "$new_stuff_arch" | sed "s|[ ]*[^ ]*$exclude[^ ]*[ ]*| |ig")";
new_stuff_sdk="$(echo "$new_stuff_sdk" | sed "s|[ ]*[^ ]*$exclude[^ ]*[ ]*| |ig")";
new_stuff_arch_sdk="$(echo "$new_stuff_arch_sdk" | sed "s|[ ]*[^ ]*$exclude[^ ]*[ ]*| |ig")";
done;
stuff="$new_stuff";
stuff_arch="$new_stuff_arch";
stuff_sdk="$new_stuff_sdk";
stuff_arch_sdk="$new_stuff_arch_sdk";
}
[ "$includelist" -o "$excludelist" ] && {
stuff="$(echo "$stuff" | sed 's| |\n|g' | tr -s '\n' | sort -u | sed 's|^| |g')
";
stuff_arch="$(echo "$stuff_arch" | sed 's| |\n|g' | tr -s '\n' | sort -u | sed 's|^| |g')
";
stuff_sdk="$(echo "$stuff_sdk" | sed 's| |\n|g' | tr -s '\n' | sort -u | sed 's|^| |g')
";
stuff_arch_sdk="$(echo "$stuff_arch_sdk" | sed 's| |\n|g' | tr -s '\n' | sort -u | sed 's|^| |g')
";
}
[ "$stuff $stuff_arch $stuff_sdk $stuff_arch_sdk" ] || abort "Nothing left to install after config";
}

@ -0,0 +1,145 @@
createwhitelist() {
ui_print " ";
ui_print "Creating priv-app whitelist...";
spoofperm=android.permission.FAKE_PACKAGE_SIGNATURE;
spoofpermod=61006e00640072006f00690064002e007000650072006d0069007300730069006f006e002e00460041004b0045005f005000410043004b004100470045005f005300490047004e00410054005500520045;
hasspoof=false;
syslist="$filedir/privlist/privperm.list";
applist="$filedir/privlist/app.lst";
permlist="$filedir/privlist/app.xml";
unzip -oq "$zipfile" "privlist/*" -d "$filedir";
case "$arch" in
arm*)
aapt="$filedir/privlist/aapt-arm";
;;
x86*)
aapt="$filedir/privlist/aapt-x86";
;;
mips*)
aapt="$filedir/privlist/aapt-mips";
;;
esac;
[ -f "$aapt" ] || abort "No AAPT available";
chmod 777 "$aapt";
"$aapt" dump xmltree "/$sysroot/system/framework/framework-res.apk" AndroidManifest.xml | \
tr -d '\n' | sed -e 's/E:/\n/g' | grep '(type 0x11)0x[137]2' | \
awk -F\" '{print $2}' | sort > "$syslist";
unzip -oq "/$sysroot/system/framework/framework-res.apk" "AndroidManifest.xml" -d "$filedir/privlist/";
grep -qF "$spoofperm" "$filedir/privlist/AndroidManifest.xml" && hasspoof=true;
od -A n -t x1 "$filedir/privlist/AndroidManifest.xml" | tr -d ' \n' | grep -qF "$spoofpermod" && hasspoof=true;
$hasspoof && echo "android.permission.FAKE_PACKAGE_SIGNATURE" >> "${syslist}" || log "WHITELISTER: No native sigspoof found";
buildlist() {
"${aapt}" dump permissions "$privobject" | \
awk -F \' '/^uses-permission:/{print $2}' | \
sort > "$applist";
[ "$(cat "$applist")" ] || continue;
echo '<?xml version="1.0" encoding="utf-8"?>
<permissions>
<privapp-permissions package="'$package'">' > "$permlist";
for perm in $(cat "$applist"); do
if grep -q "$perm" "$syslist"; then
log "WHITELISTER: $package needs privapp-whitelist $perm";
echo ' <permission name="'$perm'" />' >> "$permlist";
fi;
done;
echo ' </privapp-permissions>
</permissions>' >> "$permlist";
}
unzip -oq "$zipfile" "system/priv-app/*" -d "$filedir";
for object in $stuff; do
case $object in
/system/priv-app/*/*.apk) ;;
*) continue;;
esac;
for realobject in "$filedir/$object"; do
privobject="$realobject"; break;
done;
[ -f "$privobject" ] || { log "ERROR: $privobject vanished"; continue; }
package="$("$aapt" dump badging "$privobject" | awk -F \' '/^package: name/{print $2}')";
log "WHITELISTER: Building list for $object";
buildlist;
mkdir -p "$filedir/system/etc/permissions/";
mv -f "$permlist" "$filedir/system/etc/permissions/$package.xml";
stuff="$stuff
/system/etc/permissions/$package.xml
";
done;
for object in $stuff_arch; do
case $object in
/system/priv-app/*/*.apk) ;;
*) continue;;
esac;
for realobject in $filedir/$(dirname "$object")/*-$arch-*/$(basename "$object"); do
privobject="$realobject"; break;
done;
[ -f "$privobject" ] || { log "ERROR: $privobject vanished"; continue; }
package="$("$aapt" dump badging "$privobject" | awk -F \' '/^package: name/{print $2}')";
log "WHITELISTER: Building list for $object ($cond)";
cond="$(basename "$(dirname "$privobject")")";
buildlist;
mkdir -p "$filedir/system/etc/permissions/$cond/";
mv -f "$permlist" "$filedir/system/etc/permissions/$cond/$package.xml";
stuff_arch="$stuff_arch
/system/etc/permissions/$package.xml
";
done;
for object in $stuff_sdk; do
case $object in
/system/priv-app/*/*.apk) ;;
*) continue;;
esac;
for realobject in $filedir/$(dirname "$object")/*-$sdk-*/$(basename "$object"); do
privobject="$realobject"; break;
done;
[ -f "$privobject" ] || { log "ERROR: $privobject vanished"; continue; }
package="$("$aapt" dump badging "$privobject" | awk -F \' '/^package: name/{print $2}')";
cond="$(basename "$(dirname "$privobject")")";
log "WHITELISTER: Building list for $object ($cond)";
buildlist;
mkdir -p "$filedir/system/etc/permissions/$cond/";
mv -f "$permlist" "$filedir/system/etc/permissions/$cond/$package.xml";
stuff_sdk="$stuff_sdk
/system/etc/permissions/$package.xml
";
done;
for object in $stuff_arch_sdk; do
case $object in
/system/priv-app/*/*.apk) ;;
*) continue;;
esac;
for realobject in $filedir/$(dirname "$object")/*-$arch-*-$sdk-*/$(basename "$object"); do
privobject="$realobject"; break;
done;
[ -f "$privobject" ] || { log "ERROR: $privobject vanished"; continue; }
package="$("$aapt" dump badging "$privobject" | awk -F \' '/^package: name/{print $2}')";
cond="$(basename "$(dirname "$privobject")")";
log "WHITELISTER: Building list for $object ($cond)";
buildlist;
mkdir -p "$filedir/system/etc/permissions/$cond/";
mv -f "$permlist" "$filedir/system/etc/permissions/$cond/$package.xml";
stuff_arch_sdk="$stuff_arch_sdk
/system/etc/permissions/$package.xml
";
done;
}

@ -0,0 +1,77 @@
# A little bit of copied methods to try to prevent MicroG dirty flash problems
# For MinMicroG (FriendlyNeighborhoodShane)
microg_cleanup() {
if [ "$(echo $stuff | grep MicroG)" ]; then
ui_print " ";
ui_print "Doing MicroG preparations...";
if [ "$bootmode" != "true" ]; then
# Kanged from NanoDroid
# Thanks Setialpha
cleanup_folders="BlankStore GmsCore GmsCore_update GmsCoreSetupPrebuilt GoogleServicesFramework GsfProxy Phonesky PlayStore PrebuiltGmsCorePi PrebuiltGmsCorePix PrebuiltGmsCore Vending";
cleanup_packages="com.android.vending com.google.android.feedback com.google.android.gms com.google.android.gsf com.google.android.gsf.login com.mgoogle.android.gms";
for app in $cleanup_folders; do
for file in /data/dalvik-cache/*/system"@priv-app@${app}"[@\.]*@classes.* /data/dalvik-cache/*/system"@app@${app}"[@\.]*@classes.*; do
[ -e "$file" ] && { log "PREPPER: Removing $file"; rm -rf "$file"; }
done;
done;
if [ ! -f "$root/system/etc/.mmg" ]; then
log "Doing the clean install treatment";
for app in $cleanup_packages; do
for file in /data/data/${app} /data/user/*/${app} /data/user_de/*/${app} /data/app/${app}-* /mnt/asec/${app}-* /data/media/0/Android/data/${app}; do
[ -e "$file" ] && { log "PREPPER: Removing $file"; rm -rf "$file"; }
done;
done;
for file in /data/system/users/*/runtime-permissions.xml; do
[ -e "$file" ] && { log "PREPPER: Removing $file"; rm -rf "$file"; }
done;
if [ -f /data/system/packages.list ]; then
for app in $cleanup_packages; do
if [ "$(grep "$app" /data/system/packages.list)" ]; then
log "PREPPER: de-registering app: $app";
sed -i "s/.*${app}.*//g" /data/system/packages.list;
fi;
done;
else
log "PREPPER: This is a clean flash";
fi;
if [ "$(which sqlite3)" ]; then
find /data/system* -type f -name "accounts*db" 2>/dev/null | while read database; do
log "PREPPER: deleting Google Accounts from $database";
sqlite3 "$database" "DELETE FROM accounts WHERE type='com.google';";
done
else
log "PREPPER: sqlite3 not found";
fi;
fi;
touch "$root/system/etc/.mmg";
fi;
if [ "$magisk" == "yes" ]; then
# Kanged from MagicGapps
# Thanks VR25
for dir in /data/adb/magisk_simple /cache/magisk_mount; do
rm -rf "$dir/system/etc";
mkdir -p "$dir/system";
cp -rf "$root/system/etc" "$dir/system/";
done;
for dir in /magisk /sbin/.core/img /magisk_merge; do
[ -e "$dir/.core/service.d/MagicGApps.sh" ] && { log "PREPPER: Removing $dir/.core/service.d/MagicGApps.sh"; rm -rf "$dir/.core/service.d/MagicGApps.sh"; }
done;
serviceb='
{
# To apparently fix permissions
until [ -e "/data" -a -e "/cache" ]; do sleep 5; done;
[ -f "/system/system/build.prop" ] && sysroot=/system;
for dir in /data/adb/magisk_simple /cache/magisk_mount; do
rm -rf "$dir/system/etc";
mkdir -p "$dir/system";
cp -rf "$sysroot/system/etc" "$dir/system/";
done;
}
';
service="$service$serviceb";
fi;
fi;
}
Loading…
Cancel
Save