Skip to content

Commit

Permalink
#1404 Add debug and missing config
Browse files Browse the repository at this point in the history
  • Loading branch information
To-om committed Jul 2, 2020
1 parent ee2cd7d commit bc0f84e
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import org.thp.scalligraph.auth.AuthContext
import org.thp.scalligraph.models.{Database, Schema}
import org.thp.scalligraph.services.{GenIntegrityCheckOps, IntegrityCheckOps}
import org.thp.thehive.GuiceAkkaExtension
import play.api.Configuration
import play.api.{Configuration, Logger}

import scala.collection.JavaConverters._
import scala.collection.immutable
Expand All @@ -27,6 +27,7 @@ class IntegrityCheckActor() extends Actor {
case class Check(name: String)
import IntegrityCheckActor._

lazy val logger: Logger = Logger(getClass)
lazy val injector: Injector = GuiceAkkaExtension(context.system).injector
lazy val configuration: Configuration = injector.getInstance(classOf[Configuration])
lazy val integrityCheckOps: immutable.Set[IntegrityCheckOps[_ <: Product]] = injector
Expand Down Expand Up @@ -63,9 +64,11 @@ class IntegrityCheckActor() extends Actor {
override def receive: Receive = receive(Map.empty)
def receive(states: Map[String, (Boolean, Cancellable)]): Receive = {
case EntityAdded(name) =>
logger.debug(s"An entity $name has been created")
context.system.scheduler.scheduleOnce(initialDelay(name), self, NeedCheck(name))(context.system.dispatcher)
()
case NeedCheck(name) if !states.contains(name) => // initial check
logger.debug(s"Initial integrity check of $name")
check(name)
val timer = context.system.scheduler.scheduleAtFixedRate(Duration.Zero, interval(name), self, Check(name))(context.system.dispatcher)
context.become(receive(states + (name -> (false -> timer))))
Expand All @@ -75,10 +78,12 @@ class IntegrityCheckActor() extends Actor {
context.become(receive(states + (name -> (true -> timer))))
}
case Check(name) if states.get(name).fold(false)(_._1) => // stats.needCheck == true
logger.debug(s"Integrity check of $name")
check(name)
val timer = states(name)._2
context.become(receive(states + (name -> (false -> timer))))
case Check(name) =>
logger.debug(s"Pause integrity checks of $name, wait new add")
states(name)._2.cancel()
context.become(receive(states - name))
}
Expand Down
20 changes: 14 additions & 6 deletions thehive/app/org/thp/thehive/services/UserSrv.scala
Original file line number Diff line number Diff line change
Expand Up @@ -320,12 +320,20 @@ class UserIntegrityCheckOps @Inject() (

override def initialCheck()(implicit graph: Graph, authContext: AuthContext): Unit = {
super.initialCheck()
for {
adminUser <- service.getOrFail(User.init.login)
adminProfile <- profileSrv.getOrFail(Profile.admin.name)
adminOrganisation <- organisationSrv.getOrFail(Organisation.administration.name)
_ <- roleSrv.create(adminUser, adminOrganisation, adminProfile)
} yield ()
val adminUserIsCreated = service
.get(User.init.login)
.role
.filter(_.profile.getByName(Profile.admin.name))
.organisation
.getByName(Organisation.administration.name)
.exists()
if (!adminUserIsCreated)
for {
adminUser <- service.getOrFail(User.init.login)
adminProfile <- profileSrv.getOrFail(Profile.admin.name)
adminOrganisation <- organisationSrv.getOrFail(Organisation.administration.name)
_ <- roleSrv.create(adminUser, adminOrganisation, adminProfile)
} yield ()
()
}

Expand Down
34 changes: 19 additions & 15 deletions thehive/conf/reference.conf
Original file line number Diff line number Diff line change
Expand Up @@ -112,33 +112,37 @@ For user {{user.login}}
}

integrityCheck {
profile {
default {
initialDelay: 1 minute
interval: 10 minutes
}
profile {
initialDelay: 10 seconds
interval: 1 minutes
}
organisation {
initialDelay: 1 minute
interval: 10 minutes
initialDelay: 30 seconds
interval: 1 minutes
}
tag {
initialDelay: 1 minute
interval: 10 minutes
initialDelay: 5 minute
interval: 30 minutes
}
user {
initialDelay: 1 minute
interval: 10 minutes
initialDelay: 30 seconds
interval: 1 minutes
}
impactStatus {
initialDelay: 1 minute
interval: 10 minutes
initialDelay: 30 seconds
interval: 1 minutes
}
resolutionStatus {
initialDelay: 1 minute
interval: 10 minutes
initialDelay: 30 seconds
interval: 1 minutes
}
observableType {
initialDelay: 1 minute
interval: 10 minutes
initialDelay: 30 seconds
interval: 1 minutes
}
customField {
initialDelay: 1 minute
Expand All @@ -149,8 +153,8 @@ integrityCheck {
interval: 10 minutes
}
data {
initialDelay: 1 minute
interval: 10 minutes
initialDelay: 5 minute
interval: 30 minutes
}
case {
initialDelay: 1 minute
Expand Down

0 comments on commit bc0f84e

Please sign in to comment.