From a600075abf8515977c7728b35e8677d7d5f1756c Mon Sep 17 00:00:00 2001 From: "Tyler St. Onge" Date: Sat, 22 Aug 2020 01:53:25 -0400 Subject: ability to accept files over passive connection --- .../honeypot/ftp/FtpFileRetriever.scala | 50 ---------------------- 1 file changed, 50 deletions(-) delete mode 100644 src/main/scala/com/tylerstonge/honeypot/ftp/FtpFileRetriever.scala (limited to 'src/main/scala/com/tylerstonge/honeypot/ftp/FtpFileRetriever.scala') diff --git a/src/main/scala/com/tylerstonge/honeypot/ftp/FtpFileRetriever.scala b/src/main/scala/com/tylerstonge/honeypot/ftp/FtpFileRetriever.scala deleted file mode 100644 index 1e441dd..0000000 --- a/src/main/scala/com/tylerstonge/honeypot/ftp/FtpFileRetriever.scala +++ /dev/null @@ -1,50 +0,0 @@ -package com.tylerstonge.honeypot.ftp - -import java.net.InetSocketAddress -import java.nio.file.{Files, Paths} - -import akka.actor.{Actor, Props} -import akka.event.{Logging, LoggingAdapter} -import akka.io.Tcp._ -import akka.io.{IO, Tcp} -import akka.util.{ByteString, ByteStringBuilder} - -object FtpFileRetriever { - def props(remote: InetSocketAddress): Props = Props(new FtpFileRetriever(remote)) -} - -class FtpFileRetriever(remote: InetSocketAddress) extends Actor { - - val log: LoggingAdapter = Logging(context.system, this) - IO(Tcp)(context.system) ! Connect(remote) - val fileData: ByteStringBuilder = ByteString.newBuilder - - override def preStart(): Unit = { - super.preStart() - log.info("started retrieving from {}:{}", remote.getHostString, remote.getPort) - } - - override def receive: Receive = { - case CommandFailed(_: Connect) => - context.stop(self) - case c@Connected(_, _) => - val connection = sender() - connection ! Register(self) - context.become { - case data: ByteString => - log.info("received {} bytes", data.length) - fileData.addAll(data) - case CommandFailed(w: Write) => - log.info("command failed") - case Received(data) => - log.info("received {} bytes", data.length) - fileData.addAll(data) - case _: ConnectionClosed => - log.info("peer closed connection, writing file to disk") - val out = Files.newByteChannel(Paths.get("testfile.txt")) - out.write(fileData.result().toByteBuffer) - out.close() - context.stop(self) - } - } -} -- cgit v1.1