|
1 | 1 | package org.thp.cortex.services |
2 | 2 |
|
3 | | -import java.net.URL |
4 | | -import java.nio.file.{Files, Path, Paths} |
5 | | - |
6 | | -import scala.collection.JavaConverters._ |
7 | | -import scala.concurrent.{ExecutionContext, Future} |
8 | | -import scala.io.Codec |
9 | | -import scala.util.{Failure, Success, Try} |
10 | | - |
11 | | -import play.api.libs.json.{JsArray, JsObject, JsString, Json} |
12 | | -import play.api.{Configuration, Logger} |
13 | | - |
14 | 3 | import akka.NotUsed |
15 | 4 | import akka.stream.Materializer |
16 | 5 | import akka.stream.scaladsl.{Sink, Source} |
17 | | -import javax.inject.{Inject, Provider, Singleton} |
18 | | -import org.scalactic.Accumulation._ |
19 | | -import org.scalactic._ |
20 | | -import org.thp.cortex.models._ |
21 | | - |
22 | 6 | import org.elastic4play._ |
23 | 7 | import org.elastic4play.controllers.{Fields, StringInputValue} |
24 | 8 | import org.elastic4play.database.ModifyConfig |
| 9 | +import org.elastic4play.services.QueryDSL.any |
25 | 10 | import org.elastic4play.services._ |
| 11 | +import org.scalactic.Accumulation._ |
| 12 | +import org.scalactic._ |
| 13 | +import org.thp.cortex.models._ |
| 14 | +import play.api.libs.json.{JsObject, JsString, Json} |
| 15 | +import play.api.{Configuration, Logger} |
| 16 | + |
| 17 | +import java.net.URL |
| 18 | +import java.nio.file.{Files, Path, Paths} |
| 19 | +import javax.inject.{Inject, Provider, Singleton} |
| 20 | +import scala.collection.JavaConverters._ |
| 21 | +import scala.concurrent.{ExecutionContext, Future} |
| 22 | +import scala.io.Codec |
| 23 | +import scala.util.{Failure, Success, Try} |
26 | 24 |
|
27 | 25 | @Singleton |
28 | 26 | class WorkerSrv @Inject() ( |
@@ -128,21 +126,23 @@ class WorkerSrv @Inject() ( |
128 | 126 | private def find(queryDef: QueryDef, range: Option[String], sortBy: Seq[String]): (Source[Worker, NotUsed], Future[Long]) = |
129 | 127 | findSrv[WorkerModel, Worker](workerModel, queryDef, range, sortBy) |
130 | 128 |
|
131 | | - def rescan(): Unit = { |
132 | | - import org.elastic4play.services.QueryDSL._ |
| 129 | + def rescan(): Unit = |
133 | 130 | scan( |
134 | 131 | analyzersURLs.map(_ -> WorkerType.analyzer) ++ |
135 | 132 | respondersURLs.map(_ -> WorkerType.responder) |
136 | | - ).onComplete { _ => |
137 | | - userSrv.inInitAuthContext { implicit authContext => |
138 | | - find(any, Some("all"), Nil)._1.runForeach { worker => |
139 | | - workerMap.get(worker.workerDefinitionId()) match { |
140 | | - case Some(wd) => update(worker, Fields.empty.set("dataTypeList", Json.toJson(wd.dataTypeList))) |
141 | | - case None => update(worker, Fields.empty.set("dataTypeList", JsArray.empty)) |
142 | | - } |
143 | | - } |
144 | | - } |
| 133 | + ) |
| 134 | + |
| 135 | + def obsoleteWorkersForUser(userId: String): Future[Seq[Worker]] = |
| 136 | + userSrv.get(userId).flatMap { user => |
| 137 | + obsoleteWorkersForOrganization(user.organization()) |
145 | 138 | } |
| 139 | + |
| 140 | + def obsoleteWorkersForOrganization(organizationId: String): Future[Seq[Worker]] = { |
| 141 | + import org.elastic4play.services.QueryDSL._ |
| 142 | + find(withParent("organization", organizationId), Some("all"), Nil) |
| 143 | + ._1 |
| 144 | + .filterNot(worker => workerMap.contains(worker.workerDefinitionId())) |
| 145 | + .runWith(Sink.seq) |
146 | 146 | } |
147 | 147 |
|
148 | 148 | def scan(workerUrls: Seq[(String, WorkerType.Type)]): Future[Unit] = { |
@@ -250,7 +250,7 @@ class WorkerSrv @Inject() ( |
250 | 250 | .set("command", workerDefinition.command.map(p => JsString(p.toString))) |
251 | 251 | .set("url", workerDefinition.url) |
252 | 252 | .set("license", workerDefinition.license) |
253 | | - .set("baseConfig", workerDefinition.baseConfiguration.map(JsString.apply)) |
| 253 | + .set("baseConfig", workerDefinition.baseConfiguration.fold(JsString(workerDefinition.name))(JsString.apply)) |
254 | 254 | .set("configuration", cfg.toString) |
255 | 255 | .set("type", workerDefinition.tpe.toString) |
256 | 256 | .addIfAbsent("dataTypeList", StringInputValue(workerDefinition.dataTypeList)) |
|
0 commit comments