summaryrefslogtreecommitdiff
path: root/src/main/scala/com/tylerstonge/honeypot/ftp/FtpHandler.scala
diff options
context:
space:
mode:
authorTyler St. Onge <tylertstonge@gmail.com>2020-07-29 22:36:47 -0400
committerTyler St. Onge <tylertstonge@gmail.com>2020-07-29 22:36:47 -0400
commit14fa23601c560464a19a55e1b4e530b742df301a (patch)
tree08f6322343b7b614f3683a683a538595b0234e07 /src/main/scala/com/tylerstonge/honeypot/ftp/FtpHandler.scala
parent747b6af76b23650756811d896bf76b4331419784 (diff)
beginning research into accepting files
Diffstat (limited to 'src/main/scala/com/tylerstonge/honeypot/ftp/FtpHandler.scala')
-rw-r--r--src/main/scala/com/tylerstonge/honeypot/ftp/FtpHandler.scala20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/main/scala/com/tylerstonge/honeypot/ftp/FtpHandler.scala b/src/main/scala/com/tylerstonge/honeypot/ftp/FtpHandler.scala
index 48db3f5..8bdb190 100644
--- a/src/main/scala/com/tylerstonge/honeypot/ftp/FtpHandler.scala
+++ b/src/main/scala/com/tylerstonge/honeypot/ftp/FtpHandler.scala
@@ -1,5 +1,7 @@
package com.tylerstonge.honeypot.ftp
+import java.net.InetSocketAddress
+
import akka.actor.Actor
import akka.event.{Logging, LoggingAdapter}
import akka.io.Tcp.{PeerClosed, Received, Write}
@@ -25,11 +27,29 @@ class FtpHandler extends Actor {
"230 Login successful.\n"
case "pwd" => "257 \"/\" is the current directory\n"
case "quit" => "221 Goodbye.\n"
+ case "pasv" =>
+ context.actorOf(FtpFileReceiver.props(1287))
+ "227 entering passive mode (127,0,0,1,5,7)\n"
+ case "port" =>
+ context.actorOf(FtpFileRetriever.props(new InetSocketAddress(getHostname(msg(1)), getPort(msg(1)))))
+ "200 OK\n"
+ case "stor" =>
+ "200 OK \n"
case _ =>
log.info("unsupported command received: {}", msg.mkString(" "))
"451 Requested action aborted. Local error in processing.\n"
}
+ def getHostname(msg: String): String = {
+ val split = msg.split(",")
+ split.slice(0, 4).mkString(".")
+ }
+
+ def getPort(msg: String): Int = {
+ val split = msg.split(",")
+ split(4).toInt * 256 + split(5).toInt
+ }
+
def sanitize(data: ByteString): Array[String] = {
data.utf8String.trim.toLowerCase().split(" ")
}