Skip to content

Commit

Permalink
#137 Add "seen" attribute in alert artifact
Browse files Browse the repository at this point in the history
  • Loading branch information
To-om committed Oct 23, 2017
1 parent 2f82d50 commit f36c147
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 1 deletion.
6 changes: 5 additions & 1 deletion thehive-backend/app/controllers/AlertCtrl.scala
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,12 @@ class AlertCtrl @Inject() (
alertSrv.similarCases(alert)
.map(sc Json.obj("similarCases" Json.toJson(sc)))
else Future.successful(JsObject(Nil))
similarArtifacts if (withSimilarity)
alertSrv.alertArtifactsWithSeen(alert)
.map(aws Json.obj("artifacts" aws))
else Future.successful(JsObject(Nil))
} yield {
renderer.toOutput(OK, alertsWithStats ++ similarCases)
renderer.toOutput(OK, alertsWithStats ++ similarCases ++ similarArtifacts)
}
}

Expand Down
18 changes: 18 additions & 0 deletions thehive-backend/app/services/AlertSrv.scala
Original file line number Diff line number Diff line change
Expand Up @@ -320,6 +320,24 @@ class AlertSrv(
.runWith(Sink.seq)
}

def getArtifactSeen(artifact: JsObject): Future[Long] = {
val maybeArtifactSeen = for {
dataType (artifact \ "dataType").asOpt[String]
data dataType match {
case "file" (artifact \ "attachment").asOpt[Attachment].map(Right.apply)
case _ (artifact \ "data").asOpt[String].map(Left.apply)
}
numberOfSimilarArtifacts = artifactSrv.findSimilar(dataType, data, None, None, Nil)._2
} yield numberOfSimilarArtifacts
maybeArtifactSeen.getOrElse(Future.successful(0L))
}

def alertArtifactsWithSeen(alert: Alert): Future[Seq[JsObject]] = {
Future.traverse(alert.artifacts()) { artifact
getArtifactSeen(artifact).map(seen artifact + ("seen" JsNumber(seen)))
}
}

def fixStatus()(implicit authContext: AuthContext): Future[Unit] = {
import org.elastic4play.services.QueryDSL._

Expand Down

0 comments on commit f36c147

Please sign in to comment.