Source code for pManager.dataModels.models

[docs] class Port: """ Class for representing a port in .qpmgr file. """ def __init__(self, serviceName, portNum, portProto, openState, portDesc = "No description"): # Port stateList self.__portOpenState = {"O": True, "C": False} # Variables self.__serviceName = serviceName self.__portNum = int(portNum) self.__portProtocol = portProto self.__portDescription = portDesc if type(openState) == bool: self.__opened = openState else: self.__opened = self.__portOpenState[openState]
[docs] def getPortAsJson(self): """ Returns the port details as a JSON-like dictionary. Returns: dict: A dictionary where the key is the port number, and the value is another dictionary containing: - "protocol" (str): The protocol of the port. - "description" (str): The description of the port. - "opened" (bool): The state of the port, whether it is open or closed. """ return { self.__portNum: { "protocol": self.__portProtocol, "description": self.__portDescription, "opened": self.__opened } }
[docs] def getServiceName(self): """ Returns the name of the service associated with the port. Returns: str: The name of the service. """ return self.__serviceName
[docs] class Service: """ Class for representing a service in .qpmgr file. """ def __init__(self, serviceName, portList=None, serviceDescription ="No description"): if portList is None: portList = { -1: { "protocol": "TCP", "description": "PORTLIST NOT SET", "opened": False } } self.isPortsAdded = False self.__portList = portList self.__serviceName = serviceName self.__serviceDescription = serviceDescription self.__portRecordMask = "$PROTOCOL::$PORT::$STATE::$DESCRIPTION" print(f'portList: {self.__portList}\ndescription: {self.__serviceDescription}')
[docs] def addPortToService(self, portJson): """ Adds a port to the service. Args: portJson (dict): Json of the port to add """ if self.isPortsAdded: self.__portList.update(portJson) else: self.__portList = portJson self.isPortsAdded = True
[docs] def getServiceName(self): """ Returns the name of the service. Returns: str: The name of the service. """ return self.__serviceName
[docs] def getServiceDescription(self): """ Returns the description of the service. Returns: str: The description of the service. """ return self.__serviceDescription
[docs] def generatePortConfig(self): """ Returns the port configuration of the service. Returns: str: The port configuration of the service. """ ports = [] if type(self.__portList) is dict: for __p in self.__portList.keys(): port = self.__portList[__p] portConfig = (self.__portRecordMask .replace("$PROTOCOL", port['protocol'], 1) .replace("$PORT", str(__p), 1) .replace("$STATE", "O" if port['opened'] else "C", 1) .replace("$DESCRIPTION", port['description'], 1) ) ports.append(portConfig) else: ports = ["-1::TCP::C::PORTLIST NOT SET"] return "; ".join(ports)
[docs] def getServiceAsJson(self): """ Returns the service details as a JSON-like dictionary. Returns: dict: A dictionary where the key is the service name, and the value is another dictionary containing: - "ports" (dict): A dictionary where the key is the port number, and the value is another dictionary containing: - "protocol" (str): The protocol of the port. - "description" (str): The description of the port. - "opened" (bool): The state of the port, whether it is open or closed. - "description" (str): The description of the service. """ return { self.__serviceName: { "ports": self.__portList, "description": self.__serviceDescription } }