fixed overload of user requests, added ports to env

This commit is contained in:
Spekulaas 2024-01-03 23:03:43 +01:00
parent 0b9147e84a
commit 7eb3c80812
9 changed files with 36 additions and 29 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,6 +1,11 @@
from getpass import getpass from getpass import getpass
from helpers import SignatureHelper as Signature from helpers import SignatureHelper as Signature
from helpers import UtilityHelper from helpers import UtilityHelper
from helpers import SocketHelper as socketHelper
import os
from dotenv import load_dotenv
load_dotenv()
class User: class User:
def __init__(self, db, private_ser=None, public_ser=None, username=None, password=None): def __init__(self, db, private_ser=None, public_ser=None, username=None, password=None):
@ -10,6 +15,9 @@ class User:
self.username = username self.username = username
self.password = password self.password = password
self.peer_port = int(os.getenv("PEER_PORT"))
self.peer_ip_addr = os.getenv("PEER_IP")
def login(self): def login(self):
print("Keep input empty to return") print("Keep input empty to return")
input_username = input("Username: ") input_username = input("Username: ")
@ -56,6 +64,8 @@ class User:
private_ser, public_ser = Signature.keysToBytes(private_key, public_key) private_ser, public_ser = Signature.keysToBytes(private_key, public_key)
# register user # register user
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
socketHelper.sendObj(self.peer_ip_addr, ["USER CREATE",private_ser, public_ser, input_username, hashed_password], self.peer_port)
self.private_ser = private_ser self.private_ser = private_ser
self.public_ser = public_ser self.public_ser = public_ser
self.username = input_username self.username = input_username
@ -87,6 +97,8 @@ class User:
hashed_old_password = UtilityHelper.computeHash(old_password) hashed_old_password = UtilityHelper.computeHash(old_password)
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
socketHelper.sendObj(self.peer_ip_addr, ["USER CHANGE PASSWORD",self.private_ser, hashed_old_password, hashed_new_password], self.peer_port)
print(f"{UtilityHelper.successMessage('Password updated')}") print(f"{UtilityHelper.successMessage('Password updated')}")
else: else:
print(f"{UtilityHelper.errorMessage('Something went wrong while trying to update password..')}") print(f"{UtilityHelper.errorMessage('Something went wrong while trying to update password..')}")
@ -105,6 +117,8 @@ class User:
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
socketHelper.sendObj(self.peer_ip_addr, ["USER CHANGE USERNAME",self.private_ser, new_username], self.peer_port)
print(f"{UtilityHelper.successMessage('Username updated')}") print(f"{UtilityHelper.successMessage('Username updated')}")
else: else:
print(f"{UtilityHelper.errorMessage('Something went wrong while trying to update username..')}") print(f"{UtilityHelper.errorMessage('Something went wrong while trying to update username..')}")
@ -126,6 +140,8 @@ class User:
print(f"{UtilityHelper.warningMessage('Invalid input')}") print(f"{UtilityHelper.warningMessage('Invalid input')}")
if self.db.deleteUser(self.private_ser) == True: if self.db.deleteUser(self.private_ser) == True:
# NEW SEND USER
socketHelper.sendObj(self.peer_ip_addr, ["USER DELETE",self.private_ser], self.peer_port)
print(f"{UtilityHelper.successMessage('Account deleted')}") print(f"{UtilityHelper.successMessage('Account deleted')}")
self.logout() self.logout()
return True return True

View File

@ -58,4 +58,3 @@ if __name__ == "__main__":
connection_thread = threading.Thread(target=socketHelper.connection, args=(ip,port,db,)) connection_thread = threading.Thread(target=socketHelper.connection, args=(ip,port,db,))
connection_thread.start() connection_thread.start()

View File

