Added store decryption/encryption capability

This commit is contained in:
Jon-William Lewis
2016-02-16 21:35:42 -06:00
parent 9ceb05688e
commit bb1101c36d
4 changed files with 98 additions and 12 deletions

View File

@@ -27,8 +27,9 @@ readonly NOTES_DIR="$ROOT_DIR"/notes
readonly TMP_DIR="$ROOT_DIR"/tmp readonly TMP_DIR="$ROOT_DIR"/tmp
readonly CONFIG_FILE="$ROOT_DIR/sns.conf" readonly CONFIG_FILE="$ROOT_DIR/sns.conf"
#Color codes for error reporting #Color codes for messages
readonly RED_COLOR='\033[1;31m' readonly RED_COLOR='\033[1;31m'
readonly YELLOW_COLOR='\033[1;33m'
readonly RESET_COLOR='\033[0m' readonly RESET_COLOR='\033[0m'
#Print the program header to stdout #Print the program header to stdout
@@ -251,32 +252,74 @@ function list(){
if [ -r "$CONFIG_FILE" ]; then if [ -r "$CONFIG_FILE" ]; then
source "$CONFIG_FILE" source "$CONFIG_FILE"
verify_store verify_store
elif [ $1 != "-i" ]; then elif [ "$1" != "-i" ]; then
>&2 printf " $RED_COLOR!$RESET_COLOR %s\n\t%s\n"\ >&2 printf " $RED_COLOR!$RESET_COLOR %s\n\t%s\n"\
"Configuration not found. Please run sns -i." "Configuration not found. Please run sns -i."
exit 5 #ERR_NO_STORE exit 5 #ERR_NO_STORE
fi fi
cd "$NOTES_DIR"
if [ "$ENCRYPTION" == "TRUE" ]; then if [ "$ENCRYPTION" == "TRUE" ]; then
# If the user chose not to decrypt notes before, clear that preference.
if [ -r "$NOTES_DIR"/.do_not_decrypt ]; then
rm "$NOTES_DIR"/.do_not_decrypt;
fi
# Check if GPG is installed.
if [ ! -r "$(which gpg)" ]; then if [ ! -r "$(which gpg)" ]; then
>&2 printf " $RED_COLOR!$RESET_COLOR %s\n\t%s\n"\ >&2 printf " $RED_COLOR!$RESET_COLOR %s\n\t%s\n"\
"Encryption was specified, but GPG is not installed." "Encryption was specified, but GPG is not installed."
exit 100 exit 100
# Check if we have a GPG recipient
elif [ -z "$PUBKEY" ]; then elif [ -z "$PUBKEY" ]; then
>&2 printf " $RED_COLOR!$RESET_COLOR %s\n\t%s\n"\ >&2 printf " $RED_COLOR!$RESET_COLOR %s\n\t%s\n"\
"No GPG recipient was provided in $CONFIG_FILE. " "No GPG recipient was provided in $CONFIG_FILE. "
exit 110 exit 110
# All is good. If any previously unencrypted notes exist, encrypt them.
# No harm in extra security.
else else
cd "$NOTES_DIR"
find . -type f -name "*.$EXT" | grep -v "gpg" | while read TMP_NOTE; do find . -type f -name "*.$EXT" | grep -v "gpg" | while read TMP_NOTE; do
NOTE="${TMP_NOTE%.$EXT}.gpg.$EXT" NOTE="${TMP_NOTE%.$EXT}.gpg.$EXT"
echo $NOTE
encrypt encrypt
if [ -r $NOTE ]; then if [ -r "$NOTE" ]; then
rm $TMP_NOTE printf " $YELLOW_COLOR!$RESET_COLOR %s\n" "Encrypted ${NOTE%.$EXT}"
rm "$TMP_NOTE"
fi fi
done done
fi
# If encryption isn't enabled, make sure either all notes are decrypted or the user
# does not wish to decrypt all notes.
else
if [ ! -r "$NOTES_DIR"/.do_not_decrypt ]; then
if [ -n $(find "$NOTES_DIR" -type f -name "*.gpg.$EXT" > /dev/null) ]; then
while true; do
read -p "Would you like to de-encrypt previously encrypted notes? " YN
case $YN in
[Yy]* )
read -s -p "Please enter your passphrase: " PASSPHRASE
cd "$NOTES_DIR"
find . -type f -name "*.gpg.$EXT" | while read -r NOTE; do
gpg\
--passphrase "$PASSPHRASE"\
-o "${NOTE%.gpg.note}.note"\
--decrypt "$NOTE" >> /dev/null 2>&1
if [ -r "${NOTE%.gpg.note}.note" ]; then
printf " $YELLOW_COLOR!$RESET_COLOR %s\n"\
"De-encrypted ${NOTE%.gpg.$EXT}"
rm "$NOTE";
fi
done
break;;
[Nn]* )
# Remember the user's preference.
touch "$NOTES_DIR/.do_not_decrypt"
break;;
*)
printf " $RED_COLOR!$RESET_COLOR %s\n" "Please enter Y or N"
;;
esac
done
fi
fi fi
fi fi
#============================================================================== #==============================================================================

