Add 'gnano'
This commit is contained in:
parent
6beb2b1618
commit
3255f7341f
1 changed files with 99 additions and 0 deletions
99
gnano
Normal file
99
gnano
Normal 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
|
Loading…
Reference in a new issue