Fix firewall visibility

This commit is contained in:
emanuele-f 2022-05-23 12:26:15 +02:00
parent 9506a1fb6f
commit 7807dee049
8 changed files with 20 additions and 19 deletions

View File

@ -27,6 +27,8 @@ import android.util.Log;
import androidx.preference.PreferenceManager;
import com.emanuelef.remote_capture.model.Prefs;
import java.nio.charset.StandardCharsets;
import java.security.InvalidKeyException;
import java.security.KeyFactory;
@ -176,7 +178,13 @@ public class Billing {
return rv;
}
public boolean canUseFirewall() {
return isPurchased(Billing.FIREWALL_SKU) && !CaptureService.isCapturingAsRoot();
public boolean isFirewallVisible() {
if(!isPurchased(Billing.FIREWALL_SKU))
return false;
if(CaptureService.isServiceActive())
return !CaptureService.isCapturingAsRoot();
else
return !Prefs.isRootCaptureEnabled(mPrefs);
}
}

View File

@ -936,13 +936,6 @@ public class CaptureService extends VpnService implements Runnable {
}
}
public static boolean isFirewallEnabled(Context ctx, SharedPreferences prefs) {
if(INSTANCE != null)
return INSTANCE.mFirewallEnabled;
return Prefs.isFirewallEnabled(ctx, prefs);
}
/* The following methods are called from native code */
public String getVpnIPv4() {
@ -1140,7 +1133,7 @@ public class CaptureService extends VpnService implements Runnable {
}
public void reloadBlocklist() {
if(!mBilling.canUseFirewall())
if(!mBilling.isFirewallVisible())
return;
Log.d(TAG, "reloading firewall blocklist");

View File

@ -116,7 +116,7 @@ public class EditFilterActivity extends BaseActivity {
if(!Prefs.isMalwareDetectionEnabled(this, prefs))
mOnlyBlacklisted.setVisibility(View.GONE);
if(!billing.canUseFirewall())
if(!billing.isFirewallVisible())
mOnlyBlocked.setVisibility(View.GONE);
ConnectionsRegister reg = CaptureService.getConnsRegister();

View File

@ -108,8 +108,8 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
public static final String GITHUB_PROJECT_URL = "https://github.com/emanuele-f/PCAPdroid";
public static final String DOCS_URL = "https://emanuele-f.github.io/PCAPdroid";
public static final String DONATE_URL = "https://emanuele-f.github.io/PCAPdroid/donate";
public static final String MALWARE_DETECTION_DOCS_URL = DOCS_URL + "/paid_features#51-malware-detection";
public static final String FIREWALL_DOCS_URL = DOCS_URL + "/paid_features#52-firewall";
public static final String FIREWALL_DOCS_URL = DOCS_URL + "/paid_features#51-firewall";
public static final String MALWARE_DETECTION_DOCS_URL = DOCS_URL + "/paid_features#52-malware-detection";
private final ActivityResultLauncher<Intent> pcapFileLauncher =
registerForActivityResult(new StartActivityForResult(), this::pcapFileResult);
@ -211,7 +211,7 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
Menu navMenu = mNavView.getMenu();
navMenu.findItem(R.id.open_root_log).setVisible(Prefs.isRootCaptureEnabled(mPrefs));
navMenu.findItem(R.id.malware_detection).setVisible(Prefs.isMalwareDetectionEnabled(this, mPrefs));
navMenu.findItem(R.id.firewall).setVisible(mIab.canUseFirewall());
navMenu.findItem(R.id.firewall).setVisible(mIab.isFirewallVisible());
}
private void setupNavigationDrawer() {

View File

@ -100,7 +100,7 @@ public class AppsStatsAdapter extends RecyclerView.Adapter<AppsStatsAdapter.View
mBlocklist = PCAPdroid.getInstance().getBlocklist();
mListener = null;
mStats = new ArrayList<>();
mFirewallAvailable = Billing.newInstance(context).canUseFirewall();
mFirewallAvailable = Billing.newInstance(context).isFirewallVisible();
setHasStableIds(true);
}

View File

@ -307,7 +307,7 @@ public class ConnectionsFragment extends Fragment implements ConnectionsListener
Context ctx = requireContext();
MenuItem item;
boolean firewallAvailable = Billing.newInstance(ctx).canUseFirewall();
boolean firewallAvailable = Billing.newInstance(ctx).isFirewallVisible();
boolean blockVisible = false;
boolean unblockVisible = false;
MatchList blocklist = PCAPdroid.getInstance().getBlocklist();

View File

@ -121,7 +121,7 @@ public class FirewallStatus extends Fragment {
mToggle = (SwitchCompat) menu.findItem(R.id.toggle_btn).getActionView();
mToggle.setOnCheckedChangeListener((buttonView, isChecked) -> {
if(isChecked == CaptureService.isFirewallEnabled(requireContext(), mPrefs))
if(isChecked == Prefs.isFirewallEnabled(requireContext(), mPrefs))
return; // not changed
Log.d(TAG, "Firwall is now " + (isChecked ? "enabled" : "disabled"));
@ -152,7 +152,7 @@ public class FirewallStatus extends Fragment {
Context ctx = requireContext();
ConnectionsRegister reg = CaptureService.getConnsRegister();
boolean is_running = CaptureService.isServiceActive();
boolean is_enabled = CaptureService.isFirewallEnabled(ctx, mPrefs);
boolean is_enabled = Prefs.isFirewallEnabled(ctx, mPrefs);
if(!is_running) {
mStatusIcon.setImageResource(R.drawable.ic_shield);

View File

@ -116,7 +116,7 @@ public class Prefs {
}
public static boolean isFirewallEnabled(Context ctx, SharedPreferences p) {
// NOTE: firewall can be disabled at runtime
return(Billing.newInstance(ctx).canUseFirewall()
return(Billing.newInstance(ctx).isFirewallVisible()
&& p.getBoolean(PREF_FIREWALL, true));
}
public static boolean startAtBoot(SharedPreferences p) { return(p.getBoolean(PREF_START_AT_BOOT, false)); }