From 4d6c32a6a250d99cf66bb0fdce80741ff2710b89 Mon Sep 17 00:00:00 2001 From: Nathan Freitas Date: Tue, 15 Jul 2014 16:10:24 -0400 Subject: [PATCH] support dynamic SOCKS ip in polipo configuration --- res/raw/torpolipo.conf | 138 ------------------ .../android/service/TorService.java | 25 +++- 2 files changed, 24 insertions(+), 139 deletions(-) diff --git a/res/raw/torpolipo.conf b/res/raw/torpolipo.conf index 5707c032..feb9d5b7 100644 --- a/res/raw/torpolipo.conf +++ b/res/raw/torpolipo.conf @@ -1,159 +1,21 @@ -### Basic configuration -### ******************* - -# Uncomment one of these if you want to allow remote clients to -# connect: - -# proxyAddress = "::0" # both IPv4 and IPv6 -# proxyAddress = "0.0.0.0" # IPv4 only - proxyAddress = "127.0.0.1" proxyPort = 8118 - -# If you do that, you'll want to restrict the set of hosts allowed to -# connect: - -# allowedClients = "127.0.0.1, 134.157.168.57" -# allowedClients = "127.0.0.1, 134.157.168.0/24" - allowedClients = 127.0.0.1 allowedPorts = 1-65535 - -# Uncomment this if you want your Polipo to identify itself by -# something else than the host name: - proxyName = "localhost" - -# Uncomment this if there's only one user using this instance of Polipo: - cacheIsShared = false - -# Uncomment this if you want to use a parent proxy: - -# parentProxy = "squid.example.org:3128" - -# Uncomment this if you want to use a parent SOCKS proxy: - socksParentProxy = "localhost:9050" socksProxyType = socks5 - - -### Memory -### ****** - -# Uncomment this if you want Polipo to use a ridiculously small amount -# of memory (a hundred C-64 worth or so): - chunkHighMark = 819200 objectHighMark = 128 - -# Uncomment this if you've got plenty of memory: - -# chunkHighMark = 50331648 -# objectHighMark = 16384 - -#chunkHighMark = 67108864 - -### On-disk data -### ************ - -# Uncomment this if you want to disable the on-disk cache: - diskCacheRoot = "" - -# Uncomment this if you want to put the on-disk cache in a -# non-standard location: - -# diskCacheRoot = "~/.polipo-cache/" - -# Uncomment this if you want to disable the local web server: - localDocumentRoot = "" - -# Uncomment this if you want to enable the pages under /polipo/index? -# and /polipo/servers?. This is a serious privacy leak if your proxy -# is shared. - -# disableIndexing = false -# disableServersList = false - disableLocalInterface = true disableConfiguration = true - -### Domain Name System -### ****************** - -# Uncomment this if you want to contact IPv4 hosts only (and make DNS -# queries somewhat faster): -# -# dnsQueryIPv6 = no - -# Uncomment this if you want Polipo to prefer IPv4 to IPv6 for -# double-stack hosts: -# -# dnsQueryIPv6 = reluctantly - -# Uncomment this to disable Polipo's DNS resolver and use the system's -# default resolver instead. If you do that, Polipo will freeze during -# every DNS query: - dnsUseGethostbyname = yes - - -### HTTP -### **** - -# Uncomment this if you want to enable detection of proxy loops. -# This will cause your hostname (or whatever you put into proxyName -# above) to be included in every request: - disableVia = true - -# Uncomment this if you want to slightly reduce the amount of -# information that you leak about yourself: - -# censoredHeaders = from, accept-language -# censorReferer = maybe - censoredHeaders = from,accept-language,x-pad,link censorReferer = maybe - -# Uncomment this if you're paranoid. This will break a lot of sites, -# though: - -# censoredHeaders = set-cookie, cookie, cookie2, from, accept-language -# censorReferer = true - -# Uncomment this if you want to use Poor Man's Multiplexing; increase -# the sizes if you're on a fast line. They should each amount to a few -# seconds' worth of transfer; if pmmSize is small, you'll want -# pmmFirstSize to be larger. - -# Note that PMM is somewhat unreliable. - -# pmmFirstSize = 16384 -# pmmSize = 8192 - -# Uncomment this if your user-agent does something reasonable with -# Warning headers (most don't): - -# relaxTransparency = maybe - -# Uncomment this if you never want to revalidate instances for which -# data is available (this is not a good idea): - -# relaxTransparency = yes - -# Uncomment this if you have no network: - -# proxyOffline = yes - -# Uncomment this if you want to avoid revalidating instances with a -# Vary header (this is not a good idea): - -# mindlesslyCacheVary = true - -# Suggestions from Incognito configuration maxConnectionAge = 5m maxConnectionRequests = 120 serverMaxSlots = 8 diff --git a/src/org/torproject/android/service/TorService.java b/src/org/torproject/android/service/TorService.java index f72ba310..574ee0ae 100644 --- a/src/org/torproject/android/service/TorService.java +++ b/src/org/torproject/android/service/TorService.java @@ -30,6 +30,7 @@ import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; import java.util.List; +import java.util.Properties; import java.util.Set; import java.util.StringTokenizer; import java.util.concurrent.TimeoutException; @@ -38,7 +39,6 @@ import java.util.regex.Pattern; import net.freehaven.tor.control.ConfigEntry; import net.freehaven.tor.control.EventHandler; import net.freehaven.tor.control.TorControlConnection; -import net.freehaven.tor.control.TorControlError; import org.json.JSONArray; import org.json.JSONObject; @@ -896,6 +896,27 @@ public class TorService extends Service implements TorServiceConstants, TorConst } + private void updatePolipoConfig () throws FileNotFoundException, IOException + { + + SharedPreferences prefs = TorServiceUtils.getSharedPrefs(getApplicationContext()); + String socksPort = prefs.getString(TorConstants.PREF_SOCKS, TorServiceConstants.PORT_SOCKS_DEFAULT); + + File file = new File(appBinHome, POLIPOCONFIG_ASSET_KEY); + + Properties props = new Properties(); + + props.load(new FileReader(file)); + + props.put("socksParentProxy", "\"localhost:" + socksPort + "\""); + props.put("proxyPort","8118"); + + props.store(new FileWriter(file), "updated"); + + props.list(System.out); + } + + private void runPolipoShellCmd () throws Exception { @@ -913,6 +934,8 @@ public class TorService extends Service implements TorServiceConstants, TorConst { log = new StringBuilder(); + updatePolipoConfig(); + String polipoConfigPath = new File(appBinHome, POLIPOCONFIG_ASSET_KEY).getCanonicalPath(); SimpleCommand cmdPolipo = new SimpleCommand(filePolipo.getCanonicalPath() + " -c " + polipoConfigPath + " &");