From 1b7b5799eb6d36416cde386d7102006af0e1c51c Mon Sep 17 00:00:00 2001 From: Nathan Freitas Date: Mon, 30 Nov 2009 16:39:13 +0000 Subject: [PATCH] 0.0.2a update; improved Service mgmt; Control Port callbacks; better UI graphics; Help page svn:r21065 --- AndroidManifest.xml | 7 +- CHANGELOG | 6 + assets/help.html | 48 ++ assets/torrc | 2 +- res/drawable/bgdarkdroid.jpg | Bin 0 -> 7355 bytes res/drawable/toroff.png | Bin 13815 -> 11228 bytes res/drawable/toron.png | Bin 13694 -> 17461 bytes res/drawable/torstarting.png | Bin 13822 -> 16613 bytes res/drawable/torstopping.png | Bin 13826 -> 14633 bytes res/layout/layout_log.xml | 1 + res/layout/layout_main.xml | 3 + res/layout/layout_settings.xml | 1 + res/layout/layout_web.xml | 35 ++ res/values/strings.xml | 4 +- src/org/torproject/android/HttpProxy.java | 7 +- src/org/torproject/android/TorConstants.java | 4 +- .../torproject/android/TorControlPanel.java | 284 ++++++++---- src/org/torproject/android/TorService.java | 410 ++++++++++-------- 18 files changed, 534 insertions(+), 278 deletions(-) create mode 100644 assets/help.html create mode 100644 res/drawable/bgdarkdroid.jpg create mode 100644 res/layout/layout_web.xml diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 8bd45315..636ad29f 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -8,7 +8,7 @@ + android:debuggable="false"> @@ -16,7 +16,10 @@ - + + + + diff --git a/CHANGELOG b/CHANGELOG index 2f45cc38..e9b3be25 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,9 @@ +0.0.2a - 2009-11-30 +- Update user interace layout and graphics +- Modified service launch, shutdown and handling +- Improved event handler on Tor Control port callbacks +- Added Help page + 0.0.2 - 2009-11-27 - Major improvement to the user interface including relative layout for different screens - New graphics resources diff --git a/assets/help.html b/assets/help.html new file mode 100644 index 00000000..1a1382b4 --- /dev/null +++ b/assets/help.html @@ -0,0 +1,48 @@ + + + + help.html + + + + + + + + + + +

ORbot

+ Onion Routing Robot - v0.0.2a / November 30, 2009
+
+

How to use ORbot

+ Simply touch the Orbot icon on the main screen and wait for it to fully connect to the Tor network. You can use the Menu -> Log option to view + more detailed information about the attempt to connect to the network. +

How to surf anonymously

+ Once you have Orbot running and connected to the Tor network, you can utilize the anonymous proxy service in multiple ways: + + You can always visit http://check.torproject.org to ensure that you are properly connected to the Tor network. +

Bridges and Other Settings

+ You can modify the TORRC settings file using the Menu -> Settings option. This is where you can copy and paste in Tor Bridge node addresses + if they are needed in your local area. +

Even More Information!

