#!/sbin/sh
#Setup
export installzip="$3"
export OUTFD="/proc/self/fd/$2"
export TMP="/tmp"
export addons="$TMP/addons"
export l="$TMP/ugu"
bb="$TMP/busybox"
bs="$TMP/bash"
zcore="
core 
busybox 
bash 
"
add=" 
file 
zip 
zipalign 
aapt 
adb
"
ui_print() {
  if ! $BOOTMODE; then
     echo "ui_print $1
       ui_print" >> $OUTFD
  else 
    echo "$1"
  fi
}
ui_print "*****************************"
ui_print "                             "
ui_print "     DisableFlagSecure     "
ui_print "     For Android Oreo+     "
ui_print "      By Mehedi H Joy      "
ui_print "           v10.0              "
ui_print "                             "
ui_print "*****************************"
sleep 1
ui_print "*****************************"
ui_print "    Brought to you by -      "
ui_print " XDA Former RC and S. Member "
ui_print "     mehedihjoy @ XDA          "
ui_print "                             "
ui_print "*****************************"
sleep 2
ui_print "Thanks to BlassGo for his magisk smali patcher script"
ui_print " "
ui_print "Finding DisableFlagSecure conflictions..."
ui_print " "


		
ui_print "Preparing for installation..."
ui_print " "

setenforce 0
ps | grep zygote | grep -v grep >/dev/null && BOOTMODE=true || BOOTMODE=false
$BOOTMODE || ps -A  | grep zygote | grep -v grep >/dev/null && BOOTMODE=true
if ! $BOOTMODE; then

ui_print "Installing..."
ui_print " "

   rm -rf "$l"
   mkdir -p "$l"
   if [ ! -d "$l" ]; then
     ui_print "Cant startup"
     exit 1
    fi
    for setup in $zcore; do
     unzip -o "$installzip" "META-INF/zbin/$setup" -p > "$TMP/$setup"
     chmod +x "$TMP/$setup" || echo "Cant set: $setup"
     if [ ! -e "$TMP/$setup" ]; then ui_print "ERROR: Cant get $setup" && exit 1; fi;
   done
   for extras in $add; do
     unzip -o "$installzip" "META-INF/zbin/$extras" -p > "$l/$extras"
     chmod +x "$l/$extras" || echo "Cant set: $setup"
     if [ ! -e "$l/$extras" ]; then ui_print "ERROR: Cant get $extras" && exit 1; fi;
   done
   if [ -e "$bb" ]; then
     for i in $($bb --list); do
       if ! ln -sf "$bb" "$l/$i" && ! $bb ln -sf "$bb" "$l/$i" && ! $bb ln -f "$bb" "$l/$i"; then
         # create script wrapper if symlinking and hardlinking failed because of restrictive selinux policy
         if ! echo "#!$bb" > "$l/$i" || ! chmod +x "$l/$i" ; then
           ui_print "ERROR: Failed to setup busybox"
           exit 1
         fi
       fi
     done
     PATH="$l:$PATH:/system/bin" $bs "$TMP/core" "$@"
     exit "$?"
   fi
else
   umask 022

   # Global vars
   export TMP=/dev/tmp
   export OUTFD="$2"
   export ZIPFILE="$3"
   export DNM=META-INF/com/google/android/magisk
   export TMPDIR=/dev/tmp
   export PERSISTDIR=/sbin/.magisk/mirror/persist
   export addons="$TMP/addons"
   export l="$TMP/ugu"
   bb="$TMP/busybox"
   bs="$TMP/bash"
ui_print "Installing..."
ui_print " "

   rm -rf "$l" 2>/dev/null
   mkdir -p "$l"
   if [ ! -d "$l" ]; then
     ui_print "Cant startup"
     exit 1
   fi
    for setup in $zcore; do
     unzip -o "$installzip" "META-INF/zbin/$setup" -p > "$TMP/$setup"
     chmod +x "$TMP/$setup" || echo "Cant set: $setup"
     if [ ! -e "$TMP/$setup" ]; then ui_print "ERROR: Cant get $setup" && exit 1; fi;
   done
   for extras in $add; do
     unzip -o "$installzip" "META-INF/zbin/$extras" -p > "$l/$extras"
     chmod +x "$l/$extras" || echo "Cant set: $setup"
     if [ ! -e "$l/$extras" ]; then ui_print "ERROR: Cant get $extras" && exit 1; fi;
   done
   if [ -e "$bb" ]; then
     for i in $($bb --list); do
       if ! ln -sf "$bb" "$l/$i" && ! $bb ln -sf "$bb" "$l/$i" && ! $bb ln -f "$bb" "$l/$i"; then
         # create script wrapper if symlinking and hardlinking failed because of restrictive selinux policy
         if ! echo "#!$bb" > "$l/$i" || ! chmod +x "$l/$i" ; then
           ui_print "ERROR: Failed to setup busybox"
           exit 1
         fi
       fi
     done
     PATH="$l:$PATH:/system/bin" $bs "$TMP/core" "$@"
     exit "$?"
   fi
fi
 
