Skip to content
Snippets Groups Projects
server.py 1.77 KiB
Newer Older
  • Learn to ignore specific revisions
  • Ismail Moumni's avatar
    Ismail Moumni committed
    # authors: Julien DAVID & Ismail MOUMNI
    
    Ismail-Moumni's avatar
    Ismail-Moumni committed
    import socket
    
    Ismail Moumni's avatar
    Ismail Moumni committed
    import json
    
    
    Ismail-Moumni's avatar
    Ismail-Moumni committed
    
    # SERVER PORT
    
    Ismail Moumni's avatar
    Ismail Moumni committed
    __RDOS_Port__ = 9393
    
    Ismail Moumni's avatar
    Ismail Moumni committed
    
    # Dictionnary
    __RDOS_Dict__ = {}
    
    # tools List
    __RDOS_Tool__ = []
    
    
    
    Ismail-Moumni's avatar
    Ismail-Moumni committed
    # Creating Socket IP4 TCP
    
    Ismail Moumni's avatar
    Ismail Moumni committed
    def server_conn(address, PORT):
    
        with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as serv:
    
    Ismail Moumni's avatar
    Ismail Moumni committed
            serv.bind((address, PORT))
            # Listening to 1 CLient
    
    Ismail Moumni's avatar
    Ismail Moumni committed
            print("ok")
            # accepting the connection from client and getting client IP
    
            conn, addr = serv.accept()
    
    Ismail Moumni's avatar
    Ismail Moumni committed
            print("connexion accepted")
    
    Ismail-Moumni's avatar
    Ismail-Moumni committed
        with conn:
    
    Ismail Moumni's avatar
    Ismail Moumni committed
            conn.send(bytes("Bonjour !!", "utf-8"))
            print('Connexion acceptée depuis l IP : ', addr)
    
    Ismail-Moumni's avatar
    Ismail-Moumni committed
            # Receiving Data from Client
    
    Ismail Moumni's avatar
    Ismail Moumni committed
            data = conn.recv(4096)
    
    Ismail-Moumni's avatar
    Ismail-Moumni committed
            print(data)
    
    Ismail Moumni's avatar
    Ismail Moumni committed
            if query_valid(data) == "True":
                dt_js = json.dumps(send_param_client(__RDOS_Dict__, __RDOS_Tool__))
                conn.send(dt_js)
    
    
    Ismail Moumni's avatar
    Ismail Moumni committed
            serv.close()
    
    Ismail-Moumni's avatar
    Ismail-Moumni committed
    
    
    Ismail Moumni's avatar
    Ismail Moumni committed
    # Function query_valid matches the query send from client side
    #  with the the parameter dict
    # Function input dictionnary from client
    # Function output boolean true if match else False
    
    Ismail Moumni's avatar
    Ismail Moumni committed
    def query_valid(data: dict):
        if "parameters" in data:
            if (data["parameters"] == "request") & (len(data) < 2):
                return True
        return False
    
    
    
    Ismail Moumni's avatar
    Ismail Moumni committed
    # Function send_param_client send a dictionnary containing parameters
    #  needed to add a query to db
    # Function exmaple s = {"ARGUMENTS","Tools":"List of Tools" }
    # Function input takes dictionnary and a list of tools
    # Function output returns a new dictionnary containing arguments
    # # for db query and list of tools
    
    Ismail Moumni's avatar
    Ismail Moumni committed
    def send_param_client(__RDOS_Dict__: dict, __RDOS_Tools__: list):
        dict_cl = {}
        if len(__RDOS_Dict__) > 0:
            dict_cl["outils"] = (__RDOS_Tools__)
            s = {**__RDOS_Dict__, **dict_cl}
            return s