# SkyBoot Program by arfans.id

################################## DO NOT CHANGE ANY TEXT BELOW HERE !! ##################################
################################ JANGAN MENGUBAH TULISAN APAPUN DISINI !! ################################

#USER=AHMAD SOFYAN (OASE)
#SET USBDRIVE=1
#SET USBDRIVEDESC=SanDiskCruzer Spark (58.7 GB, E:)
#SET USBDRIVESIZE=63065554944
#SET USBDRIVELETTER=E:
#SERIAL NUMBER=4C530000281213109404

set color_normal=light-gray/black
set gray="set color_normal=light-gray/black"
set green="set color_normal=green/black"
set red="set color_normal=red/black"
set yellow="set color_normal=yellow/black"
# if MBR boot - SkyBoot drive should always be hd0
if [ "${bootdev}" = "hd127" ]; then set bootdev=hd0; fi
if [ "${bootdev}" = "cd0" ]; then set bootdev=hd0; fi
if [ "${grub_platform}" == "pc" ]; then set bootdev=hd0; fi

if [ -f (${user})/boot/legacy.cpp ] ; then
set LOWERDATE=20210101
set UPPERDATE=20210102
unset now;date -s now;regexp -s sdate '(........)' "$now"
if [ "${sdate}" -le "${LOWERDATE}" ]; then
	${red}
	echo "ERROR: SKYBOOT TRIAL HAS EXPIRED! PLEASE CONTACT ADMIN ..."; sleep 3 ;
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	${gray}
	echo "                                                 -=[[ BEST OF MULTIBOOT ]]=-"
	echo "                                     ┌─────────────────────────────────────────────────┐"
	echo "                                          _____  __           ____                 __   "
	echo "                                         / ___/ / /__ __  __ / __ ) ____   ____   / /_  "
	echo "                                         (__   / //_// / / // __  |/ __ ) / __ ) / __/  "
	echo "                                        ___/ // ,<  / /_/ // /_/ // /_/ // /_/ // /_    "
	echo "                                       /____//_/|_| (__, //_____/ (____/ (____/ (__/    "
	echo "                                                   /____/                               "
	echo
	echo "                                     └─────────────────────────────────────────────────┘"
	echo "                                                    .:: WWW.SKYBOOT.ID ::."
	echo
	echo
	echo
	${red}
	echo -n "                                               system reboot in 5 seconds "; sleep 1;echo -n "."; sleep 1;echo -n "."; sleep 1;echo -n "."; sleep 1;echo -n "."; sleep 1;echo -n "."; sleep 1 ; reboot ;
fi
if [ "${sdate}" -ge "${UPPERDATE}" ]; then
	${red}
	echo "ERROR: SKYBOOT TRIAL HAS EXPIRED! PLEASE CONTACT ADMIN ..."; sleep 3 ;
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	${gray}
	echo "                                                 -=[[ BEST OF MULTIBOOT ]]=-"
	echo "                                     ┌─────────────────────────────────────────────────┐"
	echo "                                          _____  __           ____                 __   "
	echo "                                         / ___/ / /__ __  __ / __ ) ____   ____   / /_  "
	echo "                                         (__   / //_// / / // __  |/ __ ) / __ ) / __/  "
	echo "                                        ___/ // ,<  / /_/ // /_/ // /_/ // /_/ // /_    "
	echo "                                       /____//_/|_| (__, //_____/ (____/ (____/ (__/    "
	echo "                                                   /____/                               "
	echo
	echo "                                     └─────────────────────────────────────────────────┘"
	echo "                                                    .:: WWW.SKYBOOT.ID ::."
	echo
	echo
	echo
	${red}
	echo -n "                                               system reboot in 5 seconds "; sleep 1;echo -n "."; sleep 1;echo -n "."; sleep 1;echo -n "."; sleep 1;echo -n "."; sleep 1;echo -n "."; sleep 1 ; reboot ;
fi
unset now;unset UPPERDATE;unset sdate;unset LOWERDATE
fi

