diff --git a/META-INF/com/google/android/update-binary b/META-INF/com/google/android/update-binary index 77f84bd..27957e2 100644 --- a/META-INF/com/google/android/update-binary +++ b/META-INF/com/google/android/update-binary @@ -6,54 +6,74 @@ umask 022 -# Global vars -TMPDIR=/dev/tmp -PERSISTDIR=/sbin/.magisk/mirror/persist - -rm -rf $TMPDIR 2>/dev/null -mkdir -p $TMPDIR - # echo before loading util_functions ui_print() { echo "$1"; } require_new_magisk() { ui_print "*******************************" - ui_print " Please install Magisk v19.0+! " + ui_print " Please install Magisk v20.0+! " ui_print "*******************************" exit 1 } +######################### +# Load util_functions.sh +######################### + +OUTFD=$2 +ZIPFILE=$3 + +mount /data 2>/dev/null + +[ -f /data/adb/magisk/util_functions.sh ] || require_new_magisk +. /data/adb/magisk/util_functions.sh +[ $MAGISK_VER_CODE -lt 20000 ] && require_new_magisk + +if [ $MAGISK_VER_CODE -ge 20400 ]; then + # New Magisk have complete installation logic within util_functions.sh + install_module + exit 0 +fi + +################# +# Legacy Support +################# + +TMPDIR=/dev/tmp +PERSISTDIR=/sbin/.magisk/mirror/persist + is_legacy_script() { unzip -l "$ZIPFILE" install.sh | grep -q install.sh return $? } print_modname() { - local len - len=`echo -n $MODNAME | wc -c` + local authlen len namelen pounds + namelen=`echo -n $MODNAME | wc -c` + authlen=$((`echo -n $MODAUTH | wc -c` + 3)) + [ $namelen -gt $authlen ] && len=$namelen || len=$authlen len=$((len + 2)) - local pounds=`printf "%${len}s" | tr ' ' '*'` + pounds=$(printf "%${len}s" | tr ' ' '*') ui_print "$pounds" ui_print " $MODNAME " + ui_print " by $MODAUTH " ui_print "$pounds" ui_print "*******************" ui_print " Powered by Magisk " ui_print "*******************" } -############## -# Environment -############## +# Override abort as old scripts have some issues +abort() { + ui_print "$1" + $BOOTMODE || recovery_cleanup + [ -n $MODPATH ] && rm -rf $MODPATH + rm -rf $TMPDIR + exit 1 +} -OUTFD=$2 -ZIPFILE=$3 - -mount /data 2>/dev/null - -# Load utility functions -[ -f /data/adb/magisk/util_functions.sh ] || require_new_magisk -. /data/adb/magisk/util_functions.sh -[ $MAGISK_VER_CODE -gt 18100 ] || require_new_magisk +rm -rf $TMPDIR 2>/dev/null +mkdir -p $TMPDIR # Preperation for flashable zips setup_flashable @@ -78,8 +98,9 @@ unzip -o "$ZIPFILE" module.prop -d $TMPDIR >&2 $BOOTMODE && MODDIRNAME=modules_update || MODDIRNAME=modules MODULEROOT=$NVBASE/$MODDIRNAME MODID=`grep_prop id $TMPDIR/module.prop` -MODPATH=$MODULEROOT/$MODID MODNAME=`grep_prop name $TMPDIR/module.prop` +MODAUTH=`grep_prop author $TMPDIR/module.prop` +MODPATH=$MODULEROOT/$MODID # Create mod paths rm -rf $MODPATH 2>/dev/null @@ -151,9 +172,11 @@ fi # Copy over custom sepolicy rules if [ -f $MODPATH/sepolicy.rule -a -e $PERSISTDIR ]; then ui_print "- Installing custom sepolicy patch" + # Remove old recovery logs (which may be filling partition) to make room + rm -f $PERSISTDIR/cache/recovery/* PERSISTMOD=$PERSISTDIR/magisk/$MODID mkdir -p $PERSISTMOD - cp -af $MODPATH/sepolicy.rule $PERSISTMOD/sepolicy.rule + cp -af $MODPATH/sepolicy.rule $PERSISTMOD/sepolicy.rule || abort "! Insufficient partition size" fi # Remove stuffs that don't belong to modules @@ -161,9 +184,9 @@ rm -rf \ $MODPATH/system/placeholder $MODPATH/customize.sh \ $MODPATH/README.md $MODPATH/.git* 2>/dev/null -############## +############# # Finalizing -############## +############# cd / $BOOTMODE || recovery_cleanup