From fb1f8b59d975598f0062fe1e6d220054c9b0a857 Mon Sep 17 00:00:00 2001 From: To-om Date: Mon, 14 Jun 2021 11:36:33 +0200 Subject: [PATCH] #2081 Put parameter in querystring --- .../thehive/controllers/v1/AdminCtrl.scala | 22 ++++++++----------- .../thp/thehive/controllers/v1/Router.scala | 14 ++++++------ 2 files changed, 16 insertions(+), 20 deletions(-) diff --git a/thehive/app/org/thp/thehive/controllers/v1/AdminCtrl.scala b/thehive/app/org/thp/thehive/controllers/v1/AdminCtrl.scala index 4766cf5103..f91a146d3e 100644 --- a/thehive/app/org/thp/thehive/controllers/v1/AdminCtrl.scala +++ b/thehive/app/org/thp/thehive/controllers/v1/AdminCtrl.scala @@ -141,17 +141,13 @@ class AdminCtrl @Inject() ( } private val rangeRegex = "(\\d+)-(\\d+)".r - private def getOperations(schemaName: String, select: String, filter: String): Seq[(Operation, Int)] = { - val ranges = select match { - case "all" => Seq(0 until Int.MaxValue) - case other => - other.split(',').toSeq.map { - case rangeRegex(from, to) => from.toInt to to.toInt - case number => number.toInt to number.toInt - } - } + private def getOperations(schemaName: String, select: Option[String], filter: Option[String]): Seq[(Operation, Int)] = { + val ranges = select.fold(Seq(0 until Int.MaxValue))(_.split(',').toSeq.map { + case rangeRegex(from, to) => from.toInt to to.toInt + case number => number.toInt to number.toInt + }) - val filters = filter.split(',') + val filters = filter.fold(Seq("all"))(_.split(',')) schemas .filter(_.name == schemaName) @@ -162,7 +158,7 @@ class AdminCtrl @Inject() ( .operations .zipWithIndex .filter { - case (_, i) => ranges.exists(_.contains(i + 1)) + case (_, i) => ranges.exists(_.contains(i)) } .filter { case (_: AddVertexModel, _) => @@ -197,7 +193,7 @@ class AdminCtrl @Inject() ( } } - def schemaRepair(schemaName: String, select: String, filter: String): Action[AnyContent] = + def schemaRepair(schemaName: String, select: Option[String], filter: Option[String]): Action[AnyContent] = entrypoint("Repair schema") .authPermitted(Permissions.managePlatform) { _ => val result = getOperations(schemaName, select, filter) @@ -213,7 +209,7 @@ class AdminCtrl @Inject() ( Success(Results.Ok(Json.toJson(result))) } - def schemaInfo(schemaName: String, select: String, filter: String): Action[AnyContent] = + def schemaInfo(schemaName: String, select: Option[String], filter: Option[String]): Action[AnyContent] = entrypoint("Schema info") .authPermitted(Permissions.managePlatform) { _ => val output = getOperations(schemaName, select, filter).map { diff --git a/thehive/app/org/thp/thehive/controllers/v1/Router.scala b/thehive/app/org/thp/thehive/controllers/v1/Router.scala index a868ec07b6..622167041a 100644 --- a/thehive/app/org/thp/thehive/controllers/v1/Router.scala +++ b/thehive/app/org/thp/thehive/controllers/v1/Router.scala @@ -43,13 +43,13 @@ class Router @Inject() ( case GET(p"/status") => statusCtrl.get // GET /health controllers.StatusCtrl.health - case GET(p"/admin/check/stats") => adminCtrl.checkStats - case GET(p"/admin/check/$name/trigger") => adminCtrl.triggerCheck(name) - case GET(p"/admin/index/status") => adminCtrl.indexStatus - case GET(p"/admin/index/$name/reindex") => adminCtrl.reindex(name) - case GET(p"/admin/log/set/$packageName/$level") => adminCtrl.setLogLevel(packageName, level) - case POST(p"/admin/schema/repair/$schemaName/$select/$filter") => adminCtrl.schemaRepair(schemaName, select, filter) - case POST(p"/admin/schema/info/$schemaName/$select/$filter") => adminCtrl.schemaInfo(schemaName, select, filter) + case GET(p"/admin/check/stats") => adminCtrl.checkStats + case GET(p"/admin/check/$name/trigger") => adminCtrl.triggerCheck(name) + case GET(p"/admin/index/status") => adminCtrl.indexStatus + case GET(p"/admin/index/$name/reindex") => adminCtrl.reindex(name) + case GET(p"/admin/log/set/$packageName/$level") => adminCtrl.setLogLevel(packageName, level) + case POST(p"/admin/schema/repair/$schemaName" ? q_o"select=$select" ? q_o"filter=$filter") => adminCtrl.schemaRepair(schemaName, select, filter) + case POST(p"/admin/schema/info/$schemaName" ? q_o"select=$select" ? q_o"filter=$filter") => adminCtrl.schemaInfo(schemaName, select, filter) // GET /logout controllers.AuthenticationCtrl.logout() case GET(p"/logout") => authenticationCtrl.logout