set LOWERDATE=10210101
set UPPERDATE=21210101
unset now;date -s now;regexp -s sdate '(........)' "$now"
if [ "${sdate}" -le "${LOWERDATE}" ]; then
	${red}
	echo "ERROR: INVALID DATE SETTING! PLEASE SET THE DATE CORRECTLY ..."; sleep 3 ;
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	${gray}
	echo "                                                 -=[[ BEST OF MULTIBOOT ]]=-"
	echo "                                     ┌─────────────────────────────────────────────────┐"
	echo "                                          _____  __           ____                 __   "
	echo "                                         / ___/ / /__ __  __ / __ ) ____   ____   / /_  "
	echo "                                         (__   / //_// / / // __  |/ __ ) / __ ) / __/  "
	echo "                                        ___/ // ,<  / /_/ // /_/ // /_/ // /_/ // /_    "
	echo "                                       /____//_/|_| (__, //_____/ (____/ (____/ (__/    "
	echo "                                                   /____/                               "
	echo
	echo "                                     └─────────────────────────────────────────────────┘"
	echo "                                                    .:: WWW.SKYBOOT.ID ::."
	echo
	echo
	echo
	${red}
	echo -n "                                               system reboot in 5 seconds "; sleep 1;echo -n "."; sleep 1;echo -n "."; sleep 1;echo -n "."; sleep 1;echo -n "."; sleep 1;echo -n "."; sleep 1 ; reboot ;
fi
if [ "${sdate}" -ge "${UPPERDATE}" ]; then
	mount ${user} 9
	rename 9:/boot/legacy.asm 9:/boot/legacy.cpp
	umount 9
	${red}
	echo "ERROR: SKYBOOT TRIAL HAS EXPIRED! PLEASE CONTACT ADMIN ..."; sleep 3 ;
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	${gray}
	echo "                                                 -=[[ BEST OF MULTIBOOT ]]=-"
	echo "                                     ┌─────────────────────────────────────────────────┐"
	echo "                                          _____  __           ____                 __   "
	echo "                                         / ___/ / /__ __  __ / __ ) ____   ____   / /_  "
	echo "                                         (__   / //_// / / // __  |/ __ ) / __ ) / __/  "
	echo "                                        ___/ // ,<  / /_/ // /_/ // /_/ // /_/ // /_    "
	echo "                                       /____//_/|_| (__, //_____/ (____/ (____/ (__/    "
	echo "                                                   /____/                               "
	echo
	echo "                                     └─────────────────────────────────────────────────┘"
	echo "                                                    .:: WWW.SKYBOOT.ID ::."
	echo
	echo
	echo
	${red}
	echo -n "                                               system reboot in 5 seconds "; sleep 1;echo -n "."; sleep 1;echo -n "."; sleep 1;echo -n "."; sleep 1;echo -n "."; sleep 1;echo -n "."; sleep 1 ; reboot ;
fi
unset now;unset UPPERDATE;unset sdate;unset LOWERDATE 

stat -s DSIZE -z (${bootdev}) -q
if  [ ! "${DSIZE}" == "63065554944" ]; then
	${red}
	echo "WARNING: DETECTED UNAUTHORIZED SKYBOOT INSTALLATION !!"; sleep 3 ;
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	${gray}
	echo "                                                 -=[[ BEST OF MULTIBOOT ]]=-"
	echo "                                     ┌─────────────────────────────────────────────────┐"
	echo "                                          _____  __           ____                 __   "
	echo "                                         / ___/ / /__ __  __ / __ ) ____   ____   / /_  "
	echo "                                         (__   / //_// / / // __  |/ __ ) / __ ) / __/  "
	echo "                                        ___/ // ,<  / /_/ // /_/ // /_/ // /_/ // /_    "
	echo "                                       /____//_/|_| (__, //_____/ (____/ (____/ (__/    "
	echo "                                                   /____/                               "
	echo
	echo "                                     └─────────────────────────────────────────────────┘"
	echo "                                                    .:: WWW.SKYBOOT.ID ::."
	echo
	echo
	echo
	${red}
	echo -n "                                               system reboot in 5 seconds "; sleep 1;echo -n "."; sleep 1;echo -n "."; sleep 1;echo -n "."; sleep 1;echo -n "."; sleep 1;echo -n "."; sleep 1 ; reboot ;
