blob: 9c83a1e91634a2653009923274efecfb9c319623 [file]
from aiohttp_jinja2 import template
from app.service.auth_svc import check_authorization
from app.utility.base_world import BaseWorld
class AdvancedPack(BaseWorld):
def __init__(self, services):
self.app_svc = services.get('app_svc')
self.auth_svc = services.get('auth_svc')
self.contact_svc = services.get('contact_svc')
self.data_svc = services.get('data_svc')
self.rest_svc = services.get('rest_svc')
async def enable(self):
self.app_svc.application.router._frozen = False
self.app_svc.application.router.add_route('GET', '/advanced/sources', self._section_sources)
self.app_svc.application.router.add_route('GET', '/advanced/objectives', self._section_objectives)
self.app_svc.application.router.add_route('GET', '/advanced/planners', self._section_planners)
self.app_svc.application.router.add_route('GET', '/advanced/contacts', self._section_contacts)
self.app_svc.application.router.add_route('GET', '/advanced/obfuscators', self._section_obfuscators)
self.app_svc.application.router.add_route('GET', '/advanced/configurations', self._section_configurations)
self.app_svc.application.router.add_route('GET', '/advanced/exfills', self._section_exfil_files)
@check_authorization
@template('planners.html')
async def _section_planners(self, request):
planners = [p.display for p in await self.data_svc.locate('planners')]
return dict(planners=planners)
@check_authorization
@template('contacts.html')
async def _section_contacts(self, request):
contacts = [dict(name=c.name, description=c.description) for c in self.contact_svc.contacts]
return dict(contacts=contacts)
@check_authorization
@template('obfuscators.html')
async def _section_obfuscators(self, request):
obfuscators = [o.display for o in await self.data_svc.locate('obfuscators')]
return dict(obfuscators=obfuscators)
@check_authorization
@template('configurations.html')
async def _section_configurations(self, request):
return dict(config=self.get_config(), plugins=[p for p in await self.data_svc.locate('plugins')])
@check_authorization
@template('sources.html')
async def _section_sources(self, request):
access = await self.auth_svc.get_permissions(request)
return dict(sources=[s.display for s in await self.data_svc.locate('sources', match=dict(access=tuple(access)))])
@check_authorization
@template('objectives.html')
async def _section_objectives(self, request):
access = await self.auth_svc.get_permissions(request)
return dict(objectives=[o.display for o in await self.data_svc.locate('objectives', match=dict(access=tuple(access)))])
@check_authorization
@template('exfilled_files.html')
async def _section_exfil_files(self, request):
access = await self.auth_svc.get_permissions(request)
return dict(exfil_dir=self.get_config('exfil_dir'), operations=[o.display for o in await self.data_svc.locate('operations', match=dict(access=tuple(access)))])