fix circular dependency
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				continuous-integration/drone/push Build is passing
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	continuous-integration/drone/push Build is passing
				
			This commit is contained in:
		@@ -8,12 +8,12 @@ from Crypto.PublicKey.RSA import RsaKey
 | 
			
		||||
from Crypto.Random import get_random_bytes
 | 
			
		||||
 | 
			
		||||
from netsim import network_interface
 | 
			
		||||
from server import Server
 | 
			
		||||
from authentication import Authetication
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class NetWrapper:
 | 
			
		||||
 | 
			
		||||
    def __init__(self, clientPublicKey: dict, serverPrivateKey: RsaKey, serverInstance: Server):
 | 
			
		||||
    def __init__(self, clientPublicKey: dict, serverPrivateKey: RsaKey, authenticationInstance: Authetication):
 | 
			
		||||
        self.clientPublicKey = clientPublicKey
 | 
			
		||||
        self.currentClientPublicKey = "".encode('UTF-8')
 | 
			
		||||
        self.serverPrivateKey = serverPrivateKey
 | 
			
		||||
@@ -21,7 +21,7 @@ class NetWrapper:
 | 
			
		||||
        self.network = network_interface('./', 'A')
 | 
			
		||||
        self.clientAddr = ""
 | 
			
		||||
        self.currentUser = ""
 | 
			
		||||
        self.serverInstance = serverInstance
 | 
			
		||||
        self.authenticationInstance = authenticationInstance
 | 
			
		||||
 | 
			
		||||
    def serverIdentify(self, msg: bytes) -> None:
 | 
			
		||||
        incommingJson = json.loads(msg.decode('UTF-8'))
 | 
			
		||||
@@ -77,7 +77,7 @@ class NetWrapper:
 | 
			
		||||
            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])
 | 
			
		||||
                1] != self.currentUser)) and self.authenticationInstance.login(plaintext[1], plaintext[2])
 | 
			
		||||
            if linsuccess:
 | 
			
		||||
                message = "OK".encode('UTF-8')
 | 
			
		||||
            else:
 | 
			
		||||
@@ -118,7 +118,6 @@ class NetWrapper:
 | 
			
		||||
            return self.recieveEncryptedMessage(msg)
 | 
			
		||||
 | 
			
		||||
    def logout(self) -> None:
 | 
			
		||||
        self.serverInstance.logout()
 | 
			
		||||
        self.clientAddr = ""
 | 
			
		||||
        self.cipherkey = "".encode('UTF-8')
 | 
			
		||||
        self.currentClientPublicKey = "".encode('UTF-8')
 | 
			
		||||
 
 | 
			
		||||
@@ -18,7 +18,7 @@ class Server:
 | 
			
		||||
        passphrase = input()
 | 
			
		||||
        self.auth = Authetication()
 | 
			
		||||
        self.networkInstance = NetWrapper(self.auth.loadUserPublicKeys(), self.auth.loadServerPrivateKey(passphrase),
 | 
			
		||||
                                          self)
 | 
			
		||||
                                          self.auth)
 | 
			
		||||
 | 
			
		||||
    def login(self, username: str, password: str) -> bool:
 | 
			
		||||
        self.isAuthenticated = True
 | 
			
		||||
@@ -30,6 +30,7 @@ class Server:
 | 
			
		||||
            return True
 | 
			
		||||
 | 
			
		||||
    def logout(self) -> None:
 | 
			
		||||
        self.networkInstance.logout()
 | 
			
		||||
        self.isAuthenticated = False
 | 
			
		||||
        self.availableServer = False
 | 
			
		||||
        self.homeDirectory = ""
 | 
			
		||||
@@ -56,7 +57,13 @@ class Server:
 | 
			
		||||
    def execute(self, command: str, firstParam: str = "", secondParam: str = "") -> None:
 | 
			
		||||
        if self.homeDirectory == "" or self.executor.currentDirectory == "" or self.executor.baseDir == "":
 | 
			
		||||
            raise Exception("Directories must not be empty string. Did the user log in?")
 | 
			
		||||
        if command == "MKD":
 | 
			
		||||
        if command == "LOUT":
 | 
			
		||||
            if secondParam != "" or firstParam != "":
 | 
			
		||||
                self.networkInstance.sendMessage("ERROR".encode('UTF-8'))
 | 
			
		||||
            else:
 | 
			
		||||
                self.logout()
 | 
			
		||||
                self.networkInstance.sendMessage("OK".encode('UTF-8'))
 | 
			
		||||
        elif command == "MKD":
 | 
			
		||||
            if secondParam != "":
 | 
			
		||||
                self.networkInstance.sendMessage("ERROR".encode('UTF-8'))
 | 
			
		||||
            else:
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user