|
|
|
@ -2,13 +2,11 @@ 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 { |
|
|
|
@ -26,13 +24,19 @@ public class sigServer { |
|
|
|
|
String[] splitter = line.split(Pattern.quote(" ")); |
|
|
|
|
if (splitter.length==3) { |
|
|
|
|
//This is valid.
|
|
|
|
|
if (splitter[0].equals("GET")) { //This is a GET request.
|
|
|
|
|
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"); |
|
|
|
|
CreateRequest(client,"200","OK","testfile.html"); |
|
|
|
|
} else { |
|
|
|
|
CreateRequest(client,"200","OK",Paths.get("/", requestloc.replace("/","")).toString()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
CreateRequest(client,"501","Not Implemented","testfile.html"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
while (!(line=in.readLine()).isBlank()) { |
|
|
|
|
//System.out.println(line);
|
|
|
|
@ -43,14 +47,31 @@ public class sigServer { |
|
|
|
|
e.printStackTrace(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
private void CreateRequest(Socket client, String string) { |
|
|
|
|
|
|
|
|
|
private void CreateRawRequest(OutputStream stream, String statusCode, String statusMsg, String contentType, byte[] content) { |
|
|
|
|
try { |
|
|
|
|
stream.write(("HTTP/1.1 "+statusCode+" "+statusMsg+"\r\n").getBytes()); |
|
|
|
|
stream.write(("ContentType: "+contentType+"\r\n").getBytes()); |
|
|
|
|
stream.write("\r\n".getBytes()); |
|
|
|
|
stream.write(content); |
|
|
|
|
} catch (IOException e) { |
|
|
|
|
e.printStackTrace(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void CreateRequest(Socket client, String statusCode, String statusMsg, 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)); |
|
|
|
|
if (statusCode.equals("200")) { |
|
|
|
|
if (Files.exists(file)) { |
|
|
|
|
CreateRawRequest(clientOutput,statusCode,statusMsg,Files.probeContentType(file),Files.readAllBytes(file)); |
|
|
|
|
} else { |
|
|
|
|
CreateRawRequest(clientOutput,statusCode,statusMsg,"text/html","We're sorry, your webpage is in another castle!".getBytes()); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
CreateRawRequest(clientOutput,statusCode,statusMsg,"text/html","We're sorry, your webpage exploded!".getBytes()); |
|
|
|
|
} |
|
|
|
|
clientOutput.write("\r\n\r\n".getBytes()); |
|
|
|
|
clientOutput.flush(); |
|
|
|
|
client.close(); |
|
|
|
|