From 7c473066e0f2b9d648a4802de6d6e6aec6bb5435 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Ko=C5=82odziejczyk?= Date: Mon, 20 May 2019 21:01:33 +0200 Subject: [PATCH] wip: ror stating algorithm --- config/elasticsearch.keystore | Bin 0 -> 207 bytes core/build.gradle | 21 ++++---- .../main/scala/tech/beshu/ror/RorEngine.scala | 39 +++++++++++++- .../tech/beshu/ror/RorEngineFactory.scala | 7 +-- .../beshu/ror/acl/logging/AuditingTool.scala | 5 +- .../ror/configuration/ConfigLoader.scala | 27 +++++++++- .../beshu/ror/configuration/EsConfig.scala | 48 ++++++++++++++++++ .../ror/configuration/FileConfigLoader.scala | 46 ++++++++++++++++- .../ror/configuration/IndexConfigLoader.scala | 39 +++++++++++++- .../ror/configuration/RawRorConfig.scala | 24 --------- .../scala/tech/beshu/ror/es/AuditSink.scala | 5 ++ .../beshu/ror/es/IndexContentProvider.scala | 17 +++++++ .../beshu/ror/utils/EnvVarsProvider.scala | 2 +- .../AuthKeyYamlLoadedAclTests.scala | 4 +- ...banaIndexAndAccessYamlLoadedAclTests.scala | 4 +- .../RorKbnAuthYamlLoadedAclTests.scala | 4 +- .../acl/factory/AuditingSettingsTests.scala | 4 +- .../unit/acl/factory/CoreFactoryTests.scala | 4 +- .../BaseRuleSettingsDecoderTest.scala | 4 +- .../unit/acl/logging/AuditingToolTests.scala | 3 +- .../beshu/ror/es/IndexLevelActionFilter.java | 1 - .../beshu/ror/es/IndexLevelActionFilter.java | 2 +- .../beshu/ror/es/IndexLevelActionFilter.java | 2 +- .../beshu/ror/es/IndexLevelActionFilter.java | 2 +- .../beshu/ror/es/IndexLevelActionFilter.java | 2 +- .../beshu/ror/es/IndexLevelActionFilter.java | 1 - .../beshu/ror/es/IndexLevelActionFilter.java | 1 - .../beshu/ror/es/IndexLevelActionFilter.java | 1 - .../beshu/ror/es/IndexLevelActionFilter.java | 1 - .../plugin-descriptor.properties | 4 +- .../readonlyrest/plugin-descriptor.properties | 2 +- 31 files changed, 251 insertions(+), 75 deletions(-) create mode 100644 config/elasticsearch.keystore create mode 100644 core/src/main/scala/tech/beshu/ror/configuration/EsConfig.scala delete mode 100644 core/src/main/scala/tech/beshu/ror/configuration/RawRorConfig.scala create mode 100644 core/src/main/scala/tech/beshu/ror/es/AuditSink.scala create mode 100644 core/src/main/scala/tech/beshu/ror/es/IndexContentProvider.scala diff --git a/config/elasticsearch.keystore b/config/elasticsearch.keystore new file mode 100644 index 0000000000000000000000000000000000000000..1b897b1d8f9dc4930300d2ce4996e570310eb480 GIT binary patch literal 207 zcmcD&o+B=nnv+;ul9^nbnpl*ap_iRnSzMA|l*+)szzoC;vw_$lP3i0F$pOoRZLW$Z zP1V~lH!bg*=;050=jq>`RI{Li?cmw%xpSSKTju@mxF4mlnom<<_DSY + StartingFailure(s"Cannot find elasticsearch config file: [${file.pathAsString}]") + case LoadEsConfigError.MalformedContent(file, ex) => + StartingFailure(s"Elasticsearch config file is malformed: [${file.pathAsString}]", Some(ex)) + }) + } + } } +final case class StartingFailure(message: String, throwable: Option[Throwable] = None) + final class Engine(val acl: Acl, val context: AclStaticContext, httpClientsFactory: AsyncHttpClientsFactory) { def shutdown(): Unit = { httpClientsFactory.shutdown() diff --git a/core/src/main/scala/tech/beshu/ror/RorEngineFactory.scala b/core/src/main/scala/tech/beshu/ror/RorEngineFactory.scala index f8952dd51a..ced61bb637 100644 --- a/core/src/main/scala/tech/beshu/ror/RorEngineFactory.scala +++ b/core/src/main/scala/tech/beshu/ror/RorEngineFactory.scala @@ -5,17 +5,18 @@ import java.time.Clock import monix.eval.Task import tech.beshu.ror.acl.factory.CoreFactory.AclCreationError.Reason import tech.beshu.ror.acl.factory.{AsyncHttpClientsFactory, CoreFactory} -import tech.beshu.ror.acl.logging.{AclLoggingDecorator, AuditSink, AuditingTool} +import tech.beshu.ror.acl.logging.{AclLoggingDecorator, AuditingTool} import tech.beshu.ror.acl.utils.StaticVariablesResolver import tech.beshu.ror.acl.{Acl, AclStaticContext} +import tech.beshu.ror.es.AuditSink import tech.beshu.ror.settings.SettingsMalformedException -import tech.beshu.ror.utils.{JavaEnvVarsProvider, JavaUuidProvider, UuidProvider} +import tech.beshu.ror.utils.{JavaUuidProvider, OsEnvVarsProvider, UuidProvider} object RorEngineFactory { private implicit val clock: Clock = Clock.systemUTC() private implicit val uuidProvider: UuidProvider = JavaUuidProvider - private implicit val resolver: StaticVariablesResolver = new StaticVariablesResolver(JavaEnvVarsProvider) + private implicit val resolver: StaticVariablesResolver = new StaticVariablesResolver(OsEnvVarsProvider) private val aclFactory = new CoreFactory def reload(auditSink: AuditSink, diff --git a/core/src/main/scala/tech/beshu/ror/acl/logging/AuditingTool.scala b/core/src/main/scala/tech/beshu/ror/acl/logging/AuditingTool.scala index f9bbb8fb9f..5c852e457d 100644 --- a/core/src/main/scala/tech/beshu/ror/acl/logging/AuditingTool.scala +++ b/core/src/main/scala/tech/beshu/ror/acl/logging/AuditingTool.scala @@ -28,6 +28,7 @@ import tech.beshu.ror.acl.logging.AuditingTool.Settings import tech.beshu.ror.acl.request.RequestContext import tech.beshu.ror.audit.{AuditLogSerializer, AuditRequestContext, AuditResponseContext} import tech.beshu.ror.acl.show.logs._ +import tech.beshu.ror.es.AuditSink class AuditingTool(settings: Settings, auditSink: AuditSink) @@ -113,7 +114,3 @@ object AuditingTool { logSerializer: AuditLogSerializer) } - -trait AuditSink { - def submit(indexName: String, documentId: String, jsonRecord: String): Unit -} diff --git a/core/src/main/scala/tech/beshu/ror/configuration/ConfigLoader.scala b/core/src/main/scala/tech/beshu/ror/configuration/ConfigLoader.scala index 453345e1af..83c72d654b 100644 --- a/core/src/main/scala/tech/beshu/ror/configuration/ConfigLoader.scala +++ b/core/src/main/scala/tech/beshu/ror/configuration/ConfigLoader.scala @@ -1,8 +1,31 @@ package tech.beshu.ror.configuration +import io.circe.Json import monix.eval.Task +import tech.beshu.ror.configuration.ConfigLoader.{ConfigLoaderError, RawRorConfig} +import tech.beshu.ror.configuration.ConfigLoader.ConfigLoaderError.{MoreThanOneRorSection, NoRorSection} -trait ConfigLoader { +trait ConfigLoader[SPECIALIZED_ERROR] { - def load(): Task[RawRorConfig] + def load(): Task[Either[ConfigLoaderError[SPECIALIZED_ERROR], RawRorConfig]] + + protected def validateRorJson(json: Json): Either[ConfigLoaderError[SPECIALIZED_ERROR], Json] = { + json \\ "readonlyrest" match { + case Nil => Left(NoRorSection) + case one :: Nil => Right(one) + case _ => Left(MoreThanOneRorSection) + } + } } + +object ConfigLoader { + + final case class RawRorConfig(rawConfig: Json) extends AnyVal + + sealed trait ConfigLoaderError[+SPECIALIZED_ERROR] + object ConfigLoaderError { + case object NoRorSection extends ConfigLoaderError[Nothing] + case object MoreThanOneRorSection extends ConfigLoaderError[Nothing] + final case class SpecializedError[ERROR](error: ERROR) extends ConfigLoaderError[ERROR] + } +} \ No newline at end of file diff --git a/core/src/main/scala/tech/beshu/ror/configuration/EsConfig.scala b/core/src/main/scala/tech/beshu/ror/configuration/EsConfig.scala new file mode 100644 index 0000000000..896a662d34 --- /dev/null +++ b/core/src/main/scala/tech/beshu/ror/configuration/EsConfig.scala @@ -0,0 +1,48 @@ +package tech.beshu.ror.configuration + +import java.nio.file.Path + +import better.files.File +import monix.eval.Task +import org.yaml.snakeyaml.Yaml +import tech.beshu.ror.configuration.EsConfig.LoadEsConfigError.{FileNotFound, MalformedContent} + +import scala.collection.JavaConverters._ +import scala.reflect.ClassTag +import scala.util.Try + +final case class EsConfig(forceLoadRorFromFile: Boolean) + +object EsConfig { + + def from(path: Path): Task[Either[LoadEsConfigError, EsConfig]] = Task { + val config = File(s"${path.toAbsolutePath}/elasticsearch.yml") + for { + _ <- Either.cond(config.exists, (), FileNotFound(config)) + content <- parseFileContent(config) + } yield EsConfig( + get(content, "readonlyrest.force_load_from_file", false) + ) + } + + private def parseFileContent(file: File) = { + val yaml = new Yaml() + Try(yaml.load[java.util.Map[String, Object]](file.inputStream.get())) + .toEither + .left.map(MalformedContent(file, _)) + .map(_.asScala.toMap[String, Any]) + } + + private def get[T : ClassTag](config: Map[String, Any], key: String, default: T) = { + config + .get(key) + .collect { case value: T => value } + .getOrElse(default) + } + + sealed trait LoadEsConfigError + object LoadEsConfigError { + final case class FileNotFound(file: File) extends LoadEsConfigError + final case class MalformedContent(file: File, throwable: Throwable) extends LoadEsConfigError + } +} diff --git a/core/src/main/scala/tech/beshu/ror/configuration/FileConfigLoader.scala b/core/src/main/scala/tech/beshu/ror/configuration/FileConfigLoader.scala index 5a2832f283..9e2f6d6476 100644 --- a/core/src/main/scala/tech/beshu/ror/configuration/FileConfigLoader.scala +++ b/core/src/main/scala/tech/beshu/ror/configuration/FileConfigLoader.scala @@ -1,8 +1,50 @@ package tech.beshu.ror.configuration +import java.io.InputStreamReader +import java.nio.file.Path + +import better.files.File +import io.circe.Json +import io.circe.yaml.parser import monix.eval.Task +import tech.beshu.ror.Constants +import tech.beshu.ror.configuration.ConfigLoader.{ConfigLoaderError, RawRorConfig} +import tech.beshu.ror.configuration.ConfigLoader.ConfigLoaderError.SpecializedError +import tech.beshu.ror.configuration.FileConfigLoader.FileConfigError +import tech.beshu.ror.configuration.FileConfigLoader.FileConfigError.{FileNotExist, InvalidFileContent} import tech.beshu.ror.utils.EnvVarsProvider -class FileConfigLoader(envVarsProvider: EnvVarsProvider) extends ConfigLoader { - override def load(): Task[RawRorConfig] = ??? +class FileConfigLoader(esConfigFolderPath: Path, + envVarsProvider: EnvVarsProvider) extends ConfigLoader[FileConfigError] { + + override def load(): Task[Either[ConfigLoaderError[FileConfigError], RawRorConfig]] = Task { + val configFile = envVarsProvider.getEnv(Constants.SETTINGS_YAML_FILE_PATH_PROPERTY) match { + case Some(customRorFilePath) => File(customRorFilePath) + case None => File(s"${esConfigFolderPath.toAbsolutePath}/readonlyrest.yml") + } + loadRorConfigFromFile(configFile) + } + + private def loadRorConfigFromFile(file: File) = { + for { + _ <- Either.cond(file.exists, (), SpecializedError(FileNotExist(file))) + content <- parseFileContent(file) + } yield RawRorConfig(content) + } + + private def parseFileContent(file: File): Either[ConfigLoaderError[FileConfigError], Json] = { + parser + .parse(new InputStreamReader(file.inputStream.get())) + .left.map(ex => SpecializedError(InvalidFileContent(file, ex))) + .flatMap { json => validateRorJson(json) } + } } + +object FileConfigLoader { + + sealed trait FileConfigError + object FileConfigError { + final case class FileNotExist(file: File) extends FileConfigError + final case class InvalidFileContent(file: File, throwable: Throwable) extends FileConfigError + } +} \ No newline at end of file diff --git a/core/src/main/scala/tech/beshu/ror/configuration/IndexConfigLoader.scala b/core/src/main/scala/tech/beshu/ror/configuration/IndexConfigLoader.scala index 213f7e6ca9..062d2990c2 100644 --- a/core/src/main/scala/tech/beshu/ror/configuration/IndexConfigLoader.scala +++ b/core/src/main/scala/tech/beshu/ror/configuration/IndexConfigLoader.scala @@ -1,7 +1,42 @@ package tech.beshu.ror.configuration +import io.circe.yaml.parser import monix.eval.Task +import tech.beshu.ror.configuration.ConfigLoader.{ConfigLoaderError, RawRorConfig} +import tech.beshu.ror.configuration.ConfigLoader.ConfigLoaderError.SpecializedError +import tech.beshu.ror.configuration.IndexConfigLoader.IndexConfigError +import tech.beshu.ror.configuration.IndexConfigLoader.IndexConfigError.{IndexConfigNotExist, InvalidIndexContent} +import tech.beshu.ror.es.IndexContentProvider + +class IndexConfigLoader(indexContentProvider: IndexContentProvider) + extends ConfigLoader[IndexConfigError] { + + override def load(): Task[Either[ConfigLoaderError[IndexConfigError], RawRorConfig]] = + indexContentProvider + .contentOf(".readonlyrest", "settings", "1") + .map { + case Right(content) => + parseIndexContent(content).map(RawRorConfig.apply) + case Left(IndexContentProvider.Error.CannotReachContentSource) => + Left(SpecializedError[IndexConfigError](IndexConfigNotExist)) + case Left(IndexContentProvider.Error.ContentNotFound) => + Left(SpecializedError[IndexConfigError](IndexConfigNotExist)) + } + + private def parseIndexContent(content: String) = { + parser + .parse(content) + .left.map(ex => SpecializedError(InvalidIndexContent(ex))) + .flatMap { json => validateRorJson(json) } + } +} + +object IndexConfigLoader { + + sealed trait IndexConfigError + object IndexConfigError { + case object IndexConfigNotExist extends IndexConfigError + final case class InvalidIndexContent(throwable: Throwable) extends IndexConfigError + } -class IndexConfigLoader extends ConfigLoader { - override def load(): Task[RawRorConfig] = ??? } diff --git a/core/src/main/scala/tech/beshu/ror/configuration/RawRorConfig.scala b/core/src/main/scala/tech/beshu/ror/configuration/RawRorConfig.scala deleted file mode 100644 index 86e9eda13f..0000000000 --- a/core/src/main/scala/tech/beshu/ror/configuration/RawRorConfig.scala +++ /dev/null @@ -1,24 +0,0 @@ -package tech.beshu.ror.configuration - -import org.yaml.snakeyaml.Yaml -import tech.beshu.ror.acl.factory.CoreFactory.AclCreationError.Reason.Message -import tech.beshu.ror.acl.factory.CoreFactory.AclCreationError.{ReadonlyrestSettingsCreationError, UnparsableYamlContent} -import tech.beshu.ror.acl.factory.CoreFactory.{AclCreationError, Attributes} - -import scala.util.{Failure, Success, Try} - -final case class RawRorConfig private (validatedRorYaml: String) { - - private def trimToRorPartOnly(settingsYamlString: String): Either[AclCreationError, String] = { - val yaml = new Yaml() - Try(yaml.load[java.util.Map[String, Object]](settingsYamlString)) match { - case Success(map) => - Option(map.get("readonlyrest")).map(yaml.dump) match { // todo: "readonlyrest" from const - case Some(value) => Right(value) - case None => Left(ReadonlyrestSettingsCreationError(Message(s"No ${"readonlyrest"} section found"))) // fixme: - } - case Failure(ex) => - Left(UnparsableYamlContent(Message(s"Malformed: $settingsYamlString"))) - } - } -} diff --git a/core/src/main/scala/tech/beshu/ror/es/AuditSink.scala b/core/src/main/scala/tech/beshu/ror/es/AuditSink.scala new file mode 100644 index 0000000000..ba6158df16 --- /dev/null +++ b/core/src/main/scala/tech/beshu/ror/es/AuditSink.scala @@ -0,0 +1,5 @@ +package tech.beshu.ror.es + +trait AuditSink { + def submit(indexName: String, documentId: String, jsonRecord: String): Unit +} diff --git a/core/src/main/scala/tech/beshu/ror/es/IndexContentProvider.scala b/core/src/main/scala/tech/beshu/ror/es/IndexContentProvider.scala new file mode 100644 index 0000000000..c059a4ebed --- /dev/null +++ b/core/src/main/scala/tech/beshu/ror/es/IndexContentProvider.scala @@ -0,0 +1,17 @@ +package tech.beshu.ror.es + +import monix.eval.Task + +trait IndexContentProvider { + + def contentOf(index: String, `type`: String, id: String): Task[Either[IndexContentProvider.Error, String]] +} + +object IndexContentProvider { + + sealed trait Error + object Error { + case object ContentNotFound extends Error + case object CannotReachContentSource extends Error + } +} diff --git a/core/src/main/scala/tech/beshu/ror/utils/EnvVarsProvider.scala b/core/src/main/scala/tech/beshu/ror/utils/EnvVarsProvider.scala index 03850abdfd..52f21717dc 100644 --- a/core/src/main/scala/tech/beshu/ror/utils/EnvVarsProvider.scala +++ b/core/src/main/scala/tech/beshu/ror/utils/EnvVarsProvider.scala @@ -6,7 +6,7 @@ trait EnvVarsProvider { def getEnv(name: String): Option[String] } -object JavaEnvVarsProvider extends EnvVarsProvider { +object OsEnvVarsProvider extends EnvVarsProvider { override def getEnv(name: String): Option[String] = Try(Option(System.getenv(name))).toOption.flatten } diff --git a/core/src/test/scala/tech/beshu/ror/integration/AuthKeyYamlLoadedAclTests.scala b/core/src/test/scala/tech/beshu/ror/integration/AuthKeyYamlLoadedAclTests.scala index 399e4b2827..087539c2f3 100644 --- a/core/src/test/scala/tech/beshu/ror/integration/AuthKeyYamlLoadedAclTests.scala +++ b/core/src/test/scala/tech/beshu/ror/integration/AuthKeyYamlLoadedAclTests.scala @@ -33,14 +33,14 @@ import tech.beshu.ror.acl.factory.{CoreFactory, CoreSettings} import tech.beshu.ror.acl.utils.StaticVariablesResolver import tech.beshu.ror.mocks.{MockHttpClientsFactory, MockRequestContext} import tech.beshu.ror.utils.TestsUtils.{BlockContextAssertion, basicAuthHeader} -import tech.beshu.ror.utils.{JavaEnvVarsProvider, JavaUuidProvider, UuidProvider} +import tech.beshu.ror.utils.{OsEnvVarsProvider, JavaUuidProvider, UuidProvider} class AuthKeyYamlLoadedAclTests extends WordSpec with MockFactory with Inside with BlockContextAssertion { private val factory = { implicit val clock: Clock = Clock.systemUTC() implicit val uuidProvider: UuidProvider = JavaUuidProvider - implicit val resolver: StaticVariablesResolver = new StaticVariablesResolver(JavaEnvVarsProvider) + implicit val resolver: StaticVariablesResolver = new StaticVariablesResolver(OsEnvVarsProvider) new CoreFactory } private val acl: Acl = factory diff --git a/core/src/test/scala/tech/beshu/ror/integration/KibanaIndexAndAccessYamlLoadedAclTests.scala b/core/src/test/scala/tech/beshu/ror/integration/KibanaIndexAndAccessYamlLoadedAclTests.scala index d50912a5a2..06bfc77ba6 100644 --- a/core/src/test/scala/tech/beshu/ror/integration/KibanaIndexAndAccessYamlLoadedAclTests.scala +++ b/core/src/test/scala/tech/beshu/ror/integration/KibanaIndexAndAccessYamlLoadedAclTests.scala @@ -30,14 +30,14 @@ import tech.beshu.ror.acl.factory.{CoreFactory, CoreSettings} import tech.beshu.ror.acl.utils.StaticVariablesResolver import tech.beshu.ror.mocks.{MockHttpClientsFactory, MockRequestContext} import tech.beshu.ror.utils.TestsUtils.{BlockContextAssertion, headerFrom} -import tech.beshu.ror.utils.{JavaEnvVarsProvider, JavaUuidProvider, UuidProvider} +import tech.beshu.ror.utils.{OsEnvVarsProvider, JavaUuidProvider, UuidProvider} class KibanaIndexAndAccessYamlLoadedAclTests extends WordSpec with MockFactory with Inside with BlockContextAssertion { private val factory = { implicit val clock: Clock = Clock.systemUTC() implicit val uuidProvider: UuidProvider = JavaUuidProvider - implicit val resolver: StaticVariablesResolver = new StaticVariablesResolver(JavaEnvVarsProvider) + implicit val resolver: StaticVariablesResolver = new StaticVariablesResolver(OsEnvVarsProvider) new CoreFactory } private val acl: Acl = factory diff --git a/core/src/test/scala/tech/beshu/ror/integration/RorKbnAuthYamlLoadedAclTests.scala b/core/src/test/scala/tech/beshu/ror/integration/RorKbnAuthYamlLoadedAclTests.scala index d14535c87a..c419dfa86f 100644 --- a/core/src/test/scala/tech/beshu/ror/integration/RorKbnAuthYamlLoadedAclTests.scala +++ b/core/src/test/scala/tech/beshu/ror/integration/RorKbnAuthYamlLoadedAclTests.scala @@ -32,13 +32,13 @@ import tech.beshu.ror.acl.factory.{AsyncHttpClientsFactory, CoreFactory, CoreSet import tech.beshu.ror.acl.utils.StaticVariablesResolver import tech.beshu.ror.mocks.MockRequestContext import tech.beshu.ror.utils.TestsUtils._ -import tech.beshu.ror.utils.{JavaEnvVarsProvider, JavaUuidProvider, UuidProvider} +import tech.beshu.ror.utils.{OsEnvVarsProvider, JavaUuidProvider, UuidProvider} class RorKbnAuthYamlLoadedAclTests extends WordSpec with MockFactory with Inside with BlockContextAssertion { private val factory = { implicit val clock: Clock = Clock.systemUTC() implicit val uuidProvider: UuidProvider = JavaUuidProvider - implicit val resolver: StaticVariablesResolver = new StaticVariablesResolver(JavaEnvVarsProvider) + implicit val resolver: StaticVariablesResolver = new StaticVariablesResolver(OsEnvVarsProvider) new CoreFactory } private val acl: Acl = factory diff --git a/core/src/test/scala/tech/beshu/ror/unit/acl/factory/AuditingSettingsTests.scala b/core/src/test/scala/tech/beshu/ror/unit/acl/factory/AuditingSettingsTests.scala index 7b761a79aa..f8e848dbf6 100644 --- a/core/src/test/scala/tech/beshu/ror/unit/acl/factory/AuditingSettingsTests.scala +++ b/core/src/test/scala/tech/beshu/ror/unit/acl/factory/AuditingSettingsTests.scala @@ -28,14 +28,14 @@ import tech.beshu.ror.audit.adapters.DeprecatedAuditLogSerializerAdapter import tech.beshu.ror.audit.instances.{DefaultAuditLogSerializer, QueryAuditLogSerializer} import tech.beshu.ror.mocks.MockHttpClientsFactory import monix.execution.Scheduler.Implicits.global -import tech.beshu.ror.utils.{JavaEnvVarsProvider, JavaUuidProvider, UuidProvider} +import tech.beshu.ror.utils.{OsEnvVarsProvider, JavaUuidProvider, UuidProvider} class AuditingSettingsTests extends WordSpec with Inside { private val factory = { implicit val clock: Clock = Clock.systemUTC() implicit val uuidProvider: UuidProvider = JavaUuidProvider - implicit val resolver: StaticVariablesResolver = new StaticVariablesResolver(JavaEnvVarsProvider) + implicit val resolver: StaticVariablesResolver = new StaticVariablesResolver(OsEnvVarsProvider) new CoreFactory } diff --git a/core/src/test/scala/tech/beshu/ror/unit/acl/factory/CoreFactoryTests.scala b/core/src/test/scala/tech/beshu/ror/unit/acl/factory/CoreFactoryTests.scala index 1907979de8..d6df130a6c 100644 --- a/core/src/test/scala/tech/beshu/ror/unit/acl/factory/CoreFactoryTests.scala +++ b/core/src/test/scala/tech/beshu/ror/unit/acl/factory/CoreFactoryTests.scala @@ -31,14 +31,14 @@ import tech.beshu.ror.acl.factory.{CoreFactory, CoreSettings} import tech.beshu.ror.acl.utils.StaticVariablesResolver import tech.beshu.ror.mocks.{MockHttpClientsFactory, MockHttpClientsFactoryWithFixedHttpClient} import monix.execution.Scheduler.Implicits.global -import tech.beshu.ror.utils.{JavaEnvVarsProvider, JavaUuidProvider, UuidProvider} +import tech.beshu.ror.utils.{OsEnvVarsProvider, JavaUuidProvider, UuidProvider} class CoreFactoryTests extends WordSpec with Inside with MockFactory { private val factory = { implicit val clock: Clock = Clock.systemUTC() implicit val uuidProvider: UuidProvider = JavaUuidProvider - implicit val resolver: StaticVariablesResolver = new StaticVariablesResolver(JavaEnvVarsProvider) + implicit val resolver: StaticVariablesResolver = new StaticVariablesResolver(OsEnvVarsProvider) new CoreFactory } diff --git a/core/src/test/scala/tech/beshu/ror/unit/acl/factory/decoders/BaseRuleSettingsDecoderTest.scala b/core/src/test/scala/tech/beshu/ror/unit/acl/factory/decoders/BaseRuleSettingsDecoderTest.scala index ec2c9d4220..1b54bd8e83 100644 --- a/core/src/test/scala/tech/beshu/ror/unit/acl/factory/decoders/BaseRuleSettingsDecoderTest.scala +++ b/core/src/test/scala/tech/beshu/ror/unit/acl/factory/decoders/BaseRuleSettingsDecoderTest.scala @@ -30,12 +30,12 @@ import tech.beshu.ror.mocks.MockHttpClientsFactory import scala.reflect.ClassTag import monix.execution.Scheduler.Implicits.global -import tech.beshu.ror.utils.{EnvVarsProvider, JavaEnvVarsProvider, JavaUuidProvider, UuidProvider} +import tech.beshu.ror.utils.{EnvVarsProvider, OsEnvVarsProvider, JavaUuidProvider, UuidProvider} abstract class BaseRuleSettingsDecoderTest[T <: Rule : ClassTag] extends WordSpec with Inside { this: Suite => - protected def envVarsProvider: EnvVarsProvider = JavaEnvVarsProvider + protected def envVarsProvider: EnvVarsProvider = OsEnvVarsProvider private val factory = { implicit val clock: Clock = Clock.systemUTC() diff --git a/core/src/test/scala/tech/beshu/ror/unit/acl/logging/AuditingToolTests.scala b/core/src/test/scala/tech/beshu/ror/unit/acl/logging/AuditingToolTests.scala index 76211e5dbb..8ac68497c6 100644 --- a/core/src/test/scala/tech/beshu/ror/unit/acl/logging/AuditingToolTests.scala +++ b/core/src/test/scala/tech/beshu/ror/unit/acl/logging/AuditingToolTests.scala @@ -27,7 +27,7 @@ import org.scalatest.WordSpec import tech.beshu.ror.acl.blocks.{Block, RequestContextInitiatedBlockContext} import tech.beshu.ror.acl.blocks.rules.MethodsRule import tech.beshu.ror.acl.logging.ResponseContext._ -import tech.beshu.ror.acl.logging.{AuditSink, AuditingTool} +import tech.beshu.ror.acl.logging.AuditingTool import tech.beshu.ror.acl.orders._ import tech.beshu.ror.audit.instances.DefaultAuditLogSerializer import tech.beshu.ror.mocks.MockRequestContext @@ -36,6 +36,7 @@ import org.json.JSONObject import tech.beshu.ror.acl.blocks.Block.{Policy, Verbosity} import tech.beshu.ror.acl.request.RequestContext import tech.beshu.ror.audit.{AuditLogSerializer, AuditResponseContext} +import tech.beshu.ror.es.AuditSink class AuditingToolTests extends WordSpec with MockFactory { diff --git a/es51x/src/main/java/tech/beshu/ror/es/IndexLevelActionFilter.java b/es51x/src/main/java/tech/beshu/ror/es/IndexLevelActionFilter.java index 3024a511e7..941db4a7a5 100644 --- a/es51x/src/main/java/tech/beshu/ror/es/IndexLevelActionFilter.java +++ b/es51x/src/main/java/tech/beshu/ror/es/IndexLevelActionFilter.java @@ -55,7 +55,6 @@ import tech.beshu.ror.acl.BlockContextJavaHelper$; import tech.beshu.ror.RorEngineFactory; import tech.beshu.ror.RorEngineFactory$; -import tech.beshu.ror.acl.logging.AuditSink; import tech.beshu.ror.acl.request.EsRequestContext; import tech.beshu.ror.acl.request.RequestContext; import tech.beshu.ror.utils.ScalaJavaHelper$; diff --git a/es52x/src/main/java/tech/beshu/ror/es/IndexLevelActionFilter.java b/es52x/src/main/java/tech/beshu/ror/es/IndexLevelActionFilter.java index dd942ba7b5..3062972ca4 100644 --- a/es52x/src/main/java/tech/beshu/ror/es/IndexLevelActionFilter.java +++ b/es52x/src/main/java/tech/beshu/ror/es/IndexLevelActionFilter.java @@ -55,7 +55,7 @@ import tech.beshu.ror.acl.BlockContextJavaHelper$; import tech.beshu.ror.RorEngineFactory; import tech.beshu.ror.RorEngineFactory$; -import tech.beshu.ror.acl.logging.AuditSink; + import tech.beshu.ror.acl.request.EsRequestContext; import tech.beshu.ror.acl.request.RequestContext; import tech.beshu.ror.utils.ScalaJavaHelper$; diff --git a/es53x/src/main/java/tech/beshu/ror/es/IndexLevelActionFilter.java b/es53x/src/main/java/tech/beshu/ror/es/IndexLevelActionFilter.java index 339f75d0b7..f07de25e3e 100644 --- a/es53x/src/main/java/tech/beshu/ror/es/IndexLevelActionFilter.java +++ b/es53x/src/main/java/tech/beshu/ror/es/IndexLevelActionFilter.java @@ -56,7 +56,7 @@ import tech.beshu.ror.acl.BlockContextJavaHelper$; import tech.beshu.ror.RorEngineFactory; import tech.beshu.ror.RorEngineFactory$; -import tech.beshu.ror.acl.logging.AuditSink; + import tech.beshu.ror.acl.request.EsRequestContext; import tech.beshu.ror.acl.request.RequestContext; import tech.beshu.ror.utils.ScalaJavaHelper$; diff --git a/es55x/src/main/java/tech/beshu/ror/es/IndexLevelActionFilter.java b/es55x/src/main/java/tech/beshu/ror/es/IndexLevelActionFilter.java index a843f2a7c5..93e9d34f7a 100644 --- a/es55x/src/main/java/tech/beshu/ror/es/IndexLevelActionFilter.java +++ b/es55x/src/main/java/tech/beshu/ror/es/IndexLevelActionFilter.java @@ -56,7 +56,7 @@ import tech.beshu.ror.acl.BlockContextJavaHelper$; import tech.beshu.ror.RorEngineFactory; import tech.beshu.ror.RorEngineFactory$; -import tech.beshu.ror.acl.logging.AuditSink; + import tech.beshu.ror.acl.request.EsRequestContext; import tech.beshu.ror.acl.request.RequestContext; import tech.beshu.ror.utils.ScalaJavaHelper$; diff --git a/es60x/src/main/java/tech/beshu/ror/es/IndexLevelActionFilter.java b/es60x/src/main/java/tech/beshu/ror/es/IndexLevelActionFilter.java index b3c1ddf390..d2eb08822d 100644 --- a/es60x/src/main/java/tech/beshu/ror/es/IndexLevelActionFilter.java +++ b/es60x/src/main/java/tech/beshu/ror/es/IndexLevelActionFilter.java @@ -58,7 +58,7 @@ import tech.beshu.ror.acl.BlockContextJavaHelper$; import tech.beshu.ror.RorEngineFactory; import tech.beshu.ror.RorEngineFactory$; -import tech.beshu.ror.acl.logging.AuditSink; + import tech.beshu.ror.acl.request.EsRequestContext; import tech.beshu.ror.acl.request.RequestContext; import tech.beshu.ror.utils.ScalaJavaHelper$; diff --git a/es61x/src/main/java/tech/beshu/ror/es/IndexLevelActionFilter.java b/es61x/src/main/java/tech/beshu/ror/es/IndexLevelActionFilter.java index e4e327bb0b..d19796fd78 100644 --- a/es61x/src/main/java/tech/beshu/ror/es/IndexLevelActionFilter.java +++ b/es61x/src/main/java/tech/beshu/ror/es/IndexLevelActionFilter.java @@ -56,7 +56,6 @@ import tech.beshu.ror.acl.BlockContextJavaHelper$; import tech.beshu.ror.RorEngineFactory; import tech.beshu.ror.RorEngineFactory$; -import tech.beshu.ror.acl.logging.AuditSink; import tech.beshu.ror.acl.request.EsRequestContext; import tech.beshu.ror.acl.request.RequestContext; import tech.beshu.ror.utils.ScalaJavaHelper$; diff --git a/es63x/src/main/java/tech/beshu/ror/es/IndexLevelActionFilter.java b/es63x/src/main/java/tech/beshu/ror/es/IndexLevelActionFilter.java index fd2aee9859..559af2a8ed 100644 --- a/es63x/src/main/java/tech/beshu/ror/es/IndexLevelActionFilter.java +++ b/es63x/src/main/java/tech/beshu/ror/es/IndexLevelActionFilter.java @@ -56,7 +56,6 @@ import tech.beshu.ror.acl.BlockContextJavaHelper$; import tech.beshu.ror.RorEngineFactory; import tech.beshu.ror.RorEngineFactory$; -import tech.beshu.ror.acl.logging.AuditSink; import tech.beshu.ror.acl.request.EsRequestContext; import tech.beshu.ror.acl.request.RequestContext; import tech.beshu.ror.utils.ScalaJavaHelper$; diff --git a/es66x/src/main/java/tech/beshu/ror/es/IndexLevelActionFilter.java b/es66x/src/main/java/tech/beshu/ror/es/IndexLevelActionFilter.java index 15d7ad20d5..6d8201c28f 100644 --- a/es66x/src/main/java/tech/beshu/ror/es/IndexLevelActionFilter.java +++ b/es66x/src/main/java/tech/beshu/ror/es/IndexLevelActionFilter.java @@ -55,7 +55,6 @@ import tech.beshu.ror.acl.AclResultCommitter; import tech.beshu.ror.acl.BlockContextJavaHelper$; import tech.beshu.ror.RorEngineFactory$; -import tech.beshu.ror.acl.logging.AuditSink; import tech.beshu.ror.acl.request.EsRequestContext; import tech.beshu.ror.acl.request.RequestContext; import tech.beshu.ror.utils.ScalaJavaHelper$; diff --git a/es70x/src/main/java/tech/beshu/ror/es/IndexLevelActionFilter.java b/es70x/src/main/java/tech/beshu/ror/es/IndexLevelActionFilter.java index 97b233b3d9..6ea7981606 100644 --- a/es70x/src/main/java/tech/beshu/ror/es/IndexLevelActionFilter.java +++ b/es70x/src/main/java/tech/beshu/ror/es/IndexLevelActionFilter.java @@ -55,7 +55,6 @@ import tech.beshu.ror.acl.AclResultCommitter; import tech.beshu.ror.acl.BlockContextJavaHelper$; import tech.beshu.ror.RorEngineFactory$; -import tech.beshu.ror.acl.logging.AuditSink; import tech.beshu.ror.acl.request.EsRequestContext; import tech.beshu.ror.acl.request.RequestContext; import tech.beshu.ror.utils.ScalaJavaHelper$; diff --git a/integration-tests/src/test/eshome/modules/transport-netty4/plugin-descriptor.properties b/integration-tests/src/test/eshome/modules/transport-netty4/plugin-descriptor.properties index 17b4004a25..5aabf28f54 100644 --- a/integration-tests/src/test/eshome/modules/transport-netty4/plugin-descriptor.properties +++ b/integration-tests/src/test/eshome/modules/transport-netty4/plugin-descriptor.properties @@ -24,10 +24,10 @@ description=Netty 4 based transport implementation # 'version': plugin's version #version=5.2.2 -version=7.0.0 +version=7.0.1 #elasticsearch.version=5.2.2 -elasticsearch.version=7.0.0 +elasticsearch.version=7.0.1 # 'name': the plugin name name=transport-netty4 diff --git a/integration-tests/src/test/eshome/plugins/readonlyrest/plugin-descriptor.properties b/integration-tests/src/test/eshome/plugins/readonlyrest/plugin-descriptor.properties index 3339e4648f..8946a7c0c1 100644 --- a/integration-tests/src/test/eshome/plugins/readonlyrest/plugin-descriptor.properties +++ b/integration-tests/src/test/eshome/plugins/readonlyrest/plugin-descriptor.properties @@ -55,7 +55,7 @@ java.version=1.8 # # 'elasticsearch.version' version of elasticsearch compiled against -elasticsearch.version=7.0.0 +elasticsearch.version=7.0.1 #elasticsearch.version=5.5.0 #elasticsearch.version=5.1.2 #elasticsearch.version=5.2.2