tmakehook - coffin - secure lan file storage on a device
 (HTM) git clone git://parazyd.org/coffin.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Submodules
 (DIR) README
 (DIR) LICENSE
       ---
       tmakehook (5290B)
       ---
            1 #!/usr/bin/env bash
            2 #
            3 # Copyright (c) 2016 Dyne.org Foundation
            4 # coffin is written and maintained by Ivan J. <parazyd@dyne.org>
            5 #
            6 # This file is part of coffin
            7 #
            8 # This source code is free software: you can redistribute it and/or modify
            9 # it under the terms of the GNU General Public License as published by
           10 # the Free Software Foundation, either version 3 of the License, or
           11 # (at your option) any later version.
           12 #
           13 # This software is distributed in the hope that it will be useful,
           14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
           15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
           16 # GNU General Public License for more details.
           17 #
           18 # You should have received a copy of the GNU General Public License
           19 # along with this source code. If not, see <http://www.gnu.org/licenses/>.
           20 
           21 hooks="hook"
           22 davfile="davpasswd"
           23 ttab="ttab"
           24 system=$(uname -o)
           25 
           26 gendav() {
           27         if [[ $system == "GNU/Linux" ]]; then
           28                 daventry=$(echo -n "${undertaker}:WebDAV:" \
           29                         && echo -n "${undertaker}:WebDAV:${davpass}" \
           30                         | md5sum \
           31                         | awk '{print $1}'
           32                 )
           33 
           34         elif [[ $system == "Darwin" ]]; then
           35                 daventry=$(echo -n "${undertaker}:WebDAV:" \
           36                         && echo -n "${undertaker}:WebDAV:${davpass}" \
           37                         | md5 \
           38                         | awk '{print $NF}'
           39                 )
           40         fi
           41 }
           42 
           43 successmsg() {
           44         cat <<EOM
           45 
           46 Your hook has been created successfully. Plug your USB key into the coffin to
           47 execute it, or rerun this script to create another hook.
           48 
           49 EOM
           50 }
           51 
           52 genhook() {
           53         case $1 in
           54                 create)
           55                         hookentry="create:${undertaker}:${tombname}:${tombsize}:webdav"
           56                         echo $hookentry >> $hooks
           57                         gendav
           58                         echo ${daventry} >> ${davfile}
           59                         ;;
           60                 delete)
           61                         hookentry="delete:${undertaker}:${tombname}"
           62                         [[ -f ${tombname}.key ]] || {
           63                                 echo "WARNING: This delete hook will not work, as you do not
           64 have the keyfile used for it with you."
           65                         }
           66                         echo ${hookentry} >> ${hooks}
           67                         ;;
           68                 backup)
           69                         echo "backup"
           70                         ;;
           71                 wallet)
           72                         hookentry="create:${undertaker}:${tombname}:${tombsize}:wallet"
           73                         echo ${hookentry} >> ${hooks}
           74                         ;;
           75                 *)
           76                         echo "how did you even get here?"
           77                         ;;
           78         esac
           79 }
           80 
           81 happenz() {
           82         case $1 in
           83         # {{{ create
           84                 1)
           85                         echo -e "\n"
           86                         echo "Creating a new tomb..."
           87 
           88                         read -p "Please input the username you wish to use: " undertaker
           89                         re='^[A-Za-z0-9]+$'
           90                         [[ $undertaker =~ $re ]] || {
           91                                 echo "ERROR: Invalid characters in username."
           92                                 exec $0
           93                         }
           94 
           95                         read -p "Please input the name you wish to use for your tomb: " tombname
           96                         [[ $tombname =~ $re ]] || {
           97                                 echo "ERROR: Invalid characters in tomb name."
           98                                 exec $0
           99                         }
          100 
          101                         read -p "Please input the size of your tomb in MiB: " tombsize
          102                         re='^[0-9]+$'
          103                         [[ $tombsize =~ $re ]] || {
          104                                 echo "ERROR: Invalid characters in tomb size."
          105                                 exec $0
          106                         }
          107 
          108                         read -r -p "Please input the password you will use to access your tomb: " davpass
          109 
          110                         genhook create && successmsg
          111                         ;;
          112         # }}}
          113         # {{{ delete
          114                 2)
          115                         echo -e "\nDeleting an exising tomb...\n"
          116 
          117                         read -p "Please input the username you used to create the tomb: " undertaker
          118                         re='^[A-Za-z0-9]+$'
          119                         [[ $undertaker =~ $re ]] || {
          120                                 echo "ERROR: Invalid characters in username."
          121                                 exec $0
          122                         }
          123 
          124                         read -p "Please input the name you used for your tomb: " tombname
          125                         [[ $tombname =~ $re ]] || {
          126                                 echo "ERROR: Invalid characters in tomb name."
          127                                 exec $0
          128                         }
          129 
          130                         # NOTE: possibly include prompt for webdav password
          131 
          132                         genhook delete && successmsg
          133                         ;;
          134         # }}}
          135                 3)
          136                         echo -e "\n"
          137                         echo "backin up"
          138                         ;;
          139                 4)
          140                         echo -e "\n"
          141                         echo "Toggling state..."
          142 
          143                         read -p "Please input the name of the tomb you wish to toggle: "
          144                         re='^[A-Za-z0-9]+$'
          145                         [[ $tombname =~ $re ]] || {
          146                                 echo "ERROR: Invalid characters in tomb name."
          147                                 exec $0
          148                         }
          149                         [[ `grep $tombname $ttab` ]] || {
          150                                 echo "ERROR: No tomb of that name."
          151                                 exec $0
          152                         }
          153 
          154                         # TODO: make pattern recognition, sed or awk
          155                         ;;
          156                 5)
          157                         echo -e "\n"
          158                         echo "Creating a Bitcoin wallet..."
          159 
          160                         read -p "Please input the username you wish to use: " undertaker
          161                         re='^[A-Za-z0-9]+$'
          162                         [[ $undertaker =~ $re ]] || {
          163                                 echo "ERROR: Invalid characters in username."
          164                                 exec $0
          165                         }
          166 
          167                         read -p "Please input the name you wish to use for your tomb: " tombname
          168                         [[ $tombname =~ $re ]] || {
          169                                 echo "ERROR: Invalid characters in tomb name."
          170                                 exec $0
          171                         }
          172 
          173                         tombsize=20 ## NOTE: could possibly be less
          174 
          175                         read -r -p "Please input the password you will use to access your tomb: " davpass
          176 
          177                         genhook wallet
          178                         [[ $? = 0 ]] && {
          179                                 successmsg
          180                         }
          181                         ;;
          182                 0)
          183 
          184                         echo -e "Quitting...\n"
          185                         exit 0
          186                         ;;
          187                 *)
          188                         echo -e "\nNo valid option. Exiting...\n"
          189                         exit 1
          190                         ;;
          191         esac
          192 }
          193 
          194 main() {
          195         cat <<EOF
          196 
          197 #########################################################
          198                    ┏━╸┏━┓┏━╸┏━╸╻┏┓╻
          199                    ┃  ┃ ┃┣╸ ┣╸ ┃┃┗┫
          200                    ┗━╸┗━┛╹  ╹  ╹╹ ╹
          201    = cryptographic office filer for important nuggets =
          202                       version 0.4
          203                 https://coffin.dyne.org
          204 
          205 1) Create a new tomb on the coffin
          206 2) Delete an existing tomb on the coffin
          207 3) Backup a tomb from the coffin
          208 4) Toggle your tomb's open/close state
          209 5) Configure and create a Bitcoin wallet
          210 0) Quit
          211 
          212 #########################################################
          213 
          214 EOF
          215 
          216 read -p "Type in the number of the function you wish to perform: " action
          217 happenz $action
          218 }
          219 
          220 main