HTTP.java 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package de.tudarmstadt.informatik.hostage.protocol;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import java.util.regex.Pattern;
  5. public final class HTTP implements Protocol<String> {
  6. @Override
  7. public int getPort() {
  8. return 80;
  9. }
  10. @Override
  11. public TALK_FIRST whoTalksFirst() {
  12. return TALK_FIRST.CLIENT;
  13. }
  14. @Override
  15. public List<String> processMessage(String message) {
  16. List<String> response = new ArrayList<String>();
  17. if(!message.contains("HTTP/1.1")){
  18. response.add("HTTP/1.1 505 HTTP Version not supported");
  19. } else if(message.contains("GET")) {
  20. response.add(header+html);
  21. } else if(message.contains("HEAD")) {
  22. response.add(header);
  23. } else {
  24. response.add("HTTP/1.1 501 Not Implemented");
  25. }
  26. return response;
  27. }
  28. @Override
  29. public boolean isClosed() {
  30. return false;
  31. }
  32. @Override
  33. public boolean isSecure() {
  34. return false;
  35. }
  36. @Override
  37. public Class<String> getType() {
  38. return String.class;
  39. }
  40. @Override
  41. public String toString() {
  42. return "HTTP";
  43. }
  44. private String header = "HTTP/1.1 200 OK\r\n" +
  45. "Date: Mon, 01 Jul 2013 18:27:55 GMT\r\n" +
  46. "Server: Apache/2.2.22 (Debian)\r\n" +
  47. "X-Powered-By: PHP/5.4.4.-14\r\n" +
  48. "Vary: Accept-Encoding\r\n" +
  49. "Content-Length: 173\r\n" +
  50. "Keep-Alive: timeout=5, max=100\r\n" +
  51. "Connection: Keep-Alive\r\n" +
  52. "Content-Type: text/html\r\n" +
  53. "\r\n";
  54. private String html = "<!doctype html>\n" +
  55. "<html lang=\"en\">\n" +
  56. "<head>\n" +
  57. "<meta charset=\"UTF-8\">\n" +
  58. "<title>Test successful</title>\n" +
  59. "</head>\n" +
  60. "<body>\n" +
  61. "<h1>Test successful</h1>\n" +
  62. "<p>Congratulations.</p>\n" +
  63. "</body>\n" +
  64. "</html>";
  65. }