aboutsummaryrefslogtreecommitdiffstats
path: root/bin/cs
blob: 59aa086f2fecd3e0de93295f32d1c49f6ec2c112 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#! /usr/bin/env bash

set -euo pipefail

storage="/dev/disk/by-uuid/3f781aab-24b5-4de0-8632-b9df922d6433"
music="/dev/disk/by-uuid/e0b19c7d-9e90-4117-aea1-7e4b321d9d5a"
photos="/dev/disk/by-uuid/b3c5a842-474b-4c2f-a246-abebe1da3450"
backup="/dev/disk/by-uuid/e003337a-33e9-4691-bc57-e77243e55de5"
video="/dev/disk/by-uuid/5ac700be-e168-495b-b133-42064fa101e4"
media="/dev/disk/by-uuid/e5adbc14-732e-43e8-b6e1-febdfe6d1d3c"
mediabackup="/dev/disk/by-uuid/4467b7af-ab65-4fb7-9798-00d0ee9b4002"
videobackup="/dev/disk/by-uuid/80d50a4c-a04e-432e-8265-9a11a4386612"


function open_cryptdevice() {
  if [ -L "$1" ]; then
    /usr/bin/sudo /usr/bin/cryptsetup luksOpen $1 $2
  else
    echo "Error: Device $2 ($1) is not available."
    return 1
  fi
}

function close_cryptdevice() {
  /usr/bin/sudo /usr/bin/cryptsetup luksClose $1
}

function mount_cryptdevice() {
  if [[ -e "/dev/mapper/$1" ]]; then
    sudo mount /dev/mapper/$1 /mnt/$1
    if [ $1 = "media" ]; then
      sudo mount --bind /mnt/media/music /mnt/music
      sudo mount --bind /mnt/media/photos /mnt/photos
      if [ ! -h ~/.cache/shotwell ]; then
        ln -s /mnt/photos/shotwell/ ~/.cache/shotwell
      fi
    fi
  else
    echo "Error: Device /dev/mapper/$1 is not available."
    return 1
  fi
}

function unmount_cryptdevice() {
  if [ $1 = "media" ]; then
    /usr/bin/sudo /usr/bin/umount /mnt/{music,photos}
  fi
  /usr/bin/sudo /usr/bin/umount /mnt/$1
}

case $1 in
  "open")
    case $2 in
      "storage")
        open_cryptdevice $storage $2
        ;;
      "music")
        open_cryptdevice $music $2
        ;;
      "photos")
        open_cryptdevice $photos $2
        ;;
      "backup")
        open_cryptdevice $backup $2
        ;;
      "video")
        open_cryptdevice $video $2
        ;;
      "videobackup")
        open_cryptdevice $videobackup $2
        ;;
      "media")
        open_cryptdevice $media $2
        ;;
      "mediabackup")
        open_cryptdevice $mediabackup $2
        ;;
    esac
    mount_cryptdevice $2
    ;;
  "close")
    unmount_cryptdevice $2
    close_cryptdevice $2
    ;;
esac