summaryrefslogtreecommitdiff
path: root/src/main/scala/com/tylerstonge/honeypot/reporter/LogReporter.scala
blob: f21fe99da6e78614791846a0a7a07f531e03e7b2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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()
  }
}