haha forgot to upload this dumb shit

This commit is contained in:
Micah Gomez 2019-10-20 00:18:08 -06:00
parent 737d34bb67
commit 7f4d4ec81a
5 changed files with 34 additions and 496 deletions

BIN
.DS_Store vendored

Binary file not shown.

View file

@ -1,466 +0,0 @@
#!/bin/bash
# _______________ ______ ______ ______
# ___ ____/__ /_____ __________ /____ /_______ _________ /__
# __ /_ __ /_ __ `/_ ___/_ __ \_ __ \ __ `/ ___/_ //_/
# _ __/ _ / / /_/ /_(__ )_ / / / /_/ / /_/ // /__ _ ,<
# /_/ /_/ \__,_/ /____/ /_/ /_//_.___/\__,_/ \___/ /_/|_|
# "Backup, restore, and share your iOS setups."
# Notes:
# ** This is a dangerous script if something goes wrong. **
# Should be using printf instead of 'echo -e'
# "set -e" should be used instead of || (at least we have some fancy debug messages)
# DO NOT USE "cp -f" WHEN REPLACING SYSTEM FILES. Its dangerous, but yet no other solution comes to mind.
DEBUG="echo" # set to "echo" to avoid running commands that edit the filesystem.
FLASHBACKDIR="/Library/FlashBack"
BACKUPNAME=$(date +%m-%d-%y-`cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 8 | head -n 1`)
BACKUPLOCATION=
STATUS=
SELECTLOCATION=
AUTOBACKUPLOCATION=
DELETEBACKUP=
DELETESELECT=
BKPVERSION="v2"
PKGVERSION="1.7"
# report(){ # report to dev example function
# echo "$foo-bar has went wrong"
# echo "Report the dev if this happens more than once"
# exit 1 ; fi ;} # Kill the script
killIfIdle(){ #Flashback checks for timeouts and kills itsself if idle for too long
if [[ $? -eq 142 ]]; then
echo -e "\n\e[0;100m[!]\e[0m \e[104mTo save battery, FlashBack has stopped itself due to lack of activity!\e[0m"
rm -r -f $FLASHBACKDIR/tmp &>/dev/null #clear temp/working files
exit 0 #kills itself
fi
}
prgmNav(){
if [[ $LASTINPUT = "QUIT" ]]; then
echo -e "\n\e[0;100m[!]\e[0m \e[104mThanks for using FlashBack!\e[0m"
rm -r -f $FLASHBACKDIR/tmp &>/dev/null #clear temp/working files
exit 1 #kills child function
fi
if [[ $LASTINPUT = "BACK" ]]; then
echo -e "\n\e[0;100m[!]\e[0m \e[104mNavigating Back...\e[0m"
rm -r -f $FLASHBACKDIR/tmp &>/dev/null #clear temp/working files
displayMenu
fi
}
tests() {
if [ ! $(id -u) = "0" ] ; then # root check
echo -e "\a\n\e[0;100m[*]\e[0m \e[1;31mMust be \e[4;37mroot\e[0m \n\e[1;31m\e[0;100m[*]\e[0m Current User is\e[0m \e[4;37m$USER\e[0m\n"
exit 1 ; fi
if [ ! -d $FLASHBACKDIR/Backups ] ; then # check for /Library/Flashback/Backups, ask the user to create it if it doesn't exist.
echo -e "\n\e[0;100m[*]\e[0m\e[1;31m Directory $FLASHBACKDIR/Backups doesn't exist!\e[0m \n\n\e[1;37mShall it be created?\e[0m"
read -rp " [y/N] " -t 15 RESPONSE # https://stackoverflow.com/questions/3231804/in-bash-how-to-add-are-you-sure-y-n-to-any-command-or-alias
LASTINPUT=$RESPONSE
prgmNav && killIfIdle
if [[ "$RESPONSE" =~ ^([yY][eE][sS]|[yY])+$ ]] # Couldn't remember the expression for this.
then # Do it.
mkdir -p $FLASHBACKDIR/Backups || exit 1
else # or Abort.
echo -e "\n\e[1;97m\"Run away! Run away!\" \e[0m\n"
exit 1; fi; fi ;}
# -----------------------\
pause(){
read -sp "`echo -e '\n\e[0;100m[!]\e[0m \e[104mPress enter to continue...\e[0m'`" -t 10 # read has a timeout function that could be used to advance the script by its own.
killIfIdle
echo -e "\n" ;
displayMenu
}
# -----------------------\
shopt -s extglob # "Shell option set extglob" https://www.linuxjournal.com/content/bash-extended-globbing
# -----------------------\
one() { # Function that backs-up the current preferences
set -f # "Disable file name generation (globbing)."
TEMPBACKUPNAME=
read -p "`echo -e '\n\e[0;100m[!]\e[0m \e[104mEnter backup name...\e[0m'` > " -t 30 TEMPBACKUPNAME # BACKUPNAME has the date
LASTINPUT=$TEMPBACKUPNAME
prgmNav && killIfIdle
TEMPBACKUPNAME=${TEMPBACKUPNAME//[^a-zA-Z0-9-.]/} # Stop bad inputs
if [[ $TEMPBACKUPNAME = "" ]] ; then
echo -e "\n\e[0;100m[!]\e[0m \e[104mBad or no input... Using $BACKUPNAME instead\e[0m"
else
TEMPBACKUPNAME=${TEMPBACKUPNAME//[^a-zA-Z0-9-.]/}
BACKUPNAME=$TEMPBACKUPNAME; fi
set +f
BACKUPLOCATION=$FLASHBACKDIR/Backups/$BACKUPNAME
mkdir -p $BACKUPLOCATION/{Preferences,SBFolder,AutoWall} || STATUS="mkdir failed"
echo -e "\n\e[0;100m[!]\e[0m \e[104mCopying to $BACKUPLOCATION\e[0m"
cp -rf "/var/mobile/Library/Preferences/"!(com.apple*|com.saurik*|ckkeyrolld|nfcd|UITextInputContextIdentifiers|.GlobalPreferences).plist $BACKUPLOCATION/Preferences/ || STATUS="cp failed" #copy all non-apple Plists to Preference folder within backup haha
cp -rf "/var/mobile/Library/Preferences/"*(*.jpg|*.png|*.gif) $BACKUPLOCATION/Preferences/ &>/dev/null #copy all images to Preference folder within backup
cp -rf /var/mobile/Library/SpringBoard/@(*Icon*|*Background*|SB*) $BACKUPLOCATION/SBFolder/ || STATUS="cp failed" #copy IconState Plist to SBFolder folder within backup
if [[ -d /var/mobile/Media/AutoWall/ ]]
then
cp -rf "/var/mobile/Media/AutoWall/"* "$BACKUPLOCATION/AutoWall/"
fi
touch $BACKUPLOCATION/$BKPVERSION
# |||||||||||||||||||||||||||||||||||
if [[ ! $STATUS = "" ]] ; then
echo -e "\a\n\e[0;100m[*]\e[0m \e[1;31mSomething went wrong: $STATUS \e[0m\n"
exit 1 ; fi # TODO MCApollo: Make a report to developer function.
# //////////////////////////////////
echo -e "\n\e[104m Success! \e[0m \n"
pause ;}
# -----------------------\
two() {
echo -e "\n\e[104m Available Backups: \e[0m \n"
for i in $(ls $FLASHBACKDIR/Backups/ || echo "#CRTL-C_to_exit#") ; do # Find and sed are not default commands- can't exclude files.
echo -e " \e[100m---->\e[0m \e[33m$i\e[0m" ; done
SELECTBACKUP=
while [[ $SELECTBACKUP = "" ]] ; do
set -f
unset RESET
read -p "`echo -e '\n\e[0;100m[!]\e[0m \e[104mSelect Backup\e[0m'` -> " -t 20 SELECTBACKUP
LASTINPUT=$SELECTBACKUP
prgmNav && killIfIdle
SELECTBACKUP=${SELECTBACKUP//[^a-zA-Z0-9-.]/}
if [[ $SELECTBACKUP = "" ]] ; then
echo -e "\n\e[0;100m[*]\e[0m \e[1;31mBad or no input!\e[0m\n"
RESET="YES"; fi
if [[ ! -d $FLASHBACKDIR/Backups/$SELECTBACKUP ]] && [[ -z ${RESET+x} ]] ; then
echo -e "\n\e[0;100m[*]\e[0m \e[1;31mNo backup with that name exists!\e[0m"
SELECTBACKUP="" ; fi
set +f ; done
SELECTLOCATION=$FLASHBACKDIR/Backups/$SELECTBACKUP
if [ -f $SELECTLOCATION/$BKPVERSION ]
then
echo -e "\n\e[0;100m[!]\e[0m \e[104mIt's recommended to make an Autobackup before you restore.\e[0m"
echo -e "\n\e[0;100m[!]\e[0m \e[104mWould you like to do that now?\e[0m"
read -rp " [y/N] " -t 15 RESPONSE # https://stackoverflow.com/questions/3231804/in-bash-how-to-add-are-you-sure-y-n-to-any-command-or-alias
if [[ "$RESPONSE" =~ ^([yY][eE][sS]|[yY])+$ ]] # Couldn't remember the expression for this.
then # Do it.
AUTOBACKUPLOCATION=$FLASHBACKDIR/Backups/AutoBackup_$(date '+%d-%m-%Y_%H:%M:%S')
echo -e "\n\e[0;100m[!]\e[0m \e[104mMoving current Preferences to $AUTOBACKUPLOCATION\e[0m"
mkdir -p $AUTOBACKUPLOCATION/{Preferences,SBFolder,AutoWall} || STATUS="mkdir failed"
cp "/var/mobile/Library/Preferences/"!(com.apple*|com.saurik*|ckkeyrolld|nfcd|UITextInputContextIdentifiers).plist $AUTOBACKUPLOCATION/Preferences || STATUS="cp failed"
cp -rf "/var/mobile/Library/Preferences/"*(*.jpg|*.png|*.gif) $BACKUPLOCATION/Preferences/ || STATUS="cp failed"
cp -r /var/mobile/Library/SpringBoard/@(*Icon*|*Background*|SB*) $AUTOBACKUPLOCATION/SBFolder/ || STATUS="cp failed"
if [[ -d /var/mobile/Media/AutoWall/ ]]
then
cp -rf "/var/mobile/Media/AutoWall/"* "$AUTOBACKUPLOCATION/AutoWall/" || STATUS="cp failed"
fi
touch $AUTOBACKUPLOCATION/$BKPVERSION
fi
echo -e "\n\e[0;100m[!]\e[0m \e[104mCopying Backup to appropriate system directories...\e[0m"
cp -r $SELECTLOCATION/Preferences/* /var/mobile/Library/Preferences/ || STATUS="cp failed"
cp -r $SELECTLOCATION/SBFolder/* /var/mobile/Library/SpringBoard/ || STATUS="cp failed"
if [[ -d $SELECTLOCATION/AutoWall/ ]]
then
cp -rf "$SELECTLOCATION/AutoWall/"* "/var/mobile/Media/AutoWall/" &>/dev/null
fi
echo -e "\n\e[0;100m[*]\e[0m \e[104mRebuilding image cache...\e[0m"
uicache || STATUS="uicache failed"
recache --no respring &>/dev/null || echo -e "\n\e[0;100m[*]\e[0m \e[104mAnemone not installed. Recache ignored.\e[0m"
killall cfprefsd #Clear settings caches - thanks to Grant/NewD
if [[ ! $STATUS = "" ]] ; then
echo -e "\a\n\e[0;100m[*]\e[0m \e[1;31mSomething went wrong: $STATUS \e[0m\n"
exit 1 ; fi # TODO: Make a report to developer function.
if [ -z ${SSH_TTY+x} ] ; then # Should we kill SpringBoard or not?
# This is NewTerm
echo -e "\a\n\e[0;100m[!]\e[0m \e[1;31mKilling SpringBoard \e[0m\n\n\e[0;100m Thank you for using Flashback! \e[0m"
killall -9 SpringBoard && exit 0 # Kill the script.
else
# This is a SSH Session
echo -e "\a\n\e[0;100m[!]\e[0m \e[1;31mKilling SpringBoard \e[0m\n\n\e[0;100m Thank you for using Flashback! \e[0m"
killall -9 SpringBoard
fi
else
echo -e "\n\e[0;100m[*]\e[0m \e[1;31mIncompatible Backup Version!\e[0m"
fi
pause ;}
three(){ # Function that deletes backups
echo -e "\n\e[104m Available Backps: \e[0m \n"
for i in $(ls $FLASHBACKDIR/Backups/ || echo "#CRTL-C_to_exit#") ; do # Find and sed are not default commands- can't exclude files.
echo -e " \e[100m---->\e[0m \e[33m$i\e[0m" ; done
DELETEBACKUP=
while [[ $DELETEBACKUP = "" ]] ; do
unset RESET
set -f
read -p "`echo -e '\n\e[0;100m[!]\e[0m \e[104mSelect Backup\e[0m'` -> " -t 30 DELETEBACKUP
LASTINPUT=$DELETEBACKUP
prgmNav && killIfIdle
DELETELOCATION=$FLASHBACKDIR/Backups/$DELETEBACKUP
#DELETEBACKUP=${DELETEBACKUP//[^a-zA-Z0-9-.]/}
if [[ $DELETEBACKUP = "" ]]; then
echo -e "\n\e[0;100m[*]\e[0m \e[1;31mBad or no input!\e[0m"
RESET="YES" ; fi
if [[ ! -d $DELETELOCATION ]] && [[ -z ${RESET+x} ]] ; then
echo -e "\n\e[0;100m[*]\e[0m \e[1;31mNo backup with that name exists!\e[0m"
DELETEBACKUP="" ; fi
set +f ; done
DELETECP=
echo -e "\n\e[0;100m[!]\e[0m\e[1;31m Are you REALLY sure you want to delete this backup?\e[0m\n \n\e[1;37mType \"FLASHBACK\" exactly the way it is if you're sure!\e[0m\n"
read -p "`echo -e ' \e[0;100m---->\e[0m \e[1;31m'` " -t 45 DELETECP
LASTINPUT=$DELETECP
prgmNav && killIfIdle
if [[ $DELETECP = "FLASHBACK" ]]
then
echo -e "\n\e[0;100m[!]\e[0m \e[104mDeleting $DELETELOCATION\e[0m"
rm -r $DELETELOCATION
else
echo -e "\n\e[0;100m[!]\e[0m \e[104mNot deleting $DELETELOCATION\e[0m"; fi
pause ;}
four(){ # Function that deletes autobackups made in function two
DELETEAB=
echo -e "\n\e[0;100m[!]\e[0m\e[1;31m Are you REALLY sure you want to delete all AutoBackups?\e[0m\n \n\e[1;37mType \"FLASHBACK\" exactly the way it is if you're sure!\e[0m\n"
read -p "`echo -e ' \e[0;100m---->\e[0m \e[1;31m'` " -t 45 DELETEAB
LASTINPUT=$DELETEAB
prgmNav && killIfIdle
if [[ $DELETEAB = "FLASHBACK" ]]
then
echo -e "\n\e[0;100m[!]\e[0m \e[104mDeleting all autobackups...\e[0m"
rm -r $FLASHBACKDIR/Backups/AutoBackup*
else
echo -e "\n\e[0;100m[!]\e[0m \e[104mExiting...\e[0m"; fi
pause ;}
five(){ # I'm not going to painstakingly fix this. You gotta do that yourself. - Apollo
if [ ! -d /var/mobile/Documents/FlashBackDEBs/ ] ; then # check for /Library/Flashback/Backups, ask the user to create it if it doesn't exist.
echo -e "\n\e[0;100m[*]\e[0m\e[1;31m Directory /var/mobile/Documents/FlashBackDEBs/ doesn't exist!\e[0m \n\n\e[1;37mShall it be created?\e[0m"
read -rp " [y/N] " -t 15 RESPONSE # https://stackoverflow.com/questions/3231804/in-bash-how-to-add-are-you-sure-y-n-to-any-command-or-alias
LASTINPUT=$RESPONSE
prgmNav && killIfIdle
if [[ "$RESPONSE" =~ ^([yY][eE][sS]|[yY])+$ ]] # Couldn't remember the expression for this.
then # Do it.
mkdir -p /var/mobile/Documents/FlashBackDEBs/ || exit 1
else # or Abort.
echo -e "\n\e[1;97m\"Run away! Run away!\" \e[0m\n"
exit 1; fi; fi ;
echo -e "\n\e[104m Available Backps: \e[0m \n"
for i in $(ls $FLASHBACKDIR/Backups/ || echo "#CRTL-C_to_exit#") ; do # Find and sed are not default commands- can't exclude files.
echo -e " \e[100m---->\e[0m \e[33m$i\e[0m" ; done
read -p "`echo -e '\n\e[0;100m[!]\e[0m \e[104mChoose a Backup\e[0m'` > " -t 10 PACKAGEBACKUP
LASTINPUT=$PACKAGEBACKUP
prgmNav && killIfIdle
read -p "`echo -e '\n\e[0;100m[!]\e[0m \e[104mEnter Your UserName\e[0m'` > " -t 20 USERNAME
LASTINPUT=$USERNAME
prgmNav && killIfIdle
read -p "`echo -e '\n\e[0;100m[!]\e[0m \e[104mEnter A Short Description\e[0m'` > " -t 20 USERDESC
LASTINPUT=$USERDESC
prgmNav && killIfIdle
# TODO: MCApollo
# Clean the input, wildcard (*) makes it game over.
echo -e "\n\e[0;100m~~~~~~~~~~~~~~~~~~~~~~~~~~~\e[0m\n\nWould you like to specify dependancies?\nIf so, it's recommended to use iCleaner Pro to clean up unused preference files before you start.\n\n\e[0;100mAutomatic:\e[0m You select which packages are dependancies, for a streamlined installation.\nThis is highly recommended if you intend to host your setup on a repo, or share with other users.\n\n\e[0;100mManual:\e[0m Dependancies are not set for users, they must install the tweaks themselves.\nThis is recommended if you plan to use this setup personally.\n\n\e[0;100m~~~~~~~~~~~~~~~~~~~~~~~~~~~\e[0m"
read -p "`echo -e '\n\e[0;100m[!]\e[0m \e[104mWould you like to proceed in automatic mode? (yes/no)\e[0m'` > " -t 15 AUTOMODE
LASTINPUT=$AUTOMODE
prgmNav && killIfIdle
if [[ $AUTOMODE = "yes" ]]
then
read -p "`echo -e '\n\e[0;100m~~~~~~~~~~~~~~~~~~~~~~~~~~~\e[0m\n\n\e[0;100m[!]\e[0m Staring automatic mode. A list of installed packages will appear in a moment.\nUse that list to select which packages are dependancies. \e[104mPress enter to proceed.\e[0m'` > " -t 20
killIfIdle
apt-mark auto "gsc*" &> /dev/null || STATUS="apt-mark failed"
# For some reason, apt likes to seg fault. Maybe due to too much memory is being used?
echo -e "\n\e[0;100m~~~~~~~~~~~~~~~~~~~~~~~~~~~\e[0m"
apt-mark showmanual || STATUS="SEG FAULT"
# TODO: MCApollo
# Copy paste the STATUS check and exit if seg fault.
# Or better yet, the exit code is 139 if it's a seg fault.
# Use the exit code to see if apt seg fault; exit or try again once.
read -p "`echo -e '\e[0;100m~~~~~~~~~~~~~~~~~~~~~~~~~~~~\e[0m\n\e[0;100m[!]\e[0m \e[104mPlease copy all desired dependancies from above EXACTLY as they are displayed. Separate them with a comma and a space (, )\e[0m'` > " -t 600 USERSETDEPENDENCIES
LASTINPUT=$USERSETDEPENDENCIES
prgmNav && killIfIdle
fi
mkdir $FLASHBACKDIR/tmp
WORKINGDIR=$FLASHBACKDIR/tmp/$PACKAGEBACKUP
mkdir $WORKINGDIR
mkdir $WORKINGDIR/DEBIAN
mkdir -p $WORKINGDIR$FLASHBACKDIR/Backups/$PACKAGEBACKUP # Correct answer; you're hard-coding /Library/FlashBack
cp -r $FLASHBACKDIR"/Backups/"$PACKAGEBACKUP/!(control*) $WORKINGDIR/Library/FlashBack/Backups/$PACKAGEBACKUP/
if [[ $autoMode = "yes" ]]
then
cat > $WORKINGDIR/DEBIAN/control <<EOF
Package: com.$USERNAME.$PACKAGEBACKUP
Name: $PACKAGEBACKUP
Depends: com.mpg13.FlashBack, $USERSETDEPENDENCIES
architecture: iphoneos-arm
Version:$PKGVERSION
Description: $USERDESC
Maintainer: $USERNAME
Author: $USERNAME
Section: Addons (FlashBack)
EOF
else
cat > $WORKINGDIR/DEBIAN/control <<EOF
Package: com.$USERNAME.$PACKAGEBACKUP
Name: $PACKAGEBACKUP
Depends: com.mpg13.FlashBack
architecture: iphoneos-arm
Version:$PKGVERSION
Description: $USERDESC
Maintainer: $USERNAME
Author: $USERNAME
Section: Addons (FlashBack)
EOF
fi
dpkg-deb -Zgzip -b $WORKINGDIR &> /dev/null
echo -e "\e[0;100m[!]\e[0m Creating DEB..."
cp $WORKINGDIR.deb "/var/mobile/Documents/FlashBackDEBs/"
rm -r -f $FLASHBACKDIR/tmp
echo -e "\n\e[0;100m[!]\e[0mThe DEB can be found in /var/mobile/Documents/FlashBackDEBs/com.$USERNAME.$PACKAGEBACKUP.deb"
# TODO MCApollo
# Use dpkg-deb or dpkg to make sure it's a vaild package. (Maybe extract it?)
pause
}
six(){
#Provide Users a way to make any backup compatible with Latest version
echo -e "\n\e[91m [!] There is a chance\n that backing up an \n old backup can cause\n unwanted results. If \n you experience issues\n restoring to an updated\n backup, use the most\n recent autobackup to\n revert changes! \e[0m \n"
echo -e "\n\e[91m If you experience no\n issues after restoring,\n please overwrite the\n updated backup to ensure\n the best experience! \e[0m \n"
echo -e "\n\e[104m Available Backups: \e[0m \n"
for i in $(ls $FLASHBACKDIR/Backups/ || echo "#CRTL-C_to_exit#") ; do # Find and sed are not default commands- can't exclude files.
echo -e " \e[100m---->\e[0m \e[33m$i\e[0m" ; done
UPDATEBACKUP=
while [[ $UPDATEBACKUP = "" ]] ; do
set -f
unset RESET
read -p "`echo -e '\n\e[0;100m[!]\e[0m \e[104mSelect Backup\e[0m'` -> " -t 20 UPDATEBACKUP
prgmNav && killIfIdle
UPDATEBACKUP=${UPDATEBACKUP//[^a-zA-Z0-9-.]/}
if [[ $UPDATEBACKUP = "" ]] ; then
echo -e "\n\e[0;100m[*]\e[0m \e[1;31mBad or no input!\e[0m\n"
RESET="YES"; fi
if [[ ! -d $FLASHBACKDIR/Backups/$UPDATEBACKUP ]] && [[ -z ${RESET+x} ]] ; then
echo -e "\n\e[0;100m[*]\e[0m \e[1;31mNo backup with that name exists!\e[0m"
UPDATEBACKUP="" ; fi
set +f ; done
UPDATELOCATION=$FLASHBACKDIR/Backups/$UPDATEBACKUP
touch $UPDATELOCATION/$BKPVERSION
if [ -f $UPDATELOCATION/$BKPVERSION ]
then
echo -e "\n\e[0;100m[*]\e[0m \e[104mSuccess!\e[0m"
echo -e "\n\e[0;100m[*]\e[0m \e[104mYour Backup has been updated to work with this version of FlashBack!\e[0m"
fi
pause
}
readme(){
echo -e "\n\e[1;31m When inputting backup\n names,use plaintext\n and numbers ONLY!\n Special characters\n may result in dangerous\n side effects!\e[0m\n"
echo -e "\n\e[1;31m PLEASE kill FlashBack\n Properly! While there\n are failsafes in place,\n it is still possible\n for backgrounding to\n fall between the cracks!\e[0m\n"
echo -e "\n\e[1;31m To go back to the menu\n from any screen, just\n type 'BACK'.\n To exit FlashBack from\n any screen, type 'QUIT'\n"
echo -e "\n\e[1;31m Please make sure you\n watch the video on how\n to use FlashBack in\n the Cydia depiction\n if you're lost!\n"
echo -e "\n\e[1;31m If FlashBack has\n helped you, or if you\n appreciate my work,\n consider donating with\n the link in the cydia\n depiction!\n"
pause
}
# TODO Idea: MCApollo
# Get the amount of $COLUMNS and $LINES, scale the UI base on that information
# For example, (( ~ X $COLUMNS)) into a VAR and then echo $VAR instead of hard-coding "~~~~~~~~~~~"
show_menus() {
clear
echo -e " _____________________ \n | ___ ___ |\n | | __| | _ ) |\n | | _| | _ \ |\n | |_| LASH |___/ACK |\n |_____________________|"
echo -e "\n\e[1;32m Please read the FAQ\n in the Cydia package\n depiction!\n"
echo -e "\e[0;100m[1.]\e[0m \e[33mBackup Current Preferences\e[0m"
echo -e "\e[0;100m[2.]\e[0m \e[33mRestore Backup\e[0m"
echo -e "\e[0;100m[3.]\e[0m \e[33mDelete Backups\e[0m"
echo -e "\e[0;100m[4.]\e[0m \e[33mDelete AutoBackups\e[0m"
echo -e "\e[0;100m[5.]\e[0m \e[33mPackage Backup to DEB\e[0m"
echo -e "\e[0;100m[6.]\e[0m \e[33mUpdate Old Backup\e[0m"
echo -e "\e[0;100m[R.]\e[0m \e[91mREADME\e[0m"
echo -e "\e[0;100m[Q.]\e[0m \e[91mQuit\e[0m"
}
read_options(){
local choice
read -p "`echo -e '\e[0;100m[!]\e[0m \e[104mEnter choice [1 - 6]\e[0m'` > " -t 15 choice
killIfIdle
case $choice in
1) one ;;
2) two ;;
3) three ;;
4) four ;;
5) five;;
6) six;;
R) readme;;
Q) exit 0;;
*) echo "Invalid Selection!" && sleep 2
esac
}
displayMenu(){
clear
cp &>/dev/null
shopt -s extglob
show_menus
echo " "
read_options
}
tests
while true
do
displayMenu
done

View file

@ -6,7 +6,7 @@ shopt -s extglob # "Shell option set extglob" https://www.linuxjournal.com/conte
set -f # "Disable file name generation (globbing)."
FLASHBACKDIR="/Library/FlashBack"
PKGVERSION="3.1"
PKGVERSION="3.4"
PACKAGEBACKUP=$1
if [ ! -d /var/mobile/Documents/FlashBackDEBs/ ]
@ -19,7 +19,7 @@ apt-mark manual "*.*.*" &> /dev/null
apt-mark showmanual > $FLASHBACKDIR/packages.txt
tr '\n' ', ' < $FLASHBACKDIR/packages.txt > $FLASHBACKDIR/packagesformatted.txt
truncate -s-1 $FLASHBACKDIR/packagesformatted.txt
#truncate -s-1 $FLASHBACKDIR/packagesformatted.txt
USERSETDEPENDENCIES=`cat $FLASHBACKDIR/packagesformatted.txt`
mkdir $FLASHBACKDIR/tmp
@ -28,13 +28,12 @@ mkdir $WORKINGDIR
mkdir $WORKINGDIR/DEBIAN
mkdir -p $WORKINGDIR$FLASHBACKDIR/Backups/$PACKAGEBACKUP
cp -r $FLASHBACKDIR"/Backups/"$PACKAGEBACKUP/ $WORKINGDIR$FLASHBACKDIR/Backups/$PACKAGEBACKUP
cp -r $FLASHBACKDIR/Backups/$PACKAGEBACKUP/ $WORKINGDIR$FLASHBACKDIR/Backups/$PACKAGEBACKUP
cat > $WORKINGDIR/DEBIAN/control <<EOF
Package: com.FlashBack.$PACKAGEBACKUP
Name: $PACKAGEBACKUP
Depends: $USERSETDEPENDENCIES
Depends: $USERSETDEPENDENCIES system-cmds
architecture: iphoneos-arm
Version:$PKGVERSION
Description: $USERDESC

30
_FlashBackRestore Executable file
View file

@ -0,0 +1,30 @@
#!/bin/bash
shopt -s extglob # "Shell option set extglob" https://www.linuxjournal.com/content/bash-extended-globbing
set -f # "Disable file name generation (globbing)."
SELECTBACKUP=$1
set +f
FLASHBACKDIR="/Library/FlashBack"
SELECTLOCATION=$FLASHBACKDIR/Backups/$SELECTBACKUP
# COPY BACKUP TO SYSTEM
cp -r $SELECTLOCATION/Preferences/* /var/mobile/Library/Preferences/ || STATUS="cp failed"
cp -r $SELECTLOCATION/SBFolder/* /var/mobile/Library/SpringBoard/ || STATUS="cp failed"
if [[ -d $SELECTLOCATION/AutoWall/ ]]
then
rm -rf "/var/mobile/Media/AutoWall/"*
cp -rf "$SELECTLOCATION/AutoWall/"* "/var/mobile/Media/AutoWall/" &>/dev/null
fi
# clear caches and respring
uicache
recache --no respring &>/dev/null
killall cfprefsd #Clear settings caches - thanks to Grant/NewD
sbreload && exit 0 || killall -9 SpringBoard && exit 0 # Kill the script.
exit 0

View file

@ -1,25 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>platform-application</key>
<true/>
<key>com.apple.private.security.no-container</key>
<true/>
<key>com.apple.private.security.container-required</key>
<false/>
<key>dynamic-codesigning</key>
<true/>
<key>application-identifier</key>
<string>PRBH2T6668.com.mpg13.FlashBack</string>
<key>com.apple.developer.team-identifier</key>
<string>PRBH2T6668</string>
<key>get-task-allow</key>
<true/>
<key>keychain-access-groups</key>
<array>
<string>PRBH2T6668.com.mpg13.FlashBack</string>
</array>
</dict>
</plist>