Skip to content

Commit

Permalink
#110 Responder input data is now Json
Browse files Browse the repository at this point in the history
  • Loading branch information
To-om committed Jul 26, 2018
1 parent 425376e commit e32249b
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 9 deletions.
14 changes: 13 additions & 1 deletion app/org/thp/cortex/controllers/JobCtrl.scala
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,19 @@ class JobCtrl @Inject() (
.map(_ NoContent)
}

def create(workerId: String): Action[Fields] = authenticated(Roles.analyze).async(fieldsBodyParser) { implicit request
def createResponderJob(workerId: String): Action[Fields] = authenticated(Roles.analyze).async(fieldsBodyParser) { implicit request
val fields = request.body
val fieldsWithStringData = fields.getValue("data") match {
case Some(d) fields.set("data", d.toString)
case None fields
}
jobSrv.create(workerId, fieldsWithStringData)
.map { job
renderer.toOutput(OK, job)
}
}

def createAnalyzerJob(workerId: String): Action[Fields] = authenticated(Roles.analyze).async(fieldsBodyParser) { implicit request
jobSrv.create(workerId, request.body)
.map { job
renderer.toOutput(OK, job)
Expand Down
10 changes: 7 additions & 3 deletions app/org/thp/cortex/models/Job.scala
Original file line number Diff line number Diff line change
Expand Up @@ -48,12 +48,16 @@ class Job(model: JobModel, attributes: JsObject) extends EntityDef[JobModel, Job
val params: JsObject = Try(Json.parse(parameters()).as[JsObject]).getOrElse(JsObject.empty)

override def toJson: JsObject = {
val output = super.toJson + ("date" Json.toJson(createdAt))
input().fold(output)(i output +
val output = input().fold(super.toJson)(i super.toJson +
("input" Json.parse(i))) +
("parameters" params) +
("analyzerId" JsString(workerId())) +
("analyzerName" JsString(workerName())) +
("analyzerDefinitionId" JsString(workerDefinitionId()))
("analyzerDefinitionId" JsString(workerDefinitionId())) +
("date" Json.toJson(createdAt))
data() match {
case Some(d) if tpe() == WorkerType.responder output + ("data" -> Json.parse(d))
case _ output
}
}
}
7 changes: 4 additions & 3 deletions app/org/thp/cortex/services/JobSrv.scala
Original file line number Diff line number Diff line change
Expand Up @@ -418,9 +418,10 @@ class JobSrv(
"file" file.toString,
"filename" job.attachment().get.name,
"contentType" job.attachment().get.contentType)
case None if job.data().nonEmpty
Json.obj(
"data" job.data().get)
case None if job.data().nonEmpty && job.tpe == WorkerType.responder
Json.obj("data" Json.parse(job.data().get))
case None if job.data().nonEmpty && job.tpe == WorkerType.analyzer
Json.obj("data" job.data().get)
}
.map { artifact
(BaseConfig.global(worker.tpe()).items ++ BaseConfig.tlp.items ++ BaseConfig.pap.items ++ workerDefinition.configurationItems)
Expand Down
4 changes: 2 additions & 2 deletions conf/routes
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,13 @@ GET /api/analyzer org.thp.cort
POST /api/analyzer/_search org.thp.cortex.controllers.AnalyzerCtrl.find
GET /api/analyzer/:id org.thp.cortex.controllers.AnalyzerCtrl.get(id)
GET /api/analyzer/type/:dataType org.thp.cortex.controllers.AnalyzerCtrl.listForType(dataType)
POST /api/analyzer/:id/run org.thp.cortex.controllers.JobCtrl.create(id)
POST /api/analyzer/:id/run org.thp.cortex.controllers.JobCtrl.createAnalyzerJob(id)

GET /api/responder org.thp.cortex.controllers.ResponderCtrl.find
POST /api/responder/_search org.thp.cortex.controllers.ResponderCtrl.find
GET /api/responder/:id org.thp.cortex.controllers.ResponderCtrl.get(id)
GET /api/responder/type/:dataType org.thp.cortex.controllers.ResponderCtrl.listForType(dataType)
POST /api/responder/:id/run org.thp.cortex.controllers.JobCtrl.create(id)
POST /api/responder/:id/run org.thp.cortex.controllers.JobCtrl.createResponderJob(id)

GET /api/job/:id/waitreport org.thp.cortex.controllers.JobCtrl.waitReport(id, atMost ?= "1minute")
####################
Expand Down

0 comments on commit e32249b

Please sign in to comment.