#!/sbin/sh TMPDIR=/dev/tmp MOUNTPATH=/dev/magisk_img # Default permissions umask 022 # Initial cleanup 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 "*******************************" exit 1 } ########################################################################################## # Environment ########################################################################################## OUTFD=$2 ZIPFILE=$3 mount /data 2>/dev/null # Load utility functions if [ -f /data/adb/magisk/util_functions.sh ]; then . /data/adb/magisk/util_functions.sh NVBASE=/data/adb [ $MAGISK_VER_CODE -gt 18100 ] || require_new_magisk else require_new_magisk fi # Preperation for flashable zips setup_flashable # Mount partitions mount_partitions # Detect version and architecture api_level_arch_detect # Setup busybox and binaries $BOOTMODE && boot_actions || recovery_actions ########################################################################################## # Preparation ########################################################################################## # Extract common files unzip -oj "$ZIPFILE" module.prop install.sh uninstall.sh 'common/*' -d $TMPDIR >&2 [ ! -f $TMPDIR/install.sh ] && abort "! Unable to extract zip file!" # Load install script . $TMPDIR/install.sh $BOOTMODE && MODDIRNAME=modules_update || MODDIRNAME=modules MODULEROOT=$NVBASE/$MODDIRNAME MODID=`grep_prop id $TMPDIR/module.prop` MODPATH=$MODULEROOT/$MODID print_modname ui_print "******************************" ui_print "Powered by Magisk (@topjohnwu)" ui_print "******************************" ########################################################################################## # Install ########################################################################################## # Create mod paths rm -rf $MODPATH 2>/dev/null mkdir -p $MODPATH on_install # Remove placeholder rm -f $MODPATH/system/placeholder 2>/dev/null # Custom uninstaller [ -f $TMPDIR/uninstall.sh ] && cp -af $TMPDIR/uninstall.sh $MODPATH/uninstall.sh # Auto Mount $SKIPMOUNT && touch $MODPATH/skip_mount # prop files $PROPFILE && cp -af $TMPDIR/system.prop $MODPATH/system.prop # Module info cp -af $TMPDIR/module.prop $MODPATH/module.prop if $BOOTMODE; then # Update info for Magisk Manager mktouch $NVBASE/modules/$MODID/update cp -af $TMPDIR/module.prop $NVBASE/modules/$MODID/module.prop fi # post-fs-data mode scripts $POSTFSDATA && cp -af $TMPDIR/post-fs-data.sh $MODPATH/post-fs-data.sh # service mode scripts $LATESTARTSERVICE && cp -af $TMPDIR/service.sh $MODPATH/service.sh # Handle replace folders for TARGET in $REPLACE; do mktouch $MODPATH$TARGET/.replace done ui_print "- Setting permissions" set_permissions ########################################################################################## # Finalizing ########################################################################################## cd / $BOOTMODE || recovery_cleanup rm -rf $TMPDIR $MOUNTPATH ui_print "- Done" exit 0