RecordDetailFragment.java 5.7 KB

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