def disp_ring_data(self): acc=RSA() temp = self.head print("------- Node", temp.key,"-------") for entry in temp.data: print("\t<---->") print(">>FILE NAME:\n", entry.name) print(">>PUBLIC KEY:\n", entry.pubkey) content=entry.content if not users_df[users_df['user']==curr_user][entry.name].isna().values[0]: print("Decrypting with private key...") print(">>CONTENT:\n", acc.decipher_text(content,int(users_df[users_df['user']==curr_user][entry.name].values[0]),entry.pubkey)) else: print("Unable to decrypt without private key.") print(">>ENCRYPTED CONTENT:\n", entry.content) print("\t<---->\n") while(temp.next != self.head): temp = temp.next print("------- Node", temp.key,"-------") for entry in temp.data: print("\t<---->") print(">>FILE NAME:\n", entry.name) print(">>PUBLIC KEY:\n", entry.pubkey) content=entry.content if not users_df[users_df['user']==curr_user][entry.name].isna().values[0]: print("Decrypting with private key...") print(">>CONTENT:\n", acc.decipher_text(content,int(users_df[users_df['user']==curr_user][entry.name].values[0]),entry.pubkey)) else: print("Unable to decrypt without private key.") print(">>ENCRYPTED CONTENT:\n", entry.content) print("\t<---->\n")
def editor(DHT,dumpfile): while(True) : option=menu() if option == 1 : newNode = DHT.create_node() DHT.insert_node(newNode) pickle.dump(DHT,dumpfile) elif option == 2 : key = int(input("Enter node to be removed: ")) DHT.remove_node(key) pickle.dump(DHT,dumpfile) print("Node removed!") elif option == 3 : key = int(input("Enter node to be used: ")) used_node = DHT.ring_list.search(key) if used_node==None: print("Node not found!") continue print("\nOptions:\n1.Search for data\n2.Insert Data\n") choice = int(input("Enter choice: ")) if choice == 1 : search_file = input("Enter file name:") search_key = DHT.hash_key(search_file) node = DHT.search(used_node,search_key) for entry in node.data: if search_file == entry.name: print("Found file in node ",node.address) print(users_df.loc[users_df['user']==user,entry.name].values[0] == np.nan) if math.isnan(users_df.loc[users_df['user']==user,entry.name].values[0] ) : print("no access") break else: dec = RSA() content_copy = entry.content print(users_df.loc[users_df['user']==user,entry.name].values[0]) print(entry.pubkey) content = entry.content print(dec.decipher_text(content_copy,int(users_df.loc[users_df['user']==user,entry.name].values[0]),entry.pubkey)) break else : print("File not found") elif choice == 2 : acc_contrl = RSA() acc_contrl.generate() filename = input("Enter filename: ") print("Enter [multiline] content: ") lines = [] while True: line = input() if line: lines.append(line) else: break content = '\n'.join(lines) content_copy=content ins_key = DHT.hash_key(filename) print("File_key",ins_key) ins_node = DHT.search(used_node,ins_key) print("File inserted at node:",ins_node.key) users_df[filename] = [np.nan for i in range(users_df.shape[0])] users_df.loc[users_df['user']==user,filename]=acc_contrl.private_key() ins_node.data.append(DataFile(filename, acc_contrl.cipher_text(content_copy,acc_contrl.public_key(),acc_contrl.exponent()), acc_contrl.public_key(), acc_contrl.exponent())) # pickle.dump(DHT,dumpfile) #ins_node.data.append(DataFile(filename, acc_contrl.cipher_text(content,acc_contrl.public_key(),acc_contrl.exponent()), acc_contrl.public_key(), acc_contrl.exponent())) print("File encrypted with public key", acc_contrl.public_key()) if len(users_df['user'].values)!=1: permch=input("Do you wish to give permission to other users? (y/n): ") if permch=='y' or permch=='Y': print('Other users:') for name in list(users_df['user'].values): if name != curr_user: print(name) select_user=input("Selection: ") if select_user in list(users_df['user'].values): users_df.loc[users_df['user']==select_user,filename]=acc_contrl.private_key() else: print("Invalid input") users_df.to_csv("users.csv",index=False) pickle.dump(DHT,dumpfile) elif option==5: netUI(DHT,dumpfile) else: pickle.dump(DHT,dumpfile) dumpfile.close() exit()