diff --git a/clean b/clean index 601c5ae..ab22e22 100755 --- a/clean +++ b/clean @@ -1,2 +1,2 @@ cd /workspace/SigPlace -find . -type f -name *.class -delete \ No newline at end of file +find . -type f -name "*.class" -delete \ No newline at end of file diff --git a/sigPlace.java b/sigPlace.java index 223d194..387b403 100644 --- a/sigPlace.java +++ b/sigPlace.java @@ -63,6 +63,8 @@ public class sigPlace { } } System.out.println("Site has been built into the "+OUTDIR+" directory."); + System.out.println("\nStarting web server..."); + sigServer server = new sigServer(); } private static Set GetFilesInDir(String directory) { Path dir = Paths.get(directory); diff --git a/sigServer.java b/sigServer.java new file mode 100644 index 0000000..49fbb16 --- /dev/null +++ b/sigServer.java @@ -0,0 +1,62 @@ +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.net.ServerSocket; +import java.net.Socket; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Arrays; +import java.util.regex.Pattern; + +public class sigServer { + ServerSocket socket; + sigServer() { + try { + socket = new ServerSocket(8080); + System.out.println("Listening on port 8080."); + while (true) { + try (Socket client = socket.accept()) { + System.out.println("New client connection detected: "+client.toString()); + BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream())); + String line; + line=in.readLine(); //Read the first line, this should be our request. + String[] splitter = line.split(Pattern.quote(" ")); + if (splitter.length==3) { + //This is valid. + if (splitter[2].equals("HTTP/1.1")||splitter[2].equals("HTTP/2.0")) { + String requestloc = splitter[1]; + if (requestloc.equals("/")) { + //Send default directory. + CreateRequest(client,"testfile.html"); + } + } + } + while (!(line=in.readLine()).isBlank()) { + //System.out.println(line); + } + } + } + } catch (IOException e) { + e.printStackTrace(); + } + } + private void CreateRequest(Socket client, String string) { + Path file = Paths.get(sigPlace.OUTDIR,string); + try { + OutputStream clientOutput = client.getOutputStream(); + clientOutput.write("HTTP/1.1 200 OK\r\n".getBytes()); + clientOutput.write(("ContentType: text/html\r\n").getBytes()); + clientOutput.write("\r\n".getBytes()); + clientOutput.write(Files.readAllBytes(file)); + clientOutput.write("\r\n\r\n".getBytes()); + clientOutput.flush(); + client.close(); + System.out.println("Sent "+file+" to client "+client+"."); + } catch (IOException e) { + e.printStackTrace(); + } + } +}