summaryrefslogtreecommitdiff
path: root/src/main/scala/com/tylerstonge/honeypot/reporter/DiscordReporter.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/com/tylerstonge/honeypot/reporter/DiscordReporter.scala')
-rw-r--r--src/main/scala/com/tylerstonge/honeypot/reporter/DiscordReporter.scala43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/main/scala/com/tylerstonge/honeypot/reporter/DiscordReporter.scala b/src/main/scala/com/tylerstonge/honeypot/reporter/DiscordReporter.scala
new file mode 100644
index 0000000..99a4eb7
--- /dev/null
+++ b/src/main/scala/com/tylerstonge/honeypot/reporter/DiscordReporter.scala
@@ -0,0 +1,43 @@
+package com.tylerstonge.honeypot.reporter
+
+import akka.actor.{Actor, Props}
+import akka.event.{Logging, LoggingAdapter}
+import scalaj.http.Http
+import com.tylerstonge.honeypot.messages.{MFoundFile, MFoundPassword, MFoundUsername, MNewConnection}
+
+object DiscordReporter {
+ def props(webhook: String): Props = Props(new DiscordReporter(webhook))
+}
+
+class DiscordReporter(webhook: String) extends Actor {
+
+ val log: LoggingAdapter = Logging(context.system, this)
+
+ context.system.eventStream.subscribe(self, classOf[MNewConnection])
+ 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()
+ }
+
+ override def receive: Receive = {
+ case msg: MNewConnection =>
+ log.debug(">> DISCORD REPORTER (MNewConnection) >> :: {}", msg.ip)
+ Http(webhook).postData(formatMessage("attacker detected @ " + msg.ip)).header("content-type", "application/json").asString
+ case msg: MFoundUsername =>
+ log.debug(">> DISCORD REPORTER >> (MFoundUsername) :: {}", msg.username)
+ Http(webhook).postData(formatMessage("attacker identified as " + msg.username)).header("content-type", "application/json").asString
+ case msg: MFoundPassword =>
+ log.debug(">> DISCORD REPORTER (MFoundPassword) >> :: {}", msg.password)
+ Http(webhook).postData(formatMessage("attacker password is " + msg.password)).header("content-type", "application/json").asString
+ case msg: MFoundFile =>
+ log.debug(">> DISCORD REPORTER (MFoundFile) >> :: {}", msg.filename)
+ Http(webhook).postData(formatMessage("attacker deposited a file called " + msg.filename)).header("content-type", "application/json").asString
+ }
+
+ def formatMessage(msg: String): String = {
+ """{ "username": "phreak", "content": "%s" }""".format(msg)
+ }
+}