diff --git a/ScalliGraph b/ScalliGraph index 6b77db1293..f1a647d4dd 160000 --- a/ScalliGraph +++ b/ScalliGraph @@ -1 +1 @@ -Subproject commit 6b77db1293d5e1413a6201de6fa94a2a54ecf7fb +Subproject commit f1a647d4dd61f538d0d390f30d357e37d6a3aebc diff --git a/cortex/connector/src/main/scala/org/thp/thehive/connector/cortex/controllers/v0/AnalyzerTemplateCtrl.scala b/cortex/connector/src/main/scala/org/thp/thehive/connector/cortex/controllers/v0/AnalyzerTemplateCtrl.scala index 554f94221e..3f5955c062 100644 --- a/cortex/connector/src/main/scala/org/thp/thehive/connector/cortex/controllers/v0/AnalyzerTemplateCtrl.scala +++ b/cortex/connector/src/main/scala/org/thp/thehive/connector/cortex/controllers/v0/AnalyzerTemplateCtrl.scala @@ -1,7 +1,7 @@ package org.thp.thehive.connector.cortex.controllers.v0 import com.google.inject.name.Named -import org.thp.scalligraph.EntityIdOrName +import org.thp.scalligraph.{EntityIdOrName, NotFoundError} import org.thp.scalligraph.controllers.{Entrypoint, FFile, FieldsParser} import org.thp.scalligraph.models.{Database, Entity, UMapping} import org.thp.scalligraph.query._ @@ -37,6 +37,9 @@ class AnalyzerTemplateCtrl @Inject() ( analyzerTemplateSrv .getOrFail(EntityIdOrName(id)) .map(report => Results.Ok(report.content)) + .recover { + case _: NotFoundError => Results.NotFound(s"AnalyzerTemplate $id not found") + } } def importTemplates: Action[AnyContent] = diff --git a/cortex/connector/src/main/scala/org/thp/thehive/connector/cortex/services/JobSrv.scala b/cortex/connector/src/main/scala/org/thp/thehive/connector/cortex/services/JobSrv.scala index 322b750e4a..34d5df72bf 100644 --- a/cortex/connector/src/main/scala/org/thp/thehive/connector/cortex/services/JobSrv.scala +++ b/cortex/connector/src/main/scala/org/thp/thehive/connector/cortex/services/JobSrv.scala @@ -227,11 +227,11 @@ class JobSrv @Inject() ( Future .fromTry { db.tryTransaction { implicit graph => - for { - origObs <- get(job).observable.getOrFail("Observable") - obs <- observableSrv.create(artifact.toObservable(job._id, origObs.organisationIds), artifact.data.get) - _ <- addObservable(job, obs.observable) - } yield () + get(job).observable.getOrFail("Observable").map { origObs => + observableSrv + .create(artifact.toObservable(job._id, origObs.organisationIds), artifact.data.get) + .foreach(obs => addObservable(job, obs.observable)) + } } } } @@ -336,7 +336,7 @@ object JobOps { _.reportObservables .project( _.by(_.richObservable) - .by(_.similar.filter(_.`case`.observables.out[ObservableJob].where(P.eq[String](thisJob.name)))._id.fold) + .by(_.similar.where(_.`case`.observables.out[ObservableJob].v[Job].isStep(P.eq[String](thisJob.name)))._id.fold) ) .fold )