Skip to content

Commit

Permalink
#53 Move report tempate in cortex connector
Browse files Browse the repository at this point in the history
  • Loading branch information
To-om committed Dec 6, 2016
1 parent b2a6ce9 commit 0afb3cf
Show file tree
Hide file tree
Showing 8 changed files with 59 additions and 36 deletions.
6 changes: 0 additions & 6 deletions thehive-backend/conf/routes
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,6 @@ GET /api/case/template/:caseTemplateId controllers.CaseTemplateCtrl.g
PATCH /api/case/template/:caseTemplateId controllers.CaseTemplateCtrl.update(caseTemplateId)
DELETE /api/case/template/:caseTemplateId controllers.CaseTemplateCtrl.delete(caseTemplateId)

POST /api/report/template/_search controllers.ReportTemplateCtrl.find()
POST /api/report/template controllers.ReportTemplateCtrl.create()
GET /api/report/template/:caseTemplateId controllers.ReportTemplateCtrl.get(caseTemplateId)
PATCH /api/report/template/:caseTemplateId controllers.ReportTemplateCtrl.update(caseTemplateId)
DELETE /api/report/template/:caseTemplateId controllers.ReportTemplateCtrl.delete(caseTemplateId)

POST /api/case/artifact/_search controllers.ArtifactCtrl.find()
POST /api/case/:caseId/artifact/_search controllers.ArtifactCtrl.findInCase(caseId)
POST /api/case/artifact/_stats controllers.ArtifactCtrl.stats()
Expand Down
1 change: 1 addition & 0 deletions thehive-cortex/app/connectors/cortex/CortexConnector.scala
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package connectors.cortex
import play.api.{ Configuration, Environment, Logger }

import connectors.ConnectorModule
import connectors.cortex.controllers.CortextCtrl

