StringHandler.java 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package de.tudarmstadt.informatik.hostage.handler;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import java.io.OutputStream;
  5. import java.net.Socket;
  6. import java.util.List;
  7. import de.tudarmstadt.informatik.hostage.HoneyListener;
  8. import de.tudarmstadt.informatik.hostage.HoneyService;
  9. import de.tudarmstadt.informatik.hostage.io.ReaderWriter;
  10. import de.tudarmstadt.informatik.hostage.io.StringReaderWriter;
  11. import de.tudarmstadt.informatik.hostage.logging.Record.TYPE;
  12. import de.tudarmstadt.informatik.hostage.protocol.Protocol;
  13. import de.tudarmstadt.informatik.hostage.protocol.Protocol.TALK_FIRST;
  14. /**
  15. * Handles the socket connections for byte Strings.
  16. * @author Mihai Plasoianu
  17. */
  18. public class StringHandler extends AbstractHandler {
  19. public StringHandler(HoneyService service, HoneyListener listener,
  20. Protocol<?> protocol, Socket client) {
  21. super(service, listener, protocol, client);
  22. }
  23. @Override
  24. protected void talkToClient(InputStream in, OutputStream out)
  25. throws IOException {
  26. ReaderWriter<String> stream = new StringReaderWriter(in, out);
  27. String inputLine;
  28. List<String> outputLine;
  29. if (protocol.whoTalksFirst() == TALK_FIRST.SERVER) {
  30. outputLine = protocol.processMessage(null);
  31. stream.write(outputLine);
  32. for (String s : outputLine) {
  33. log.write(createRecord(TYPE.SEND, s));
  34. }
  35. }
  36. while (!thread.isInterrupted() && (inputLine = stream.read()) != null) {
  37. log.write(createRecord(TYPE.RECEIVE, inputLine));
  38. outputLine = protocol.processMessage(inputLine);
  39. if (outputLine != null) {
  40. stream.write(outputLine);
  41. for (String s : outputLine) {
  42. log.write(createRecord(TYPE.SEND, s));
  43. }
  44. }
  45. if (protocol.isClosed()) {
  46. break;
  47. }
  48. }
  49. }
  50. }