added test connections before changing files

This commit is contained in:
Spekulaas 2024-01-05 11:18:01 +01:00
parent 3b2d4f7fbf
commit 77126c6464
5 changed files with 31 additions and 10 deletions

View File

@ -63,6 +63,8 @@ class User:
private_key, public_key = Signature.generateKeys() private_key, public_key = Signature.generateKeys()
private_ser, public_ser = Signature.keysToBytes(private_key, public_key) private_ser, public_ser = Signature.keysToBytes(private_key, public_key)
# register user # register user
UtilityHelper.testConnection(self.peer_ip_addr, self.peer_port)
if self.db.createUser( private_ser, public_ser, input_username, hashed_password): if self.db.createUser( private_ser, public_ser, input_username, hashed_password):
# NEW SEND USER # NEW SEND USER
socketHelper.sendObj(self.peer_ip_addr, ["USER CREATE",private_ser, public_ser, input_username, hashed_password], self.peer_port) socketHelper.sendObj(self.peer_ip_addr, ["USER CREATE",private_ser, public_ser, input_username, hashed_password], self.peer_port)
@ -96,6 +98,7 @@ class User:
hashed_new_password = UtilityHelper.computeHash(new_password) hashed_new_password = UtilityHelper.computeHash(new_password)
hashed_old_password = UtilityHelper.computeHash(old_password) hashed_old_password = UtilityHelper.computeHash(old_password)
UtilityHelper.testConnection(self.peer_ip_addr, self.peer_port)
if self.db.changePassword(self.private_ser, hashed_old_password, hashed_new_password) == True: if self.db.changePassword(self.private_ser, hashed_old_password, hashed_new_password) == True:
# NEW SEND USER # NEW SEND USER
socketHelper.sendObj(self.peer_ip_addr, ["USER CHANGE PASSWORD",self.private_ser, hashed_old_password, hashed_new_password], self.peer_port) socketHelper.sendObj(self.peer_ip_addr, ["USER CHANGE PASSWORD",self.private_ser, hashed_old_password, hashed_new_password], self.peer_port)
@ -115,6 +118,7 @@ class User:
print(f"{UtilityHelper.errorMessage('Username already taken')}") print(f"{UtilityHelper.errorMessage('Username already taken')}")
return False return False
UtilityHelper.testConnection(self.peer_ip_addr, self.peer_port)
if self.db.changeUsername(self.private_ser, new_username) == True: if self.db.changeUsername(self.private_ser, new_username) == True:
self.username = new_username self.username = new_username
# NEW SEND USER # NEW SEND USER
@ -138,7 +142,7 @@ class User:
else: else:
print(f"{UtilityHelper.warningMessage('Invalid input')}") print(f"{UtilityHelper.warningMessage('Invalid input')}")
UtilityHelper.testConnection(self.peer_ip_addr, self.peer_port)
if self.db.deleteUser(self.private_ser) == True: if self.db.deleteUser(self.private_ser) == True:
# NEW SEND USER # NEW SEND USER
socketHelper.sendObj(self.peer_ip_addr, ["USER DELETE",self.private_ser], self.peer_port) socketHelper.sendObj(self.peer_ip_addr, ["USER DELETE",self.private_ser], self.peer_port)

View File

