HoneyService.java 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. package de.tudarmstadt.informatik.hostage;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import android.app.Service;
  5. import android.content.Intent;
  6. import android.os.Binder;
  7. import android.os.IBinder;
  8. import android.support.v4.content.LocalBroadcastManager;
  9. import de.tudarmstadt.informatik.hostage.logging.FileLogger;
  10. import de.tudarmstadt.informatik.hostage.logging.Logger;
  11. import de.tudarmstadt.informatik.hostage.protocol.Protocol;
  12. import de.tudarmstadt.informatik.hostage.ui.MainActivity;
  13. public class HoneyService extends Service {
  14. private ArrayList<HoneyListener> listeners = new ArrayList<HoneyListener>();
  15. public List<HoneyListener> getListeners() {
  16. return listeners;
  17. }
  18. private Logger log;
  19. public Logger getLog() {
  20. return log;
  21. }
  22. private final IBinder mBinder = new LocalBinder();
  23. public class LocalBinder extends Binder {
  24. public HoneyService getService() {
  25. return HoneyService.this;
  26. }
  27. }
  28. @Override
  29. public IBinder onBind(Intent intent) {
  30. return mBinder;
  31. }
  32. @Override
  33. public void onCreate() {
  34. super.onCreate();
  35. log = new FileLogger(getApplicationContext());
  36. for (Protocol protocol : getProtocolArray()) {
  37. listeners.add(new HoneyListener(this, protocol));
  38. }
  39. }
  40. @Override
  41. public void onDestroy() {
  42. log.close();
  43. super.onDestroy();
  44. }
  45. private ArrayList<Protocol> getProtocolArray() {
  46. String[] protocols = getResources().getStringArray(R.array.protocols);
  47. String packageName = Protocol.class.getPackage().getName();
  48. ArrayList<Protocol> protocolArray = new ArrayList<Protocol>();
  49. for (String protocol : protocols) {
  50. try {
  51. protocolArray.add((Protocol) Class.forName(
  52. String.format("%s.%s", packageName, protocol))
  53. .newInstance());
  54. } catch (Exception e) {
  55. e.printStackTrace();
  56. }
  57. }
  58. return protocolArray;
  59. }
  60. public void notifyUI() {
  61. Intent intent = new Intent(MainActivity.BROADCAST);
  62. LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
  63. }
  64. public void startListeners() {
  65. for (HoneyListener listener : listeners) {
  66. listener.start();
  67. }
  68. }
  69. public void stopListeners() {
  70. for (HoneyListener listener : listeners) {
  71. listener.stop();
  72. }
  73. }
  74. public void startListener(String protocolName) {
  75. for (HoneyListener listener : listeners) {
  76. if (listener.getProtocolName().equals(protocolName)) {
  77. listener.start();
  78. }
  79. }
  80. }
  81. public void stopListener(String protocolName) {
  82. for (HoneyListener listener : listeners) {
  83. if (listener.getProtocolName().equals(protocolName)) {
  84. listener.stop();
  85. }
  86. }
  87. }
  88. public void toggleListener(String protocolName) {
  89. for (HoneyListener listener : listeners) {
  90. if (listener.getProtocolName().equals(protocolName)) {
  91. if (listener.isRunning()) {
  92. stopListener(protocolName);
  93. } else {
  94. startListener(protocolName);
  95. }
  96. }
  97. }
  98. }
  99. }