mirror of https://github.com/M66B/NetGuard.git
Skip protect socket from Lollipop
This commit is contained in:
parent
d8cb7939b0
commit
c5d583d425
|
@ -193,7 +193,7 @@ public class ServiceSinkhole extends VpnService implements SharedPreferences.OnS
|
|||
private static final String ACTION_SCREEN_OFF_DELAYED = "eu.faircode.netguard.SCREEN_OFF_DELAYED";
|
||||
private static final String ACTION_WATCHDOG = "eu.faircode.netguard.WATCHDOG";
|
||||
|
||||
private native void jni_init();
|
||||
private native void jni_init(int sdk);
|
||||
|
||||
private native void jni_start(int tun, boolean fwd53, int rcode, int loglevel);
|
||||
|
||||
|
@ -1345,7 +1345,12 @@ public class ServiceSinkhole extends VpnService implements SharedPreferences.OnS
|
|||
} catch (PackageManager.NameNotFoundException ex) {
|
||||
Log.e(TAG, ex.toString() + "\n" + Log.getStackTraceString(ex));
|
||||
}
|
||||
else if (filter)
|
||||
else if (filter) {
|
||||
try {
|
||||
builder.addDisallowedApplication(getPackageName());
|
||||
} catch (PackageManager.NameNotFoundException ex) {
|
||||
Log.e(TAG, ex.toString() + "\n" + Log.getStackTraceString(ex));
|
||||
}
|
||||
for (Rule rule : listRule)
|
||||
if (!rule.apply || (!system && rule.system))
|
||||
try {
|
||||
|
@ -1354,6 +1359,7 @@ public class ServiceSinkhole extends VpnService implements SharedPreferences.OnS
|
|||
} catch (PackageManager.NameNotFoundException ex) {
|
||||
Log.e(TAG, ex.toString() + "\n" + Log.getStackTraceString(ex));
|
||||
}
|
||||
}
|
||||
|
||||
// Build configure intent
|
||||
Intent configure = new Intent(this, ActivityMain.class);
|
||||
|
@ -2164,7 +2170,7 @@ public class ServiceSinkhole extends VpnService implements SharedPreferences.OnS
|
|||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
|
||||
// Native init
|
||||
jni_init();
|
||||
jni_init(Build.VERSION.SDK_INT);
|
||||
boolean pcap = prefs.getBoolean("pcap", false);
|
||||
setPcap(pcap, this);
|
||||
|
||||
|
|
|
@ -101,12 +101,13 @@ void JNI_OnUnload(JavaVM *vm, void *reserved) {
|
|||
// JNI ServiceSinkhole
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_eu_faircode_netguard_ServiceSinkhole_jni_1init(JNIEnv *env, jobject instance) {
|
||||
Java_eu_faircode_netguard_ServiceSinkhole_jni_1init(JNIEnv *env, jobject instance, jint sdk) {
|
||||
loglevel = ANDROID_LOG_WARN;
|
||||
|
||||
struct arguments args;
|
||||
args.env = env;
|
||||
args.instance = instance;
|
||||
args.sdk = sdk;
|
||||
init(&args);
|
||||
|
||||
*socks5_addr = 0;
|
||||
|
@ -417,9 +418,21 @@ void report_error(const struct arguments *args, jint error, const char *fmt, ...
|
|||
static jmethodID midProtect = NULL;
|
||||
|
||||
int protect_socket(const struct arguments *args, int socket) {
|
||||
if (args->sdk >= 21)
|
||||
return 0;
|
||||
|
||||
jclass cls = (*args->env)->GetObjectClass(args->env, args->instance);
|
||||
if (cls == NULL) {
|
||||
log_android(ANDROID_LOG_ERROR, "protect socket failed to get class");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (midProtect == NULL)
|
||||
midProtect = jniGetMethodID(args->env, cls, "protect", "(I)Z");
|
||||
if (midProtect == NULL) {
|
||||
log_android(ANDROID_LOG_ERROR, "protect socket failed to get method");
|
||||
return -1;
|
||||
}
|
||||
|
||||
jboolean isProtected = (*args->env)->CallBooleanMethod(
|
||||
args->env, args->instance, midProtect, socket);
|
||||
|
|
|
@ -67,6 +67,7 @@
|
|||
struct arguments {
|
||||
JNIEnv *env;
|
||||
jobject instance;
|
||||
int sdk;
|
||||
int tun;
|
||||
jboolean fwd53;
|
||||
jint rcode;
|
||||
|
|
Loading…
Reference in New Issue