class CortexConnector(
environment: Environment,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
package models

import javax.inject.{ Inject, Singleton }

import play.api.libs.json.JsObject

import org.elastic4play.models.{ AttributeDef, AttributeFormat F, EntityDef, ModelDef }

trait ReportTemplateAttributes { _: AttributeDef
val content = attribute("content", F.textFmt, "Content of the template")
val falvor = attribute("flavor", F.stringFmt, "Flavor of the report (short or long)")
val analyzers = multiAttribute("analyzers", F.stringFmt, "Id of analyzers")
}

@Singleton
class ReportTemplateModel @Inject() extends ModelDef[ReportTemplateModel, ReportTemplate]("reportTemplate") with ReportTemplateAttributes
package models

import javax.inject.{ Inject, Singleton }

import play.api.libs.json.JsObject

import org.elastic4play.models.{ AttributeDef, AttributeFormat F, EntityDef, ModelDef }

trait ReportTemplateAttributes { _: AttributeDef
val content = attribute("content", F.textFmt, "Content of the template")
val falvor = attribute("flavor", F.stringFmt, "Flavor of the report (short or long)")
val analyzers = multiAttribute("analyzers", F.stringFmt, "Id of analyzers")
}

@Singleton
class ReportTemplateModel @Inject() extends ModelDef[ReportTemplateModel, ReportTemplate]("reportTemplate") with ReportTemplateAttributes
class ReportTemplate(model: ReportTemplateModel, attributes: JsObject) extends EntityDef[ReportTemplateModel, ReportTemplate](model, attributes) with ReportTemplateAttributes
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package connectors.cortex
package connectors.cortex.controllers

import javax.inject.{ Inject, Singleton }

Expand All @@ -8,7 +8,7 @@ import play.api.Logger
import play.api.http.Status
import play.api.mvc.Controller
import play.api.routing.SimpleRouter
import play.api.routing.sird.{ GET, POST, UrlContext }
import play.api.routing.sird.{ DELETE, GET, PATCH, POST, UrlContext }

import org.elastic4play.{ BadRequestError, NotFoundError, Timed }
import org.elastic4play.controllers.{ Authenticated, FieldsBodyParser, Renderer }
Expand All @@ -22,6 +22,7 @@ import connectors.cortex.services.CortexSrv

@Singleton
class CortextCtrl @Inject() (
reportTemplateCtrl: ReportTemplateCtrl,
cortexSrv: CortexSrv,
authenticated: Authenticated,
fieldsBodyParser: FieldsBodyParser,
Expand All @@ -30,13 +31,19 @@ class CortextCtrl @Inject() (
val name = "cortex"
val log = Logger(getClass)
val router = SimpleRouter {
case POST(p"/job") createJob
case GET(p"/job/$jobId<[^/]*>") getJob(jobId)
case POST(p"/job/_search") findJob
case GET(p"/analyzer/$analyzerId<[^/]*>") getAnalyzer(analyzerId)
case POST(p"/job") createJob
case GET(p"/job/$jobId<[^/]*>") getJob(jobId)
case POST(p"/job/_search") findJob
case GET(p"/analyzer/$analyzerId<[^/]*>") getAnalyzer(analyzerId)
case GET(p"/analyzer/type/$dataType<[^/]*>") getAnalyzerFor(dataType)
case GET(p"/analyzer") listAnalyzer
case r throw NotFoundError(s"${r.uri} not found")
case GET(p"/analyzer") listAnalyzer
case POST(p"/report/template/_search") reportTemplateCtrl.find()
case POST(p"/report/template") reportTemplateCtrl.create()
case GET(p"/report/template/$caseTemplateId<[^/]*>") reportTemplateCtrl.get(caseTemplateId)
case PATCH(p"/report/template/$caseTemplateId<[^/]*>") reportTemplateCtrl.update(caseTemplateId)
case DELETE(p"/report/template/$caseTemplateId<[^/]*>") reportTemplateCtrl.delete(caseTemplateId)
case GET(p"/report/template/content/$analyzerId<[^/]*>/$flavor<[^/]*>") reportTemplateCtrl.getContent(analyzerId, flavor)
case r throw NotFoundError(s"${r.uri} not found")
}

@Timed
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package controllers
package connectors.cortex.controllers

import javax.inject.{ Inject, Singleton }

Expand All @@ -15,6 +15,9 @@ import org.elastic4play.services.AuxSrv
import org.elastic4play.services.JsonFormat.queryReads

import services.ReportTemplateSrv
import play.api.Logger
import akka.stream.scaladsl.Sink
import akka.stream.Materializer

@Singleton
class ReportTemplateCtrl @Inject() (
Expand All @@ -23,7 +26,10 @@ class ReportTemplateCtrl @Inject() (
authenticated: Authenticated,
renderer: Renderer,
fieldsBodyParser: FieldsBodyParser,
implicit val ec: ExecutionContext) extends Controller with Status {
implicit val ec: ExecutionContext,
implicit val mat: Materializer) extends Controller with Status {

lazy val logger = Logger(getClass)

@Timed
def create = authenticated(Role.admin).async(fieldsBodyParser) { implicit request
Expand All @@ -37,6 +43,21 @@ class ReportTemplateCtrl @Inject() (
.map(reportTemplate renderer.toOutput(OK, reportTemplate))
}

@Timed
def getContent(analyzerId: String, flavor: String) = authenticated(Role.read).async { implicit request
import QueryDSL._
val (reportTemplates, total) = reportTemplateSrv.find(and("analyzers" ~= analyzerId, "flavor" ~= flavor), Some("0-1"), Nil)
total.foreach { t
if (t > 1) logger.warn(s"Multiple report templates match for analyzer $analyzerId with flavor $flavor")
}
reportTemplates
.runWith(Sink.headOption)
.map {
case Some(reportTemplate) Ok(reportTemplate.content()).as("text/html")
case None NotFound("")
}
}

@Timed
def update(id: String) = authenticated(Role.admin).async(fieldsBodyParser) { implicit request
reportTemplateSrv.update(id, request.body)
Expand Down
2 changes: 1 addition & 1 deletion ui/app/scripts/services/AnalyzerSrv.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
'use strict';
angular.module('theHiveServices')
.factory('AnalyzerSrv', function($resource) {
return $resource('/api/analyzer/:analyzerId', {}, {
return $resource('/api/connector/cortex/analyzer/:analyzerId', {}, {
query: {
method: 'GET',
url: '/api/connector/cortex/analyzer',
Expand Down
6 changes: 3 additions & 3 deletions ui/app/scripts/services/ReportTemplateSrv.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
'use strict';
angular.module('theHiveServices')
.factory('ReportTemplateSrv', function($resource, $http) {
var baseUrl = '/api/report/template';
var baseUrl = '/api/connector/cortex/report/template';
var resource = $resource(baseUrl, {}, {
query: {
method: 'POST',
Expand Down Expand Up @@ -31,12 +31,12 @@
});
},

save: function(tpl) {
save: function(tpl) {
if(tpl.id) {
return $http.put(baseUrl + '/' + tpl.id, tpl, {});
} else {
return $http.post(baseUrl, tpl, {});
}
}
}
}

Expand Down

0 comments on commit 0afb3cf

Please sign in to comment.