@ -306,22 +306,22 @@ def validateMinedBlock(self):
new_reward.createRewardTransaction(new_block.metadata['miner'], self.user.private_ser, "MINE", fees) new_reward.createRewardTransaction(new_block.metadata['miner'], self.user.private_ser, "MINE", fees)
taskHelper.createLog(self, new_block.metadata['miner'], time.time(), f"Block id {new_block.id}, is validated! You received a reward of {fees + 25} coins!") taskHelper.createLog(self, new_block.metadata['miner'], time.time(), f"Block id {new_block.id}, is validated! You received a reward of {fees + 25} coins!")
utilityHelper.addFile("../data/transaction_pool.dat", new_reward)
# NEW SEND TRANSACTION # NEW SEND TRANSACTION
socketHelper.sendObj(self.peer_ip_addr, new_reward, self.peer_port) socketHelper.sendObj(self.peer_ip_addr, new_reward, self.peer_port)
utilityHelper.addFile("../data/transaction_pool.dat", new_reward)
try: try:
del blocks[-1] del blocks[-1]
except: except:
return False return False
utilityHelper.resetFile("../data/ledger.dat")
blocks.append(new_block)
# NEW SEND BLOCK # NEW SEND BLOCK
socketHelper.sendObj(self.peer_ip_addr, new_block, self.peer_port) socketHelper.sendObj(self.peer_ip_addr, new_block, self.peer_port)
utilityHelper.resetFile("../data/ledger.dat")
blocks.append(new_block)
for block in blocks: for block in blocks:
utilityHelper.addFile("../data/ledger.dat", block) utilityHelper.addFile("../data/ledger.dat", block)
@ -334,6 +334,7 @@ def validateMinedBlock(self):
taskHelper.createLog(self, new_block.metadata['miner'], time.time(), f"Block id {new_block.id}, was flagged invalid. Mine unsuccesful...") taskHelper.createLog(self, new_block.metadata['miner'], time.time(), f"Block id {new_block.id}, was flagged invalid. Mine unsuccesful...")
# setsaveFil transactions in block back to the pool # setsaveFil transactions in block back to the pool
for transaction in new_block.data: for transaction in new_block.data:
socketHelper.sendObj(self.peer_ip_addr, transaction, self.peer_port)
utilityHelper.addFile("../data/transaction_pool.dat", transaction) utilityHelper.addFile("../data/transaction_pool.dat", transaction)
try: try:
del blocks[-1] del blocks[-1]
@ -341,11 +342,11 @@ def validateMinedBlock(self):
print(f"{utilityHelper.errorMessage('Something went wrong')}") print(f"{utilityHelper.errorMessage('Something went wrong')}")
return False return False
utilityHelper.resetFile("../data/ledger.dat")
# NEW SEND BLOCK # NEW SEND BLOCK
socketHelper.sendObj(self.peer_ip_addr, new_block, self.peer_port) socketHelper.sendObj(self.peer_ip_addr, new_block, self.peer_port)
utilityHelper.resetFile("../data/ledger.dat")
for block in blocks: for block in blocks:
utilityHelper.addFile("../data/ledger.dat", block) utilityHelper.addFile("../data/ledger.dat", block)
@ -439,6 +440,17 @@ def updateBlockValidation(block):
utilityHelper.resetFile("../data/ledger.dat") utilityHelper.resetFile("../data/ledger.dat")
blocks.append(block) blocks.append(block)
if block.metadata['false_validations'] >= 3:
# Create log for miner
# setsaveFil transactions in block back to the pool
for transaction in block.data:
utilityHelper.addFile("../data/transaction_pool.dat", transaction)
try:
del blocks[-1]
except:
print(f"{utilityHelper.errorMessage('Something went wrong')}")
return False, True
for b in blocks: for b in blocks:
utilityHelper.addFile("../data/ledger.dat", b) utilityHelper.addFile("../data/ledger.dat", b)
@ -446,5 +458,3 @@ def updateBlockValidation(block):

View File

@ -47,6 +47,7 @@ def sendObj(ip_addr, blk, port):
return True return True
except: except:
print("Could not connect to peer") print("Could not connect to peer")
utilityHelper.close()
return False return False
def connection(ip, port, db): def connection(ip, port, db):
@ -124,3 +125,5 @@ def connection(ip, port, db):
case "EXIT": case "EXIT":
utilityHelper.close() utilityHelper.close()
continue continue
case "TEST":
continue

View File

@ -9,7 +9,7 @@ def displayUnreadLogs(self):
return False return False
printLogs(logs) printLogs(logs)
socketHelper.testConnection(self.peer_ip_addr, self.peer_port)
for log in logs: for log in logs:
self.db.updateLogStatus(log[0]) self.db.updateLogStatus(log[0])
# NEW SEND USER # NEW SEND USER
@ -87,6 +87,7 @@ def getPersonalTransactions(self):
print("-----------------------------------------------------------------------------------") print("-----------------------------------------------------------------------------------")
def createLog(self, public_key, date, info, unread = 0): def createLog(self, public_key, date, info, unread = 0):
socketHelper.testConnection(self.peer_ip_addr, self.peer_port)
self.db.createLog(public_key, date, info, unread) self.db.createLog(public_key, date, info, unread)
# NEW SEND USER # NEW SEND USER
socketHelper.sendObj(self.peer_ip_addr, ["CREATE LOG",public_key, date, info, unread], self.peer_port) socketHelper.sendObj(self.peer_ip_addr, ["CREATE LOG",public_key, date, info, unread], self.peer_port)

View File

@ -95,6 +95,9 @@ def headerMessage(text):
def blinkMessage(text): def blinkMessage(text):
return bcolors.BLINK + text + bcolors.ENDC return bcolors.BLINK + text + bcolors.ENDC
def testConnection(ip, port):
socketHelper.sendObj(ip, "TEST", port)
def closeConnection(ip, port): def closeConnection(ip, port):
socketHelper.sendObj(ip, "EXIT", port) socketHelper.sendObj(ip, "EXIT", port)
print(f"{bcolors.WARNING}Closing connection{bcolors.ENDC}") print(f"{bcolors.WARNING}Closing connection{bcolors.ENDC}")