Skip to content

Commit

Permalink
#1410 Add job object in flow
Browse files Browse the repository at this point in the history
  • Loading branch information
To-om committed Jul 7, 2020
1 parent c18552b commit 909fb25
Showing 1 changed file with 27 additions and 1 deletion.
28 changes: 27 additions & 1 deletion thehive/app/org/thp/thehive/controllers/v0/AuditRenderer.scala
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,12 @@ import java.lang.{Long => JLong}
import java.util.{Map => JMap}

import gremlin.scala.{__, By, Graph, Key, Vertex}
import org.thp.scalligraph.models.UniMapping
import org.thp.scalligraph.steps.StepsOps._
import org.thp.scalligraph.steps._
import org.thp.thehive.controllers.v0.Conversion._
import org.thp.thehive.services._
import play.api.libs.json.{JsNumber, JsObject}
import play.api.libs.json.{JsNumber, JsObject, JsString}

import scala.collection.JavaConverters._

Expand Down Expand Up @@ -50,6 +51,30 @@ trait AuditRenderer {
case (obs, caseOrAlert) => obs.as[JsObject] + ((caseOrAlert \ "_type").asOpt[String].getOrElse("???") -> caseOrAlert)
}

def jobToJson: VertexSteps[_ <: Product] => Traversal[JsObject, JsObject] = { s =>
val db = s.db
Traversal {
s.raw.map { vertex =>
JsObject(
db.getOptionProperty(vertex, "workerId", UniMapping.string.optional).map(v => "analyzerId" -> JsString(v)).toList :::
db.getOptionProperty(vertex, "workerName", UniMapping.string.optional).map(v => "analyzerName" -> JsString(v)).toList :::
db.getOptionProperty(vertex, "workerDefinition", UniMapping.string.optional).map(v => "analyzerDefinition" -> JsString(v)).toList :::
db.getOptionProperty(vertex, "status", UniMapping.string.optional).map(v => "status" -> JsString(v)).toList :::
db.getOptionProperty(vertex, "startDate", UniMapping.date.optional).map(v => "startDate" -> JsNumber(v.getTime)).toList :::
db.getOptionProperty(vertex, "endDate", UniMapping.date.optional).map(v => "endDate" -> JsNumber(v.getTime)).toList :::
db.getOptionProperty(vertex, "cortexId", UniMapping.string.optional).map(v => "cortexId" -> JsString(v)).toList :::
db.getOptionProperty(vertex, "cortexJobId", UniMapping.string.optional).map(v => "cortexJobId" -> JsString(v)).toList :::
db.getOptionProperty(vertex, "_createdBy", UniMapping.string.optional).map(v => "_createdBy" -> JsString(v)).toList :::
db.getOptionProperty(vertex, "_createdAt", UniMapping.date.optional).map(v => "_createdAt" -> JsNumber(v.getTime)).toList :::
db.getOptionProperty(vertex, "_updatedBy", UniMapping.string.optional).map(v => "_updatedBy" -> JsString(v)).toList :::
db.getOptionProperty(vertex, "_updatedAt", UniMapping.date.optional).map(v => "_updatedAt" -> JsNumber(v.getTime)).toList :::
db.getOptionProperty(vertex, "_type", UniMapping.string.optional).map(v => "_type" -> JsString(v)).toList :::
db.getOptionProperty(vertex, "_id", UniMapping.string.optional).map(v => "_id" -> JsString(v)).toList
)
}
}
}

def auditRenderer: AuditSteps => Traversal[JsObject, JsObject] =
(_: AuditSteps)
.coalesce[JsObject](
Expand All @@ -61,6 +86,7 @@ trait AuditRenderer {
BranchCase("Log", logToJson),
BranchCase("Observable", observableToJson),
BranchCase("Alert", alertToJson),
BranchCase("Job", jobToJson),
BranchOtherwise(_.constant(JsObject.empty))
),
_.constant(JsObject.empty)
Expand Down

0 comments on commit 909fb25

Please sign in to comment.