Files
q-tools/vim/vimcrypted
ville rantanen fcfe9a46b1 vimcrypted
2015-04-02 12:56:03 +03:00

58 lines
1.1 KiB
Bash
Executable File

#!/bin/bash
# Unsecure implementation of a simple encrypted file editor
# The file is saved IN PLAIN TEXT when editing,
# this script only takes care of storing the file
# encrypted
function helpexit() {
echo "Edit a GPG encrypted file with vim.
Unsecure implementation, since the file is saved
IN PLAIN TEXT when editing,
this script only takes care of storing the file
encrypted
Changed file is always backed up as .old
"
exit
}
[[ -z "$1" ]] && helpexit
[[ "$1" = "-h" ]] && helpexit
set -x
if [[ ! "$1" == *\.gpg ]]
then
echo "source is not .gpg"
exit 1
fi
unc="${1%.gpg}"
if [ -e "$unc" ]
then echo "$unc already exists. exiting"
exit 1
fi
if [ ! -e "$1" ]
then echo "File $1 does not exist. Creating empty file"
echo " " > "$unc"
else
gpg --decrypt "$1" > "$unc"
fi
edit=`date +%s -r $unc`
if [ -s "$unc" ]
then vim -i NONE -n "$unc"
else echo Error in decrypting
rm "$unc"
exit 1
fi
afteredit=`date +%s -r "$unc"`
if (( $edit != $afteredit ))
then
cat "$unc" | gpg -ca > "$1".tmp
if [ -s "$1".tmp ]
then [[ -e "$1" ]] && mv -f "$1" "$1".old
mv -f "$1".tmp "$1"
fi
fi
rm "$unc"