MagiskHidePropsConf/common/util_functions.sh

704 lines
18 KiB
Bash
Raw Normal View History

2018-03-18 15:39:43 +00:00
#!/system/bin/sh
# MagiskHide Props Config
2018-04-15 22:05:33 +00:00
# By Didgeridoohan @ XDA Developers
2018-03-18 15:39:43 +00:00
# Variables
2018-04-15 22:05:33 +00:00
MODVERSION=VER_PLACEHOLDER
POSTFILE=$IMGPATH/.core/post-fs-data.d/propsconf_post
2018-03-18 15:39:43 +00:00
LATEFILE=$IMGPATH/.core/service.d/propsconf_late
2018-04-15 22:05:33 +00:00
CACHELOC=CACHE_PLACEHOLDER
2018-04-19 03:13:40 +00:00
RUNFILE=$MODPATH/script_check
2018-04-15 22:05:33 +00:00
LOGFILE=$CACHELOC/propsconf.log
LASTLOGFILE=$CACHELOC/propsconf_last.log
CONFFILE=$CACHELOC/propsconf_conf
RESETFILE=$CACHELOC/reset_mhpc
2018-03-18 15:39:43 +00:00
MAGISKLOC=/data/adb/magisk
BBPATH=$MAGISKLOC/busybox
2018-03-20 18:31:57 +00:00
PRINTSLOC=$MODPATH/prints.sh
2018-04-15 22:05:33 +00:00
PRINTSTMP=$CACHELOC/prints.sh
2018-03-26 16:25:58 +00:00
PRINTSWWW="https://raw.githubusercontent.com/Magisk-Modules-Repo/MagiskHide-Props-Config/master/common/prints.sh"
2018-04-15 22:05:33 +00:00
BIN=BIN_PLACEHOLDER
USNFLIST=USNF_PLACEHOLDER
2018-03-18 15:39:43 +00:00
alias cat="$BBPATH cat"
alias grep="$BBPATH grep"
2018-04-15 22:05:33 +00:00
alias printf="$BBPATH printf"
2018-03-18 15:39:43 +00:00
alias resetprop="$MAGISKLOC/magisk resetprop"
2018-03-20 18:31:57 +00:00
alias sed="$BBPATH sed"
2018-04-15 22:05:33 +00:00
alias sort="$BBPATH sort"
2018-03-20 18:31:57 +00:00
alias tr="$BBPATH tr"
alias wget="$BBPATH wget"
2018-03-18 15:39:43 +00:00
# MagiskHide props
PROPSLIST="
ro.debuggable
ro.secure
ro.build.type
ro.build.tags
ro.build.selinux
"
# Safe values
SAFELIST="
ro.debuggable=0
ro.secure=1
ro.build.type=user
ro.build.tags=release-keys
ro.build.selinux=0
"
2018-04-26 20:40:46 +00:00
# Print props
PRINTPROPS="
ro.build.fingerprint
ro.bootimage.build.fingerprint
ro.vendor.build.fingerprint
"
2018-04-25 22:17:32 +00:00
# Finding file values
get_file_value() {
2018-04-26 20:40:46 +00:00
cat $1 | grep $2 | sed "s@.*${2}@@" | sed 's@\"@@g'
2018-04-25 22:17:32 +00:00
}
2018-03-18 15:39:43 +00:00
# Logs
log_handler() {
echo "" >> $LOGFILE
echo -e "$(date +"%m-%d-%Y %H:%M:%S") - $1" >> $LOGFILE
}
2018-03-26 16:25:58 +00:00
log_print() {
echo "$1"
log_handler "$1"
}
2018-04-19 03:13:40 +00:00
log_script_chk() {
log_handler "$1"
echo -e "$(date +"%m-%d-%Y %H:%M:%S") - $1" >> $RUNFILE
}
2018-03-26 16:25:58 +00:00
#Divider
DIVIDER="${Y}=====================================${N}"
# Header
menu_header() {
2018-04-19 03:13:40 +00:00
if [ -z "$LOGNAME" ]; then
clear
fi
2018-03-26 16:25:58 +00:00
if [ "$MODVERSION" == "VER_PLACEHOLDER" ]; then
VERSIONTXT=""
else
VERSIONTXT=$MODVERSION
fi
echo ""
echo "${W}MagiskHide Props Config $VERSIONTXT${N}"
echo "${W}by Didgeridoohan @ XDA Developers${N}"
echo ""
echo $DIVIDER
echo -e " $1"
echo $DIVIDER
}
2018-03-18 15:39:43 +00:00
# Find prop type
get_prop_type() {
2018-04-26 20:40:46 +00:00
echo $1 | sed 's@.*\.@@'
2018-03-18 15:39:43 +00:00
}
2018-04-15 22:05:33 +00:00
# Get left side of =
get_eq_left() {
2018-04-26 20:40:46 +00:00
echo $1 | sed 's@=.*@@'
2018-03-18 15:39:43 +00:00
}
2018-04-15 22:05:33 +00:00
# Get right side of =
get_eq_right() {
2018-04-26 20:40:46 +00:00
echo $1 | sed 's@.*=@@'
2018-03-18 15:39:43 +00:00
}
2018-04-15 22:05:33 +00:00
# Get first word in string
get_first() {
2018-04-25 22:17:32 +00:00
case $1 in
2018-04-26 20:40:46 +00:00
*\ *) echo $1 | sed 's@\ .*@@'
2018-04-25 22:17:32 +00:00
;;
*=*) get_eq_left $1
;;
esac
}
# Replace file values
replace_fn() {
sed -i "s@${1}=${2}@${1}=${3}@" $4
2018-03-18 15:39:43 +00:00
}
# Updates placeholders
placeholder_update() {
FILEVALUE=$(get_file_value $1 "$2=")
log_handler "Checking for '$3' in '$1'. Current value is '$FILEVALUE'."
case $FILEVALUE in
2018-04-25 22:17:32 +00:00
*PLACEHOLDER*) replace_fn $2 $3 $4 $1
2018-03-18 15:39:43 +00:00
log_handler "Placeholder '$3' updated to '$4' in '$1'."
;;
esac
}
2018-03-20 18:31:57 +00:00
2018-04-15 22:05:33 +00:00
orig_check() {
PROPSTMPLIST=$PROPSLIST"
ro.build.fingerprint
"
ORIGLOAD=0
for PROPTYPE in $PROPSTMPLIST; do
PROP=$(get_prop_type $PROPTYPE)
2018-04-25 22:17:32 +00:00
ORIGPROP=$(echo "FILE${PROP}" | tr '[:lower:]' '[:upper:]')
2018-04-15 22:05:33 +00:00
ORIGVALUE=$(get_file_value $LATEFILE "${ORIGPROP}=")
if [ "$ORIGVALUE" ]; then
ORIGLOAD=1
fi
done
}
2018-04-19 03:13:40 +00:00
script_ran_check() {
POSTCHECK=0
if [ "$(cat $RUNFILE | grep "post-fs-data.sh finished")" ]; then
POSTCHECK=1
fi
LATECHECK=0
if [ "$(cat $RUNFILE | grep "Boot script finished")" ]; then
LATECHECK=1
fi
}
2018-04-15 22:05:33 +00:00
# Currently set values
curr_values() {
CURRDEBUGGABLE=$(resetprop ro.debuggable)
CURRSECURE=$(resetprop ro.secure)
CURRTYPE=$(resetprop ro.build.type)
CURRTAGS=$(resetprop ro.build.tags)
CURRSELINUX=$(resetprop ro.build.selinux)
CURRFINGERPRINT=$(resetprop ro.build.fingerprint)
if [ -z "$CURRFINGERPRINT" ]; then
CURRFINGERPRINT=$(resetprop ro.bootimage.build.fingerprint)
2018-04-26 20:40:46 +00:00
if [ -z "$CURRFINGERPRINT" ]; then
CURRFINGERPRINT=$(resetprop ro.vendor.build.fingerprint)
fi
2018-04-15 22:05:33 +00:00
fi
}
# Prop file values
file_values() {
2018-04-26 20:40:46 +00:00
FILEDEBUGGABLE=$(resetprop ro.debuggable)
FILESECURE=$(resetprop ro.secure)
FILETYPE=$(resetprop ro.build.type)
FILETAGS=$(resetprop ro.build.tags)
FILESELINUX=$(resetprop ro.build.selinux)
FILEFINGERPRINT=$(resetprop ro.build.fingerprint)
2018-04-25 22:17:32 +00:00
if [ -z "$FILEFINGERPRINT" ]; then
2018-04-26 20:40:46 +00:00
FILEFINGERPRINT=$(resetprop ro.bootimage.build.fingerprint)
2018-04-25 22:17:32 +00:00
if [ -z "$FILEFINGERPRINT" ]; then
2018-04-26 20:40:46 +00:00
FILEFINGERPRINT=$(resetprop ro.vendor.build.fingerprint)
2018-04-25 22:17:32 +00:00
fi
2018-04-26 20:40:46 +00:00
fi
2018-04-15 22:05:33 +00:00
}
# Latefile values
latefile_values() {
LATEFILEDEBUGGABLE=$(get_file_value $LATEFILE "FILEDEBUGGABLE=")
LATEFILESECURE=$(get_file_value $LATEFILE "FILESECURE=")
LATEFILETYPE=$(get_file_value $LATEFILE "FILETYPE=")
LATEFILETAGS=$(get_file_value $LATEFILE "FILETAGS=")
LATEFILESELINUX=$(get_file_value $LATEFILE "FILESELINUX=")
2018-04-25 22:17:32 +00:00
LATEFILEFINGERPRINT=$(get_file_value $LATEFILE "FILEFINGERPRINT=")
2018-04-15 22:05:33 +00:00
}
# Module values
module_values() {
MODULEDEBUGGABLE=$(get_file_value $LATEFILE "MODULEDEBUGGABLE=")
MODULESECURE=$(get_file_value $LATEFILE "MODULESECURE=")
MODULETYPE=$(get_file_value $LATEFILE "MODULETYPE=")
MODULETAGS=$(get_file_value $LATEFILE "MODULETAGS=")
MODULESELINUX=$(get_file_value $LATEFILE "MODULESELINUX=")
MODULEFINGERPRINT=$(get_file_value $LATEFILE "MODULEFINGERPRINT=")
CUSTOMPROPS=$(get_file_value $LATEFILE "CUSTOMPROPS=")
}
# Run all value functions
all_values() {
# Currently set values
curr_values
# Prop file values
file_values
# Latefile values
latefile_values
# Module values
module_values
}
after_change() {
# Update the reboot variable
reboot_chk
# Load all values
all_values
# Ask to reboot
reboot_fn "$1"
}
after_change_file() {
# Update the reboot variable
reboot_chk
# Load all values
INPUT=""
all_values
# Ask to reboot
reboot_fn "$1" "$2"
}
reboot_chk() {
2018-04-25 22:17:32 +00:00
replace_fn REBOOTCHK 0 1 $LATEFILE
2018-04-15 22:05:33 +00:00
}
reset_fn() {
BUILDPROPENB=$(get_file_value $LATEFILE "BUILDPROPENB=")
FINGERPRINTENB=$(get_file_value $LATEFILE "FINGERPRINTENB=")
cp -af $MODPATH/propsconf_late $LATEFILE
if [ "$BUILDPROPENB" ] && [ -z "$BUILDPROPENB" == 1 ]; then
2018-04-25 22:17:32 +00:00
replace_fn BUILDPROPENB 1 $BUILDPROPENB $LATEFILE
2018-04-15 22:05:33 +00:00
fi
if [ "$FINGERPRINTENB" ] && [ -z "$FINGERPRINTENB" == 1 ]; then
2018-04-25 22:17:32 +00:00
replace_fn FINGERPRINTENB 1 $FINGERPRINTENB $LATEFILE
2018-04-15 22:05:33 +00:00
fi
chmod 755 $LATEFILE
placeholder_update $LATEFILE IMGPATH IMG_PLACEHOLDER $IMGPATH
# Update the reboot variable
reboot_chk
# Update all prop value variables
all_values
}
# Check if original file values are safe
orig_safe() {
2018-04-25 22:17:32 +00:00
replace_fn FILESAFE 0 1 $LATEFILE
2018-04-15 22:05:33 +00:00
for V in $PROPSLIST; do
PROP=$(get_prop_type $V)
FILEPROP=$(echo "FILE${PROP}" | tr '[:lower:]' '[:upper:]')
FILEVALUE=$(eval "echo \$$FILEPROP")
log_handler "Checking $FILEPROP=$FILEVALUE"
safe_props $V $FILEVALUE
if [ "$SAFE" == 0 ]; then
log_handler "Prop $V set to triggering value in prop file."
2018-04-25 22:17:32 +00:00
replace_fn FILESAFE 1 0 $LATEFILE
2018-04-15 22:05:33 +00:00
else
log_handler "Prop $V set to \"safe\" value in prop file."
fi
done
}
# Checks for configuration file
config_file() {
2018-04-25 22:17:32 +00:00
log_handler "Checking for configuration file."
2018-04-15 22:05:33 +00:00
if [ -f "$CONFFILE" ]; then
log_handler "Configuration file detected."
# Loads custom variables
. $CONFFILE
# Updates prop values (including fingerprint)
PROPSTMPLIST=$PROPSLIST"
ro.build.fingerprint
"
for PROPTYPE in $PROPSTMPLIST; do
CONFPROP=$(echo "CONF$(get_prop_type $PROPTYPE)" | tr '[:lower:]' '[:upper:]')
TMPPROP=$(eval "echo \$$CONFPROP")
if [ "$TMPPROP" ]; then
log_handler "Checking $PROPTYPE settings."
if [ "$TMPPROP" != "preserve" ]; then
if [ "$PROPTYPE" == "ro.build.fingerprint" ]; then
if [ "$(get_file_value $LATEFILE "FINGERPRINTENB=")" == 1 ]; then
change_print "$PROPTYPE" "$TMPPROP" "file"
fi
else
change_prop "$PROPTYPE" "$TMPPROP" "file"
fi
fi
else
if [ "$PROPTYPE" == "ro.build.fingerprint" ]; then
if [ "$(get_file_value $LATEFILE "FINGERPRINTENB=")" == 1 ]; then
reset_print "$PROPTYPE" "file"
fi
else
reset_prop "$PROPTYPE" "file"
fi
fi
done
# Updates prop file editing
if [ "$(get_file_value $LATEFILE "FILESAFE=")" == 0 ]; then
if [ "$CONFPROPFILES" == "true" ]; then
edit_prop_files "file" "" " (configuration file)"
elif [ "$CONFPROPFILES" == "false" ]; then
reset_prop_files "file" "" " (configuration file)"
fi
fi
# Updates custom props
if [ "$PROPOPTION" != "preserve" ]; then
if [ "$CONFPROPS" ]; then
if [ "$PROPOPTION" == "add" ] || [ "$PROPOPTION" == "replace" ]; then
if [ "$PROPOPTION" == "replace" ]; then
reset_all_custprop "file"
fi
for ITEM in $CONFPROPS; do
set_custprop "$(get_eq_left $ITEM)" "$(get_eq_right $ITEM)" "file"
done
fi
else
reset_all_custprop "file"
fi
fi
# Updates options
OPTCCURR=$(get_file_value $LATEFILE "OPTIONCOLOUR=")
OPTWCURR=$(get_file_value $LATEFILE "OPTIONWEB=")
if [ "$CONFCOLOUR" == "enabled" ]; then
2018-04-25 22:17:32 +00:00
OPTCCHNG=1
2018-04-15 22:05:33 +00:00
else
2018-04-25 22:17:32 +00:00
OPTCCHNG=0
2018-04-15 22:05:33 +00:00
fi
2018-04-25 22:17:32 +00:00
replace_fn OPTIONCOLOUR $OPTCCURR $OPTCCHNG $LATEFILE
2018-04-15 22:05:33 +00:00
log_handler "Colour $CONFCOLOUR."
if [ "$CONFWEB" == "enabled" ]; then
2018-04-25 22:17:32 +00:00
OPTWCHNG=1
2018-04-15 22:05:33 +00:00
else
2018-04-25 22:17:32 +00:00
OPTWCHNG=0
2018-04-15 22:05:33 +00:00
fi
2018-04-25 22:17:32 +00:00
replace_fn OPTIONWEB $OPTWCURR $OPTWCHNG $LATEFILE
2018-04-15 22:05:33 +00:00
log_handler "Automatic fingerprints list update $CONFWEB."
# Deletes the configuration file
log_handler "Deleting configuration file."
rm -f $CONFFILE
2018-04-25 22:17:32 +00:00
else
log_handler "No configuration file."
2018-04-15 22:05:33 +00:00
fi
}
# ======================== Fingerprint functions ========================
# Checks and updates the prints list
2018-03-20 18:31:57 +00:00
download_prints() {
2018-04-19 03:13:40 +00:00
if [ -z "$LOGNAME" ]; then
clear
fi
2018-03-26 16:25:58 +00:00
menu_header "Updating fingerprints list"
echo ""
log_print "Checking list version."
wget -T 10 -O $PRINTSTMP $PRINTSWWW 2>> $LOGFILE
if [ -f "$PRINTSTMP" ]; then
LISTVERSION=$(get_file_value $PRINTSTMP "PRINTSV=")
if [ "$LISTVERSION" -gt "$(get_file_value $PRINTSLOC "PRINTSV=")" ]; then
if [ "$(get_file_value $PRINTSTMP "PRINTSTRANSF=")" -le "$(get_file_value $PRINTSLOC "PRINTSTRANSF=")" ]; then
mv -f $PRINTSTMP $PRINTSLOC
# Updates list version in module.prop
VERSIONTMP=$(get_file_value $MODPATH/module.prop "version=")
2018-04-25 22:17:32 +00:00
replace_fn version $VERSIONTMP "${MODVERSION}-v${LISTVERSION}" $MODPATH/module.prop
2018-04-15 22:05:33 +00:00
log_print "Updated list to v${LISTVERSION}."
2018-03-26 16:25:58 +00:00
else
rm -f $PRINTSTMP
log_print "New fingerprints list requires module update."
fi
else
rm -f $PRINTSTMP
log_print "Fingerprints list up-to-date."
2018-03-20 18:31:57 +00:00
fi
else
2018-03-26 16:25:58 +00:00
log_print "No connection."
2018-03-20 18:31:57 +00:00
fi
2018-04-15 22:05:33 +00:00
if [ "$1" == "manual" ]; then
sleep 2
2018-04-19 03:13:40 +00:00
else
sleep 0.5
2018-04-15 22:05:33 +00:00
fi
2018-03-28 16:39:57 +00:00
}
2018-04-15 22:05:33 +00:00
# Reset the module fingerprint change
reset_print() {
log_handler "Resetting device fingerprint."
SUBA=$(get_file_value $LATEFILE "MODULEFINGERPRINT=")
# Saves new module value
2018-04-25 22:17:32 +00:00
replace_fn MODULEFINGERPRINT "\"$SUBA\"" "\"\"" $LATEFILE
2018-04-15 22:05:33 +00:00
# Updates prop change variables in propsconf_late
2018-04-25 22:17:32 +00:00
replace_fn PRINTEDIT 1 0 $LATEFILE
# Updates improved hiding setting
if [ "$(get_file_value $LATEFILE "BUILDEDIT=")" ]; then
replace_fn SETFINGERPRINT "true" "false" $LATEFILE
fi
2018-04-15 22:05:33 +00:00
if [ "$2" != "file" ]; then
after_change "$1"
fi
}
# Use fingerprint
change_print() {
log_handler "Changing device fingerprint to $2."
SUBA=$(get_file_value $LATEFILE "MODULEFINGERPRINT=")
# Saves new module value
2018-04-25 22:17:32 +00:00
replace_fn MODULEFINGERPRINT "\"$SUBA\"" "\"$2\"" $LATEFILE
2018-04-15 22:05:33 +00:00
# Updates prop change variables in propsconf_late
2018-04-25 22:17:32 +00:00
replace_fn PRINTEDIT 0 1 $LATEFILE
# Updates improved hiding setting
if [ "$(get_file_value $LATEFILE "BUILDEDIT=")" ]; then
replace_fn SETFINGERPRINT "false" "true" $LATEFILE
fi
2018-04-15 22:05:33 +00:00
NEWFINGERPRINT=""
if [ "$3" != "file" ]; then
after_change "$1"
fi
}
# ======================== Props files functions ========================
# Reset prop files
reset_prop_files() {
log_handler "Resetting prop files$3."
2018-04-19 03:13:40 +00:00
# Changes files
2018-04-15 22:05:33 +00:00
for PROPTYPE in $PROPSLIST; do
log_handler "Disabling prop file editing for '$PROPTYPTE'."
2018-03-28 16:39:57 +00:00
PROP=$(get_prop_type $PROPTYPE)
2018-04-15 22:05:33 +00:00
SETPROP=$(echo "SET$PROP" | tr '[:lower:]' '[:upper:]')
2018-04-25 22:17:32 +00:00
replace_fn $SETPROP "true" "false" $LATEFILE
2018-04-15 22:05:33 +00:00
done
2018-04-19 03:13:40 +00:00
# Change fingerprint
2018-04-25 22:17:32 +00:00
replace_fn SETFINGERPRINT "true" "false" $LATEFILE
2018-04-19 03:13:40 +00:00
# Edit settings variables
2018-04-25 22:17:32 +00:00
replace_fn BUILDEDIT 1 0 $LATEFILE
replace_fn DEFAULTEDIT 1 0 $LATEFILE
2018-04-15 22:05:33 +00:00
if [ "$1" != "file" ]; then
after_change_file "$1" "$2"
fi
}
# Editing prop files
edit_prop_files() {
log_handler "Modifying prop files$3."
# Checks if editing prop files is enabled
if [ "$(get_file_value $LATEFILE "BUILDPROPENB=")" == 0 ]; then
log_handler "Editing build.prop is disabled. Only editing default.prop."
PROPSLIST="
ro.debuggable
ro.secure
"
2018-04-19 03:13:40 +00:00
else
# Checking if the device fingerprint is set by the module
if [ "$(get_file_value $LATEFILE "FINGERPRINTENB=")" == 1 ] && [ "$(get_file_value $LATEFILE "PRINTEDIT=")" == 1 ]; then
2018-04-25 22:17:32 +00:00
if [ "$(cat /system/build.prop | grep "$FILEFINGERPRINT")" ]; then
replace_fn SETFINGERPRINT "false" "true" $LATEFILE
2018-04-19 03:13:40 +00:00
fi
fi
2018-04-15 22:05:33 +00:00
fi
for PROPTYPE in $PROPSLIST; do
log_handler "Checking original file value for '$PROPTYPE'."
PROP=$(get_prop_type $PROPTYPE)
FILEPROP=$(echo "FILE$PROP" | tr '[:lower:]' '[:upper:]')
SETPROP=$(echo "SET$PROP" | tr '[:lower:]' '[:upper:]')
# Check the original file value
PROPVALUE=$(get_file_value $LATEFILE "$FILEPROP=")
if [ -z "$PROPVALUE" ]; then
if [ "$PROPTYPE" == "ro.debuggable" ] || [ "$PROPTYPE" == "ro.secure" ]; then
PROPVALUE=$(get_file_value /default.prop "${PROPTYPE}=")
else
PROPVALUE=$(get_file_value /system/build.prop "${PROPTYPE}=")
fi
2018-03-28 16:39:57 +00:00
fi
2018-04-15 22:05:33 +00:00
# Checks for default/set values
safe_props $PROPTYPE $PROPVALUE
# Changes file only if necessary
if [ "$SAFE" == 0 ]; then
log_handler "Enabling prop file editing for '$PROPTYPE'."
2018-04-25 22:17:32 +00:00
replace_fn $SETPROP "false" "true" $LATEFILE
2018-04-15 22:05:33 +00:00
elif [ "$SAFE" == 1 ]; then
log_handler "Prop file editing unnecessary for '$PROPTYPE'."
2018-04-25 22:17:32 +00:00
replace_fn $SETPROP "true" "false" $LATEFILE
2018-04-15 22:05:33 +00:00
else
log_handler "Couldn't check safe value for '$PROPTYPE'."
fi
2018-03-28 16:39:57 +00:00
done
2018-04-25 22:17:32 +00:00
replace_fn BUILDEDIT 0 1 $LATEFILE
replace_fn DEFAULTEDIT 0 1 $LATEFILE
2018-04-15 22:05:33 +00:00
if [ "$1" != "file" ]; then
after_change_file "$1" "$2"
fi
2018-03-28 16:39:57 +00:00
}
2018-04-15 22:05:33 +00:00
# ======================== MagiskHide Props functions ========================
# Check safe values
safe_props() {
SAFE=""
if [ "$2" ]; then
for P in $SAFELIST; do
if [ "$(get_eq_left $P)" == "$1" ]; then
if [ "$2" == "$(get_eq_right $P)" ]; then
SAFE=1
else
SAFE=0
fi
break
fi
done
fi
}
# Find what prop value to change to
change_to() {
CHANGE=""
case "$1" in
ro.debuggable) if [ "$2" == 0 ]; then CHANGE=1; else CHANGE=0; fi
;;
ro.secure) if [ "$2" == 0 ]; then CHANGE=1; else CHANGE=0; fi
;;
ro.build.type) if [ "$2" == "userdebug" ]; then CHANGE="user"; else CHANGE="userdebug"; fi
;;
ro.build.tags) if [ "$2" == "test-keys" ]; then CHANGE="release-keys"; else CHANGE="test-keys"; fi
;;
ro.build.selinux) if [ "$2" == 0 ]; then CHANGE=1; else CHANGE=0; fi
;;
esac
}
# Reset the module prop change
reset_prop() {
# Sets variables
PROP=$(get_prop_type $1)
MODULEPROP=$(echo "MODULE${PROP}" | tr '[:lower:]' '[:upper:]')
REPROP=$(echo "RE${PROP}" | tr '[:lower:]' '[:upper:]')
SUBA=$(get_file_value $LATEFILE "${MODULEPROP}=")
log_handler "Resetting $1 to default value."
# Saves new module value
2018-04-25 22:17:32 +00:00
replace_fn $MODULEPROP "\"$SUBA\"" "\"\"" $LATEFILE
2018-04-15 22:05:33 +00:00
# Changes prop
2018-04-25 22:17:32 +00:00
replace_fn $REPROP "true" "false" $LATEFILE
2018-04-15 22:05:33 +00:00
# Updates prop change variable in propsconf_late
PROPCOUNT=$(get_file_value $LATEFILE "PROPCOUNT=")
if [ "$SUBA" ]; then
if [ "$PROPCOUNT" -gt 0 ]; then
PROPCOUNTP=$(($PROPCOUNT-1))
2018-04-25 22:17:32 +00:00
replace_fn PROPCOUNT $PROPCOUNT $PROPCOUNTP $LATEFILE
2018-04-15 22:05:33 +00:00
fi
if [ "$PROPCOUNT" == 0 ]; then
2018-04-25 22:17:32 +00:00
replace_fn PROPEDIT 1 0 $LATEFILE
2018-04-15 22:05:33 +00:00
fi
fi
if [ "$2" != "file" ]; then
after_change "$1"
fi
}
# Use prop value
change_prop() {
# Sets variables
PROP=$(get_prop_type $1)
MODULEPROP=$(echo "MODULE${PROP}" | tr '[:lower:]' '[:upper:]')
REPROP=$(echo "RE${PROP}" | tr '[:lower:]' '[:upper:]')
SUBA=$(get_file_value $LATEFILE "${MODULEPROP}=")
log_handler "Changing $1 to $2."
# Saves new module value
2018-04-25 22:17:32 +00:00
replace_fn $MODULEPROP "\"$SUBA\"" "\"$2\"" $LATEFILE
2018-04-15 22:05:33 +00:00
# Changes prop
2018-04-25 22:17:32 +00:00
replace_fn $REPROP "false" "true" $LATEFILE
2018-04-15 22:05:33 +00:00
# Updates prop change variables in propsconf_late
if [ -z "$SUBA" ]; then
PROPCOUNT=$(get_file_value $LATEFILE "PROPCOUNT=")
PROPCOUNTP=$(($PROPCOUNT+1))
2018-04-25 22:17:32 +00:00
replace_fn PROPCOUNT $PROPCOUNT $PROPCOUNTP $LATEFILE
2018-04-15 22:05:33 +00:00
fi
2018-04-25 22:17:32 +00:00
replace_fn PROPEDIT 0 1 $LATEFILE
2018-04-15 22:05:33 +00:00
if [ "$3" != "file" ]; then
after_change "$1"
fi
}
# Reset all module prop changes
reset_prop_all() {
log_handler "Resetting all props to default values."
for PROPTYPE in $PROPSLIST; do
PROP=$(get_prop_type $PROPTYPE)
MODULEPROP=$(echo "MODULE${PROP}" | tr '[:lower:]' '[:upper:]')
REPROP=$(echo "RE${PROP}" | tr '[:lower:]' '[:upper:]')
SUBA=$(get_file_value $LATEFILE "${MODULEPROP}=")
# Saves new module value
2018-04-25 22:17:32 +00:00
replace_fn $MODULEPROP "\"$SUBA\"" "\"\"" $LATEFILE
2018-04-15 22:05:33 +00:00
# Changes prop
2018-04-25 22:17:32 +00:00
replace_fn $REPROP "true" "false" $LATEFILE
2018-04-15 22:05:33 +00:00
done
2018-04-25 22:17:32 +00:00
# Updates prop change variables in propsconf_late
PROPCOUNT=$(get_file_value $LATEFILE "PROPCOUNT=")
replace_fn PROPCOUNT $PROPCOUNT 0 $LATEFILE
replace_fn PROPEDIT 1 0 $LATEFILE
2018-04-15 22:05:33 +00:00
after_change "$1"
}
# ======================== Custom Props functions ========================
# Set custom prop value
set_custprop() {
if [ "$2" ]; then
CURRCUSTPROPS=$(get_file_value $LATEFILE "CUSTOMPROPS=")
2018-04-26 20:40:46 +00:00
TMPCUSTPROPS=$(echo "$CURRCUSTPROPS ${1}=${2}" | sed 's@^[ \t]*@@')
2018-04-15 22:05:33 +00:00
SORTCUSTPROPS=$(echo $(printf '%s\n' $TMPCUSTPROPS | sort -u))
log_handler "Setting custom prop $1."
2018-04-25 22:17:32 +00:00
replace_fn CUSTOMPROPS "\"$CURRCUSTPROPS\"" "\"$SORTCUSTPROPS\"" $LATEFILE
replace_fn CUSTOMEDIT 0 1 $LATEFILE
2018-04-15 22:05:33 +00:00
if [ "$3" != "file" ]; then
after_change "$1"
fi
fi
}
# Reset all custom prop values
reset_all_custprop() {
CURRCUSTPROPS=$(get_file_value $LATEFILE "CUSTOMPROPS=")
log_handler "Resetting all custom props."
# Removing all custom props
2018-04-25 22:17:32 +00:00
replace_fn CUSTOMPROPS "\"$CURRCUSTPROPS\"" "\"\"" $LATEFILE
replace_fn CUSTOMEDIT 1 0 $LATEFILE
2018-04-15 22:05:33 +00:00
if [ "$1" != "file" ]; then
after_change "$1"
fi
}
# Reset custom prop value
reset_custprop() {
CURRCUSTPROPS=$(get_file_value $LATEFILE "CUSTOMPROPS=")
log_handler "Resetting custom props $1."
2018-04-26 20:40:46 +00:00
TMPCUSTPROPS=$(echo $CURRCUSTPROPS | sed "s@${1}=${2}@@" | tr -s " " | sed 's@^[ \t]*@@')
2018-04-15 22:05:33 +00:00
# Removing all custom props
2018-04-25 22:17:32 +00:00
replace_fn CUSTOMPROPS "\"$CURRCUSTPROPS\"" "\"$TMPCUSTPROPS\"" $LATEFILE
2018-04-15 22:05:33 +00:00
CURRCUSTPROPS=$(get_file_value $LATEFILE "CUSTOMPROPS=")
if [ -z "$CURRCUSTPROPS" ]; then
2018-04-25 22:17:32 +00:00
replace_fn CUSTOMEDIT 1 0 $LATEFILE
2018-04-15 22:05:33 +00:00
fi
after_change "$1"
}