Skip to content

Commit

Permalink
#170 remove temporary files
Browse files Browse the repository at this point in the history
  • Loading branch information
To-om committed May 11, 2017
1 parent 8891a18 commit 6181b91
Showing 1 changed file with 30 additions and 23 deletions.
53 changes: 30 additions & 23 deletions thehive-backend/app/services/AlertSrv.scala
Original file line number Diff line number Diff line change
Expand Up @@ -142,31 +142,38 @@ class AlertSrv(
.set("status", CaseStatus.Open.toString))
.flatMap { caze setCase(alert, caze).map(_ caze) }
.flatMap { caze
Future.traverse(alert.artifacts()) { artifact
val tags = (artifact \ "tags").asOpt[Seq[JsString]].getOrElse(Nil) :+ JsString("src:" + alert.tpe())
val message = (artifact \ "message").asOpt[JsString].getOrElse(JsString(""))
val artifactFields = Fields(artifact +
("tags" JsArray(tags)) +
("message" message))
if (artifactFields.getString("dataType").contains("file")) {
artifactFields.getString("data").flatMap {
case dataExtractor(filename, contentType, data)
val f = Files.createTempFile("alert-", "-attachment")
Files.write(f, java.util.Base64.getDecoder.decode(data))
val fiv = FileInputValue(filename, f, contentType)
Some(attachmentSrv.save(fiv).map { attachment
artifactFields
.set("attachment", AttachmentInputValue(attachment))
.unset("data")
})
case _ None
Future
.traverse(alert.artifacts()) { artifact
val tags = (artifact \ "tags").asOpt[Seq[JsString]].getOrElse(Nil) :+ JsString("src:" + alert.tpe())
val message = (artifact \ "message").asOpt[JsString].getOrElse(JsString(""))
val artifactFields = Fields(artifact +
("tags" JsArray(tags)) +
("message" message))
if (artifactFields.getString("dataType").contains("file")) {
artifactFields.getString("data")
.flatMap {
case dataExtractor(filename, contentType, data)
val f = Files.createTempFile("alert-", "-attachment")
Files.write(f, java.util.Base64.getDecoder.decode(data))
val fiv = FileInputValue(filename, f, contentType)
Some(attachmentSrv
.save(fiv)
.map { attachment
artifactFields
.set("attachment", AttachmentInputValue(attachment))
.unset("data")
}
.andThen {
case _ Files.delete(f)
})
case _ None
}
.getOrElse(Future.successful(artifactFields))
}
else {
Future.successful(artifactFields)
}
.getOrElse(Future.successful(artifactFields))
}
else {
Future.successful(artifactFields)
}
}
.flatMap { artifactsFields
artifactSrv.create(caze, artifactsFields)
}
Expand Down

0 comments on commit 6181b91

Please sign in to comment.