Bug Fixes

Bug Fixes
master
msmannan00 2021-07-10 23:31:47 +05:00
parent 375f07fb87
commit 836183291c
10 changed files with 120 additions and 93 deletions

View File

@ -19,6 +19,7 @@ import java.lang.ref.WeakReference;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import com.darkweb.genesissearchengine.appManager.activityContextManager;
import com.darkweb.genesissearchengine.appManager.homeManager.homeController.homeController; import com.darkweb.genesissearchengine.appManager.homeManager.homeController.homeController;
import com.darkweb.genesissearchengine.constants.constants; import com.darkweb.genesissearchengine.constants.constants;
import com.darkweb.genesissearchengine.constants.enums; import com.darkweb.genesissearchengine.constants.enums;
@ -26,6 +27,7 @@ import com.darkweb.genesissearchengine.constants.keys;
import com.darkweb.genesissearchengine.constants.status; import com.darkweb.genesissearchengine.constants.status;
import com.darkweb.genesissearchengine.constants.strings; import com.darkweb.genesissearchengine.constants.strings;
import com.darkweb.genesissearchengine.eventObserver; import com.darkweb.genesissearchengine.eventObserver;
import com.darkweb.genesissearchengine.helperManager.helperMethod;
import com.darkweb.genesissearchengine.pluginManager.pluginController; import com.darkweb.genesissearchengine.pluginManager.pluginController;
import com.darkweb.genesissearchengine.pluginManager.pluginEnums; import com.darkweb.genesissearchengine.pluginManager.pluginEnums;
@ -85,15 +87,19 @@ public class orbotManager
Intent mServiceIntent = new Intent(mAppContext.get().getApplicationContext(), OrbotService.class); Intent mServiceIntent = new Intent(mAppContext.get().getApplicationContext(), OrbotService.class);
mServiceIntent.setAction(ACTION_START); mServiceIntent.setAction(ACTION_START);
mAppContext.get().bindService(mServiceIntent, mServerConn, Context.BIND_AUTO_CREATE); helperMethod.onDelayHandler(activityContextManager.getInstance().getHomeController(), 3000, () -> {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
mAppContext.get().stopService(mServiceIntent); mAppContext.get().stopService(mServiceIntent);
mAppContext.get().startForegroundService(mServiceIntent); mAppContext.get().startForegroundService(mServiceIntent);
} }
else else
{ {
mAppContext.get().startService(mServiceIntent); mAppContext.get().stopService(mServiceIntent);
} mAppContext.get().startService(mServiceIntent);
}
mAppContext.get().bindService(mServiceIntent, mServerConn, Context.BIND_AUTO_CREATE);
return null;
});
} }

BIN
orbotmanager.rar Normal file

Binary file not shown.

View File

