#!/bin/sh

#  CyBackup_main.sh
#
#cbk="CyBackup"
bold=$(tput bold)
normal=$(tput sgr0)
black=$(tput setf 0)
red=$(tput setf 4)
green=$(tput setf 2)
yellow=$(tput setf 3)
blue=$(tput setf 1)
magenta=$(tput setf 5)
cyan=$(tput setf 6)
white=$(tput setf 7)

exitpoint () {
if [ "$rex" = "exit" ]
    then exit
elif [ "$rex" = "restart" ]
    then su root CyBackup_main
fi
}
onetweak () {
mkdir -p /CyBackup/debs
echo "please insert the package identifer"
echo "or type help for help"
read id
if [ "$id" = "help" ]
    then    echo "you can find the package ID at the bottom of their Cydia page"
            sleep 1s
            echo "for example: net.if0x.cybackup"
            sleep 1s
            echo "you've to insert net.if0x.cybackup"
            sleep 1s
            echo "for restart hit return"
            read restart
            rex="$restart"
            exitpoint
            onetweak
else
#dpkg --get-selections | grep "$id" | cut -f1
echo y | apt-get install "$id" -d --reinstall
if [ -f /var/cache/apt/archives/"$id"*.deb ]
    then
        mv /var/cache/apt/archives/"$id"*.deb /CyBackup/debs
fi
    if [ -f  /CyBackup/debs/"$id"_*.deb ]
        then
            echo "you can find your deb in /CyBackup/debs"
            echo " "
            echo "Backup another Tweak? [y/n]"
            read ao
            rex="$ao"
            exitpoint
            if [ "$ao" = "y" ]
                then onetweak
            else
                echo "---------------done---------------"
            fi
    else
        echo "---------------${red}error${white}---------------"
        sleep 1s
        echo "something went wrong please hit return to try again"
        read restart
        rex="$restart"
        exitpoint
        onetweak
    fi
fi
}
echo " "