@ -1,10 +1,12 @@
from classes.Transaction import Tx from classes.Transaction import Tx
from classes.TxBlock import TxBlock from classes.TxBlock import TxBlock
from helpers import UtilityHelper as utilityHelper from helpers import UtilityHelper as utilityHelper
import time
from helpers import SocketHelper as socketHelper from helpers import SocketHelper as socketHelper
from helpers import TaskHelper as taskHelper
MIN_MINING_TIME = 10 import time
MIN_MINING_TIME = 0
MAX_MINING_TIME = 20 MAX_MINING_TIME = 20
def exploreBlocks(self): def exploreBlocks(self):
@ -192,7 +194,7 @@ def createBlock(self):
# create block # create block
for i in selected_transactions: for i in selected_transactions:
if not transactions[i].is_valid(): if not transactions[i].is_valid():
self.db.createLog(transactions[i].inputs[0][0], time.time(), f"Transaction of {transactions[i].outputs[0][1]} with {transactions[i].inputs[0][1] - transactions[i].outputs[0][1]} coins fee is declined") taskHelper.createLog(self, transactions[i].inputs[0][0], time.time(), f"Transaction of {transactions[i].outputs[0][1]} with {transactions[i].inputs[0][1] - transactions[i].outputs[0][1]} coins fee is declined")
try: try:
del transactions[i] del transactions[i]
except: except:
@ -291,15 +293,17 @@ def validateMinedBlock(self):
for transaction in new_block.data: for transaction in new_block.data:
if transaction.type != 1: if transaction.type != 1:
fees += transaction.inputs[0][1] - transaction.outputs[0][1] fees += transaction.inputs[0][1] - transaction.outputs[0][1]
self.db.createLog(transaction.inputs[0][0], time.time(), f"Transaction of {transaction.inputs[0][1]} is added in block id {new_block.id}") taskHelper.createLog(self, transaction.inputs[0][0], time.time(), f"Transaction of {transaction.inputs[0][1]} is added in block id {new_block.id}")
self.db.createLog(transaction.outputs[0][0], time.time(), f"You have received new coins: {transaction.outputs[0][1]}, To see all info view block id {new_block.id}") taskHelper.createLog(self, transaction.outputs[0][0], time.time(), f"You have received new coins: {transaction.outputs[0][1]}, To see all info view block id {new_block.id}")
fees = round(fees, 2) fees = round(fees, 2)
new_reward = Tx() new_reward = Tx()
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)
self.db.createLog(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) utilityHelper.addFile("../data/transaction_pool.dat", new_reward)
# NEW SEND TRANSACTION
socketHelper.sendObj(self.peer_ip_addr, new_reward, self.peer_port)
try: try:
del blocks[-1] del blocks[-1]
@ -312,9 +316,6 @@ def validateMinedBlock(self):
# 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)
# NEW SEND TRANSACTION
socketHelper.sendObj(self.peer_ip_addr, new_reward, self.peer_port)
for block in blocks: for block in blocks:
utilityHelper.addFile("../data/ledger.dat", block) utilityHelper.addFile("../data/ledger.dat", block)
@ -324,7 +325,7 @@ def validateMinedBlock(self):
new_block.metadata['false_validations'] += 1 new_block.metadata['false_validations'] += 1
if new_block.metadata['false_validations'] >= 3: if new_block.metadata['false_validations'] >= 3:
# Create log for miner # Create log for miner
self.db.createLog(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:
utilityHelper.addFile("../data/transaction_pool.dat", transaction) utilityHelper.addFile("../data/transaction_pool.dat", transaction)

View File

@ -58,8 +58,6 @@ class DatabaseHelper:
self.cursor.execute("INSERT INTO `users` (private_key, public_key, username, password) VALUES (?, ?, ?, ?)", (private_key, public_key, username, password,)) self.cursor.execute("INSERT INTO `users` (private_key, public_key, username, password) VALUES (?, ?, ?, ?)", (private_key, public_key, username, password,))
self.commit() self.commit()
# NEW SEND USER
socketHelper.sendObj("localhost", ["USER CREATE",private_key, public_key, username, password], 5050)
return True return True
except sqlite3.Error as error: except sqlite3.Error as error:
return False return False
@ -74,8 +72,6 @@ class DatabaseHelper:
if self.cursor.rowcount < 1: if self.cursor.rowcount < 1:
return False return False
# NEW SEND USER
socketHelper.sendObj("localhost", ["USER CHANGE PASSWORD",user_privatekey, old_password, password], 5050)
return True return True
except sqlite3.Error as error: except sqlite3.Error as error:
@ -90,9 +86,6 @@ class DatabaseHelper:
self.cursor.execute("UPDATE `users` SET username = ? WHERE `private_key` = ?", (username, user_privatekey,)) self.cursor.execute("UPDATE `users` SET username = ? WHERE `private_key` = ?", (username, user_privatekey,))
self.commit() self.commit()
# NEW SEND USER
socketHelper.sendObj("localhost", ["USER CHANGE USERNAME",user_privatekey, username], 5050)
return True return True
except sqlite3.Error as error: except sqlite3.Error as error:
@ -108,8 +101,6 @@ class DatabaseHelper:
self.cursor.execute("DELETE FROM `users` WHERE `private_key` = ?", (user_privatekey, )) self.cursor.execute("DELETE FROM `users` WHERE `private_key` = ?", (user_privatekey, ))
self.commit() self.commit()
# NEW SEND USER
socketHelper.sendObj("localhost", ["USER DELETE",user_privatekey], 5050)
return True return True
except sqlite3.Error as error: except sqlite3.Error as error:
@ -135,13 +126,9 @@ class DatabaseHelper:
self.cursor.execute("INSERT INTO `logs` (public_key, date, info, unread) VALUES (?, ?, ?, ?)", (public_key, date, info, unread,)) self.cursor.execute("INSERT INTO `logs` (public_key, date, info, unread) VALUES (?, ?, ?, ?)", (public_key, date, info, unread,))
self.commit() self.commit()
# NEW SEND USER
socketHelper.sendObj("localhost", ["CREATE LOG",public_key,date,info,unread], 5050)
except sqlite3.Error as error: except sqlite3.Error as error:
return None return None
def getLatestLogs(self, public_key): def getLatestLogs(self, public_key):
if not self.conn: if not self.conn:
return None return None
@ -175,9 +162,6 @@ class DatabaseHelper:
self.cursor.execute("UPDATE `logs` SET `unread` = ? WHERE `id` = ?", (unread, id, )) self.cursor.execute("UPDATE `logs` SET `unread` = ? WHERE `id` = ?", (unread, id, ))
self.commit() self.commit()
# NEW SEND USER
socketHelper.sendObj("localhost", ["UPDATE LOG STATUS",id,unread], 5050)
except sqlite3.Error as error: except sqlite3.Error as error:
return False return False

View File

@ -89,7 +89,7 @@ def connection(ip, port, db):
continue continue
case "UPDATE LOG STATUS": case "UPDATE LOG STATUS":
db.updateLogStatus(item[1], item[2]) db.updateLogStatus(item[1])
continue continue
# changes on newServerConnection # changes on newServerConnection

View File

@ -1,4 +1,5 @@
from helpers import UtilityHelper as utilityHelper from helpers import UtilityHelper as utilityHelper
from helpers import SocketHelper as socketHelper
import time import time
def displayUnreadLogs(self): def displayUnreadLogs(self):
@ -11,6 +12,8 @@ def displayUnreadLogs(self):
for log in logs: for log in logs:
self.db.updateLogStatus(log[0]) self.db.updateLogStatus(log[0])
# NEW SEND USER
socketHelper.sendObj(self.peer_ip_addr, ["UPDATE LOG STATUS",log[0]], self.peer_port)
def displayLogs(self): def displayLogs(self):
logs = self.db.getLatestLogs(self.user.public_ser) logs = self.db.getLatestLogs(self.user.public_ser)
@ -83,3 +86,7 @@ def getPersonalTransactions(self):
print(f"Total balance: {total_output - total_input}") print(f"Total balance: {total_output - total_input}")
print("-----------------------------------------------------------------------------------") print("-----------------------------------------------------------------------------------")
def createLog(self, public_key, date, info, unread = 0):
self.db.createLog(public_key, date, info, unread)
# NEW SEND USER
socketHelper.sendObj(self.peer_ip_addr, ["CREATE LOG",public_key, date, info, unread], self.peer_port)