From 74f9a0dd73982c947f70926503b674ecca4c01db Mon Sep 17 00:00:00 2001 From: akwizgran <akwizgran@users.sourceforge.net> Date: Sat, 3 Sep 2016 00:00:08 +0100 Subject: [PATCH] Use our own SOCKS implementation to talk to Tor. --- briar-android/build.gradle | 3 - .../plugins/AndroidPluginsModule.java | 11 +- .../briarproject/plugins/tor/TorPlugin.java | 30 +++-- .../plugins/tor/TorPluginFactory.java | 11 +- .../api/plugins/TorConstants.java | 1 + .../api/reporting/DevReporter.java | 3 +- briar-core/libs/jsocks.jar | Bin 89276 -> 0 bytes .../src/org/briarproject/CoreModule.java | 2 + .../briarproject/feed/FeedManagerImpl.java | 21 ++-- .../reporting/DevReporterImpl.java | 47 +++++--- .../reporting/ReportingModule.java | 6 +- .../org/briarproject/socks/SocksModule.java | 22 ++++ .../org/briarproject/socks/SocksSocket.java | 108 ++++++++++++++++++ .../socks/SocksSocketFactory.java | 49 ++++++++ .../src/org/briarproject/util/IoUtils.java | 37 ++++-- 15 files changed, 289 insertions(+), 62 deletions(-) delete mode 100644 briar-core/libs/jsocks.jar create mode 100644 briar-core/src/org/briarproject/socks/SocksModule.java create mode 100644 briar-core/src/org/briarproject/socks/SocksSocket.java create mode 100644 briar-core/src/org/briarproject/socks/SocksSocketFactory.java diff --git a/briar-android/build.gradle b/briar-android/build.gradle index adea13909d..dc93b62fb5 100644 --- a/briar-android/build.gradle +++ b/briar-android/build.gradle @@ -11,9 +11,6 @@ dependencies { compile project(':briar-api') compile project(':briar-core') compile fileTree(dir: 'libs', include: '*.jar') - // This shouldn't be necessary; per section 23.4.4 of the Gradle docs: - // "file dependencies are included in transitive project dependencies within the same build". - compile files('../briar-core/libs/jsocks.jar') compile "com.android.support:support-v4:$supportVersion" compile("com.android.support:appcompat-v7:$supportVersion") { diff --git a/briar-android/src/org/briarproject/plugins/AndroidPluginsModule.java b/briar-android/src/org/briarproject/plugins/AndroidPluginsModule.java index ca899bc8ae..4d49a13ac7 100644 --- a/briar-android/src/org/briarproject/plugins/AndroidPluginsModule.java +++ b/briar-android/src/org/briarproject/plugins/AndroidPluginsModule.java @@ -22,6 +22,8 @@ import java.util.Collection; import java.util.Collections; import java.util.concurrent.Executor; +import javax.net.SocketFactory; + import dagger.Module; import dagger.Provides; @@ -30,15 +32,16 @@ public class AndroidPluginsModule { @Provides public PluginConfig providePluginConfig(@IoExecutor Executor ioExecutor, - AndroidExecutor androidExecutor, - SecureRandom random, BackoffFactory backoffFactory, Application app, - LocationUtils locationUtils, DevReporter reporter, + AndroidExecutor androidExecutor, SecureRandom random, + SocketFactory torSocketFactory, BackoffFactory backoffFactory, + Application app, LocationUtils locationUtils, DevReporter reporter, EventBus eventBus) { Context appContext = app.getApplicationContext(); DuplexPluginFactory bluetooth = new DroidtoothPluginFactory(ioExecutor, androidExecutor, appContext, random, backoffFactory); DuplexPluginFactory tor = new TorPluginFactory(ioExecutor, appContext, - locationUtils, reporter, eventBus, backoffFactory); + locationUtils, reporter, eventBus, torSocketFactory, + backoffFactory); DuplexPluginFactory lan = new AndroidLanTcpPluginFactory(ioExecutor, backoffFactory, appContext); final Collection<DuplexPluginFactory> duplex = diff --git a/briar-android/src/org/briarproject/plugins/tor/TorPlugin.java b/briar-android/src/org/briarproject/plugins/tor/TorPlugin.java index 0fcf4a87e6..3347c2477e 100644 --- a/briar-android/src/org/briarproject/plugins/tor/TorPlugin.java +++ b/briar-android/src/org/briarproject/plugins/tor/TorPlugin.java @@ -14,8 +14,6 @@ import android.os.PowerManager; import net.freehaven.tor.control.EventHandler; import net.freehaven.tor.control.TorControlConnection; -import net.sourceforge.jsocks.socks.Socks5Proxy; -import net.sourceforge.jsocks.socks.SocksSocket; import org.briarproject.android.util.AndroidUtils; import org.briarproject.api.TransportId; @@ -62,6 +60,8 @@ import java.util.logging.Logger; import java.util.regex.Pattern; import java.util.zip.ZipInputStream; +import javax.net.SocketFactory; + import static android.content.Context.CONNECTIVITY_SERVICE; import static android.content.Context.MODE_PRIVATE; import static android.content.Context.POWER_SERVICE; @@ -74,7 +74,6 @@ import static java.util.logging.Level.WARNING; import static net.freehaven.tor.control.TorControlCommands.HS_ADDRESS; import static net.freehaven.tor.control.TorControlCommands.HS_PRIVKEY; import static org.briarproject.api.plugins.TorConstants.CONTROL_PORT; -import static org.briarproject.api.plugins.TorConstants.SOCKS_PORT; import static org.briarproject.util.PrivacyUtils.scrubOnion; class TorPlugin implements DuplexPlugin, EventHandler, EventListener { @@ -93,6 +92,7 @@ class TorPlugin implements DuplexPlugin, EventHandler, EventListener { private final Context appContext; private final LocationUtils locationUtils; private final DevReporter reporter; + private final SocketFactory torSocketFactory; private final Backoff backoff; private final DuplexPluginCallback callback; private final String architecture; @@ -110,13 +110,15 @@ class TorPlugin implements DuplexPlugin, EventHandler, EventListener { private volatile BroadcastReceiver networkStateReceiver = null; TorPlugin(Executor ioExecutor, Context appContext, - LocationUtils locationUtils, DevReporter reporter, Backoff backoff, + LocationUtils locationUtils, DevReporter reporter, + SocketFactory torSocketFactory, Backoff backoff, DuplexPluginCallback callback, String architecture, int maxLatency, int maxIdleTime) { this.ioExecutor = ioExecutor; this.appContext = appContext; this.locationUtils = locationUtils; this.reporter = reporter; + this.torSocketFactory = torSocketFactory; this.backoff = backoff; this.callback = callback; this.architecture = architecture; @@ -295,6 +297,14 @@ class TorPlugin implements DuplexPlugin, EventHandler, EventListener { } } + private void tryToClose(Socket s) { + try { + if (s != null) s.close(); + } catch (IOException e) { + if (LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e); + } + } + private void listFiles(File f) { if (f.isDirectory()) for (File child : f.listFiles()) listFiles(child); else LOG.info(f.getAbsolutePath()); @@ -320,8 +330,9 @@ class TorPlugin implements DuplexPlugin, EventHandler, EventListener { ioExecutor.execute(new Runnable() { @Override public void run() { + // TODO: Trigger this with a TransportEnabledEvent File reportDir = AndroidUtils.getReportDir(appContext); - reporter.sendReports(reportDir, SOCKS_PORT); + reporter.sendReports(reportDir); } }); } @@ -516,21 +527,22 @@ class TorPlugin implements DuplexPlugin, EventHandler, EventListener { if (LOG.isLoggable(INFO)) LOG.info("Invalid hostname: " + onion); return null; } + Socket s = null; try { if (LOG.isLoggable(INFO)) LOG.info("Connecting to " + scrubOnion(onion)); controlConnection.forgetHiddenService(onion); - Socks5Proxy proxy = new Socks5Proxy("127.0.0.1", SOCKS_PORT); - proxy.resolveAddrLocally(false); - Socket s = new SocksSocket(proxy, onion + ".onion", 80); + s = torSocketFactory.createSocket(onion + ".onion", 80); s.setSoTimeout(socketTimeout); if (LOG.isLoggable(INFO)) LOG.info("Connected to " + scrubOnion(onion)); return new TorTransportConnection(this, s); } catch (IOException e) { - if (LOG.isLoggable(INFO)) + if (LOG.isLoggable(INFO)) { LOG.info("Could not connect to " + scrubOnion(onion) + ": " + e.toString()); + } + tryToClose(s); return null; } } diff --git a/briar-android/src/org/briarproject/plugins/tor/TorPluginFactory.java b/briar-android/src/org/briarproject/plugins/tor/TorPluginFactory.java index ae1b9e856a..c85405f676 100644 --- a/briar-android/src/org/briarproject/plugins/tor/TorPluginFactory.java +++ b/briar-android/src/org/briarproject/plugins/tor/TorPluginFactory.java @@ -18,6 +18,8 @@ import org.briarproject.api.system.LocationUtils; import java.util.concurrent.Executor; import java.util.logging.Logger; +import javax.net.SocketFactory; + public class TorPluginFactory implements DuplexPluginFactory { private static final Logger LOG = @@ -34,16 +36,19 @@ public class TorPluginFactory implements DuplexPluginFactory { private final LocationUtils locationUtils; private final DevReporter reporter; private final EventBus eventBus; + private final SocketFactory torSocketFactory; private final BackoffFactory backoffFactory; public TorPluginFactory(Executor ioExecutor, Context appContext, LocationUtils locationUtils, DevReporter reporter, - EventBus eventBus, BackoffFactory backoffFactory) { + EventBus eventBus, SocketFactory torSocketFactory, + BackoffFactory backoffFactory) { this.ioExecutor = ioExecutor; this.appContext = appContext; this.locationUtils = locationUtils; this.reporter = reporter; this.eventBus = eventBus; + this.torSocketFactory = torSocketFactory; this.backoffFactory = backoffFactory; } @@ -81,8 +86,8 @@ public class TorPluginFactory implements DuplexPluginFactory { Backoff backoff = backoffFactory.createBackoff(MIN_POLLING_INTERVAL, MAX_POLLING_INTERVAL, BACKOFF_BASE); TorPlugin plugin = new TorPlugin(ioExecutor, appContext, locationUtils, - reporter, backoff, callback, architecture, MAX_LATENCY, - MAX_IDLE_TIME); + reporter, torSocketFactory, backoff, callback, architecture, + MAX_LATENCY, MAX_IDLE_TIME); eventBus.addListener(plugin); return plugin; } diff --git a/briar-api/src/org/briarproject/api/plugins/TorConstants.java b/briar-api/src/org/briarproject/api/plugins/TorConstants.java index 3eec84e08c..f90e047bb0 100644 --- a/briar-api/src/org/briarproject/api/plugins/TorConstants.java +++ b/briar-api/src/org/briarproject/api/plugins/TorConstants.java @@ -9,4 +9,5 @@ public interface TorConstants { int SOCKS_PORT = 59050; int CONTROL_PORT = 59051; + int CONNECT_TO_PROXY_TIMEOUT = 5000; // Milliseconds } diff --git a/briar-api/src/org/briarproject/api/reporting/DevReporter.java b/briar-api/src/org/briarproject/api/reporting/DevReporter.java index 7c0f14aa01..dfcbb9c1a9 100644 --- a/briar-api/src/org/briarproject/api/reporting/DevReporter.java +++ b/briar-api/src/org/briarproject/api/reporting/DevReporter.java @@ -22,7 +22,6 @@ public interface DevReporter { * Send reports previously stored on-disk. * * @param reportDir the directory where reports are stored. - * @param socksPort the SOCKS port of a Tor client. */ - void sendReports(File reportDir, int socksPort); + void sendReports(File reportDir); } diff --git a/briar-core/libs/jsocks.jar b/briar-core/libs/jsocks.jar deleted file mode 100644 index 5b5ff17ef666ab56f4fd647d37c9798e9798c269..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89276 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�#X#X!rF1-8VqMn4xa<nMF8 zD-KD&6W@t?f@0USuAQ!vEU)Rdp1-ZBJH8)Js6R6AVA#tU6QY%(GTbMlNA7}X_~-}F zO<oHpW5#cju;mXh+12(n*;DnCfHPy4(*2+H{wG_b1B{s6M!OYuD7)76FYTk=!XfCe zIH{jIfL<`j8}0hX4JL2#D4&(yXIO826Zuhw{b9*}Ej@%?<&ZO(+}Lv{Qx==!@Srr= zbjC}3cxtfgbZ;zcTAu?49tLhBiv=H?Cr28r)#!QkN^NUbk)fNH{76i*tA1q8MTiDV zJgitEZr>N-grGncmXmE>yMVcMY)zAKWE?Bp1k-3V?UV~&PfxW+C<8A0<r<ZV?f_CI zO;UC-?iU0|M^Jo;p(4k!8L83dKuS%rovWpTZKMeC*wsVJr22NByfDoq@*$gOeu|$( z?n(qiK-XvCA^VU}-&c$Q577mRqC8#{35yDwXqAZz5gQ7;X6)d;kJ@9N2n~Qk(Khyq zX?x3t6seD|LM@P(1z}l1<=C1F1?RWggdTn<*S>hV)&{&_;;kq+D~-NJj8I^myV9;K zxNvA@VBk3Q@LVqjvE42m9JN{H14Mz(($$zd$-22V1N<<Oq@RNT@CqCej(WnzibSj; zP*{?wa#x_rW-3AiGYxDFYm-|{XxV_N{~vfHJfuJP5fDz~R?2TAnm7gR3<T^apvE{T zd&(0pSXBQ^ENR&vP)kdn>0H|7L5d}*;!M#BNpRM6g(Z2T-~`l;V9nKfqRn;94a}{^ zpV9@yyXqLBU`rLp=hP?&%jG0bh6U%U`ZiFckEOwthZHd@Ip-~x5^(cnrp46X(~XVN zy_%Fbt971}3mvodo0-#+f(^SSdvX&~DV`K=h%ufB;(Ft`;*te9o`^k;;N0z^!n)s5 zJ$c?@v3WS))p$9SO!`L1g8Lr#fkk=UhQwXW(hkHyyqh*-%gR(|{*wH~&Et-Y&Z_cp zGcR#K_kPaX8UzJT#(31Hoi-oGj?ai#Fu2irD%jxeg@65QfR)Oc<ZY$H>TchqFeKIC zpW}tlKRBt$+*yhr@eoS8d^*p$VYP|-H9xNeU%iWqxozscHQ5<*JUp-DTcloQZ)}|D zt*yNdl5{=tC*)rKv6>YR8&g&@Zz;H5R#>ooS&J#AE9|VDTKBqLg^$^AHG&*vV=FaJ zke)g<+cwAu6tvI6o$jk3yiioUA@I)KfdvH{hqTZXlX7d`YZRK)+6N}?vRGL9u|P7? z^}cZPSqwS8yA%~IW85sKJjlTPM8S_gnR}xBLN(-hym-oqUPAt&`k7WkqQOYp1I7f) zg1=PDw7K4XfMMh=DIyc?Zax_6XHD$xZZ0W->Xy!0G^eo7kSR=-LC6$#Yf>tYfl#97 zuf@zgx|rbA{-%%)&Y6C->YFi*ory<tre#*06|>3~$IrE>M^`O_JBRKx7Bu`3@M`ef zM3~CIXqGXO7J4hDf061t(c_O8K=0=wV=8JE5HZxtu{f&}PQYX_vW{{gClsQPzN&_7 zR|Th?v?*Qpf4UU9tQKV<F7RzM{?q#)lY1O&=Z_;X>UyA>bsNKq9sPQccJMq4j~rYY zHf<22U&IaO5;xDgb^<^g(ldnEjAOC3w<z=&W%=jD3bNDnJsh`5a5@ZVa+s9F662#o z{B{2`ZffeVfU?Pyyn|}qN;2a;xt$B?*?QO-(3fYh8cvGCju67c*FFv<fND1)R%tE+ z_6aUl53IW|yu>q{#50`~!>BMH<(+oVG8LgiK=QZYCe)2Zb&vA`_>;nIyF>G&*I`pz zj1=L|M}mtebAJ@_L9UPkB-v;4G2=qv&2toNQWA#J{duvg2P|`KTlR&I*>YG&jY7+L zQK_Jkg3c)#27fQfxOdX!Phrp)!QMw{4{oBS{p61B^q3gkfNI5U!*N4?B^%wU{pFPg zu$3A3VO*E`;)ZZCa|a8L*d^!mwD$wg?3d>)iFv>a+PjQpR&22&pA@YZ>a@5r2Rd<9 zzox?(fqeN1pOeV=t=ehg?PU9j+M#a<fS>>`s*y6VnpZ>>nAI^#Es(0T2~_F~jW{Ch z808Kh+K$+VI-I1MQLG#}oj7252x3yOiY$Snk;05y<1^D-=23n}=NZ6Ze!|Q?DK`Ed z!F-y@5`0hljdiH|*D3)K$EhTKMUyd{)YpFL*FCAv<v-jT6iq4*Cm|CUkO??A?-tad zDi4*eR9-{15H{8Wdr$v|tG#P`V5e)IDoZtZ8j9vG8rMIJ|FjIQu(95@_b~KODZ&<J zrDf$M4L~km!4W-@`L$vY)iM7RDPjm}#S*34KLMHI*6A#(-<D?sBa5}#(ev@=S2%nf z*Ah|48cOeXU6y-%ST>PV$r}BP0i2#u0mlT1Px>C`$f8&9>pd3o15eDZ3(rvMT7%8+ z5sh>DTSM1`*h=NJ+(VM0;+JPMe4&LGIDNdHfsV#E>Ge-m+HYw5Jzms0pV8uOkmOc5 ztBiD@G0hcbL1N5F6JT6Nx=7~d_CJgEEy?pj1t`rg;1gTn)7uiSfu4A@|E`P8yjmqq zTa1lsT%7;*s|TXd&ovK2r<%d5+Qmmzo=ODXK-C2bReyAeSL*D+t108w(1p#4L0;rD zoNpTgrskvdjcbc1H6_->Y9SdJgXo~5h|d-_+?1(HtlpdSTt5TyS7Pp)9Ev;h@lN@& zp4+bvYX8?i)!%SkFWkTP@XxaALbzxG$XY5heY#>V=(cOvq9LS(Jux5<^KAXCpt3GN ze+~QKg4xu5=bg1d;^w#NCRC|VI8r1rca<RVKlj7_&=uJgdIPVId=Sn)CO*m;*-pFf ztvO_gttY9nX7%&_Q%v`rxJk3&RZ`dNjC66oB5wdX)k>z2qCf4?y+USE0)@)fCxc97 z8=!m~p<s#}VNOC;TUWN<-&uW6Z?@3G+%9E5z6Yu!y5{-nYb*<2{6V7@x(}rRI8i-f zr#h5as!uvBpd15!MDVebwp4i{lZu|4G|L+0Sw|XLabhlSg;kWq%K@RLUpz&Tgeiff zloxWqx8alYp1^}zCdb2`|K6qHdit>|{hRLA|C{dqf9=Kpdke+-U$#&{4H$3bCCu*} zvNPF4n4(}Msj_ACkVXY>V;Bm9^d%wg2o947!mdVt7WU)50nQfAtxaL}<KyGOv#fCy zKrS0<MSz^>7NGrXbK*7arYtj)t0iyiyW^QnRu~#^JJEJ>$NP1{y>pPo_cg}*49cOU z`s%=CH|J0RFS@D~0KG{zbv6GXlVOY1{JuM+h7aK;;T&1JN!i66{I6~3;!7eTMtUo3 z)6T%fx}KY*M|qZV&SBW3r{*?ood~5|E!+Ev$wPtUN7oe^v}<UIcW2Cwmwe0^|J7Rg z)gOv{CvBM>x0lE_*<VxmoCN8oHBh7L;BVk}Ak3S6x2O5B48~3{5H-tlB2<U)F&zu_ z(glMjFo4hUp*WDk!gG^vB=?~?0E4CXut#F^xKH}pO*5rm=pi~#!N+pIimx|<P4pm( z*-bj7&)QkFhYRLM0X)|;DQusbE)){I$e3+c5avP+XUoEpaxD?6$QMiOUoAvr?WZhQ zC{|IRg+78JwiH{z{L96STxG_A5^Z<buL*5>HvJ++jP`pd@yvn(mC+a)u8NU(DUM|! zytZy#27n1?onYo}Ti<6l!%@`5nd;9KX)bOQzo-*D+}rK3fqWbiEz5RqL9x6v8!shd zq$^9ikV4sto(2pNva}{Kqmg^AWI~cQl^3xW)I*aJF}aj!SKdO*AZ)b{#+}DAuQ-Z1 zfDXln6bepg1<0``QqJ|D?+OOEG7Ey}{|%`{L^np58|;OA&*X+afHZ``=42pFZv?YQ z8BcLNr;sUP;H-uJx-X2cm!VW+RAO^=>y4j6tfE6Umn|?)0%S<rlqfo+D{>`J6Z}m^ zVTz5h7*vX{J^B$C<EoNtx`T}~y-YIS$&2O;vli)v!?_?%DrzVrPKBb^L4o4NQ&4YB z62#oLq6j_1``)Z-jiD)vwXOP3+GG|rPWG$#O195uDC%+9V?NuEd3t8C*H;DJGdo)* z7^&=cb_Qy6;~P_aDx5cKPGZG;1!{y^Z3PjIm`NTJIWfz~Jg*p$b)JiuP~n=QsIs^b z^%M)d-$#Vd?pA`ui)1wm+vPJyCFH~#e;e<aUF6L!p*#<9Gn-j;tRxFuflLP4(IKJK z26HH)s0|VMj_71aO7rGpK1YjQ3cY{mV$GgC7Tx@<TZNU*xXiST4Y?7SvR#q+KLY6a zJ|)|Ni+ETjC<lu;Y+q|XFQ6eG@^2KkUGPe$;Ml-IUuj``M->YTKZ8kt1`jZwfp~F& zg-cU3ew9J{7}5yuqPCDGN&+K#VhqR}q&I?@OC3Y6;AV0rgd16_F;Y?|A`X#q?hY@b z3Re);G6YMB%a}$)UwME}lxs8UO<R{VXG&tyq&>oa*Bt|Yn-}A^=M&tnNTCFYWAV=* z02RQ6ewFXq6a%-rDgMGP?3u$f7@dN^n*JTw;Nq=E^PsPjXAIA`d<O-7n$Zs82`Hja zMs?I`OVU=yQ>~<yJ+<#g)Ab1Mj{cznMYp*l7CKTOv;@M8W~}3^kjZ3Sg`|XCBs{h2 zn-nXUPu){0ML2c7ipbuNXzVh0T8V2{zn+#}u4`Lt3=BP$Qa1+2HEcy@B>X+yT%^po zupsVIqENbKey@<mqBK4_w3NcEosJ*;cOl-Q#6<Yis*)<%EUS84g_9l?Vi!kFA{=qV z+A5%$YEcB2zrTq|nR1FGSoj$~Bha1J1g5ZbRn<nv*XVeP!hQz!FaR@WX;bp$F#H(( zV?SulSV}bqYnA&IoyM%XbumH{Y!qHaAob6qn-~(#gdmgY%?VRdG@hjN-n9bBvBreG z$8GM<&9Twf5LFV736~mHHYKMe14%jsDCrL2F;TOAix@242V13g<Kd7bW)ooapwfiU zT%*fbyso?r?ct14>M}VIWr7C?^|5sDQ)NtXq7rM{G}bP&5pWHQuTBB6HqAX!LP<ij z#L`36H-(F-g^n}XR;w>V7bjw*EWuxG_l?uGhH~UJ^ZpbD$B3_s-E{pQe=X;7s@3z* zsNIHv|B&{sT@pRL$I-DgbQv<HGq}sXGdUQBhE*0TPmgYZ(Axm`J6NszAfnLfZcU2> z6YV}0Z1Sx>q>h#p_X2Na=I~VeaCZY9uCM(qgRj(pKO*J1Zwbb2b_+&c;oq%4y$VJH zJPu40CBS-{+qIy0hg=DILxY6Y(~5F_s~hp)SA`<Z@1^+@*Jf1+YJ*MpL&Hdb@<ld4 z345Lx6m^oX8H?@@uncx*TFatMs{Wo_;2067?i5sIFM|If{NxMO9*~h%uaZq&I%;B} zs36CRxMvAkLt_Z~^25q!oI#Lf8MMJNn)Ze3E9aR+0I_QVrL%uGzHix)se%z-?H--l z>J~z8$8B@wMElw|aG@VQmbN{Z=-Eo(nkyccq7@6G?yOj7S>~uui4y}{^mXi}6NB(7 zH=B{hG%ZgT4?0u$nEqDdrB)r$k}^cvv&&E6iQhRGwXc2fCl`Db4v4H8qm$0HL*@WU z*6GAKo{ITtuC5QK?}7<#_h+Q3$(OyHa%wAf{%FYuBUNyXcy?2J*VT3kSTmFRA=7dS z(BvYY*b$HWgD)Ai$6Ek<!4UmiDwdVgP`9=gJtelul=?7DtdID5D8S>Z>QawX*jd3L zAq!!NS9=!;xm?h^bkiSXt4YwT+7sp2nr04=jJZFrytfj6<>=>)6@W;t;7uzv<W+b7 z2}trA8pnT#^i`oD{}cY9`edkN4a^<OwL*`;Kw!$q5`3hSIU6#;^l)FluR0Tz-D<wv zTMc<5bI~7uY5gZZZZN*H%`jAs(VudujWN#3n!&UF%@+!D&%lZ{$PzZ(XLvT#$DCpZ z3>=A>n_2|Gk=@xTM_MEHy2#-257X%61eP&IQcBRUk?FZ#0S+^S$*K3+n!w&25SDN{ zN1NrZirca?oNpf4+AB8c<Sa8&)Y`UKrFloZYyyO_A}b=?b`^pv7>dSq_u5tqO!gUq zbt$HHZ)K%hU^^w&iOVH;Rk<*6#^ebCEk~>cOI9Kcg2m*I8Co$90x=gK3w%9ZAMP=I zELJu1!mlp~5dr{D7YbtN*_QD*OQ8jB5jae^3tBDMMavI$M<Y-rt27!tpd%f#r&agY z!x+|&zaq=VFStC>%^rz*t24Kdy}}o~dQQNjj-o=Dqh%7bXItIhriaiDYz#LmxV!Ml z8U3?$_~-*)7nn8T`Y7{#xTAIQ$x5ZTBD~3&ea4?5i{)RZ3oBM*{E!deTGJm|?g{M7 z+qXifY|L@nLB;pw@U-Y-1Vg-iXk56{9Ig$Sx>Dy{@O5p-f#*NHapCu+cx2GslM?U- zY~8aK<!=eH2Zi0S<o7UnV$JWEvIjQY{bTFVUkg3L?Nd^hesu~b)s#xQC;v0DF1Z6K zb`+HF$P~MaV){3%7`K~n&YeOmIXQd&&?EVv=E&ξCb4YQt{1w$C%VhyV133LF}Y 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%0A7Xy<6v?$Q72w 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 V7e~W-ix(^dvcS@~p#*mM=s!l`r{e$s diff --git a/briar-core/src/org/briarproject/CoreModule.java b/briar-core/src/org/briarproject/CoreModule.java index d865d6e43a..dbfaeb256a 100644 --- a/briar-core/src/org/briarproject/CoreModule.java +++ b/briar-core/src/org/briarproject/CoreModule.java @@ -22,6 +22,7 @@ import org.briarproject.reliability.ReliabilityModule; import org.briarproject.reporting.ReportingModule; import org.briarproject.settings.SettingsModule; import org.briarproject.sharing.SharingModule; +import org.briarproject.socks.SocksModule; import org.briarproject.sync.SyncModule; import org.briarproject.system.SystemModule; import org.briarproject.transport.TransportModule; @@ -50,6 +51,7 @@ import dagger.Module; ReportingModule.class, SettingsModule.class, SharingModule.class, + SocksModule.class, SyncModule.class, SystemModule.class, TransportModule.class, diff --git a/briar-core/src/org/briarproject/feed/FeedManagerImpl.java b/briar-core/src/org/briarproject/feed/FeedManagerImpl.java index 496c28403d..d0baff1379 100644 --- a/briar-core/src/org/briarproject/feed/FeedManagerImpl.java +++ b/briar-core/src/org/briarproject/feed/FeedManagerImpl.java @@ -40,9 +40,6 @@ import org.briarproject.util.StringUtils; import java.io.IOException; import java.io.InputStream; -import java.net.InetSocketAddress; -import java.net.Proxy; -import java.net.SocketAddress; import java.security.GeneralSecurityException; import java.util.ArrayList; import java.util.Collections; @@ -55,11 +52,13 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.logging.Logger; import javax.inject.Inject; +import javax.net.SocketFactory; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; +import static java.util.concurrent.TimeUnit.MILLISECONDS; import static java.util.logging.Level.INFO; import static java.util.logging.Level.WARNING; import static org.briarproject.api.blogs.BlogConstants.MAX_BLOG_POST_BODY_LENGTH; @@ -67,7 +66,6 @@ import static org.briarproject.api.feed.FeedConstants.FETCH_DELAY_INITIAL; import static org.briarproject.api.feed.FeedConstants.FETCH_INTERVAL; import static org.briarproject.api.feed.FeedConstants.FETCH_UNIT; import static org.briarproject.api.feed.FeedConstants.KEY_FEEDS; -import static org.briarproject.api.plugins.TorConstants.SOCKS_PORT; class FeedManagerImpl implements FeedManager, Client, EventListener { @@ -79,6 +77,8 @@ class FeedManagerImpl implements FeedManager, Client, EventListener { "466565644d616e6167657202fb797097" + "255af837abbf8c16e250b3c2ccc286eb")); + private static final int CONNECT_TIMEOUT = 60 * 1000; // Milliseconds + private final ScheduledExecutorService feedExecutor; private final Executor ioExecutor; private final DatabaseComponent db; @@ -86,6 +86,7 @@ class FeedManagerImpl implements FeedManager, Client, EventListener { private final ClientHelper clientHelper; private final IdentityManager identityManager; private final BlogManager blogManager; + private final SocketFactory torSocketFactory; private final AtomicBoolean fetcherStarted = new AtomicBoolean(false); @Inject @@ -99,7 +100,8 @@ class FeedManagerImpl implements FeedManager, Client, EventListener { FeedManagerImpl(ScheduledExecutorService feedExecutor, @IoExecutor Executor ioExecutor, DatabaseComponent db, PrivateGroupFactory privateGroupFactory, ClientHelper clientHelper, - IdentityManager identityManager, BlogManager blogManager) { + IdentityManager identityManager, BlogManager blogManager, + SocketFactory torSocketFactory) { this.feedExecutor = feedExecutor; this.ioExecutor = ioExecutor; @@ -108,6 +110,7 @@ class FeedManagerImpl implements FeedManager, Client, EventListener { this.clientHelper = clientHelper; this.identityManager = identityManager; this.blogManager = blogManager; + this.torSocketFactory = torSocketFactory; } @Override @@ -354,14 +357,10 @@ class FeedManagerImpl implements FeedManager, Client, EventListener { } private InputStream getFeedInputStream(String url) throws IOException { - // Set proxy - SocketAddress socketAddress = - new InetSocketAddress("127.0.0.1", SOCKS_PORT); - Proxy proxy = new Proxy(Proxy.Type.SOCKS, socketAddress); - // Build HTTP Client OkHttpClient client = new OkHttpClient.Builder() -// .proxy(proxy) + .socketFactory(torSocketFactory) + .connectTimeout(CONNECT_TIMEOUT, MILLISECONDS) .build(); // Build Request diff --git a/briar-core/src/org/briarproject/reporting/DevReporterImpl.java b/briar-core/src/org/briarproject/reporting/DevReporterImpl.java index bd7154068c..7d7415fb01 100644 --- a/briar-core/src/org/briarproject/reporting/DevReporterImpl.java +++ b/briar-core/src/org/briarproject/reporting/DevReporterImpl.java @@ -1,9 +1,5 @@ package org.briarproject.reporting; -import net.sourceforge.jsocks.socks.Socks5Proxy; -import net.sourceforge.jsocks.socks.SocksException; -import net.sourceforge.jsocks.socks.SocksSocket; - import org.briarproject.api.crypto.CryptoComponent; import org.briarproject.api.reporting.DevConfig; import org.briarproject.api.reporting.DevReporter; @@ -21,10 +17,10 @@ import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.Socket; -import java.net.SocketException; -import java.net.UnknownHostException; import java.util.logging.Logger; +import javax.net.SocketFactory; + import static java.util.logging.Level.WARNING; class DevReporterImpl implements DevReporter { @@ -35,21 +31,28 @@ class DevReporterImpl implements DevReporter { private static final int SOCKET_TIMEOUT = 30 * 1000; // 30 seconds private static final int LINE_LENGTH = 70; - private CryptoComponent crypto; - private DevConfig devConfig; + private final CryptoComponent crypto; + private final DevConfig devConfig; + private final SocketFactory torSocketFactory; - public DevReporterImpl(CryptoComponent crypto, DevConfig devConfig) { + public DevReporterImpl(CryptoComponent crypto, DevConfig devConfig, + SocketFactory torSocketFactory) { this.crypto = crypto; this.devConfig = devConfig; + this.torSocketFactory = torSocketFactory; } - private Socket connectToDevelopers(int socksPort) - throws UnknownHostException, SocksException, SocketException { - Socks5Proxy proxy = new Socks5Proxy("127.0.0.1", socksPort); - proxy.resolveAddrLocally(false); - Socket s = new SocksSocket(proxy, devConfig.getDevOnionAddress(), 80); - s.setSoTimeout(SOCKET_TIMEOUT); - return s; + private Socket connectToDevelopers() throws IOException { + String onion = devConfig.getDevOnionAddress(); + Socket s = null; + try { + s = torSocketFactory.createSocket(onion, 80); + s.setSoTimeout(SOCKET_TIMEOUT); + return s; + } catch (IOException e) { + tryToClose(s); + throw e; + } } @Override @@ -74,7 +77,7 @@ class DevReporterImpl implements DevReporter { } @Override - public void sendReports(File reportDir, int socksPort) { + public void sendReports(File reportDir) { File[] reports = reportDir.listFiles(); if (reports == null || reports.length == 0) return; // No reports to send @@ -84,7 +87,7 @@ class DevReporterImpl implements DevReporter { OutputStream out = null; InputStream in = null; try { - Socket s = connectToDevelopers(socksPort); + Socket s = connectToDevelopers(); out = s.getOutputStream(); in = new FileInputStream(f); IoUtils.copy(in, out); @@ -106,4 +109,12 @@ class DevReporterImpl implements DevReporter { if (LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e); } } + + private void tryToClose(Socket s) { + try { + if (s != null) s.close(); + } catch (IOException e) { + if (LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e); + } + } } diff --git a/briar-core/src/org/briarproject/reporting/ReportingModule.java b/briar-core/src/org/briarproject/reporting/ReportingModule.java index 7c88261de3..333b3afca0 100644 --- a/briar-core/src/org/briarproject/reporting/ReportingModule.java +++ b/briar-core/src/org/briarproject/reporting/ReportingModule.java @@ -4,6 +4,8 @@ import org.briarproject.api.crypto.CryptoComponent; import org.briarproject.api.reporting.DevConfig; import org.briarproject.api.reporting.DevReporter; +import javax.net.SocketFactory; + import dagger.Module; import dagger.Provides; @@ -12,7 +14,7 @@ public class ReportingModule { @Provides DevReporter provideDevReportTask(CryptoComponent crypto, - DevConfig devConfig) { - return new DevReporterImpl(crypto, devConfig); + DevConfig devConfig, SocketFactory torSocketFactory) { + return new DevReporterImpl(crypto, devConfig, torSocketFactory); } } diff --git a/briar-core/src/org/briarproject/socks/SocksModule.java b/briar-core/src/org/briarproject/socks/SocksModule.java new file mode 100644 index 0000000000..eaaa3c4d62 --- /dev/null +++ b/briar-core/src/org/briarproject/socks/SocksModule.java @@ -0,0 +1,22 @@ +package org.briarproject.socks; + +import java.net.InetSocketAddress; + +import javax.net.SocketFactory; + +import dagger.Module; +import dagger.Provides; + +import static org.briarproject.api.plugins.TorConstants.CONNECT_TO_PROXY_TIMEOUT; +import static org.briarproject.api.plugins.TorConstants.SOCKS_PORT; + +@Module +public class SocksModule { + + @Provides + SocketFactory provideTorSocketFactory() { + InetSocketAddress proxy = new InetSocketAddress("127.0.0.1", + SOCKS_PORT); + return new SocksSocketFactory(proxy, CONNECT_TO_PROXY_TIMEOUT); + } +} diff --git a/briar-core/src/org/briarproject/socks/SocksSocket.java b/briar-core/src/org/briarproject/socks/SocksSocket.java new file mode 100644 index 0000000000..7c627daef9 --- /dev/null +++ b/briar-core/src/org/briarproject/socks/SocksSocket.java @@ -0,0 +1,108 @@ +package org.briarproject.socks; + +import org.briarproject.util.ByteUtils; +import org.briarproject.util.IoUtils; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.InetSocketAddress; +import java.net.Socket; +import java.net.SocketAddress; + +class SocksSocket extends Socket { + + private final SocketAddress proxy; + private final int connectToProxyTimeout; + + SocksSocket(SocketAddress proxy, int connectToProxyTimeout) { + this.proxy = proxy; + this.connectToProxyTimeout = connectToProxyTimeout; + } + + @Override + public void connect(SocketAddress endpoint, int timeout) + throws IOException { + + // Validate the endpoint + if (!(endpoint instanceof InetSocketAddress)) + throw new IllegalArgumentException(); + InetSocketAddress inet = (InetSocketAddress) endpoint; + String host = inet.getHostName(); + if (host.length() > 255) throw new IllegalArgumentException(); + int port = inet.getPort(); + + // Connect to the proxy + super.connect(proxy, connectToProxyTimeout); + OutputStream out = getOutputStream(); + InputStream in = getInputStream(); + + // Request SOCKS 5 with no authentication + sendMethodRequest(out); + receiveMethodResponse(in); + + // Use the supplied timeout temporarily + int oldTimeout = getSoTimeout(); + setSoTimeout(timeout); + + // Connect to the endpoint via the proxy + sendConnectRequest(out, host, port); + receiveConnectResponse(in); + + // Restore the old timeout + setSoTimeout(oldTimeout); + } + + private void sendMethodRequest(OutputStream out) throws IOException { + byte[] methodRequest = new byte[] { + 5, // SOCKS version is 5 + 1, // Number of methods is 1 + 0 // Method is 0, no authentication + }; + out.write(methodRequest); + out.flush(); + } + + private void receiveMethodResponse(InputStream in) throws IOException { + byte[] methodResponse = new byte[2]; + IoUtils.read(in, methodResponse); + byte version = methodResponse[0]; + byte method = methodResponse[1]; + if (version != 5) + throw new IOException("Unsupported SOCKS version: " + version); + if (method == (byte) 255) + throw new IOException("Proxy requires authentication"); + if (method != 0) + throw new IOException("Unsupported auth method: " + method); + } + + private void sendConnectRequest(OutputStream out, String host, int port) + throws IOException { + byte[] connectRequest = new byte[7 + host.length()]; + connectRequest[0] = 5; // SOCKS version is 5 + connectRequest[1] = 1; // Command is 1, connect + connectRequest[3] = 3; // Address type is 3, domain name + connectRequest[4] = (byte) host.length(); // Length of domain name + for (int i = 0; i < host.length(); i++) + connectRequest[5 + i] = (byte) host.charAt(i); + ByteUtils.writeUint16(port, connectRequest, connectRequest.length - 2); + out.write(connectRequest); + out.flush(); + } + + private void receiveConnectResponse(InputStream in) throws IOException { + byte[] connectResponse = new byte[4]; + IoUtils.read(in, connectResponse); + byte version = connectResponse[0]; + byte reply = connectResponse[1]; + byte addressType = connectResponse[3]; + if (version != 5) + throw new IOException("Unsupported SOCKS version: " + version); + if (reply != 0) + throw new IOException("Connection failed: " + reply); + if (addressType == 1) IoUtils.read(in, new byte[4]); // IPv4 + else if (addressType == 4) IoUtils.read(in, new byte[16]); // IPv6 + else throw new IOException("Unsupported address type: " + addressType); + IoUtils.read(in, new byte[2]); // Port number + } +} diff --git a/briar-core/src/org/briarproject/socks/SocksSocketFactory.java b/briar-core/src/org/briarproject/socks/SocksSocketFactory.java new file mode 100644 index 0000000000..dfcd973597 --- /dev/null +++ b/briar-core/src/org/briarproject/socks/SocksSocketFactory.java @@ -0,0 +1,49 @@ +package org.briarproject.socks; + +import java.io.IOException; +import java.net.InetAddress; +import java.net.InetSocketAddress; +import java.net.Socket; +import java.net.SocketAddress; + +import javax.net.SocketFactory; + +class SocksSocketFactory extends SocketFactory { + + private final SocketAddress proxy; + private final int connectToProxyTimeout; + + SocksSocketFactory(SocketAddress proxy, int connectToProxyTimeout) { + this.proxy = proxy; + this.connectToProxyTimeout = connectToProxyTimeout; + } + + @Override + public Socket createSocket() { + return new SocksSocket(proxy, connectToProxyTimeout); + } + + @Override + public Socket createSocket(String host, int port) throws IOException { + Socket socket = createSocket(); + socket.connect(InetSocketAddress.createUnresolved(host, port)); + return socket; + } + + @Override + public Socket createSocket(InetAddress host, int port) { + throw new UnsupportedOperationException(); + } + + @Override + public Socket createSocket(String host, int port, InetAddress localHost, + int localPort) { + throw new UnsupportedOperationException(); + } + + @Override + public Socket createSocket(InetAddress address, int port, + InetAddress localAddress, int localPort) throws IOException { + throw new UnsupportedOperationException(); + } +} diff --git a/briar-core/src/org/briarproject/util/IoUtils.java b/briar-core/src/org/briarproject/util/IoUtils.java index c149b024e1..494c3a854b 100644 --- a/briar-core/src/org/briarproject/util/IoUtils.java +++ b/briar-core/src/org/briarproject/util/IoUtils.java @@ -1,5 +1,7 @@ package org.briarproject.util; +import java.io.Closeable; +import java.io.EOFException; import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -22,19 +24,34 @@ public class IoUtils { throws IOException { byte[] buf = new byte[4096]; try { - try { - while (true) { - int read = in.read(buf); - if (read == -1) break; - out.write(buf, 0, read); - } - out.flush(); - } finally { - in.close(); + while (true) { + int read = in.read(buf); + if (read == -1) break; + out.write(buf, 0, read); } - } finally { + in.close(); + out.flush(); out.close(); + } catch (IOException e) { + tryToClose(in); + tryToClose(out); } } + private static void tryToClose(Closeable c) { + try { + if (c != null) c.close(); + } catch (IOException e) { + // We did our best + } + } + + public static void read(InputStream in, byte[] b) throws IOException { + int offset = 0; + while (offset < b.length) { + int read = in.read(b, offset, b.length - offset); + if (read == -1) throw new EOFException(); + offset += read; + } + } } -- GitLab