package com.tylerstonge.honeypot.reporter import java.io.FileWriter import akka.actor.Actor import akka.event.{Logging, LoggingAdapter} import com.tylerstonge.honeypot.messages.{MFoundFile, MFoundPassword, MFoundUsername} class LogReporter extends Actor { val log: LoggingAdapter = Logging(context.system, this) val usernameLog = new FileWriter("logs/user.log", true) val passwordLog = new FileWriter("logs/pass.log", true) val fileLog = new FileWriter("logs/file.log", true) context.system.eventStream.subscribe(self, classOf[MFoundUsername]) context.system.eventStream.subscribe(self, classOf[MFoundPassword]) context.system.eventStream.subscribe(self, classOf[MFoundFile]) override def postStop(): Unit = { super.postStop() usernameLog.close() passwordLog.close() fileLog.close() } override def receive: Receive = { case msg: MFoundUsername => log.debug(">> REPORTER >> :: {}", msg.username) usernameLog.write(msg.username + '\n') usernameLog.flush() case msg: MFoundPassword => log.debug(">> REPORTER >> :: {}", msg.password) passwordLog.write(msg.password + '\n') passwordLog.flush() case msg: MFoundFile => log.debug(">> REPORTER >> :: {}", msg.filename) fileLog.write(msg.filename + '\n') fileLog.flush() } }