View File

@@ -32,8 +32,9 @@ readonly NOTES_DIR="\$ROOT_DIR"/notes
readonly TMP_DIR="\$ROOT_DIR"/tmp readonly TMP_DIR="\$ROOT_DIR"/tmp
readonly CONFIG_FILE="\$ROOT_DIR/sns.conf" readonly CONFIG_FILE="\$ROOT_DIR/sns.conf"
#Color codes for error reporting #Color codes for messages
readonly RED_COLOR='\033[1;31m' readonly RED_COLOR='\033[1;31m'
readonly YELLOW_COLOR='\033[1;33m'
readonly RESET_COLOR='\033[0m' readonly RESET_COLOR='\033[0m'
#Print the program header to stdout #Print the program header to stdout

BIN
install.sh.gpg Normal file

Binary file not shown.

View File

@@ -5,31 +5,73 @@
if [ -r "$CONFIG_FILE" ]; then if [ -r "$CONFIG_FILE" ]; then
source "$CONFIG_FILE" source "$CONFIG_FILE"
verify_store verify_store
elif [ $1 != "-i" ]; then elif [ "$1" != "-i" ]; then
>&2 printf " $RED_COLOR!$RESET_COLOR %s\n\t%s\n"\ >&2 printf " $RED_COLOR!$RESET_COLOR %s\n\t%s\n"\
"Configuration not found. Please run sns -i." "Configuration not found. Please run sns -i."
exit 5 #ERR_NO_STORE exit 5 #ERR_NO_STORE
fi fi
cd "$NOTES_DIR"
if [ "$ENCRYPTION" == "TRUE" ]; then if [ "$ENCRYPTION" == "TRUE" ]; then
# If the user chose not to decrypt notes before, clear that preference.
if [ -r "$NOTES_DIR"/.do_not_decrypt ]; then
rm "$NOTES_DIR"/.do_not_decrypt;
fi
# Check if GPG is installed.
if [ ! -r "$(which gpg)" ]; then if [ ! -r "$(which gpg)" ]; then
>&2 printf " $RED_COLOR!$RESET_COLOR %s\n\t%s\n"\ >&2 printf " $RED_COLOR!$RESET_COLOR %s\n\t%s\n"\
"Encryption was specified, but GPG is not installed." "Encryption was specified, but GPG is not installed."
exit 100 exit 100
# Check if we have a GPG recipient
elif [ -z "$PUBKEY" ]; then elif [ -z "$PUBKEY" ]; then
>&2 printf " $RED_COLOR!$RESET_COLOR %s\n\t%s\n"\ >&2 printf " $RED_COLOR!$RESET_COLOR %s\n\t%s\n"\
"No GPG recipient was provided in $CONFIG_FILE. " "No GPG recipient was provided in $CONFIG_FILE. "
exit 110 exit 110
# All is good. If any previously unencrypted notes exist, encrypt them.
# No harm in extra security.
else else
cd "$NOTES_DIR"
find . -type f -name "*.$EXT" | grep -v "gpg" | while read TMP_NOTE; do find . -type f -name "*.$EXT" | grep -v "gpg" | while read TMP_NOTE; do
NOTE="${TMP_NOTE%.$EXT}.gpg.$EXT" NOTE="${TMP_NOTE%.$EXT}.gpg.$EXT"
echo $NOTE
encrypt encrypt
if [ -r $NOTE ]; then if [ -r "$NOTE" ]; then
rm $TMP_NOTE printf " $YELLOW_COLOR!$RESET_COLOR %s\n" "Encrypted ${NOTE%.$EXT}"
rm "$TMP_NOTE"
fi fi
done done
fi
# If encryption isn't enabled, make sure either all notes are decrypted or the user
# does not wish to decrypt all notes.
else
if [ ! -r "$NOTES_DIR"/.do_not_decrypt ]; then
if [ -n $(find "$NOTES_DIR" -type f -name "*.gpg.$EXT" > /dev/null) ]; then
while true; do
read -p "Would you like to de-encrypt previously encrypted notes? " YN
case $YN in
[Yy]* )
read -s -p "Please enter your passphrase: " PASSPHRASE
cd "$NOTES_DIR"
find . -type f -name "*.gpg.$EXT" | while read -r NOTE; do
gpg\
--passphrase "$PASSPHRASE"\
-o "${NOTE%.gpg.note}.note"\
--decrypt "$NOTE"
if [ -r "${NOTE%.gpg.note}.note" ]; then
printf " $YELLOW_COLOR!$RESET_COLOR %s\n"\
"De-encrypted ${NOTE%.gpg.$EXT}"
rm "$NOTE";
fi
done
break;;
[Nn]* )
# Remember the user's preference.
touch "$NOTES_DIR/.do_not_decrypt"
break;;
*)
printf " $RED_COLOR!$RESET_COLOR %s\n" "Please enter Y or N"
;;
esac
done
fi
fi fi
fi fi