finish netwrapper of server and executor improvements
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2021-04-25 00:42:36 +02:00
parent 90396c2826
commit a5b77d0306
2 changed files with 25 additions and 13 deletions

View File

@@ -25,6 +25,8 @@ class NetWrapper:
def serverIdentify(self, msg: bytes) -> None:
incommingJson = json.loads(msg.decode('UTF-8'))
if incommingJson['type'] != "IDY":
raise Exception('Wrong message type encountered')
self.clientAddr = incommingJson['source']
self.currentUser = incommingJson['username']
self.currentClientPublicKey = self.clientPublicKey[self.currentUser]
@@ -56,7 +58,7 @@ class NetWrapper:
jsonmsg = json.dumps({'type': 'DH', 'source': self.network.own_addr, 'message': mypubkey}).encode('UTF-8')
self.network.send_msg(self.clientAddr, jsonmsg)
decodedmsg = {'source': '', 'type': ''}
while not (decodedmsg['source'] == self.clientAddr and decodedmsg['type'] == 'DH'):
while not (decodedmsg['source'] == self.clientAddr and decodedmsg['type'] == 'DH'):
status, msg = self.network.receive_msg(blocking=True)
if not status:
raise Exception('Network error during connection.')
@@ -68,7 +70,7 @@ class NetWrapper:
def login(self) -> bool:
b64 = {'source': '', 'type': ''}
while not (b64['source'] == self.clientAddr and b64['type'] == 'AUT'):
while not (b64['source'] == self.clientAddr and b64['type'] == 'AUT'):
status, msg = self.network.receive_msg(blocking=True)
if not status:
raise Exception('Network error during connection.')
@@ -78,7 +80,8 @@ class NetWrapper:
retciphertext = b64decode(b64['message'])
retcipher = ChaCha20.new(self.cipherkey, nonce=retnonce)
plaintext = retcipher.decrypt(retciphertext).decode('UTF-8').split(' ')
linsuccess = (not (len(plaintext) != 3 or plaintext[0] != "LIN" or plaintext[1] != self.currentUser)) and self.serverInstance.login(plaintext[1],plaintext[2])
linsuccess = (not (len(plaintext) != 3 or plaintext[0] != "LIN" or plaintext[
1] != self.currentUser)) and self.serverInstance.login(plaintext[1], plaintext[2])
if linsuccess:
message = "OK".encode('UTF-8')
else:
@@ -87,8 +90,9 @@ class NetWrapper:
ciphertext = cipher.encrypt(message)
nonce = b64encode(cipher.nonce).decode('UTF-8')
ct = b64encode(ciphertext).decode('UTF-8')
sendjson = json.dumps({'type': 'AUT', 'source': self.network.own_addr, 'nonce': nonce, 'message': ct}).encode(
'UTF-8')
sendjson = json.dumps(
{'type': 'AUT', 'source': self.network.own_addr, 'nonce': nonce, 'message': ct}).encode(
'UTF-8')
self.network.send_msg(self.clientAddr, sendjson)
return linsuccess
except Exception:
@@ -102,7 +106,7 @@ class NetWrapper:
if success:
return b"LINOK"
else:
self.logout()
self.logout()
except Exception:
self.logout()