58 lines
1.1 KiB
Bash
Executable File
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"
|