diff options
author | Tyler St. Onge <tylertstonge@gmail.com> | 2020-07-25 22:38:14 -0400 |
---|---|---|
committer | Tyler St. Onge <tylertstonge@gmail.com> | 2020-07-25 22:38:14 -0400 |
commit | 747b6af76b23650756811d896bf76b4331419784 (patch) | |
tree | 2e942c8296567cbe4d57f205f72029a62829bdda /src/main/scala/com/tylerstonge/honeypot/Supervisor.scala | |
parent | 945332ca057383f258c78fd15cbc22f8b8d58a83 (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.scala | 32 |
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 |