@ -1,10 +1,3 @@
/* Copyright (c) 2009-2011, Nathan Freitas, Orbot / The Guardian Project - https://guardianproject.info/apps/orbot */
/* See LICENSE for licensing information */
/*
* Code for iptables binary management taken from DroidWall GPLv3
* Copyright (C) 2009-2010 Rodrigo Zechin Rosauro
*/
package org.torproject.android.service; package org.torproject.android.service;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
@ -30,6 +23,7 @@ import android.net.ConnectivityManager;
import android.net.NetworkInfo; import android.net.NetworkInfo;
import android.net.Uri; import android.net.Uri;
import android.net.VpnService; import android.net.VpnService;
import android.os.BatteryManager;
import android.os.Build; import android.os.Build;
import android.os.Handler; import android.os.Handler;
import android.os.HandlerThread; import android.os.HandlerThread;
@ -258,7 +252,7 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
if (conn != null && orbotLocalConstants.mIsTorInitialized) { if (conn != null && orbotLocalConstants.mIsTorInitialized) {
Intent intentRefresh = new Intent(CMD_NEWNYM); Intent intentRefresh = new Intent(CMD_NEWNYM);
PendingIntent pendingIntentNewNym = PendingIntent.getBroadcast(this, 0, intentRefresh, PendingIntent.FLAG_UPDATE_CURRENT); PendingIntent pendingIntentNewNym = PendingIntent.getBroadcast(this, 0, intentRefresh, PendingIntent.FLAG_UPDATE_CURRENT);
mNotifyBuilder.addAction(R.drawable.ic_stat_starting_tor_logo, getString(R.string.menu_new_identity), pendingIntentNewNym); mNotifyBuilder.addAction(R.mipmap.ic_stat_tor_logo, getString(R.string.menu_new_identity), pendingIntentNewNym);
Intent intentSetting = new Intent(CMD_SETTING); Intent intentSetting = new Intent(CMD_SETTING);
PendingIntent pendingIntentSetting = PendingIntent.getBroadcast(this, 0, intentSetting, PendingIntent.FLAG_UPDATE_CURRENT); PendingIntent pendingIntentSetting = PendingIntent.getBroadcast(this, 0, intentSetting, PendingIntent.FLAG_UPDATE_CURRENT);
@ -364,16 +358,20 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
private void stopTorAsync() { private void stopTorAsync() {
Log.i("OrbotService", "stopTor"); debug("stopTor");
try { try {
sendCallbackStatus(STATUS_STOPPING); sendCallbackStatus(STATUS_STOPPING);
sendCallbackLogMessage(getString(R.string.status_shutting_down)); sendCallbackLogMessage(getString(R.string.status_shutting_down));
if (useIPtObfsMeekProxy()) if (Prefs.bridgesEnabled()) {
IPtProxy.stopObfs4Proxy(); if (useIPtObfsMeekProxy())
IPtProxy.stopObfs4Proxy();
if (useIPtSnowflakeProxy()) else if (useIPtSnowflakeProxy())
IPtProxy.stopSnowflake(); IPtProxy.stopSnowflake();
}
else if (Prefs.beSnowflakeProxy())
disableSnowflakeProxy();
stopTor(); stopTor();
@ -389,6 +387,11 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
sendCallbackStatus(STATUS_OFF); sendCallbackStatus(STATUS_OFF);
} }
private void disableSnowflakeProxy () {
IPtProxy.stopSnowflakeProxy();
logNotice("Snowflake Proxy mode DISABLED");
}
private void stopTorOnError(String message) { private void stopTorOnError(String message) {
stopTorAsync(); stopTorAsync();
showToolbarNotification( showToolbarNotification(
@ -411,19 +414,14 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
public static void loadCdnFronts (Context context) { public static void loadCdnFronts (Context context) {
if (mFronts == null) { if (mFronts == null) {
mFronts = new HashMap<>(); mFronts = new HashMap<>();
try { try {
BufferedReader reader = new BufferedReader(new InputStreamReader(context.getAssets().open("fronts"))); BufferedReader reader = new BufferedReader(new InputStreamReader(context.getAssets().open("fronts")));
String line; String line;
while ((line = reader.readLine())!=null) { while ((line = reader.readLine())!=null) {
String[] front = line.split(" "); String[] front = line.split(" ");
//add some code to test the connection here
mFronts.put(front[0],front[1]); mFronts.put(front[0],front[1]);
} }
} catch (IOException e) { } catch (IOException e) {
Log.i("sad","asd");
e.printStackTrace(); e.printStackTrace();
} }
} }
@ -433,16 +431,11 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
return mFronts.get(service); return mFronts.get(service);
} }
private void startSnowflakeClient() { private void startSnowflakeClient() {
//this is using the current, default Tor snowflake infrastructure
String target = getCdnFront("snowflake-target"); String target = getCdnFront("snowflake-target");
String front = getCdnFront("snowflake-front"); String front = getCdnFront("snowflake-front");
String stunServer = getCdnFront("snowflake-stun"); String stunServer = getCdnFront("snowflake-stun");
IPtProxy.startSnowflake(stunServer, target, front,null, true, false, true, 3);
IPtProxy.startSnowflake(stunServer, target, front,
null, true, false, true, 3);
} }
/* /*
@ -843,7 +836,7 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
startTorService(); startTorService();
if (Prefs.hostOnionServicesEnabled()) { if (Prefs.hostOnionServicesEnabled()) {
try { try {
updateLegacyV2OnionNames(); updateLegacyV2OnionNames();
} catch (SecurityException se) { } catch (SecurityException se) {
@ -943,8 +936,8 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
private synchronized void startTorService() throws Exception { private synchronized void startTorService() throws Exception {
updateTorConfigCustom(TorService.getDefaultsTorrc(this), updateTorConfigCustom(TorService.getDefaultsTorrc(this),
"DNSPort 0\n" + "DNSPort 0\n" +
"TransPort 0\n" + "TransPort 0\n" +
"DisableNetwork 1\n"); "DisableNetwork 1\n");
File fileTorrcCustom = updateTorrcCustomFile(); File fileTorrcCustom = updateTorrcCustomFile();
if ((!fileTorrcCustom.exists()) || (!fileTorrcCustom.canRead())) if ((!fileTorrcCustom.exists()) || (!fileTorrcCustom.canRead()))
@ -982,8 +975,8 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
events.add(TorControlCommands.EVENT_INFO_MSG); events.add(TorControlCommands.EVENT_INFO_MSG);
} }
conn.setEvents(events); conn.setEvents(events);
initControlConnection();
logNotice("SUCCESS added control port event handler"); logNotice("SUCCESS added control port event handler");
} catch (InterruptedException | IOException e) { } catch (InterruptedException | IOException e) {
e.printStackTrace(); e.printStackTrace();
@ -1225,7 +1218,6 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
int e=0; int e=0;
private void sendCallbackLogMessage(String logMessage) private void sendCallbackLogMessage(String logMessage)
{ {
if(logMessage.contains("Bootstrapped 100%")){ if(logMessage.contains("Bootstrapped 100%")){
orbotLocalConstants.mIsTorInitialized = true; orbotLocalConstants.mIsTorInitialized = true;
} }
@ -1827,14 +1819,24 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
if (!TextUtils.isEmpty(action)) { if (!TextUtils.isEmpty(action)) {
if (action.equals(ACTION_START) || action.equals(ACTION_START_ON_BOOT)) { if (action.equals(ACTION_START) || action.equals(ACTION_START_ON_BOOT)) {
if (useIPtObfsMeekProxy()) if (Prefs.bridgesEnabled()) {
IPtProxy.startObfs4Proxy("DEBUG", true, false); if (useIPtObfsMeekProxy())
IPtProxy.startObfs4Proxy("DEBUG", false, false);
else if (useIPtSnowflakeProxy())
startSnowflakeClient();
} else if (Prefs.beSnowflakeProxy()) {
if (useIPtSnowflakeProxy()) if (Prefs.limitSnowflakeProxying())
startSnowflakeClient(); {
if (isChargingAndWifi(OrbotService.this))
{
enableSnowflakeProxy();
}
if (Prefs.beSnowflakeProxy()) }
runSnowflakeProxy(); else
enableSnowflakeProxy();
}
startTor(); startTor();
replyWithStatus(mIntent); replyWithStatus(mIntent);
@ -1854,7 +1856,8 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
if (mPortSOCKS != -1 && mPortHTTP != -1) if (mPortSOCKS != -1 && mPortHTTP != -1)
sendCallbackPorts(mPortSOCKS, mPortHTTP, mPortDns, mPortTrans); sendCallbackPorts(mPortSOCKS, mPortHTTP, mPortDns, mPortTrans);
} }
} else if (action.equals(ACTION_STOP)) {
stopTorAsync();
} else if (action.equals(ACTION_START_VPN)) { } else if (action.equals(ACTION_START_VPN)) {
if (mVpnManager != null && (!mVpnManager.isStarted())) { if (mVpnManager != null && (!mVpnManager.isStarted())) {
//start VPN here //start VPN here
@ -1875,14 +1878,9 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
replyWithStatus(mIntent); replyWithStatus(mIntent);
} else if (action.equals(TorControlCommands.SIGNAL_RELOAD)) { } else if (action.equals(TorControlCommands.SIGNAL_RELOAD)) {
requestTorRereadConfig(); requestTorRereadConfig();
} } else if (action.equals(TorControlCommands.SIGNAL_NEWNYM)) {
else if (action.equals(CMD_NEWNYM)) { newIdentity();
newIdentity(); } else if (action.equals(CMD_ACTIVE)) {
}
else if (action.equals(CMD_SETTING)) {
onSettingRegister();
}
else if (action.equals(CMD_ACTIVE)) {
sendSignalActive(); sendSignalActive();
} else if (action.equals(CMD_SET_EXIT)) { } else if (action.equals(CMD_SET_EXIT)) {
setExitNode(mIntent.getStringExtra("exit")); setExitNode(mIntent.getStringExtra("exit"));
@ -1893,6 +1891,19 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
} }
} }
private void enableSnowflakeProxy () {
int capacity = 1;
String broker = "https://snowflake-broker.bamsoftware.com/";
String relay = "wss://snowflake.bamsoftware.com/";
String stun = "stun:stun.stunprotocol.org:3478";
String logFile = null;
boolean keepLocalAddresses = true;
boolean unsafeLogging = false;
IPtProxy.startSnowflakeProxy(capacity, broker, relay, stun, logFile, keepLocalAddresses, unsafeLogging);
logNotice("Snowflake Proxy mode ENABLED");
}
public void disableNotification(){ public void disableNotification(){
if(mNotificationManager!=null){ if(mNotificationManager!=null){
mNotificationManager.cancel(NOTIFY_ID); mNotificationManager.cancel(NOTIFY_ID);
@ -1925,6 +1936,20 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
} }
} }
public static boolean isChargingAndWifi(Context context) {
Intent intent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
int plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
boolean isCharging = plugged == BatteryManager.BATTERY_PLUGGED_AC || plugged == BatteryManager.BATTERY_PLUGGED_USB || plugged == BatteryManager.BATTERY_PLUGGED_WIRELESS;
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
boolean isUnmetered = cm.getActiveNetworkInfo() != null
&& cm.getActiveNetworkInfo().isConnected()
&& (!cm.isActiveNetworkMetered());
return isCharging && isUnmetered;
}
private class ActionBroadcastReceiver extends BroadcastReceiver { private class ActionBroadcastReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
switch (intent.getAction()) { switch (intent.getAction()) {

View File

@ -6,7 +6,6 @@ import net.freehaven.tor.control.EventHandler;
import org.torproject.android.service.util.ExternalIPFetcher; import org.torproject.android.service.util.ExternalIPFetcher;
import org.torproject.android.service.util.Prefs; import org.torproject.android.service.util.Prefs;
import org.torproject.android.service.wrapper.orbotLocalConstants;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@ -86,7 +85,7 @@ public class TorEventHandler implements EventHandler, TorServiceConstants {
int iconId = R.drawable.ic_stat_starting_tor_logo; int iconId = R.drawable.ic_stat_starting_tor_logo;
if (read > 0 || written > 0 || OrbotService.getServiceObject().getConnectivity()) if (read > 0 || written > 0)
iconId = R.mipmap.ic_stat_tor_logo; iconId = R.mipmap.ic_stat_tor_logo;
String sb = OrbotService.formatBandwidthCount(mService, read) + " \u2193" + " / " + String sb = OrbotService.formatBandwidthCount(mService, read) + " \u2193" + " / " +
@ -110,9 +109,8 @@ public class TorEventHandler implements EventHandler, TorServiceConstants {
public void circuitStatus(String status, String circID, String path) { public void circuitStatus(String status, String circID, String path) {
/* once the first circuit is complete, then announce that Orbot is on*/ /* once the first circuit is complete, then announce that Orbot is on*/
if (mService.getCurrentStatus() == STATUS_STARTING && TextUtils.equals(status, "BUILT")){ if (mService.getCurrentStatus() == STATUS_STARTING && TextUtils.equals(status, "BUILT"))
mService.sendCallbackStatus(STATUS_ON); mService.sendCallbackStatus(STATUS_ON);
}
if (Prefs.useDebugLogging()) { if (Prefs.useDebugLogging()) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();

View File

@ -4,7 +4,6 @@ import org.json.JSONArray;
import org.json.JSONObject; import org.json.JSONObject;
import org.torproject.android.service.OrbotService; import org.torproject.android.service.OrbotService;
import org.torproject.android.service.TorEventHandler; import org.torproject.android.service.TorEventHandler;
import org.torproject.android.service.wrapper.orbotLocalConstants;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.InputStream; import java.io.InputStream;
@ -19,7 +18,7 @@ public class ExternalIPFetcher implements Runnable {
private final static String ONIONOO_BASE_URL = "https://onionoo.torproject.org/details?fields=country_name,as_name,or_addresses&lookup="; private final static String ONIONOO_BASE_URL = "https://onionoo.torproject.org/details?fields=country_name,as_name,or_addresses&lookup=";
private OrbotService mService; private OrbotService mService;
private TorEventHandler.Node mNode; private TorEventHandler.Node mNode;
private int mLocalHttpProxyPort = orbotLocalConstants.mHTTPPort; private int mLocalHttpProxyPort = 8118;
public ExternalIPFetcher(OrbotService service, TorEventHandler.Node node, int localProxyPort) { public ExternalIPFetcher(OrbotService service, TorEventHandler.Node node, int localProxyPort) {
mService = service; mService = service;

View File

@ -2,8 +2,8 @@ package org.torproject.android.service.util;
import android.content.Context; import android.content.Context;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import org.torproject.android.service.OrbotConstants; import org.torproject.android.service.OrbotConstants;
import org.torproject.android.service.wrapper.orbotLocalConstants;
import java.util.Locale; import java.util.Locale;
@ -21,6 +21,10 @@ public class Prefs {
private final static String PREF_USE_VPN = "pref_vpn"; private final static String PREF_USE_VPN = "pref_vpn";
private final static String PREF_EXIT_NODES = "pref_exit_nodes"; private final static String PREF_EXIT_NODES = "pref_exit_nodes";
private final static String PREF_BE_A_SNOWFLAKE = "pref_be_a_snowflake"; private final static String PREF_BE_A_SNOWFLAKE = "pref_be_a_snowflake";
private final static String PREF_BE_A_SNOWFLAKE_LIMIT = "pref_be_a_snowflake_limit";
private final static String PREF_HOST_ONION_SERVICES = "pref_host_onionservices";
private static SharedPreferences prefs; private static SharedPreferences prefs;
@ -37,16 +41,20 @@ public class Prefs {
prefs.edit().putString(key, value).apply(); prefs.edit().putString(key, value).apply();
} }
public static boolean hostOnionServicesEnabled () {
return prefs.getBoolean(PREF_HOST_ONION_SERVICES, true);
}
public static void putHostOnionServicesEnabled(boolean value) {
putBoolean(PREF_HOST_ONION_SERVICES, value);
}
public static boolean bridgesEnabled() { public static boolean bridgesEnabled() {
//if phone is in Farsi, enable bridges by default //if phone is in Farsi, enable bridges by default
boolean bridgesEnabledDefault = Locale.getDefault().getLanguage().equals("fa"); boolean bridgesEnabledDefault = Locale.getDefault().getLanguage().equals("fa");
return prefs.getBoolean(PREF_BRIDGES_ENABLED, bridgesEnabledDefault); return prefs.getBoolean(PREF_BRIDGES_ENABLED, bridgesEnabledDefault);
} }
public static boolean hostOnionServicesEnabled(){
return false;
}
public static void putBridgesEnabled(boolean value) { public static void putBridgesEnabled(boolean value) {
putBoolean(PREF_BRIDGES_ENABLED, value); putBoolean(PREF_BRIDGES_ENABLED, value);
} }
@ -55,24 +63,6 @@ public class Prefs {
String defaultBridgeType = "obfs4"; String defaultBridgeType = "obfs4";
if (Locale.getDefault().getLanguage().equals("fa")) if (Locale.getDefault().getLanguage().equals("fa"))
defaultBridgeType = "meek"; //if Farsi, use meek as the default bridge type defaultBridgeType = "meek"; //if Farsi, use meek as the default bridge type
if(orbotLocalConstants.mIsManualBridge){
if(!orbotLocalConstants.mManualBridgeType.equals("")){
defaultBridgeType = orbotLocalConstants.mManualBridgeType;
putString(PREF_BRIDGES_LIST, defaultBridgeType);
return defaultBridgeType;
}
}else {
if(orbotLocalConstants.mBridges.equals("obfs4")){
defaultBridgeType = "obfs4";
putString(PREF_BRIDGES_LIST, defaultBridgeType);
return defaultBridgeType;
}else if(orbotLocalConstants.mBridges.equals("meek")){
defaultBridgeType = "meek";
putString(PREF_BRIDGES_LIST, defaultBridgeType);
return defaultBridgeType;
}
}
return prefs.getString(PREF_BRIDGES_LIST, defaultBridgeType); return prefs.getString(PREF_BRIDGES_LIST, defaultBridgeType);
} }
@ -92,6 +82,10 @@ public class Prefs {
putBoolean(PREF_BE_A_SNOWFLAKE,beSnowflakeProxy); putBoolean(PREF_BE_A_SNOWFLAKE,beSnowflakeProxy);
} }
public static boolean limitSnowflakeProxying () {
return prefs.getBoolean(PREF_BE_A_SNOWFLAKE_LIMIT,true);
}
public static void setDefaultLocale(String value) { public static void setDefaultLocale(String value) {
putString(PREF_DEFAULT_LOCALE, value); putString(PREF_DEFAULT_LOCALE, value);
} }
@ -101,7 +95,7 @@ public class Prefs {
} }
public static boolean useDebugLogging() { public static boolean useDebugLogging() {
return false;//prefs.getBoolean(PREF_ENABLE_LOGGING, false); return prefs.getBoolean(PREF_ENABLE_LOGGING, false);
} }
public static boolean persistNotifications() { public static boolean persistNotifications() {
@ -143,4 +137,4 @@ public class Prefs {
public static SharedPreferences getSharedPrefs(Context context) { public static SharedPreferences getSharedPrefs(Context context) {
return context.getSharedPreferences(OrbotConstants.PREF_TOR_SHARED_PREFS, Context.MODE_MULTI_PROCESS); return context.getSharedPreferences(OrbotConstants.PREF_TOR_SHARED_PREFS, Context.MODE_MULTI_PROCESS);
} }
} }

View File

@ -45,9 +45,11 @@ import java.io.BufferedReader;
import java.io.File; import java.io.File;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.FileReader; import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException; import java.io.IOException;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.io.PrintStream; import java.io.PrintStream;
import java.io.PrintWriter;
import java.net.InetAddress; import java.net.InetAddress;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.concurrent.TimeoutException; import java.util.concurrent.TimeoutException;
@ -55,6 +57,8 @@ import java.util.concurrent.TimeoutException;
import static org.torproject.android.service.TorServiceConstants.ACTION_START; import static org.torproject.android.service.TorServiceConstants.ACTION_START;
import static org.torproject.android.service.TorServiceConstants.ACTION_START_VPN; import static org.torproject.android.service.TorServiceConstants.ACTION_START_VPN;
import static org.torproject.android.service.TorServiceConstants.ACTION_STOP_VPN; import static org.torproject.android.service.TorServiceConstants.ACTION_STOP_VPN;
import static org.torproject.android.service.TorServiceConstants.TOR_DNS_PORT_DEFAULT;
import static org.torproject.android.service.TorServiceConstants.TOR_TRANSPROXY_PORT_DEFAULT;
public class OrbotVpnManager implements Handler.Callback { public class OrbotVpnManager implements Handler.Callback {
private static final String TAG = "OrbotVpnService"; private static final String TAG = "OrbotVpnService";
@ -83,7 +87,8 @@ public class OrbotVpnManager implements Handler.Callback {
} }
public static File makePdnsdConf(Context context, File fileDir, String torDnsHost, int torDnsPort, String pdnsdHost, int pdnsdPort) throws IOException { public static File makePdnsdConf(Context context, File fileDir, String torDnsHost, int torDnsPort, String pdnsdHost, int pdnsdPort) throws IOException {
String conf = String.format(context.getString(R.string.pdnsd_conf), torDnsHost, torDnsPort, fileDir.getCanonicalPath(), pdnsdHost, pdnsdPort); String conf = String.format(context.getString(R.string.pdnsd_conf),
torDnsHost, torDnsPort, fileDir.getAbsolutePath(), pdnsdHost, pdnsdPort);
Log.d(TAG, "pdsnd conf:" + conf); Log.d(TAG, "pdsnd conf:" + conf);
@ -93,9 +98,8 @@ public class OrbotVpnManager implements Handler.Callback {
fPid.delete(); fPid.delete();
} }
FileOutputStream fos = new FileOutputStream(fPid, false); PrintWriter ps = new PrintWriter(new FileWriter(fPid, false));
PrintStream ps = new PrintStream(fos); ps.write(conf);
ps.print(conf);
ps.close(); ps.close();
File cache = new File(fileDir, "pdnsd.cache"); File cache = new File(fileDir, "pdnsd.cache");
@ -140,8 +144,8 @@ public class OrbotVpnManager implements Handler.Callback {
} else if (action.equals(TorServiceConstants.LOCAL_ACTION_PORTS)) { } else if (action.equals(TorServiceConstants.LOCAL_ACTION_PORTS)) {
Log.d(TAG, "setting VPN ports"); Log.d(TAG, "setting VPN ports");
int torSocks = intent.getIntExtra(OrbotService.EXTRA_SOCKS_PROXY_PORT, -1); int torSocks = intent.getIntExtra(OrbotService.EXTRA_SOCKS_PROXY_PORT, TOR_TRANSPROXY_PORT_DEFAULT);
int torDns = intent.getIntExtra(OrbotService.EXTRA_DNS_PORT, -1); int torDns = intent.getIntExtra(OrbotService.EXTRA_DNS_PORT, TOR_DNS_PORT_DEFAULT);
//if running, we need to restart //if running, we need to restart
if ((torSocks != mTorSocks || torDns != mTorDns)) { if ((torSocks != mTorSocks || torDns != mTorDns)) {

View File

@ -50,7 +50,7 @@ public class Tun2Socks {
private static HashMap<Integer, String> mAppUidBlacklist = new HashMap<>(); private static HashMap<Integer, String> mAppUidBlacklist = new HashMap<>();
static { static {
//System.loadLibrary("tun2socks"); System.loadLibrary("tun2socks");
} }
public static void init() { public static void init() {

View File

@ -29,8 +29,8 @@ LOCAL_MODULE := pdnsd
LOCAL_SRC_FILES := $(PDNSD_SOURCES:$(LOCAL_PATH)/%=%) LOCAL_SRC_FILES := $(PDNSD_SOURCES:$(LOCAL_PATH)/%=%)
LOCAL_CFLAGS := -Wall -O2 -I$(LOCAL_PATH)/pdnsd -DHAVE_STPCPY LOCAL_CFLAGS := -Wall -O2 -I$(LOCAL_PATH)/pdnsd -DHAVE_STPCPY
include $(BUILD_EXECUTABLE) include $(BUILD_EXECUTABLE)
##include $(BUILD_SHARED_LIBRARY)
######################################################## ########################################################
## libancillary ## libancillary

View File

@ -0,0 +1 @@
libs