/* * Class: com_choury_sproxy_SproxyVpnService * Method: start * Signature: (ILjava/lang/String;)V */ JNIEXPORT void JNICALL Java_com_choury_sproxy_SproxyVpnService_start (JNIEnv *jnienv, jobject obj, jint sockfd, jstring server, jstring secret) { jnienv->GetJavaVM(&jnijvm); jniobj = jnienv->NewGlobalRef(obj); std::string config_file = getExternalFilesDir() + "/sproxy.conf"; if(access(config_file.c_str(), R_OK) == 0){ LOG("read config from %s.\n", config_file.c_str()); parseConfigFile(config_file.c_str()); } LOG("native SproxyVpnService.start %d.\n", sockfd); const char *server_str = jnienv->GetStringUTFChars(server, nullptr); const char *secret_str = jnienv->GetStringUTFChars(secret, nullptr); opt.ignore_cert_error = 1; setproxy(server_str); Base64Encode(secret_str, strlen(secret_str), opt.rewrite_auth); jnienv->ReleaseStringUTFChars(server, server_str); jnienv->ReleaseStringUTFChars(secret, secret_str); jnienv->DeleteLocalRef(server); jnienv->DeleteLocalRef(secret); jclass cls = jnienv->GetObjectClass(jniobj); jmethodID mid = jnienv->GetMethodID(cls, "getMyVersion", "()Ljava/lang/String;"); jstring jversion = (jstring) jnienv->CallObjectMethod(jniobj, mid); const char *jversion_str = jnienv->GetStringUTFChars(jversion, nullptr); strcpy(version, jversion_str); jnienv->ReleaseStringUTFChars(jversion, jversion_str); jnienv->DeleteLocalRef(jversion); jnienv->DeleteLocalRef(cls); vpn_start(sockfd); extenalCacheDir.clear(); extenalFilesDir.clear(); jnienv->DeleteGlobalRef(jniobj); jniobj = nullptr; }
copystring(buf, proxy, size); } static void setspeedlimit(int limit) { SDL_Mutex_Locker m(varlock); speedlimit = limit*1024; } static void getspeedlimit(int& limit) { SDL_Mutex_Locker m(varlock); limit = speedlimit; } MODSVARFP(httpproxy, "", setproxy(httpproxy)); MODVARFP(httpspeedlimit, 0, 0, 0x1FFFFF, setspeedlimit(httpspeedlimit)); struct http_t { SDL_mutex *requestmutex; bool processed; bool wantuninstall; vector<char> data; SDL_Thread *thread; CURL *curl; CURLcode requestresult; long responsecode; bool requestok; uint requestid; int speedlimit;