RecordDetailFragment.java 6.1 KB

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