ByteArrayHandlerImpl.java 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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.ByteArrayReaderWriter;
  10. import de.tudarmstadt.informatik.hostage.io.ReaderWriter;
  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. import de.tudarmstadt.informatik.hostage.wrapper.ByteArray;
  15. public class ByteArrayHandlerImpl extends AbstractHandler {
  16. public ByteArrayHandlerImpl(HoneyService service, HoneyListener listener,
  17. Protocol protocol, Socket client) {
  18. super(service, listener, protocol, client);
  19. }
  20. @Override
  21. protected void talkToClient(InputStream in, OutputStream out)
  22. throws IOException {
  23. ReaderWriter<ByteArray> stream = new ByteArrayReaderWriter(in, out);
  24. ByteArray inputLine;
  25. List<ByteArray> outputLine;
  26. if (protocol.whoTalksFirst() == TALK_FIRST.SERVER) {
  27. outputLine = protocol.processMessage(null);
  28. stream.write(outputLine);
  29. for (ByteArray s : outputLine) {
  30. log.write(createRecord(TYPE.SEND, s.toString()));
  31. }
  32. }
  33. while (!thread.isInterrupted() && (inputLine = stream.read()) != null) {
  34. log.write(createRecord(TYPE.RECEIVE, inputLine.toString()));
  35. outputLine = protocol.processMessage(inputLine);
  36. if (outputLine != null) {
  37. stream.write(outputLine);
  38. for (ByteArray s : outputLine) {
  39. log.write(createRecord(TYPE.SEND, s.toString()));
  40. }
  41. }
  42. if (protocol.isClosed()) {
  43. break;
  44. }
  45. }
  46. }
  47. }