#!/usr/bin/env bash
# LUKSUS
# Easy drive encryption script using LUKS
# by Thomas Frivold
#
# github code repository (project page):
# https://github.com/thomasfrivold/luksus
#
# please see README file for complete information
# regarding LUKSUS
# 
# LUKSUS is released under GNU GPLv2 License
# see URL below
# http://www.gnu.org/licenses/gpl-2.0.html 

###############################
######### VARIABLES ###########
###############################

if [ -r LUKSUS.variables ]; then
	source LUKSUS.variables
else
	exit 1
fi

###############################
#####    FUNCTIONS       ######
###############################


if [ -r LUKSUS.functions ]; then
	source LUKSUS.functions
else
	exit 1
fi


###############################
###### INITIAL WELCOME ########
###############################

if [ -r LUKSUS.welcome ]; then
	source LUKSUS.welcome
else
	exit 1
fi


###############################
##### CONDITIONAL CHECKS ######
###############################


if [ -r LUKSUS.checks ]; then
	source LUKSUS.checks
else
	exit 1
fi


#########################################################
#########################################################
#########################################################
#########################################################
################ BEGINNING PROGRAM ######################
#########################################################
#########################################################
#########################################################
#########################################################

# Calling functions
DISPLAYLOGO
# OSTEST
OSTEST

# PREPARE KEYFILE
CREATEKEYFILE

# LOOP DEVICE FUNCTIONS AND HOUSEKEEPING
LOOPBACKTEST
DRAGONFLYHOUSEKEEPING
FREEBSDHOUSEKEEPING

# SAFETY CHECKS
ASKUSERVERIFYDIALOG
ASKUSERVERIFYCONSOLE

LOOPBACKMETHOD
DEVICEEXISTS
DONTSHREDIFLOOPBACK

# ENCRYPTION PHASE #

# TRUECRYPT PROCESS
TRUECRYPT
TRUECRYPTKEYFILE
TRUECRYPTOPEN

# LUKS PROCESS
LUKS
LUKSKEYFILE
LUKSVERIFY
LUKSOPEN

# GELI PROCESS COMMING SOON
GELI
GELIKEYFILE
GELIOPEN
# CGD PROCESS COMMING SOON
# CGD
# CGDKEYFILE
# CGDOPEN

# BIOCTL PROCESS MIGHT BE COMMING SOON
# BIOCTL
# BIOCTLKEYFILE
# BIOCTLOPEN

# CREATING THE FILESYSTEM AND MOUNTING IT
CREATEANDMOUNTFS

# END PROGRAM
DISPLAYLOGO
echo The data below can also be found in /keys/$name.information
DISPLAYSUMMARY
WRITEINFORMATIONFILE
exit 0
