summaryrefslogtreecommitdiff
path: root/src/main/scala/com/tylerstonge/honeypot/Supervisor.scala
diff options
context:
space:
mode:
authorTyler St. Onge <tylertstonge@gmail.com>2020-07-25 22:38:14 -0400
committerTyler St. Onge <tylertstonge@gmail.com>2020-07-25 22:38:14 -0400
commit747b6af76b23650756811d896bf76b4331419784 (patch)
tree2e942c8296567cbe4d57f205f72029a62829bdda /src/main/scala/com/tylerstonge/honeypot/Supervisor.scala
parent945332ca057383f258c78fd15cbc22f8b8d58a83 (diff)
refine ftp component and add configuration capabilities
Diffstat (limited to 'src/main/scala/com/tylerstonge/honeypot/Supervisor.scala')
-rw-r--r--src/main/scala/com/tylerstonge/honeypot/Supervisor.scala32
1 files changed, 28 insertions, 4 deletions
diff --git a/src/main/scala/com/tylerstonge/honeypot/Supervisor.scala b/src/main/scala/com/tylerstonge/honeypot/Supervisor.scala
index a04a6e8..ee41ea2 100644
--- a/src/main/scala/com/tylerstonge/honeypot/Supervisor.scala
+++ b/src/main/scala/com/tylerstonge/honeypot/Supervisor.scala
@@ -1,14 +1,38 @@
package com.tylerstonge.honeypot
-import akka.actor.Actor
+import java.nio.file.Paths
+
+import akka.actor.{Actor, Props}
+import akka.event.{Logging, LoggingAdapter}
+import com.tylerstonge.honeypot.ftp.FtpListener
+import com.tylerstonge.honeypot.messages.MStartComponent
+import org.typelevel.jawn.ast.{JArray, JParser}
class Supervisor extends Actor {
- override def receive: Receive = {
- case _ => println("kk dood")
+ val log: LoggingAdapter = Logging(context.system, this)
+
+ override def preStart: Unit = {
+ val cfg = JParser.parseFromFile(Paths.get("config.json").toFile).get
+ cfg.get("components").asInstanceOf[JArray].vs.foreach(c => {
+ self ! MStartComponent(c.get("name").asString, c.get("type").asString, c.get("port").asInt)
+ })
}
override def postStop {
- println("Supervisor::postStop")
+ log.debug("supervisor is shutting down")
+ }
+
+ override def receive: Receive = {
+ case msg: MStartComponent => startComponent(msg)
+ case _ => log.debug("supervisor received unhandled message")
+ }
+
+ private def startComponent(msg: MStartComponent) {
+ log.info("starting component :: {}", msg.name)
+ msg.ctype match {
+ case "ftp" => context.actorOf(Props(new FtpListener(msg.port)), name = msg.name)
+ case _ => log.error("unknown component type: ", msg.ctype, msg.name);
+ }
}
} \ No newline at end of file