Skip to content

Commit

Permalink
#2149 Use appropriate text predicate
Browse files Browse the repository at this point in the history
  • Loading branch information
To-om committed Aug 9, 2021
1 parent 9ecbd14 commit d65d2f0
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 18 deletions.
5 changes: 2 additions & 3 deletions thehive/app/org/thp/thehive/controllers/v0/AlertCtrl.scala
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ class AlertCtrl(
.map {
case (richAlert, similarCases) =>
val alertWithObservables: (RichAlert, Seq[RichObservable]) =
richAlert -> observableSrv.startTraversal.relatedTo(richAlert._id).richObservableWithSeen(organisationSrv).toSeq
richAlert -> observableSrv.startTraversal.relatedTo(richAlert._id).richObservableWithSeen.toSeq

Results.Ok(alertWithObservables.toJson.as[JsObject] + ("similarCases" -> similarCases))
}
Expand Down Expand Up @@ -374,8 +374,7 @@ class AlertCtrl(
class PublicAlert(
alertSrv: AlertSrv,
val organisationSrv: OrganisationSrv,
val customFieldSrv: CustomFieldSrv,
db: Database
val customFieldSrv: CustomFieldSrv
) extends PublicData
with TheHiveOps {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package org.thp.thehive.models

import org.apache.tinkerpop.gremlin.process.traversal.{Order, P, TextP}
import org.apache.tinkerpop.gremlin.process.traversal.{Order, P}
import org.apache.tinkerpop.gremlin.structure.VertexProperty.Cardinality
import org.janusgraph.core.schema.ConsistencyModifier
import org.janusgraph.graphdb.types.TypeDefinitionCategory
Expand Down Expand Up @@ -123,7 +123,7 @@ object TheHiveSchemaDefinition extends Schema with UpdatableSchema with Traversa
}
.updateGraphVertices("Add each tag to its Organisation's FreeTags taxonomy", "Tag") { tags =>
tags
.unsafeHas("namespace", TextP.notStartingWith("_freetags_"))
.unsafeHas("namespace", TextPredicate.notStartsWith("_freetags_"))
.project(
_.by
.by(
Expand All @@ -137,7 +137,7 @@ object TheHiveSchemaDefinition extends Schema with UpdatableSchema with Traversa
.sort(_.by("_createdAt", Order.desc))
.limit(1)
.out("OrganisationTaxonomy")
.unsafeHas("namespace", TextP.startingWith("_freetags_"))
.unsafeHas("namespace", TextPredicate.startsWith("_freetags_"))
.option
)
)
Expand Down
2 changes: 1 addition & 1 deletion thehive/app/org/thp/thehive/services/ObservableSrv.scala
Original file line number Diff line number Diff line change
Expand Up @@ -324,7 +324,7 @@ trait ObservableOps { _: TheHiveOps =>
else
traversal.can(Permissions.manageObservable)

def richObservableWithSeen(organisationSrv: OrganisationSrv)(implicit
def richObservableWithSeen(implicit
authContext: AuthContext
): Traversal[RichObservable, JMap[String, Any], Converter[RichObservable, JMap[String, Any]]] =
traversal
Expand Down
13 changes: 6 additions & 7 deletions thehive/app/org/thp/thehive/services/TagSrv.scala
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,10 @@ package org.thp.thehive.services

import akka.actor.ActorRef
import com.softwaremill.tagging.@@
import org.apache.tinkerpop.gremlin.process.traversal.TextP
import org.apache.tinkerpop.gremlin.structure.Vertex
import org.thp.scalligraph.EntityIdOrName
import org.thp.scalligraph.auth.AuthContext
import org.thp.scalligraph.models.{Database, Entity}
import org.thp.scalligraph.models.{Database, Entity, TextPredicate}
import org.thp.scalligraph.services.config.{ApplicationConfig, ConfigItem}
import org.thp.scalligraph.services.{EdgeSrv, EntitySelector, IntegrityCheckOps, VertexSrv}
import org.thp.scalligraph.traversal.{Converter, Graph, Traversal}
Expand Down Expand Up @@ -147,15 +146,15 @@ trait TagOpsNoDeps { _: TheHiveOpsNoDeps =>

def autoComplete(organisationSrv: OrganisationSrv, freeTag: String)(implicit authContext: AuthContext): Traversal.V[Tag] =
freetags(organisationSrv)
.has(_.predicate, TextP.containing(freeTag))
.has(_.predicate, TextPredicate.contains(freeTag))

def autoComplete(namespace: Option[String], predicate: Option[String], value: Option[String])(implicit
authContext: AuthContext
): Traversal.V[Tag] =
traversal
.merge(namespace)((t, ns) => t.has(_.namespace, TextP.containing(ns)))
.merge(predicate)((t, p) => t.has(_.predicate, TextP.containing(p)))
.merge(value)((t, v) => t.has(_.value, TextP.containing(v)))
.merge(namespace)((t, ns) => t.has(_.namespace, TextPredicate.contains(ns)))
.merge(predicate)((t, p) => t.has(_.predicate, TextPredicate.contains(p)))
.merge(value)((t, v) => t.has(_.value, TextPredicate.contains(v)))
.visible

def visible(implicit authContext: AuthContext): Traversal.V[Tag] =
Expand Down Expand Up @@ -193,7 +192,7 @@ class TagIntegrityCheckOps(val db: Database, val service: TagSrv) extends Integr
Try {
val orphans = service
.startTraversal
.filter(_.taxonomy.has(_.namespace, TextP.startingWith("_freetags_")))
.filter(_.taxonomy.has(_.namespace, TextPredicate.startsWith("_freetags_")))
.filterNot(_.or(_.inE[AlertTag], _.inE[ObservableTag], _.inE[CaseTag], _.inE[CaseTemplateTag]))
._id
.toSeq
Expand Down
7 changes: 3 additions & 4 deletions thehive/app/org/thp/thehive/services/TaxonomySrv.scala
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
package org.thp.thehive.services

import org.apache.tinkerpop.gremlin.process.traversal.TextP
import org.thp.scalligraph.auth.AuthContext
import org.thp.scalligraph.models.Entity
import org.thp.scalligraph.models.{Entity, TextPredicate}
import org.thp.scalligraph.services.{EdgeSrv, VertexSrv}
import org.thp.scalligraph.traversal.Converter.Identity
import org.thp.scalligraph.traversal.{Converter, Graph, Traversal}
Expand Down Expand Up @@ -107,10 +106,10 @@ trait TaxonomyOps { _: TheHiveOpsNoDeps =>
noFreetags.filter(_.organisations.get(authContext.organisation))

def noFreetags: Traversal.V[Taxonomy] =
traversal.hasNot(_.namespace, TextP.startingWith("_freetags"))
traversal.hasNot(_.namespace, TextPredicate.startsWith("_freetags"))

def freetags: Traversal.V[Taxonomy] =
traversal.has(_.namespace, TextP.startingWith("_freetags"))
traversal.has(_.namespace, TextPredicate.startsWith("_freetags"))

def alreadyImported(namespace: String): Boolean =
traversal.getByNamespace(namespace).exists
Expand Down

0 comments on commit d65d2f0

Please sign in to comment.