panda %!s(int64=7) %!d(string=hai) anos
pai
achega
3255f7341f
Modificáronse 1 ficheiros con 99 adicións e 0 borrados
  1. 99 0
      gnano

+ 99 - 0
gnano

@@ -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