From 66cfaf459142f4e0d7427a7db5db53b37d750149 Mon Sep 17 00:00:00 2001 From: Arne Schwabe Date: Fri, 1 Oct 2021 19:55:17 +0200 Subject: Remove Ice Cream Sandwich support from ics-openvpn (closes #1337) Ice cream sandwich was the first Android version to support the VPNService API, which also gave the project its name as it was an Android port to ICS. Now that the NDK does no longer support API 14 and 15, this project needs to say farewell to Ice cream sandwich. --- main/build.gradle.kts | 10 ++++++---- main/src/main/cpp/CMakeLists.txt | 16 ++-------------- .../java/de/blinkt/openvpn/core/OpenVPNThread.java | 19 ------------------- .../de/blinkt/openvpn/core/VPNLaunchHelper.java | 21 +++------------------ 4 files changed, 11 insertions(+), 55 deletions(-) diff --git a/main/build.gradle.kts b/main/build.gradle.kts index a8adcdee..59bc8215 100644 --- a/main/build.gradle.kts +++ b/main/build.gradle.kts @@ -13,13 +13,13 @@ plugins { } android { - compileSdkVersion(31) + compileSdk = 31 - ndkVersion = "23.0.7599858" + //ndkVersion = "23.0.7599858" defaultConfig { - minSdkVersion(14) - targetSdkVersion(31) + minSdk = 16 + targetSdk = 31 versionCode = 178 versionName = "0.7.24" @@ -143,6 +143,8 @@ fun registerGenTask(variantName: String, variantDirName: String): File { "-Isrc/main/cpp/openvpn3/client", "-Isrc/main/cpp/openvpn3/", "-o", "${genDir}/ovpncli_wrap.cxx", "-oh", "${genDir}/ovpncli_wrap.h", "src/main/cpp/openvpn3/javacli/ovpncli.i")) + inputs.files( "src/main/cpp/openvpn3/javacli/ovpncli.i") + outputs.dir( genDir) } return baseDir diff --git a/main/src/main/cpp/CMakeLists.txt b/main/src/main/cpp/CMakeLists.txt index 7034c0c0..a4689802 100644 --- a/main/src/main/cpp/CMakeLists.txt +++ b/main/src/main/cpp/CMakeLists.txt @@ -104,7 +104,6 @@ target_compile_definitions(ovpnutil PRIVATE -DTARGET_ARCH_ABI=\"${ANDROID_ABI}\" ) target_link_libraries(ovpnutil log) - if (NOT ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} MATCHES "build/intermediates/cmake/.*skeleton.*/") add_library(osslspeedtest SHARED ovpnutil/sslspeed.c) target_link_libraries(osslspeedtest log crypto ssl) @@ -243,23 +242,12 @@ add_executable(pie_openvpn.${ANDROID_ABI} minivpn/minivpn.c) target_compile_options(pie_openvpn.${ANDROID_ABI} PRIVATE -fPIE) target_link_libraries(pie_openvpn.${ANDROID_ABI} PRIVATE openvpn -fPIE -pie) -add_executable(nopie_openvpn.${ANDROID_ABI} minivpn/minivpn.c) -target_link_libraries(nopie_openvpn.${ANDROID_ABI} PRIVATE openvpn) - # Hack to copy OpenVPN binaries to assets directory SET(OVPN_ASSET_DIR ${CMAKE_SOURCE_DIR}/../../../build/ovpnassets) add_custom_target(makeassetdir ALL COMMAND ${CMAKE_COMMAND} -E make_directory ${OVPN_ASSET_DIR}) - -add_custom_command(TARGET nopie_openvpn.${ANDROID_ABI} POST_BUILD - COMMAND - ${CMAKE_COMMAND} -E copy - $ - ${OVPN_ASSET_DIR} - ) - add_custom_command(TARGET pie_openvpn.${ANDROID_ABI} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy @@ -268,6 +256,6 @@ add_custom_command(TARGET pie_openvpn.${ANDROID_ABI} POST_BUILD ) # Hack that these targets are really executed -add_dependencies(ovpnutil pie_openvpn.${ANDROID_ABI} nopie_openvpn.${ANDROID_ABI}) +add_dependencies(ovpnutil pie_openvpn.${ANDROID_ABI}) add_dependencies(pie_openvpn.${ANDROID_ABI} makeassetdir) -add_dependencies(nopie_openvpn.${ANDROID_ABI} makeassetdir) + diff --git a/main/src/main/java/de/blinkt/openvpn/core/OpenVPNThread.java b/main/src/main/java/de/blinkt/openvpn/core/OpenVPNThread.java index c43b3ea6..bb3b804d 100644 --- a/main/src/main/java/de/blinkt/openvpn/core/OpenVPNThread.java +++ b/main/src/main/java/de/blinkt/openvpn/core/OpenVPNThread.java @@ -27,8 +27,6 @@ import de.blinkt.openvpn.R; public class OpenVPNThread implements Runnable { private static final String DUMP_PATH_STRING = "Dump path: "; @SuppressLint("SdCardPath") - private static final String BROKEN_PIE_SUPPORT = "/data/data/de.blinkt.openvpn/cache/pievpn"; - private final static String BROKEN_PIE_SUPPORT2 = "syntax error"; private static final String TAG = "OpenVPN"; // 1380308330.240114 18000002 Send to HTTP proxy: 'X-Online-Host: bla.blabla.com' private static final Pattern LOG_PATTERN = Pattern.compile("(\\d+).(\\d+) ([0-9a-f])+ (.*)"); @@ -42,7 +40,6 @@ public class OpenVPNThread implements Runnable { private String mTmpDir; private OpenVPNService mService; private String mDumpPath; - private boolean mBrokenPie = false; private boolean mNoProcessExitStatus = false; public OpenVPNThread(OpenVPNService service, String[] argv, String nativelibdir, String tmpdir) { @@ -82,19 +79,6 @@ public class OpenVPNThread implements Runnable { } if (exitvalue != 0) { VpnStatus.logError("Process exited with exit value " + exitvalue); - if (mBrokenPie) { - /* This will probably fail since the NoPIE binary is probably not written */ - String[] noPieArgv = VPNLaunchHelper.replacePieWithNoPie(mArgv); - - // We are already noPIE, nothing to gain - if (!noPieArgv.equals(mArgv)) { - mArgv = noPieArgv; - VpnStatus.logInfo("PIE Version could not be executed. Trying no PIE version"); - run(); - } - - } - } if (!mNoProcessExitStatus) @@ -150,9 +134,6 @@ public class OpenVPNThread implements Runnable { if (logline.startsWith(DUMP_PATH_STRING)) mDumpPath = logline.substring(DUMP_PATH_STRING.length()); - if (logline.startsWith(BROKEN_PIE_SUPPORT) || logline.contains(BROKEN_PIE_SUPPORT2)) - mBrokenPie = true; - Matcher m = LOG_PATTERN.matcher(logline); int logerror = 0; if (m.matches()) { diff --git a/main/src/main/java/de/blinkt/openvpn/core/VPNLaunchHelper.java b/main/src/main/java/de/blinkt/openvpn/core/VPNLaunchHelper.java index 52ec55d7..7f9508b1 100644 --- a/main/src/main/java/de/blinkt/openvpn/core/VPNLaunchHelper.java +++ b/main/src/main/java/de/blinkt/openvpn/core/VPNLaunchHelper.java @@ -21,11 +21,9 @@ import de.blinkt.openvpn.R; import de.blinkt.openvpn.VpnProfile; public class VPNLaunchHelper { - private static final String MININONPIEVPN = "nopie_openvpn"; private static final String MINIPIEVPN = "pie_openvpn"; private static final String OVPNCONFIGFILE = "android.conf"; - private static String writeMiniVPN(Context context) { String nativeAPI = NativeUtils.getNativeAPI(); /* Q does not allow executing binaries written in temp directory anymore */ @@ -45,7 +43,7 @@ public class VPNLaunchHelper { for (String abi : abis) { - File vpnExecutable = new File(context.getCacheDir(), "c_" + getMiniVPNExecutableName() + "." + abi); + File vpnExecutable = new File(context.getCacheDir(), "c_" + MINIPIEVPN + "." + abi); if ((vpnExecutable.exists() && vpnExecutable.canExecute()) || writeMiniVPNBinary(context, abi, vpnExecutable)) { return vpnExecutable.getPath(); } @@ -59,19 +57,6 @@ public class VPNLaunchHelper { return Build.SUPPORTED_ABIS; } - private static String getMiniVPNExecutableName() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) - return MINIPIEVPN; - else - return MININONPIEVPN; - } - - - public static String[] replacePieWithNoPie(String[] mArgv) { - mArgv[0] = mArgv[0].replace(MINIPIEVPN, MININONPIEVPN); - return mArgv; - } - static String[] buildOpenvpnArgv(Context c) { Vector args = new Vector<>(); @@ -93,9 +78,9 @@ public class VPNLaunchHelper { InputStream mvpn; try { - mvpn = context.getAssets().open(getMiniVPNExecutableName() + "." + abi); + mvpn = context.getAssets().open(MINIPIEVPN + "." + abi); } catch (IOException errabi) { - VpnStatus.logInfo("Failed getting assets for archicture " + abi); + VpnStatus.logInfo("Failed getting assets for architecture " + abi); return false; } -- cgit v1.2.3