From fc31bf6e7c98ea673ab1a71ec0b6e6c6e5cbf8a9 Mon Sep 17 00:00:00 2001 From: emanuele-f Date: Thu, 4 Mar 2021 22:02:46 +0100 Subject: [PATCH] Add message for old untracked connections --- .../remote_capture/CaptureService.java | 4 +- .../fragments/ConnectionsFragment.java | 24 ++++++++++ app/src/main/res/layout/connections.xml | 48 ++++++++++++------- app/src/main/res/values/strings.xml | 1 + 4 files changed, 59 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/com/emanuelef/remote_capture/CaptureService.java b/app/src/main/java/com/emanuelef/remote_capture/CaptureService.java index 9094d06c..d100b7bc 100644 --- a/app/src/main/java/com/emanuelef/remote_capture/CaptureService.java +++ b/app/src/main/java/com/emanuelef/remote_capture/CaptureService.java @@ -87,8 +87,8 @@ public class CaptureService extends VpnService implements Runnable { private NotificationCompat.Builder mNotificationBuilder; /* The maximum connections to log into the ConnectionsRegister. Older connections are dropped. - * Max Estimated max memory usage: less than 2 MB. */ - public static final int CONNECTIONS_LOG_SIZE = 4192; + * Max Estimated max memory usage: less than 4 MB. */ + public static final int CONNECTIONS_LOG_SIZE = 8192; /* The IP address of the virtual network interface */ public static final String VPN_IP_ADDRESS = "10.215.173.1"; diff --git a/app/src/main/java/com/emanuelef/remote_capture/fragments/ConnectionsFragment.java b/app/src/main/java/com/emanuelef/remote_capture/fragments/ConnectionsFragment.java index 4a4bd99e..05c3c540 100644 --- a/app/src/main/java/com/emanuelef/remote_capture/fragments/ConnectionsFragment.java +++ b/app/src/main/java/com/emanuelef/remote_capture/fragments/ConnectionsFragment.java @@ -76,6 +76,7 @@ public class ConnectionsFragment extends Fragment implements ConnectionsListener private View mFabDown; private EmptyRecyclerView mRecyclerView; private TextView mEmptyText; + private TextView mOldConnectionsText; private boolean autoScroll; private boolean listenerSet; private MenuItem mMenuItemAppSel; @@ -87,6 +88,7 @@ public class ConnectionsFragment extends Fragment implements ConnectionsListener private boolean mOpenAppsWhenDone; private BroadcastReceiver mReceiver; private Uri mCsvFname; + private boolean hasUntrackedConnections; @Override public void onDestroy() { @@ -136,6 +138,7 @@ public class ConnectionsFragment extends Fragment implements ConnectionsListener mHandler = new Handler(Looper.getMainLooper()); mFabDown = view.findViewById(R.id.fabDown); mRecyclerView = view.findViewById(R.id.connections_view); + mOldConnectionsText = view.findViewById(R.id.old_connections_notice); LinearLayoutManager layoutMan = new LinearLayoutManager(getContext()); mRecyclerView.setLayoutManager(layoutMan); @@ -179,6 +182,7 @@ public class ConnectionsFragment extends Fragment implements ConnectionsListener autoScroll = true; showFabDown(false); + mOldConnectionsText.setVisibility(View.GONE); mFabDown.setOnClickListener(v -> scrollToBottom()); @@ -230,6 +234,8 @@ public class ConnectionsFragment extends Fragment implements ConnectionsListener autoScroll = true; showFabDown(false); + mOldConnectionsText.setVisibility(View.GONE); + hasUntrackedConnections = false; mEmptyText.setText(R.string.no_connections); } @@ -270,6 +276,11 @@ public class ConnectionsFragment extends Fragment implements ConnectionsListener } } else showFabDown(false); + + if((first_visibile_pos == 0) && hasUntrackedConnections) + mOldConnectionsText.setVisibility(View.VISIBLE); + else + mOldConnectionsText.setVisibility(View.GONE); } private void showFabDown(boolean visible) { @@ -284,6 +295,7 @@ public class ConnectionsFragment extends Fragment implements ConnectionsListener mRecyclerView.scrollToPosition(last_pos); showFabDown(false); + mOldConnectionsText.setVisibility(View.GONE); } @Override @@ -344,6 +356,18 @@ public class ConnectionsFragment extends Fragment implements ConnectionsListener if(autoScroll) scrollToBottom(); + + ConnectionsRegister reg = CaptureService.getConnsRegister(); + + if((reg != null) && (reg.getUntrackedConnCount() > 0)) { + String info = String.format(getString(R.string.older_connections_notice), reg.getUntrackedConnCount()); + mOldConnectionsText.setText(info); + + if(!hasUntrackedConnections) { + hasUntrackedConnections = true; + recheckScroll(); + } + } }); } diff --git a/app/src/main/res/layout/connections.xml b/app/src/main/res/layout/connections.xml index b09717a7..b7e4a862 100644 --- a/app/src/main/res/layout/connections.xml +++ b/app/src/main/res/layout/connections.xml @@ -2,14 +2,41 @@ - + android:layout_height="wrap_content" + android:orientation="vertical"> + + + + + + + + - - - diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index dd1e453b..fa1c7353 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -111,5 +111,6 @@ IPProto,SrcIP,SrcPort,DstIp,DstPort,Uid,App,Proto,Status,Info,BytesSent,BytesRcvd,PktsSent,PktsRcvd,FirstSeen,LastSeen Save to file File successfully saved + %1$d older connections not shown