MCPcopy
hub / github.com/apache/caldera / rest_core

Method rest_core

app/api/rest_api.py:61–105  ·  view source on GitHub ↗
(self, request)

Source from the content-addressed store, hash-verified

59
60 @check_authorization
61 async def rest_core(self, request):
62 try:
63 access = dict(access=tuple(await self.auth_svc.get_permissions(request)))
64 data = dict(await request.json())
65 index = data.pop('index')
66 options = dict(
67 DELETE=dict(
68 agents=lambda d: self.rest_svc.delete_agent(d),
69 operations=lambda d: self.rest_svc.delete_operation(d),
70 abilities=lambda d: self.rest_svc.delete_ability(d),
71 adversaries=lambda d: self.rest_svc.delete_adversary(d)
72 ),
73 PUT=dict(
74 adversaries=lambda d: self.rest_svc.persist_adversary(access, d),
75 abilities=lambda d: self.rest_svc.persist_ability(access, d),
76 sources=lambda d: self.rest_svc.persist_source(access, d),
77 objectives=lambda d: self.rest_svc.persist_objective(access, d),
78 planners=lambda d: self.rest_svc.update_planner(d),
79 agents=lambda d: self.rest_svc.update_agent_data(d),
80 chain=lambda d: self.rest_svc.update_chain_data(d),
81 operations=lambda d: self.rest_svc.create_operation(access, d),
82 schedule=lambda d: self.rest_svc.create_schedule(access, d),
83 link=lambda d: self.rest_svc.apply_potential_link(Link.load(d)),
84 manual_command=lambda d: self.rest_svc.add_manual_command(access, d)
85 ),
86 POST=dict(
87 operation_report=lambda d: self.rest_svc.display_operation_report(d),
88 result=lambda d: self.rest_svc.display_result(d),
89 contact=lambda d: self.rest_svc.download_contact_report(d),
90 configuration=lambda d: self.rest_svc.update_config(d),
91 link=lambda d: self.rest_svc.get_potential_links(**d),
92 operation=lambda d: self.rest_svc.update_operation(**d),
93 task=lambda d: self.rest_svc.task_agent_with_ability(**d),
94 agent_configuration=lambda d: self.rest_svc.get_agent_configuration(d),
95 exfil_files=lambda d: self.rest_svc.list_exfil_files(d)
96 )
97 )
98 if index not in options[request.method]:
99 search = {**data, **access}
100 return web.json_response(await self.rest_svc.display_objects(index, search))
101 return web.json_response(await options[request.method][index](data))
102 except ma.ValidationError as e:
103 raise web.HTTPBadRequest(content_type='application/json', text=json.dumps(e.messages))
104 except Exception as e:
105 self.log.error(repr(e), exc_info=True)
106
107 @check_authorization
108 async def rest_core_info(self, request):

Callers

nothing calls this directly

Calls 15

persist_objectiveMethod · 0.80
add_manual_commandMethod · 0.80
list_exfil_filesMethod · 0.80
get_permissionsMethod · 0.45
delete_agentMethod · 0.45
delete_operationMethod · 0.45
delete_abilityMethod · 0.45
delete_adversaryMethod · 0.45
persist_adversaryMethod · 0.45
persist_abilityMethod · 0.45
persist_sourceMethod · 0.45

Tested by

no test coverage detected