+ If you'd like to learn more about the Tor Project, please visit http://torproject.org. + + diff --git a/assets/torrc b/assets/torrc index f3085477..b1af5560 100644 --- a/assets/torrc +++ b/assets/torrc @@ -17,7 +17,7 @@ ## relay, and not make any local application connections yourself. SocksPort 9050 # what port to open for local application connections SocksListenAddress 127.0.0.1 # accept connections only from localhost -#SocksListenAddress 192.168.0.1:9100 # listen on this IP:port also +SocksListenAddress 127.0.0.1:1080 # listen on this IP:port also ## Entry policies to allow/deny SOCKS requests based on IP address. ## First entry that matches wins. If no SocksPolicy is set, we accept diff --git a/res/drawable/bgdarkdroid.jpg b/res/drawable/bgdarkdroid.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6c0570ad62b58cd6c06c86a8043b965be0f23300 GIT binary patch literal 7355 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 literal 0 HcmV?d00001 diff --git a/res/drawable/toroff.png b/res/drawable/toroff.png index 9e01731c7ceac5165ad1f25c39de04b1ed181fe1..466eb615d775bb47d4fd866ad72dd6ad9183d3b5 100644 GIT binary patch delta 11037 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 XTHrA}2tdb{00000NkvXXu0mjfm0o-J delta 13676 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%0D23U;S!j zdIropR`b5;jx}e&U$+$nZIHxUb*@%}5Ge?(^tx}$-&V$RT-q-zJmx=+pJ2GpgHAxq zW{g?hYVL}nYd4G7(L5K~1_D?gtAK3>Ld`^lx@-@_SUb_0-*h%Zm7KP!WXICgxR;6d z?s~U@flpl3G{k0RbXGV%c)bCTQ|4%$_lLv5hcRd%U^H2W2yQsNvSlnnbv(Q`Hl_Ee zQx2M7W`$FK*je~)n1$nVxNMY*iM4I1*KTa(-IV?dqYmSaWCmJ!Cal|ful14dMn_G) zlsWE0H@9V`$c?C-N#nQzlT^|C&%B5Gu`Sm{m;r|`tc5c)ShpoP@$RBIIzY*a1j+|)9 zl=2_nkAM50tWxS(z6hrBMb?x>g9tjq4_-QcR8>{YJX;Ttal=43-aCTZ%YVzZk1H%B z@6_+H#wP!_u_;EY*W>>jVyEV#X=?tEiuhxF+iRkh$B3iEr)-6biL+|uKuL~k{ho@9 zj!_4Z(T36GbJK-71D|Bz+X9Ea?a1A0N$umoH~lKn7*XZ*2WvJzPPZo&@Wv{y6&DcW<%)AszS9na>)`!K5(AEMJ@~Zx*B}-GLC^AeZTOLvW!|2kc zz)Tx_ak0VBVmS9^m|3w@(xNmvpfmv2auRXEX`1t~uM6sGpN=}sz13}RTpX;3`1D(( z=KJmaAX;+!#g%Lum2gFXv91|jl_+X7bToW4a#S`2BaI@>N`_K3YF?F=bvxAIGXyuf zADq8LozaDTN#3Mzb~M6UQKv($CFsB3Miiw{cqGETovMLLgaVi z&v=I1uzLhGXAY{Eg*$$fQUU5WCe1R`RXD^!w4Q zt0&k=z=%l5AqRKly?ourx+PlQ8->Q|)C%i`mUA?4rW;ew7Z$%;2IML2ubmKzQKg5g zOzkA9RFH&IC+&%h=PT3@)I5GE1S zU3Hy_^~+XzaDT9jF7?udBX#N(_o-1_pYIcv(C$`Y_m2J7V&GGcE7P?0{EI-Bp~=_M z;k(y{&`ZXV+?(B73{lHp7!xzdGWgH?P1o>*R$$~n>o~J z(Lo?%nrm>*a1YrHCvz{iS2mq#y3Nkb=oO>JY-qs9H- zkZh-eP>q3xwPl(Y8nCW;Upk*%3<)=}UmAzJSaz|TZG(p_bGEyzcgyWeod-Jltdcno z_EJA#nfEYyvEGUKyw`?xVqylFs0L16bl~(lObTDB%=08q97Q^nU=B816+kRkwH16E z(t{qsiV>Rbf%3)4JU>b@kdDA<{D^Cx_>VF8L*)PD-#M{xC3s+JoyG32bWz#W<-~eG zp^Q>4kM|!CprQRcKlfR1;vY?1Sa;QctAfjW^{mg*uH)JHuH(L&@<$r#nuDmAvuoEI zImYL_(p16sX`!$G-yD8?Cssy*0nz@yPoM7Hll$X?>F<{$u-sA0>NnCapO2K7Jg8d4 HF!28X`nche diff --git a/res/drawable/toron.png b/res/drawable/toron.png index 6e3b1006eb77593f68b510507fad4136a39920ca..fee8023e899b6692a87df1b9372565a8476f0f41 100644 GIT binary patch literal 17461 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 R1J5a7@O1TaS?83{1OQESTRi{( literal 13822 zcmaL8b95$M^ez~)W83c7>DabAwr#wzZQHihv2AtO!5iDjup#-YveEn}h2(!QDle!LUj!$!_yxh>0(76ObQBK9Q z{eu%BB)8=@ds*+kde?KNp@c-(BzJvpvv$tS+|A5;pS+LgciwvPh$mTKAO;wr5!gWk z1dB4mONv=Qgd*Zt>Ghbkm>-VuXBl5G zuPj^l_AQ(}s4GpzzesR_d+_mhzwiC{=UVS|H9@N%fRBZh^}f9NtCpIvZY+sBVql=S z0>(UWOmbqbu+VF)d=dn)Vp2A2GlX-r$HKd@4ST!Jw;8^&m#MDt}VZ`tCxz&UBsWV`D-gHE32ooIN{6gk@j0oeFXlE z?ELgJ--EBy=cqnY%F)}D;yN9LJygkI^*BtB0Ib}2dU~dF+7oKG+Hk8E&3BJ~{uAJS z_<66MUeSg=yWV1vQo^C=pL*lV+NzT6i%(0@$^f-FmT_rc6nCp5YAI+m} z`&q8{RV#+~3cR>2zC2fNuozJo=&1(DjWV5?KAA#gMMa4V1*zIyfOwJR5Hkz85d3_; zZXOq<*qPT$usRx}2%W{BFNnCkp+a}FvWpFGWGPEZ@)5J$!s^X}qF&hhk`cHc}D?3b?j{P}t+eE^=%MFR!l`j@0RoepR~stt`4nBGv3?st|BPMFssEYmN;j{(toXz!H&}6Pn9i@GW7d%G@u!*>O_is(JiPy zmm+QIy@xuyi!%GzF(xi1D(RjHRe~xjDZcIEt_r1=to-RAlOT&R%Y?ENZI%-+q_+ik3k1DD*5&lB- zBRSu6M~13_t#MBL^HDyPEZ^SzL4Mz9SnsUSQY0cCRr?QzzC0#Ebs8U0VsKPBh6kr8 zZ~D)`>W-}`E7ks@Ml4qkqUUxc=jU8&{XKSe3F^H#ag!>|!KK}z!RwV`)w*%&rvyr;Y4vxzUMCMM_`?8I?vHRe7Ger|M0H~p@zy>f zU2%8e8j%@f|JzES6)AcG@Lhe zjZRcEkg}==7PcC6;oVlyI5ioItoR!(SRKCEG7m0>@FdTdF7zJf)D>p5DLPP5Pfblm zm{>VS-vbD=XLgv&CnA7Yf$^&5zvbdw3A^Cdt36#af@#I%4ZFZYBIEcQyC10CY?l}9 zFBL`bt1bULSc5ySJR#o{)ozm+1&TF3WevROP4D84%epDpq##>6&!_SZmA6Z1mTf%F zmM11Wmmt)5r(juF-3vOIr*E*4q6#?;8I1-0gGJkYcIc77+oAgpq(TcskrI5LLLi?~ zTr;MnMa}{NClWx(O?}A(7A#y*wDJxQm>jcc%R?{A6H~jUrE4cAB{>wC5@pDSV;I3) z&^#7Z+{$6|*8w@~DOHHhIw9Fm^dJ4oHDE$ROde#NzOW;nwmZfwAiU}$DHvoY1D)z&=c1{z`G4SZM?%?C$ zMe$|Dl5xzB#R>P5a7s`1#EXG8NQs}w;x2K4m%Dk*H>&*5J|s7qv$uz={7G{T^541- z1d>bn(2gK+m`-ZsV;#r-*^qxe|hqe-nw(|J#;ZS`I!H(ve|9^lg=;c&YjB-X!_>H`iVY!CNz5Y5 zyvT&TL`;3d+yLT@0KwkK!cPeSzH}`I5`gLZ=Gx%%;$&L4dggdXz2tA-|OG%SdL|ZNwpOGcK7RS|F?VO!Ftq zft`6>qYM@jZE6Y{kKcz2Hh^vUB`W{-z{+Z0=zOr`F_wXpb1ylI6J$XQE6J5VS_XlU zqROd+O(cdy`pQC<3Ax#LyVq3B^I3G9b6uxV<*Wgd@Jh%`QCxcRt3^?gC4B^Lj-)Ff zD9exYM;^Ry)^;T2UI!qK*RjjM1cHVS)t}hYpdP5GwI?Q94SQ)N5Q(Txc5Fm85=#_7 zN4ZU=hu>#ePn@5reW$_puL2g=fQ-|SUA;!H$W)w*^-TB*{F7LRfzN9F$O-2O1LLY~ zMK!YA?X_Tjynfh9N$n_T6GKp{01q~UM~9<;lOc}<0Z>LSl2|cEVOi-c;Gf?=PST-| zT(|um!)5#Ek$jvgi0KKV8#G zS-2l~_jcbXj=1H$jjr`0GW}~@#39vdmls7at{*d*Wm;AFQ2ZD);@bON(nPybqwjCJ z=VVjJAe7t<5GSL3$K`srA4-3)T&YNM&g3(PPgd4`?_X5jxEwm^$A`Wh69ED~Gvnu~ zxtT`IXv^81?+X!svm_!^I_!yi4gJq`+go+`a5;_vgN1yi9mp!(sKXylFY5Yat zqn&^Yu`)-Fu!K5NfkfA@+@z?u?g$K*frN7D0(;G8#t2mXn@mX?Ah~R_d*ey3lH05P z$yJx!gSfl@wqRhZWU&$j^|TVUx~`C%d@Bew#q5=gUn6EFfp_lc)y_+Jf0_nfC6;Ej zP>AknoN+Z;HUV$mjWSlovlB=xU$vZ=UZYUu@iuH*iUr6DVnEx>=WSa!r=BZvh(Iu6 zLP}HzPw;f(gDw%A1FzvZyFQVL`v;7%Y{AGXEwZ<={`q0fKL-;l+ZA^xm3z=E0CuSz;uN5EV&{ea` ze($EI-Cbc;ew;+R>Sv42(SQF$l)=dIAebGF@V;G1E2!S3!xMle{t1*7j5FZCv600~ zq1UZn-Lka78*79J+6GbKBolA$gYbm5su!^4d?ct1-aH*CqpQ|@UA|w@%WDcnaQV?8aM}!j_bVOZd^W98Q4e zl#p&U{MqwQ^F0!82apvP=noItQ*841;>+8m+ek(Wwx$RH{#)w0xFQqrw(dGutILhP znFkzmcE>pP>BgISLob%0=KLDkgd%%XjxBCAF5f^{JCg8jrvpAv41S!GhsC%F7OzL-KTb|qPT z;H>QV!GC??E@jFN=cGW~rfoDqHh+`2>d%4X%_RwgDE^ls~NJq4K(VJnS!M zOP9%)ytbZgPFYVD%cz{(5BHt!{y8iI9fNGKe+DL4^5LeD-d%z1*D9I+6sup!PD+|+ zPL^l>d{#w{Q3ucC^v@?JrQZ%0$+a>YdD%5G!R72Fa@ioJ?GBL)-2S+aSwuE&`eU#n zVn0V>aNiUIR79>|5NxZlp0dAw`E0X+;bAth@h(AxL@IY?jeS#19P*)-0%v92{xKC- zN$=RNcF7ynO%Zw`%T#mqlYcx3eP+Cjq$6>W?@~% zr@yE)w>0*IyOuuCXsizoatYESU4Lls4A2+NVJV(WSYrTC16fg}E7ilyOin*rH(CX< z$y*#=T8LuqGCDGTV_QZA8p$X0=E(cHA29df*<1f2r+Zg5kJBWInIhRo{{!)CtR`3j zAOP|B1JAvrowdvYKUeC~(UT+swV9H>QTc&-!krY^0Jmx*=#3B`8XT?2YGTm7?J7g3W8k# zXIx;qe#Fz}>Ak5llW4U(alN)aenR$D_#RzdV60`^PepwqYJjzqNNmT$3SCMez+L~* z;wDcZH}musyrLc387n%BL=WjZUK90MDA2-4Se*{vX4PySyV-Rvy)4K z7pXlD4I9;+_F)Fs5z2{YbyUUr8d*~VwawQRsik?{D7uOeEao|rj3Mx~`1hCYsA|JX zaAHT(23;)j{~9&rD6`#(VEcH1Q*&7RXrCjzdL5Vac1-`>Liahcb?{ zx5Gfn0yiRGpdf+35_R8D*xl#hh3|yD5#v1|ztB^7C!lc+{$D zkR{aBVVz_Ne^R_mi2(Wj4TDIwY*CO5Ui1D6!NY1E%m3?FZ#jlhO;69+-#6l??I*0q z?6wov^UWt_BV*fW156JvD!}cA+E`-}52$5j6Zl`)^+iDGD`0cJqY03ogIxgC{45ti zyu{K~6OBTP__4@1*eZu40aKFh8;BecI!U^yJ>lZ61zY7TH#}P7@uzS(-z7P3Eo!2W z_OU@cgL3~4BKb~-xr6BQ?)pNK6(N{YGjO5uE5l27vq>UlQCCalVBW%IF8wDIMHT6* z_6uKjtm3z&Xi2O_TQbsbZ2@rnd@V=abEzw||GJ%}no7CWY&DuVk9*Th(T0O3GQHJS zXm)-GHJ_$dr`zj@z>>J;1I7L+ptUYT$XOf&CxZF++X=_P!md3IKf$mhDJ6?i2+SSB z4;&-qFZ%!Z`TX`H8psu*#1f9Hk$ZjHh|?hWr{S(BGN=vdD@jqir-Hsu9RL7ayc0?$ zidH&H|8@;`x^^eJzJGwTez|qP9D?V(imF5TeOzK6mvnc!u~V)8LP>v)v$T z+eZ??A_jl%d~8ocUj}!+tysolN73%Eq!&-0+k*0cM{)dWZ2VhujxVm@k95m4uBCqw zX%w@GBfOJmkG2HRo@R4FWU4^}i1kU7;4G=^R>qwUTW$jxy$=xTollUlu%gzRJ_GUU zh`{w*kV?s&sg1YG1KPGip3IL74|9t0+fLAxZ$kDDud&loGvWgC#Y{8s>fZ0btJj`7 zo#=ULK!xW0cNDy!dq9Il@kG@lJ_NKq&yk7H3{`O&ek%2zFllDfXXY3HP70F=o!gzshQi`VAt3o)#* zE`PlI_Q_C@*KCCh^68-!@R4<1-^U3c%!od|^g`f~LlUR%9g(Nk(`19M+gfvGLY9bF z{$3yGFOLh$5)okRMg7yX*5j4Ws^M5KWB;Vs`$Yryv(<6a$yyo3*_aT-hma|)MDrDS zSVzfc9HT07`He`?s`!}{3>2u4!pDmOZ~MHdtaUs73pKA|LA0r(kt6DDwHpnu?a;V#?=j_s=c7lW3Yfzm>!V0XIQon z-*t5Blbw(L zROU13FNO?D4WdY2>-}^jbtCrbr5%8C#pUJZMEMC%LZxNB;RBak*{HsSc^sc|=$`-+ zt&IqVhJ$+F(WDa&YIuO@gL?%7GRY(gt3qv&x(N=RSQN7`j?w+t*H0pb(h}6hg90E2 zyFZB(DcF>Y%t@mEg6%(PCXsMG9seAi+2&1*ByFP?PVZzjA(P=B=px`Fd-)-aA?)e5 z+_OUlxXZ_Ph1PYc&j)hO1!78mEO~&=BIX^e9o14^am-el1Ig*smqY z?^=8Agzw$R-S z0@?_Zyi%lw_EC9p8Fo-rLY@~>HPJsT9UU4WGR%Oy$!MDq1K_5H$|1hAN^n_$%H+!t zNdnl99bf=)hB~a8CbXM-xu$~E8_(G6_zuS@PCC60OYXPY@}9d#BT~!+U|RpQJ35}8 z&y}>TPij$dx0?dkP!D#p7Y4u16G)==dO8jUu6HFof3S;OvjBzYzlR%Y{8jn>OyXW2 z1NNzPx8}ZXdN!WiC~}Ek28z~d*Pw=kJ|`Y>9B!X){;02LF0QySafa&)HSNXLKUaKw ziIcPGNQ9}GZQ!8RN5HA2M?$eT+Qs3S&=xLk3dBkYoNK*dpnQ=+Gz**Q0y3g0O1g|f z{CX0^Gr&YE^Wq+MVi$Ye9pZg#j=K*&7anNhAB&Pq$@w)uKu{Zvk_&$(l1o?+2TymM z1ZB-^rniXh)g1IHS^j9rR*-<&x7FTN36W z(PVJEe@=K8EFV!1Rl?L7BcT>}tSnzt6w@aFkB#Ss^&^e%Vu|Y9YUF~m<1}@Ghph?4 zrGIxN*5soC56g3Zu4>skNvic5ECkJ3Yu`R|QcpS?-7kVCtdWou#}y`7Eq4o$pvTTx zo()|4oG$b~xsF77b`g6ARv%ak3k(jPMPm~{mkKd_p}5Ov?68tvIH07}1j1$qbKbr#+d0L7Waf>Fe!S_n#4r{dh;2+r5hW@yU-& zwA4(%@AHNx^R=b>!^Y?uWPid?`^r|bhaAMSA{+H z4+>Myd%uCH;Jx7dw%#mJ;WjT5udpbnKrpmA_|)@yf4}!)j_yHwMakv*Rkz&H6W;f& z>0wDk9!a{G7lC)R-Q{VU)uXJ+i^Tg{)o4JBbGH;HXb%ZO80W~!?ZtBJ{xWpQ`IFEd zTM?Bq1v@e>SWb&@Xjcf4h!yRjI!woTo%sBPJniN8nd0C(U5~@vjd@-q0WDlFUmX8l z$u6X2WnSp=_0v6Q71hOGy?b5Zawr-2DZe`o7$~iX+#Gai7%J&8fw4pjhFvYpt+J#6 zV+~#>Y&ZjdKGAn3E%x@;LdU5#>;B6YY(Jkbfrwi0n!5P%c+LBaL8rniE`N){5s7Txt{a5{e|_J9;3+d-4Xv;Pp?d9K4GGdmpii8n z<8_TXj5O+6qH;UDi~o}QjhXQge%Kpvk&YFG@@5TEy*hYaMXmF-nn~#ZXexNDmHaHV+hmrD0(S7|x`WgOQORDHAC3K~q9?;Y)f_ z4%}8s>Y7D9mO1R)1ocsj4HBT`Sg+k%NQ}L=|#scov;t4UA3b#j7P}H zDiPIL7wZ9V$%&@@ZW^DZtm=RSyv|nt=;V9s(i2hqN*7VKL`}x7!rm|Rn~LP(-~1Iy z%SMX)Ds0%^?GT~@uciq8@`L3J1mbfT)MN5*r|X&rXC?>>?JT%2*L$&4O&5RiuY^y4+5aMx6SG6A>mOj{I60?5`*Ro>}v?en<1N@za0eUv){eYl&hutWy7B8o#ZCw z&=e+8gpYJZ(ISk}Eef`Tm(hR7p(T*!RVCs30t7lunhlE^={A7d1XW1{mzB~$KG8~| z-6l}j&c9UP=QwTt=)zXsJz@cK9{}>9Xloe%HrcyyKmf8Y|5sTAeyn||RFb$;w5dM+YB@3_Ni%~)Q%gZQE(HFL3=1ZxRBjf|8YB{)%{|1FJ z`Z6q_h=(>fkz(nt?J$W=*~J!)0LgAB)6qefq}RiR4{B=}V|`Ftcrpkbv?5m>?b+IF z;WV9N5G4G?fap;=iOdbiM*Tm@3{RIVA8! zaiZyW+*n`4=;yxPaC^M6caT{N)agpl|g ztpvTgNp-SAtE>nXs}9PRN@~9+Rn{26EeebwpNBvi z6C1HBgxw#fCoabScaK>mcxv{Y!?-$!-9zT>!jUPw3Q3++ewvXHcAuF}<#|IJC00-D zT9AhpWO@iEcVMk3N*6P&1Riu?cmPg>UGNrhu|8VSWF1EoC1NR!i#wyHs$xS{%8dF3 z2QQ2X&m$E+JLPC9hhR$}=sZG-Wt!?Aqq?sl#Q#vAqzDJH*W#Mm((!MLJfsZOdyc9k z3m@fM?USg+NKxb$ZYy#UYx#TsG0f2 zh@s*ML21ghTuL#VSoT9Xiwr?|abn}H5Ru84Q4q(%M=7B%=FH6MKDP^$-LHRWx9)*V z&A4;I8O`OhdY&x5*A_3oRnyzeU>71}h~&LsFa zs%Je-Ve;7|35>ZDwW}f8vk0~oR45gs4xLWU6O#l9PvbPq6Dl2g91wYkvurbu_K$mo zQ*M%yEi@{#WKu1Li*l}I9-{{#I@PJzybgob7VA8O?!0a|(ds#wXsf7}$vgDE$S(%{Wa2UzN<<=hb@354Z6(-II_E!uPULI( z(OMxN4Ct~#zT2D4w%a$m4}rBR;v*_CM| zMzAcSAOuKZJ6t{e1XUp^#WDFQ)pS+i-A$KnmCh&mA6$I$DnVCarP< z4TVnsdU#IolLJu%Xq0=@DZ=s9keCWP4(t0UB-ql+6Pe#L^Hl1N1LFM`Vm$Da6-brE z6vx?8a8D1IGF=mxD^8S+agXwT`grp(;4SM`h@vy24AMwAC7ZEk#5@B&0Nw0<;GfqU zExR&-x3|*|n3NzudU;|AEFYA76ZzyzXX4rzf=d>6a`M@@UC{5OoJxXwHF~X8pE5^g z5()Ei^Wso@SU zu_Y@1b@7je`KsmF1cRiLZbgHnmonG(NxrkdhKrQS?HdpiMUYQLsccnv)TgeXD6hXN zZ!3h$jP?~nxF9xMDS=;YM~w95owY_h;+z}4(oil=Xt-7yrjy4Jc1zYc(_XTTW38Ei z(Mi5)+JC}HoFyP(91TwR8l8$ek~o1@dQZvL6ez)kicOM$8;BHVIBr$03r7#gUqV%7 zvpLD6yx(#ocpxWD0bA~GT{j~Ay7PEPxhS$iMnGz~kstAaDH_IJVNfD*ah1Y<^sO2W z)_VGcN808_)O|IjX#w?|4l5rn2P%+7u$&5e&utVM)U7!!Y6cuyPhoz68li znt@?RkBR6)eRw$Pv_N}$u`w1jjFp}!ocukV@yXfPp1POi5sx+lxYVjY#7^HPtO(1^ zFDuNlV=d9l9qEtyTJaYN2?(UeQsh6`Nmv|j4rwT|*;=t#djXz!s0%;qONXgZxV%R- z@wc_rIro$h>1F3U4S3XjQt-H0^&RJr-9(J~e$zp<-$2tZX8JT1u)r!+-lZ+=hM-Gn zp`JA-XDX3|MWD}QCk~EI6oM%Hi8@&t5v(5(=ZlcU5b`q9K6G_dqVc}9MoxLa0^V)R zxxC<(X)wz z9M9%G;1Xtgb3TOU1teDfTj#jz3Y$5^rY-d(9I%?=`t;pf?7K+Yc%&~BJLunxZ=+}# z@+_`sAGwKIcH@uFvbt)Ms*9?KX>+0ds5n?^oZW<$x8(CU%O6~#z=clpa|)uPyYYv5 z>U;Kg>}IE0&2P~tTYDq;K06~@^RQTnCLOKZ{kq2!E?6hr)DtusQs4)V2(MaQ2v19Qf)n1xR5xWiKJAK7N?Hib)77C zlYSU;l?qF{6i7MRFMjeFJ1&F{mDR^CYrthZ%EE&a<#tG{J#!;2+N=Apg4uR`d zD_gDOXsf6dGb{y-Dt7usy+nRRkh-t9hOKbv+%IsveY?(F(qcAx7lZC}-6)0#XWa(3 z<3sz!jkuVKFZ+}%pxgz$8^1gQUa#@E7J_?4Vk9N!#ZCS>j;}SXhy5e+M7|CaP0)WG zi9eFAHj|(&^VXLRbd6V5;Vvr!MWg&pX2OF*+wnJBqsW3mzS{cL2G^TMdHdbq2XhgM zhc{r_QmVz}__ZWkQHOP#hm2CVRAmpT&L?yjUT19kQseKPg^}}pOQvqfM$AjoS8*m% z(q&7Ix*$H#-0aNU<5H+BF}9h+ZzcNE_IT#k@>5gSiQl~sMD}gJE6+JC+pHq{5}(4z zeuQ`3`@Hkb?DWd)%|tfsF!|QV)Eo0Q=JxW|MzL1NQdBk_Bkrc}L(cod!_ykBEJ*Em zd&C$s@!Rro1e`gv)$hC3V-^dTcG-@H{(jSGQ~6>mVSMLW-2SH;o|E|b(mm-^_{v#D z6~4UaPM^iXb|=Z=7|+eT2*^LClcxCe&ZKH+1uO19gRZ(B*x4pz5BSrK-WJ(HN|CgK zH#KeVSV7b1(;S(bA1Sv*m*{_${cq~{{}TP5>ffUOr~0>s|5N=x4gWXO{Qrpl-x~g>1~Zu} zZl54q;qPTxi0Io>NZInKY2=A?8CzY!U%8UE`}k@b-;a&^bjzgfhk)+5_l(>Y`<#|)=+@yX5(q17#hcH@mh3cOoq zbHp*g!wbb#dxLcoQS5?3LVV%y)VRhH8ZzgvXBA}%Rlq5p$Uc3JbVXMl0rtb!&wsYL zIZki5b~7Ij3DT5F3h~=wU*KBY(qdxj5=am!U$$d;JV}$8lCG(9eHUAvc(67kxOlI5&dX03lqud$}r@!Uzvy;H$^`Z(s!bbk{8L_Dq?j%l+rdCKPu1g=T$q9|IyAl>yq3Z5Yt@zy5|U(TY}j zoy5CMg7qF-vc_a+x)-2CzA1Ot6mG^M2gYU+2cIu>KV|68`H3FS66rj9(Z>=nGv6Jt zrq>AfL<8Y-WVa3vaHT2GpGrJ7mClxg;{U;KhB-hJRzCsG_I6d$+h0>_=RqihtU%TmSrV~m!Zr-C=X zll&H+cGE+1&37fy#P!WBRgcwwJ!E&`$8?5q*HN)$YQDFn`JKdC82c>5e5H3zyA?I{s+MMpCKy~%*XW6c@O_PYt9XA-mz5v>N^@23{$`W2cT4p zQ<`<8++Cfh%lM{392>Bk;UB+kU3`kW+PMCU_K+#tV&&80D{Y`lEnltv3mzcpDo;#r zH?95fkh=Vr6}Z*?TD8%@ire56>h(ilG^1K`pe{lGtm5(;^LVK0N&JAaz52JYUHv&( z?&nYX6-s({Mkz6;Ywy^u!>EATP}EF)vc8oQYpQpa{KnZb>bEV;pW7V(nmQBfxYgZU zDq}wv$DpK1dMqA(V1~i(#v&!5$c-B;Qwp6b)sFXy+eIKL_?Jf|+&7ev+^rD?jeKff zD6}j^s0zU88%R%RcvCSd%7`L$O+@#K$UTgeFo-n0lW|JNMWD#d(@(Nq9lt-;3g1P8 zuGjI;>X(^VFu!WUH+G$zeK1fhnwj1DK3HydDi887rrRuiH6=@m74y6yPz-T?Cw^B} z$x=7Qn|_@+zFR0pEI_`y+RjYUyU%*PV`)W(=2YpuSoR2g8z}w4@6-4`PGk~CwgS}Z zAY4&uEjMKV&#U1F*0`|hTm*AF7SBQrWT#1vfj+>ZubTHw>&bHscqY?=Ou41 zJip6cvy&?1ZimEret*5RuyQjdL`u5O&qriD{*;wC{L~X87+FvQ)_T*2YGsD4FyBx3OJY?|wmIgDiPw$x|N6G=BfU1tKLT LFIp>X5cq!qp82Va diff --git a/res/drawable/torstopping.png b/res/drawable/torstopping.png index d82b3b5160862bfd0586657c371a381292b606c9..0e8eeed595115e205fc4946222196af71ef0f65c 100644 GIT binary patch literal 14633 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 literal 13826 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 XBh56=Sn+v@3rt2rQM^XfIQV}6wq69e diff --git a/res/layout/layout_log.xml b/res/layout/layout_log.xml index cb46b834..adadbdce 100644 --- a/res/layout/layout_log.xml +++ b/res/layout/layout_log.xml @@ -12,6 +12,7 @@ android:layout_height="fill_parent" android:layout_width="fill_parent" android:layout_weight="1.0" + android:textSize="11px" /> diff --git a/res/layout/layout_main.xml b/res/layout/layout_main.xml index fd482305..7fd25ece 100644 --- a/res/layout/layout_main.xml +++ b/res/layout/layout_main.xml @@ -32,7 +32,10 @@ android:src="@drawable/toroff"/> android:text=" \n " android:paddingTop="15px" android:layout_gravity="center_horizontal" + android:gravity="center_horizontal" android:textStyle="bold" + android:width="240px" + android:height="100px" android:textColor="#ffffff" /> diff --git a/res/layout/layout_settings.xml b/res/layout/layout_settings.xml index c4d194b3..ccaa3035 100644 --- a/res/layout/layout_settings.xml +++ b/res/layout/layout_settings.xml @@ -13,6 +13,7 @@ android:layout_width="fill_parent" android:layout_weight="1.0" android:singleLine="false" + android:textSize="11px" /> diff --git a/res/layout/layout_web.xml b/res/layout/layout_web.xml new file mode 100644 index 00000000..4773d1b3 --- /dev/null +++ b/res/layout/layout_web.xml @@ -0,0 +1,35 @@ + + + + + + + + + diff --git a/res/values/strings.xml b/res/values/strings.xml index a16b15e3..8c2303e9 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -1,6 +1,6 @@ - Orbot - 0.0.1 + ORbot + 0.0.2a diff --git a/src/org/torproject/android/HttpProxy.java b/src/org/torproject/android/HttpProxy.java index f4c9f62c..1da7c719 100644 --- a/src/org/torproject/android/HttpProxy.java +++ b/src/org/torproject/android/HttpProxy.java @@ -75,9 +75,9 @@ public class HttpProxy extends Thread private String fwdServer = ""; private int fwdPort = 0; private int ptTimeout = ProxyThread.DEFAULT_TIMEOUT; - private int debugLevel = 0; + private int debugLevel = 1; private PrintStream debugOut = System.out; - + private boolean keepRunning = true; private boolean doSocks = false; private Socks5Proxy sProxy = null; @@ -220,6 +220,7 @@ public class HttpProxy extends Thread public void closeSocket () { try { + keepRunning = false; // close the open server socket server.close(); // send it a message to make it stop waiting immediately @@ -245,7 +246,7 @@ public class HttpProxy extends Thread // client connections server = new ServerSocket(thisPort); - while (true) + while (keepRunning) { Socket client = server.accept(); ProxyThread t = new ProxyThread(client, doSocks, sProxy); diff --git a/src/org/torproject/android/TorConstants.java b/src/org/torproject/android/TorConstants.java index 21261141..92b34efb 100644 --- a/src/org/torproject/android/TorConstants.java +++ b/src/org/torproject/android/TorConstants.java @@ -37,7 +37,7 @@ public interface TorConstants { //various console cmds public final static String SHELL_CMD_CHMOD = "/system/bin/chmod"; - public final static String SHELL_CMD_KILLALL = "/system/bin/kill"; + public final static String SHELL_CMD_KILL = "/system/bin/kill"; public final static String SHELL_CMD_RM = "/system/bin/rm"; public final static String SHELL_CMD_PS = "ps"; public final static String CHMOD_EXE_VALUE = "777"; @@ -61,6 +61,8 @@ public interface TorConstants { public final static int TOR_CONTROL_PORT = 9051; public final static int UPDATE_TIMEOUT = 3000; + public final static String DEFAULT_HOME_PAGE = "file:///android_asset/help.html";// "http://check.torproject.org"; + //status to communicate state public final static int STATUS_OFF = 0; public final static int STATUS_ON = 1; diff --git a/src/org/torproject/android/TorControlPanel.java b/src/org/torproject/android/TorControlPanel.java index 08cd4798..546cc00b 100644 --- a/src/org/torproject/android/TorControlPanel.java +++ b/src/org/torproject/android/TorControlPanel.java @@ -8,6 +8,10 @@ import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; +import java.util.List; + + +import net.freehaven.tor.control.EventHandler; import android.app.Activity; @@ -15,25 +19,42 @@ import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; +import android.util.Log; +import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; +import android.webkit.JsResult; +import android.webkit.WebChromeClient; +import android.webkit.WebSettings; +import android.webkit.WebView; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; -public class TorControlPanel extends Activity implements OnClickListener, TorConstants +public class TorControlPanel extends Activity implements OnClickListener, TorConstants, EventHandler { - private final static String LOG_TAG = "Tor"; + private final static String TAG = "Tor"; - private Intent torService = null; + private static Intent torService = null; private boolean updateLog = false; private boolean updateStatus = false; + private TextView lblStatus = null; + private ImageView imgStatus = null; + private String txtStatus = ""; + private int torStatus = STATUS_OFF; + + private Thread threadStatus = null; + + private WebView mWebView; + + private int currentView = 0; + /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { @@ -44,7 +65,7 @@ public class TorControlPanel extends Activity implements OnClickListener, TorCon showMain(); - + } @@ -54,12 +75,12 @@ public class TorControlPanel extends Activity implements OnClickListener, TorCon MenuItem mItem = menu.add(0, 1, Menu.NONE, "Home"); MenuItem mItem2 = menu.add(0, 2, Menu.NONE, "Settings"); MenuItem mItem3 = menu.add(0, 3, Menu.NONE, "Log"); - MenuItem mItem4 = menu.add(0, 4, Menu.NONE, "Browser"); + MenuItem mItem4 = menu.add(0, 4, Menu.NONE, "Help"); mItem.setIcon(R.drawable.ic_menu_home); mItem2.setIcon(R.drawable.ic_menu_register); mItem3.setIcon(R.drawable.ic_menu_reports); - mItem4.setIcon(R.drawable.ic_menu_goto); + mItem4.setIcon(R.drawable.ic_menu_about); return true; } @@ -86,12 +107,28 @@ public class TorControlPanel extends Activity implements OnClickListener, TorCon } else if (item.getItemId() == 4) { - Toast.makeText(this, "Not yet implemented!", Toast.LENGTH_SHORT); + this.showWeb(DEFAULT_HOME_PAGE); } return true; } + public boolean onKeyDown(int keyCode, KeyEvent event){ + if(keyCode==KeyEvent.KEYCODE_BACK){ + if(currentView != R.layout.layout_main){ + + showMain (); + + return true; + } + else{ + return super.onKeyDown(keyCode, event); + } + } + + return super.onKeyDown(keyCode, event); + + } /* (non-Javadoc) * @see android.app.Activity#onPause() @@ -100,6 +137,8 @@ public class TorControlPanel extends Activity implements OnClickListener, TorCon protected void onPause() { // TODO Auto-generated method stub super.onPause(); + + TorService.setStatus(torStatus); } @@ -113,7 +152,9 @@ public class TorControlPanel extends Activity implements OnClickListener, TorCon // TODO Auto-generated method stub super.onResume(); - checkStatus (); + torStatus = TorService.getStatus(); + + updateStatus (); } @@ -127,7 +168,10 @@ public class TorControlPanel extends Activity implements OnClickListener, TorCon // TODO Auto-generated method stub super.onStart(); - checkStatus (); + torStatus = TorService.getStatus(); + + + updateStatus (); } @@ -140,6 +184,8 @@ public class TorControlPanel extends Activity implements OnClickListener, TorCon protected void onStop() { // TODO Auto-generated method stub super.onStop(); + + TorService.setStatus(torStatus); } @@ -152,38 +198,47 @@ public class TorControlPanel extends Activity implements OnClickListener, TorCon updateLog = false; updateStatus = true; - setContentView(R.layout.layout_main); + currentView = R.layout.layout_main; + setContentView(currentView); findViewById(R.id.imgStatus).setOnClickListener(this); - - - Thread thread = new Thread () - { - public void run () - { - - while (updateStatus) - { - handlerStatus.sendEmptyMessage(0); - try { - Thread.sleep(UPDATE_TIMEOUT); - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - } - }; - - thread.start(); + + lblStatus = (TextView)findViewById(R.id.lblStatus); + imgStatus = (ImageView)findViewById(R.id.imgStatus); + + updateStatus(); } + private void showWeb (String url) + { + + + currentView =R.layout.layout_web; + setContentView(currentView); + + mWebView = (WebView) findViewById(R.id.webview); + + WebSettings webSettings = mWebView.getSettings(); + webSettings.setSavePassword(false); + webSettings.setSaveFormData(false); + webSettings.setJavaScriptEnabled(true); + + + mWebView.setWebChromeClient(new MyWebChromeClient()); + + mWebView.loadUrl(url); + + + } + + /* * Show the message log UI */ private void showMessageLog () { - setContentView(R.layout.layout_log); + currentView = R.layout.layout_log; + setContentView(currentView); ((Button)findViewById(R.id.btnLogClear)).setOnClickListener(this); updateStatus = false; @@ -252,8 +307,9 @@ public class TorControlPanel extends Activity implements OnClickListener, TorCon @Override public void handleMessage(Message msg) { - checkStatus(); - + updateStatus(); + + // Toast.makeText(this,txtStatus, Toast.LENGTH_SHORT).show(); } }; @@ -268,7 +324,8 @@ public class TorControlPanel extends Activity implements OnClickListener, TorCon updateStatus = false; updateLog = false; - setContentView(R.layout.layout_settings); + currentView = R.layout.layout_settings; + setContentView(currentView); String output = loadTextFile(TORRC_INSTALL_PATH); @@ -283,40 +340,36 @@ public class TorControlPanel extends Activity implements OnClickListener, TorCon /* * Set the state of the running/not running graphic and label */ - public void checkStatus () + public void updateStatus () { - - TextView lblStatus = (TextView)findViewById(R.id.lblStatus); - ImageView imgStatus = (ImageView)findViewById(R.id.imgStatus); - if (imgStatus != null) { - int torStatus = TorService.getStatus(); if (torStatus == STATUS_ON) { imgStatus.setImageResource(R.drawable.toron); - lblStatus.setText("Tor is running\n- touch to stop -"); + lblStatus.setText("ORbot is running\n- touch the bot to stop -"); updateStatus = false; } else if (torStatus == STATUS_STARTING_UP) { imgStatus.setImageResource(R.drawable.torstarting); - lblStatus.setText("Tor is starting up\n(this might take a little bit)"); - + + lblStatus.setText("ORbot reports:\n\"" + txtStatus + "\""); + } else if (torStatus == STATUS_SHUTTING_DOWN) { imgStatus.setImageResource(R.drawable.torstopping); - lblStatus.setText("Tor is shutting down\nplease wait..."); + lblStatus.setText("ORbot is shutting down\nplease wait..."); } else { imgStatus.setImageResource(R.drawable.toroff); - lblStatus.setText("Tor is not running\n- touch to start -"); + lblStatus.setText("ORbot is not running\n- touch the bot to start -"); updateStatus = false; } } @@ -337,26 +390,27 @@ public class TorControlPanel extends Activity implements OnClickListener, TorCon //if Tor binary is not running, then start the service up if (TorService.getStatus()==STATUS_OFF) { - torService = new Intent(this, TorService.class); - torService.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - TorService.setActivity(this); + torStatus = STATUS_STARTING_UP; + txtStatus = "Connecting to Tor..."; + updateStatus(); - startService(torService); + startTorService (); } - else if (TorService.getStatus()==STATUS_ON) + else { + torStatus = STATUS_SHUTTING_DOWN; + updateStatus(); - //stopService(torService); + stopService(torService); - TorService.stopTor (); + torStatus = STATUS_OFF; + updateStatus(); } - - showMain (); } else if (view.getId()==R.id.btnLogClear) { @@ -375,6 +429,20 @@ public class TorControlPanel extends Activity implements OnClickListener, TorCon } + private void startTorService () + { + if (torService == null) + { + torService = new Intent(this, TorService.class); + //torService.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + TorService.setActivity(this); + } + + startService(torService); + + + + } /* * Load the log file text @@ -431,33 +499,89 @@ public class TorControlPanel extends Activity implements OnClickListener, TorCon } - - /* - * Get the last line of the log file for status display - */ - public static String getLastLine (String path) - { - String line = null; - - String lastLine = null; - - try { - BufferedReader reader = new BufferedReader((new FileReader(new File(path)))); - while ((line = reader.readLine()) != null) - { - lastLine = line; - } - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - return lastLine; - - } + @Override + public void bandwidthUsed(long read, long written) { + Log.i(TAG,"BW Used: read=" + read + " written=" + written); + + } + + + @Override + public void circuitStatus(String status, String circID, String path) { + Log.i(TAG,"CircuitStatus=" + status + ": " + circID); + + } + + + @Override + public void message(String severity, String msg) { + + // Log.println(priority, tag, msg)("["+severity+"] "+msg); + //Toast.makeText(, text, duration) + // Toast.makeText(ACTIVITY, severity + ": " + msg, Toast.LENGTH_SHORT); + Log.i(TAG, "[Tor Control Port] " + severity + ": " + msg); + + if (msg.indexOf(TOR_CONTROL_PORT_MSG_BOOTSTRAP_DONE)!=-1) + { + torStatus = STATUS_ON; + + + + //setupWebProxy(true); + + } + + + txtStatus = msg; + handlerStatus.sendEmptyMessage(0); + + + } + + + @Override + public void newDescriptors(List orList) { + // TODO Auto-generated method stub + + } + + + @Override + public void orConnStatus(String status, String orName) { + + Log.i(TAG,"OrConnStatus=" + status + ": " + orName); + + } + + + @Override + public void streamStatus(String status, String streamID, String target) { + Log.i(TAG,"StreamStatus=" + status + ": " + streamID); + + } + + + @Override + public void unrecognized(String type, String msg) { + Log.i(TAG,"unrecognized log=" + type + ": " + msg); + + } - + /** + * Provides a hook for calling "alert" from javascript. Useful for + * debugging your javascript. + */ + final class MyWebChromeClient extends WebChromeClient { + @Override + public boolean onJsAlert(WebView view, String url, String message, JsResult result) { + Log.d(TAG, message); + result.confirm(); + return true; + } + + + } } \ No newline at end of file diff --git a/src/org/torproject/android/TorService.java b/src/org/torproject/android/TorService.java index 69850275..bb1cca97 100644 --- a/src/org/torproject/android/TorService.java +++ b/src/org/torproject/android/TorService.java @@ -10,11 +10,14 @@ import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.net.ConnectException; import java.net.Socket; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.StringTokenizer; +import java.util.Timer; +import java.util.TimerTask; import net.freehaven.tor.control.EventHandler; import net.freehaven.tor.control.NullEventHandler; @@ -31,35 +34,118 @@ public class TorService extends Service implements TorConstants private static TorControlPanel ACTIVITY = null; - private final static String TAG = "Tor"; + private final static String TAG = "TorService"; private static HttpProxy webProxy = null; - private static Process procTor = null; - private static int currentStatus = STATUS_OFF; - private static TorControlConnection conn = null; + private TorControlConnection conn = null; + + private Timer timer = new Timer (); + private final static int UPDATE_INTERVAL = 60000; /** Called when the activity is first created. */ @Override public void onCreate() { super.onCreate(); + Log.i(TAG,"TorService: onCreate"); + + timer.scheduleAtFixedRate( + new TimerTask() { + public void run() { + + //do nothing + // Log.i(TAG,"TorService: task is running"); + } + }, + 0, + UPDATE_INTERVAL); + + + int procId = findProcessId(TorConstants.TOR_BINARY_INSTALL_PATH); + + if (procId != -1) + { + Log.i(TAG,"Found existing Tor process"); + + try { + currentStatus = STATUS_STARTING_UP; + + initControlConnection(); + + getTorStatus(); + + if (webProxy != null) + { + if (webProxy.isRunning()) + { + //do nothing + Log.i(TAG, "Web Proxy is already running"); + } + else + { + //do nothing + Log.i(TAG, "killing Web Proxy"); + webProxy.closeSocket(); + setupWebProxy(true); + } + } + else //do something + { + setupWebProxy(true); + } + + currentStatus = STATUS_ON; + + } catch (RuntimeException e) { + Log.i(TAG,"Unable to connect to existing Tor instance,",e); + currentStatus = STATUS_OFF; + this.stopTor(); + + } catch (Exception e) { + Log.i(TAG,"Unable to connect to existing Tor instance,",e); + currentStatus = STATUS_OFF; + this.stopTor(); + + } + } + } - public static int getStatus () + /* (non-Javadoc) + * @see android.app.Service#onLowMemory() + */ + @Override + public void onLowMemory() { + // TODO Auto-generated method stub + super.onLowMemory(); + } + + + /* (non-Javadoc) + * @see android.app.Service#onUnbind(android.content.Intent) + */ + @Override + public boolean onUnbind(Intent intent) { + // TODO Auto-generated method stub + return super.onUnbind(intent); + } + + + public static int getStatus () { - try { - getTorStatus(); - } catch (IOException e) { - Log.i(TAG,"Unable to get tor status",e); - } return currentStatus; } + + public static void setStatus (int newStatus) + { + currentStatus = newStatus; + } /* (non-Javadoc) @@ -82,54 +168,35 @@ public class TorService extends Service implements TorConstants // TODO Auto-generated method stub super.onStart(intent, startId); - Log.i(TAG,"on start"); - - startService(); + Log.i(TAG,"onStart called"); + + initTor(); + + setupWebProxy (true); } - - private void startService () - { - Thread thread = new Thread () - { - public void run () - { - - Log.i(TAG,"Tor thread started"); - - initTor(); - } - }; - - thread.start(); - - - } - - - + public void onDestroy () { + super.onDestroy(); + Log.i(TAG,"onDestroy called"); + + if (timer != null) timer.cancel(); + + stopTor(); } - public static void stopTor () + private void stopTor () { currentStatus = STATUS_SHUTTING_DOWN; - Thread thread = new Thread () - { - public void run () - { - killTorProcess (); + setupWebProxy(false); + + killTorProcess (); - setupWebProxy(false); - - currentStatus = STATUS_OFF; - } - }; + currentStatus = STATUS_OFF; - thread.start(); } @@ -137,55 +204,62 @@ public class TorService extends Service implements TorConstants ACTIVITY = activity; } - private static void setupWebProxy (boolean enabled) + private void setupWebProxy (boolean enabled) { if (enabled) { - if (webProxy == null) - { - Log.i(TAG,"Setting up Web Proxy on port 8888"); - //httpd s - webProxy = new HttpProxy(PORT_HTTP); - webProxy.setDoSocks(true); - webProxy.start(); - - //socks - try - { - Proxy.setDefaultProxy(IP_LOCALHOST,PORT_SOCKS); - - } - catch (Exception e) - { - Log.w(TAG,e.getMessage()); - } - - //Settings.System.putString(getContentResolver(), Settings.System.HTTP_PROXY, proxySetting);//enable proxy - // Settings.Secure.putString(getContentResolver(), Settings.Secure.HTTP_PROXY, proxySetting);//enable proxy - } - else + if (webProxy != null) { + webProxy.closeSocket(); + webProxy = null; - webProxy.setDoSocks(true); - Log.i(TAG,"Web Proxy already running..."); } + + Log.i(TAG,"Starting up Web Proxy on port: " + PORT_HTTP); + //httpd s + webProxy = new HttpProxy(PORT_HTTP); + webProxy.setDoSocks(true); + webProxy.start(); + + //socks + try + { + + Proxy.setDefaultProxy(IP_LOCALHOST,PORT_SOCKS); + + + } + catch (Exception e) + { + Log.w(TAG,e.getMessage()); + } + + Log.i(TAG,"Web Proxy enabled..."); + + + //Settings.System.putString(getContentResolver(), Settings.System.HTTP_PROXY, proxySetting);//enable proxy + // Settings.Secure.putString(getContentResolver(), Settings.Secure.HTTP_PROXY, proxySetting);//enable proxy + } else { - Log.i(TAG,"Turning off Socks/Tor routing on Web Proxy"); + //Log.i(TAG,"Turning off Socks/Tor routing on Web Proxy"); if (webProxy != null) { //logNotice("Tor is disabled - browsing is not anonymous!"); //webProxy.setDoSocks(false); + webProxy.closeSocket(); + webProxy = null; + Log.i(TAG,"WebProxy ServerSocket closed"); } } } - public static void reloadConfig () + public void reloadConfig () { try { @@ -205,65 +279,39 @@ public class TorService extends Service implements TorConstants } } - private void shutdownTor () + private void killTorProcess () { - try - { - currentStatus = STATUS_SHUTTING_DOWN; - - if (conn == null) - { - initControlConnection (); - } - if (conn != null) - { - conn.signal("SHUTDOWN"); - } - } - catch (Exception e) + if (conn != null) { + try { + Log.i(TAG,"sending SHUTDOWN signal"); + conn.signal("SHUTDOWN"); + } catch (IOException e) { + // TODO Auto-generated catch block + Log.i(TAG,"error shutting down Tor via connection",e); + } + conn = null; } - } - private static void killTorProcess () - { - //doCommand(SHELL_CMD_KILLALL, CHMOD_EXE_VALUE, TOR_BINARY_INSTALL_PATH); - /* - if (procTor != null) - { - Log.i(TAG,"shutting down Tor process..."); - procTor.destroy(); - - - try { - procTor.waitFor(); - } - catch(Exception e2) - { - e2.printStackTrace(); - } - - int exitStatus = procTor.exitValue(); - Log.i(TAG,"Tor exit: " + exitStatus); + try { + Thread.sleep(500); + } catch (InterruptedException e) { - - procTor = null; - - }*/ - + } + int procId = findProcessId(TorConstants.TOR_BINARY_INSTALL_PATH); - if (procId != -1) + while (procId != -1) { Log.i(TAG,"Found Tor PID=" + procId + " - killing now..."); - doCommand(SHELL_CMD_KILLALL, procId + ""); + doCommand(SHELL_CMD_KILL, procId + ""); + procId = findProcessId(TorConstants.TOR_BINARY_INSTALL_PATH); } - conn = null; } @@ -316,14 +364,22 @@ public class TorService extends Service implements TorConstants doCommand(SHELL_CMD_RM,TOR_LOG_PATH); Log.i(TAG,"Starting tor process"); - procTor = doCommand(TOR_BINARY_INSTALL_PATH, TOR_COMMAND_LINE_ARGS); + doCommand(TOR_BINARY_INSTALL_PATH, TOR_COMMAND_LINE_ARGS); - //Log.i(TAG,"Tor process id=" + procTor.); + int procId = findProcessId(TorConstants.TOR_BINARY_INSTALL_PATH); + + if (procId == -1) + { + doCommand(TOR_BINARY_INSTALL_PATH, TOR_COMMAND_LINE_ARGS); + procId = findProcessId(TorConstants.TOR_BINARY_INSTALL_PATH); + } + + Log.i(TAG,"Tor process id=" + procId); currentStatus = STATUS_STARTING_UP; logNotice("Tor is starting up..."); - Thread.sleep(2000); + Thread.sleep(500); initControlConnection (); } catch (Exception e) { @@ -419,7 +475,7 @@ public class TorService extends Service implements TorConstants } catch (Exception e) { - Log.e(TAG, "error: " + e.getMessage(), e); + Log.e(TAG, "error: " + e.getMessage()); } return child; @@ -436,27 +492,38 @@ public class TorService extends Service implements TorConstants return null; } - public static synchronized void initControlConnection () throws Exception, RuntimeException + public void initControlConnection () throws Exception, RuntimeException { - if (conn == null) - { - Log.i(TAG,"Connecting to control port: " + TOR_CONTROL_PORT); - Socket s = new Socket(IP_LOCALHOST, TOR_CONTROL_PORT); - conn = TorControlConnection.getConnection(s); - // conn.authenticate(new byte[0]); // See section 3.2 - - Log.i(TAG,"SUCCESS connected to control port"); - - // - File fileCookie = new File(TOR_CONTROL_AUTH_COOKIE); - byte[] cookie = new byte[(int)fileCookie.length()]; - new FileInputStream(new File(TOR_CONTROL_AUTH_COOKIE)).read(cookie); - conn.authenticate(cookie); - - Log.i(TAG,"SUCCESS authenticated to control port"); - - addEventHandler(); - } + for (int i = 0; i < 50; i++) + { + try + { + Log.i(TAG,"Connecting to control port: " + TOR_CONTROL_PORT); + Socket s = new Socket(IP_LOCALHOST, TOR_CONTROL_PORT); + conn = TorControlConnection.getConnection(s); + // conn.authenticate(new byte[0]); // See section 3.2 + + Log.i(TAG,"SUCCESS connected to control port"); + + // + File fileCookie = new File(TOR_CONTROL_AUTH_COOKIE); + byte[] cookie = new byte[(int)fileCookie.length()]; + new FileInputStream(new File(TOR_CONTROL_AUTH_COOKIE)).read(cookie); + conn.authenticate(cookie); + + Log.i(TAG,"SUCCESS authenticated to control port"); + + addEventHandler(); + + break; //don't need to retry + } + catch (ConnectException ce) + { + Log.i(TAG,"Attempt " + i + ": Error connecting to control port; retrying..."); + Thread.sleep(1000); + } + } + } @@ -484,17 +551,12 @@ public class TorService extends Service implements TorConstants } - private static void getTorStatus () throws IOException + private void getTorStatus () throws IOException { try { - if (conn == null && (currentStatus == STATUS_STARTING_UP || currentStatus == STATUS_ON)) - { - - initControlConnection (); - - } + if (conn != null) @@ -522,6 +584,10 @@ public class TorService extends Service implements TorConstants // Log.i(TAG, "status/circuit-established=" + status); } } + else + { + currentStatus = STATUS_OFF; + } } catch (Exception e) { @@ -530,56 +596,22 @@ public class TorService extends Service implements TorConstants } - /* - * The recognized signal names are: - "RELOAD" -- Reload configuration information - "SHUTDOWN" -- Start a clean shutdown of the Tor process - "DUMP" -- Write current statistics to the logs - "DEBUG" -- Switch the logs to debugging verbosity - "HALT" -- Stop the Tor process immediately. - - */ - public void sendSignal () throws IOException - { - - conn.signal("RELOAD"); - - } - public static void addEventHandler () throws IOException + public void addEventHandler () throws IOException { // We extend NullEventHandler so that we don't need to provide empty // implementations for all the events we don't care about. // ... Log.i(TAG,"adding control port event handler"); - - EventHandler eh = new NullEventHandler() - { - public void message(String severity, String msg) { - - // Log.println(priority, tag, msg)("["+severity+"] "+msg); - //Toast.makeText(, text, duration) - // Toast.makeText(ACTIVITY, severity + ": " + msg, Toast.LENGTH_SHORT); - Log.i(TAG, "[Tor Control Port] " + severity + ": " + msg); - - if (msg.indexOf(TOR_CONTROL_PORT_MSG_BOOTSTRAP_DONE)!=-1) - { - currentStatus = STATUS_ON; - setupWebProxy(true); - - } - - } - }; - - conn.setEventHandler(eh); - conn.setEvents(Arrays.asList(new String[]{ - "ORCONN", "CIRC", "INFO", "NOTICE", "ERR"})); + conn.setEventHandler(ACTIVITY); + + conn.setEvents(Arrays.asList(new String[]{ + "ORCONN", "CIRC", "NOTICE", "ERR"})); // conn.setEvents(Arrays.asList(new String[]{ // "DEBUG", "INFO", "NOTICE", "WARN", "ERR"})); - Log.i(TAG,"SUCCESS added control port event handler"); + Log.i(TAG,"SUCCESS added control port event handler"); } } \ No newline at end of file