fi
unset DSIZE

# DEFINE VARIABLES FOR MBR\EFI and 32/64-bit (note: Some systems may be UEFI32+CPU64 = UEFI32 BIOS but 64-bit CPU)
set CPU64=false; set CPU32=false; set MBR=false; set EFI=false; set EFI64=false; set EFI32=false; set MBR32=false; set MBR64=false
set CPU32=true
if cpuid -l; then set CPU64=true; fi
if [ "${grub_cpu}" == "x86_64" ]; then set CPU64=true; fi
if $CPU64 == true ; then set CPU32=false ; fi
if [ "${grub_platform}" == "pc" ]; then set MBR=true; fi
if [ "${grub_platform}" == "efi" ]; then set EFI=true; fi
if [ "${grub_cpu}" == "x86_64" and $EFI = true ]; then set EFI64=true; fi
if [ "${grub_cpu}" == "i386" and $EFI = true ]; then set EFI32=true; fi
if [ $CPU64 = true and $MBR = true ]; then set MBR64=true; fi
if [ $CPU32 = true and $MBR = true ]; then set MBR32=true; fi
export MBR EFI MBR32 MBR64 EFI32 EFI64 CPU32 CPU64

# Check we have booted as drive 0 - most systems should but some UEFI systems don't boot as hd0!
if  [ ! "${bootdev}" = "hd0" ]; then
	${yellow}
	echo "WARNING: SkyBoot drive:${bootdev} (should be hd0)"
	echo "Please update BIOS or change boot settings !!"
	echo
	ls
	echo
	sleep 5
fi

# Check for extended partition
if [ -d (${bootdev},5) ]; then echo WARNING: Logical partition(s) detected on ${bootdev}!;fi
if [ -f (${bootdev},1)/boot/grub/grub.cfg ] ; then
	${red}
	echo "ERROR: FILE SYSTEM HARUS BERADA DI PARTISI 2 (FAT32) !!"; sleep 3 ;
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	echo
	${gray}
	echo "                                                 -=[[ BEST OF MULTIBOOT ]]=-"
	echo "                                     ┌─────────────────────────────────────────────────┐"
	echo "                                          _____  __           ____                 __   "
	echo "                                         / ___/ / /__ __  __ / __ ) ____   ____   / /_  "
	echo "                                         (__   / //_// / / // __  |/ __ ) / __ ) / __/  "
	echo "                                        ___/ // ,<  / /_/ // /_/ // /_/ // /_/ // /_    "
	echo "                                       /____//_/|_| (__, //_____/ (____/ (____/ (__/    "
	echo "                                                   /____/                               "
	echo
	echo "                                     └─────────────────────────────────────────────────┘"
	echo "                                                    .:: WWW.SKYBOOT.ID ::."
	echo
	echo
	echo
	${red}
	echo -n "                                               system reboot in 5 seconds "; sleep 1;echo -n "."; sleep 1;echo -n "."; sleep 1;echo -n "."; sleep 1;echo -n "."; sleep 1;echo -n "."; sleep 1 ; reboot ;
fi

# if type 0 in MBR then clear the table entry
set x=NONE
hexdump -q -s 0x1e2 -n 1 (${bootdev})0+1 x
if [ "$x" = "\x00" ] ; then partnew -t 0 -s 0 -l 0 (${bootdev}) 3; fi
set x=NONE
hexdump -q -s 0x1f2 -n 1 (${bootdev})0+1 x
if [ "$x" = "\x00" ] ; then partnew -t 0 -s 0 -l 0 (${bootdev}) 4; fi
unset x

#run .cfg and some other files immediately
grubfm_set --boot 1

#hide non-bootable files
grubfm_set --hide 1

if [ -f (${bootdev},1)/config.ini ] ; then 
	configfile (${bootdev},1)/config.ini
  else
	configfile ${prefix}/SkyThemes/standard.sh
fi