Add mitm addon version check

This commit is contained in:
emanuele-f 2022-02-16 23:51:04 +01:00
parent 1c0ea6e696
commit 0ea7574b41
3 changed files with 36 additions and 7 deletions

View File

@ -24,6 +24,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.content.SharedPreferences;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
@ -47,6 +48,8 @@ import java.lang.ref.WeakReference;
public class MitmAddon {
/* API */
public static final String PACKAGE_NAME = "com.pcapdroid.mitm";
public static final String PACKAGE_VERSION_NAME = "v0.2";
public static final int PACKAGE_VERSION_CODE = 2;
public static final String MITM_PERMISSION = "com.pcapdroid.permission.MITM";
public static final String MITM_SERVICE = PACKAGE_NAME + ".MitmService";
@ -82,15 +85,24 @@ public class MitmAddon {
}
};
public static boolean isInstalled(Context ctx) {
public static int getInstalledVersion(Context ctx) {
try {
ctx.getPackageManager().getPackageInfo(PACKAGE_NAME, 0);
return true;
PackageInfo pInfo = ctx.getPackageManager().getPackageInfo(PACKAGE_NAME, 0);
return pInfo.versionCode;
} catch (PackageManager.NameNotFoundException e) {
return false;
return -1;
}
}
public static boolean isInstalled(Context ctx) {
return getInstalledVersion(ctx) == PACKAGE_VERSION_CODE;
}
public static String getGithubReleaseUrl() {
return "https://github.com/emanuele-f/PCAPdroid-mitm/releases/download/" +
PACKAGE_VERSION_NAME + "/PCAPdroid-mitm_" + PACKAGE_VERSION_NAME +".apk";
}
public static boolean hasMitmPermission(Context ctx) {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
return ctx.checkSelfPermission(MitmAddon.MITM_PERMISSION) == PackageManager.PERMISSION_GRANTED;

View File

@ -56,11 +56,25 @@ public class InstallAddon extends StepFragment {
}
private void installAddon() {
mStepLabel.setText(R.string.install_mitm_addon);
mStepButton.setText(R.string.install_action);
int installed_ver = MitmAddon.getInstalledVersion(requireContext());
if(installed_ver < 0) {
mStepLabel.setText(R.string.install_mitm_addon);
mStepButton.setText(R.string.install_action);
} else if(installed_ver < MitmAddon.PACKAGE_VERSION_CODE) {
mStepLabel.setText(R.string.mitm_addon_new_version);
mStepButton.setText(R.string.upgrade_action);
} else {
mStepLabel.setText(R.string.mitm_addon_bad_version);
mStepIcon.setColorFilter(mDangerColor);
mStepButton.setText(R.string.install_action);
mStepButton.setEnabled(false);
return;
}
mStepButton.setOnClickListener(v -> {
Intent browserIntent = new Intent(Intent.ACTION_VIEW,
Uri.parse("https://github.com/emanuele-f/PCAPdroid-mitm/releases/download/v0.1/PCAPdroid-mitm_v0.1.apk"));
Uri.parse(MitmAddon.getGithubReleaseUrl()));
Utils.startActivity(requireContext(), browserIntent);
});
}

View File

@ -282,4 +282,7 @@
<string name="cert_installed_correctly">The CA certificate is installed</string>
<string name="cert_reinstall_required">The CA certificate is not installed, run the mitm setup wizard</string>
<string name="done">Done</string>
<string name="mitm_addon_bad_version">Bad PCAPdroid mitm addon version. Uninstall it and retry</string>
<string name="mitm_addon_new_version">The PCAPdroid plugin must be upgraded</string>
<string name="upgrade_action">Upgrade</string>
</resources>