Skip to content

Commit 5e99e7a

Browse files
committed
Check if database is ready before starting MISP synchronization
1 parent bc5ba12 commit 5e99e7a

File tree

2 files changed

+23
-17
lines changed

2 files changed

+23
-17
lines changed

thehive-backend/app/models/Audit.scala

+3-3
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import javax.inject.{ Inject, Singleton }
66
import scala.collection.immutable
77
import play.api.{ Configuration, Logger }
88
import play.api.libs.json.JsObject
9-
import org.elastic4play.models.{ Attribute, AttributeFormat, AttributeDef, EntityDef, EnumerationAttributeFormat, ListEnumeration, ModelDef, MultiAttributeFormat, ObjectAttributeFormat, OptionalAttributeFormat, StringAttributeFormat, AttributeOption O }
9+
import org.elastic4play.models.{ Attribute, AttributeFormat, AttributeDef, EntityDef, EnumerationAttributeFormat, ListEnumerationAttributeFormat, ModelDef, MultiAttributeFormat, ObjectAttributeFormat, OptionalAttributeFormat, StringAttributeFormat, AttributeOption O }
1010
import org.elastic4play.services.AuditableAction
1111
import org.elastic4play.services.JsonFormat.auditableActionFormat
1212
import services.AuditedModel
@@ -44,8 +44,8 @@ class AuditModel(
4444
case (OptionalAttributeFormat(f1), f2) mergeAttributeFormat(context, f1, f2)
4545
case (f1, OptionalAttributeFormat(f2)) mergeAttributeFormat(context, f1, f2)
4646
case (MultiAttributeFormat(f1), MultiAttributeFormat(f2)) mergeAttributeFormat(context, f1, f2).map(MultiAttributeFormat(_))
47-
case (f1, EnumerationAttributeFormat(_) | ListEnumeration(_)) mergeAttributeFormat(context, f1, StringAttributeFormat)
48-
case (EnumerationAttributeFormat(_) | ListEnumeration(_), f2) mergeAttributeFormat(context, StringAttributeFormat, f2)
47+
case (f1, EnumerationAttributeFormat(_) | ListEnumerationAttributeFormat(_)) mergeAttributeFormat(context, f1, StringAttributeFormat)
48+
case (EnumerationAttributeFormat(_) | ListEnumerationAttributeFormat(_), f2) mergeAttributeFormat(context, StringAttributeFormat, f2)
4949
case (ObjectAttributeFormat(subAttributes1), ObjectAttributeFormat(subAttributes2)) mergeAttributes(context, subAttributes1 ++ subAttributes2)
5050
case (f1, f2) if f1 == f2 Some(f1)
5151
case (f1, f2)

thehive-misp/app/connectors/misp/MispSrv.scala

+20-14
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import net.lingala.zip4j.core.ZipFile
1414
import net.lingala.zip4j.exception.ZipException
1515
import net.lingala.zip4j.model.FileHeader
1616
import org.elastic4play.controllers.{ Fields, FileInputValue }
17-
import org.elastic4play.services.{ AttachmentSrv, AuthContext, EventSrv, TempSrv }
17+
import org.elastic4play.services.{ UserSrv _, _ }
1818
import org.elastic4play.utils.RichJson
1919
import org.elastic4play.{ InternalError, NotFoundError }
2020
import play.api.inject.ApplicationLifecycle
@@ -92,6 +92,7 @@ class MispSrv @Inject() (
9292
attachmentSrv: AttachmentSrv,
9393
tempSrv: TempSrv,
9494
eventSrv: EventSrv,
95+
migrationSrv: MigrationSrv,
9596
httpSrv: CustomWSAPI,
9697
environment: Environment,
9798
lifecycle: ApplicationLifecycle,
@@ -110,19 +111,24 @@ class MispSrv @Inject() (
110111

111112
private[misp] def initScheduler() = {
112113
val task = system.scheduler.schedule(0.seconds, mispConfig.interval) {
113-
logger.info("Update of MISP events is starting ...")
114-
userSrv
115-
.inInitAuthContext { implicit authContext
116-
synchronize().andThen { case _ tempSrv.releaseTemporaryFiles() }
117-
}
118-
.onComplete {
119-
case Success(a)
120-
logger.info("Misp synchronization completed")
121-
a.collect {
122-
case Failure(t) logger.warn(s"Update MISP error", t)
123-
}
124-
case Failure(t) logger.info("Misp synchronization failed", t)
125-
}
114+
if (migrationSrv.isReady) {
115+
logger.info("Update of MISP events is starting ...")
116+
userSrv
117+
.inInitAuthContext { implicit authContext
118+
synchronize().andThen { case _ tempSrv.releaseTemporaryFiles() }
119+
}
120+
.onComplete {
121+
case Success(a)
122+
logger.info("Misp synchronization completed")
123+
a.collect {
124+
case Failure(t) logger.warn(s"Update MISP error", t)
125+
}
126+
case Failure(t) logger.info("Misp synchronization failed", t)
127+
}
128+
}
129+
else {
130+
logger.info("MISP synchronization cancel, database is not ready")
131+
}
126132
}
127133
lifecycle.addStopHook { ()
128134
logger.info("Stopping MISP fetching ...")

0 commit comments

Comments
 (0)