Loading common_lib/schema/types.py +14 −0 Original line number Diff line number Diff line Loading @@ -72,6 +72,7 @@ from running_exercise.models import ( ActionLog, EmailThread, Email, SandboxLogDetails, ThreadParticipant, ToolDetails, InjectDetails, Loading Loading @@ -407,6 +408,7 @@ class OpenSearchAccessType(DjangoObjectType): team = graphene.Field(TeamType, required=True) index_name = graphene.String(required=True) username = graphene.String(required=True) last_sync = graphene.DateTime() password = graphene.String(required=True) def resolve_team(self, info): Loading Loading @@ -995,6 +997,16 @@ class IMilestoneModificationDetailsType(DjangoObjectType): ) class TSandboxLogDetailsType(DjangoObjectType): class Meta: model = SandboxLogDetails class ISandboxLogDetailsType(DjangoObjectType): class Meta: model = SandboxLogDetails class TActionLogDetails(graphene.Union): class Meta: types = [ Loading @@ -1008,6 +1020,7 @@ class TActionLogDetails(graphene.Union): TTeamQuestionnaireStateType, TFileDownloadDetailsType, TMilestoneModificationDetailsType, TSandboxLogDetailsType, ] Loading Loading @@ -1043,6 +1056,7 @@ class IActionLogDetails(graphene.Union): ITeamQuestionnaireStateType, IFileDownloadDetailsType, IMilestoneModificationDetailsType, ISandboxLogDetailsType, ] Loading dev/testing/client.py +1 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ class Client: def __init__(self, host: str, admin_username: str, admin_password: str): self.session = requests.session() self.url = host self.session.verify = False self.session.headers["Accept"] = "application/json" login( Loading dev/testing/users/gql_user.py +2 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ class GraphQLUser(HttpUser): self.client.headers["Accept"] = "application/json" self.client.headers["Content-Type"] = "application/json" self.client.verify = False def execute_query(self, action: APIAction) -> Response: logging.debug(f"Sending {type(action).__name__}") with self.client.post( Loading dev/testing/users/trainee_user.py +13 −0 Original line number Diff line number Diff line Loading @@ -217,6 +217,19 @@ class TraineeSimulationUser(GraphQLUser): name="downloadFile", headers={"Accept": "*/*"}, ) elif action_name == "sandbox_log": self.client.post( url=f"{self.host}/sandbox/{self.team.id}/", name="createSandboxLog", json={ "@timestamp": action["@timestamp"], "cmd": action["cmd"], "cmd_source": action["cmd_source"], "working_directory": action["working_directory"], "username": action["username"], "container": action["container"], }, ) else: logging.warning( f"Unsupported trainee action {action_name}, skipping" Loading exercise/lib/exercise_manager.py +2 −2 Original line number Diff line number Diff line Loading @@ -222,8 +222,8 @@ def create_exercise( create_team_questionnaire_states(teams, definition) create_drive_permissions(teams, definition.files.filter(is_drive=True)) if exercise.technical: create_opensearch_exercise(teams, exercise.id) # if exercise.technical: # create_opensearch_exercise(teams, exercise.id) return exercise Loading Loading
common_lib/schema/types.py +14 −0 Original line number Diff line number Diff line Loading @@ -72,6 +72,7 @@ from running_exercise.models import ( ActionLog, EmailThread, Email, SandboxLogDetails, ThreadParticipant, ToolDetails, InjectDetails, Loading Loading @@ -407,6 +408,7 @@ class OpenSearchAccessType(DjangoObjectType): team = graphene.Field(TeamType, required=True) index_name = graphene.String(required=True) username = graphene.String(required=True) last_sync = graphene.DateTime() password = graphene.String(required=True) def resolve_team(self, info): Loading Loading @@ -995,6 +997,16 @@ class IMilestoneModificationDetailsType(DjangoObjectType): ) class TSandboxLogDetailsType(DjangoObjectType): class Meta: model = SandboxLogDetails class ISandboxLogDetailsType(DjangoObjectType): class Meta: model = SandboxLogDetails class TActionLogDetails(graphene.Union): class Meta: types = [ Loading @@ -1008,6 +1020,7 @@ class TActionLogDetails(graphene.Union): TTeamQuestionnaireStateType, TFileDownloadDetailsType, TMilestoneModificationDetailsType, TSandboxLogDetailsType, ] Loading Loading @@ -1043,6 +1056,7 @@ class IActionLogDetails(graphene.Union): ITeamQuestionnaireStateType, IFileDownloadDetailsType, IMilestoneModificationDetailsType, ISandboxLogDetailsType, ] Loading
dev/testing/client.py +1 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ class Client: def __init__(self, host: str, admin_username: str, admin_password: str): self.session = requests.session() self.url = host self.session.verify = False self.session.headers["Accept"] = "application/json" login( Loading
dev/testing/users/gql_user.py +2 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ class GraphQLUser(HttpUser): self.client.headers["Accept"] = "application/json" self.client.headers["Content-Type"] = "application/json" self.client.verify = False def execute_query(self, action: APIAction) -> Response: logging.debug(f"Sending {type(action).__name__}") with self.client.post( Loading
dev/testing/users/trainee_user.py +13 −0 Original line number Diff line number Diff line Loading @@ -217,6 +217,19 @@ class TraineeSimulationUser(GraphQLUser): name="downloadFile", headers={"Accept": "*/*"}, ) elif action_name == "sandbox_log": self.client.post( url=f"{self.host}/sandbox/{self.team.id}/", name="createSandboxLog", json={ "@timestamp": action["@timestamp"], "cmd": action["cmd"], "cmd_source": action["cmd_source"], "working_directory": action["working_directory"], "username": action["username"], "container": action["container"], }, ) else: logging.warning( f"Unsupported trainee action {action_name}, skipping" Loading
exercise/lib/exercise_manager.py +2 −2 Original line number Diff line number Diff line Loading @@ -222,8 +222,8 @@ def create_exercise( create_team_questionnaire_states(teams, definition) create_drive_permissions(teams, definition.files.filter(is_drive=True)) if exercise.technical: create_opensearch_exercise(teams, exercise.id) # if exercise.technical: # create_opensearch_exercise(teams, exercise.id) return exercise Loading