RecordDetailFragment.java 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. package de.tudarmstadt.informatik.hostage.ui2.fragment;
  2. import java.util.ArrayList;
  3. import java.util.Date;
  4. import android.os.Bundle;
  5. import android.text.format.DateFormat;
  6. import android.view.LayoutInflater;
  7. import android.view.Menu;
  8. import android.view.MenuInflater;
  9. import android.view.MotionEvent;
  10. import android.view.View;
  11. import android.view.ViewGroup;
  12. import android.widget.LinearLayout;
  13. import android.widget.ScrollView;
  14. import android.widget.TextView;
  15. import de.tudarmstadt.informatik.hostage.R;
  16. import de.tudarmstadt.informatik.hostage.deprecated.UglyDbHelper;
  17. import de.tudarmstadt.informatik.hostage.logging.Record;
  18. /**
  19. * Created by Julien on 02.03.14.
  20. */
  21. public class RecordDetailFragment extends UpNavigatibleFragment {
  22. private class Location {
  23. private double longitude;
  24. private double latitude;
  25. private float accuracy;
  26. public double getLatitude() {
  27. return latitude;
  28. }
  29. public void setLatitude(double latitude) {
  30. this.latitude = latitude;
  31. }
  32. public float getAccuracy() {
  33. return accuracy;
  34. }
  35. public void setAccuracy(float accuracy) {
  36. this.accuracy = accuracy;
  37. }
  38. public double getLongitude() {
  39. return this.longitude;
  40. }
  41. public void setLongitude(double longitude) {
  42. this.longitude = longitude;
  43. }
  44. public Location() {
  45. super();
  46. }
  47. public Location(double latitude, double longitude, float accuracy) {
  48. super();
  49. this.latitude = latitude;
  50. this.longitude = longitude;
  51. this.accuracy = accuracy;
  52. }
  53. }
  54. private Record record;
  55. private UglyDbHelper dbh;
  56. private View rootView;
  57. private LayoutInflater mInflater;
  58. private ScrollView mScrollView;
  59. private LinearLayout mRecordOverviewConversation;
  60. private TextView mRecordDetailsTextSsid;
  61. private TextView mRecordDetailsTextBssid;
  62. private TextView mRecordDetailsTextRemoteip;
  63. private TextView mRecordDetailsTextProtocol;
  64. public void setRecord(Record rec) {
  65. this.record = rec;
  66. }
  67. public Record getRecord() {
  68. return this.record;
  69. }
  70. public int getLayoutId() {
  71. // return R.layout.fragment_record_detail;
  72. return R.layout.fragment_record_overview;
  73. }
  74. public void onCreate(Bundle savedInstanceState) {
  75. super.onCreate(savedInstanceState);
  76. setHasOptionsMenu(true);
  77. }
  78. public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
  79. super.onCreateView(inflater, container, savedInstanceState);
  80. mInflater = inflater;
  81. getActivity().setTitle(record.getSsid());
  82. this.dbh = new UglyDbHelper(this.getActivity().getBaseContext());
  83. this.rootView = inflater.inflate(this.getLayoutId(), container, false);
  84. this.assignViews(rootView);
  85. this.configurateRootView(rootView);
  86. return rootView;
  87. }
  88. public void onStart() {
  89. super.onStart();
  90. }
  91. private void assignViews(View view) {
  92. mScrollView = (ScrollView) view.findViewById(R.id.scrollView);
  93. mRecordOverviewConversation = (LinearLayout) view.findViewById(R.id.record_overview_conversation);
  94. mRecordDetailsTextSsid = (TextView) view.findViewById(R.id.record_details_text_ssid);
  95. mRecordDetailsTextBssid = (TextView) view.findViewById(R.id.record_details_text_bssid);
  96. mRecordDetailsTextRemoteip = (TextView) view.findViewById(R.id.record_details_text_remoteip);
  97. mRecordDetailsTextProtocol = (TextView) view.findViewById(R.id.record_details_text_protocol);
  98. }
  99. private void configurateRootView(View rootView) {
  100. mRecordDetailsTextBssid.setText(record.getBssid());
  101. mRecordDetailsTextSsid.setText(record.getSsid());
  102. if (record.getRemoteIP() != null)
  103. mRecordDetailsTextRemoteip.setText(record.getRemoteIP() + ":" + record.getRemotePort());
  104. mRecordDetailsTextProtocol.setText(record.getProtocol());
  105. ArrayList<Record> conversation = this.dbh.getConversationForAttackID(record.getAttack_id());
  106. for (Record r : conversation) {
  107. View row;
  108. String from = r.getLocalIP() == null ? "-" : r.getLocalIP() + ":" + r.getLocalPort();
  109. String to = r.getRemoteIP() == null ? "-" : r.getRemoteIP() + ":" + r.getRemotePort();
  110. if (r.getType() == Record.TYPE.SEND) {
  111. row = mInflater.inflate(R.layout.fragment_record_conversation_sent, null);
  112. } else {
  113. row = mInflater.inflate(R.layout.fragment_record_conversation_received, null);
  114. String tmp = from;
  115. from = to;
  116. to = tmp;
  117. }
  118. TextView conversationInfo = (TextView) row.findViewById(R.id.record_conversation_info);
  119. TextView conversationContent = (TextView) row.findViewById(R.id.record_conversation_content);
  120. conversationContent.setOnTouchListener(new View.OnTouchListener() {
  121. @Override
  122. public boolean onTouch(final View v, final MotionEvent motionEvent) {
  123. if (v.getId() == R.id.record_conversation_content) {
  124. v.getParent().requestDisallowInterceptTouchEvent(true);
  125. switch (motionEvent.getAction() & MotionEvent.ACTION_MASK) {
  126. case MotionEvent.ACTION_UP:
  127. v.getParent().requestDisallowInterceptTouchEvent(false);
  128. break;
  129. }
  130. }
  131. return false;
  132. }
  133. });
  134. Date date = new Date(r.getTimestamp());
  135. conversationInfo.setText(String.format(getString(R.string.record_details_info), from, to, getDateAsString(date), getTimeAsString(date)));
  136. if (r.getPacket() != null)
  137. conversationContent.setText(r.getPacket());
  138. mRecordOverviewConversation.addView(row);
  139. }
  140. }
  141. /*****************************
  142. *
  143. * Date Transform
  144. *
  145. * ***************************/
  146. private String getDateAsString(Date date) {
  147. return DateFormat.getDateFormat(getActivity()).format(date);
  148. }
  149. private String getTimeAsString(Date date) {
  150. return DateFormat.getTimeFormat(getActivity()).format(date);
  151. }
  152. public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
  153. super.onCreateOptionsMenu(menu, inflater);
  154. }
  155. }