diff --git a/README.md b/README.md index dce10e6..59f3e48 100644 --- a/README.md +++ b/README.md @@ -90,7 +90,7 @@ The fingerprints list will update without the need to update the entire module. Just run the `props` command and the list will be updated automatically. Use the -nw option to disable or disable it completely in the script settings (see ["Prop script settings"](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config#prop-script-settings) below). If you've disabled the this setting you can update the list manually in the `Edit device fingerprint` menu. -**_Current fingerprints list version - v28_** +**_Current fingerprints list version - v29_** ## Improved root hiding - Editing build.prop and default.prop @@ -111,6 +111,11 @@ If, for some reason, you need one or more of these to be kept as their original ## Change/set custom prop values It's quite easy to change prop values with Magisk. With this module it's even easier. Just enter the prop you want to change and the new value and the module does the rest, nice and systemless. Any changes that you've previously done directly to build.prop, default.prop, etc, you can now do with this module instead. +When setting a custom prop you can also pick in what boot stage it should be set in. This can also be changed later for each individual custom prop. There are three options: +- Default - The main module option will decide (see Prop script settings below). +- post-fs-data - The prop will always be set in post-fs-data, regardless of the main module option. +- late_start service - The prop will always be set in late_start service, regardless of the main module option. + ## Removing prop values If you would like to delete a certain prop value from your system, that can be done with the [Magisk resetprop tool](https://github.com/topjohnwu/Magisk/blob/master/docs/tools.md#resetprop). With this module you can easily set that up by adding whatever prop you want removed to the "Delete props" list. Be very careful when using this option, since removing the wrong prop may cause isses with your device. See ["Device issues because of the module"](https://github.com/Magisk-Modules-Repo/MagiskHide-Props-Config#device-issues-because-of-the-module) below if this happens. @@ -194,6 +199,14 @@ If you can't run the `props` script for some reason, the logs are also stored in ## Changelog +### v2.4.0 +- Added a check for if the download of the internal Busybox fails. +- Added an option for picking what boot stage a custom prop should be set in. +- Updated the internal Busybox to @osm0sis' latest 1.29.2 build. +- Don't panick! +- Updated and added a couple of fingerprints. +- Various improvements, etc. + ### v2.3.6 - Added md5 checksum when downloading the internal Busybox. - Changed the default boot stage from late_start service to post-fs-data. @@ -321,7 +334,7 @@ If you can't run the `props` script for some reason, the logs are also stored in ## Current fingerprints list -### List v28 +### List v29 - Asus Zenfone 2 Laser (6.0.1) - Asus Zenfone 4 Max (7.1.1) - Asus ZenPad S 8.0 (6.0.1) @@ -339,6 +352,7 @@ If you can't run the `props` script for some reason, the logs are also stored in - Google Pixel 2 XL (8.1.0) - Google Pixel 2 XL (P DP1) - HTC 10 (6.0.1) +- HTC U11 (8.0.0) - Huawei Honor 6X (8.0.0) - Huawei Honor 9 (8.0.0) - Huawei Mate 10 Pro (8.0.0) @@ -371,7 +385,6 @@ If you can't run the `props` script for some reason, the logs are also stored in - Samsung Galaxy J5 2015 (6.0.1) - Samsung Galaxy J5 (7.1.1) - Samsung Galaxy J5 Prime (7.0) -- Samsung Galaxy Note 3 (7.1.1) - Samsung Galaxy Note 4 (6.0.1) - Samsung Galaxy Note 5 (7.0) - Samsung Galaxy Note 8 (8.0.0) @@ -421,8 +434,9 @@ If you can't run the `props` script for some reason, the logs are also stored in - Xiaomi Mi 6 (8.0.0) - Xiaomi Mi A1 (8.0.0) - Xiaomi Mi Max 2 (7.1.1) +- Xiaomi Mi Mix 2 (8.0.0) - Xiaomi Mi Mix 2S (8.0.0) -- Xiaomi Mi Note 2 (7.0) +- Xiaomi Mi Note 2 (8.0.0) - Xiaomi Redmi 3S/X Prime (6.0.1) - Xiaomi Redmi 4 Prime (6.0.1) - Xiaomi Redmi 4X (6.0.1) diff --git a/common/busybox-arm.md5 b/common/busybox-arm.md5 index 5773520..db980f6 100644 --- a/common/busybox-arm.md5 +++ b/common/busybox-arm.md5 @@ -1 +1 @@ -ef0f310f6a35e0afa735c36afd8135e3 \ No newline at end of file +2eded5ac68a5e7ffc5f7eaf76e09e3a5 \ No newline at end of file diff --git a/common/busybox-arm64.md5 b/common/busybox-arm64.md5 index b9abdfb..49e4188 100644 --- a/common/busybox-arm64.md5 +++ b/common/busybox-arm64.md5 @@ -1 +1 @@ -bbb13cf8bb2b1de70ecbf495cbff1450 \ No newline at end of file +6aeb221640a10243182169a3f6388646 \ No newline at end of file diff --git a/common/busybox-mips.md5 b/common/busybox-mips.md5 index 546584a..d6e6e76 100644 --- a/common/busybox-mips.md5 +++ b/common/busybox-mips.md5 @@ -1 +1 @@ -e4be280e6a3f8102a62c261110ff69a2 \ No newline at end of file +1203fb78725a2e3eb6d0af195f8952a0 \ No newline at end of file diff --git a/common/busybox-mips64.md5 b/common/busybox-mips64.md5 index 798092c..b9a606c 100644 --- a/common/busybox-mips64.md5 +++ b/common/busybox-mips64.md5 @@ -1 +1 @@ -8a7f321ee8ed0fb85726de8d43d86ebf \ No newline at end of file +4ed866fec3edc3c2a44a85f29628f3c2 \ No newline at end of file diff --git a/common/busybox-x86.md5 b/common/busybox-x86.md5 index e470860..6c5209c 100644 --- a/common/busybox-x86.md5 +++ b/common/busybox-x86.md5 @@ -1 +1 @@ -170133693c4af03a6f311179793569ec \ No newline at end of file +95800bfaa28b8670b1e616acea8ab537 \ No newline at end of file diff --git a/common/busybox-x86_64.md5 b/common/busybox-x86_64.md5 index f0b719e..db5acec 100644 --- a/common/busybox-x86_64.md5 +++ b/common/busybox-x86_64.md5 @@ -1 +1 @@ -b8374521632f8e8520a1ea1ad2cc919c \ No newline at end of file +a2fa19d85313bc5773f89e88ba76992f \ No newline at end of file diff --git a/common/prints.sh b/common/prints.sh index 5564854..a065493 100644 --- a/common/prints.sh +++ b/common/prints.sh @@ -27,6 +27,7 @@ Google Pixel 2 (P DP1)=google/walleye/walleye:P/PPP1.180208.014/4633861:user/rel Google Pixel 2 XL (8.1.0)=google/taimen/taimen:8.1.0/OPM4.171019.016.B1/4720843:user/release-keys Google Pixel 2 XL (P DP1)=google/taimen/taimen:P/PPP1.180208.014/4633861:user/release-keys HTC 10 (6.0.1)=htc/HTCOneM10vzw/htc_pmewl:6.0.1/MMB29M/774095.8:user/release-keys +HTC U11 (8.0.0)=htc/ocndtwl_01405/htc_ocndtwl:8.0.0/OPR6.170623.013/1017190.2:user/release-keys Huawei Honor 6X (8.0.0)=HONOR/BLN-AL10/HWBLN-H:8.0.0/HONORBLN-AL10/528(C00):user/release-keys Huawei Honor 9 (8.0.0)=HONOR/STF-L09/HWSTF:8.0.0/HUAWEISTF-L09/364(C432):user/release-keys Huawei Mate 10 Pro (8.0.0)=HUAWEI/BLA-L29/HWBLA:8.0.0/HUAWEIBLA-L29S/137(C432):user/release-keys @@ -59,7 +60,6 @@ Samsung Galaxy J3 (5.1.1)=ro.build.fingerprint=samsung/j3xnltexx/j3xnlte:5.1.1/L Samsung Galaxy J5 2015 (6.0.1)=samsung/j5nltexx/j5nlte:6.0.1/MMB29M/J500FNXXS1BQG1:user/release-keys Samsung Galaxy J5 (7.1.1)=samsung/j5xnltexx/j5xnlte:7.1.1/NMF26X/J510FNXXS2BRA2:user/release-keys Samsung Galaxy J5 Prime (7.0)=samsung/on5xeltejv/on5xelte:7.0/NRD90M/G570FXXU1BQI6:user/release-keys -Samsung Galaxy Note 3 (7.1.1)=samsung/greatltexx/greatlte:7.1.1/NMF26X/N950FXXU1AQHA:user/release-keys Samsung Galaxy Note 4 (6.0.1)=samsung/trltexx/trlte:6.0.1/MMB29M/N910FXXS1DQH9:user/release-keys Samsung Galaxy Note 5 (7.0)=samsung/nobleltejv/noblelte:7.0/NRD90M/N920CXXU3CQH6:user/release-keys Samsung Galaxy Note 8 (8.0.0)=samsung/greatltexx/greatlte:8.0.0/R16NW/N950FXXU3CRC1:user/release-keys @@ -103,12 +103,13 @@ Vodafone Smart Ultra 6 (5.1.1)=Vodafone/P839V55/P839V55:5.1.1/LMY47V/20161227.13 Xiaomi Mi 3/4 (6.0.1)=Xiaomi/cancro/cancro:6.0.1/MMB29M/V9.5.2.0.MXDMIFA:user/release-keys Xiaomi Mi 4C (7.0)=Xiaomi/libra/libra:7.0/NRD90M/V9.6.2.0.NXKCNFD:user/release-keys Xiaomi Mi 5/5 Pro (8.0.0)=Xiaomi/gemini/gemini:8.0.0/OPR1.170623.032/V9.6.1.0.OAAMIFD:user/release-keys -Xiaomi Mi 5S (7.0)=Xiaomi/capricorn/capricorn:7.0/NRD90M/V9.2.1.0.NAGMIEK:user/release-keys +Xiaomi Mi 5S (7.0)=Xiaomi/capricorn/capricorn:7.0/NRD90M/V9.5.4.0.NAGMIFD:user/release-keys Xiaomi Mi 5S Plus (7.0)=Xiaomi/natrium/natrium:7.0/NRD90M/V9.6.2.0.NBGMIFD:user/release-keys Xiaomi Mi 6 (7.1.1)=Xiaomi/sagit/sagit:7.1.1/NMF26X/V8.2.17.0.NCACNEC:user/release-keys Xiaomi Mi 6 (8.0.0)=Xiaomi/sagit/sagit:8.0.0/OPR1.170623.027/V9.2.3.0.OCAMIEK:user/release-keys Xiaomi Mi A1 (8.0.0)=xiaomi/tissot/tissot_sprout:8.0.0/OPR1.170623.026/V.9.5.10.0.ODHMIFA:user/release-keys Xiaomi Mi Max 2 (7.1.1)=Xiaomi/oxygen/oxygen:7.1.1/NMF26F/V9.5.4.0.NDDMIFA:user/release-keys +Xiaomi Mi Mix 2 (8.0.0)=Xiaomi/chiron/chiron:8.0.0/OPR1.170623.027/V9.6.1.0.ODEMIFD:user/release-keys Xiaomi Mi Mix 2S (8.0.0)=Xiaomi/polaris/polaris:8.0.0/OPR1.170623.032/V9.5.19.0.ODGMIFA:user/release-keys Xiaomi Mi Note 2 (8.0.0)=Xiaomi/scorpio/scorpio:8.0.0/OPR1.170623.032/V9.6.1.0.OADCNFD:user/release-keys Xiaomi Redmi 3S/X Prime (6.0.1)=Xiaomi/land/land:6.0.1/MMB29M/V9.5.1.0.MALMIFA:user/release-keys diff --git a/common/propsconf_conf b/common/propsconf_conf index b642c97..374729e 100644 --- a/common/propsconf_conf +++ b/common/propsconf_conf @@ -14,6 +14,8 @@ CONFTAGS="" CONFSELINUX="" CONFPROPS="" +CONFPROPSPOST="" +CONFPROPSLATE="" PROPOPTION=replace CONFDELPROPS="" @@ -53,11 +55,15 @@ CONFWEB=enabled # Please observe that if the prop you're trying to set contains spaces, you'll # need to replace those spaces with "_sp_" (without the quotation marks). # +# If you want a specific prop to run in either post-fs-data or late_start service, +# use either CONFPROPSPOST or CONFPROPSLATE instead. Any props added to CONFPROPS +# will run in the boot stage currently set in the module options (see CONFLATE below). +# # With PROPOPTION you can decide if the current custom prop list should # be replaced, added to or preserved. Add the corresponding words "replace", # "add", or "preserve". The default option is to replace the list. # This option supersedes the preserve option described below, but only -# for the CONFPROPS variable. +# for the CONFPROPS variables. # CONFDELPROPS is a list of props you want to remove from your system. # Be very careful when using this option, removing the wrong props might diff --git a/common/propsconf_late b/common/propsconf_late index f9740e2..4e5b25e 100644 --- a/common/propsconf_late +++ b/common/propsconf_late @@ -9,7 +9,7 @@ # In that case, feel free to delete it. # Script version -SCRIPTV=13 +SCRIPTV=14 SETTRANSF=2 NOTTRANSF="OPTIONLATE" @@ -124,6 +124,8 @@ if [ -d "$MODPATH" ]; then # ---Custom prop values--- CUSTOMPROPS="" + CUSTOMPROPSPOST="" + CUSTOMPROPSLATE="" # ---Delete prop values--- DELETEPROPS="" @@ -146,14 +148,16 @@ if [ -d "$MODPATH" ]; then SETFINGERPRINT=false # Edits prop values if set for late_start service + echo -e "\n--------------------" >> $LOGFILE 2>&1 + log_handler "Editing prop values in late_start service mode." if [ "$OPTIONLATE" == 1 ]; then # ---Setting/Changing fingerprint--- print_edit # ---Setting custom props--- - custom_edit - # ---Deleting props--- - prop_del + custom_edit "CUSTOMPROPS" fi + # Edit custom props set for late_start service + custom_edit "CUSTOMPROPSLATE" # Edit MagiskHide sensitive values if [ "$PROPEDIT" == 1 ]; then log_handler "Changing sensitive props." @@ -168,6 +172,7 @@ if [ -d "$MODPATH" ]; then fi done fi + echo -e "\n--------------------" >> $LOGFILE 2>&1 # ---Edits default.prop--- if [ "$DEFAULTEDIT" == 1 ] && [ "$FILESAFE" == 0 ]; then diff --git a/common/propsconf_post b/common/propsconf_post index 7329d25..cdc48b8 100644 --- a/common/propsconf_post +++ b/common/propsconf_post @@ -63,17 +63,19 @@ if [ -d "$MODPATH" ]; then config_file # Edits prop values if set for post-fs-data + echo -e "\n--------------------" >> $LOGFILE 2>&1 + log_handler "Editing prop values in post-fs-data mode." if [ "$(get_file_value $LATEFILE "OPTIONLATE=")" == 0 ]; then - echo -e "\n--------------------" >> $LOGFILE 2>&1 - log_handler "Editing prop values in post-fs-data mode." # ---Setting/Changing fingerprint--- print_edit # ---Setting custom props--- - custom_edit - # ---Deleting props--- - prop_del - echo -e "\n--------------------" >> $LOGFILE 2>&1 + custom_edit "CUSTOMPROPS" fi + # Deleting props + prop_del + # Edit custom props set for post-fs-data + custom_edit "CUSTOMPROPSPOST" + echo -e "\n--------------------" >> $LOGFILE 2>&1 # Edits build.prop if [ "$(get_file_value $LATEFILE "FILESAFE=")" == 0 ]; then diff --git a/common/util_functions.sh b/common/util_functions.sh index 09ae826..2ba273f 100644 --- a/common/util_functions.sh +++ b/common/util_functions.sh @@ -279,6 +279,9 @@ module_values() { MODULESELINUX=$(get_file_value $LATEFILE "MODULESELINUX=") MODULEFINGERPRINT=$(get_file_value $LATEFILE "MODULEFINGERPRINT=") CUSTOMPROPS=$(get_file_value $LATEFILE "CUSTOMPROPS=") + CUSTOMPROPSPOST=$(get_file_value $LATEFILE "CUSTOMPROPSPOST=") + CUSTOMPROPSLATE=$(get_file_value $LATEFILE "CUSTOMPROPSLATE=") + CUSTOMPROPSLIST="$CUSTOMPROPS $CUSTOMPROPSPOST $CUSTOMPROPSLATE" DELETEPROPS=$(get_file_value $LATEFILE "DELETEPROPS=") } @@ -412,14 +415,26 @@ config_file() { # Updates custom props if [ "$PROPOPTION" != "preserve" ]; then - if [ "$CONFPROPS" ]; then + if [ "$CONFPROPS" ] || [ "$CONFPROPSPOST" ] || [ "$CONFPROPSLATE" ]; 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 + if [ "$CONFPROPS" ]; then + for ITEM in $CONFPROPS; do + set_custprop "$(get_eq_left "$ITEM")" "$(get_eq_right "$ITEM")" "default" "file" + done + fi + if [ "$CONFPROPSPOST" ]; then + for ITEM in $CONFPROPSPOST; do + set_custprop "$(get_eq_left "$ITEM")" "$(get_eq_right "$ITEM")" "post" "file" + done + fi + if [ "$CONFPROPSLATE" ]; then + for ITEM in $CONFPROPSLATE; do + set_custprop "$(get_eq_left "$ITEM")" "$(get_eq_right "$ITEM")" "late" "file" + done + fi fi else reset_all_custprop "file" @@ -483,25 +498,42 @@ test_connection() { ping -c 1 -W 1 google.com >> $LOGFILE 2>&1 && CNTTEST="true" || CNTTEST="false" } +# Busybox md5 check +md5_bb() { + if [ -f "$MODPATH/busybox.md5" ]; then + if md5sum -s -c $MODPATH/busybox.md5 2>/dev/null; then + log_print "- Busybox downloaded" + md5sum -c $MODPATH/busybox.md5 >> $LOGFILE 2>&1 + chmod -v 755 $MODPATH/busybox >> $LOGFILE 2>&1 + else + log_print "! Busybox md5 mismatch!" + log_print "! No busybox downloaded!" + rm -f $MODPATH/busybox >> $LOGFILE 2>&1 + fi + else + log_print "- Busybox downloaded" + log_handler "Couldn't check md5 checksum" + chmod -v 755 $MODPATH/busybox >> $LOGFILE 2>&1 + fi +} + # Download osm0sis' busybox download_bb() { log_print "Downloading busybox." wget -T 5 -O $MODPATH/busybox $BBWWWPATH 2>&1 | tee -a $LOGFILE - if [ -f "$MODPATH/busybox" ]; then - if [ -f "$MODPATH/busybox.md5" ]; then - if md5sum -s -c $MODPATH/busybox.md5 2>/dev/null; then - log_print "- Busybox downloaded" - md5sum -c $MODPATH/busybox.md5 >> $LOGFILE 2>&1 - chmod -v 755 $MODPATH/busybox >> $LOGFILE 2>&1 - else - log_print "! Busybox md5 mismatch!" - log_print "! No busybox downloaded!" - rm -f $MODPATH/busybox >> $LOGFILE 2>&1 - fi + if [ -s "$MODPATH/busybox" ]; then + md5_bb + elif [ -f "$MODPATH/busybox" ]; then + log_print "! Download failed!" + log_print "! Second attempt!" + rm -f $MODPATH/busybox >> $LOGFILE 2>&1 + log_print "Downloading without progress bar" + wget -T 5 -q -O $MODPATH/busybox $BBWWWPATH 2>&1 | tee -a $LOGFILE + if [ -s "$MODPATH/busybox" ]; then + md5_bb else - log_print "- Busybox downloaded" - log_handler "Couldn't check md5 checksum" - chmod -v 755 $MODPATH/busybox >> $LOGFILE 2>&1 + log_print "! No busybox downloaded!" + rm -f $MODPATH/busybox >> $LOGFILE 2>&1 fi else log_print "! No busybox downloaded!" @@ -538,35 +570,42 @@ download_prints() { # Checking and downloading fingerprints list if [ "$CNTTEST" == "true" ]; then log_print "Checking list version." - wget -T 5 -O $PRINTSTMP $PRINTSWWW >> $LOGFILE 2>&1 - if [ -f "$PRINTSTMP" ]; then + wget -T 5 -q -O $PRINTSTMP $PRINTSWWW >> $LOGFILE 2>&1 + if [ -s "$PRINTSTMP" ]; then LISTVERSION=$(get_file_value $PRINTSTMP "PRINTSV=") - if [ "$LISTVERSION" == "Dev" ] || [ "$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 >> $LOGFILE 2>&1 - # Updates list version in module.prop - VERSIONTMP=$(get_file_value $MODPATH/module.prop "version=") - replace_fn version $VERSIONTMP "${MODVERSION}-v${LISTVERSION}" $MODPATH/module.prop - log_print "Updated list to v${LISTVERSION}." + if [ "$LISTVERSION" ]; then + if [ "$LISTVERSION" == "Dev" ] || [ "$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 >> $LOGFILE 2>&1 + # Updates list version in module.prop + VERSIONTMP=$(get_file_value $MODPATH/module.prop "version=") + replace_fn version $VERSIONTMP "${MODVERSION}-v${LISTVERSION}" $MODPATH/module.prop + log_print "Updated list to v${LISTVERSION}." + else + rm -f $PRINTSTMP + log_print "New fingerprints list requires module update." + fi else rm -f $PRINTSTMP - log_print "New fingerprints list requires module update." + log_print "Fingerprints list up-to-date." fi else rm -f $PRINTSTMP - log_print "Fingerprints list up-to-date." + log_print "! File not downloaded!" + log_handler "Couldn't extract list version." fi + elif [ -f "$PRINTSTMP" ]; then + rm -f $PRINTSTMP + log_print "! File not downloaded!" + log_handler "File is empty." else - log_print "File not downloaded." + log_print "! File not downloaded!" fi else log_print "No connection." fi if [ "$1" == "manual" ]; then sleep 2 - elif [ "$1" == "Dev" ]; then - sleep 2 - exit_fn else sleep 0.5 fi @@ -857,31 +896,39 @@ reset_prop_all() { # ======================== Custom Props functions ======================== # Set custom props custom_edit() { - if [ "$(get_file_value $LATEFILE "CUSTOMEDIT=")" == 1 ]; then - log_handler "Writing custom props." - TMPLST="$(get_file_value $LATEFILE "CUSTOMPROPS=")" - for ITEM in $TMPLST; do - log_handler "Changing/writing $(get_eq_left "$ITEM")." - TMPITEM=$( echo $(get_eq_right "$ITEM") | sed 's|_sp_| |g') - resetprop -v $(get_eq_left "$ITEM") >> $LOGFILE 2>&1 - resetprop -nv $(get_eq_left "$ITEM") "$TMPITEM" >> $LOGFILE 2>&1 - done + if [ "$1" ] && [ "$(get_file_value $LATEFILE "CUSTOMEDIT=")" == 1 ]; then + TMPLST="$(get_file_value $LATEFILE "${1}=")" + if [ "$TMPLST" ]; then + log_handler "Writing custom props." + for ITEM in $TMPLST; do + log_handler "Changing/writing $(get_eq_left "$ITEM")." + TMPITEM=$( echo $(get_eq_right "$ITEM") | sed 's|_sp_| |g') + resetprop -v $(get_eq_left "$ITEM") >> $LOGFILE 2>&1 + resetprop -nv $(get_eq_left "$ITEM") "$TMPITEM" >> $LOGFILE 2>&1 + done + fi fi } # Set custom prop value set_custprop() { if [ "$2" ]; then + PROPSBOOTSTAGE="CUSTOMPROPS" + if [ "$3" == "post" ]; then + PROPSBOOTSTAGE="CUSTOMPROPSPOST" + elif [ "$3" == "late" ]; then + PROPSBOOTSTAGE="CUSTOMPROPSLATE" + fi TMPVALUE=$(echo "$2" | sed 's| |_sp_|g') - CURRCUSTPROPS=$(get_file_value $LATEFILE "CUSTOMPROPS=") + CURRCUSTPROPS=$(get_file_value $LATEFILE "${PROPSBOOTSTAGE}=") TMPCUSTPROPS=$(echo "$CURRCUSTPROPS ${1}=${TMPVALUE}" | sed 's|^[ \t]*||') SORTCUSTPROPS=$(echo $(printf '%s\n' $TMPCUSTPROPS | sort -u)) log_handler "Setting custom prop $1." - replace_fn CUSTOMPROPS "\"$CURRCUSTPROPS\"" "\"$SORTCUSTPROPS\"" $LATEFILE + replace_fn $PROPSBOOTSTAGE "\"$CURRCUSTPROPS\"" "\"$SORTCUSTPROPS\"" $LATEFILE replace_fn CUSTOMEDIT 0 1 $LATEFILE - if [ "$3" != "file" ]; then + if [ "$4" != "file" ]; then after_change "$1" fi fi @@ -890,10 +937,14 @@ set_custprop() { # Reset all custom prop values reset_all_custprop() { CURRCUSTPROPS=$(get_file_value $LATEFILE "CUSTOMPROPS=") + CURRCUSTPROPSPOST=$(get_file_value $LATEFILE "CUSTOMPROPSPOST=") + CURRCUSTPROPSLATE=$(get_file_value $LATEFILE "CUSTOMPROPSLATE=") log_handler "Resetting all custom props." # Removing all custom props replace_fn CUSTOMPROPS "\"$CURRCUSTPROPS\"" "\"\"" $LATEFILE + replace_fn CUSTOMPROPSPOST "\"$CURRCUSTPROPSPOST\"" "\"\"" $LATEFILE + replace_fn CUSTOMPROPSLATE "\"$CURRCUSTPROPSLATE\"" "\"\"" $LATEFILE replace_fn CUSTOMEDIT 1 0 $LATEFILE if [ "$1" != "file" ]; then @@ -903,20 +954,34 @@ reset_all_custprop() { # Reset custom prop value reset_custprop() { + if [ "$(echo $CUSTOMPROPS | grep $1)" ]; then + PROPSBOOTSTAGE="CUSTOMPROPS" + elif [ "$(echo $CUSTOMPROPSPOST | grep $1)" ]; then + PROPSBOOTSTAGE="CUSTOMPROPSPOST" + elif [ "$(echo $CUSTOMPROPSLATE | grep $1)" ]; then + PROPSBOOTSTAGE="CUSTOMPROPSLATE" + fi TMPVALUE=$(echo "$2" | sed 's| |_sp_|g') - CURRCUSTPROPS=$(get_file_value $LATEFILE "CUSTOMPROPS=") + CURRCUSTPROPS=$(get_file_value $LATEFILE "${PROPSBOOTSTAGE}=") log_handler "Resetting custom prop $1." TMPCUSTPROPS=$(echo $CURRCUSTPROPS | sed "s|${1}=${TMPVALUE}||" | tr -s " " | sed 's|^[ \t]*||') # Updating custom props string - replace_fn CUSTOMPROPS "\"$CURRCUSTPROPS\"" "\"$TMPCUSTPROPS\"" $LATEFILE - CURRCUSTPROPS=$(get_file_value $LATEFILE "CUSTOMPROPS=") - if [ -z "$CURRCUSTPROPS" ]; then + replace_fn $PROPSBOOTSTAGE "\"$CURRCUSTPROPS\"" "\"$TMPCUSTPROPS\"" $LATEFILE + if [ -z "$(get_file_value $LATEFILE "CUSTOMPROPS=")" ] && [ -z "$(get_file_value $LATEFILE "CUSTOMPROPSPOST=")" ] && [ -z "$(get_file_value $LATEFILE "CUSTOMPROPSLATE=")" ]; then replace_fn CUSTOMEDIT 1 0 $LATEFILE fi - after_change "$1" + if [ "$3" != "bootstage" ]; then + after_change "$1" + fi +} + +# Change what boot stage is used for custom prop +change_bootstage_custprop() { + reset_custprop "$1" "$(resetprop $1)" "bootstage" + set_custprop "$1" "$(resetprop $1)" "$2" } # ======================== Delete Props functions ======================== @@ -1029,7 +1094,7 @@ collect_logs() { # Copy package to internal storage mv -f $CACHELOC/propslogs.tar.gz /storage/emulated/0 >> $LOGFILE 2>&1 - + # Remove temporary directory rm -rf $TMPLOGLOC >> $LOGFILE 2>&1 diff --git a/config.sh b/config.sh index e29ee1c..f6f5618 100644 --- a/config.sh +++ b/config.sh @@ -172,6 +172,8 @@ MODULETAGS MODULESELINUX MODULEFINGERPRINT CUSTOMPROPS +CUSTOMPROPSPOST +CUSTOMPROPSLATE DELETEPROPS " PROPSLIST=" @@ -220,77 +222,83 @@ script_placement() { cp -af $UPDATEPOSTFILE $MODPATH/propsconf_post >> $INSTLOG 2>&1 cp -af $UPDATEPOSTFILE $POSTFILE >> $INSTLOG 2>&1 cp -af $UPDATELATEFILE $MODPATH/propsconf_late >> $INSTLOG 2>&1 - # New script - if [ "$UPDATEV" -gt "$FILEV" ]; then - # Fresh install - if [ "$FILEV" == 0 ]; then - log_print "- Placing settings script" - # Updated script with a required clearing of settings - elif [ "$UPDATETRANSF" -gt "$FILETRANSF" ] && [ -z "$NOTTRANSF" ]; then - log_print "- Settings cleared (script updated)" - # Updated script - else - log_print "- Script updated" - log_print "- Transferring settings from old script" - # Prop settings - for ITEM in $SETTINGSLIST; do - # Checking if a script update requires some options not to transfer - case "$NOTTRANSF" in - *${ITEM}*) - if [ "$UPDATETRANSF" -gt "$FILETRANSF" ]; then - TRANSFOPT=1 - else + if [ "$FILEV" ]; then + # New script + if [ "$UPDATEV" -gt "$FILEV" ]; then + # Fresh install + if [ "$FILEV" == 0 ]; then + log_print "- Placing settings script" + # Updated script with a required clearing of settings + elif [ "$UPDATETRANSF" -gt "$FILETRANSF" ] && [ -z "$NOTTRANSF" ]; then + log_print "- Settings cleared (script updated)" + # Updated script + else + log_print "- Script updated" + log_print "- Transferring settings from old script" + # Prop settings + for ITEM in $SETTINGSLIST; do + # Checking if a script update requires some options not to transfer + case "$NOTTRANSF" in + *${ITEM}*) + if [ "$UPDATETRANSF" -gt "$FILETRANSF" ]; then + TRANSFOPT=1 + else + TRANSFOPT=0 + fi + ;; + *) TRANSFOPT=0 + ;; + esac + if [ "$TRANSFOPT" == 1 ]; then + log_handler "Not transfering settings for ${ITEM}." + else + SOLD=$(get_file_value $LATEFILE "${ITEM}=") + SNEW=$(get_file_value $UPDATELATEFILE "${ITEM}=") + if [ "$SOLD" ] && [ "$SOLD" != "$SNEW" ]; then + log_handler "Setting ${ITEM} from ${SNEW} to ${SOLD}." + sed -i "s|${ITEM}=${SNEW}|${ITEM}=${SOLD}|" $UPDATELATEFILE fi - ;; - *) - TRANSFOPT=0 - ;; - esac - if [ "$TRANSFOPT" == 1 ]; then - log_handler "Not transfering settings for ${ITEM}." - else - SOLD=$(get_file_value $LATEFILE "${ITEM}=") - SNEW=$(get_file_value $UPDATELATEFILE "${ITEM}=") - if [ "$SOLD" ] && [ "$SOLD" != "$SNEW" ]; then - log_handler "Setting ${ITEM} from ${SNEW} to ${SOLD}." - sed -i "s|${ITEM}=${SNEW}|${ITEM}=${SOLD}|" $UPDATELATEFILE fi - fi - done - # Prop values - for ITEM in $PROPSETTINGSLIST; do - SOLD=$(get_file_value $LATEFILE "${ITEM}=") - if [ "$SOLD" ]; then - log_handler "Setting ${ITEM} to ${SOLD}." - sed -i "s|${ITEM}=\"\"|${ITEM}=\"${SOLD}\"|" $UPDATELATEFILE - fi - done - # Prop and file edits - for ITEM in $PROPSLIST; do - REPROP=$(echo "RE${ITEM}" | tr '[:lower:]' '[:upper:]') - SETPROP=$(echo "SET${ITEM}" | tr '[:lower:]' '[:upper:]') - REOLD=$(get_file_value $LATEFILE "${REPROP}=") - SETOLD=$(get_file_value $LATEFILE "${SETPROP}=") - if [ "$REOLD" ] && [ "$REOLD" != "false" ]; then - log_handler "Setting sensitive prop ${ITEM} to ${REOLD}." - sed -i "s/${REPROP}=false/${REPROP}=${REOLD}/" $UPDATELATEFILE - fi - if [ "$SETOLD" ] && [ "$SETOLD" != "false" ]; then - log_handler "Setting file edit ${ITEM} to ${SETOLD}." - sed -i "s/${SETPROP}=false/${SETPROP}=${SETOLD}/" $UPDATELATEFILE - fi - done + done + # Prop values + for ITEM in $PROPSETTINGSLIST; do + SOLD=$(get_file_value $LATEFILE "${ITEM}=") + if [ "$SOLD" ]; then + log_handler "Setting ${ITEM} to ${SOLD}." + sed -i "s|${ITEM}=\"\"|${ITEM}=\"${SOLD}\"|" $UPDATELATEFILE + fi + done + # Prop and file edits + for ITEM in $PROPSLIST; do + REPROP=$(echo "RE${ITEM}" | tr '[:lower:]' '[:upper:]') + SETPROP=$(echo "SET${ITEM}" | tr '[:lower:]' '[:upper:]') + REOLD=$(get_file_value $LATEFILE "${REPROP}=") + SETOLD=$(get_file_value $LATEFILE "${SETPROP}=") + if [ "$REOLD" ] && [ "$REOLD" != "false" ]; then + log_handler "Setting sensitive prop ${ITEM} to ${REOLD}." + sed -i "s/${REPROP}=false/${REPROP}=${REOLD}/" $UPDATELATEFILE + fi + if [ "$SETOLD" ] && [ "$SETOLD" != "false" ]; then + log_handler "Setting file edit ${ITEM} to ${SETOLD}." + sed -i "s/${SETPROP}=false/${SETPROP}=${SETOLD}/" $UPDATELATEFILE + fi + done + fi + log_handler "Setting up late_start settings script." + cp -af $UPDATELATEFILE $LATEFILE >> $INSTLOG 2>&1 + # Downgraded script (flashed old module version) + elif [ "$UPDATEV" -lt "$FILEV" ]; then + log_print "- Settings cleared (script downgraded)" + cp -af $UPDATELATEFILE $LATEFILE >> $INSTLOG 2>&1 + # No update of script + else + log_print "- Module settings preserved" fi + else + log_print "- Placing settings script" log_handler "Setting up late_start settings script." cp -af $UPDATELATEFILE $LATEFILE >> $INSTLOG 2>&1 - # Downgraded script (flashed old module version) - elif [ "$UPDATEV" -lt "$FILEV" ]; then - log_print "- Settings cleared (script downgraded)" - cp -af $UPDATELATEFILE $LATEFILE >> $INSTLOG 2>&1 - # No update of script - else - log_print "- Module settings preserved" fi } @@ -383,6 +391,23 @@ check_bb() { fi } +# Busybox md5 check +md5_bb() { + if [ -f "$INSTALLER/busybox.md5" ]; then + if md5sum -s -c $INSTALLER/busybox.md5 2>/dev/null; then + log_print "- Busybox downloaded" + md5sum -c $INSTALLER/busybox.md5 >> $INSTLOG 2>&1 + else + log_print "! Busybox md5 mismatch!" + log_print "! No busybox downloaded!" + rm -f $MODPATH/busybox >> $INSTLOG 2>&1 + fi + else + log_print "- Busybox downloaded" + log_handler "Couldn't check md5 checksum" + fi +} + # Download osm0sis' busybox download_bb() { if [ -f "$CACHELOC/busybox_post" ]; then @@ -403,21 +428,21 @@ download_bb() { # Downloading busybox if [ "$CNTTEST" == "true" ]; then - log_print "- Downloading busybox" + log_print "- Downloading busybox (${BBARCH})" wget -T 5 -O $MODPATH/busybox $BBWWWPATH 2>&1 | tee -a $INSTLOG - if [ -f "$MODPATH/busybox" ]; then - if [ -f "$INSTALLER/busybox.md5" ]; then - if md5sum -s -c $INSTALLER/busybox.md5 2>/dev/null; then - log_print "- Busybox downloaded" - md5sum -c $INSTALLER/busybox.md5 >> $INSTLOG 2>&1 - else - log_print "! Busybox md5 mismatch!" - log_print "! No busybox downloaded!" - rm -f $MODPATH/busybox >> $INSTLOG 2>&1 - fi + if [ -s "$MODPATH/busybox" ]; then + md5_bb + elif [ -f "$MODPATH/busybox" ]; then + log_print "! Download failed!" + log_print "! Second attempt!" + rm -f $MODPATH/busybox >> $INSTLOG 2>&1 + log_print "- Downloading without progress bar" + wget -T 5 -q -O $MODPATH/busybox $BBWWWPATH 2>&1 | tee -a $INSTLOG + if [ -s "$MODPATH/busybox" ]; then + md5_bb else - log_print "- Busybox downloaded" - log_handler "Couldn't check md5 checksum" + log_print "! No busybox downloaded!" + rm -f $MODPATH/busybox >> $INSTLOG 2>&1 fi else log_print "! No busybox downloaded!" diff --git a/module.prop b/module.prop index 9132339..835218a 100644 --- a/module.prop +++ b/module.prop @@ -1,7 +1,7 @@ id=MagiskHidePropsConf name=MagiskHide Props Config -version=v2.3.6-v28 -versionCode=22 +version=v2.4.0-v29 +versionCode=23 author=Didgeridoohan description=Change your device's fingerprint, to pass SafetyNet's CTS Profile check. Edit prop files for better root hiding. Set/reset prop values set by MagiskHide. Change any prop values easily. minMagisk=1500 diff --git a/system/binpath/props b/system/binpath/props index 1766364..1f83ba0 100644 Binary files a/system/binpath/props and b/system/binpath/props differ