0799bfbae8
Sanitized version of red team infrastructure automation platform. Operational content (implant pipelines, lures, credential capture) replaced with documented stubs. Architecture and infrastructure automation code intact.
42 lines
1.5 KiB
Python
42 lines
1.5 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Provider selection and configuration utilities
|
|
"""
|
|
|
|
from ..utils.common import COLORS, PROVIDERS
|
|
from .aws_utils import gather_aws_config
|
|
from .linode_utils import gather_linode_config
|
|
from .flokinet_utils import gather_flokinet_config
|
|
|
|
def select_provider():
|
|
"""Let the user select a cloud provider"""
|
|
print(f"\n{COLORS['BLUE']}Available cloud providers:{COLORS['RESET']}")
|
|
for i, provider in enumerate(PROVIDERS, 1):
|
|
print(f" {i}. {provider.capitalize()}")
|
|
|
|
while True:
|
|
try:
|
|
provider_choice = input(f"\nSelect a provider (1-{len(PROVIDERS)} or 99 to cancel): ")
|
|
if provider_choice == "99":
|
|
return None
|
|
|
|
provider_choice = int(provider_choice)
|
|
if 1 <= provider_choice <= len(PROVIDERS):
|
|
return PROVIDERS[provider_choice - 1]
|
|
else:
|
|
print(f"{COLORS['RED']}Please enter a number between 1 and {len(PROVIDERS)}{COLORS['RESET']}")
|
|
except ValueError:
|
|
print(f"{COLORS['RED']}Please enter a valid number{COLORS['RESET']}")
|
|
|
|
def gather_provider_config(provider):
|
|
"""Gather configuration for the specified provider"""
|
|
if provider == "aws":
|
|
return gather_aws_config()
|
|
elif provider == "linode":
|
|
return gather_linode_config()
|
|
elif provider == "flokinet":
|
|
return gather_flokinet_config()
|
|
else:
|
|
print(f"{COLORS['RED']}Unknown provider: {provider}{COLORS['RESET']}")
|
|
return None
|