diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..54e4993 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,2 @@ +org.gradle.parallel=true +org.gradle.caching=true \ No newline at end of file diff --git a/src/main/java/tech/nevets/sfss/Main.java b/src/main/java/tech/nevets/sfss/Main.java index efd3e21..fa9ed8d 100644 --- a/src/main/java/tech/nevets/sfss/Main.java +++ b/src/main/java/tech/nevets/sfss/Main.java @@ -23,6 +23,8 @@ public class Main { }); sfsServer.start(); + + Thread sftpServer = new Thread(() -> { try { System.out.println("Starting sftp server..."); @@ -31,7 +33,7 @@ public class Main { e.printStackTrace(); } }); - sftpServer.start(); + //sftpServer.start(); Thread httpServer = new Thread(() -> { try { @@ -41,7 +43,7 @@ public class Main { e.printStackTrace(); } }); - httpServer.start(); + //httpServer.start(); } } diff --git a/src/main/java/tech/nevets/sfss/net/Connection.java b/src/main/java/tech/nevets/sfss/net/Connection.java new file mode 100644 index 0000000..25987ec --- /dev/null +++ b/src/main/java/tech/nevets/sfss/net/Connection.java @@ -0,0 +1,8 @@ +package tech.nevets.sfss.net; + +public class Connection { + + public Connection() { + + } +} diff --git a/src/main/java/tech/nevets/sfss/net/SFSData.java b/src/main/java/tech/nevets/sfss/net/SFSData.java deleted file mode 100644 index 24018d9..0000000 --- a/src/main/java/tech/nevets/sfss/net/SFSData.java +++ /dev/null @@ -1,27 +0,0 @@ -package tech.nevets.sfss.net; - -public class SFSData { - private final byte length; - - public SFSData(byte[] data) { - this.length = data[0]; - } - - public SFSData(int length) { - if (length > 255 || length < 0) { - throw new IllegalArgumentException("Length outside range 0-255"); - } - this.length = (byte) length; - } - - public byte getLength() { - return length; - } - - public byte[] toBytes() { - return new byte[]{ - length - }; - } - -} diff --git a/src/main/java/tech/nevets/sfss/net/SFSServer.java b/src/main/java/tech/nevets/sfss/net/SFSServer.java index 98b4707..dde8f70 100644 --- a/src/main/java/tech/nevets/sfss/net/SFSServer.java +++ b/src/main/java/tech/nevets/sfss/net/SFSServer.java @@ -6,9 +6,11 @@ import javax.net.ssl.SSLServerSocket; import javax.net.ssl.SSLServerSocketFactory; import javax.net.ssl.SSLSocket; import java.io.IOException; +import java.util.concurrent.atomic.AtomicBoolean; public class SFSServer { private final SSLServerSocket serverSocket; + private volatile boolean running = true; public SFSServer(int port) throws IOException { SSLServerSocketFactory factory = StoreManager.getSSLContext().getServerSocketFactory(); @@ -20,6 +22,17 @@ public class SFSServer { serverSocket.setNeedClientAuth(false); serverSocket.setWantClientAuth(false); - SSLSocket s = (SSLSocket) serverSocket.accept(); + while(running) { + SSLSocket conn = (SSLSocket) serverSocket.accept(); + conn.getChannel(); + } + } + + public boolean isRunning() { + return running; + } + + public void stop() { + running = false; } } diff --git a/src/main/java/tech/nevets/sfss/net/packets/SFSData.java b/src/main/java/tech/nevets/sfss/net/packets/SFSData.java new file mode 100644 index 0000000..9c92157 --- /dev/null +++ b/src/main/java/tech/nevets/sfss/net/packets/SFSData.java @@ -0,0 +1,16 @@ +package tech.nevets.sfss.net.packets; + +import java.net.DatagramPacket; + +public class SFSData { + + private final DatagramPacket packet; + + public SFSData(DatagramPacket packet) { + this.packet = packet; + } + + public DatagramPacket getPacket() { + return packet; + } +} diff --git a/src/main/java/tech/nevets/sfss/net/packets/SFSInfo.java b/src/main/java/tech/nevets/sfss/net/packets/SFSInfo.java new file mode 100644 index 0000000..cc5e039 --- /dev/null +++ b/src/main/java/tech/nevets/sfss/net/packets/SFSInfo.java @@ -0,0 +1,29 @@ +package tech.nevets.sfss.net.packets; + +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.nio.charset.StandardCharsets; + +public class SFSInfo { + private final int length; + private final String fileName; + + public SFSInfo(int length, String fileName) { + if (length < 0) { + throw new IllegalArgumentException("Length cannot be negative"); + } + this.length = (byte) length; + this.fileName = fileName; + } + + public int getLength() { + return length; + } + + public byte[] toBytes() { + byte[] data = new byte[512]; + System.arraycopy(ByteBuffer.allocate(4).order(ByteOrder.LITTLE_ENDIAN).putInt(length).array(), 0, data, 0, 4); + System.arraycopy(fileName.getBytes(StandardCharsets.UTF_8), 0, data, 4, fileName.getBytes(StandardCharsets.UTF_8).length); + } + +}