optimized cli workflow

This commit is contained in:
Kevin Veen-Birkenbach 2022-12-09 23:43:28 +01:00
parent 72765e280d
commit e4217afe64
4 changed files with 35 additions and 8 deletions

View File

@ -20,6 +20,10 @@ street in strasdlasöd
END_OF_INPUTS END_OF_INPUTS
python scripts/main.py --mode decrypt --master-password "ewrwerwerew" && python scripts/main.py --mode decrypt --master-password "ewrwerwerew" &&
python scripts/main.py --mode decrypt --user "1" python scripts/main.py --mode decrypt --user "1"
python scripts/main.py --mode cleanup --user "1" && python scripts/main.py --mode decrypt --user "1" --user-password "O3ITMWXZED9FKYQ0PB2WNVRWSCSCYVXCD00PJ6GQ4MFPIUWBVDCYSSSX9ZDBW5QU"
``` ```
# Requirements to know # Requirements to know
- Amount of People - Amount of People

View File

@ -26,7 +26,11 @@ class Cleanup(AbstractSplittedSecret):
self.deleteAllFilesInFolder(folder_path) self.deleteAllFilesInFolder(folder_path)
def cleanupForUser(self,user): def cleanupForUser(self,user):
try:
self.executeCommand('find "' + self.getFolderPath("encrypted") + '" -not -name "*' + str(user) +'*" -type f -print | xargs rm -v') self.executeCommand('find "' + self.getFolderPath("encrypted") + '" -not -name "*' + str(user) +'*" -type f -print | xargs rm -v')
except:
pass
self.deleteAllFiles("decrypted")
def deleteAll(self): def deleteAll(self):
self.deleteAllFiles("encrypted") self.deleteAllFiles("encrypted")

View File

@ -20,6 +20,9 @@ class Decryption(AbstractSplittedSecret):
file.close() file.close()
return data return data
def getNeededEncryptersAmount(self):
return len(str(list(self.user_data['groups'].keys())[0]))-1
def decryptFile(self,password,input_file_path,output_file_path): def decryptFile(self,password,input_file_path,output_file_path):
self.executeCommand('gpg --batch --passphrase "'+ password + '" -o "' + output_file_path +'" "'+ input_file_path+'"') self.executeCommand('gpg --batch --passphrase "'+ password + '" -o "' + output_file_path +'" "'+ input_file_path+'"')

View File

@ -10,6 +10,7 @@ if __name__ == '__main__':
parser.add_argument('--amount',type=int, dest='amount_of_secret_holders',required=False,choices=range(1,9)) parser.add_argument('--amount',type=int, dest='amount_of_secret_holders',required=False,choices=range(1,9))
parser.add_argument('--quota', type=int, dest='decryption_quota', choices=range(1,101),required=False) parser.add_argument('--quota', type=int, dest='decryption_quota', choices=range(1,101),required=False)
parser.add_argument('--master-password',type=str, dest='master_password',required=False) parser.add_argument('--master-password',type=str, dest='master_password',required=False)
parser.add_argument('--user-password',type=str, dest='user_password',required=False)
parser.add_argument('--user',type=int, dest='user',choices=range(1,9),required=False) parser.add_argument('--user',type=int, dest='user',choices=range(1,9),required=False)
parser.add_argument('--add-user-information',type=bool, dest='add_user_information', default=False, required=False, action=argparse.BooleanOptionalAction) parser.add_argument('--add-user-information',type=bool, dest='add_user_information', default=False, required=False, action=argparse.BooleanOptionalAction)
args = parser.parse_args() args = parser.parse_args()
@ -21,8 +22,10 @@ if __name__ == '__main__':
if mode == 'cleanup': if mode == 'cleanup':
cleanup = Cleanup() cleanup = Cleanup()
if args.user is None: if args.user is None:
print("Delete all files.")
cleanup.deleteAll() cleanup.deleteAll()
exit() exit()
print("Delete files for user <<" + str(args.user) + ">>");
cleanup.cleanupForUser(args.user) cleanup.cleanupForUser(args.user)
exit() exit()
@ -34,6 +37,7 @@ if __name__ == '__main__':
decrypt.setUserId(input()) decrypt.setUserId(input())
else: else:
decrypt.setUserId(args.user) decrypt.setUserId(args.user)
if args.user_password is None:
while True: while True:
print("Please enter the user password:") print("Please enter the user password:")
decrypt.setUserPassword(getpass()) decrypt.setUserPassword(getpass())
@ -43,9 +47,21 @@ if __name__ == '__main__':
break; break;
except: except:
print("Wrong password :(") print("Wrong password :(")
print("File decrypted :) ") else:
print("Please contact ") decrypt.setUserPassword(args.user_password)
print(decrypt.user_data) print("Decrypting User File...")
try:
decrypt.setUserData();
except:
print("Wrong password :(")
exit()
print("File decrypted :) \n")
print("Please contact the following persons and tell them that you need help to encrypt the data: \n")
for contact_id in decrypt.user_data['contacts']:
print("user_id: " + contact_id)
for label in decrypt.user_data['contacts'][contact_id]:
print(label + ": " + decrypt.user_data['contacts'][contact_id][label])
print("You need at least <<" + str(decrypt.getNeededEncryptersAmount()) +">> aditional people to decrypt the secret.")
exit() exit()
print("Decrypting accumulated file...") print("Decrypting accumulated file...")
decrypt.setUserPassword(args.master_password) decrypt.setUserPassword(args.master_password)