2018-03-18 15:39:43 +00:00
#!/system/bin/sh
# MagiskHide Props Config
2020-01-10 18:45:27 +00:00
# Copyright (c) 2018-2020 Didgeridoohan @ XDA Developers
2019-02-02 12:37:20 +00:00
# Licence: MIT
2018-03-18 15:39:43 +00:00
2020-08-14 08:01:35 +00:00
ADBPATH = /data/adb
MHPCPATH = $ADBPATH /mhpc
if [ " $INSTFN " ] ; then
LOGFILE = $MHPCPATH /propsconf_install.log
else
LOGFILE = $MHPCPATH /propsconf.log
fi
2020-10-25 19:49:49 +00:00
# Checking Magisk Busybox
2020-08-14 08:01:35 +00:00
if [ -z " $INSTFN " ] && [ " $BOOTSTAGE " != "post" -a " $BOOTSTAGE " != "late" ] ; then
BBPATH = $ADBPATH /magisk/busybox
if [ -f " $BBPATH " ] ; then
for ITEM in $( $BBPATH --list | tail -n +3) ; do
alias $ITEM = " $BBPATH $ITEM "
done
fi
if [ -f " $BBPATH " ] ; then
echo "" >> $LOGFILE 2>& 1
echo -e " $( date +"%Y-%m-%d %H:%M:%S.%3N" ) - Using $( $BBPATH | head -1) . " >> $LOGFILE 2>& 1
echo " $BBPATH " >> $LOGFILE 2>& 1
else
echo "" >> $LOGFILE 2>& 1
echo -e " $( date +"%Y-%m-%d %H:%M:%S.%3N" ) - No Busybox found. " >> $LOGFILE 2>& 1
fi
fi
# Finding file values, $1=file (with path), $2=string to look for
2019-03-27 10:50:00 +00:00
get_file_value( ) {
if [ -f " $1 " ] ; then
2020-08-14 08:01:35 +00:00
echo $( grep $2 $1 ) | sed " s|.* ${ 2 } || " | sed 's|\"||g'
2019-03-27 10:50:00 +00:00
fi
}
2019-02-02 12:37:20 +00:00
# ======================== Variables ========================
2019-11-02 22:24:17 +00:00
MODULESPATH = $ADBPATH /modules
2019-11-22 19:19:18 +00:00
LATEFILE = $MHPCPATH /propsconf_late
if [ -z $SLOT ] ; then
CACHELOC = /cache
else
CACHELOC = /data/cache
fi
2019-03-27 10:50:00 +00:00
if [ " $INSTFN " ] ; then
# Installation (config.sh)
2019-11-22 19:19:18 +00:00
MODVERSION = $( echo $( get_file_value $TMPDIR /module.prop "version=" ) | sed 's|-.*||' )
2019-04-05 21:10:02 +00:00
POSTPATH = $ADBPATH /post-fs-data.d
SERVICEPATH = $ADBPATH /service.d
2019-03-27 10:50:00 +00:00
POSTFILE = $POSTPATH /propsconf_post
POSTLATEFILE = $POSTPATH /propsconf_late
2020-03-06 12:37:19 +00:00
UPDATELATEFILE = $MHPCPATH /propsconf_late_update
ORIGLATEFILE = $MODPATH /common/propsconf_late
2019-11-02 22:24:17 +00:00
CACHERM = "
$CACHELOC /propsconf_postfile.log
$CACHELOC /propsconf.log
$CACHELOC /propsconf_install.log
$CACHELOC /propsconf_last.log
"
2019-03-27 10:50:00 +00:00
SETTINGSLIST = "
FINGERPRINTENB
PRINTMODULE
PRINTEDIT
PRINTVEND
PRINTCHK
DEVSIM
PROPCOUNT
PROPEDIT
CUSTOMEDIT
DELEDIT
PRINTSTAGE
2019-04-02 19:42:29 +00:00
PATCHSTAGE
2019-03-27 10:50:00 +00:00
SIMSTAGE
OPTIONBOOT
OPTIONCOLOUR
2020-09-12 18:30:24 +00:00
OPTIONWEBP
OPTIONWEBU
2019-03-27 10:50:00 +00:00
OPTIONUPDATE
2019-11-22 19:19:18 +00:00
OPTIONBACK
2019-03-27 10:50:00 +00:00
BRANDSET
NAMESET
DEVICESET
RELEASESET
IDSET
INCREMENTALSET
DESCRIPTIONSET
2019-11-02 22:24:17 +00:00
DISPLAYSET
2019-03-27 10:50:00 +00:00
SDKSET
2020-02-26 21:08:29 +00:00
MANUFACTURERSET
MODELSET
PARTPROPSSET
2019-03-27 10:50:00 +00:00
REBOOTCHK
"
PROPSETTINGSLIST = "
MODULEDEBUGGABLE
MODULESECURE
MODULETYPE
MODULETAGS
MODULESELINUX
MODULEFINGERPRINT
SIMBRAND
SIMNAME
SIMDEVICE
SIMRELEASE
SIMID
SIMINCREMENTAL
SIMDESCRIPTION
2019-11-02 22:24:17 +00:00
SIMDISPLAY
2019-03-27 10:50:00 +00:00
SIMSDK
2020-02-26 21:08:29 +00:00
SIMMANUFACTURER
SIMMODEL
2019-03-27 10:50:00 +00:00
CUSTOMPROPS
CUSTOMPROPSPOST
CUSTOMPROPSLATE
2019-05-04 18:57:59 +00:00
CUSTOMPROPSDELAY
2019-03-27 10:50:00 +00:00
DELETEPROPS
"
else
# Placeholder variables
2020-08-14 08:01:35 +00:00
MODVERSIONPH = VER_PLACEHOLDER
BINPH = BIN_PLACEHOLDER
2019-03-27 10:50:00 +00:00
# Log variables
2019-11-02 22:24:17 +00:00
LASTLOGFILE = $MHPCPATH /propsconf_last.log
2020-01-26 09:36:26 +00:00
VLOGFILE = $MHPCPATH /propsconf_verbose.log
VLASTLOGFILE = $MHPCPATH /propsconf_verbose_last.log
2019-11-02 22:24:17 +00:00
TMPLOGLOC = $MHPCPATH /propslogs
2019-03-27 10:50:00 +00:00
TMPLOGLIST = "
2019-11-02 22:24:17 +00:00
$MHPCPATH /defaultprops
2019-11-03 21:04:04 +00:00
$CACHELOC /magisk.log
$CACHELOC /magisk.log.bak
2019-11-02 22:24:17 +00:00
$MHPCPATH /propsconf*
2019-03-27 10:50:00 +00:00
$LATEFILE
"
fi
2020-09-12 18:30:24 +00:00
TMPFSMOUNT = $( magisk --path)
MIRRORPATH = $TMPFSMOUNT /.magisk/mirror
2019-03-27 10:50:00 +00:00
SYSTEMFILE = $MODPATH /system.prop
2019-11-22 19:19:18 +00:00
RUNFILE = $MHPCPATH /script_check
2020-09-12 18:30:24 +00:00
UPDATECHECK = ""
2019-02-02 12:37:20 +00:00
# Make sure that the terminal app used actually can see resetprop
2019-05-04 18:57:59 +00:00
if [ " $BOOTSTAGE " = = "props" ] ; then
alias resetprop = " $ADBPATH /magisk/magisk resetprop "
fi
2019-11-22 19:19:18 +00:00
2019-03-27 10:50:00 +00:00
# Fingerprint variables
2020-01-10 18:45:27 +00:00
PRINTSLOC = $MODPATH /common/prints.sh
2019-11-02 22:24:17 +00:00
PRINTSTMP = $MHPCPATH /prints.sh
2018-05-29 07:29:19 +00:00
PRINTSWWW = "https://raw.githubusercontent.com/Magisk-Modules-Repo/MagiskHide-Props-Config/master/common/prints.sh"
2018-10-30 08:28:47 +00:00
PRINTSDEV = "https://raw.githubusercontent.com/Didgeridoohan/Playground/master/prints.sh"
2018-10-25 06:37:05 +00:00
PRINTFILES = $MODPATH /printfiles
2020-02-26 21:08:29 +00:00
CSTMPRINTS = /data/media/0/printslist
2019-11-03 21:04:04 +00:00
CSTMFILE = $PRINTFILES /Custom.sh
2020-02-26 21:08:29 +00:00
EXPORTPATH = /data/media/0/mhpc
EXPORTFILE = $EXPORTPATH /propsconf_conf
2019-03-27 10:50:00 +00:00
# Known modules that edit device fingerprint
USNFLIST = "
xiaomi-safetynet-fix
safetynet-fingerprint-fix
VendingVisa
DeviceSpoofingTool4Magisk
universal-safetynet-fix
samodx-safetyskipper
safetypatcher
petnoires-safetyspoofer
2019-04-05 21:10:02 +00:00
VR_Patch
2020-08-27 09:07:28 +00:00
PIXELARITY
2019-03-27 10:50:00 +00:00
"
# Configuration file locations
2020-03-06 12:37:19 +00:00
CONFFILELOC = "
2020-01-17 08:44:46 +00:00
/data
$CACHELOC
/data/media/0
2019-03-27 10:50:00 +00:00
"
2018-03-18 15:39:43 +00:00
2020-09-12 18:30:24 +00:00
# Solo-run run options
SOLORUN = "
d
f
h
l
r
s
u
"
2018-03-18 15:39:43 +00:00
# MagiskHide props
PROPSLIST = "
ro.debuggable
ro.secure
ro.build.type
ro.build.tags
2020-05-21 19:02:54 +00:00
ro.bootmode
ro.boot.mode
2018-03-18 15:39:43 +00:00
ro.build.selinux
"
# Safe values
SAFELIST = "
ro.debuggable= 0
ro.secure= 1
ro.build.type= user
ro.build.tags= release-keys
2020-05-21 19:02:54 +00:00
ro.bootmode= unknown
ro.boot.mode= unknown
2018-03-18 15:39:43 +00:00
ro.build.selinux= 0
"
2020-02-26 21:08:29 +00:00
# Partitions used for different props
PARTITIONS = "
system
vendor
product
odm
2020-09-12 18:30:24 +00:00
system_ext
2020-02-26 21:08:29 +00:00
"
# Additional fingerprint prop parts
2020-03-06 12:37:19 +00:00
PRINTPROPSPARTS = "
2020-02-26 21:08:29 +00:00
bootimage
2018-04-26 20:40:46 +00:00
"
2019-02-02 12:37:20 +00:00
# Print parts
PRINTPARTS = "
ro.product.brand
ro.product.name
ro.product.device
ro.build.version.release
ro.build.id
ro.build.version.incremental
"
2018-10-30 08:28:47 +00:00
# Additional SafetyNet props
SNPROPS = "
ro.build.version.security_patch
"
2019-02-02 12:37:20 +00:00
# Additional props
ADNPROPS = "
ro.build.fingerprint
ro.vendor.build.fingerprint
ro.build.description
"
2019-03-27 10:50:00 +00:00
# Additional simulation props
2020-02-26 21:08:29 +00:00
ADNSIMPROPS1 = "
2019-11-02 22:24:17 +00:00
ro.build.display.id
2019-03-27 10:50:00 +00:00
ro.build.version.sdk
"
2020-02-26 21:08:29 +00:00
ADNSIMPROPS2 = "
ro.product.manufacturer
ro.product.model
"
ADNSIMPROPS = $ADNSIMPROPS1 $ADNSIMPROPS2
2019-03-27 10:50:00 +00:00
# Android API level
APILVL = "
4.2= 17
4.3= 18
4.4= 19
5.0= 21
5.1= 22
6.0= 23
7.0= 24
7.1= 25
8.0= 26
8.1= 27
9 = 28
2019-11-22 19:19:18 +00:00
10 = 29
"
2019-02-02 12:37:20 +00:00
# Values props list
2019-03-27 10:50:00 +00:00
VALPROPSLIST = $PROPSLIST $PRINTPARTS $SNPROPS $ADNPROPS $ADNSIMPROPS
2019-02-02 12:37:20 +00:00
# Loading module settings
2019-03-27 10:50:00 +00:00
if [ -z " $INSTFN " ] ; then
. $LATEFILE
fi
2019-02-02 12:37:20 +00:00
2019-11-22 19:19:18 +00:00
# Add log divider
if [ " $BOOTSTAGE " != "post" ] ; then
echo "" >> $LOGFILE
echo "==============================" >> $LOGFILE
fi
2019-02-02 12:37:20 +00:00
# ======================== General functions ========================
2020-08-14 08:01:35 +00:00
# Log functions, $1=Log text
# Print to log
2019-03-27 10:50:00 +00:00
log_handler( ) {
if [ " $( id -u) " = = 0 ] ; then
echo "" >> $LOGFILE 2>& 1
2020-05-21 19:02:54 +00:00
echo -e " $( date +"%Y-%m-%d %H:%M:%S.%3N" ) - $1 " >> $LOGFILE 2>& 1
2018-07-01 05:29:20 +00:00
fi
2018-04-25 22:17:32 +00:00
}
2020-08-14 08:01:35 +00:00
# Print to log and screen
2018-03-26 16:25:58 +00:00
log_print( ) {
2019-03-27 10:50:00 +00:00
if [ " $INSTFN " ] ; then
ui_print " $1 "
else
2020-08-14 08:01:35 +00:00
echo -e " $1 "
2019-03-27 10:50:00 +00:00
fi
2018-03-26 16:25:58 +00:00
log_handler " $1 "
}
2020-08-14 08:01:35 +00:00
# Print to controll file for boot scripts
2018-04-19 03:13:40 +00:00
log_script_chk( ) {
log_handler " $1 "
2018-08-07 11:50:01 +00:00
echo -e " $( date +"%m-%d-%Y %H:%M:%S" ) - $1 " >> $RUNFILE 2>& 1
2018-04-19 03:13:40 +00:00
}
2018-03-26 16:25:58 +00:00
#Divider
DIVIDER = " ${ Y } ===================================== ${ N } "
2020-08-14 08:01:35 +00:00
# Header, $1=header text
2018-03-26 16:25:58 +00:00
menu_header( ) {
2020-10-25 19:49:49 +00:00
# Don't clear screen if running from adb or if testing flag is active
2019-11-02 22:24:17 +00:00
if [ -z " $ANDROID_SOCKET_adbd " ] && [ " $DEVTESTING " = = "false" ] ; then
2018-04-19 03:13:40 +00:00
clear
fi
2018-03-26 16:25:58 +00:00
if [ " $MODVERSION " = = "VER_PLACEHOLDER" ] ; then
VERSIONTXT = ""
else
VERSIONTXT = $MODVERSION
fi
echo ""
2020-08-14 08:01:35 +00:00
echo -e " ${ W } MagiskHide Props Config $VERSIONTXT ${ N } "
echo -e " ${ W } by Didgeridoohan @ XDA Developers ${ N } "
2018-03-26 16:25:58 +00:00
echo ""
2020-08-14 08:01:35 +00:00
echo -e $DIVIDER
2018-03-26 16:25:58 +00:00
echo -e " $1 "
2020-08-14 08:01:35 +00:00
echo -e $DIVIDER
2018-03-26 16:25:58 +00:00
}
2018-03-18 15:39:43 +00:00
2019-02-02 12:37:20 +00:00
# Get module version
module_v_ctrl( ) {
2019-04-05 21:10:02 +00:00
VERSIONCMP = $( echo $MODVERSION | sed 's|v||g' | sed 's|\.||g' )
2019-05-12 05:10:24 +00:00
VERSIONTMP = $( echo $( get_file_value $MODPATH /module.prop "version=" ) )
2019-02-02 12:37:20 +00:00
}
2020-08-14 08:01:35 +00:00
# Find prop type, $1=prop name
2018-03-18 15:39:43 +00:00
get_prop_type( ) {
2019-02-02 12:37:20 +00:00
if [ " $1 " = = "ro.vendor.build.fingerprint" ] ; then
echo "vendprint"
2019-11-02 22:24:17 +00:00
elif [ " $1 " = = "ro.build.display.id" ] ; then
echo "display"
2019-02-02 12:37:20 +00:00
else
echo $1 | sed 's|.*\.||' | sed 's|.*\_||'
fi
2018-03-18 15:39:43 +00:00
}
2020-08-14 08:01:35 +00:00
# Get left side of =, $1=string to check
2018-04-15 22:05:33 +00:00
get_eq_left( ) {
2019-02-02 12:37:20 +00:00
echo $1 | cut -f 1 -d '='
2018-03-18 15:39:43 +00:00
}
2018-04-15 22:05:33 +00:00
2020-08-14 08:01:35 +00:00
# Get right side of =, $1=string to check
2018-04-15 22:05:33 +00:00
get_eq_right( ) {
2019-02-02 12:37:20 +00:00
echo $1 | cut -f 2 -d '='
2018-03-18 15:39:43 +00:00
}
2020-08-14 08:01:35 +00:00
# Get the list of print version, $1=Fingerprint device info with android versions
2019-03-27 10:50:00 +00:00
get_print_versions( ) {
echo " $1 " | sed 's|.*(||' | sed 's|).*||' | sed 's| \& | |g'
}
2020-08-14 08:01:35 +00:00
# Get Android version with 3 digits for input, $1=version string to convert to three digits
2018-10-21 14:17:11 +00:00
get_android_version( ) {
2019-04-08 19:44:41 +00:00
VERTMP = $( echo $1 | sed 's|\.||g' )
2018-10-21 14:17:11 +00:00
if [ " ${# VERTMP } " -lt 3 ] ; then
2020-01-17 08:44:46 +00:00
until [ " ${# VERTMP } " = = 3 ] ; do
2018-10-21 14:17:11 +00:00
VERTMP = " $( echo ${ VERTMP } 0) "
done
fi
echo $VERTMP
}
2020-08-14 08:01:35 +00:00
# Get security patch date for current fingerprint, $1=fingerprint string, including appended security patch date
2018-10-21 14:17:11 +00:00
get_sec_patch( ) {
2018-10-25 10:22:27 +00:00
echo $1 | sed 's|.*\_\_||'
2018-10-21 14:17:11 +00:00
}
2020-08-14 08:01:35 +00:00
# Get the fingerprint for displaying in the ui, $1=fingerprint
2018-10-21 14:17:11 +00:00
get_print_display( ) {
2018-10-25 10:22:27 +00:00
echo $1 | sed 's|\_\_.*||'
2018-10-21 14:17:11 +00:00
}
2020-08-14 08:01:35 +00:00
# Get prop value for custom props, $1=full prop string with name and value
get_prop_value( ) {
echo " $( get_eq_right " $1 " ) " | sed 's|_sp_| |g' | sed 's|\;.*$||'
}
# Get delay for custom props, $1=full prop string with name, value and delay. If no delay is set, 0 is returned
get_prop_delay( ) {
TMPVAL = " $( echo " $( get_eq_right " $1 " ) " | sed 's|^.*\;||' | sed 's|\_\_.*$||' ) "
if [ " $TMPVAL " ] ; then
echo " $TMPVAL "
else
echo "0"
fi
}
# Get execution point for custom prop delay, $1=full prop string with name, value and delay
get_prop_delay_exec( ) {
echo " $( get_eq_right " $1 " ) " | sed 's|^.*\_\_||'
}
# Replace file values, $1=Variable to update, $2=Original variable value, $3=New variable value, $4=File, $5=control option for placeholder replacement
2018-04-25 22:17:32 +00:00
replace_fn( ) {
2019-03-27 10:50:00 +00:00
if [ " $5 " = = "placeholder" ] ; then
2020-02-26 21:08:29 +00:00
sed -i " s| ${ 1 } PH= ${ 2 } | ${ 1 } = ${ 3 } | " $4 >> $LOGFILE 2>& 1
2019-03-27 10:50:00 +00:00
else
2020-02-26 21:08:29 +00:00
sed -i " s| ${ 1 } = ${ 2 } | ${ 1 } = ${ 3 } | " $4 >> $LOGFILE 2>& 1
2019-03-27 10:50:00 +00:00
fi
2018-03-18 15:39:43 +00:00
}
2020-08-14 08:01:35 +00:00
# Format user files to remove Windows file endings, $1=file to format
2018-12-09 09:05:50 +00:00
format_file( ) {
log_handler " Formating file ( ${ 1 } ). "
# Remove Windows line endings
sed -i 's/\r$//' $1
# Check for newline at EOF
if [ ! -z " $( tail -c 1 " $1 " ) " ] ; then
echo "" >> $1
fi
}
2019-02-10 16:12:18 +00:00
# Reboot the device
force_reboot( ) {
2020-09-12 18:30:24 +00:00
RBREASON = ""
if [ " $( get_file_value " $TMPFSMOUNT /.magisk/config " "RECOVERYMODE=" ) " = = "true" ] ; then
RBREASON = "recovery"
fi
2019-02-10 16:12:18 +00:00
echo ""
2020-08-14 08:01:35 +00:00
echo -e " ${ C } Rebooting... ${ N } "
2019-05-04 18:57:59 +00:00
log_handler "Rebooting."
2020-09-12 18:30:24 +00:00
[ $( getprop sys.boot_completed) = = 1 ] && /system/bin/svc power reboot $RBREASON >> $LOGFILE 2>& 1 || /system/bin/reboot $RBREASON >> $LOGFILE 2>& 1 || setprop sys.powerctl reboot >> $LOGFILE 2>& 1
2019-02-10 16:12:18 +00:00
sleep 15
log_handler "Rebooting failed."
echo ""
echo "That doesn't seem like it worked..."
echo "Please reboot manually."
echo ""
exit 0
}
2020-08-14 08:01:35 +00:00
# Updates placeholders, $1=file, $2=Variable name to replace to, $3=Placeholder name, $4=Value to assign updated variable
2018-03-18 15:39:43 +00:00
placeholder_update( ) {
2019-03-27 10:50:00 +00:00
log_handler " Checking for ${ 3 } in ${ 1 } . "
2019-11-22 19:19:18 +00:00
if [ -f " $1 " ] ; then
FILEVALUE = $( get_file_value " $1 " " ${ 2 } PH= " )
if [ " $FILEVALUE " ] ; then
case $FILEVALUE in
*PLACEHOLDER*) replace_fn $2 $3 $4 $1 "placeholder"
log_handler " Placeholder ${ 3 } updated to ${ 4 } in ${ 1 } . "
; ;
esac
else
log_handler " No placeholder to update for ${ 2 } in ${ 1 } . "
fi
2019-03-27 10:50:00 +00:00
else
2019-11-22 19:19:18 +00:00
log_handler " $1 does not exist. "
2019-03-27 10:50:00 +00:00
fi
2018-03-18 15:39:43 +00:00
}
2018-03-20 18:31:57 +00:00
2019-02-02 12:37:20 +00:00
# Check if boot scripts ran during boot
script_ran_check( ) {
POSTCHECK = 0
if [ -f " $RUNFILE " ] && [ " $( grep "post-fs-data.sh module script finished" $RUNFILE ) " ] ; then
POSTCHECK = 1
fi
LATECHECK = 0
if [ -f " $RUNFILE " ] && [ " $( grep "service.sh module script finished" $RUNFILE ) " ] ; then
LATECHECK = 1
fi
}
2019-11-02 22:24:17 +00:00
#Save default file values in propsconf_late
default_save( ) {
#Format the props file
log_handler "Formatting prop file."
sed -i -e " s|\]\:\ \[|=|g;s|^\[||g;s|\] $||g " $MHPCPATH /defaultprops
#Save the props values to $LATEFILE
for ITEM in $VALPROPSLIST ; do
TMPPROP = $( get_prop_type $ITEM | tr '[:lower:]' '[:upper:]' )
ORIGPROP = " ORIG ${ TMPPROP } "
ORIGTMP = " $( get_file_value $LATEFILE " ${ ORIGPROP } = " ) "
CURRPROP = " CURR ${ TMPPROP } "
CURRTMP = " $( get_file_value $MHPCPATH /defaultprops " ${ ITEM } = " ) "
replace_fn $ORIGPROP " \" $ORIGTMP \" " " \" $CURRTMP \" " $LATEFILE
done
}
2018-08-07 11:50:01 +00:00
# Check for original prop values
2018-04-15 22:05:33 +00:00
orig_check( ) {
2019-02-02 12:37:20 +00:00
PROPSTMPLIST = $VALPROPSLIST
2018-04-15 22:05:33 +00:00
ORIGLOAD = 0
for PROPTYPE in $PROPSTMPLIST ; do
PROP = $( get_prop_type $PROPTYPE )
2018-06-03 16:40:24 +00:00
ORIGPROP = $( echo " ORIG ${ PROP } " | tr '[:lower:]' '[:upper:]' )
2019-02-02 12:37:20 +00:00
ORIGVALUE = " $( echo ${ ORIGPROP } ) "
2018-04-15 22:05:33 +00:00
if [ " $ORIGVALUE " ] ; then
ORIGLOAD = 1
fi
done
}
2018-08-07 11:50:01 +00:00
# Load currently set values
2018-04-15 22:05:33 +00:00
curr_values( ) {
2019-02-02 12:37:20 +00:00
for ITEM in $VALPROPSLIST ; do
2020-03-06 12:37:19 +00:00
CURRTMP = $( getprop $ITEM )
2019-02-02 12:37:20 +00:00
TMPPROP = $( get_prop_type $ITEM | tr '[:lower:]' '[:upper:]' )
eval " CURR ${ TMPPROP } =' $CURRTMP ' "
2020-03-06 12:37:19 +00:00
echo " ${ ITEM } : ${ CURRTMP } " >> $LOGFILE 2>& 1
2019-02-02 12:37:20 +00:00
done
2018-04-15 22:05:33 +00:00
if [ -z " $CURRFINGERPRINT " ] ; then
2020-03-06 12:37:19 +00:00
CURRFINGERPRINT = $( getprop ro.bootimage.build.fingerprint)
2018-04-26 20:40:46 +00:00
if [ -z " $CURRFINGERPRINT " ] ; then
2020-03-06 12:37:19 +00:00
CURRFINGERPRINT = $( getprop ro.vendor.build.fingerprint)
2018-04-26 20:40:46 +00:00
fi
2020-03-06 12:37:19 +00:00
echo " ro.build.fingerprint: ${ CURRFINGERPRINT } " >> $LOGFILE 2>& 1
2018-04-15 22:05:33 +00:00
fi
}
2018-08-07 11:50:01 +00:00
# Run all value loading functions
2018-04-15 22:05:33 +00:00
all_values( ) {
2018-06-19 09:56:08 +00:00
log_handler "Loading values."
2018-04-15 22:05:33 +00:00
# Currently set values
curr_values
2019-02-02 12:37:20 +00:00
# Module saved values
. $LATEFILE
2018-04-15 22:05:33 +00:00
}
2020-02-26 21:08:29 +00:00
# Run before updated props/settings
before_change( ) {
if [ -z " $INSTFN " ] ; then
echo ""
2020-08-14 08:01:35 +00:00
echo -e " ${ C } Working. Please wait... ${ N } "
2020-02-26 21:08:29 +00:00
fi
}
2020-08-14 08:01:35 +00:00
# Run after updated props/settings, $1=header, $2=Run options, $3=Reboot or not
2018-04-15 22:05:33 +00:00
after_change( ) {
2019-02-02 12:37:20 +00:00
if [ " $2 " = = "file" ] ; then
# Load module settings
. $LATEFILE
2020-02-26 21:08:29 +00:00
elif [ " $2 " != "none" ] ; then
2019-02-02 12:37:20 +00:00
# Update the reboot variable
2019-11-22 19:19:18 +00:00
replace_fn REBOOTCHK 0 1 $LATEFILE
2019-02-02 12:37:20 +00:00
# Load all values
all_values
2019-03-27 10:50:00 +00:00
# Update the system.prop file
system_prop
2019-11-22 19:19:18 +00:00
if [ " $3 " != "noreboot" ] && [ ! " $INSTFN " ] ; then
2019-04-02 19:42:29 +00:00
# Ask to reboot
reboot_fn " $1 " " $2 "
fi
2019-02-02 12:37:20 +00:00
fi
2018-04-15 22:05:33 +00:00
}
2020-08-14 08:01:35 +00:00
# Reboot function, $1=header, $2=Run options
2019-03-27 10:50:00 +00:00
reboot_fn( ) {
INPUT5 = ""
while true
do
if [ -z " $INPUT5 " ] ; then
if [ " $2 " = = "reboot" ] || [ " $2 " = = "reset-script" ] || [ " $2 " = = "update" ] ; then
REBOOTTXT = ""
else
REBOOTTXT = "Reboot - "
fi
menu_header " $REBOOTTXT ${ C } $1 ${ N } "
echo ""
if [ " $2 " != "reset-script" ] && [ " $2 " != "reboot" ] ; then
if [ " $2 " = = "update" ] ; then
echo "The device fingerprint has been updated."
echo ""
fi
echo "Reboot for changes to take effect."
echo ""
fi
2020-08-14 08:01:35 +00:00
echo -e " Do you want to reboot now ( ${ G } y/n ${ N } )? "
2019-03-27 10:50:00 +00:00
echo ""
if [ " $2 " = = "p" ] || [ " $2 " = = "r" ] || [ " $2 " = = "reset-script" ] ; then
2020-08-14 08:01:35 +00:00
echo -en " Enter ${ G } y ${ N } (es) or ${ G } n ${ N } (o): "
2019-03-27 10:50:00 +00:00
INV1 = 2
else
2020-10-25 19:49:49 +00:00
echo -en " Enter ${ G } y ${ N } (es), ${ G } n ${ N } (o) or ${ G } e ${ N } (xit): "
2019-03-27 10:50:00 +00:00
INV1 = 3
fi
read -r INPUT5
fi
case " $INPUT5 " in
2019-11-22 19:19:18 +00:00
y| Y) force_reboot
2019-03-27 10:50:00 +00:00
; ;
n| N)
if [ " $2 " = = "p" ] || [ " $2 " = = "r" ] || [ " $2 " = = "reset-script" ] ; then
exit_fn
else
INPUT2 = ""
INPUT3 = ""
INPUT4 = ""
INPUT5 = ""
INPUT6 = ""
break
fi
; ;
e| E)
if [ " $2 " = = "p" ] || [ " $2 " = = "r" ] || [ " $2 " = = "reset-script" ] ; then
invalid_input $INV1 5
else
exit_fn
fi
; ;
2019-11-22 19:19:18 +00:00
*) invalid_input $INV1 5
2019-03-27 10:50:00 +00:00
; ;
esac
done
}
2020-08-14 08:01:35 +00:00
# Reset module, $1=header, $2=Run options
2018-04-15 22:05:33 +00:00
reset_fn( ) {
2020-02-26 21:08:29 +00:00
before_change
2020-10-25 19:49:49 +00:00
2020-01-10 18:45:27 +00:00
cp -af $MODPATH /common/propsconf_late $LATEFILE >> $LOGFILE 2>& 1
2018-05-29 07:29:19 +00:00
if [ " $FINGERPRINTENB " ] && [ " $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
2019-04-02 19:42:29 +00:00
after_change " $1 " " $2 "
2018-04-15 22:05:33 +00:00
}
# Checks for configuration file
config_file( ) {
2018-04-25 22:17:32 +00:00
log_handler "Checking for configuration file."
2019-02-02 12:37:20 +00:00
CONFFILE = ""
2020-03-06 12:37:19 +00:00
for ITEM in $CONFFILELOC ; do
2020-01-17 08:44:46 +00:00
if [ -s " $ITEM /propsconf_conf " ] ; then
CONFFILE = " $ITEM /propsconf_conf "
2019-02-02 12:37:20 +00:00
break
fi
2020-01-17 08:44:46 +00:00
if [ " $ITEM " = = "/data/media/0" ] ; then
until [ -e " $ITEM /testfbe " ] ; do
sleep 1
touch $ITEM /testfbe
done
rm -f $ITEM /testfbe
if [ -s " $ITEM /propsconf_conf " ] ; then
CONFFILE = " $ITEM /propsconf_conf "
break
fi
fi
2019-02-02 12:37:20 +00:00
done
2019-03-27 10:50:00 +00:00
2019-02-02 12:37:20 +00:00
if [ " $CONFFILE " ] ; then
2018-06-19 09:56:08 +00:00
log_handler " Configuration file detected ( ${ CONFFILE } ). "
2018-12-09 09:05:50 +00:00
format_file $CONFFILE
2018-04-15 22:05:33 +00:00
# Loads custom variables
. $CONFFILE
2019-02-02 12:37:20 +00:00
module_v_ctrl
2019-03-27 10:50:00 +00:00
2019-04-05 21:10:02 +00:00
if [ " $CONFTRANSF " ] && [ $CONFTRANSF -le $VERSIONCMP ] ; then
2019-02-02 12:37:20 +00:00
# Check if vendor fingerprint is set
if [ " $CONFVENDPRINT " = = "true" ] ; then
log_handler "Using vendor fingerprint"
2020-03-06 12:37:19 +00:00
CONFFINGERPRINT = $( getprop ro.vendor.build.fingerprint)
echo " ro.vendor.build.fingerprint: ${ CONFFINGERPRINT } " >> $LOGFILE 2>& 1
2019-02-02 12:37:20 +00:00
fi
2020-10-25 19:49:49 +00:00
# Updates prop values (including fingerprint)
2019-02-02 12:37:20 +00:00
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 [ " $FINGERPRINTENB " = = 1 ] ; then
2019-04-05 21:10:02 +00:00
change_print " $PROPTYPE " " $TMPPROP " "file"
2019-02-02 12:37:20 +00:00
fi
else
2019-04-05 21:10:02 +00:00
change_prop " $PROPTYPE " " $TMPPROP " "file"
2019-02-02 12:37:20 +00:00
fi
fi
else
2018-04-15 22:05:33 +00:00
if [ " $PROPTYPE " = = "ro.build.fingerprint" ] ; then
2020-01-17 08:44:46 +00:00
reset_print " $PROPTYPE " "file"
2018-04-15 22:05:33 +00:00
else
2019-04-05 21:10:02 +00:00
reset_prop " $PROPTYPE " "file"
2018-04-15 22:05:33 +00:00
fi
fi
2019-02-02 12:37:20 +00:00
done
# Updates device simulation options, only if fingerprint editing is enabled
if [ " $PRINTEDIT " = = 1 ] ; then
# Fingerprint parts
if [ " $CONFDEVSIM " = = "true" ] ; then
change_dev_sim "Device simulation" "file"
2019-11-02 22:24:17 +00:00
TMPPARTS = $PRINTPARTS $ADNSIMPROPS
for ITEM in $TMPPARTS ; do
2019-02-02 12:37:20 +00:00
TMPVAR = " CONF $( get_prop_type $ITEM | tr '[:lower:]' '[:upper:]' ) "
if [ $( eval " echo \$ $TMPVAR " ) = = "true" ] ; then
TMPVAL = 1
else
TMPVAL = 0
fi
2019-04-05 21:10:02 +00:00
change_sim_prop "Device simulation" " $ITEM " " $TMPVAL " "file"
2019-02-02 12:37:20 +00:00
done
fi
# Device description
if [ " $CONFDESCRIPTION " = = "true" ] ; then
2019-04-05 21:10:02 +00:00
change_sim_descr "Device simulation" 1 "file"
2018-04-15 22:05:33 +00:00
else
2019-04-05 21:10:02 +00:00
change_sim_descr "Device simulation" 0 "file"
2018-04-15 22:05:33 +00:00
fi
2020-02-26 21:08:29 +00:00
# Partition specific props
if [ " $CONFPARTPROPS " = = "true" ] ; then
change_sim_partprops "Device simulation" 1 "file"
else
change_sim_partprops "Device simulation" 0 "file"
fi
2018-04-15 22:05:33 +00:00
fi
2019-03-27 10:50:00 +00:00
# Updates boot options for fingerprint and simulation props
if [ " $PRINTEDIT " = = 1 ] ; then
if [ " $CONFPRINTBOOT " = = "default" ] ; then
OPTLCHNG = 0
TMPTXT = "default"
elif [ " $CONFPRINTBOOT " = = "post" ] ; then
OPTLCHNG = 1
TMPTXT = "post-fs-data"
elif [ " $CONFPRINTBOOT " = = "late" ] ; then
OPTLCHNG = 2
TMPTXT = "late_start service"
fi
replace_fn PRINTSTAGE $PRINTSTAGE $OPTLCHNG $LATEFILE
log_handler " Fingerprint boot stage is ${ TMPTXT } . "
2019-04-02 19:42:29 +00:00
if [ " $CONFPATCHBOOT " = = "default" ] ; then
OPTLCHNG = 0
TMPTXT = "default"
elif [ " $CONFPATCHBOOT " = = "post" ] ; then
OPTLCHNG = 1
TMPTXT = "post-fs-data"
elif [ " $CONFPATCHBOOT " = = "late" ] ; then
OPTLCHNG = 2
TMPTXT = "late_start service"
fi
replace_fn PATCHSTAGE $PATCHSTAGE $OPTLCHNG $LATEFILE
log_handler " Security patch boot stage is ${ TMPTXT } . "
2019-03-27 10:50:00 +00:00
fi
if [ " $DEVSIM " = = 1 ] ; then
if [ " $CONFSIMBOOT " = = "default" ] ; then
OPTLCHNG = 0
TMPTXT = "default"
elif [ " $CONFSIMBOOT " = = "post" ] ; then
OPTLCHNG = 1
TMPTXT = "post-fs-data"
elif [ " $CONFSIMBOOT " = = "late" ] ; then
OPTLCHNG = 2
TMPTXT = "late_start service"
fi
replace_fn SIMSTAGE $SIMSTAGE $OPTLCHNG $LATEFILE
log_handler " Device simulation boot stage is ${ TMPTXT } . "
fi
2019-02-02 12:37:20 +00:00
# Updates custom props
if [ " $PROPOPTION " != "preserve" ] ; then
if [ " $CONFPROPS " ] || [ " $CONFPROPSPOST " ] || [ " $CONFPROPSLATE " ] ; then
if [ " $PROPOPTION " = = "add" ] || [ " $PROPOPTION " = = "replace" ] ; then
if [ " $PROPOPTION " = = "replace" ] ; then
2019-04-05 21:10:02 +00:00
reset_all_custprop "file"
2019-02-02 12:37:20 +00:00
fi
if [ " $CONFPROPS " ] ; then
for ITEM in $CONFPROPS ; do
2019-04-05 21:10:02 +00:00
set_custprop " $( get_eq_left " $ITEM " ) " " $( get_eq_right " $ITEM " ) " "default" "file"
2019-02-02 12:37:20 +00:00
done
fi
if [ " $CONFPROPSPOST " ] ; then
for ITEM in $CONFPROPSPOST ; do
2019-04-05 21:10:02 +00:00
set_custprop " $( get_eq_left " $ITEM " ) " " $( get_eq_right " $ITEM " ) " "post" "file"
2019-02-02 12:37:20 +00:00
done
fi
if [ " $CONFPROPSLATE " ] ; then
for ITEM in $CONFPROPSLATE ; do
2019-04-05 21:10:02 +00:00
set_custprop " $( get_eq_left " $ITEM " ) " " $( get_eq_right " $ITEM " ) " "late" "file"
2019-02-02 12:37:20 +00:00
done
fi
2018-09-04 07:55:57 +00:00
fi
2019-02-02 12:37:20 +00:00
else
2019-04-05 21:10:02 +00:00
reset_all_custprop "file"
2018-04-15 22:05:33 +00:00
fi
fi
2019-02-02 12:37:20 +00:00
# Updates props to delete
if [ " $DELPROPOPTION " != "preserve" ] ; then
if [ " $CONFDELPROPS " ] ; then
if [ " $DELPROPOPTION " = = "add" ] || [ " $DELPROPOPTION " = = "replace" ] ; then
if [ " $DELPROPOPTION " = = "replace" ] ; then
2019-04-05 21:10:02 +00:00
reset_all_delprop "file"
2019-02-02 12:37:20 +00:00
fi
for ITEM in $CONFDELPROPS ; do
2019-04-05 21:10:02 +00:00
set_delprop " $ITEM " "file"
2019-02-02 12:37:20 +00:00
done
2018-06-19 09:56:08 +00:00
fi
2019-02-02 12:37:20 +00:00
else
2019-04-05 21:10:02 +00:00
reset_all_delprop "file"
2018-06-19 09:56:08 +00:00
fi
fi
2019-02-02 12:37:20 +00:00
# Updates options
2019-03-27 10:50:00 +00:00
# Boot stage
if [ " $CONFBOOT " = = "default" ] ; then
2019-02-02 12:37:20 +00:00
OPTLCHNG = 0
2019-03-27 10:50:00 +00:00
TMPTXT = "default"
elif [ " $CONFBOOT " = = "post" ] ; then
OPTLCHNG = 1
2019-02-02 12:37:20 +00:00
TMPTXT = "post-fs-data"
2019-03-27 10:50:00 +00:00
elif [ " $CONFBOOT " = = "late" ] ; then
OPTLCHNG = 2
TMPTXT = "late_start service"
2019-02-02 12:37:20 +00:00
fi
2019-03-27 10:50:00 +00:00
replace_fn OPTIONBOOT $OPTIONBOOT $OPTLCHNG $LATEFILE
log_handler " General boot stage is ${ TMPTXT } . "
# Script colours
2019-02-02 12:37:20 +00:00
if [ " $CONFCOLOUR " = = "true" ] ; then
OPTCCHNG = 1
else
OPTCCHNG = 0
fi
replace_fn OPTIONCOLOUR $OPTIONCOLOUR $OPTCCHNG $LATEFILE
2019-03-27 10:50:00 +00:00
log_handler " Colour is set to $CONFCOLOUR . "
# Fingerprints list update
2020-09-12 18:30:24 +00:00
if [ " $CONFWEBP " = = "true" ] ; then
OPTWCHNG = 1
else
OPTWCHNG = 0
fi
replace_fn OPTIONWEBP $OPTIONWEBP $OPTWCHNG $LATEFILE
log_handler " Automatic fingerprints list update is set to $CONFWEBP . "
# Module update check
if [ " $CONFWEBU " = = "true" ] ; then
2019-02-02 12:37:20 +00:00
OPTWCHNG = 1
else
OPTWCHNG = 0
fi
2020-09-12 18:30:24 +00:00
replace_fn OPTIONWEBU $OPTIONWEBU $OPTWCHNG $LATEFILE
log_handler " Module update check at start is set to $CONFWEBU . "
2019-03-27 10:50:00 +00:00
# Automatic fingerprints update
if [ " $CONFUPDATE " = = "true" ] ; then
OPTFCHNG = 1
else
OPTFCHNG = 0
fi
replace_fn OPTIONUPDATE $OPTIONUPDATE $OPTFCHNG $LATEFILE
log_handler " Automatic fingerprint update is set to $CONFUPDATE . "
2018-04-15 22:05:33 +00:00
else
2019-04-05 21:10:02 +00:00
log_handler " The configuration file is not compatible with the current module version ( $CONFTRANSF vs $VERSIONCMP ). "
2018-04-15 22:05:33 +00:00
fi
2019-03-27 10:50:00 +00:00
# Update the system.prop file
system_prop
2018-04-15 22:05:33 +00:00
# Deletes the configuration file
log_handler "Deleting configuration file."
2020-03-06 12:37:19 +00:00
for ITEM in $CONFFILELOC ; do
2020-01-17 08:44:46 +00:00
rm -f $ITEM /propsconf_conf
2019-11-02 22:24:17 +00:00
done
2019-02-02 12:37:20 +00:00
log_handler "Configuration file import complete."
2019-11-22 19:19:18 +00:00
if [ " $BOOTSTAGE " = = "late" ] ; then
force_reboot
fi
2018-04-25 22:17:32 +00:00
else
log_handler "No configuration file."
2018-04-15 22:05:33 +00:00
fi
}
2018-06-19 09:56:08 +00:00
# Connection test
test_connection( ) {
2020-09-12 18:30:24 +00:00
case $1 in
*nw*) # Don't run if the -nw run option is used.
; ;
*)
log_handler "Checking connection."
ping -c 1 -W 1 google.com >> $LOGFILE 2>& 1 && CNTTEST = "true" || CNTTEST = "false"
; ;
esac
}
# Module update check
update_check( ) {
case $2 in
*nw*) # Don't run if the -nw run option is used.
; ;
*)
if [ " $1 " = = "manual" ] ; then
# Testing connection
test_connection
fi
if [ " $CNTTEST " = = "true" ] ; then
echo ""
log_print "Checking for module update."
MODPROPTMP = $MHPCPATH /module.prop
MODPROPWWW = "https://raw.githubusercontent.com/Magisk-Modules-Repo/MagiskHidePropsConf/master/module.prop"
MODVERTMP = " $( echo $( get_file_value $MODPROPTMP "version=" ) | sed 's|-.*||' | sed 's|v||' | sed 's|\.||g' ) "
module_v_ctrl
wget -T 5 -q -O $MODPROPTMP $MODPROPWWW >> $LOGFILE 2>& 1
if [ -s " $MODPROPTMP " ] ; then
if [ " $VERSIONCMP " -lt " $MODVERTMP " ] ; then
UPDATECHECK = "There is a newer version of the module\navailable. Please update."
log_print "Module update available."
else
if [ " $1 " = = "manual" ] ; then
UPDATECHECK = "No update available."
else
UPDATECHECK = ""
fi
log_print "No update available."
fi
elif [ -f " $MODPROPTMP " ] ; then
rm -f $MODPROPTMP
log_print "! File not downloaded!"
log_handler "File is empty."
else
log_print "! File not downloaded!"
fi
else
log_handler "No connection."
fi
sleep 0.5
; ;
esac
2018-06-19 09:56:08 +00:00
}
2019-03-27 10:50:00 +00:00
# system.prop creation
system_prop( ) {
if [ " $OPTIONBOOT " = = 0 ] ; then
log_handler "Creating system.prop file."
2020-01-10 18:45:27 +00:00
echo -e "# This file will be read by resetprop\n\n# MagiskHide Props Config\n# Copyright (c) 2018-2020 Didgeridoohan @ XDA Developers\n# Licence: MIT\n" > $MODPATH /system.prop
2019-04-02 19:42:29 +00:00
if [ " $PRINTSTAGE " = = 0 ] ; then
print_edit " $MODPATH /system.prop "
fi
if [ " $PATCHSTAGE " = = 0 ] ; then
patch_edit " $MODPATH /system.prop "
fi
2021-01-14 21:01:33 +00:00
#if [ "$BASICATTEST" == 1 ]; then
# forced_basic "$MODPATH/system.prop"
#fi
2019-04-02 19:42:29 +00:00
if [ " $SIMSTAGE " = = 0 ] ; then
dev_sim_edit " $MODPATH /system.prop "
fi
2019-05-12 05:10:24 +00:00
if [ " $CUSTOMPROPS " ] ; then
2019-04-02 19:42:29 +00:00
custom_edit "CUSTOMPROPS" " $MODPATH /system.prop "
fi
# Check system.prop content
system_prop_cont
2020-09-12 18:30:24 +00:00
# Check for edge case where module has been updated but no reboot has been done yet
if [ -d " $ADBPATH /modules_update/MagiskHidePropsConf " ] && [ -f " $MODPATH /system.prop " ] ; then
log_handler "Copying system.prop to update folder."
cp -f $MODPATH /system.prop $ADBPATH /modules_update/MagiskHidePropsConf >> $LOGFILE 2>& 1
else
rm -f $ADBPATH /modules_update/MagiskHidePropsConf/system.prop >> $LOGFILE 2>& 1
fi
2019-04-02 19:42:29 +00:00
fi
}
# system.prop content
system_prop_cont( ) {
if [ -f " $MODPATH /system.prop " ] ; then
log_handler "system.prop contents:"
echo "----------------------------------------" >> $LOGFILE 2>& 1
cat $MODPATH /system.prop >> $LOGFILE 2>& 1
echo "----------------------------------------" >> $LOGFILE 2>& 1
else
log_handler "No system.prop file present."
2019-03-27 10:50:00 +00:00
fi
}
# ======================== Installation functions ========================
2020-01-10 18:45:27 +00:00
# Places and updates the settings file
settings_placement( ) {
2020-03-06 12:37:19 +00:00
cp -af $ORIGLATEFILE $UPDATELATEFILE >> $LOGFILE 2>& 1
2019-11-03 21:04:04 +00:00
UPDATEV = $( get_file_value $UPDATELATEFILE "SCRIPTV=" )
UPDATETRANSF = $( get_file_value $UPDATELATEFILE "SETTRANSF=" )
NOTTRANSF = $( get_file_value $UPDATELATEFILE "NOTTRANSF=" )
2019-11-02 22:24:17 +00:00
if [ -f " $LATEFILE " ] && [ -d " $MODULESPATH /MagiskHidePropsConf " ] ; then
2019-03-27 10:50:00 +00:00
FILEV = $( get_file_value $LATEFILE "SCRIPTV=" )
FILETRANSF = $( get_file_value $LATEFILE "SETTRANSF=" )
2019-04-05 21:10:02 +00:00
LATEFILETMP = " $LATEFILE "
elif [ -f " $SERVICEPATH /propsconf_late " ] ; then
FILEV = $( get_file_value $SERVICEPATH /propsconf_late "SCRIPTV=" )
FILETRANSF = $( get_file_value $SERVICEPATH /propsconf_late "SETTRANSF=" )
LATEFILETMP = " $SERVICEPATH /propsconf_late "
2019-03-27 10:50:00 +00:00
else
2019-11-02 22:24:17 +00:00
rm -f $LATEFILE
2019-03-27 10:50:00 +00:00
FILEV = 0
FILETRANSF = $UPDATETRANSF
2019-04-05 21:10:02 +00:00
LATEFILETMP = " $LATEFILE "
2019-03-27 10:50:00 +00:00
fi
2020-01-10 18:45:27 +00:00
log_print "- Installing settings file"
2019-03-27 10:50:00 +00:00
if [ " $FILEV " ] ; then
2020-01-10 18:45:27 +00:00
# New file
2019-03-27 10:50:00 +00:00
if [ " $UPDATEV " -gt " $FILEV " ] ; then
# Fresh install
if [ " $FILEV " = = 0 ] ; then
2020-01-10 18:45:27 +00:00
log_print "- Placing settings file"
# Updated file with a required clearing of settings
2019-11-03 21:04:04 +00:00
elif [ " $UPDATETRANSF " -gt " $FILETRANSF " ] && [ ! " $NOTTRANSF " ] ; then
2019-11-02 22:24:17 +00:00
log_handler " Current transfer version - ${ FILETRANSF } "
log_handler " Update transfer version - ${ UPDATETRANSF } "
log_handler "No settings set to not transfer"
2020-01-10 18:45:27 +00:00
log_print "- File updated and settings cleared"
# Updated file
2019-03-27 10:50:00 +00:00
else
2020-01-10 18:45:27 +00:00
log_print "- File updated"
log_print "- Transferring settings from old file"
2019-03-27 10:50:00 +00:00
# Prop settings
for ITEM in $SETTINGSLIST ; do
2020-01-10 18:45:27 +00:00
# Checking if a file update requires some options not to transfer
2019-03-27 10:50:00 +00:00
case " $NOTTRANSF " in
2019-11-02 22:24:17 +00:00
*$ITEM *)
2019-03-27 10:50:00 +00:00
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
2019-04-05 21:10:02 +00:00
SOLD = $( get_file_value $LATEFILETMP " ${ ITEM } = " )
2019-03-27 10:50:00 +00:00
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
2020-03-01 19:50:53 +00:00
# Change post-fs-data execution between regular and background
2019-11-22 19:19:18 +00:00
if [ " $ITEM " = = "OPTIONBACK" -a " $SNEW " = = 1 ] ; then
2020-01-10 18:45:27 +00:00
sed -i -e "s|^{|\#anch0}|;s|^\#anch1|{|;s|regular|background|" $MODPATH /post-fs-data.sh
2019-11-22 19:19:18 +00:00
fi
2019-03-27 10:50:00 +00:00
fi
fi
done
# Prop values
for ITEM in $PROPSETTINGSLIST ; do
2019-04-05 21:10:02 +00:00
SOLD = $( get_file_value $LATEFILETMP " ${ ITEM } = " )
2019-03-27 10:50:00 +00:00
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
ITEM = " $( get_prop_type $ITEM ) "
REPROP = $( echo " RE ${ ITEM } " | tr '[:lower:]' '[:upper:]' )
SETPROP = $( echo " SET ${ ITEM } " | tr '[:lower:]' '[:upper:]' )
2019-04-05 21:10:02 +00:00
REOLD = $( get_file_value $LATEFILETMP " ${ REPROP } = " )
SETOLD = $( get_file_value $LATEFILETMP " ${ SETPROP } = " )
2019-03-27 10:50:00 +00:00
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
2020-01-10 18:45:27 +00:00
log_handler "Setting up settings file."
2019-11-02 22:24:17 +00:00
if [ ! -d " $MHPCPATH " ] ; then
mkdir -pv $MHPCPATH >> $LOGFILE 2>& 1
2019-04-05 21:10:02 +00:00
fi
2020-03-06 12:37:19 +00:00
mv -f $UPDATELATEFILE $LATEFILE >> $LOGFILE 2>& 1
2020-01-10 18:45:27 +00:00
# Downgraded file (flashed old module version)
2019-03-27 10:50:00 +00:00
elif [ " $UPDATEV " -lt " $FILEV " ] ; then
2020-01-10 18:45:27 +00:00
log_print "- Settings cleared (file downgraded)"
2019-11-02 22:24:17 +00:00
if [ ! -d " $MHPCPATH " ] ; then
mkdir -pv $MHPCPATH >> $LOGFILE 2>& 1
2019-04-05 21:10:02 +00:00
fi
2020-03-06 12:37:19 +00:00
mv -f $UPDATELATEFILE $LATEFILE >> $LOGFILE 2>& 1
2020-01-10 18:45:27 +00:00
# No update of file
2019-03-27 10:50:00 +00:00
else
log_print "- Module settings preserved"
fi
else
2020-01-10 18:45:27 +00:00
log_print "- Placing settings file"
2019-11-02 22:24:17 +00:00
if [ ! -d " $MHPCPATH " ] ; then
mkdir -pv $MHPCPATH >> $LOGFILE 2>& 1
2019-04-05 21:10:02 +00:00
fi
2020-03-06 12:37:19 +00:00
mv -f $UPDATELATEFILE $LATEFILE >> $LOGFILE 2>& 1
2019-03-27 10:50:00 +00:00
fi
2019-04-05 21:10:02 +00:00
if [ -f " $SERVICEPATH /propsconf_late " ] ; then
log_handler " Old settings file found in $SERVICEPATH . "
rm -f $SERVICEPATH /propsconf_late >> $LOGFILE 2>& 1
fi
2019-03-27 10:50:00 +00:00
}
# Checks for the Universal SafetyNet Fix module and similar modules editing device fingerprint
usnf_check( ) {
log_print "- Checking for fingerprint conflicts"
for USNF in $USNFLIST ; do
2019-04-05 21:10:02 +00:00
if [ -d " $MODULESPATH / $USNF " ] ; then
2019-05-04 18:57:59 +00:00
if [ ! -f " $MODULESPATH / $USNF /disable " ] ; then
NAME = $( get_file_value $MODULESPATH /$USNF /module.prop "name=" )
ui_print "!"
log_print "! Module editing fingerprint detected!"
log_print " ! Module - ' $NAME '! "
log_print "! Fingerprint modification disabled!"
ui_print "!"
sed -i 's/FINGERPRINTENB=1/FINGERPRINTENB=0/' $UPDATELATEFILE
fi
2019-03-27 10:50:00 +00:00
fi
done
}
# Check for bin/xbin
bin_check( ) {
2020-09-12 18:30:24 +00:00
$BOOTMODE && BINCHECK = $MIRRORPATH /system/xbin || BINCHECK = /system/xbin
2019-03-27 10:50:00 +00:00
if [ -d " $BINCHECK " ] ; then
BIN = xbin
else
BIN = bin
fi
log_handler " Using /system/ $BIN . "
mv -f $MODPATH /system/binpath $MODPATH /system/$BIN >> $LOGFILE 2>& 1
}
2019-11-03 21:04:04 +00:00
# Function for removing screwed up and old files.
2019-11-02 22:24:17 +00:00
files_check( ) {
2019-03-27 10:50:00 +00:00
if [ -f " $POSTLATEFILE " ] ; then
log_handler "Removing late_start service boot script from post-fs-data.d."
rm -f $POSTLATEFILE
fi
if [ -f " $POSTFILE " ] ; then
log_handler "Removing old post-fs-data boot script from post-fs-data.d"
rm -f $POSTFILE
fi
2019-11-02 22:24:17 +00:00
for ITEM in $CACHERM ; do
if [ -f " $ITEM " ] ; then
log_handler " Removing old log files ( $ITEM ). "
rm -f $ITEM
fi
done
2019-11-22 19:19:18 +00:00
if [ -f " $PRINTFILES /custom.sh " ] ; then
2019-11-03 21:04:04 +00:00
log_handler "Removing broken custom.sh file."
2019-11-22 19:19:18 +00:00
rm -f $PRINTFILES /custom.sh
2019-11-03 21:04:04 +00:00
fi
2019-03-27 10:50:00 +00:00
}
# Load module settings and reapply the MODPATH variable
load_settings( ) {
log_handler "Loading/reloading module settings."
if [ -f " $LATEFILE " ] ; then
. $LATEFILE
fi
}
# Installs everything
script_install( ) {
load_settings
usnf_check
bin_check
2019-11-02 22:24:17 +00:00
files_check
2020-01-10 18:45:27 +00:00
settings_placement
2019-03-27 10:50:00 +00:00
log_print "- Updating placeholders"
2020-01-10 18:45:27 +00:00
placeholder_update $MODPATH /post-fs-data.sh MODVERSION VER_PLACEHOLDER " $MODVERSION "
placeholder_update $MODPATH /post-fs-data.sh LATEFILE LATE_PLACEHOLDER " $LATEFILE "
placeholder_update $MODPATH /common/util_functions.sh MODVERSION VER_PLACEHOLDER " $MODVERSION "
placeholder_update $MODPATH /common/util_functions.sh BIN BIN_PLACEHOLDER " $BIN "
2019-04-05 21:10:02 +00:00
placeholder_update $MODPATH /system/$BIN /props ADBPATH ADB_PLACEHOLDER " $ADBPATH "
placeholder_update $MODPATH /system/$BIN /props LATEFILE LATE_PLACEHOLDER " $LATEFILE "
2019-03-27 10:50:00 +00:00
load_settings
print_files
# Checks for configuration file
CONFFILE = ""
2020-03-06 12:37:19 +00:00
for ITEM in $CONFFILELOC ; do
2020-01-17 08:44:46 +00:00
if [ -s " $ITEM /propsconf_conf " ] ; then
CONFFILE = " $ITEM /propsconf_conf "
2019-03-27 10:50:00 +00:00
break
fi
done
if [ " $CONFFILE " ] ; then
load_settings
ui_print "- Configuration file found."
ui_print "- Installing..."
ui_print ""
2019-04-05 21:10:02 +00:00
config_file
2019-03-27 10:50:00 +00:00
else
load_settings
# Create system.prop in case of no configuration file
system_prop
fi
log_handler "Module installation complete."
}
2018-04-15 22:05:33 +00:00
# ======================== Fingerprint functions ========================
2020-08-14 08:01:35 +00:00
# Get full device info from fingerprint string, $1=full fingerprint string, including device info
2020-02-26 21:08:29 +00:00
get_device( ) {
echo $1 | cut -f 1 -d '=' | sed " s|\:.* $|| "
}
2020-08-14 08:01:35 +00:00
# Get first word in fingerprint string, $1=full fingerprint string, including device info
2020-02-26 21:08:29 +00:00
get_first( ) {
case $1 in
*\ *) echo $1 | sed 's|\ .*||'
; ;
*= *) get_device " $1 "
; ;
esac
}
2020-08-14 08:01:35 +00:00
# Get the device for current fingerprint, $1=fingerprint
2020-02-26 21:08:29 +00:00
get_device_used( ) {
PRINTTMP = $( cat $MODPATH /common/prints.sh | grep " $1 " )
if [ " $PRINTTMP " ] ; then
2020-08-14 08:01:35 +00:00
echo -e " ${ C } $( get_device " $PRINTTMP " | sed "s| (.*||" ) ${ N } "
2020-02-26 21:08:29 +00:00
echo ""
elif [ -s " $CSTMPRINTS " ] ; then
PRINTTMP = $( cat $CSTMPRINTS | grep " $1 " )
if [ " $PRINTTMP " ] ; then
2020-08-14 08:01:35 +00:00
echo -e " ${ C } $( get_device " $PRINTTMP " | sed "s| (.*||" ) ${ N } (from custom list) "
2020-02-26 21:08:29 +00:00
echo ""
fi
fi
}
2020-08-14 08:01:35 +00:00
# Set new fingerprint, $1=file to add prop info to
2018-05-29 07:29:19 +00:00
print_edit( ) {
2020-03-06 12:37:19 +00:00
if [ " $1 " != "none" ] ; then
2020-02-26 21:08:29 +00:00
before_change
fi
2019-02-02 12:37:20 +00:00
if [ " $FINGERPRINTENB " = = 1 -o " $PRINTMODULE " = = 0 ] && [ " $PRINTEDIT " = = 1 ] ; then
2018-05-29 07:29:19 +00:00
log_handler "Changing fingerprint."
2019-02-02 12:37:20 +00:00
if [ " $PRINTVEND " = = 1 ] ; then
log_handler "Using vendor fingerprint (for Treble GSI ROMs)."
2020-03-01 19:50:53 +00:00
PRINTCHNG = " $( getprop ro.vendor.build.fingerprint) "
2019-02-02 12:37:20 +00:00
# Set device simulation variables
print_parts " $PRINTCHNG "
else
PRINTCHNG = " $( echo $MODULEFINGERPRINT | sed 's|\_\_.*||' ) "
fi
2020-01-10 18:45:27 +00:00
# Changing props
2020-03-01 19:50:53 +00:00
if [ " $( getprop "ro.build.fingerprint" ) " ] ; then
2020-02-26 21:08:29 +00:00
log_handler "Changing/writing ro.build.fingerprint."
2020-03-06 12:37:19 +00:00
if [ " $1 " != "none" ] ; then
2020-02-26 21:08:29 +00:00
echo " ro.build.fingerprint= ${ PRINTCHNG } " >> $1
2019-03-27 10:50:00 +00:00
else
2020-09-23 08:30:49 +00:00
resetprop -nv ro.build.fingerprint " $PRINTCHNG " >> $LOGFILE 2>& 1
2019-03-27 10:50:00 +00:00
fi
2020-02-26 21:08:29 +00:00
else
log_handler "ro.build.fingerprint not currently set on device. Skipping."
fi
set_partition_props $1 "ro.build.fingerprint" $PRINTCHNG
2019-02-02 12:37:20 +00:00
# Edit device description
if [ " $DESCRIPTIONSET " = = 1 ] ; then
if [ " $SIMDESCRIPTION " ] ; then
log_handler "Changing/writing ro.build.description."
2020-03-06 12:37:19 +00:00
if [ " $1 " != "none" ] ; then
2019-04-02 19:42:29 +00:00
echo " ro.build.description= ${ SIMDESCRIPTION } " >> $1
2019-03-27 10:50:00 +00:00
else
resetprop -nv ro.build.description " $SIMDESCRIPTION " >> $LOGFILE 2>& 1
fi
2019-02-02 12:37:20 +00:00
fi
else
log_handler "Changing/writing ro.build.description is disabled."
fi
2018-05-29 07:29:19 +00:00
fi
}
2020-08-14 08:01:35 +00:00
# Edit security patch date if included, $1=file to add prop info to
2019-04-02 19:42:29 +00:00
patch_edit( ) {
2020-03-06 12:37:19 +00:00
if [ " $1 " != "none" ] ; then
2020-02-26 21:08:29 +00:00
before_change
fi
2019-04-02 19:42:29 +00:00
if [ " $PRINTVEND " != 1 ] ; then
case " $MODULEFINGERPRINT " in
*__*)
SECPATCH = " $( get_sec_patch $MODULEFINGERPRINT ) "
if [ " $SECPATCH " ] ; then
log_handler "Updating security patch date to match fingerprint used."
2020-03-06 12:37:19 +00:00
if [ " $1 " != "none" ] ; then
2019-04-02 19:42:29 +00:00
echo " ro.build.version.security_patch= ${ SECPATCH } " >> $1
else
2020-09-23 08:30:49 +00:00
resetprop -nv ro.build.version.security_patch " $SECPATCH " >> $LOGFILE 2>& 1
2019-04-02 19:42:29 +00:00
fi
fi
; ;
esac
fi
}
2018-10-25 06:37:05 +00:00
# Create fingerprint files
print_files( ) {
2019-03-27 10:50:00 +00:00
if [ " $INSTFN " ] ; then
log_print "- Creating fingerprint files."
else
log_print "Creating fingerprint files."
fi
rm -rf $MODPATH /printfiles >> $LOGFILE 2>& 1
mkdir -pv $MODPATH /printfiles >> $LOGFILE 2>& 1
2018-10-25 06:37:05 +00:00
# Loading prints
2020-01-10 18:45:27 +00:00
. $MODPATH /common/prints.sh
2018-10-25 06:37:05 +00:00
# Saving manufacturers
log_handler "Saving manufacturers."
SAVEIFS = $IFS
IFS = $( echo -en "\n\b" )
for ITEM in $PRINTSLIST ; do
TMPOEMLIST = $( echo " $OEMLIST $( get_first $ITEM ) " | sed 's|^[ \t]*||' )
OEMLIST = " $TMPOEMLIST "
done
IFS = $SAVEIFS
TMPOEMLIST = $( echo $( printf '%s\n' $OEMLIST | sort -u) )
OEMLIST = " $TMPOEMLIST "
log_handler "Creating files."
for OEM in $OEMLIST ; do
2020-07-26 18:52:21 +00:00
TMPFILE = $MODPATH /printfiles/${ OEM } \. sh
echo -e "PRINTSLIST=\"" >> $TMPFILE
awk " /^ $OEM / " $MODPATH /common/prints.sh >> $TMPFILE
echo -e "\"" >> $TMPFILE
TMPI = 6
while [ " $TMPI " -ge 4 ] ; do
TMPLINE = $( grep -m 1 " ( ${ TMPI } " $TMPFILE )
if [ " $TMPLINE " ] ; then
break
else
TMPI = $(( $TMPI - 1 ))
fi
done
2021-01-14 21:01:33 +00:00
#echo -e "BASICATTMODEL=\"$(get_eq_left "$TMPLINE" | sed "s|^.*\:||")\"" >> $TMPFILE
2018-10-25 06:37:05 +00:00
done
2019-02-02 12:37:20 +00:00
# Check for updated fingerprint
device_print_update "Updating module fingerprint."
}
2020-08-14 08:01:35 +00:00
# Check for and update used fingerprint, $1=header
2019-02-02 12:37:20 +00:00
device_print_update( ) {
2019-04-08 19:44:41 +00:00
log_handler " $1 "
2019-02-02 12:37:20 +00:00
if [ " $OPTIONUPDATE " = = 1 ] ; then
if [ " $FINGERPRINTENB " = = 1 -o " $PRINTMODULE " = = 0 ] && [ " $PRINTEDIT " = = 1 ] && [ " $MODULEFINGERPRINT " ] ; then
TMPDEV = " ${ SIMBRAND } / ${ SIMNAME } / ${ SIMDEVICE } "
2019-04-08 19:44:41 +00:00
SAVEIFS = $IFS
IFS = $( echo -en "\n\b" )
2019-02-02 12:37:20 +00:00
for ITEM in $PRINTSLIST ; do
case $ITEM in
*$TMPDEV *)
2019-04-08 19:44:41 +00:00
IFS = $SAVEIFS
case $ITEM in
*\; *)
ITEMCOUNT = 1
ITEMFOUND = 0
TMPVPRINT = " $( get_print_versions " $( get_eq_left " $ITEM " ) " ) "
TMPVCURR = " $( get_android_version $SIMRELEASE ) "
for V in $TMPVPRINT ; do
if [ " $( get_android_version $V ) " = = " $TMPVCURR " ] ; then
ITEMFOUND = 1
break
fi
ITEMCOUNT = $(( $ITEMCOUNT + 1 ))
done
if [ " $ITEMFOUND " = = 1 ] ; then
TMPPRINT = " $( get_eq_right " $ITEM " | cut -f $ITEMCOUNT -d ';' ) "
else
TMPPRINT = ""
fi
; ;
*) TMPPRINT = " $( get_eq_right " $ITEM " ) "
; ;
esac
2019-02-02 12:37:20 +00:00
break
; ;
esac
done
2019-04-08 19:44:41 +00:00
IFS = $SAVEIFS
2019-02-02 12:37:20 +00:00
if [ " $TMPDEV " ] && [ " $TMPPRINT " ] ; then
2019-04-08 19:44:41 +00:00
log_handler " Checking for updated fingerprint ( $TMPDEV ).\nCurrent - $MODULEFINGERPRINT \nUpdate - $TMPPRINT "
2019-03-27 10:50:00 +00:00
if [ " $MODULEFINGERPRINT " != " $TMPPRINT " ] ; then
change_print " $1 " " $TMPPRINT " "update"
2019-02-02 12:37:20 +00:00
replace_fn PRINTCHK 0 1 $LATEFILE
# Load module values
. $LATEFILE
else
log_handler "No update available."
fi
2019-04-08 19:44:41 +00:00
else
log_handler "Can't check for update."
2019-02-02 12:37:20 +00:00
fi
fi
fi
2018-10-25 06:37:05 +00:00
}
2020-08-14 08:01:35 +00:00
# Checks and updates the prints list, $1=run option
2018-03-20 18:31:57 +00:00
download_prints( ) {
2020-09-12 18:30:24 +00:00
case $2 in
*nw*) # Don't run if the -nw run option is used.
; ;
*)
if [ " $1 " = = "Dev" ] ; then
PRINTSWWW = $PRINTSDEV
fi
menu_header "Updating fingerprints list"
echo ""
if [ " $1 " = = "manual" ] ; then
# Testing connection
test_connection
fi
# Checking and downloading fingerprints list
if [ " $CNTTEST " = = "true" ] ; then
echo ""
log_print "Checking list version."
wget -T 5 -q -O $PRINTSTMP $PRINTSWWW >> $LOGFILE 2>& 1
if [ -s " $PRINTSTMP " ] ; then
LISTVERSION = $( get_file_value $PRINTSTMP "PRINTSV=" )
if [ " $LISTVERSION " ] ; then
if [ " $LISTVERSION " = = "Dev" ] || [ " $1 " = = "f" -a " $( get_file_value $PRINTSLOC "PRINTSV=" ) " = = "Dev" ] || [ " $LISTVERSION " -gt " $( get_file_value $PRINTSLOC "PRINTSV=" ) " ] ; then
module_v_ctrl
if [ " $( get_file_value $PRINTSTMP "PRINTSTRANSF=" ) " -le $VERSIONCMP ] ; then
mv -f $PRINTSTMP $PRINTSLOC >> $LOGFILE 2>& 1
# Updates list version in module.prop
replace_fn version $VERSIONTMP " ${ MODVERSION } -v ${ LISTVERSION } " $MODPATH /module.prop
log_print " Updated list to v ${ LISTVERSION } . "
print_files
else
rm -f $PRINTSTMP
log_print "New fingerprints list requires module update."
fi
else
rm -f $PRINTSTMP
log_print "Fingerprints list up-to-date."
fi
2018-09-04 07:55:57 +00:00
else
rm -f $PRINTSTMP
2020-09-12 18:30:24 +00:00
log_print "! File not downloaded!"
log_handler "Couldn't extract list version."
2018-09-04 07:55:57 +00:00
fi
2020-09-12 18:30:24 +00:00
elif [ -f " $PRINTSTMP " ] ; then
2018-06-19 09:56:08 +00:00
rm -f $PRINTSTMP
2020-09-12 18:30:24 +00:00
log_print "! File not downloaded!"
log_handler "File is empty."
else
log_print "! File not downloaded!"
2018-06-19 09:56:08 +00:00
fi
2018-03-26 16:25:58 +00:00
else
2020-09-12 18:30:24 +00:00
log_print "No connection."
2018-03-26 16:25:58 +00:00
fi
2020-09-12 18:30:24 +00:00
if [ " $1 " = = "manual" ] ; then
sleep 2
else
sleep 0.5
fi
; ;
esac
2018-03-28 16:39:57 +00:00
}
2020-08-14 08:01:35 +00:00
# Reset the module fingerprint change, $1=prop name, $2=run option
2018-04-15 22:05:33 +00:00
reset_print( ) {
2020-02-26 21:08:29 +00:00
before_change
2020-10-25 19:49:49 +00:00
2018-04-29 09:14:35 +00:00
log_handler "Resetting device fingerprint to default system value."
2018-04-15 22:05:33 +00:00
2019-02-02 12:37:20 +00:00
# Saves new module valueS
replace_fn MODULEFINGERPRINT " \" $MODULEFINGERPRINT \" " "\"\"" $LATEFILE
# Updates vendor print setting
replace_fn PRINTVEND 1 0 $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
2019-02-02 12:37:20 +00:00
# Updates simulation setting
replace_fn DEVSIM 1 0 $LATEFILE
2018-04-15 22:05:33 +00:00
2019-02-02 12:37:20 +00:00
# Clear out device simulation variables
print_parts "none"
2019-04-05 21:10:02 +00:00
after_change " $1 " " $2 "
2018-04-15 22:05:33 +00:00
}
2020-08-14 08:01:35 +00:00
# Use fingerprint, $1=header, $2=fingerprint
2018-04-15 22:05:33 +00:00
change_print( ) {
2020-02-26 21:08:29 +00:00
before_change
2020-10-25 19:49:49 +00:00
2018-04-15 22:05:33 +00:00
log_handler " Changing device fingerprint to $2 . "
2019-02-02 12:37:20 +00:00
# Saves new module values
replace_fn MODULEFINGERPRINT " \" $MODULEFINGERPRINT \" " " \" $2 \" " $LATEFILE
2020-10-25 19:49:49 +00:00
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
2019-02-02 12:37:20 +00:00
# Set device simulation variables
print_parts " $2 "
2018-04-15 22:05:33 +00:00
NEWFINGERPRINT = ""
2020-03-06 12:37:19 +00:00
REBOOTCHK = ""
# Check if fingerprints testing is active
if [ " $( get_file_value $PRINTSLOC "PRINTSV=" ) " = = "Dev" ] ; then
REBOOTCHK = "noreboot"
fi
after_change " $1 " " $3 " " $REBOOTCHK "
2019-02-02 12:37:20 +00:00
}
2020-08-14 08:01:35 +00:00
# Use vendor fingerprint, $1=header, $2=Current state of option (enabled or disabled)
2019-02-02 12:37:20 +00:00
change_print_vendor( ) {
2020-02-26 21:08:29 +00:00
before_change
2020-10-25 19:49:49 +00:00
2019-02-02 12:37:20 +00:00
if [ $2 = = 1 ] ; then
STATETXT = "Enabling"
TMPVAL = 0
BUILD1 = "false"
BUILD2 = "true"
else
STATETXT = "Disabling"
TMPVAL = 1
BUILD1 = "true"
BUILD2 = "false"
fi
log_handler " $STATETXT using the stock vendor fingerprint (for Treble GSI ROMs). "
# Enables or disables the setting
replace_fn PRINTVEND $TMPVAL $2 $LATEFILE
# Updates prop change variables in propsconf_late
replace_fn PRINTEDIT $TMPVAL $2 $LATEFILE
# Clearing out module value
replace_fn MODULEFINGERPRINT " \" $MODULEFINGERPRINT \" " "\"\"" $LATEFILE
# Updates simulation setting
replace_fn DEVSIM $TMPVAL $2 $LATEFILE
# Set device simulation variables
print_parts " $ORIGVENDPRINT "
2019-05-04 18:57:59 +00:00
after_change " $1 " " $3 "
2019-02-02 12:37:20 +00:00
}
2020-08-14 08:01:35 +00:00
# Save props values from fingerprint parts, $1=fingerprint
2019-02-02 12:37:20 +00:00
print_parts( ) {
DLIM1 = 1
DLIM2 = 1
for ITEM in $PRINTPARTS ; do
TMPVALUE = ""
TMPPROP = $( get_prop_type $ITEM | tr '[:lower:]' '[:upper:]' )
if [ $1 != "none" ] ; then
2019-03-27 10:50:00 +00:00
TMPVALUE = $( echo $1 | sed 's|\:user\/release-keys.*||' | cut -f $DLIM1 -d ':' | cut -f $DLIM2 -d '/' )
2019-02-02 12:37:20 +00:00
eval " VAR ${ TMPPROP } =' $TMPVALUE ' "
fi
DLIM2 = $(( $DLIM2 + 1 ))
if [ " $DLIM2 " = = 4 ] ; then
DLIM1 = 2
DLIM2 = 1
fi
2020-03-01 19:50:53 +00:00
SUBA = $( get_file_value $LATEFILE " SIM ${ TMPPROP } = " )
replace_fn " SIM ${ TMPPROP } " " \" $SUBA \" " " \" $TMPVALUE \" " $LATEFILE
2019-02-02 12:37:20 +00:00
done
VARDESCRIPTION = ""
2019-03-27 10:50:00 +00:00
VARSDK = ""
2019-02-02 12:37:20 +00:00
if [ $1 != "none" ] ; then
VARDESCRIPTION = " ${ VARNAME } -user $VARRELEASE $VARID $VARINCREMENTAL release-keys "
2019-03-27 10:50:00 +00:00
for ITEM in $APILVL ; do
case $VARRELEASE in
*$( get_eq_left $ITEM ) *)
VARSDK = " $( get_eq_right $ITEM ) "
break
; ;
esac
done
2019-02-02 12:37:20 +00:00
fi
2020-03-01 19:50:53 +00:00
replace_fn SIMDESCRIPTION " \" $SIMDESCRIPTION \" " " \" $VARDESCRIPTION \" " $LATEFILE
replace_fn SIMDISPLAY " \" $SIMDISPLAY \" " " \" $VARDESCRIPTION \" " $LATEFILE
2020-10-25 19:49:49 +00:00
replace_fn SIMSDK " \" $SIMSDK \" " " \" $VARSDK \" " $LATEFILE
2020-03-01 19:50:53 +00:00
TMPPARTS = $( get_eq_left " $( grep $1 $PRINTSLOC ) " | sed 's|.*)\:||' )
2020-04-12 21:22:21 +00:00
if [ -z " $TMPPARTS " -a -s " $CSTMPRINTS " ] ; then
2020-03-01 19:50:53 +00:00
TMPPARTS = $( get_eq_left " $( grep $1 $CSTMPRINTS ) " | sed 's|.*)\:||' )
fi
2020-04-12 21:22:21 +00:00
if [ " $TMPPARTS " -a $( echo $TMPPARTS | grep -o "\:" | wc -l) = = 1 ] ; then
2020-03-01 19:50:53 +00:00
replace_fn SIMMANUFACTURER " \" $SIMMANUFACTURER \" " " \" $( echo $TMPPARTS | cut -f 1 -d ':' ) \" " $LATEFILE
replace_fn SIMMODEL " \" $SIMMODEL \" " " \" $( echo $TMPPARTS | cut -f 2 -d ':' ) \" " $LATEFILE
else
replace_fn SIMMANUFACTURER " \" $SIMMANUFACTURER \" " "\"\"" $LATEFILE
replace_fn SIMMODEL " \" $SIMMODEL \" " "\"\"" $LATEFILE
2019-02-02 12:37:20 +00:00
fi
# Load module values
. $LATEFILE
}
2020-02-26 21:08:29 +00:00
set_partition_props( ) {
if [ " $2 " = = "ro.build.fingerprint" ] ; then
2020-03-06 12:37:19 +00:00
TMPLST = $PRINTPROPSPARTS $PARTITIONS
2020-02-26 21:08:29 +00:00
else
TMPLST = $PARTITIONS
fi
for PART in $TMPLST ; do
CNTP = 1
while [ $CNTP != 0 ] ; do
TMPPART = " $( echo $2 | cut -f $CNTP -d "." ) "
if [ " $CNTP " = = 1 ] ; then
TMPPROP = " ${ TMPPART } . ${ PART } . $( echo " $2 " | sed " s| ${ TMPPART } \.|| " ) "
else
TMPPROP = " $( echo " $2 " | sed " s|\. ${ TMPPART } || " ) . ${ PART } . ${ TMPPART } "
fi
2020-03-01 19:50:53 +00:00
if [ " $( getprop $TMPPROP ) " ] ; then
2020-02-26 21:08:29 +00:00
log_handler " Changing/writing $TMPPROP . "
2020-03-06 12:37:19 +00:00
if [ " $1 " != "none" ] ; then
2020-02-26 21:08:29 +00:00
echo " ${ TMPPROP } = ${ 3 } " >> $1
else
2020-09-23 08:30:49 +00:00
resetprop -nv $TMPPROP " $3 " >> $LOGFILE 2>& 1
2020-02-26 21:08:29 +00:00
fi
else
log_handler " $TMPPROP not currently set on device. Skipping. "
fi
if [ " $CNTP " = = 1 ] ; then
CNTP = $( echo $2 | grep -o "\." | wc -l)
CNTP = $(( $CNTP + 1 ))
else
CNTP = 0
fi
done
done
}
2020-07-26 18:52:21 +00:00
# ======================== Force BASIC attestation ========================
2020-10-25 19:49:49 +00:00
# Find OEM print file
fn_oem_file( ) {
2020-07-26 18:52:21 +00:00
# Find what brand is being used
if [ " $FINGERPRINTENB " = = 1 -o " $PRINTMODULE " = = 0 ] && [ " $PRINTEDIT " = = 1 ] && [ " $MODULEFINGERPRINT " ] ; then
BASICATTDEV = " $SIMBRAND "
else
BASICATTDEV = " $( getprop ro.product.brand) "
fi
2020-10-25 19:49:49 +00:00
# Find the OEM print file
TMPFILE = " $( ls $MODPATH /printfiles | grep -i $BASICATTDEV ) "
BASICATTMODEL = " $( get_file_value " $MODPATH /printfiles/ $TMPFILE " "BASICATTMODEL=" ) "
}
# Switch/set forced basic attestation, $1=header/file to change (system.prop), $2=model prop value from fingerprint, $3=custom model prop value, $4=reset flag
forced_basic( ) {
2020-09-23 08:30:49 +00:00
if [ " $BASICATTCUST " ] ; then
2020-07-26 18:52:21 +00:00
BASICATTMODEL = $BASICATTCUST
2020-09-23 08:30:49 +00:00
elif [ " $BASICATTLIST " ] ; then
2020-07-26 18:52:21 +00:00
BASICATTMODEL = $BASICATTLIST
2020-09-23 08:30:49 +00:00
else
2020-10-25 19:49:49 +00:00
fn_oem_file
2020-09-23 08:30:49 +00:00
fi
2020-07-26 18:52:21 +00:00
# Write or load values
if [ " $1 " != "none" ] ; then
if [ " $1 " = = " $MODPATH /system.prop " ] ; then
if [ " $BASICATTMODEL " ] ; then
TMPVAL = " $BASICATTMODEL "
else
TMPVAL = " $( getprop ro.product.device) "
fi
echo " ro.product.model= $TMPVAL " >> " $1 "
set_partition_props " $1 " "ro.product.model" " $TMPVAL "
else
TMPVAL = 1
if [ " $BASICATTEST " = = 0 ] ; then
log_handler "Enabling forced basic attestation."
2020-09-23 08:30:49 +00:00
# Disabling ro.product.model simulation
replace_fn "MODELSET" $MODELSET 0 $LATEFILE
2020-07-26 18:52:21 +00:00
elif [ " $BASICATTEST " = = 1 ] && [ -z " $2 " ] && [ -z " $3 " ] && [ " $4 " != "reset" ] ; then
TMPVAL = 0
log_handler "Disabling forced basic attestation."
fi
# Enables or disables the settings
replace_fn "BASICATTEST" $BASICATTEST $TMPVAL $LATEFILE
replace_fn "BASICATTLIST" " \" $BASICATTLIST \" " " \" $2 \" " $LATEFILE
replace_fn "BASICATTCUST" " \" $BASICATTCUST \" " " \" $3 \" " $LATEFILE
after_change " $1 "
fi
else
if [ " $BASICATTMODEL " ] ; then
TMPVAL = " $BASICATTMODEL "
else
TMPVAL = " $( getprop ro.product.device) "
fi
2020-09-23 08:30:49 +00:00
resetprop -nv ro.product.model " $TMPVAL " >> $LOGFILE 2>& 1
2020-07-26 18:52:21 +00:00
set_partition_props "none" "ro.product.model" " $TMPVAL "
fi
}
2020-08-14 08:01:35 +00:00
# Set a list value for forced basic attestation, $1=header, $2=model prop value
2020-07-26 18:52:21 +00:00
forced_list_confirm( ) {
log_handler " Setting value for forced basic attestation to \" $2 \" (from fingerprints list). "
forced_basic " $1 " " $2 "
}
2020-08-14 08:01:35 +00:00
# Set a custom value for forced basic attestation, $1=header, $2=custom model prop value
2020-07-26 18:52:21 +00:00
forced_custom_confirm( ) {
log_handler " Setting custom value for forced basic attestation to \" $2 \". "
forced_basic " $1 " "" " $2 "
}
2020-08-14 08:01:35 +00:00
# Reset the values for forced basic attestation, $1=header, $2=reset type
2020-07-26 18:52:21 +00:00
forced_reset( ) {
LISTVAL = " $BASICATTLIST "
CUSTVAL = " $BASICATTCUST "
if [ " $2 " = = 1 ] || [ " $2 " = = 3 ] ; then
LISTVAL = ""
TMPTXT = "list value"
fi
if [ " $2 " = = 2 ] || [ " $2 " = = 3 ] ; then
CUSTVAL = ""
TMPTXT = "custom value"
fi
if [ " $2 " = = 3 ] ; then
TMPTXT = "custom/list values"
fi
log_handler " Resetting $TMPTXT for forced basic attestation. "
forced_basic " $1 " " $LISTVAL " " $CUSTVAL " "reset"
}
2019-02-02 12:37:20 +00:00
# ======================== Device simulation functions ========================
2020-08-14 08:01:35 +00:00
# Edit the simulation props, $1=file to edit (system.prop)
2019-02-02 12:37:20 +00:00
dev_sim_edit( ) {
2020-03-06 12:37:19 +00:00
if [ " $1 " != "none" ] ; then
2020-02-26 21:08:29 +00:00
before_change
fi
2019-02-02 12:37:20 +00:00
if [ " $FINGERPRINTENB " = = 1 -o " $PRINTMODULE " = = 0 ] && [ " $PRINTEDIT " = = 1 ] ; then
if [ " $DEVSIM " = = 1 ] ; then
log_handler "Editing device simulation props."
2019-03-27 10:50:00 +00:00
TMPPARTS = $PRINTPARTS $ADNSIMPROPS
for ITEM in $TMPPARTS ; do
2019-02-02 12:37:20 +00:00
TMPPROP = $( get_prop_type $ITEM | tr '[:lower:]' '[:upper:]' )
TMPENB = $( get_file_value $LATEFILE " ${ TMPPROP } SET= " )
TMPVALUE = $( get_file_value $LATEFILE " SIM ${ TMPPROP } = " )
2020-02-26 21:08:29 +00:00
if [ "TMPVALUE" ] ; then
if [ " $TMPENB " = = 1 ] && [ " $TMPVALUE " ] ; then
2020-03-01 19:50:53 +00:00
if [ " $( getprop $ITEM ) " ] ; then
2020-02-26 21:08:29 +00:00
log_handler " Changing/writing $ITEM . "
2020-03-06 12:37:19 +00:00
if [ " $1 " != "none" ] ; then
2020-02-26 21:08:29 +00:00
echo " ${ ITEM } = ${ TMPVALUE } " >> $1
else
2020-09-23 08:30:49 +00:00
resetprop -nv $ITEM " $TMPVALUE " >> $LOGFILE 2>& 1
2020-02-26 21:08:29 +00:00
fi
else
log_handler " $ITEM not currently set on device. Skipping. "
fi
if [ " $PARTPROPSSET " = = 1 ] ; then
2020-09-23 08:30:49 +00:00
set_partition_props " $1 " $ITEM " $TMPVALUE "
2020-02-26 21:08:29 +00:00
fi
2019-03-27 10:50:00 +00:00
else
2020-02-26 21:08:29 +00:00
log_handler " Changing/writing $ITEM is disabled. "
2019-03-27 10:50:00 +00:00
fi
2019-02-02 12:37:20 +00:00
else
2020-02-26 21:08:29 +00:00
log_handler " No simulation value set for $ITEM . "
2019-02-02 12:37:20 +00:00
fi
done
fi
fi
}
2020-08-14 08:01:35 +00:00
# Enable/disable the option, $1=header, $2=run option
2019-02-02 12:37:20 +00:00
change_dev_sim( ) {
2020-02-26 21:08:29 +00:00
before_change
2020-10-25 19:49:49 +00:00
2019-02-02 12:37:20 +00:00
if [ $DEVSIM = = 0 ] ; then
STATETXT = "Enabling"
TMPVAL = 1
else
STATETXT = "Disabling"
TMPVAL = 0
2018-04-15 22:05:33 +00:00
fi
2019-02-02 12:37:20 +00:00
log_handler " $STATETXT basic device simulation. "
# Enables or disables the setting
replace_fn "DEVSIM" $DEVSIM $TMPVAL $LATEFILE
2020-02-26 21:08:29 +00:00
# Disables all simulation props
if [ $TMPVAL = = 0 ] ; then
TMPPARTS = $PRINTPARTS $ADNSIMPROPS
for ITEM in $TMPPARTS ; do
change_sim_prop "Device simulation" " $ITEM " 0 "none"
done
system_prop
fi
2019-02-02 12:37:20 +00:00
after_change " $1 " " $2 "
}
2020-08-14 08:01:35 +00:00
# Change if prop should be simulated or not, $1=header, $2=prop name, $3=prop value, $4=run option
2019-02-02 12:37:20 +00:00
change_sim_prop( ) {
2020-02-26 21:08:29 +00:00
before_change
2020-10-25 19:49:49 +00:00
2019-02-02 12:37:20 +00:00
if [ $3 = = 1 ] ; then
STATETXT = "enabled"
else
STATETXT = "disabled"
fi
log_handler " Changing device simulation prop $2 to $STATETXT . "
TMPPROP = $( get_prop_type $2 | tr '[:lower:]' '[:upper:]' )
SUBA = $( get_file_value $LATEFILE " ${ TMPPROP } SET= " )
# Saves new value
replace_fn " ${ TMPPROP } SET " $SUBA $3 $LATEFILE
2019-04-05 21:10:02 +00:00
after_change " $1 " " $4 "
2019-02-02 12:37:20 +00:00
}
2020-08-14 08:01:35 +00:00
# Change if description should be simulated or not, $1=header, $2=Check if option is enabled or disabled, $3=run option
2019-02-02 12:37:20 +00:00
change_sim_descr( ) {
2020-02-26 21:08:29 +00:00
before_change
2020-10-25 19:49:49 +00:00
2019-02-02 12:37:20 +00:00
if [ $2 = = 1 ] ; then
STATETXT = "enabled"
else
STATETXT = "disabled"
fi
log_handler " Changing device description editing to $STATETXT . "
# Saves new value
replace_fn DESCRIPTIONSET $DESCRIPTIONSET $2 $LATEFILE
2019-04-05 21:10:02 +00:00
after_change " $1 " " $3 "
2018-04-15 22:05:33 +00:00
}
2020-08-14 08:01:35 +00:00
# Change if partition specific props should be simulated or not, $1=header, $2=Check if option is enabled or disabled, $3=run option
2020-02-26 21:08:29 +00:00
change_sim_partprops( ) {
before_change
2020-10-25 19:49:49 +00:00
2020-02-26 21:08:29 +00:00
if [ $2 = = 1 ] ; then
STATETXT = "enabled"
else
STATETXT = "disabled"
fi
log_handler " Changing partition specific prop editing to $STATETXT . "
# Saves new value
replace_fn PARTPROPSSET $PARTPROPSSET $2 $LATEFILE
after_change " $1 " " $3 "
}
2018-04-15 22:05:33 +00:00
# ======================== MagiskHide Props functions ========================
2020-08-14 08:01:35 +00:00
# Check safe values, $1=header, $2=Currently set prop value
2018-04-15 22:05:33 +00:00
safe_props( ) {
SAFE = ""
if [ " $2 " ] ; then
for P in $SAFELIST ; do
2018-05-06 09:57:49 +00:00
if [ " $( get_eq_left " $P " ) " = = " $1 " ] ; then
if [ " $2 " = = " $( get_eq_right " $P " ) " ] ; then
2018-04-15 22:05:33 +00:00
SAFE = 1
else
SAFE = 0
fi
break
fi
done
fi
}
2020-08-14 08:01:35 +00:00
# Find what prop value to change to, $1=header, $2=Currently set prop value
2018-04-15 22:05:33 +00:00
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
; ;
2020-05-21 19:02:54 +00:00
ro.bootmode) if [ " $2 " = = "recovery" ] ; then CHANGE = "unknown" ; else CHANGE = "recovery" ; fi
; ;
ro.boot.mode) if [ " $2 " = = "recovery" ] ; then CHANGE = "unknown" ; else CHANGE = "recovery" ; fi
; ;
ro.build.selinux) if [ " $2 " = = 1 ] ; then CHANGE = 0; else CHANGE = 1; fi
2018-04-15 22:05:33 +00:00
; ;
esac
}
2020-08-14 08:01:35 +00:00
# Reset the module prop change, $1=prop name, $2=run option
2018-04-15 22:05:33 +00:00
reset_prop( ) {
2020-02-26 21:08:29 +00:00
before_change
2018-04-15 22:05:33 +00:00
# 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 } = " )
2018-04-29 09:14:35 +00:00
log_handler " Resetting $1 to default system value. "
2018-04-15 22:05:33 +00:00
# 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
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
2018-05-29 07:29:19 +00:00
fi
2020-02-26 21:08:29 +00:00
if [ " $PROPCOUNTP " = = 0 ] ; then
2018-05-29 07:29:19 +00:00
replace_fn PROPEDIT 1 0 $LATEFILE
2018-04-15 22:05:33 +00:00
fi
2019-04-05 21:10:02 +00:00
after_change " $1 " " $2 "
2018-04-15 22:05:33 +00:00
}
2020-08-14 08:01:35 +00:00
# Use prop value, $1=prop name, $2=new prop value, $3=run option
2018-04-15 22:05:33 +00:00
change_prop( ) {
2020-02-26 21:08:29 +00:00
before_change
2020-10-25 19:49:49 +00:00
2018-04-15 22:05:33 +00:00
# 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
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
2019-04-05 21:10:02 +00:00
after_change " $1 " " $3 "
2018-04-15 22:05:33 +00:00
}
2020-08-14 08:01:35 +00:00
# Reset all module prop changes, $1=header
2018-04-15 22:05:33 +00:00
reset_prop_all( ) {
2020-02-26 21:08:29 +00:00
before_change
2020-10-25 19:49:49 +00:00
2018-04-15 22:05:33 +00:00
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
2020-10-25 19:49:49 +00:00
2018-04-25 22:17:32 +00:00
# Updates prop change variables in propsconf_late
replace_fn PROPCOUNT $PROPCOUNT 0 $LATEFILE
replace_fn PROPEDIT 1 0 $LATEFILE
2018-05-29 07:29:19 +00:00
2018-04-15 22:05:33 +00:00
after_change " $1 "
}
# ======================== Custom Props functions ========================
2020-08-14 08:01:35 +00:00
# Set custom props, $1=custom type (default, post, late, delay) , $2=file to edit
2018-05-29 07:29:19 +00:00
custom_edit( ) {
2020-02-26 21:08:29 +00:00
if [ " $2 " ] ; then
before_change
fi
2019-02-02 12:37:20 +00:00
if [ " $1 " ] && [ " $CUSTOMEDIT " = = 1 ] ; then
2018-09-04 07:55:57 +00:00
TMPLST = " $( get_file_value $LATEFILE " ${ 1 } = " ) "
if [ " $TMPLST " ] ; then
log_handler "Writing custom props."
2020-08-14 08:01:35 +00:00
for ITEM in $TMPLST ; do
TMPITEM = $( get_prop_value " $ITEM " )
if [ " $1 " = = "CUSTOMPROPSDELAY" ] ; then
{
TMPBOOTTXT = ""
TMPDELAY = $( get_prop_delay " $ITEM " )
# Wait for "Boot completed", if enabled
if [ " $( get_prop_delay_exec " $ITEM " ) " = = "boot" ] ; then
TMPBOOTTXT = " after \"Boot completed\""
until [ $( getprop sys.boot_completed) = = 1 ] ; do
sleep 0.1
done
fi
TMPI = 1
until [ " $TMPI " -gt " $TMPDELAY " ] ; do
sleep 1
TMPI = $(( $TMPI + 1 ))
done
log_handler " Changing/writing $( get_eq_left " $ITEM " ) with a delay of $TMPDELAY seconds ${ TMPBOOTTXT } . "
resetprop -nv $( get_eq_left " $ITEM " ) " ${ TMPITEM } " >> $LOGFILE 2>& 1
} &
2019-03-27 10:50:00 +00:00
else
2020-08-14 08:01:35 +00:00
log_handler " Changing/writing $( get_eq_left " $ITEM " ) . "
if [ " $2 " ] ; then
echo " $( get_eq_left " $ITEM " ) = ${ TMPITEM } " >> $2
else
resetprop -nv $( get_eq_left " $ITEM " ) " ${ TMPITEM } " >> $LOGFILE 2>& 1
fi
2019-03-27 10:50:00 +00:00
fi
2018-09-04 07:55:57 +00:00
done
fi
2018-05-29 07:29:19 +00:00
fi
}
2020-08-14 08:01:35 +00:00
# Find custom props module set value, $1=prop name
2019-05-04 18:57:59 +00:00
custprop_value( ) {
TMPLST = " $CUSTOMPROPSLIST "
if [ " $TMPLST " ] ; then
for ITEM in $TMPLST ; do
case " $ITEM " in
*$1 *)
2020-08-14 08:01:35 +00:00
get_prop_value " $ITEM "
2019-05-04 18:57:59 +00:00
; ;
esac
done
fi
}
2020-08-14 08:01:35 +00:00
# Set custom prop value, $1=prop name, $2=prop value , $3=boot stage , $4=original value, $5=delay, $6=exectuion timing ("boot completed" or now)
2018-04-15 22:05:33 +00:00
set_custprop( ) {
2020-02-26 21:08:29 +00:00
before_change
2020-08-14 08:01:35 +00:00
2018-04-15 22:05:33 +00:00
if [ " $2 " ] ; then
2019-02-02 12:37:20 +00:00
# Reset the prop
2019-05-04 18:57:59 +00:00
reset_custprop " $1 " " $2 " "bootstage"
2019-02-02 12:37:20 +00:00
# Set the prop
2018-09-04 07:55:57 +00:00
PROPSBOOTSTAGE = "CUSTOMPROPS"
2019-02-02 12:37:20 +00:00
PROPSTXT = "default"
2018-09-04 07:55:57 +00:00
if [ " $3 " = = "post" ] ; then
PROPSBOOTSTAGE = "CUSTOMPROPSPOST"
2019-02-02 12:37:20 +00:00
PROPSTXT = "post-fs-data"
2018-09-04 07:55:57 +00:00
elif [ " $3 " = = "late" ] ; then
PROPSBOOTSTAGE = "CUSTOMPROPSLATE"
2019-02-02 12:37:20 +00:00
PROPSTXT = "late_start service"
elif [ " $3 " = = "both" ] ; then
PROPSBOOTSTAGE = "CUSTOMPROPSPOST CUSTOMPROPSLATE"
PROPSTXT = "post-fs-data/late_start service"
2020-08-14 08:01:35 +00:00
elif [ " $3 " = = "delay" ] ; then
PROPSBOOTSTAGE = "CUSTOMPROPSDELAY"
PROPSTXT = "late_start service"
fi
DELAYVAL = ""
DELAYLOG = ""
DELAYBOOT = ""
if [ " $3 " = = "delay" ] && [ " $5 " ] ; then
DELAYVAL = " ; $5 "
DELAYLOG = " , with a delay of $5 seconds "
elif [ " $3 " = = "delay" ] && [ -z " $5 " ] ; then
DELAYVAL = ";0"
fi
if [ " $3 " = = "delay" ] && [ " $6 " = = "boot" ] ; then
DELAYBOOT = "__boot"
2018-09-04 07:55:57 +00:00
fi
2018-06-03 16:40:24 +00:00
TMPVALUE = $( echo " $2 " | sed 's| |_sp_|g' )
2019-02-02 12:37:20 +00:00
TMPORIG = $( echo " $4 " | sed 's| |_sp_|g' )
DLIMTMP = 1
for ITEM in $PROPSBOOTSTAGE ; do
CURRCUSTPROPS = $( get_file_value $LATEFILE " ${ ITEM } = " )
2020-08-14 08:01:35 +00:00
TMPCUSTPROPS = $( echo " $CURRCUSTPROPS ${ 1 } = ${ TMPVALUE } ${ DELAYVAL } ${ DELAYBOOT } " | sed 's|^[ \t]*||' )
2019-02-02 12:37:20 +00:00
SORTCUSTPROPS = $( echo $( printf '%s\n' $TMPCUSTPROPS | sort -u) )
2018-04-15 22:05:33 +00:00
2020-08-14 08:01:35 +00:00
log_handler " Setting custom prop $1 in $( echo $PROPSTXT | cut -f $DLIMTMP -d '/' ) stage ${ DELAYLOG } . "
2019-02-02 12:37:20 +00:00
replace_fn $ITEM " \" $CURRCUSTPROPS \" " " \" $SORTCUSTPROPS \" " $LATEFILE
replace_fn CUSTOMEDIT 0 1 $LATEFILE
DLIMTMP = $(( $DLIMTMP + 1 ))
done
2018-04-15 22:05:33 +00:00
2019-04-05 21:10:02 +00:00
after_change " $1 " " $4 "
2018-04-15 22:05:33 +00:00
fi
}
2020-08-14 08:01:35 +00:00
# Reset all custom prop values, $1=after_change option (run from configuration file or not)
2018-04-15 22:05:33 +00:00
reset_all_custprop( ) {
2020-02-26 21:08:29 +00:00
before_change
2020-08-14 08:01:35 +00:00
2018-04-15 22:05:33 +00:00
log_handler "Resetting all custom props."
# Removing all custom props
2019-02-02 12:37:20 +00:00
replace_fn CUSTOMPROPS " \" $CUSTOMPROPS \" " "\"\"" $LATEFILE
replace_fn CUSTOMPROPSPOST " \" $CUSTOMPROPSPOST \" " "\"\"" $LATEFILE
replace_fn CUSTOMPROPSLATE " \" $CUSTOMPROPSLATE \" " "\"\"" $LATEFILE
2020-08-14 08:01:35 +00:00
replace_fn CUSTOMPROPSDELAY " \" $CUSTOMPROPSDELAY \" " "\"\"" $LATEFILE
2018-04-25 22:17:32 +00:00
replace_fn CUSTOMEDIT 1 0 $LATEFILE
2018-04-15 22:05:33 +00:00
2019-04-05 21:10:02 +00:00
after_change "Resetting all custom props" " $1 "
2018-04-15 22:05:33 +00:00
}
2020-08-14 08:01:35 +00:00
# Reset custom prop value, $1=prop name, $2=prop value, $3=run after_change or not
2018-04-15 22:05:33 +00:00
reset_custprop( ) {
2020-02-26 21:08:29 +00:00
before_change
2020-08-14 08:01:35 +00:00
2019-02-02 12:37:20 +00:00
log_handler " Resetting custom prop $1 . "
2020-08-14 08:01:35 +00:00
PROPSBOOTSTAGE = "CUSTOMPROPS CUSTOMPROPSPOST CUSTOMPROPSLATE CUSTOMPROPSDELAY"
2018-06-03 16:40:24 +00:00
TMPVALUE = $( echo " $2 " | sed 's| |_sp_|g' )
2018-04-15 22:05:33 +00:00
2019-02-02 12:37:20 +00:00
for ITEM in $PROPSBOOTSTAGE ; do
CURRCUSTPROPS = $( get_file_value $LATEFILE " ${ ITEM } = " )
2020-08-14 08:01:35 +00:00
if [ " $CURRCUSTPROPS " ] ; then
TMPDELAY = ""
TMPBOOTEXEC = ""
if [ " $ITEM " = = "CUSTOMPROPSDELAY" ] ; then
for PROP in $CURRCUSTPROPS ; do
case $PROP in
*$TMPVALUE *)
TMPDELAY = " ; $( get_prop_delay " $PROP " ) "
case $PROP in
*\_ \_ *)
TMPBOOTEXEC = " $( get_prop_delay_exec " $PROP " ) "
if [ " $TMPBOOTEXEC " ] ; then
TMPBOOTEXEC = " __ $TMPBOOTEXEC "
fi
; ;
esac
break
; ;
esac
2020-10-25 19:49:49 +00:00
done
2020-08-14 08:01:35 +00:00
fi
TMPCUSTPROPS = $( echo $CURRCUSTPROPS | sed " s| ${ 1 } = ${ TMPVALUE } ${ TMPDELAY } ${ TMPBOOTEXEC } || " | tr -s " " | sed 's|^[ \t]*||;s|[ \t]*$||' )
# Updating custom props string
replace_fn $ITEM " \" $CURRCUSTPROPS \" " " \" $TMPCUSTPROPS \" " $LATEFILE
fi
2019-02-02 12:37:20 +00:00
done
2018-04-15 22:05:33 +00:00
2020-08-14 08:01:35 +00:00
if [ -z " $CUSTOMPROPS " ] && [ -z " $CUSTOMPROPSPOST " ] && [ -z " $CUSTOMPROPSLATE " ] && [ -z " $CUSTOMPROPSDELAY " ] ; then
2018-04-25 22:17:32 +00:00
replace_fn CUSTOMEDIT 1 0 $LATEFILE
2018-04-15 22:05:33 +00:00
fi
2018-09-04 07:55:57 +00:00
if [ " $3 " != "bootstage" ] ; then
after_change " $1 "
fi
}
2018-06-19 09:56:08 +00:00
# ======================== Delete Props functions ========================
# Delete props
prop_del( ) {
2019-02-02 12:37:20 +00:00
if [ " $DELEDIT " = = 1 ] ; then
2018-06-19 09:56:08 +00:00
log_handler "Deleting props."
2020-10-25 19:49:49 +00:00
for ITEM in $DELETEPROPS ; do
2018-06-19 09:56:08 +00:00
log_handler " Deleting $ITEM . "
2018-11-18 06:31:58 +00:00
case " $ITEM " in
persist*)
resetprop -pv --delete $ITEM >> $LOGFILE 2>& 1
; ;
*)
resetprop -v --delete $ITEM >> $LOGFILE 2>& 1
; ;
esac
2018-06-19 09:56:08 +00:00
done
fi
}
2020-08-14 08:01:35 +00:00
# Set prop to delete, $1=prop name, $2=run option
2018-06-19 09:56:08 +00:00
set_delprop( ) {
if [ " $1 " ] ; then
2020-02-26 21:08:29 +00:00
before_change
2020-08-14 08:01:35 +00:00
2019-02-02 12:37:20 +00:00
TMPDELPROPS = $( echo " $DELETEPROPS ${ 1 } " | sed 's|^[ \t]*||' )
2018-06-19 09:56:08 +00:00
SORTDELPROPS = $( echo $( printf '%s\n' $TMPDELPROPS | sort -u) )
log_handler " Setting prop to delete, $1 . "
2019-02-02 12:37:20 +00:00
replace_fn DELETEPROPS " \" $DELETEPROPS \" " " \" $SORTDELPROPS \" " $LATEFILE
2018-06-19 09:56:08 +00:00
replace_fn DELEDIT 0 1 $LATEFILE
2019-04-05 21:10:02 +00:00
after_change " Delete $1 " " $2 "
2018-06-19 09:56:08 +00:00
fi
}
2020-08-14 08:01:35 +00:00
# Reset all props to delete, $1=run option
2018-06-19 09:56:08 +00:00
reset_all_delprop( ) {
2020-02-26 21:08:29 +00:00
before_change
2020-08-14 08:01:35 +00:00
2018-06-19 09:56:08 +00:00
log_handler "Resetting list of props to delete."
# Removing all props to delete
2019-02-02 12:37:20 +00:00
replace_fn DELETEPROPS " \" $DELETEPROPS \" " "\"\"" $LATEFILE
2018-06-19 09:56:08 +00:00
replace_fn DELEDIT 1 0 $LATEFILE
2019-04-05 21:10:02 +00:00
after_change "Reset all props to delete." " $1 "
2018-06-19 09:56:08 +00:00
}
2020-08-14 08:01:35 +00:00
# Reset prop to delete, $1=prop name
2018-06-19 09:56:08 +00:00
reset_delprop( ) {
2020-02-26 21:08:29 +00:00
before_change
2020-08-14 08:01:35 +00:00
2018-06-19 09:56:08 +00:00
log_handler " Resetting prop to delete, $1 . "
2019-02-02 12:37:20 +00:00
TMPDELPROPS = $( echo $DELETEPROPS | sed " s| ${ 1 } || " | tr -s " " | sed 's|^[ \t]*||' )
2018-06-19 09:56:08 +00:00
# Resetting prop to delete
2019-02-02 12:37:20 +00:00
replace_fn DELETEPROPS " \" $DELETEPROPS \" " " \" $TMPDELPROPS \" " $LATEFILE
# Loading new value
. $LATEFILE
if [ -z " $DELETEPROPS " ] ; then
2018-06-19 09:56:08 +00:00
replace_fn DELEDIT 1 0 $LATEFILE
fi
2019-03-27 10:50:00 +00:00
after_change " Reset prop to delete - $1 "
2018-06-19 09:56:08 +00:00
}
2020-02-26 21:08:29 +00:00
# ======================== Options functions ========================
2020-08-14 08:01:35 +00:00
# Export all settings to a module configuration file, $1=header
2020-02-26 21:08:29 +00:00
export_settings( ) {
before_change
2020-03-01 19:50:53 +00:00
log_handler " Exporting module settings to $EXPORTFILE . "
2020-02-26 21:08:29 +00:00
# Load settings
. $LATEFILE
# Create export directory
2020-02-26 21:56:02 +00:00
mkdir -pv $EXPORTPATH >> $LOGFILE 2>& 1
2020-02-26 21:08:29 +00:00
# Create file and Delete instructions
2020-02-26 22:17:37 +00:00
head -n 59 $MODPATH /common/propsconf_conf > $EXPORTFILE
2020-02-26 21:08:29 +00:00
# Export settings
2020-08-14 08:01:35 +00:00
# Fingerprint
2020-02-26 21:08:29 +00:00
replace_fn CONFFINGERPRINT "\"\"" " \" $MODULEFINGERPRINT \" " $EXPORTFILE
2020-08-14 08:01:35 +00:00
replace_fn CONFVENDPRINT false $( [ $PRINTVEND = = 0 ] && echo "false" || echo "true" ) $EXPORTFILE
2020-02-26 21:08:29 +00:00
replace_fn CONFPRINTBOOT default $( [ $PRINTSTAGE = = 0 ] && echo "default" || $( [ $PRINTSTAGE = = 1 ] && echo "post" || echo "late" ) ) $EXPORTFILE
2020-08-14 08:01:35 +00:00
replace_fn CONFPATCHBOOT late $( [ $PATCHSTAGE = = 0 ] && echo "default" || $( [ $PATCHSTAGE = = 1 ] && echo "post" || echo "late" ) ) $EXPORTFILE
# Force BASIC attestation
2021-01-14 21:01:33 +00:00
#replace_fn CONFBASICATTEST false $([ $BASICATTEST == 0 ] && echo "false" || echo "true") $EXPORTFILE
#replace_fn CONFBASICATTCUST "\"\"" "\"$BASICATTCUST\"" $EXPORTFILE
2020-08-14 08:01:35 +00:00
# Device Simulation
2020-02-26 21:08:29 +00:00
replace_fn CONFDEVSIM false $( [ $DEVSIM = = 0 ] && echo "false" || echo "true" ) $EXPORTFILE
replace_fn CONFBRAND false $( [ $BRANDSET = = 0 ] && echo "false" || echo "true" ) $EXPORTFILE
replace_fn CONFNAME false $( [ $NAMESET = = 0 ] && echo "false" || echo "true" ) $EXPORTFILE
replace_fn CONFDEVICE false $( [ $DEVICESET = = 0 ] && echo "false" || echo "true" ) $EXPORTFILE
replace_fn CONFRELEASE false $( [ $RELEASESET = = 0 ] && echo "false" || echo "true" ) $EXPORTFILE
replace_fn CONFID false $( [ $IDSET = = 0 ] && echo "false" || echo "true" ) $EXPORTFILE
replace_fn CONFINCREMENTAL false $( [ $INCREMENTALSET = = 0 ] && echo "false" || echo "true" ) $EXPORTFILE
replace_fn CONFDISPLAY false $( [ $DISPLAYSET = = 0 ] && echo "false" || echo "true" ) $EXPORTFILE
replace_fn CONFSDK false $( [ $SDKSET = = 0 ] && echo "false" || echo "true" ) $EXPORTFILE
replace_fn CONFMANUFACTURER false $( [ $MANUFACTURERSET = = 0 ] && echo "false" || echo "true" ) $EXPORTFILE
replace_fn CONFMODEL false $( [ $MODELSET = = 0 ] && echo "false" || echo "true" ) $EXPORTFILE
replace_fn CONFDESCRIPTION true $( [ $DESCRIPTIONSET = = 0 ] && echo "false" || echo "true" ) $EXPORTFILE
replace_fn CONFPARTPROPS true $( [ $PARTPROPSSET = = 0 ] && echo "false" || echo "true" ) $EXPORTFILE
replace_fn CONFSIMBOOT default $( [ $SIMSTAGE = = 0 ] && echo "default" || $( [ $PRINTSTAGE = = 1 ] && echo "post" || echo "late" ) ) $EXPORTFILE
2020-08-14 08:01:35 +00:00
# MagiskHide sensitive props
replace_fn CONFDEBUGGABLE "\"\"" " \" $MODULEDEBUGGABLE \" " $EXPORTFILE
replace_fn CONFSECURE "\"\"" " \" $MODULESECURE \" " $EXPORTFILE
replace_fn CONFTYPE "\"\"" " \" $MODULETYPE \" " $EXPORTFILE
replace_fn CONFTAGS "\"\"" " \" $MODULETAGS \" " $EXPORTFILE
replace_fn CONFSELINUX "\"\"" " \" $MODULESELINUX \" " $EXPORTFILE
# Custom props
2020-02-26 21:08:29 +00:00
replace_fn CONFPROPS "\"\"" " \" $CUSTOMPROPS \" " $EXPORTFILE
replace_fn CONFPROPSPOST "\"\"" " \" $CUSTOMPROPSPOST \" " $EXPORTFILE
replace_fn CONFPROPSLATE "\"\"" " \" $CUSTOMPROPSLATE \" " $EXPORTFILE
2020-08-14 08:01:35 +00:00
replace_fn CONFPROPSDELAY "\"\"" " \" $CUSTOMPROPSDELAY \" " $EXPORTFILE
# Delete props
2020-02-26 21:08:29 +00:00
replace_fn CONFDELPROPS "\"\"" " \" $DELETEPROPS \" " $EXPORTFILE
2020-08-14 08:01:35 +00:00
# Module settings
2020-02-26 21:08:29 +00:00
replace_fn CONFBOOT default $( [ $OPTIONBOOT = = 0 ] && echo "default" || $( [ $PRINTSTAGE = = 1 ] && echo "post" || echo "late" ) ) $EXPORTFILE
replace_fn CONFCOLOUR true $( [ $OPTIONCOLOUR = = 0 ] && echo "false" || echo "true" ) $EXPORTFILE
2020-09-12 18:30:24 +00:00
replace_fn CONFWEBP true $( [ $OPTIONWEBP = = 0 ] && echo "false" || echo "true" ) $EXPORTFILE
replace_fn CONFWEBU true $( [ $OPTIONWEBU = = 0 ] && echo "false" || echo "true" ) $EXPORTFILE
2020-02-26 21:08:29 +00:00
replace_fn CONFUPDATE true $( [ $OPTIONUPDATE = = 0 ] && echo "false" || echo "true" ) $EXPORTFILE
replace_fn CONFBACK false $( [ $OPTIONBACK = = 0 ] && echo "false" || echo "true" ) $EXPORTFILE
log_handler "Export done."
# Print info
menu_header " ${ C } $1 ${ N } "
echo ""
echo "A module configuration file with"
echo "your current settings have been"
echo "saved to your internal storage,"
2020-08-14 08:01:35 +00:00
echo -e " in the ${ C } /mhcp ${ N } directory. "
2020-02-26 21:08:29 +00:00
echo ""
echo -n "Press enter to continue..."
read -r INPUTTMP
}
2018-06-19 09:56:08 +00:00
# ======================== Log collecting functions ========================
2020-08-14 08:01:35 +00:00
# Collects useful logs and info for troubleshooting, $1=header, $2=Run as a command flag or not
2018-06-19 09:56:08 +00:00
collect_logs( ) {
log_handler "Collecting logs and information."
# Create temporary directory
2018-08-07 11:50:01 +00:00
mkdir -pv $TMPLOGLOC >> $LOGFILE 2>& 1
2018-06-19 09:56:08 +00:00
# Saving Magisk and module log files and device original build.prop
for ITEM in $TMPLOGLIST ; do
2018-07-01 05:29:20 +00:00
if [ -f " $ITEM " ] ; then
2019-11-02 22:24:17 +00:00
if [ " $ITEM " != " $MHPCPATH /propsconf.log " ] ; then
2020-05-21 19:02:54 +00:00
cp -af $ITEM ${ TMPLOGLOC } >> $LOGFILE 2>& 1
2019-04-02 19:42:29 +00:00
fi
2018-07-01 05:29:20 +00:00
else
2019-11-02 22:24:17 +00:00
log_handler " $ITEM not available. "
2018-07-01 05:29:20 +00:00
fi
2018-06-19 09:56:08 +00:00
done
# Saving the current prop values
2020-03-01 19:50:53 +00:00
getprop > $TMPLOGLOC /currentprops
2019-11-22 19:19:18 +00:00
sed -i -e " s|\]\:\ \[|=|g;s|^\[||g;s|\] $||g " $TMPLOGLOC /currentprops
2019-04-05 21:10:02 +00:00
2019-04-02 19:42:29 +00:00
# Saving the log file
2019-11-02 22:24:17 +00:00
cp -af $MHPCPATH /propsconf.log $TMPLOGLOC >> $LOGFILE 2>& 1
2018-06-19 09:56:08 +00:00
# Package the files
2019-11-02 22:24:17 +00:00
cd $MHPCPATH
2018-08-07 11:50:01 +00:00
tar -zcvf propslogs.tar.gz propslogs >> $LOGFILE 2>& 1
2018-06-19 09:56:08 +00:00
# Copy package to internal storage
2020-05-21 19:11:42 +00:00
cp -f $MHPCPATH /propslogs.tar.gz /storage/emulated/0 >> $LOGFILE 2>& 1
rm -f $MHPCPATH /propslogs.tar.gz
2019-11-22 19:19:18 +00:00
2018-06-19 09:56:08 +00:00
# Remove temporary directory
2018-08-07 11:50:01 +00:00
rm -rf $TMPLOGLOC >> $LOGFILE 2>& 1
2018-06-19 09:56:08 +00:00
log_handler "Logs and information collected."
2018-07-01 05:29:20 +00:00
if [ " $1 " != "issue" ] ; then
INPUTTMP = ""
menu_header " ${ C } $1 ${ N } "
echo ""
echo "Logs and information collected."
echo ""
2020-08-27 09:07:28 +00:00
echo " The packaged file ( ${ C } propslogs.tar.gz ${ N } ) "
echo "has been saved to the root of your device's"
echo "internal storage."
2019-11-22 19:19:18 +00:00
echo "If it did not, please see the documentation"
echo "for details on how to collect the logs"
echo "manually."
2018-07-01 05:29:20 +00:00
echo ""
2019-11-22 19:19:18 +00:00
echo "Attach the file(s) to a post in the support"
2018-07-01 05:29:20 +00:00
echo "thread @ XDA, with a detailed description"
echo "of your issue."
echo ""
echo -n "Press enter to continue..."
read -r INPUTTMP
case " $INPUTTMP " in
*)
if [ " $2 " = = "l" ] ; then
exit_fn
fi
; ;
esac
fi
}
2018-07-19 19:47:43 +00:00
# Log print
2019-04-02 19:42:29 +00:00
if [ " $BOOTSTAGE " != "post" ] ; then
log_handler "Functions loaded."
fi