Add 'gnano'

This commit is contained in:
panda 2017-03-07 00:06:14 +01:00
parent 6beb2b1618
commit 3255f7341f

99
gnano Normal file
View file

@ -0,0 +1,99 @@
#!/bin/bash
#GNANO - gpg-enabled nano
#gnano enables you to edit a textfile encrypted for some recipients without outputting to cleartext the content (actually it outputs it in a tempfile which permissions are 600, I am working on yhis issue)
#check program prerequisites:
hash vipe 2>/dev/null || { echo >&2 "I require vipe but it's not installed. It's part of the package morutils, under debian-like systems: 'apt-get install moreutils' Aborting."; exit 1; }
hash gpg 2>/dev/null || { echo >&2 "I require gpg but it's not installed. Aborting."; exit 1; }
#define tempfile
tempfile="/tmp/test2.temp"
#define empty variables
argument=""
recipients=""
new=0
#preparing tempfile
if [ -f $tempfile ] ; then
rm $tempfile
fi
touch $tempfile
chmod 600 $tempfile
#manage options without getopts
option=$1
argument=$2
if [ "$argument" = "" ]; then
argument=$option
fi
#OPTIONS:
if [ $option = "--list" ] || [ $option = "-l" ]; then
echo "RECIPIENTS:"
gpg --batch --list-only --no-default-keyring --secret-keyring /dev/null $argument
exit 1
fi
if [ $option = "--help" ] || [ $option = "-h" ]; then
echo "Usage: gnano [OPTIONS] FILE"
echo ""
echo "Option GNU long option Meaning"
echo "-l --list Lists the recipients of the encrypted file"
echo "-h --help Outputs this help"
echo "-n --new Creates a new encrypted file"
echo "no options giving only a filename the program decyphers the file, edits it, and recyphers it with the correct recipients"
exit 1
fi
if [ $option = "--new" ] || [ $option = "-n" ]; then
new=1
echo "STARTING CREATION OF NEW FILE:"
echo "your is the task to retrieve the keys or emails of the recipients, I can't do it"
read -p "enter new filename: " argument
if [ -f $argument ]; then
echo "FILE EXISTS! EXITING!"
exit 1
fi
read -p "enter recipients key IDs separated by commas: " newrecipients
fi
#LOOP FOR EXISTING FILE:
if [ "$new" -eq "0" ]; then
if [ ! -f $argument ]; then
echo "FILE NOT FOUND, EXITING"
exit 1
fi
gpg --batch --list-only --no-default-keyring --secret-keyring /dev/null $argument &> $tempfile
cat $tempfile | grep "gpg: encrypted" | awk '{print $8}' | sed 's/\,//g' > $tempfile
sleep 0.5
while read recipient; do
echo $recipient
recipients+="-r $recipient "
done <$tempfile
if [ "$recipients" = "" ]; then
echo "ERROR retrieving recipients, known issue, retry!"
exit 1
fi
gpg -d $argument | EDITOR=nano vipe | gpg --batch --yes -e $recipients -o $argument
fi
#LOOP OFR NEW FILE:
if [ "$new" -eq "1" ]; then
for newrcpt in $(echo $newrecipients | tr "," "\n")
do
recipients+="-r $newrcpt "
done
nano $tempfile
cat $tempfile | gpg --batch --yes -e $recipients -o $argument
rm $tempfile
echo ""
echo "DONE!"
exit 1
fi
#clearing tempfile:
rm $tempfile