echo "backup all tweaks and lists [1]"
echo "backup one tweak [2]"
echo "backup package and source list [3]"
read bkpcount
rex="$bkpcount"
exitpoint
#lets have some fun now :)
if ! [ -L /CyBackup ]
    then    if [ -d /CyBackup ]
                then    mv /CyBackup/* /var/mobile/Library/CyBackup
                        rm -rf /CyBackup
            fi 
            ln -s /var/mobile/Library/CyBackup /CyBackup
fi
if [ -f /CyBackup/CyBackup_*.zip ]
    then mkdir -p /CyBackup/Backups
        mv /CyBackup/CyBackup*.zip /CyBackup/Backups
fi
grep "http://if0x.github.io/" -q /etc/apt/sources.list.d/cydia.list && official="true" || official="false"
#if [ "$official" = "false" ]
    #then grep "https://if0x.github.io/" -q /etc/apt/sources.list.d/cydia.list && official="true" || official="false"
        #if [ "$official" = "false" ]
        #mv /var/mobile/Library/CyBackup/CyBackup.dylib /Library/MobileSubstrate/DynamicLibraries/
        #mv /var/mobile/Library/CyBackup/CyBackup.plist /Library/MobileSubstrate/DynamicLibraries/
            #then    sbalert -t CyBackup -m "You're most likely using a unofficial version of CyBackup. Please add my source: http://if0x.github.io/ to your sources and install the official (free) build"
                   # exit 0
       # fi
#fi
#elif [ "$official" = "true" ]
    #then    
if [ -f /library/MobileSubstrate/DynamicLibraries/CyBackup.dylib ]
       then mv /library/MobileSubstrate/DynamicLibraries/CyBackup.dylib var/mobile/Library/CyBackup/
            echo "performing respring hit enter"
            read fuckinghelldrm
            killall SpringBoard && uicache
fi
if [ "$bkpcount" = "1" ]
    then
        echo "${bold}----------------creating Backupfolder----------------${normal}"
        date=$(date +'%Y-%m-%d')
        if ! [ -d /CyBackup/CyBackup_"$date" ]
            then mkdir /CyBackup/CyBackup_"$date"
        fi
        if ! [ -d /CyBackup/CyBackup_"$date"/lists ]
            then mkdir /CyBackup/CyBackup_"$date"/lists
        fi
        if ! [ -d /CyBackup/CyBackup_"$date"/plists ]
            then mkdir /CyBackup/CyBackup_"$date"/plists
        fi
        if ! [ -d /CyBackup/CyBackup_"$date"/debs ]
            then mkdir /CyBackup/CyBackup_"$date"/debs
        fi
        echo "${bold}----------------fetching data----------------${normal}"
        apt-get update
        cd /CyBackup/CyBackup_"$date"
        echo "${bold}----------------backup packages list----------------${normal}"
        dpkg --get-selections > /CyBackup/CyBackup_"$date"/lists/packages.list
        sed -i '/gsc/d' /CyBackup/CyBackup_"$date"/lists/packages.list
        sed -i '/pangu/d' /CyBackup/CyBackup_"$date"/lists/packages.list
        sed -i '/taig/d' /CyBackup/CyBackup_"$date"/lists/packages.list
        sed -i '/evasi0n/d' /CyBackup/CyBackup_"$date"/lists/packages.list
        sed -i '/p0sixspwn/d' /CyBackup/CyBackup_"$date"/lists/packages.list
        echo " "
        echo "${bold}----------------backup sources----------------${normal}"
        scp -r /etc/apt/sources.list.d /CyBackup/CyBackup_"$date"/lists
        echo "${bold}----------------backup preferences----------------${normal}"
        scp -r /var/mobile/Library/Preferences/*.plist /CyBackup/CyBackup_"$date"/plists
        rm -rf /CyBackup/CyBackup_"$date"/plists/com.apple.*.plist
        echo "${bold}----------------Backup tweaks----------------${normal}"
        for i in $(dpkg --get-selections | grep -v deinstall | grep -v gsc.* | grep -v io.pangu.*  | cut -f1);
            do echo y | apt-get install $i -d --reinstall
                #aptitude -y download $i;
                #apt-get install $i -d --reinstall
            done
        mv /var/cache/apt/archives/*.deb /CyBackup/CyBackup_"$date"/debs
        if [ -d /CyBackup/debs ]
            then
                echo "${bold}----------------copy backuped debs----------------${normal}"
                scp -r /CyBackup/debs/*.deb /CyBackup/CyBackup_"$date"/debs
        fi
        echo "${bold}----------------compress backup----------------${normal}"
        zip -r /CyBackup/CyBackup_"$date".zip /CyBackup/CyBackup_"$date"
        echo "${bold}----------------Backup done----------------${normal}"
        echo "${bold}----------------now cleaning up----------------${normal}"
        rm -rf /CyBackup/CyBackup_"$date"
        sleep 1s
        echo "                  .                  "
        sleep 1s
        echo "                  .                  "
        sleep 1s
        echo "                  .                  "
        echo "${bold}----------------you can find Backup in /CyBackup ----------------${normal}"
        echo "${bold}----------------done----------------${normal}"
        echo "Now transfer your Backup to Mac/linux PC? [y/n]"
        read a
        rex="$a"
        exitpoint
        if [ "$a" = "y" ]
            then su root CyBackup_trans
        elif [ "$a" = "n" ]
            then echo "${bold}---------------done---------------${normal}"
        else
            echo "${red}error${white} wrong charakter"
            exit 0
        fi
elif [ "$bkpcount" = "2" ]
    then
        echo "${bold}----------------fetching data----------------${normal}"
        apt-get update
        echo " "
        echo " "
        onetweak
elif [ "$bkpcount" = "3" ]
    then
        echo "${bold}----------------creating Backupfolder----------------${normal}"
        date=$(date +'%Y-%m-%d')
        if ! [ -d /CyBackup/CyBackup_"$date" ]
            then mkdir /CyBackup/CyBackup_"$date"
        fi
        mkdir -p /CyBackup/CyBackup_"$date"/lists
        echo "${bold}----------------fetching data----------------${normal}"
        apt-get update
        echo "${bold}----------------backup packages list----------------${normal}"
        dpkg --get-selections > /CyBackup/CyBackup_"$date"/lists/packages.list
        sed -i '/gsc/d' /CyBackup/CyBackup_"$date"/lists/packages.list
        sed -i '/pangu/d' /CyBackup/CyBackup_"$date"/lists/packages.list
        sed -i '/taig/d' /CyBackup/CyBackup_"$date"/lists/packages.list
        sed -i '/evasi0n/d' /CyBackup/CyBackup_"$date"/lists/packages.list
        sed -i '/p0sixspwn/d' /CyBackup/CyBackup_"$date"/lists/packages.list
        echo " "
        echo "${bold}----------------backup sources----------------${normal}"
        scp -r /etc/apt/sources.list.d /CyBackup/CyBackup_"$date"/lists
        echo "${bold}----------------compress backup----------------${normal}"
        zip -r /CyBackup/CyBackup_"$date".zip /CyBackup/CyBackup_"$date"
        echo "${bold}----------------Backup done----------------${normal}"
        echo "${bold}----------------now cleaning up----------------${normal}"
        rm -rf /CyBackup/CyBackup_"$date"
        #mv /CyBackup_"$date" /CyBackup
        sleep 1s
        echo "                  .                  "
        sleep 1s
        echo "                  .                  "
        sleep 1s
        echo "                  .                  "
        echo "${bold}----------------you can find Backup in /CyBackup ----------------${normal}"
        echo "${bold}----------------done----------------${normal}"
        echo "Now transfer your Backup to Mac/linux PC? [y/n]"
        read a
        rex="$a"
        exitpoint
        if [ "$a" = "y" ]
            then su root CyBackup_trans
        elif [ "$a" = "n" ]
            then echo "${bold}---------------done---------------${normal}"
        else
            echo "${red}error${white} wrong charakter"
        fi
else
        echo "${bold}${red}error${white} wrong charackter hit return to restart${normal}"
        read restart
        rex="$restart"
        exitpoint
        su root CyBackup_main
fi

#
#  Created by @if0xxx on 15.08.16.
#
