123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- package de.tudarmstadt.informatik.hostage.handler;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.net.Socket;
- import java.util.List;
- import android.content.SharedPreferences;
- import android.preference.PreferenceManager;
- import de.tudarmstadt.informatik.hostage.HoneyListener;
- import de.tudarmstadt.informatik.hostage.HoneyService;
- import de.tudarmstadt.informatik.hostage.commons.HelperUtils;
- import de.tudarmstadt.informatik.hostage.io.ByteArrayReaderWriter;
- import de.tudarmstadt.informatik.hostage.io.ReaderWriter;
- import de.tudarmstadt.informatik.hostage.logging.Record.TYPE;
- import de.tudarmstadt.informatik.hostage.protocol.Protocol;
- import de.tudarmstadt.informatik.hostage.protocol.Protocol.TALK_FIRST;
- import de.tudarmstadt.informatik.hostage.wrapper.ByteArray;
- /**
- * Handles the socket connections for byte arrays.
- * @author Mihai Plasoianu
- */
- public class ByteArrayHandler extends AbstractHandler {
- /** Defined time until timeout */
- private int SLEEPTIME;
-
- public ByteArrayHandler(HoneyService service, HoneyListener listener,
- Protocol<?> protocol, Socket client) {
- super(service, listener, protocol, client);
- SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(service);
- SLEEPTIME = pref.getInt("sleeptime", 500);
- }
- @Override
- protected void talkToClient(InputStream in, OutputStream out)
- throws IOException {
- ReaderWriter<ByteArray> stream = new ByteArrayReaderWriter(in, out, SLEEPTIME);
- ByteArray inputLine;
- List<ByteArray> outputLine;
- if (protocol.whoTalksFirst() == TALK_FIRST.SERVER) {
- outputLine = protocol.processMessage(null);
- stream.write(outputLine);
- for (ByteArray s : outputLine) {
- log.write(createRecord(TYPE.SEND, HelperUtils.bytesToHexString(s.get())));
- }
- }
- while (!thread.isInterrupted() && (inputLine = stream.read()) != null) {
- outputLine = protocol.processMessage(inputLine);
- log.write(createRecord(TYPE.RECEIVE, HelperUtils.bytesToHexString(inputLine.get())));
- if (outputLine != null) {
- stream.write(outputLine);
- for (ByteArray s : outputLine) {
- log.write(createRecord(TYPE.SEND, HelperUtils.bytesToHexString(s.get())));
- }
- }
- if (protocol.isClosed()) {
- break;
- }
- }
- }
- }
|