diff --git a/README.md b/README.md
index ca5cbfe2..1f7b071d 100644
--- a/README.md
+++ b/README.md
@@ -163,11 +163,6 @@ This project also uses some other open-source libraries such as:
DBFlow |
MIT |
https://github.com/Raizlabs/DBFlow |
-
-
- Prettytime |
- Apache License 2.0 |
- https://github.com/ocpsoft/prettytime |
material-dialogs |
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
index bc15fdec..7d08d120 100644
--- a/app/proguard-rules.pro
+++ b/app/proguard-rules.pro
@@ -1,5 +1,4 @@
-keepattributes
--keep class org.ocpsoft.prettytime.i18n.**
-keep class * extends com.raizlabs.android.dbflow.config.DatabaseHolder { *; }
-dontpreverify
-dontoptimize
diff --git a/app/src/main/java/dev/ukanth/ufirewall/activity/LogDetailActivity.java b/app/src/main/java/dev/ukanth/ufirewall/activity/LogDetailActivity.java
index e48642fa..6fe905dd 100644
--- a/app/src/main/java/dev/ukanth/ufirewall/activity/LogDetailActivity.java
+++ b/app/src/main/java/dev/ukanth/ufirewall/activity/LogDetailActivity.java
@@ -295,7 +295,7 @@ protected Boolean doInBackground(Void... params) {
return false;
}
} catch (Exception e) {
- Log.e(Api.TAG, "Exception while retrieving data" + e.getLocalizedMessage());
+ Log.e(Api.TAG, "Exception while retrieving data" + e.getLocalizedMessage());
return null;
}
diff --git a/app/src/main/java/dev/ukanth/ufirewall/log/LogDetailRecyclerViewAdapter.java b/app/src/main/java/dev/ukanth/ufirewall/log/LogDetailRecyclerViewAdapter.java
index 0eb19009..769fdbee 100644
--- a/app/src/main/java/dev/ukanth/ufirewall/log/LogDetailRecyclerViewAdapter.java
+++ b/app/src/main/java/dev/ukanth/ufirewall/log/LogDetailRecyclerViewAdapter.java
@@ -7,9 +7,11 @@
import android.widget.ImageView;
import android.widget.TextView;
+import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
+import java.util.Calendar;
import java.util.List;
import dev.ukanth.ufirewall.R;
@@ -19,13 +21,11 @@
*/
public class LogDetailRecyclerViewAdapter extends RecyclerView.Adapter {
-
private final List logData;
private final Context context;
private LogData data;
private final RecyclerItemClickListener recyclerItemClickListener;
-
public LogDetailRecyclerViewAdapter(final Context context, RecyclerItemClickListener recyclerItemClickListener) {
this.context = context;
logData = new ArrayList<>();
@@ -38,6 +38,7 @@ public void updateData(List logDataList) {
}
@Override
+ @NonNull
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View mView = LayoutInflater.from(parent.getContext()).inflate(R.layout.logdetail_recycle_item, parent, false);
return new ViewHolder(mView);
@@ -47,24 +48,31 @@ public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
public void onBindViewHolder(ViewHolder holder, int position) {
data = logData.get(position);
if (data != null) {
- holder.bind(logData.get(position), recyclerItemClickListener);
- if(data.getOut() != null) {
- holder.deniedTime.setText(pretty(data.getTimestamp()) + "(" + data.getOut() + ")");
- if((data.getOut().contains("lan") || data.getOut().startsWith("eth") || data.getOut().startsWith("ra") || data.getOut().startsWith("bnep"))) {
+ holder.bind(data, recyclerItemClickListener);
+ if (data.getOut() != null) {
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTimeInMillis(data.getTimestamp());
+ java.text.DateFormat dateFormat = java.text.DateFormat.getDateTimeInstance(java.text.DateFormat.SHORT, java.text.DateFormat.SHORT);
+ String dateTime = dateFormat.format(calendar.getTime());
+ holder.deniedTime.setText(dateTime + " (" + data.getOut() + ")");
+ if ((data.getOut().contains("lan") || data.getOut().startsWith("eth") || data.getOut().startsWith("ra") || data.getOut().startsWith("bnep"))) {
holder.icon.setImageDrawable(context.getResources().getDrawable(R.drawable.ic_wifi));
- } else{
+ } else {
holder.icon.setImageDrawable(context.getResources().getDrawable(R.drawable.ic_mobiledata));
}
}
+
holder.dataDest.setText(context.getResources().getString(R.string.log_dst) + data.getDst() + ":" + data.getDpt());
holder.dataSrc.setText(context.getResources().getString(R.string.log_src) + data.getSrc() + ":" + data.getSpt());
holder.dataProto.setText(context.getResources().getString(R.string.log_proto) + data.getProto());
- holder.dataHost.setText(context.getResources().getString(R.string.host) + data.getHostname());
- }
- }
- public static String pretty(Long timestamp) {
- return android.text.format.DateFormat.format("dd-MM-yyyy hh:mm:ss", new java.util.Date(timestamp)).toString();
+ String hostName = data.getHostname();
+ if (!hostName.isEmpty()) {
+ holder.dataHost.setText(context.getResources().getString(R.string.host) + hostName);
+ } else {
+ holder.dataHost.setVisibility(View.GONE);
+ }
+ }
}
@Override
@@ -72,13 +80,10 @@ public int getItemCount() {
return logData.size();
}
-
public static class ViewHolder extends RecyclerView.ViewHolder {
final ImageView icon;
- //final TextView appName;
final TextView deniedTime;
- //final TextView dataInterface;
final TextView dataDest;
final TextView dataSrc;
final TextView dataProto;
@@ -87,9 +92,7 @@ public static class ViewHolder extends RecyclerView.ViewHolder {
public ViewHolder(View itemView) {
super(itemView);
icon = itemView.findViewById(R.id.data_icon);
- //appName = (TextView)itemView.findViewById(R.id.app_name);
deniedTime = itemView.findViewById(R.id.denied_time);
- //dataInterface = (TextView)itemView.findViewById(R.id.data_interface);
dataDest = itemView.findViewById(R.id.data_dest);
dataSrc = itemView.findViewById(R.id.data_src);
dataProto = itemView.findViewById(R.id.data_proto);
@@ -105,9 +108,4 @@ public void onClick(View v) {
});
}
}
-
- public List getLogData() {
- return logData;
- }
-
}
diff --git a/app/src/main/java/dev/ukanth/ufirewall/log/LogInfo.java b/app/src/main/java/dev/ukanth/ufirewall/log/LogInfo.java
index e8b1e315..5001f3e5 100644
--- a/app/src/main/java/dev/ukanth/ufirewall/log/LogInfo.java
+++ b/app/src/main/java/dev/ukanth/ufirewall/log/LogInfo.java
@@ -28,15 +28,9 @@
import android.util.Log;
import android.util.SparseArray;
-import org.ocpsoft.prettytime.PrettyTime;
-import org.ocpsoft.prettytime.TimeUnit;
-import org.ocpsoft.prettytime.units.JustNow;
-
import java.net.InetAddress;
-import java.util.Date;
import java.util.HashMap;
import java.util.List;
-import java.util.Locale;
import dev.ukanth.ufirewall.Api;
import dev.ukanth.ufirewall.Api.PackageInfoData;
@@ -61,29 +55,12 @@ public class LogInfo {
public long timestamp;
int totalBlocked;
- private static PrettyTime prettyTime;
-
- public static String pretty(Date date) {
- if (prettyTime == null) {
- prettyTime = new PrettyTime(new Locale(G.locale()));
- for (TimeUnit t : prettyTime.getUnits()) {
- if (t instanceof JustNow) {
- prettyTime.removeUnit(t);
- break;
- }
- }
- }
- prettyTime.setReference(date);
- return prettyTime.format(new Date(0));
- }
-
private final HashMap dstBlocked; // Number of packets blocked per destination IP address
public LogInfo() {
this.dstBlocked = new HashMap();
}
-
public static String parseLog(Context ctx, List listLogData) {
//final BufferedReader r = new BufferedReader(new StringReader(dmesg.toString()));
diff --git a/app/src/main/java/dev/ukanth/ufirewall/log/LogRecyclerViewAdapter.java b/app/src/main/java/dev/ukanth/ufirewall/log/LogRecyclerViewAdapter.java
index c7b75b2b..e2fd6253 100644
--- a/app/src/main/java/dev/ukanth/ufirewall/log/LogRecyclerViewAdapter.java
+++ b/app/src/main/java/dev/ukanth/ufirewall/log/LogRecyclerViewAdapter.java
@@ -3,8 +3,6 @@
import static dev.ukanth.ufirewall.Api.TAG;
import android.content.Context;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.view.LayoutInflater;
import android.view.View;
@@ -12,34 +10,25 @@
import android.widget.ImageView;
import android.widget.TextView;
+import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
-import org.ocpsoft.prettytime.PrettyTime;
-import org.ocpsoft.prettytime.TimeUnit;
-import org.ocpsoft.prettytime.units.JustNow;
-
+import java.text.DateFormat;
import java.util.ArrayList;
-import java.util.Date;
+import java.util.Calendar;
import java.util.List;
-import java.util.Locale;
import dev.ukanth.ufirewall.Api;
import dev.ukanth.ufirewall.R;
-import dev.ukanth.ufirewall.util.G;
/**
* Created by ukanth on 25/7/16.
*/
public class LogRecyclerViewAdapter extends RecyclerView.Adapter {
-
private final List logData;
private final Context context;
- private LogData data;
- private PackageInfo info;
- private static PrettyTime prettyTime;
private final RecyclerItemClickListener recyclerItemClickListener;
- private View mView;
public LogRecyclerViewAdapter(final Context context, RecyclerItemClickListener recyclerItemClickListener) {
this.context = context;
@@ -52,9 +41,10 @@ public void updateData(List logDataList) {
logData.addAll(logDataList);
}
+ @NonNull
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
- mView = LayoutInflater.from(parent.getContext()).inflate(R.layout.log_recycle_item, parent, false);
+ View mView = LayoutInflater.from(parent.getContext()).inflate(R.layout.log_recycle_item, parent, false);
return new ViewHolder(mView);
}
@@ -104,20 +94,19 @@ private Bitmap getAppIcon26(PackageManager mPackageManager, ApplicationInfo appl
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
- data = logData.get(position);
- PackageManager manager = context.getPackageManager();
- holder.bind(logData.get(position),recyclerItemClickListener);
+ LogData data = logData.get(position);
+ holder.bind(logData.get(position), recyclerItemClickListener);
try {
Drawable applicationIcon = Api.getApplicationIcon(context, data.getUid());
holder.icon.setBackground(applicationIcon);
} catch (Exception e) {
Log.e(TAG, e.getMessage(), e);
}
-
try {
- //if(data.getTimestamp() != null && !data.getTimestamp().isEmpty()) {
- holder.lastDenied.setText(pretty(new Date(System.currentTimeMillis() - data.getTimestamp())));
- //}
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTimeInMillis(data.getTimestamp());
+ DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
+ holder.lastDenied.setText(dateFormat.format(calendar.getTime()));
} catch (Exception e) {
holder.lastDenied.setText("-");
}
@@ -130,26 +119,11 @@ public void onBindViewHolder(ViewHolder holder, int position) {
holder.icon.invalidate();
}
- public static String pretty(Date date) {
- if (prettyTime == null) {
- prettyTime = new PrettyTime(new Locale(G.locale()));
- for (TimeUnit t : prettyTime.getUnits()) {
- if (t instanceof JustNow) {
- prettyTime.removeUnit(t);
- break;
- }
- }
- }
- prettyTime.setReference(date);
- return prettyTime.format(new Date(0));
- }
-
@Override
public int getItemCount() {
return logData.size();
}
-
public static class ViewHolder extends RecyclerView.ViewHolder {
final ImageView icon;
diff --git a/app/src/main/java/dev/ukanth/ufirewall/service/LogService.java b/app/src/main/java/dev/ukanth/ufirewall/service/LogService.java
index eb9a1566..43169060 100644
--- a/app/src/main/java/dev/ukanth/ufirewall/service/LogService.java
+++ b/app/src/main/java/dev/ukanth/ufirewall/service/LogService.java
@@ -49,13 +49,7 @@
import com.topjohnwu.superuser.CallbackList;
import com.topjohnwu.superuser.Shell;
-import org.ocpsoft.prettytime.PrettyTime;
-import org.ocpsoft.prettytime.TimeUnit;
-import org.ocpsoft.prettytime.units.JustNow;
-
-import java.util.Date;
import java.util.List;
-import java.util.Locale;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@@ -233,7 +227,6 @@ private void storeLogInfo(String line, Context context) {
}
}
-
private void checkBatteryOptimize() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
final Intent doze = new Intent(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS);
@@ -242,22 +235,6 @@ private void checkBatteryOptimize() {
}
}
- private static PrettyTime prettyTime;
-
- public static String pretty(Date date) {
- if (prettyTime == null) {
- prettyTime = new PrettyTime(new Locale(G.locale()));
- for (TimeUnit t : prettyTime.getUnits()) {
- if (t instanceof JustNow) {
- prettyTime.removeUnit(t);
- break;
- }
- }
- }
- prettyTime.setReference(date);
- return prettyTime.format(new Date(0));
- }
-
@SuppressLint("RestrictedApi")
private void showNotification(LogInfo logInfo) {
if(G.enableLogService()) {
@@ -271,8 +248,6 @@ private void showNotification(LogInfo logInfo) {
}
}
-
-
private static void store(final LogInfo logInfo, Context context) {
try {
if (logInfo != null) {
diff --git a/app/src/main/res/raw/about.html b/app/src/main/res/raw/about.html
index 3d8e9a49..75c3b9bf 100644
--- a/app/src/main/res/raw/about.html
+++ b/app/src/main/res/raw/about.html
@@ -296,10 +296,6 @@
RxJava |
Apache License 2.0 |
-
- PrettyTime |
- Apache License 2.0 |
-