#!/bin/bash

#first get su
sudo ls > /dev/null
if [ $? -ne 0 ]
then
   echo "You need root-privileges to go on! So type your password correct!"
   exit 2
fi

#check if device is connected
cat /proc/partitions | grep 488386584 > /dev/null
if [ $? -ne 0 ]
then
   echo "Device not connected!"
   exit 1
fi

printf "checking device: "
dev=$(cat /proc/partitions | grep 488386584 | awk '{print $4}')
for i in $dev
do
   if [ $(udevinfo --query=all --name=/dev/$i | grep "ID_SERIAL=" | awk -F= '{print $2}') = "WD_5000AAK_External_574341505734313138393536-0:0" ]
   then
      dev=$(echo /dev/$i)
   fi
done
partition=$(echo $(echo $dev)7)
luksMapper=""
mapName="externe"
mount1="/media/usb-1"
mount2="/media/usb-2"
mount3="/media/usb-3"

printf "found at $dev\n"

printf "checking mappings: "
#check for cryptmount
for mapper in $(ls /dev/mapper/)
do
   devFound="false"
   sudo cryptsetup status $mapper > /dev/null 2>&1
   if [ $? -eq 0 -a $devFound=false ]
   then
      actDev=$(sudo cryptsetup status $mapper | grep device | awk '{print $2}')
      if [ "$actDev" = "$partition" ]
      then
         devFound="true"
         luksMapper=$mapper
      fi
   fi
done

#get all mounts to unmount
mountDev=""

if [ "$luksMapper" = "" ]
then
   printf "no mapping found\n"
else
   mountDev=$(echo $mountDev $(mount | grep /dev/mapper/$luksMapper | awk '{print $3}'))
   printf "found at /dev/mapper/$luksMapper\n"
fi

printf "checking mounts: "
for mounts in $(mount | grep $dev | awk '{print $3}')
do
   mountDev=$(echo $mountDev $mounts)
done

if [ "$mountDev" = "" ]
then
   printf "nothing found\n"
else
   printf "found at $mountDev\n"
   printf "unmounting: "
   for mounts in $mountDev
   do
      sudo umount $mounts
   echo > /dev/null
   done
   printf "done\n"
fi

if [ "$luksMapper" = "" ]
then
   echo > /dev/null
else
   printf "closing mapping: "
   sudo cryptsetup luksClose $luksMapper
   printf "done\n"
fi

printf "opening mapping at /dev/mapper/$mapName: \n"
sudo cryptsetup luksOpen $partition $mapName > /dev/null 2>&1
if [ $? -ne 0 ]
then
   printf "\n\n"
   echo "error while opening the mapping!"
   exit 2
else
   echo "mapping opened successfully"
fi

echo "checking for mount directories: "

printf "checking $mount1: "
if [ ! -d "$mount1" ]
then
   printf "creating\n"
   sudo mkdir "$mount1"
else
   printf "ok\n"
fi
printf "checking $mount2: "
if [ ! -d "$mount2" ]
then
   printf "creating\n"
   sudo mkdir "$mount2"
else
   printf "ok\n"
fi
printf "checking $mount3: "
if [ ! -d "$mount3" ]
then
   printf "creating\n"
   sudo mkdir "$mount3"
else
   printf "ok\n"
fi

echo "mounting devices: "
sudo mount -t ntfs-3g -o rw,uid=1000,gid=1000 $(echo $dev)5 $mount1
sudo mount -t vfat -o rw,uid=1000,gid=1000 $(echo $dev)6 $mount2
sudo mount -t xfs /dev/mapper/$mapName $mount3

echo "device mountet successfully and can now be used"
exit 0

