StringHandlerImpl.java 1.5 KB

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