diff --git a/akka-bbb-apps/build.sbt b/akka-bbb-apps/build.sbt index 892a77e54143cfdb2e106db294996400e3c71ff2..1a4da064d35b82d6e584ef2784cba7290eb5db75 100755 --- a/akka-bbb-apps/build.sbt +++ b/akka-bbb-apps/build.sbt @@ -75,3 +75,5 @@ daemonGroup in Linux := group mappings in(Universal, packageBin) += file("src/main/resources/application.conf") -> "conf/application.conf" mappings in(Universal, packageBin) += file("src/main/resources/logback.xml") -> "conf/logback.xml" + +debianPackageDependencies in Debian ++= Seq("java8-runtime-headless", "bash") diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/Boot.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/Boot.scala index 74a852b9a5ce018e90f1a4db00c0762c53475526..8df3465637734f5eb77b3bb584c83fa6fbd37aa7 100755 --- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/Boot.scala +++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/Boot.scala @@ -1,12 +1,18 @@ package org.bigbluebutton -import akka.event.Logging -import akka.actor.ActorSystem -import org.bigbluebutton.endpoint.redis.{ AppsRedisSubscriberActor, KeepAliveRedisPublisher, RedisPublisher, RedisRecorderActor } +import org.bigbluebutton.common2.redis.RedisPublisher import org.bigbluebutton.core._ import org.bigbluebutton.core.bus._ import org.bigbluebutton.core.pubsub.senders.ReceivedJsonMsgHandlerActor -import org.bigbluebutton.core2.{ AnalyticsActor, FromAkkaAppsMsgSenderActor } +import org.bigbluebutton.core2.AnalyticsActor +import org.bigbluebutton.core2.FromAkkaAppsMsgSenderActor +import org.bigbluebutton.endpoint.redis.AppsRedisSubscriberActor +import org.bigbluebutton.endpoint.redis.RedisRecorderActor + +import akka.actor.ActorSystem +import akka.event.Logging +import org.bigbluebutton.common2.redis.MessageSender +import org.bigbluebutton.common2.bus.IncomingJsonMessageBus object Boot extends App with SystemConfiguration { @@ -22,7 +28,7 @@ object Boot extends App with SystemConfiguration { val outGW = new OutMessageGatewayImp(outBus2) - val redisPublisher = new RedisPublisher(system) + val redisPublisher = new RedisPublisher(system, "BbbAppsAkkaPub") val msgSender = new MessageSender(redisPublisher) val redisRecorderActor = system.actorOf(RedisRecorderActor.props(system), "redisRecorderActor") @@ -47,7 +53,4 @@ object Boot extends App with SystemConfiguration { incomingJsonMessageBus.subscribe(redisMessageHandlerActor, toAkkaAppsJsonChannel) val redisSubscriberActor = system.actorOf(AppsRedisSubscriberActor.props(incomingJsonMessageBus), "redis-subscriber") - - val keepAliveRedisPublisher = new KeepAliveRedisPublisher(system, redisPublisher) - } diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/SystemConfiguration.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/SystemConfiguration.scala index d2986d262a88d84363f7870e563f11d981312a6f..743a4894c4acec763614b2f9d50ca560e59ba24b 100755 --- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/SystemConfiguration.scala +++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/SystemConfiguration.scala @@ -1,15 +1,10 @@ package org.bigbluebutton -import com.typesafe.config.ConfigFactory import scala.util.Try -trait SystemConfiguration { +import org.bigbluebutton.common2.redis.RedisConfiguration - val config = ConfigFactory.load() - - lazy val redisHost = Try(config.getString("redis.host")).getOrElse("127.0.0.1") - lazy val redisPort = Try(config.getInt("redis.port")).getOrElse(6379) - lazy val redisPassword = Try(config.getString("redis.password")).getOrElse("") +trait SystemConfiguration extends RedisConfiguration { lazy val bbbWebHost = Try(config.getString("services.bbbWebHost")).getOrElse("localhost") lazy val bbbWebPort = Try(config.getInt("services.bbbWebPort")).getOrElse(8888) @@ -31,8 +26,6 @@ trait SystemConfiguration { lazy val outBbbMsgMsgChannel = Try(config.getString("eventBus.outBbbMsgMsgChannel")).getOrElse("OutBbbMsgChannel") lazy val recordServiceMessageChannel = Try(config.getString("eventBus.recordServiceMessageChannel")).getOrElse("RecordServiceMessageChannel") - lazy val toAkkaAppsRedisChannel = Try(config.getString("redis.toAkkaAppsRedisChannel")).getOrElse("to-akka-apps-redis-channel") - lazy val fromAkkaAppsRedisChannel = Try(config.getString("redis.fromAkkaAppsRedisChannel")).getOrElse("from-akka-apps-redis-channel") lazy val toHTML5RedisChannel = Try(config.getString("redis.toHTML5RedisChannel")).getOrElse("to-html5-redis-channel") lazy val fromAkkaAppsChannel = Try(config.getString("eventBus.fromAkkaAppsChannel")).getOrElse("from-akka-apps-channel") lazy val toAkkaAppsChannel = Try(config.getString("eventBus.toAkkaAppsChannel")).getOrElse("to-akka-apps-channel") @@ -41,21 +34,9 @@ trait SystemConfiguration { lazy val toAkkaAppsJsonChannel = Try(config.getString("eventBus.toAkkaAppsChannel")).getOrElse("to-akka-apps-json-channel") lazy val fromAkkaAppsJsonChannel = Try(config.getString("eventBus.fromAkkaAppsChannel")).getOrElse("from-akka-apps-json-channel") - lazy val toVoiceConfRedisChannel = Try(config.getString("redis.toVoiceConfRedisChannel")).getOrElse("to-voice-conf-redis-channel") - lazy val fromVoiceConfRedisChannel = Try(config.getString("redis.fromVoiceConfRedisChannel")).getOrElse("from-voice-conf-redis-channel") - - lazy val fromAkkaAppsWbRedisChannel = Try(config.getString("redis.fromAkkaAppsWbRedisChannel")).getOrElse("from-akka-apps-wb-redis-channel") - lazy val fromAkkaAppsChatRedisChannel = Try(config.getString("redis.fromAkkaAppsChatRedisChannel")).getOrElse("from-akka-apps-chat-redis-channel") - lazy val fromAkkaAppsPresRedisChannel = Try(config.getString("redis.fromAkkaAppsPresRedisChannel")).getOrElse("from-akka-apps-pres-redis-channel") - lazy val maxNumberOfNotes = Try(config.getInt("sharedNotes.maxNumberOfNotes")).getOrElse(3) lazy val maxNumberOfUndos = Try(config.getInt("sharedNotes.maxNumberOfUndos")).getOrElse(30) - lazy val httpInterface = Try(config.getString("http.interface")).getOrElse("") - lazy val httpPort = Try(config.getInt("http.port")).getOrElse(9090) - lazy val telizeHost = Try(config.getString("services.telizeHost")).getOrElse("") - lazy val telizePort = Try(config.getInt("services.telizePort")).getOrElse(80) - lazy val applyPermissionCheck = Try(config.getBoolean("apps.checkPermissions")).getOrElse(false) lazy val voiceConfRecordPath = Try(config.getString("voiceConf.recordPath")).getOrElse("/var/freeswitch/meetings") diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/MessageSender.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/MessageSender.scala deleted file mode 100755 index 250b1b3fba8c2b5f3a122f5cd54c168b7fdf30c4..0000000000000000000000000000000000000000 --- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/MessageSender.scala +++ /dev/null @@ -1,10 +0,0 @@ -package org.bigbluebutton.core - -import org.bigbluebutton.endpoint.redis.RedisPublisher - -class MessageSender(publisher: RedisPublisher) { - - def send(channel: String, data: String) { - publisher.publish(channel, data) - } -} \ No newline at end of file diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/pubsub/senders/ReceivedJsonMsgHandlerActor.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/pubsub/senders/ReceivedJsonMsgHandlerActor.scala index 7d762dbb11a7ba9e0a4d168621abb52967782224..639adf2ca10bf647b747d88e3ce40b85b2161391 100755 --- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/pubsub/senders/ReceivedJsonMsgHandlerActor.scala +++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/pubsub/senders/ReceivedJsonMsgHandlerActor.scala @@ -6,7 +6,9 @@ import com.fasterxml.jackson.databind.JsonNode import org.bigbluebutton.common2.msgs._ import org.bigbluebutton.core.bus._ import org.bigbluebutton.core2.ReceivedMessageRouter -import scala.reflect.runtime.universe._ +import scala.reflect.runtime.universe._ +import org.bigbluebutton.common2.bus.ReceivedJsonMessage +import org.bigbluebutton.common2.bus.IncomingJsonMessageBus object ReceivedJsonMsgHandlerActor { def props(eventBus: BbbMsgRouterEventBus, incomingJsonMessageBus: IncomingJsonMessageBus): Props = diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/FromAkkaAppsMsgSenderActor.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/FromAkkaAppsMsgSenderActor.scala index 2dcaaf0f1f44a96019243bbd968727a8ecc684ff..0061b110d6c0e6437a8ae2a1f9386594b08935ce 100755 --- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/FromAkkaAppsMsgSenderActor.scala +++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/FromAkkaAppsMsgSenderActor.scala @@ -3,8 +3,8 @@ package org.bigbluebutton.core2 import akka.actor.{ Actor, ActorLogging, Props } import org.bigbluebutton.SystemConfiguration import org.bigbluebutton.common2.msgs._ -import org.bigbluebutton.common2.util.JsonUtil -import org.bigbluebutton.core.MessageSender +import org.bigbluebutton.common2.util.JsonUtil +import org.bigbluebutton.common2.redis.MessageSender object FromAkkaAppsMsgSenderActor { def props(msgSender: MessageSender): Props = Props(classOf[FromAkkaAppsMsgSenderActor], msgSender) diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/endpoint/redis/AppsRedisSubscriberActor.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/endpoint/redis/AkkaAppsRedisSubscriberActor.scala similarity index 68% rename from akka-bbb-apps/src/main/scala/org/bigbluebutton/endpoint/redis/AppsRedisSubscriberActor.scala rename to akka-bbb-apps/src/main/scala/org/bigbluebutton/endpoint/redis/AkkaAppsRedisSubscriberActor.scala index 5a5a1424f59eaee4f6c91c2714e74bead3251766..c0ff9efed4b82707eb055390d7b817fe838ae1e6 100755 --- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/endpoint/redis/AppsRedisSubscriberActor.scala +++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/endpoint/redis/AkkaAppsRedisSubscriberActor.scala @@ -1,22 +1,27 @@ package org.bigbluebutton.endpoint.redis -import akka.actor.Props -import akka.actor.OneForOneStrategy -import akka.actor.SupervisorStrategy.Resume -import java.io.{ PrintWriter, StringWriter } import java.net.InetSocketAddress -import redis.actors.RedisSubscriberActor -import redis.api.pubsub.{ Message, PMessage } - -import scala.concurrent.duration._ import org.bigbluebutton.SystemConfiguration -import org.bigbluebutton.core.bus.{ IncomingJsonMessage, IncomingJsonMessageBus, ReceivedJsonMessage } +import org.bigbluebutton.common2.bus.IncomingJsonMessage +import org.bigbluebutton.common2.bus.IncomingJsonMessageBus +import org.bigbluebutton.common2.bus.ReceivedJsonMessage +import org.bigbluebutton.common2.redis.RedisAppSubscriberActor +import org.bigbluebutton.common2.redis.RedisConfiguration +import org.bigbluebutton.common2.redis.RedisSubscriber + +import akka.actor.Props +import redis.actors.RedisSubscriberActor +import redis.api.pubsub.Message import redis.api.servers.ClientSetname +import java.io.StringWriter +import akka.actor.OneForOneStrategy +import akka.actor.SupervisorStrategy.Resume +import scala.concurrent.duration.DurationInt +import java.io.PrintWriter -object AppsRedisSubscriberActor extends SystemConfiguration { +object AppsRedisSubscriberActor extends RedisSubscriber with RedisConfiguration { - val TO_AKKA_APPS = "bbb:to-akka-apps" val channels = Seq(toAkkaAppsRedisChannel, fromVoiceConfRedisChannel) val patterns = Seq("bigbluebutton:to-bbb-apps:*", "bigbluebutton:from-voice-conf:*", "bigbluebutton:from-bbb-transcode:*") @@ -29,9 +34,11 @@ object AppsRedisSubscriberActor extends SystemConfiguration { class AppsRedisSubscriberActor(jsonMsgBus: IncomingJsonMessageBus, redisHost: String, redisPort: Int, channels: Seq[String] = Nil, patterns: Seq[String] = Nil) - extends RedisSubscriberActor( - new InetSocketAddress(redisHost, redisPort), - channels, patterns, onConnectStatus = connected => { println(s"connected: $connected") }) with SystemConfiguration { + extends RedisSubscriberActor( + new InetSocketAddress(redisHost, redisPort), + channels, patterns, onConnectStatus = connected => { println(s"connected: $connected") }) + with SystemConfiguration + with RedisAppSubscriberActor { override val supervisorStrategy = OneForOneStrategy(maxNrOfRetries = 10, withinTimeRange = 1 minute) { case e: Exception => { @@ -55,10 +62,4 @@ class AppsRedisSubscriberActor(jsonMsgBus: IncomingJsonMessageBus, redisHost: St } } - def onPMessage(pmessage: PMessage) { - - // We don't use PSubscribe anymore, but an implementation of the method is required - //log.error("Should not be receiving a PMessage. It triggered on a match of pattern: " + pmessage.patternMatched) - //log.error(pmessage.data.utf8String) - } } diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/endpoint/redis/KeepAliveRedisPublisher.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/endpoint/redis/KeepAliveRedisPublisher.scala deleted file mode 100755 index 74aa6e4b7885620de866627bba075e45e28dba75..0000000000000000000000000000000000000000 --- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/endpoint/redis/KeepAliveRedisPublisher.scala +++ /dev/null @@ -1,16 +0,0 @@ -package org.bigbluebutton.endpoint.redis - -import scala.concurrent.duration._ -import scala.concurrent.ExecutionContext.Implicits.global -import akka.actor.ActorSystem -import org.bigbluebutton.SystemConfiguration - -class KeepAliveRedisPublisher(val system: ActorSystem, sender: RedisPublisher) extends SystemConfiguration { - - val startedOn = System.currentTimeMillis() - - system.scheduler.schedule(2 seconds, 5 seconds) { - //val msg = new BbbAppsIsAliveMessage(startedOn, System.currentTimeMillis()) - // sender.publish("bigbluebutton:from-bbb-apps:keepalive", msg.toJson()) - } -} diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/endpoint/redis/RedisPublisher.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/endpoint/redis/RedisPublisher.scala deleted file mode 100755 index 6af8a64ebb05093023cc7e90a0f445cce3170b8b..0000000000000000000000000000000000000000 --- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/endpoint/redis/RedisPublisher.scala +++ /dev/null @@ -1,21 +0,0 @@ -package org.bigbluebutton.endpoint.redis - -import redis.RedisClient -import akka.actor.ActorSystem -import org.bigbluebutton.SystemConfiguration -import akka.util.ByteString - -class RedisPublisher(val system: ActorSystem) extends SystemConfiguration { - - val redis = RedisClient(redisHost, redisPort)(system) - - // Set the name of this client to be able to distinguish when doing - // CLIENT LIST on redis-cli - redis.clientSetname("BbbAppsAkkaPub") - - def publish(channel: String, data: String) { - //println("PUBLISH TO [" + channel + "]: \n [" + data + "]") - redis.publish(channel, ByteString(data)) - } - -} diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/endpoint/redis/RedisRecorderActor.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/endpoint/redis/RedisRecorderActor.scala index 7a01783d5b6448ad53fd98eb53a235f2829d284b..715fe3b08314dddea66c2bd67c6cbb5410b16569 100755 --- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/endpoint/redis/RedisRecorderActor.scala +++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/endpoint/redis/RedisRecorderActor.scala @@ -14,8 +14,8 @@ object RedisRecorderActor { } class RedisRecorderActor(val system: ActorSystem) - extends SystemConfiguration - with Actor with ActorLogging { + extends SystemConfiguration + with Actor with ActorLogging { val redis = RedisClient(redisHost, redisPort)(system) // Set the name of this client to be able to distinguish when doing diff --git a/akka-bbb-apps/src/test/scala/org/bigbluebutton/core/pubsub/sender/ReceivedJsonMsgHandlerTraitTests.scala b/akka-bbb-apps/src/test/scala/org/bigbluebutton/core/pubsub/sender/ReceivedJsonMsgHandlerTraitTests.scala index cc0977ada45dea8480531cf253a394fd2b41b834..329383ad1512275c9afab734496cd35dfee05273 100755 --- a/akka-bbb-apps/src/test/scala/org/bigbluebutton/core/pubsub/sender/ReceivedJsonMsgHandlerTraitTests.scala +++ b/akka-bbb-apps/src/test/scala/org/bigbluebutton/core/pubsub/sender/ReceivedJsonMsgHandlerTraitTests.scala @@ -9,7 +9,7 @@ import org.mockito.Mockito._ import org.scalatest.mockito.MockitoSugar class ReceivedJsonMsgHandlerTraitTests extends UnitSpec - with AppsTestFixtures with MockitoSugar with SystemConfiguration { + with AppsTestFixtures with MockitoSugar with SystemConfiguration { class MessageRouter(val eventBus: BbbMsgRouterEventBus) extends ReceivedMessageRouter { diff --git a/akka-bbb-fsesl/build.sbt b/akka-bbb-fsesl/build.sbt index 319345d682c45b7255b457ba2a3adafae985b767..2a1d6b363af508d03ceeeee859b09d617fb8486d 100755 --- a/akka-bbb-fsesl/build.sbt +++ b/akka-bbb-fsesl/build.sbt @@ -1,21 +1,31 @@ -enablePlugins(JavaServerAppPackaging) - -name := "bbb-fsesl-akka" +import org.bigbluebutton.build._ -organization := "org.bigbluebutton" +import scalariform.formatter.preferences._ +import com.typesafe.sbt.SbtScalariform +import com.typesafe.sbt.SbtScalariform.ScalariformKeys -version := "0.0.1" +import com.typesafe.sbt.SbtNativePackager.autoImport._ -scalaVersion := "2.12.6" +enablePlugins(JavaServerAppPackaging) -scalacOptions ++= Seq( - "-unchecked", - "-deprecation", - "-Xlint", - "-Ywarn-dead-code", - "-language:_", - "-target:jvm-1.8", - "-encoding", "UTF-8" +version := "0.0.2" + +val compileSettings = Seq( + organization := "org.bigbluebutton", + + scalacOptions ++= List( + "-unchecked", + "-deprecation", + "-Xlint", + "-Ywarn-dead-code", + "-language:_", + "-target:jvm-1.8", + "-encoding", "UTF-8" + ), + javacOptions ++= List( + "-Xlint:unchecked", + "-Xlint:deprecation" + ) ) resolvers ++= Seq( @@ -37,63 +47,14 @@ testOptions in Test += Tests.Argument(TestFrameworks.Specs2, "html", "console", testOptions in Test += Tests.Argument(TestFrameworks.ScalaTest, "-h", "target/scalatest-reports") -val akkaVersion = "2.5.14" -val scalaTestV = "2.2.6" - - -libraryDependencies ++= { - Seq( - "ch.qos.logback" % "logback-classic" % "1.2.3" % "runtime", - "junit" % "junit" % "4.11", - "commons-codec" % "commons-codec" % "1.11", - "joda-time" % "joda-time" % "2.10", - "org.apache.commons" % "commons-lang3" % "3.7" - - )} - -libraryDependencies += "org.bigbluebutton" % "bbb-common-message_2.12" % "0.0.19-SNAPSHOT" - -libraryDependencies += "org.bigbluebutton" % "bbb-fsesl-client" % "0.0.6" - -// https://mvnrepository.com/artifact/org.scala-lang/scala-library -libraryDependencies += "org.scala-lang" % "scala-library" % scalaVersion.value -// https://mvnrepository.com/artifact/org.scala-lang/scala-compiler -libraryDependencies += "org.scala-lang" % "scala-compiler" % scalaVersion.value - -// https://mvnrepository.com/artifact/com.typesafe.akka/akka-actor_2.12 -libraryDependencies += "com.typesafe.akka" % "akka-actor_2.12" % akkaVersion - -// https://mvnrepository.com/artifact/com.typesafe.akka/akka-slf4j_2.12 -libraryDependencies += "com.typesafe.akka" % "akka-slf4j_2.12" % akkaVersion - -// https://mvnrepository.com/artifact/com.github.etaty/rediscala_2.12 -libraryDependencies += "com.github.etaty" % "rediscala_2.12" % "1.8.0" - -// For generating test reports -libraryDependencies += "org.pegdown" % "pegdown" % "1.6.0" % "test" -// https://mvnrepository.com/artifact/com.typesafe.akka/akka-testkit_2.12 -libraryDependencies += "com.typesafe.akka" % "akka-testkit_2.12" % "2.5.14" % "test" - -// https://mvnrepository.com/artifact/org.scalactic/scalactic_2.12 -libraryDependencies += "org.scalactic" % "scalactic_2.12" % "3.0.5" % "test" - -// https://mvnrepository.com/artifact/org.scalatest/scalatest_2.12 -libraryDependencies += "org.scalatest" % "scalatest_2.12" % "3.0.5" % "test" - -libraryDependencies += "org.mockito" % "mockito-core" % "2.21.0" % "test" - -seq(Revolver.settings: _*) - -import com.typesafe.sbt.SbtScalariform - -import scalariform.formatter.preferences._ -import com.typesafe.sbt.SbtScalariform.ScalariformKeys +Seq(Revolver.settings: _*) +lazy val bbbFseslAkka = (project in file(".")).settings(name := "bbb-fsesl-akka", libraryDependencies ++= Dependencies.runtime).settings(compileSettings) -SbtScalariform.defaultScalariformSettings +scalariformAutoformat := false -ScalariformKeys.preferences := ScalariformKeys.preferences.value +scalariformPreferences := scalariformPreferences.value .setPreference(AlignSingleLineCaseStatements, true) - .setPreference(DoubleIndentClassDeclaration, true) + .setPreference(DoubleIndentConstructorArguments, true) .setPreference(AlignParameters, true) //----------- @@ -121,16 +82,7 @@ daemonUser in Linux := user // group which will execute the application daemonGroup in Linux := group -mappings in Universal <+= (packageBin in Compile, sourceDirectory ) map { (_, src) => - // Move the application.conf so the user can override settings here - val appConf = src / "main" / "resources" / "application.conf" - appConf -> "conf/application.conf" -} - -mappings in Universal <+= (packageBin in Compile, sourceDirectory ) map { (_, src) => - // Move logback.xml so the user can override settings here - val logConf = src / "main" / "resources" / "logback.xml" - logConf -> "conf/logback.xml" -} +mappings in(Universal, packageBin) += file("src/main/resources/application.conf") -> "conf/application.conf" +mappings in(Universal, packageBin) += file("src/main/resources/logback.xml") -> "conf/logback.xml" debianPackageDependencies in Debian ++= Seq("java8-runtime-headless", "bash") diff --git a/akka-bbb-fsesl/project/Build.scala b/akka-bbb-fsesl/project/Build.scala deleted file mode 100755 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/akka-bbb-fsesl/project/Dependencies.scala b/akka-bbb-fsesl/project/Dependencies.scala new file mode 100644 index 0000000000000000000000000000000000000000..2f27ce37cd400217990fe62fd8c5e73b8befda70 --- /dev/null +++ b/akka-bbb-fsesl/project/Dependencies.scala @@ -0,0 +1,76 @@ +package org.bigbluebutton.build + +import sbt._ +import Keys._ + +object Dependencies { + + object Versions { + // Scala + val scala = "2.12.7" + val junitInterface = "0.11" + val scalactic = "3.0.3" + + // Libraries + val akkaVersion = "2.5.17" + val logback = "1.2.3" + + // Apache Commons + val lang = "3.8.1" + val codec = "1.11" + + // Redis + val redisScala = "1.8.0" + + // BigBlueButton + val bbbCommons = "0.0.20-SNAPSHOT" + val bbbFsesl = "0.0.7" + + // Test + val scalaTest = "3.0.5" + val akkaTestKit = "2.5.18" + val junit = "4.12" + } + + object Compile { + val scalaLibrary = "org.scala-lang" % "scala-library" % Versions.scala + val scalaCompiler = "org.scala-lang" % "scala-compiler" % Versions.scala + + val akkaActor = "com.typesafe.akka" % "akka-actor_2.12" % Versions.akkaVersion + val akkaSl4fj = "com.typesafe.akka" % "akka-slf4j_2.12" % Versions.akkaVersion + + val logback = "ch.qos.logback" % "logback-classic" % Versions.logback % "runtime" + val commonsCodec = "commons-codec" % "commons-codec" % Versions.codec + + val apacheLang = "org.apache.commons" % "commons-lang3" % Versions.lang + + val redisScala = "com.github.etaty" % "rediscala_2.12" % Versions.redisScala + + val bbbCommons = "org.bigbluebutton" % "bbb-common-message_2.12" % Versions.bbbCommons + val bbbFseslClient = "org.bigbluebutton" % "bbb-fsesl-client" % Versions.bbbFsesl + } + + object Test { + val scalaTest = "org.scalatest" %% "scalatest" % Versions.scalaTest % "test" + val junit = "junit" % "junit" % Versions.junit % "test" + val scalactic = "org.scalactic" % "scalactic_2.12" % Versions.scalactic % "test" + val akkaTestKit = "com.typesafe.akka" %% "akka-testkit" % Versions.akkaTestKit % "test" + } + + val testing = Seq( + Test.scalaTest, + Test.junit, + Test.scalactic, + Test.akkaTestKit) + + val runtime = Seq( + Compile.scalaLibrary, + Compile.scalaCompiler, + Compile.akkaActor, + Compile.logback, + Compile.commonsCodec, + Compile.apacheLang, + Compile.redisScala, + Compile.bbbCommons, + Compile.bbbFseslClient) ++ testing +} diff --git a/akka-bbb-fsesl/project/build.properties b/akka-bbb-fsesl/project/build.properties index a6e117b61042ee81c62ba3a0fc5210d9502944df..2e6e3d24608ee15e892ed3b16d84224f7667e808 100755 --- a/akka-bbb-fsesl/project/build.properties +++ b/akka-bbb-fsesl/project/build.properties @@ -1 +1 @@ -sbt.version=0.13.8 +sbt.version=1.2.6 \ No newline at end of file diff --git a/akka-bbb-fsesl/project/plugins.sbt b/akka-bbb-fsesl/project/plugins.sbt index 56e1e39f39dc0e78ca98f35d7c98f4c833509120..bc8c448553a2010f0c76ea69ccb7917f51ffef8a 100755 --- a/akka-bbb-fsesl/project/plugins.sbt +++ b/akka-bbb-fsesl/project/plugins.sbt @@ -1,11 +1,11 @@ addSbtPlugin("io.spray" % "sbt-revolver" % "0.9.1") -addSbtPlugin("org.scalariform" % "sbt-scalariform" % "1.8.2") - addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "5.2.4") -addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.3.6") +addSbtPlugin("org.scalariform" % "sbt-scalariform" % "1.8.2") + +addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.3.12") -addSbtPlugin("net.vonbuchholtz" % "sbt-dependency-check" % "0.2.7") +addSbtPlugin("net.vonbuchholtz" % "sbt-dependency-check" % "0.2.8") addSbtPlugin("org.scalastyle" %% "scalastyle-sbt-plugin" % "1.0.0") diff --git a/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/Boot.scala b/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/Boot.scala index 1ab8664c2b09a3489ca5c8aa60322a67ca47f57e..1ae4cbed2e28b06d063ff2336ebab1df53a1f488 100755 --- a/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/Boot.scala +++ b/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/Boot.scala @@ -2,7 +2,8 @@ package org.bigbluebutton import akka.actor.{ ActorSystem } -import org.bigbluebutton.endpoint.redis.{ AppsRedisSubscriberActor, RedisPublisher } +import org.bigbluebutton.common2.redis.RedisPublisher +import org.bigbluebutton.endpoint.redis.FSESLRedisSubscriberActor import org.bigbluebutton.freeswitch.{ RxJsonMsgHdlrActor, VoiceConferenceService } import org.bigbluebutton.freeswitch.bus.InsonMsgBus import org.bigbluebutton.freeswitch.voice.FreeswitchConferenceEventListener @@ -13,7 +14,7 @@ object Boot extends App with SystemConfiguration { implicit val system = ActorSystem("bigbluebutton-fsesl-system") - val redisPublisher = new RedisPublisher(system) + val redisPublisher = new RedisPublisher(system, "BbbFsEslAkkaPub") val eslConnection = new DefaultManagerConnection(eslHost, eslPort, eslPassword) @@ -34,6 +35,5 @@ object Boot extends App with SystemConfiguration { val redisMessageHandlerActor = system.actorOf(RxJsonMsgHdlrActor.props(fsApplication)) inJsonMsgBus.subscribe(redisMessageHandlerActor, toFsAppsJsonChannel) - val redisSubscriberActor = system.actorOf(AppsRedisSubscriberActor.props(system, inJsonMsgBus), "redis-subscriber") - + val redisSubscriberActor = system.actorOf(FSESLRedisSubscriberActor.props(system, inJsonMsgBus), "redis-subscriber") } diff --git a/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/SystemConfiguration.scala b/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/SystemConfiguration.scala index c9c776a410d714d2e28627a173e97a075500050e..188d202835c68438d44ba8fc7f26308fb929d5d2 100755 --- a/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/SystemConfiguration.scala +++ b/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/SystemConfiguration.scala @@ -1,23 +1,15 @@ package org.bigbluebutton -import com.typesafe.config.ConfigFactory import scala.util.Try -trait SystemConfiguration { - - val config = ConfigFactory.load() +import org.bigbluebutton.common2.redis.RedisConfiguration +trait SystemConfiguration extends RedisConfiguration { lazy val eslHost = Try(config.getString("freeswitch.esl.host")).getOrElse("127.0.0.1") lazy val eslPort = Try(config.getInt("freeswitch.esl.port")).getOrElse(8021) lazy val eslPassword = Try(config.getString("freeswitch.esl.password")).getOrElse("ClueCon") lazy val fsProfile = Try(config.getString("freeswitch.conf.profile")).getOrElse("cdquality") - lazy val redisHost = Try(config.getString("redis.host")).getOrElse("127.0.0.1") - lazy val redisPort = Try(config.getInt("redis.port")).getOrElse(6379) - lazy val redisPassword = Try(config.getString("redis.password")).getOrElse("") - - lazy val toVoiceConfRedisChannel = Try(config.getString("redis.toVoiceConfRedisChannel")).getOrElse("to-voice-conf-redis-channel") - lazy val fromVoiceConfRedisChannel = Try(config.getString("redis.fromVoiceConfRedisChannel")).getOrElse("from-voice-conf-redis-channel") lazy val toFsAppsJsonChannel = Try(config.getString("eventBus.toFsAppsChannel")).getOrElse("to-fs-apps-json-channel") lazy val fromFsAppsJsonChannel = Try(config.getString("eventBus.fromFsAppsChannel")).getOrElse("from-fs-apps-json-channel") } diff --git a/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/endpoint/redis/AppsRedisSubscriberActor.scala b/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/endpoint/redis/FSESLRedisSubscriberActor.scala similarity index 68% rename from akka-bbb-fsesl/src/main/scala/org/bigbluebutton/endpoint/redis/AppsRedisSubscriberActor.scala rename to akka-bbb-fsesl/src/main/scala/org/bigbluebutton/endpoint/redis/FSESLRedisSubscriberActor.scala index 4f969be0b6465347544e038f95917fa3c8a1794e..c021f739b7e3a9d82cb71a0cc6fb102cd943a835 100755 --- a/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/endpoint/redis/AppsRedisSubscriberActor.scala +++ b/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/endpoint/redis/FSESLRedisSubscriberActor.scala @@ -6,49 +6,54 @@ import java.net.InetSocketAddress import scala.concurrent.ExecutionContext.Implicits.global import scala.concurrent.duration.DurationInt + import org.bigbluebutton.SystemConfiguration +import org.bigbluebutton.common2.redis.RedisAppSubscriberActor +import org.bigbluebutton.common2.redis.RedisConfiguration +import org.bigbluebutton.common2.redis.RedisSubscriber +import org.bigbluebutton.freeswitch.bus.InJsonMsg +import org.bigbluebutton.freeswitch.bus.InsonMsgBus +import org.bigbluebutton.freeswitch.bus.ReceivedJsonMsg + import akka.actor.ActorSystem import akka.actor.OneForOneStrategy import akka.actor.Props import akka.actor.SupervisorStrategy.Resume -import org.bigbluebutton.freeswitch.bus.{ InJsonMsg, InsonMsgBus, ReceivedJsonMsg } import redis.actors.RedisSubscriberActor import redis.api.pubsub.Message -import redis.api.pubsub.PMessage import redis.api.servers.ClientSetname -object AppsRedisSubscriberActor extends SystemConfiguration { +object FSESLRedisSubscriberActor extends RedisSubscriber with RedisConfiguration { val channels = Seq(toVoiceConfRedisChannel) val patterns = Seq("bigbluebutton:to-voice-conf:*", "bigbluebutton:from-bbb-apps:*") def props(system: ActorSystem, inJsonMgBus: InsonMsgBus): Props = - Props(classOf[AppsRedisSubscriberActor], system, inJsonMgBus, + Props(classOf[FSESLRedisSubscriberActor], system, inJsonMgBus, redisHost, redisPort, channels, patterns).withDispatcher("akka.rediscala-subscriber-worker-dispatcher") } -class AppsRedisSubscriberActor( +class FSESLRedisSubscriberActor( val system: ActorSystem, inJsonMgBus: InsonMsgBus, redisHost: String, redisPort: Int, channels: Seq[String] = Nil, patterns: Seq[String] = Nil) - extends RedisSubscriberActor( - new InetSocketAddress(redisHost, redisPort), - channels, patterns, onConnectStatus = connected => { println(s"connected: $connected") }) with SystemConfiguration { + extends RedisSubscriberActor( + new InetSocketAddress(redisHost, redisPort), + channels, patterns, onConnectStatus = connected => { println(s"connected: $connected") }) + with SystemConfiguration + with RedisAppSubscriberActor { override val supervisorStrategy = OneForOneStrategy(maxNrOfRetries = 10, withinTimeRange = 1 minute) { case e: Exception => { val sw: StringWriter = new StringWriter() - sw.write("An exception has been thrown on AppsRedisSubscriberActor, exception message [" + e.getMessage() + "] (full stacktrace below)\n") + sw.write("An exception has been thrown on FSESlRedisSubscriberActor, exception message [" + e.getMessage() + "] (full stacktrace below)\n") e.printStackTrace(new PrintWriter(sw)) log.error(sw.toString()) Resume } } - - // val decoder = new FromJsonDecoder() - var lastPongReceivedOn = 0L system.scheduler.schedule(10 seconds, 10 seconds)(checkPongMessage()) @@ -71,12 +76,4 @@ class AppsRedisSubscriberActor( inJsonMgBus.publish(InJsonMsg(toFsAppsJsonChannel, receivedJsonMessage)) } } - - def onPMessage(pmessage: PMessage) { - // log.debug(s"pattern message received: $pmessage") - } - - def handleMessage(msg: String) { - log.warning("**** TODO: Handle pubsub messages. ****") - } } diff --git a/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/endpoint/redis/RedisPublisher.scala b/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/endpoint/redis/RedisPublisher.scala deleted file mode 100755 index 11acf3d06d30cd2574e3e38a26befc09fae7166d..0000000000000000000000000000000000000000 --- a/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/endpoint/redis/RedisPublisher.scala +++ /dev/null @@ -1,20 +0,0 @@ -package org.bigbluebutton.endpoint.redis - -import redis.RedisClient -import akka.actor.ActorSystem -import org.bigbluebutton.SystemConfiguration - -class RedisPublisher(val system: ActorSystem) extends SystemConfiguration { - - val redis = RedisClient(redisHost, redisPort)(system) - - // Set the name of this client to be able to distinguish when doing - // CLIENT LIST on redis-cli - redis.clientSetname("BbbFsEslAkkaPub") - - def publish(channel: String, data: String) { - //println("PUBLISH TO [" + channel + "]: \n [" + data + "]") - redis.publish(channel, data) - } - -} diff --git a/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/freeswitch/VoiceConferenceService.scala b/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/freeswitch/VoiceConferenceService.scala index f82d08080087570a5b1102f2e972443904c10163..a72302e7f3fdbbd6093f8d7c206668e7fe251aca 100755 --- a/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/freeswitch/VoiceConferenceService.scala +++ b/akka-bbb-fsesl/src/main/scala/org/bigbluebutton/freeswitch/VoiceConferenceService.scala @@ -2,9 +2,9 @@ package org.bigbluebutton.freeswitch import org.bigbluebutton.SystemConfiguration import org.bigbluebutton.freeswitch.voice.IVoiceConferenceService -import org.bigbluebutton.endpoint.redis.RedisPublisher import org.bigbluebutton.common2.msgs._ -import org.bigbluebutton.common2.util.JsonUtil +import org.bigbluebutton.common2.util.JsonUtil +import org.bigbluebutton.common2.redis.RedisPublisher class VoiceConferenceService(sender: RedisPublisher) extends IVoiceConferenceService with SystemConfiguration { diff --git a/bbb-apps-common/build.sbt b/bbb-apps-common/build.sbt index 479d4e6ad46626096e0a8e96028a29af971a0b2a..ca5fd2275a99656c172f2ca29741365925794cdf 100755 --- a/bbb-apps-common/build.sbt +++ b/bbb-apps-common/build.sbt @@ -46,7 +46,6 @@ libraryDependencies += "com.softwaremill.quicklens" %% "quicklens" % "1.4.11" libraryDependencies += "org.bigbluebutton" % "bbb-common-message_2.12" % "0.0.19-SNAPSHOT" libraryDependencies += "com.google.code.gson" % "gson" % "2.8.5" -libraryDependencies += "redis.clients" % "jedis" % "2.9.0" // https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 libraryDependencies += "org.apache.commons" % "commons-lang3" % "3.7" diff --git a/bbb-apps-common/src/main/scala/org/bigbluebutton/client/ClientGWApplication.scala b/bbb-apps-common/src/main/scala/org/bigbluebutton/client/ClientGWApplication.scala index 9f0bf267da240b1da0d28ae1f8231cfed4f00891..30d2c6799320360e507119993a325231d462471d 100644 --- a/bbb-apps-common/src/main/scala/org/bigbluebutton/client/ClientGWApplication.scala +++ b/bbb-apps-common/src/main/scala/org/bigbluebutton/client/ClientGWApplication.scala @@ -3,10 +3,12 @@ package org.bigbluebutton.client import akka.actor.ActorSystem import akka.event.Logging import org.bigbluebutton.client.bus._ -import org.bigbluebutton.client.endpoint.redis.{AppsRedisSubscriberActor, MessageSender, RedisPublisher} +import org.bigbluebutton.client.endpoint.redis.AppsRedisSubscriberActor import org.bigbluebutton.client.meeting.MeetingManagerActor - -import scala.concurrent.duration._ +import org.bigbluebutton.common2.redis.RedisPublisher + +import scala.concurrent.duration._ +import org.bigbluebutton.common2.redis.MessageSender class ClientGWApplication(val msgToClientGW: MsgToClientGW) extends SystemConfiguration{ @@ -20,7 +22,7 @@ class ClientGWApplication(val msgToClientGW: MsgToClientGW) extends SystemConfig private val msgToRedisEventBus = new MsgToRedisEventBus private val msgToClientEventBus = new MsgToClientEventBus - private val redisPublisher = new RedisPublisher(system) + private val redisPublisher = new RedisPublisher(system, "Red5AppsPub") private val msgSender: MessageSender = new MessageSender(redisPublisher) private val meetingManagerActorRef = system.actorOf( diff --git a/bbb-apps-common/src/main/scala/org/bigbluebutton/client/MsgToRedisActor.scala b/bbb-apps-common/src/main/scala/org/bigbluebutton/client/MsgToRedisActor.scala index 94b37ae92489caf176caa2a5b3191dbaeb4d3fd4..5a3ce496ff2c1827b741c8106adf66693af2f2c1 100644 --- a/bbb-apps-common/src/main/scala/org/bigbluebutton/client/MsgToRedisActor.scala +++ b/bbb-apps-common/src/main/scala/org/bigbluebutton/client/MsgToRedisActor.scala @@ -1,10 +1,10 @@ package org.bigbluebutton.client -import akka.actor.{Actor, ActorLogging, Props} +import akka.actor.{ Actor, ActorLogging, Props } import org.bigbluebutton.common2.msgs.BbbCommonEnvJsNodeMsg -import org.bigbluebutton.common2.util.JsonUtil -import org.bigbluebutton.client.endpoint.redis.MessageSender +import org.bigbluebutton.common2.util.JsonUtil import org.bigbluebutton.common2.msgs.LookUpUserReqMsg +import org.bigbluebutton.common2.redis.MessageSender object MsgToRedisActor { def props(msgSender: MessageSender): Props = @@ -20,11 +20,10 @@ class MsgToRedisActor(msgSender: MessageSender) def handle(msg: BbbCommonEnvJsNodeMsg): Unit = { val json = JsonUtil.toJson(msg) - + msg.envelope.name match { case LookUpUserReqMsg.NAME => msgSender.send(toThirdPartyRedisChannel, json) - case _ => msgSender.send(toAkkaAppsRedisChannel, json) + case _ => msgSender.send(toAkkaAppsRedisChannel, json) } } - } diff --git a/bbb-apps-common/src/main/scala/org/bigbluebutton/client/SystemConfiguration.scala b/bbb-apps-common/src/main/scala/org/bigbluebutton/client/SystemConfiguration.scala index 26e7528bbbb99e0b0424c9ca0e269c0cde477089..1880c82f698e3f631edc8aa01c8d148885a649e8 100644 --- a/bbb-apps-common/src/main/scala/org/bigbluebutton/client/SystemConfiguration.scala +++ b/bbb-apps-common/src/main/scala/org/bigbluebutton/client/SystemConfiguration.scala @@ -1,15 +1,10 @@ package org.bigbluebutton.client import scala.util.Try -import com.typesafe.config.ConfigFactory -trait SystemConfiguration { - val config = ConfigFactory.load() - - lazy val redisHost = Try(config.getString("redis.host")).getOrElse("127.0.0.1") - lazy val redisPort = Try(config.getInt("redis.port")).getOrElse(6379) - lazy val redisPassword = Try(config.getString("redis.password")).getOrElse("") +import org.bigbluebutton.common2.redis.RedisConfiguration +trait SystemConfiguration extends RedisConfiguration { lazy val toAkkaAppsRedisChannel = Try(config.getString("redis.toAkkaAppsRedisChannel")).getOrElse("to-akka-apps-redis-channel") lazy val fromAkkaAppsRedisChannel = Try(config.getString("redis.fromAkkaAppsRedisChannel")).getOrElse("from-akka-apps-redis-channel") lazy val toThirdPartyRedisChannel = Try(config.getString("redis.toThirdPartyRedisChannel")).getOrElse("to-third-party-redis-channel") diff --git a/bbb-apps-common/src/main/scala/org/bigbluebutton/client/bus/JsonMsgFromAkkaAppsBus.scala b/bbb-apps-common/src/main/scala/org/bigbluebutton/client/bus/JsonMsgFromAkkaAppsBus.scala deleted file mode 100755 index ad28aa0618eb0ce5298feb8be9383ff2850d4c5c..0000000000000000000000000000000000000000 --- a/bbb-apps-common/src/main/scala/org/bigbluebutton/client/bus/JsonMsgFromAkkaAppsBus.scala +++ /dev/null @@ -1,32 +0,0 @@ -package org.bigbluebutton.client.bus - -import akka.actor.ActorRef -import akka.event.{EventBus, LookupClassification} - -case class JsonMsgFromAkkaApps(name: String, data: String) -case class JsonMsgFromAkkaAppsEvent(val topic: String, val payload: JsonMsgFromAkkaApps) - -class JsonMsgFromAkkaAppsBus extends EventBus with LookupClassification { - type Event = JsonMsgFromAkkaAppsEvent - type Classifier = String - type Subscriber = ActorRef - - // is used for extracting the classifier from the incoming events - override protected def classify(event: Event): Classifier = event.topic - - // will be invoked for each event for all subscribers which registered themselves - // for the event’s classifier - override protected def publish(event: Event, subscriber: Subscriber): Unit = { - subscriber ! event.payload - } - - // must define a full order over the subscribers, expressed as expected from - // `java.lang.Comparable.compare` - override protected def compareSubscribers(a: Subscriber, b: Subscriber): Int = - a.compareTo(b) - - // determines the initial size of the index data structure - // used internally (i.e. the expected number of different classifiers) - override protected def mapSize: Int = 128 - -} diff --git a/bbb-apps-common/src/main/scala/org/bigbluebutton/client/bus/MsgFromAkkaAppsEventBus.scala b/bbb-apps-common/src/main/scala/org/bigbluebutton/client/bus/MsgFromAkkaAppsEventBus.scala deleted file mode 100755 index 20dc5055368e2084c2f8c3dc50e6fcf88f870135..0000000000000000000000000000000000000000 --- a/bbb-apps-common/src/main/scala/org/bigbluebutton/client/bus/MsgFromAkkaAppsEventBus.scala +++ /dev/null @@ -1,31 +0,0 @@ -package org.bigbluebutton.client.bus - -import akka.actor.ActorRef -import akka.event.{EventBus, LookupClassification} -import org.bigbluebutton.common2.msgs.{ BbbCommonEnvJsNodeMsg} - -case class MsgFromAkkaApps(val topic: String, val payload: BbbCommonEnvJsNodeMsg) - -class MsgFromAkkaAppsEventBus extends EventBus with LookupClassification { - type Event = MsgFromAkkaApps - type Classifier = String - type Subscriber = ActorRef - - // is used for extracting the classifier from the incoming events - override protected def classify(event: Event): Classifier = event.topic - - // will be invoked for each event for all subscribers which registered themselves - // for the event’s classifier - override protected def publish(event: Event, subscriber: Subscriber): Unit = { - subscriber ! event.payload - } - - // must define a full order over the subscribers, expressed as expected from - // `java.lang.Comparable.compare` - override protected def compareSubscribers(a: Subscriber, b: Subscriber): Int = - a.compareTo(b) - - // determines the initial size of the index data structure - // used internally (i.e. the expected number of different classifiers) - override protected def mapSize: Int = 128 -} diff --git a/bbb-apps-common/src/main/scala/org/bigbluebutton/client/endpoint/redis/KeepAliveRedisPublisher.scala b/bbb-apps-common/src/main/scala/org/bigbluebutton/client/endpoint/redis/KeepAliveRedisPublisher.scala deleted file mode 100755 index 131a2d46ceec85cc9d5f870ca32f381c70f797d9..0000000000000000000000000000000000000000 --- a/bbb-apps-common/src/main/scala/org/bigbluebutton/client/endpoint/redis/KeepAliveRedisPublisher.scala +++ /dev/null @@ -1,17 +0,0 @@ -package org.bigbluebutton.client.endpoint.redis - -import scala.concurrent.duration._ -import scala.concurrent.ExecutionContext.Implicits.global -import akka.actor.ActorSystem -import org.bigbluebutton.client.SystemConfiguration -//import org.bigbluebutton.common.messages.BbbAppsIsAliveMessage - -class KeepAliveRedisPublisher(val system: ActorSystem, sender: RedisPublisher) extends SystemConfiguration { - - val startedOn = System.currentTimeMillis() - - system.scheduler.schedule(2 seconds, 5 seconds) { -// val msg = new BbbAppsIsAliveMessage(startedOn, System.currentTimeMillis()) -// sender.publish("bigbluebutton:from-bbb-apps:keepalive", msg.toJson()) - } -} diff --git a/bbb-apps-common/src/main/scala/org/bigbluebutton/client/endpoint/redis/MessageSender.scala b/bbb-apps-common/src/main/scala/org/bigbluebutton/client/endpoint/redis/MessageSender.scala deleted file mode 100755 index 191af624c8c0e67aa8be845784a1ca9942ed3255..0000000000000000000000000000000000000000 --- a/bbb-apps-common/src/main/scala/org/bigbluebutton/client/endpoint/redis/MessageSender.scala +++ /dev/null @@ -1,8 +0,0 @@ -package org.bigbluebutton.client.endpoint.redis - -class MessageSender(publisher: RedisPublisher) { - - def send(channel: String, data: String) { - publisher.publish(channel, data) - } -} diff --git a/bbb-apps-common/src/main/scala/org/bigbluebutton/client/endpoint/redis/AppsRedisSubscriberActor.scala b/bbb-apps-common/src/main/scala/org/bigbluebutton/client/endpoint/redis/Red5AppsRedisSubscriberActor.scala similarity index 67% rename from bbb-apps-common/src/main/scala/org/bigbluebutton/client/endpoint/redis/AppsRedisSubscriberActor.scala rename to bbb-apps-common/src/main/scala/org/bigbluebutton/client/endpoint/redis/Red5AppsRedisSubscriberActor.scala index 2d3a30fe97fac898b5d91ae743c4c096d5c67658..293bde7d9bc37f6a26f10e2a55c5d6cb14a8c8b2 100644 --- a/bbb-apps-common/src/main/scala/org/bigbluebutton/client/endpoint/redis/AppsRedisSubscriberActor.scala +++ b/bbb-apps-common/src/main/scala/org/bigbluebutton/client/endpoint/redis/Red5AppsRedisSubscriberActor.scala @@ -1,17 +1,18 @@ package org.bigbluebutton.client.endpoint.redis -import akka.actor.{ActorLogging, OneForOneStrategy, Props} +import akka.actor.{ ActorLogging, OneForOneStrategy, Props } import akka.actor.SupervisorStrategy.Resume -import java.io.{PrintWriter, StringWriter} +import java.io.{ PrintWriter, StringWriter } import java.net.InetSocketAddress import redis.actors.RedisSubscriberActor -import redis.api.pubsub.{Message, PMessage} +import redis.api.pubsub.{ Message, PMessage } import scala.concurrent.duration._ import org.bigbluebutton.client._ -import org.bigbluebutton.client.bus.{JsonMsgFromAkkaApps, JsonMsgFromAkkaAppsBus, JsonMsgFromAkkaAppsEvent} -import redis.api.servers.ClientSetname +import org.bigbluebutton.client.bus.{ JsonMsgFromAkkaApps, JsonMsgFromAkkaAppsBus, JsonMsgFromAkkaAppsEvent } +import redis.api.servers.ClientSetname +import org.bigbluebutton.common2.redis.RedisAppSubscriberActor object AppsRedisSubscriberActor extends SystemConfiguration { @@ -26,10 +27,11 @@ object AppsRedisSubscriberActor extends SystemConfiguration { class AppsRedisSubscriberActor(jsonMsgBus: JsonMsgFromAkkaAppsBus, redisHost: String, redisPort: Int, - channels: Seq[String] = Nil, patterns: Seq[String] = Nil) - extends RedisSubscriberActor(new InetSocketAddress(redisHost, redisPort), - channels, patterns, onConnectStatus = connected => { println(s"connected: $connected") }) - with SystemConfiguration with ActorLogging { + channels: Seq[String] = Nil, patterns: Seq[String] = Nil) + extends RedisSubscriberActor( + new InetSocketAddress(redisHost, redisPort), + channels, patterns, onConnectStatus = connected => { println(s"connected: $connected") }) + with SystemConfiguration with ActorLogging with RedisAppSubscriberActor { override val supervisorStrategy = OneForOneStrategy(maxNrOfRetries = 10, withinTimeRange = 1 minute) { case e: Exception => { @@ -41,7 +43,6 @@ class AppsRedisSubscriberActor(jsonMsgBus: JsonMsgFromAkkaAppsBus, redisHost: St } } - // Set the name of this client to be able to distinguish when doing // CLIENT LIST on redis-cli write(ClientSetname("Red5AppsSub").encodedRequest) @@ -54,9 +55,4 @@ class AppsRedisSubscriberActor(jsonMsgBus: JsonMsgFromAkkaAppsBus, redisHost: St } } - - def onPMessage(pmessage: PMessage) { - // We don't use PSubscribe anymore, but an implementation of the method is required - log.error("Should not be receiving a PMessage. It triggered on a match of pattern: " + pmessage.patternMatched) - } } diff --git a/bbb-apps-common/src/main/scala/org/bigbluebutton/client/endpoint/redis/RedisPublisher.scala b/bbb-apps-common/src/main/scala/org/bigbluebutton/client/endpoint/redis/RedisPublisher.scala deleted file mode 100755 index 379b15f5dec53f025e454613d7c8b2a08bdcf042..0000000000000000000000000000000000000000 --- a/bbb-apps-common/src/main/scala/org/bigbluebutton/client/endpoint/redis/RedisPublisher.scala +++ /dev/null @@ -1,24 +0,0 @@ -package org.bigbluebutton.client.endpoint.redis - -import redis.RedisClient -import akka.actor.ActorSystem -import akka.event.Logging -import org.bigbluebutton.client.SystemConfiguration -import akka.util.ByteString - -class RedisPublisher(val system: ActorSystem) extends SystemConfiguration { - - val redis = RedisClient(redisHost, redisPort)(system) - - val log = Logging(system, getClass) - - // Set the name of this client to be able to distinguish when doing - // CLIENT LIST on redis-cli - redis.clientSetname("Red5AppsPub") - - def publish(channel: String, data: String) { - //log.debug("PUBLISH TO [" + channel + "]: \n [" + data + "]") - redis.publish(channel, ByteString(data)) - } - -} diff --git a/bbb-common-message/build.sbt b/bbb-common-message/build.sbt index f18aee17ff41af8796dc960f177a7015afe36064..054aa4acd34f7ae83ac5ea420818bfcf71ade0fd 100755 --- a/bbb-common-message/build.sbt +++ b/bbb-common-message/build.sbt @@ -2,8 +2,6 @@ import org.bigbluebutton.build._ version := "0.0.20-SNAPSHOT" -scalaVersion := "2.12.7" - val compileSettings = Seq( organization := "org.bigbluebutton", diff --git a/bbb-common-message/project/Dependencies.scala b/bbb-common-message/project/Dependencies.scala index a9f76fbc5cae3d185af34b9da24ea8d0be08a123..92c0b2206585a428b3e9d480a96761548f1e0162 100644 --- a/bbb-common-message/project/Dependencies.scala +++ b/bbb-common-message/project/Dependencies.scala @@ -11,12 +11,15 @@ object Dependencies { val junit = "4.12" val junitInterface = "0.11" val scalactic = "3.0.3" - val pegdown = "1.6.0" // Libraries + val akkaVersion = "2.5.17" val gson = "2.8.5" val jackson = "2.9.7" val sl4j = "1.7.25" + + // Redis + val redisScala = "1.8.0" val lettuce = "5.1.2.RELEASE" // Test @@ -27,10 +30,14 @@ object Dependencies { val scalaLibrary = "org.scala-lang" % "scala-library" % Versions.scala val scalaCompiler = "org.scala-lang" % "scala-compiler" % Versions.scala + val akkaActor = "com.typesafe.akka" % "akka-actor_2.12" % Versions.akkaVersion + val googleGson = "com.google.code.gson" % "gson" % Versions.gson val jacksonModule = "com.fasterxml.jackson.module" %% "jackson-module-scala" % Versions.jackson val sl4jApi = "org.slf4j" % "slf4j-api" % Versions.sl4j + val lettuceCore = "io.lettuce" % "lettuce-core" % Versions.lettuce + val redisScala = "com.github.etaty" % "rediscala_2.12" % Versions.redisScala } object Test { @@ -38,21 +45,21 @@ object Dependencies { val junit = "junit" % "junit" % Versions.junit % "test" val junitInteface = "com.novocode" % "junit-interface" % Versions.junitInterface % "test" val scalactic = "org.scalactic" % "scalactic_2.12" % Versions.scalactic % "test" - val pegdown = "org.pegdown" % "pegdown" % Versions.pegdown % "test" } val testing = Seq( Test.scalaTest, Test.junit, Test.junitInteface, - Test.scalactic, - Test.pegdown) + Test.scalactic) val runtime = Seq( Compile.scalaLibrary, Compile.scalaCompiler, + Compile.akkaActor, Compile.googleGson, Compile.jacksonModule, Compile.sl4jApi, - Compile.lettuceCore) ++ testing + Compile.lettuceCore, + Compile.redisScala) ++ testing } diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common2/redis/RedisStorageService.java b/bbb-common-message/src/main/java/org/bigbluebutton/common2/redis/RedisStorageService.java index 33133cf4528755e1de0540567d0aed74792d4329..8a52f033b4df5fae6c0f35f596ed41df8a4e2213 100644 --- a/bbb-common-message/src/main/java/org/bigbluebutton/common2/redis/RedisStorageService.java +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common2/redis/RedisStorageService.java @@ -31,7 +31,6 @@ import io.lettuce.core.RedisURI; import io.lettuce.core.api.StatefulRedisConnection; import io.lettuce.core.api.sync.RedisCommands; import io.lettuce.core.dynamic.RedisCommandFactory; -import io.lettuce.core.output.StatusOutput; public class RedisStorageService { diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/bus/IncomingJsonMessageBus.scala b/bbb-common-message/src/main/scala/org/bigbluebutton/common2/bus/IncomingJsonMessageBus.scala old mode 100755 new mode 100644 similarity index 94% rename from akka-bbb-apps/src/main/scala/org/bigbluebutton/core/bus/IncomingJsonMessageBus.scala rename to bbb-common-message/src/main/scala/org/bigbluebutton/common2/bus/IncomingJsonMessageBus.scala index f2e9aa281de9441af7bf0fe3fe1c7e63f91fa59d..96dbff59b4312665dcd909d73d3e3a3d1b102731 --- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/bus/IncomingJsonMessageBus.scala +++ b/bbb-common-message/src/main/scala/org/bigbluebutton/common2/bus/IncomingJsonMessageBus.scala @@ -1,4 +1,4 @@ -package org.bigbluebutton.core.bus +package org.bigbluebutton.common2.bus import akka.actor.ActorRef import akka.event.{ EventBus, LookupClassification } diff --git a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/JsonMsgFromAkkaAppsBus.scala b/bbb-common-message/src/main/scala/org/bigbluebutton/common2/bus/JsonMsgFromAkkaAppsBus.scala old mode 100755 new mode 100644 similarity index 88% rename from bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/JsonMsgFromAkkaAppsBus.scala rename to bbb-common-message/src/main/scala/org/bigbluebutton/common2/bus/JsonMsgFromAkkaAppsBus.scala index 5d26e2c23bb7a1c4f27a150d64a8a1fe4f4a0907..871f6f76f9948b4fc7b7fd0abbdf3cbb9bdd6c6b --- a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/JsonMsgFromAkkaAppsBus.scala +++ b/bbb-common-message/src/main/scala/org/bigbluebutton/common2/bus/JsonMsgFromAkkaAppsBus.scala @@ -1,7 +1,7 @@ -package org.bigbluebutton.api2.bus +package org.bigbluebutton.common2.bus import akka.actor.ActorRef -import akka.event.{EventBus, LookupClassification} +import akka.event.{ EventBus, LookupClassification } case class JsonMsgFromAkkaApps(name: String, data: String) case class JsonMsgFromAkkaAppsEvent(val topic: String, val payload: JsonMsgFromAkkaApps) @@ -23,7 +23,7 @@ class JsonMsgFromAkkaAppsBus extends EventBus with LookupClassification { // must define a full order over the subscribers, expressed as expected from // `java.lang.Comparable.compare` override protected def compareSubscribers(a: Subscriber, b: Subscriber): Int = - a.compareTo(b) + a.compareTo(b) // determines the initial size of the index data structure // used internally (i.e. the expected number of different classifiers) diff --git a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/MsgFromAkkaAppsEventBus.scala b/bbb-common-message/src/main/scala/org/bigbluebutton/common2/bus/MsgFromAkkaAppsEventBus.scala old mode 100755 new mode 100644 similarity index 91% rename from bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/MsgFromAkkaAppsEventBus.scala rename to bbb-common-message/src/main/scala/org/bigbluebutton/common2/bus/MsgFromAkkaAppsEventBus.scala index e9f25b91a5f9e2f8f224bed7e482334204ea806a..097df4a29c433f8e7b8e3dc1702696f1b8a2ad12 --- a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/MsgFromAkkaAppsEventBus.scala +++ b/bbb-common-message/src/main/scala/org/bigbluebutton/common2/bus/MsgFromAkkaAppsEventBus.scala @@ -2,9 +2,9 @@ package org.bigbluebutton.api2.bus import akka.actor.ActorRef import akka.event.{EventBus, LookupClassification} -import org.bigbluebutton.common2.msgs.{BbbCommonEnvCoreMsg} +import org.bigbluebutton.common2.msgs.BbbCommonMsg -case class MsgFromAkkaApps(val topic: String, val payload: BbbCommonEnvCoreMsg) +case class MsgFromAkkaApps(val topic: String, val payload: BbbCommonMsg) class MsgFromAkkaAppsEventBus extends EventBus with LookupClassification { type Event = MsgFromAkkaApps diff --git a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/OldMessageEventBus.scala b/bbb-common-message/src/main/scala/org/bigbluebutton/common2/bus/OldMessageEventBus.scala similarity index 86% rename from bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/OldMessageEventBus.scala rename to bbb-common-message/src/main/scala/org/bigbluebutton/common2/bus/OldMessageEventBus.scala index cccd288cdcbf317ad7ea7da62761dcbdfcb4e9f6..9b7c6bdd0b248a80efe49dc062501f0d472338dc 100755 --- a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/OldMessageEventBus.scala +++ b/bbb-common-message/src/main/scala/org/bigbluebutton/common2/bus/OldMessageEventBus.scala @@ -1,7 +1,8 @@ -package org.bigbluebutton.api2.bus +package org.bigbluebutton.common2.bus import akka.actor.ActorRef import akka.event.{EventBus, LookupClassification} +import akka.actor.actorRef2Scala case class OldReceivedJsonMessage(pattern: String, channel: String, msg: String) case class OldIncomingJsonMessage(val topic: String, val payload: OldReceivedJsonMessage) @@ -11,7 +12,7 @@ class OldMessageEventBus extends EventBus with LookupClassification { type Classifier = String type Subscriber = ActorRef - // is used for extracting the classifier from the incoming events + // is used for extracting te classifier from the incoming events override protected def classify(event: Event): Classifier = event.topic // will be invoked for each event for all subscribers which registered themselves diff --git a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/endpoint/redis/MessageSender.scala b/bbb-common-message/src/main/scala/org/bigbluebutton/common2/redis/MessageSender.scala similarity index 71% rename from bbb-common-web/src/main/scala/org/bigbluebutton/api2/endpoint/redis/MessageSender.scala rename to bbb-common-message/src/main/scala/org/bigbluebutton/common2/redis/MessageSender.scala index be38ef420165f015adbeb0a6675f4f213dacd304..2426a353e6d687ebfe073acc28337f48b961444a 100755 --- a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/endpoint/redis/MessageSender.scala +++ b/bbb-common-message/src/main/scala/org/bigbluebutton/common2/redis/MessageSender.scala @@ -1,4 +1,4 @@ -package org.bigbluebutton.api2.endpoint.redis +package org.bigbluebutton.common2.redis class MessageSender(publisher: RedisPublisher) { diff --git a/bbb-common-message/src/main/scala/org/bigbluebutton/common2/redis/RedisAppSubscriberActor.scala b/bbb-common-message/src/main/scala/org/bigbluebutton/common2/redis/RedisAppSubscriberActor.scala new file mode 100644 index 0000000000000000000000000000000000000000..5ee1ee8d81bed9cb10ef965bf46b83061be2d010 --- /dev/null +++ b/bbb-common-message/src/main/scala/org/bigbluebutton/common2/redis/RedisAppSubscriberActor.scala @@ -0,0 +1,18 @@ +package org.bigbluebutton.common2.redis + +import akka.actor.Actor +import akka.event.LoggingAdapter +import redis.api.pubsub.PMessage + +trait RedisAppSubscriberActor extends Actor { + + def log: LoggingAdapter + + def handleMessage(msg: String) { + throw new UnsupportedOperationException(); + } + + def onPMessage(pmessage: PMessage) { + throw new UnsupportedOperationException(); + } +} diff --git a/bbb-common-message/src/main/scala/org/bigbluebutton/common2/redis/RedisConfiguration.scala b/bbb-common-message/src/main/scala/org/bigbluebutton/common2/redis/RedisConfiguration.scala new file mode 100644 index 0000000000000000000000000000000000000000..ff0e27a0acc648f06e713733d4764bc121d5c3d8 --- /dev/null +++ b/bbb-common-message/src/main/scala/org/bigbluebutton/common2/redis/RedisConfiguration.scala @@ -0,0 +1,24 @@ +package org.bigbluebutton.common2.redis + +import scala.util.Try +import com.typesafe.config.ConfigFactory + +trait RedisConfiguration { + val config = ConfigFactory.load() + + // Redis server configuration + lazy val redisHost = Try(config.getString("redis.host")).getOrElse("127.0.0.1") + lazy val redisPort = Try(config.getInt("redis.port")).getOrElse(6379) + lazy val redisPassword = Try(config.getString("redis.password")).getOrElse("") + + // Redis channels + lazy val toAkkaAppsRedisChannel = Try(config.getString("redis.toAkkaAppsRedisChannel")).getOrElse("to-akka-apps-redis-channel") + lazy val fromAkkaAppsRedisChannel = Try(config.getString("redis.fromAkkaAppsRedisChannel")).getOrElse("from-akka-apps-redis-channel") + + lazy val toVoiceConfRedisChannel = Try(config.getString("redis.toVoiceConfRedisChannel")).getOrElse("to-voice-conf-redis-channel") + lazy val fromVoiceConfRedisChannel = Try(config.getString("redis.fromVoiceConfRedisChannel")).getOrElse("from-voice-conf-redis-channel") + + lazy val fromAkkaAppsWbRedisChannel = Try(config.getString("redis.fromAkkaAppsWbRedisChannel")).getOrElse("from-akka-apps-wb-redis-channel") + lazy val fromAkkaAppsChatRedisChannel = Try(config.getString("redis.fromAkkaAppsChatRedisChannel")).getOrElse("from-akka-apps-chat-redis-channel") + lazy val fromAkkaAppsPresRedisChannel = Try(config.getString("redis.fromAkkaAppsPresRedisChannel")).getOrElse("from-akka-apps-pres-redis-channel") +} diff --git a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/endpoint/redis/RedisPublisher.scala b/bbb-common-message/src/main/scala/org/bigbluebutton/common2/redis/RedisPublisher.scala similarity index 57% rename from bbb-common-web/src/main/scala/org/bigbluebutton/api2/endpoint/redis/RedisPublisher.scala rename to bbb-common-message/src/main/scala/org/bigbluebutton/common2/redis/RedisPublisher.scala index 23e47ddd06d00f8173032f08c5d585c354129f5f..d46bdcfa399d15d583d565504f91e9aebcba5006 100755 --- a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/endpoint/redis/RedisPublisher.scala +++ b/bbb-common-message/src/main/scala/org/bigbluebutton/common2/redis/RedisPublisher.scala @@ -1,12 +1,11 @@ -package org.bigbluebutton.api2.endpoint.redis +package org.bigbluebutton.common2.redis import akka.actor.ActorSystem import akka.event.Logging import akka.util.ByteString -import org.bigbluebutton.api2.SystemConfiguration import redis.RedisClient -class RedisPublisher(val system: ActorSystem) extends SystemConfiguration { +class RedisPublisher(val system: ActorSystem, val clientName: String) extends RedisConfiguration { val redis = RedisClient(redisHost, redisPort)(system) @@ -14,10 +13,9 @@ class RedisPublisher(val system: ActorSystem) extends SystemConfiguration { // Set the name of this client to be able to distinguish when doing // CLIENT LIST on redis-cli - redis.clientSetname("BbbWebPub") + redis.clientSetname(clientName) def publish(channel: String, data: String) { - //log.debug("PUBLISH TO \n[" + channel + "]: \n " + data + "\n") redis.publish(channel, ByteString(data)) } diff --git a/bbb-common-message/src/main/scala/org/bigbluebutton/common2/redis/RedisSubscriber.scala b/bbb-common-message/src/main/scala/org/bigbluebutton/common2/redis/RedisSubscriber.scala new file mode 100644 index 0000000000000000000000000000000000000000..630f079099355cae9770d8072a8a1cbfb2b9b594 --- /dev/null +++ b/bbb-common-message/src/main/scala/org/bigbluebutton/common2/redis/RedisSubscriber.scala @@ -0,0 +1,6 @@ +package org.bigbluebutton.common2.redis + +abstract class RedisSubscriber extends RedisConfiguration { + val channels: Seq[String] + val patterns: Seq[String] +} diff --git a/bbb-common-web/build.sbt b/bbb-common-web/build.sbt index 4acb056c81380128a5dbd947067cef7c67e33944..0519059e3804bb645328d651ae678ce0ef83224d 100755 --- a/bbb-common-web/build.sbt +++ b/bbb-common-web/build.sbt @@ -2,8 +2,6 @@ import org.bigbluebutton.build._ version := "0.0.3-SNAPSHOT" -scalaVersion := "2.12.7" - val compileSettings = Seq( organization := "org.bigbluebutton", diff --git a/bbb-common-web/project/Dependencies.scala b/bbb-common-web/project/Dependencies.scala index a42aa9a5cd7df235c54a2988ab9f48befa33fd35..4de3bd7531404b2c4fe81e9b722cafa723102548 100644 --- a/bbb-common-web/project/Dependencies.scala +++ b/bbb-common-web/project/Dependencies.scala @@ -11,7 +11,6 @@ object Dependencies { val junit = "4.12" val junitInterface = "0.11" val scalactic = "3.0.3" - val pegdown = "1.6.0" // Libraries val akkaVersion = "2.5.17" @@ -83,15 +82,13 @@ object Dependencies { val junit = "junit" % "junit" % Versions.junit % "test" val junitInteface = "com.novocode" % "junit-interface" % Versions.junitInterface % "test" val scalactic = "org.scalactic" % "scalactic_2.12" % Versions.scalactic % "test" - val pegdown = "org.pegdown" % "pegdown" % Versions.pegdown % "test" } val testing = Seq( Test.scalaTest, Test.junit, Test.junitInteface, - Test.scalactic, - Test.pegdown) + Test.scalactic) val runtime = Seq( Compile.scalaLibrary, diff --git a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/BbbWebApiGWApp.scala b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/BbbWebApiGWApp.scala index 053c62ad567117e2120f8eb817a85ae55db7b081..4ac26006a579e078470cd33dd6d8491ea7f78a31 100755 --- a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/BbbWebApiGWApp.scala +++ b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/BbbWebApiGWApp.scala @@ -5,12 +5,14 @@ import akka.actor.ActorSystem import akka.event.Logging import org.bigbluebutton.api.messaging.converters.messages._ import org.bigbluebutton.api2.bus._ -import org.bigbluebutton.api2.endpoint.redis.{ AppsRedisSubscriberActor, MessageSender, RedisPublisher } +import org.bigbluebutton.api2.endpoint.redis.{ WebRedisSubscriberActor } +import org.bigbluebutton.common2.redis.MessageSender import org.bigbluebutton.api2.meeting.{ OldMeetingMsgHdlrActor, RegisterUser } import org.bigbluebutton.common2.domain._ import org.bigbluebutton.presentation.messages._ - -import scala.concurrent.duration._ +import scala.concurrent.duration._ +import org.bigbluebutton.common2.redis._ +import org.bigbluebutton.common2.bus._ class BbbWebApiGWApp( val oldMessageReceivedGW: OldMessageReceivedGW, @@ -27,7 +29,7 @@ class BbbWebApiGWApp( log.debug("*********** meetingManagerChannel = " + meetingManagerChannel) private val jsonMsgToAkkaAppsBus = new JsonMsgToAkkaAppsBus - private val redisPublisher = new RedisPublisher(system) + private val redisPublisher = new RedisPublisher(system, "BbbWebPub") private val msgSender: MessageSender = new MessageSender(redisPublisher) private val messageSenderActorRef = system.actorOf(MessageSenderActor.props(msgSender), "messageSenderActor") @@ -55,7 +57,7 @@ class BbbWebApiGWApp( msgToAkkaAppsEventBus.subscribe(msgToAkkaAppsToJsonActor, toAkkaAppsChannel) private val appsRedisSubscriberActor = system.actorOf( - AppsRedisSubscriberActor.props(receivedJsonMsgBus, oldMessageEventBus), "appsRedisSubscriberActor") + WebRedisSubscriberActor.props(receivedJsonMsgBus, oldMessageEventBus), "appsRedisSubscriberActor") private val receivedJsonMsgHdlrActor = system.actorOf( ReceivedJsonMsgHdlrActor.props(msgFromAkkaAppsEventBus), "receivedJsonMsgHdlrActor") diff --git a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/SystemConfiguration.scala b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/SystemConfiguration.scala index 0eb67da98170ac2b5304922e745ffcd835351719..a092701a3a1e061d3d87f8c7ee3fcee1feb98e38 100755 --- a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/SystemConfiguration.scala +++ b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/SystemConfiguration.scala @@ -3,16 +3,11 @@ package org.bigbluebutton.api2 import com.typesafe.config.ConfigFactory import scala.util.Try +import org.bigbluebutton.common2.redis.RedisConfiguration -trait SystemConfiguration { - val config = ConfigFactory.load("bbb-web") +trait SystemConfiguration extends RedisConfiguration { + override val config = ConfigFactory.load("bbb-web") - lazy val redisHost = Try(config.getString("redis.host")).getOrElse("127.0.0.1") - lazy val redisPort = Try(config.getInt("redis.port")).getOrElse(6379) - lazy val redisPassword = Try(config.getString("redis.password")).getOrElse("") - - lazy val toAkkaAppsRedisChannel = Try(config.getString("redis.toAkkaAppsRedisChannel")).getOrElse("to-akka-apps-redis-channel") - lazy val fromAkkaAppsRedisChannel = Try(config.getString("redis.fromAkkaAppsRedisChannel")).getOrElse("from-akka-apps-redis-channel") lazy val meetingManagerChannel = Try(config.getString("eventBus.meetingManagerChannel")).getOrElse("FOOOOOOOOO") lazy val fromAkkaAppsChannel = Try(config.getString("eventBus.fromAkkaAppsChannel")).getOrElse("from-akka-apps-channel") lazy val toAkkaAppsChannel = Try(config.getString("eventBus.toAkkaAppsChannel")).getOrElse("to-akka-apps-channel") diff --git a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/MessageSenderActor.scala b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/MessageSenderActor.scala index f4dc981cc96c2d79547f5d62693aa8da83c33558..e21612025c28d43587c0f715fe81455e67ffd03b 100755 --- a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/MessageSenderActor.scala +++ b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/MessageSenderActor.scala @@ -4,7 +4,7 @@ import java.io.{PrintWriter, StringWriter} import akka.actor.SupervisorStrategy.Resume import akka.actor.{Actor, ActorLogging, OneForOneStrategy, Props} -import org.bigbluebutton.api2.endpoint.redis.MessageSender +import org.bigbluebutton.common2.redis.MessageSender import scala.concurrent.duration._ object MessageSenderActor { diff --git a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/OldMessageJsonReceiverActor.scala b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/OldMessageJsonReceiverActor.scala index f996ad30ef5c87f4b417d238639ffc3facd34f76..ab5af661bf3f1fec0935d364ce2e9c027538813d 100755 --- a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/OldMessageJsonReceiverActor.scala +++ b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/OldMessageJsonReceiverActor.scala @@ -1,6 +1,7 @@ package org.bigbluebutton.api2.bus -import akka.actor.{Actor, ActorLogging, Props} +import akka.actor.{Actor, ActorLogging, Props} +import org.bigbluebutton.common2.bus.OldReceivedJsonMessage object OldMessageJsonReceiverActor{ def props(gw: OldMessageReceivedGW): Props = Props(classOf[OldMessageJsonReceiverActor], gw) diff --git a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/ReceivedJsonMsgHdlrActor.scala b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/ReceivedJsonMsgHdlrActor.scala index e63f2d454eecd42ea026bab87933fa10d02dde58..174e4951dfd5fad4a2a6c1dbd980207d78999111 100755 --- a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/ReceivedJsonMsgHdlrActor.scala +++ b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/bus/ReceivedJsonMsgHdlrActor.scala @@ -1,6 +1,7 @@ package org.bigbluebutton.api2.bus import org.bigbluebutton.api2.SystemConfiguration +import org.bigbluebutton.common2.bus._ import org.bigbluebutton.common2.msgs._ import com.fasterxml.jackson.databind.JsonNode import akka.actor.Actor diff --git a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/endpoint/redis/RedisDataStorageActor.scala b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/endpoint/redis/RedisDataStorageActor.scala index 8fb2731d4204bd661b5c1762549593439adf1066..95210390fc72cac8fad929f89c1d4c60a5563527 100755 --- a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/endpoint/redis/RedisDataStorageActor.scala +++ b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/endpoint/redis/RedisDataStorageActor.scala @@ -1,16 +1,14 @@ package org.bigbluebutton.api2.endpoint.redis -import akka.actor.{Actor, ActorLogging, ActorSystem, Props} +import akka.actor.{ Actor, ActorLogging, ActorSystem, Props } import org.bigbluebutton.api2.SystemConfiguration import redis.RedisClient - case class RecordMeetingInfoMsg(meetingId: String, info: collection.immutable.Map[String, String]) case class RecordBreakoutInfoMsg(meetingId: String, info: collection.immutable.Map[String, String]) case class AddBreakoutRoomMsg(parentId: String, breakoutId: String) case class RemoveMeetingMsg(meetingId: String) - object RedisDataStorageActor { def props(system: ActorSystem): Props = Props(classOf[RedisDataStorageActor], system) } @@ -24,13 +22,12 @@ class RedisDataStorageActor(val system: ActorSystem) extends Actor with ActorLog redis.clientSetname("BbbWebStore") def receive = { - case msg: RecordMeetingInfoMsg => handleRecordMeetingInfoMsg(msg) + case msg: RecordMeetingInfoMsg => handleRecordMeetingInfoMsg(msg) case msg: RecordBreakoutInfoMsg => handleRecordBreakoutInfoMsg(msg) - case msg: AddBreakoutRoomMsg => handleAddBreakoutRoomMsg(msg) - case msg: RemoveMeetingMsg => handleRemoveMeetingMsg(msg) + case msg: AddBreakoutRoomMsg => handleAddBreakoutRoomMsg(msg) + case msg: RemoveMeetingMsg => handleRemoveMeetingMsg(msg) } - def handleRecordMeetingInfoMsg(msg: RecordMeetingInfoMsg): Unit = { redis.hmset("meeting:info:" + msg.meetingId, msg.info) } diff --git a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/endpoint/redis/AppsRedisSubscriberActor.scala b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/endpoint/redis/WebRedisSubscriberActor.scala similarity index 60% rename from bbb-common-web/src/main/scala/org/bigbluebutton/api2/endpoint/redis/AppsRedisSubscriberActor.scala rename to bbb-common-web/src/main/scala/org/bigbluebutton/api2/endpoint/redis/WebRedisSubscriberActor.scala index 3b566c6f2f90eedc8969cb7b3346aef349c69a02..fff005096388457fe5528719d3103607445b14e9 100755 --- a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/endpoint/redis/AppsRedisSubscriberActor.scala +++ b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/endpoint/redis/WebRedisSubscriberActor.scala @@ -1,34 +1,39 @@ package org.bigbluebutton.api2.endpoint.redis -import java.io.{PrintWriter, StringWriter} +import java.io.{ PrintWriter, StringWriter } import java.net.InetSocketAddress import akka.actor.SupervisorStrategy.Resume -import akka.actor.{OneForOneStrategy, Props} +import akka.actor.{ OneForOneStrategy, Props } import redis.api.servers.ClientSetname import redis.actors.RedisSubscriberActor -import redis.api.pubsub.{Message, PMessage} +import redis.api.pubsub.{ Message, PMessage } import scala.concurrent.duration._ -import org.bigbluebutton.api2.SystemConfiguration -import org.bigbluebutton.api2.bus._ +import org.bigbluebutton.api2._ +import org.bigbluebutton.common2.redis._ +import org.bigbluebutton.common2.redis.RedisConfiguration +import org.bigbluebutton.common2.bus._ -object AppsRedisSubscriberActor extends SystemConfiguration { +object WebRedisSubscriberActor extends RedisSubscriber with RedisConfiguration { val channels = Seq(fromAkkaAppsRedisChannel) val patterns = Seq("bigbluebutton:from-bbb-apps:*") def props(jsonMsgBus: JsonMsgFromAkkaAppsBus, oldMessageEventBus: OldMessageEventBus): Props = - Props(classOf[AppsRedisSubscriberActor], jsonMsgBus, oldMessageEventBus, + Props(classOf[WebRedisSubscriberActor], jsonMsgBus, oldMessageEventBus, redisHost, redisPort, channels, patterns).withDispatcher("akka.rediscala-subscriber-worker-dispatcher") } -class AppsRedisSubscriberActor(jsonMsgBus: JsonMsgFromAkkaAppsBus, oldMessageEventBus: OldMessageEventBus, redisHost: String, - redisPort: Int, - channels: Seq[String] = Nil, patterns: Seq[String] = Nil) - extends RedisSubscriberActor(new InetSocketAddress(redisHost, redisPort), - channels, patterns, onConnectStatus = connected => { println(s"connected: $connected") }) with SystemConfiguration { +class WebRedisSubscriberActor(jsonMsgBus: JsonMsgFromAkkaAppsBus, oldMessageEventBus: OldMessageEventBus, redisHost: String, + redisPort: Int, + channels: Seq[String] = Nil, patterns: Seq[String] = Nil) + extends RedisSubscriberActor( + new InetSocketAddress(redisHost, redisPort), + channels, patterns, onConnectStatus = connected => { println(s"connected: $connected") }) + with SystemConfiguration + with RedisAppSubscriberActor { override val supervisorStrategy = OneForOneStrategy(maxNrOfRetries = 10, withinTimeRange = 1 minute) { case e: Exception => { @@ -40,7 +45,6 @@ class AppsRedisSubscriberActor(jsonMsgBus: JsonMsgFromAkkaAppsBus, oldMessageEve } } - // Set the name of this client to be able to distinguish when doing // CLIENT LIST on redis-cli write(ClientSetname("Red5AppsSub").encodedRequest) @@ -53,9 +57,10 @@ class AppsRedisSubscriberActor(jsonMsgBus: JsonMsgFromAkkaAppsBus, oldMessageEve } } - def onPMessage(pmessage: PMessage) { + override def onPMessage(pmessage: PMessage) { log.debug(s"RECEIVED:\n ${pmessage.data.utf8String} \n") - val receivedJsonMessage = new OldReceivedJsonMessage(pmessage.patternMatched, + val receivedJsonMessage = new OldReceivedJsonMessage( + pmessage.patternMatched, pmessage.channel, pmessage.data.utf8String) oldMessageEventBus.publish(OldIncomingJsonMessage(fromAkkaAppsOldJsonChannel, receivedJsonMessage)) diff --git a/bbb-common-web/src/test/scala/org/bigbluebutton/api/util/ParamsUtilTest.scala b/bbb-common-web/src/test/scala/org/bigbluebutton/api/util/ParamsUtilTest.scala index 6cf5716b067425c1a5a4e5372b58049bc24d2632..460701c67a52074344736bacfea2d03adfbb3066 100755 --- a/bbb-common-web/src/test/scala/org/bigbluebutton/api/util/ParamsUtilTest.scala +++ b/bbb-common-web/src/test/scala/org/bigbluebutton/api/util/ParamsUtilTest.scala @@ -1,23 +1,21 @@ -package org.bigbluebutton.api.util - -import org.scalatest._ - -class ParamsUtilTest extends UnitSpec { - - it should "strip out control chars from text" in { - val text = "a\u0000b\u0007c\u008fd" - val cleaned = ParamsUtil.stripControlChars(text) - assert("abcd" == cleaned) - } - - it should "complain about invalid chars in meetingId" in { - val meetingId = "Demo , Meeting" - assert(ParamsUtil.isValidMeetingId(meetingId) == false) - } - - it should "accept valid chars in meetingId" in { - val meetingId = "Demo Meeting - 123" - assert(ParamsUtil.isValidMeetingId(meetingId) == true) - } - -} +package org.bigbluebutton.api.util + +class ParamsUtilTest extends UnitSpec { + + it should "strip out control chars from text" in { + val text = "a\u0000b\u0007c\u008fd" + val cleaned = ParamsUtil.stripControlChars(text) + assert("abcd" == cleaned) + } + + it should "complain about invalid chars in meetingId" in { + val meetingId = "Demo , Meeting" + assert(ParamsUtil.isValidMeetingId(meetingId) == false) + } + + it should "accept valid chars in meetingId" in { + val meetingId = "Demo Meeting - 123" + assert(ParamsUtil.isValidMeetingId(meetingId) == true) + } + +} diff --git a/bbb-common-web/src/test/scala/org/bigbluebutton/api/util/UnitSpec.scala b/bbb-common-web/src/test/scala/org/bigbluebutton/api/util/UnitSpec.scala index fef2d5a231b50c2ea1597f488d4533cd972b040c..6c5694d0c06fd995a03851556746f84cefeeabc4 100755 --- a/bbb-common-web/src/test/scala/org/bigbluebutton/api/util/UnitSpec.scala +++ b/bbb-common-web/src/test/scala/org/bigbluebutton/api/util/UnitSpec.scala @@ -1,8 +1,7 @@ -package org.bigbluebutton.api.util - -import org.scalatest.FlatSpec -import org.scalatest.BeforeAndAfterAll -import org.scalatest.WordSpec -import org.scalatest.Matchers - -abstract class UnitSpec extends FlatSpec with Matchers with BeforeAndAfterAll +package org.bigbluebutton.api.util + +import org.scalatest.FlatSpec +import org.scalatest.BeforeAndAfterAll +import org.scalatest.Matchers + +abstract class UnitSpec extends FlatSpec with Matchers with BeforeAndAfterAll diff --git a/bbb-fsesl-client/build.sbt b/bbb-fsesl-client/build.sbt index b3d4b559bbdbc3aa67f07e6152ba7ca96d604c07..426c6351836e40a50c57a68271fba90708fd1aac 100755 --- a/bbb-fsesl-client/build.sbt +++ b/bbb-fsesl-client/build.sbt @@ -32,7 +32,7 @@ testOptions in Test += Tests.Argument(TestFrameworks.Specs2, "html", "console", testOptions in Test += Tests.Argument(TestFrameworks.ScalaTest, "-h", "target/scalatest-reports") Seq(Revolver.settings: _*) -lazy val commonMessage = (project in file(".")).settings(name := "bbb-fsesl-client", libraryDependencies ++= Dependencies.runtime).settings(compileSettings) +lazy val bbbFSESLClient = (project in file(".")).settings(name := "bbb-fsesl-client", libraryDependencies ++= Dependencies.runtime).settings(compileSettings) //----------- // Packaging @@ -52,7 +52,7 @@ crossPaths := false // This forbids including Scala related libraries into the dependency autoScalaLibrary := false -publishTo := Some(Resolver.file("file", new File(Path.userHome.absolutePath+"/.m2/repository"))) +publishTo := Some(Resolver.file("file", new File(Path.userHome.absolutePath + "/.m2/repository"))) //publishTo := { // val nexus = "https://oss.sonatype.org/" @@ -70,10 +70,10 @@ publishArtifact in Test := false // http://www.scala-sbt.org/release/docs/Artifacts.html // disable publishing the main API jar -publishArtifact in (Compile, packageDoc) := false +publishArtifact in(Compile, packageDoc) := false // disable publishing the main sources jar -publishArtifact in (Compile, packageSrc) := false +publishArtifact in(Compile, packageSrc) := false pomIncludeRepository := { _ => false } @@ -82,14 +82,14 @@ pomExtra := ( <url>git@github.com:bigbluebutton/bigbluebutton.git</url> <connection>scm:git:git@github.com:bigbluebutton/bigbluebutton.git</connection> </scm> - <developers> - <developer> - <id>ritzalam</id> - <name>Richard Alam</name> - <url>http://www.bigbluebutton.org</url> - </developer> - </developers>) - + <developers> + <developer> + <id>ritzalam</id> + <name>Richard Alam</name> + <url>http://www.bigbluebutton.org</url> + </developer> + </developers>) + licenses := Seq("Apache License, Version 2.0" -> url("http://opensource.org/licenses/Apache-2.0")) homepage := Some(url("http://www.bigbluebutton.org")) diff --git a/bbb-screenshare/app/src/main/scala/org/bigbluebutton/app/screenshare/SystemConfiguration.scala b/bbb-screenshare/app/src/main/scala/org/bigbluebutton/app/screenshare/SystemConfiguration.scala index c25b684048db28d44b04cc90e5eef302c56ccb50..0267a37230b7a7f40ed5841aace9eb8e4163b977 100755 --- a/bbb-screenshare/app/src/main/scala/org/bigbluebutton/app/screenshare/SystemConfiguration.scala +++ b/bbb-screenshare/app/src/main/scala/org/bigbluebutton/app/screenshare/SystemConfiguration.scala @@ -1,16 +1,10 @@ package org.bigbluebutton.app.screenshare import scala.util.Try -import com.typesafe.config.ConfigFactory +import com.typesafe.config.ConfigFactory +import org.bigbluebutton.common2.redis.RedisConfiguration -trait SystemConfiguration { - - //val config = ConfigFactory.load("screenshare-app") - val config = ConfigFactory.load() - - lazy val redisHost = Try(config.getString("redis.host")).getOrElse("127.0.0.1") - lazy val redisPort = Try(config.getInt("redis.port")).getOrElse(6379) - lazy val redisPassword = Try(config.getString("redis.password")).getOrElse("") +trait SystemConfiguration extends RedisConfiguration { lazy val meetingManagerChannel = Try(config.getString("eventBus.meetingManagerChannel")).getOrElse("NOT FROM APP CONF") diff --git a/bbb-screenshare/app/src/main/scala/org/bigbluebutton/app/screenshare/redis/IncomingJsonMessageBus.scala b/bbb-screenshare/app/src/main/scala/org/bigbluebutton/app/screenshare/redis/IncomingJsonMessageBus.scala deleted file mode 100755 index 532b120a86c332aaec568ed93dd0941bc21f5fcf..0000000000000000000000000000000000000000 --- a/bbb-screenshare/app/src/main/scala/org/bigbluebutton/app/screenshare/redis/IncomingJsonMessageBus.scala +++ /dev/null @@ -1,31 +0,0 @@ -package org.bigbluebutton.app.screenshare.redis - -import akka.actor.ActorRef -import akka.event.{ EventBus, LookupClassification } - -case class ReceivedJsonMessage(channel: String, data: String) -case class IncomingJsonMessage(val topic: String, val payload: ReceivedJsonMessage) - -class IncomingJsonMessageBus extends EventBus with LookupClassification { - type Event = IncomingJsonMessage - type Classifier = String - type Subscriber = ActorRef - - // is used for extracting the classifier from the incoming events - override protected def classify(event: Event): Classifier = event.topic - - // will be invoked for each event for all subscribers which registered themselves - // for the event’s classifier - override protected def publish(event: Event, subscriber: Subscriber): Unit = { - subscriber ! event.payload - } - - // must define a full order over the subscribers, expressed as expected from - // `java.lang.Comparable.compare` - override protected def compareSubscribers(a: Subscriber, b: Subscriber): Int = - a.compareTo(b) - - // determines the initial size of the index data structure - // used internally (i.e. the expected number of different classifiers) - override protected def mapSize: Int = 128 -} diff --git a/bbb-screenshare/app/src/main/scala/org/bigbluebutton/app/screenshare/redis/AppsRedisSubscriberActor.scala b/bbb-screenshare/app/src/main/scala/org/bigbluebutton/app/screenshare/redis/ScreenshareRedisSubscriberActor.scala similarity index 100% rename from bbb-screenshare/app/src/main/scala/org/bigbluebutton/app/screenshare/redis/AppsRedisSubscriberActor.scala rename to bbb-screenshare/app/src/main/scala/org/bigbluebutton/app/screenshare/redis/ScreenshareRedisSubscriberActor.scala diff --git a/bigbluebutton-apps/build.gradle b/bigbluebutton-apps/build.gradle index 85dc33cbaf3f8d581abaa6ec6da1cfb687110869..fddbba69b9287ff9f04c74ca8c29df144e192b95 100755 --- a/bigbluebutton-apps/build.gradle +++ b/bigbluebutton-apps/build.gradle @@ -57,7 +57,6 @@ dependencies { compile 'org.easymock:easymock:3.6@jar' //redis - compile "redis.clients:jedis:2.9.0" compile 'org.apache.commons:commons-pool2:2.6.0' compile 'com.google.code.gson:gson:2.8.5' diff --git a/bigbluebutton-apps/src/main/webapp/WEB-INF/bbb-redis-pool.xml b/bigbluebutton-apps/src/main/webapp/WEB-INF/bbb-redis-pool.xml index b72ba93cd2670e60586dec23400a791ac34031de..b0454f30d2899f91ff7a67b189e5e31bc63ccf51 100755 --- a/bigbluebutton-apps/src/main/webapp/WEB-INF/bbb-redis-pool.xml +++ b/bigbluebutton-apps/src/main/webapp/WEB-INF/bbb-redis-pool.xml @@ -26,10 +26,4 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd "> - <!-- - <bean id="redisPool" class="redis.clients.jedis.JedisPool"> - <constructor-arg index="0" value="${redis.host}"/> - <constructor-arg index="1" value="${redis.port}"/> - </bean> - --> </beans>