From 9aed2343c141b1b3809f7eaccce61c22e342fda7 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Wed, 3 Apr 2019 20:56:21 -0400 Subject: [PATCH] Attempt to resolve connectivity problems for some users. --- res/raw/censorship_fronting.store | Bin 2271 -> 6525 bytes .../push/SignalServiceNetworkAccess.java | 100 +++++++++++++++--- 2 files changed, 84 insertions(+), 16 deletions(-) diff --git a/res/raw/censorship_fronting.store b/res/raw/censorship_fronting.store index 88b3f43762e60a5efb7c53f23cbe38134aafa93b..f91af9fa04d2d4c6e24c4b0c58869f98cebe79a1 100644 GIT binary patch literal 6525 zcmcgw1yoeq-k+j7B&3FJI712|0)l{p(gq-ngoLz!)X*VFw=|N{N-Bdi2nd3xFqEW7 zcnK+agZQ5K-uvQy>wa(6%sOlDv-j*1zxrgb*RP@RY4wkkS za2+RCXBW7(g_E1LnT0c4P3;nb8lXHL1EnIuUI$#u!NCQtg#egoNe~i%gop_6FMe#Y5lTwRjYRJ9Z&&X22QpRewkKiM>c8eLHBp8cJ}K5J`Nq!On^&1` z_VHbc&pM&uXRCtE4n1X(tK_1y*D9%UyXb6@D+dIRCNs==Ioa{DYlbce8BYxi5rj0p zR$0H=+Ugk^-qI;#Y|P~njm&r?R`%QaVs z|2=V0#wuQWH9$I)|4br5)s$zXkn3pr=O@?AqZ8Gwo?b|54UBGSl4~I{Xx> z)9?+PQhOac3||s$(n={8spYNa5D z#URT1+?O4^WJf1s*eK^;?2U;Wkeg9!I$>^)(!@3MT8XYn-&w&6=bEH?cf;a7H^xwv z8k7U_O)X@7R#cf#kzY?jL-C>0Rz*f`%7;Yn^>vvyNjUYr$S+dJ^tOvbx>WWY6{C)O zo9KqVFAQ7X{pH6%$rq%%o_Z!r(%~dPpkNRYiNn;C-`8X}HyF z5rTjhZ0tO%{6M?#(G~7B$M76!jhGrN{XP@Frb(pyyO0HTc}U*W=JyI#%+F{W*)vK1;^U9-&D_ z=O{N<%k@!R!6VZtc9F2JZVjs2_DgomMp13#esM2` ztZ@Frx3*Y0TTUOZYJ%}9+A=@Ib*ud7c-JEry~RSv17d=iA|z2(5Rqy9S~enfe{EY6 z7G}FxDowKLycG^3ylN|@w~YdjoSFscc!i)(+hITJ?&zU znx|o*qT=HMRL*1E8-q@(uIJe>$yRstH#*Febr~D-@ikowR5-yPn6kE(*bnWM-(&tw zd%<%63OtSdg`8+F1>dj02MCYk2}Kh>*Us;U_7V-2v*nOF&u5nNt!7nMb8M$dzv~Yg-1Zs zV^&!o{4M+j`bNLPo^$q&g~Aat8dPQPOnTJGI!BjR{NC|m;oJKDNTxqaV4VuDGNrm1 zIp2Lk`~4T9-7>j>Bc~rXR0RYmL0CcKvDsNv1q0BE`8L+1M|;#a1feUdGQ;*gg|==@ zIhaNWoVzfHTRiQ0NA6eUq38At5D;y#Wx<&k%wGJ87ty!Oz@Pqmf&m5e!EYFVkRJOG z76UQA{I@G2{@G&VdA_lnDs;-JYl8k&o+$R8GG8&k4IuyZ!g2WhVIVfBDG2t5i}Mq! z2;--h>crdq0WYL##y;Ale;#wW`R<4bo%mC^3Fn=#7(nl{%xchs967i1MICj@V|)v- zF*eRil}=KbyqP)4!$yWTgDuFi11)ghj7M~LI(J3d2+y^ZykQFevuN;B8~yBZq$-g+ zGImfa+itTS&lGw3$wMtcfH?%P(a>_iZ@V}CSi^;N@u4T{EA>SCGjG_$O$7JwC0FU~ z%05>0dE<#~8Pf~YioJJ$Ljb5_WkaqpQSg^ke47NT%$e%xIP(XFaRrkef)9gc;|JJp zJNA98xH|ehr7OP3HD~rjFGPOmh1|t6zhMRX0-Mtsuz1Ni!3q)V_%xU-m}{QowD;g( zW11QQ4ltjH1??{xI4u++f7gWnolpQ02oZ!haPC+tuvrZ&8^4-=@oFgWzXmq&abN>u z0~;6&Dj47(eIew)lcJ>1RwB!)lSVY`8+dPzvby(Wh*5`c@NgAiFnUhp`prRvf|PQ0WmDSUXsHO%fW!^vtP z4;T{b+UunSnno$>Ki~468N>}XGE}vxl`;$!TWPvajGr86TlgATljTk9ado{;u$Q%G z#8%&XI*T_jdv`cqwU@&*2HrG5H1fW0cbS`z-#MlugQ2vmcX29fQ}|KD)%^+yhHZM! zpeehrCRCvYnNx9unn~e${pBSiJH-UW#?9mJjV7InjHwJk;O;AX7xR|!psbK6R1dT@ zE&3#|_@@K@DSsxiq|M;nuw-OzvBAaMs!0``9H$Q!0wj(T4GT;d5Cr(Mc(b^JIjvk= z?nw&^n>pDES^jVtXRONz*;}{>J7JT%pp%FY_7uQ!JdYhl2hjLY|Jy%4RW@Mp2t9sp zDgN3aj8;j(F)LG7>J*7e{7bpjN6~eRm+n^+ryeW|$k>}OTt)J3W#TY#q3f0cK&DF1 zityv=i$sxhsjc5aLa%+Ca1=X>*7xI+VP*t?0C)nS7i*=&9J zt;sp_OM*)yQYAwk4M{hFek$7O^M;rAjG`e?1h9^R(WZIp2}jW&{a4&0q3Z{w`Jm#^$yTcwjkui(V*j`*(70V#&RZCHL3~xuFp0*wdsY!jf9y_u7jFpgu8r5@idAle$aQ z-b@I=0MH-zL#ZhL(SITV@JsSPlwTYW0}%i4e1s%IL=^iKmlBuK15|%s<5ZY9sqe5W zAUFZ`lLZ)m7JaJrE*4H$h`{AtU923OtX(|d$|6|4{`Wji=YzQ$jA_J3Bw%)VthfbGE8ad*Tc-f~AYzgynTcp{yBypt!X~U>AM+ zWwvkH2`^^-u8?=|tu!RTDLSQ6$YELQCY}kLk=L|bXP$k*@1Z{EXS1okHgFl5lmzu@ zsl<4dD~S#?$T~j9Y;tn8l8A?8WbBhtc!V)awwFgaS^wnm0^tAYH$Js^CR;rW+b_W} zC#LW&_O__&>AQBS^tdvCOT*B#ZB^^G<^QbF^lXEkzwp24fDkS|KQ0&t2M-K}VQX}( z7yN7k;9$z16t@&|_OLTE7cz6O`%$5vlsfnTF1FOcmM(z!F~?b8LVy6km&KFC70mJ5 zMAPGm$2#FGZ0T|$6+fhb_IMf`Mh=hy#JGgmtAK$=Js>#Xe?s#QNx;7bd*bIyPIJi+ zQua>4Z?ht5=xOz53hzgOblwY(&g`rD7N+3DGbt&aGT(a*wpS31U0JtY3%Z$!lB`x{)8FNqLhrk|4X(GmkQ#`;S!e zByU|P?#`W?Mn>k-CAaPJrBqy#)p+%!9}e^Pr0c?7Zq8GW_?2>fp$#jDvo*-;t6RSl zWj^bjIs>X!?fgVoJfR=ZdGFEXYcB>r-b%C;+MJ6Uha zhb>>v;70~^FsX4j`EqGGIm~2^=Jxa{QD2TITk{EyT&eUCJ}Pp|pbJ!j$?MwlFLU`e zJ_64o=^H-jBq|Y9j@ZU1mIYEprACtY5sPe3asSzDh~D68$P#=ShB_Us6{6&}pdwuSN1xU*o>UkyREzqz3K&cJCJ(OO6#k`X#)O*TX`b?Da2qM<$u`9>&F}x z?60g)i^<^O>e=4fp%(L?=LsvqJ!j!=!8MC%XQ8?FlhLa2kirW#s8mATNg_O!d0ik=$i`iIR&br$A3 z25M!CK6eaL-qp3rb`4Txl&yYJ@(R=431>0Y3Z$%Vl}nlpXHkwRaM2t3R%ymVURO;} zcimkshb!5m!xT`kT`eH+Y ztEtWEL@KF)waK|7`_AYaCKEi@U8$aiL@f|&5|F!wsx>{_^^$qZrozHE{`qdBVr8$W zqsZm*vMU>ri!Rco3uoD!{f2-YPK8dk^XDnc5`{Wmx#1PVpNp&BSc+9$bfa-XSn? zBB>0`BMtib-MyUF+Pd5ZQ#}&Bp(gvx&j))~Y4(Q;)G)F6Z)YaAaCI<38OWMApxD2E z;_SGlGl}}WrMYJ`tn?mL^I=4;<~<`NO$2DV?4!3j*+DXg)Ev;Nkm0=N|EI0I#-pAn z_DuDZo{uwD1^H*VX_?=X{u5PxY~?+(UN3O}{&4GNe)#q538B%-C-gN zSofj2`Y>{JR+R0P)PdZjy*yGu`vpzt#?U##HmelIWUaW!1*#0I_sdI;odqXCiXp4f=iA@d5sCuN_v_VlXkHTGW#<{p_jVfuMw3mQ zaToC6^7+t){P={%9k1fG>!OpwXhL8{aKP73k6sffzm0(2`=HkWRoMI@nX}HIp@SqH z3&ha#r1&d8C1ALy^5&JpOocJ+)+#$B{{u+h?or8V&Jx4bawrP=f>sHwzRGHx^W-pPriDw|*<5{2kk);WcXR96e)=`K#stVhc3B$Us>EH6 zA*o<=T!6-q|K&m>(;EVfw&tPu_G?r+MiYWUPDIzX1=jvr&?heN^4$P+y!4V`rcj4%k$I}*LHn|0hK@rk;_>2u( z(YmR0u0C@s{&(K6I%kV368T-wPd9YnqfLAhz#e+XZa#SCo`|p(+d|iZZ<~PeZQ)nt ukCkv<1wx)53gBz0qb73K-v$#vKpZJ6$f}Ms%tZ_MMppC|{&kDW^1lHme9Th- delta 1220 zcmexsbYHNZfq{Vuh($zS*|J>n&$Buvbah(CcP^3d2d_+FU|`$C$iPyZUs}k(z?hVm z7PcO!l!1XYLeJE|l7WGx(x8c@)S!tub^$XJBNG!R!*V_^ACso-^#;6boLX%jZQpqr z8M#>*3^EM44LI4DLs{5_nL>jNRSlFu94=v*`rwkpqO{D^oD_wS)Z~o3{G9ys%+z8X z1<$->Jwqb{1CTmyVNHZG=bXgiVg(}w=hUK-%(Tqp#FEVXJO#(nl8pSK%#un2IdNVC zOCSX51%W7WUSksjGb0N_b7MlAq-~(C0A61&Mzq`PD#v3MRGI3Em)jvZD0w~%Pee!P!^n8RF;{XTC5P1pI?IH@KgmyUYNTT zbQRo|E>L}s&m`(OzEIm6CM^mzM;$Om;ddA=gn=OrNY)}Zz~abeg3!FW2s%T z)AX{eBc^n^hy7PwFu5SO`BqDb$l>&PEE!h!`y8TVz5LEQPqeOo9(IkP;B?Tt>e_Wy z&-WPqbp3WH;kI^v3>x1W@B>3rR+y3TKMSh?GmrvDmMlL= zfCZT7+6-ht3iw#WSVZQ;Gu&Urc-=tTqGQpHT(3Ew1Sd8d$b+PnStJa^8btQTZ@+l% zu6)~<=+HHHt_vLETiNm4z@Lpnn~jl`m7S51#o55opk4+hV8GZWkWo@nV5P60uUA}b zq*q$3Z=eX5Woi?J%2vQ+EA*06iwx92R?4%;8^{_+FOXay4p&zUQ&*&yT$BS&WU>k@ zTm~ElY-}u{vI-2KY*UYvZGM%8^zWJAJUe&(`^Q2*ZDKKd z+aMo&B-TVDd*AWUKk2Vd+t*LnWPDaSLZFH1#}ECl!U2!aIow@hE zPoBuJtIk2^?ZH>O%jOxgmCN#S)Cb>{PFdZg{xS2aZ``{2FAEQsE{|~0{bW-xW6iG2 zZBxtZ`3>WA{w!#>a?kuw8UIBjWXaSx!3v=S^>gzNmH$@`E|1;y|5fDk+vnF$n)Y60 zmZ?D1oQcQyYG;14m%RVADCD8&O7_U==KVo>ZateAQp#jJF5jqpkr#GmoeuMa>yj2T zpPb^9jQ-C)ZNrLs6HlT0VJp9Hh<|JRw#R+D0dwpZ=AO+fd4*X-864WH6b?#mse9eD O^N)3^0mrXa32y+wYq+QY diff --git a/src/org/thoughtcrime/securesms/push/SignalServiceNetworkAccess.java b/src/org/thoughtcrime/securesms/push/SignalServiceNetworkAccess.java index ad97b96da9..bfcfbb687d 100644 --- a/src/org/thoughtcrime/securesms/push/SignalServiceNetworkAccess.java +++ b/src/org/thoughtcrime/securesms/push/SignalServiceNetworkAccess.java @@ -29,43 +29,111 @@ public class SignalServiceNetworkAccess { private static final String COUNTRY_CODE_OMAN = "+968"; private static final String COUNTRY_CODE_QATAR = "+974"; - private static final String SERVICE_REFLECTOR_HOST = "textsecure-service-reflected.whispersystems.org"; + private static final String SERVICE_REFLECTOR_HOST = "europe-west1-signal-cdn-reflector.cloudfunctions.net"; - private static final ConnectionSpec SOUQ_CONNECTION_SPEC = new ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS) + private static final ConnectionSpec GMAPS_CONNECTION_SPEC = new ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS) + .tlsVersions(TlsVersion.TLS_1_2) + .cipherSuites(CipherSuite.TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, + CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, + CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, + CipherSuite.TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256, + CipherSuite.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, + CipherSuite.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, + CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, + CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, + CipherSuite.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, + CipherSuite.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, + CipherSuite.TLS_RSA_WITH_AES_128_GCM_SHA256, + CipherSuite.TLS_RSA_WITH_AES_256_GCM_SHA384, + CipherSuite.TLS_RSA_WITH_AES_128_CBC_SHA, + CipherSuite.TLS_RSA_WITH_AES_256_CBC_SHA) + .supportsTlsExtensions(true) + .build(); + + private static final ConnectionSpec GMAIL_CONNECTION_SPEC = new ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS) + .tlsVersions(TlsVersion.TLS_1_2) + .cipherSuites(CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, + CipherSuite.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, + CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, + CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, + CipherSuite.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, + CipherSuite.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, + CipherSuite.TLS_RSA_WITH_AES_128_GCM_SHA256, + CipherSuite.TLS_RSA_WITH_AES_128_CBC_SHA, + CipherSuite.TLS_RSA_WITH_AES_256_CBC_SHA) + .supportsTlsExtensions(true) + .build(); + + private static final ConnectionSpec PLAY_CONNECTION_SPEC = new ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS) .tlsVersions(TlsVersion.TLS_1_2) .cipherSuites(CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, CipherSuite.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, - CipherSuite.TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, CipherSuite.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, CipherSuite.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, - CipherSuite.TLS_DHE_RSA_WITH_AES_128_CBC_SHA, - CipherSuite.TLS_DHE_RSA_WITH_AES_256_CBC_SHA, CipherSuite.TLS_RSA_WITH_AES_128_GCM_SHA256, CipherSuite.TLS_RSA_WITH_AES_128_CBC_SHA, CipherSuite.TLS_RSA_WITH_AES_256_CBC_SHA) .supportsTlsExtensions(true) .build(); + private final Map censorshipConfiguration; private final String[] censoredCountries; private final SignalServiceConfiguration uncensoredConfiguration; public SignalServiceNetworkAccess(Context context) { - final TrustStore trustStore = new DomainFrontingTrustStore(context); - final SignalServiceUrl service = new SignalServiceUrl("https://cms.souqcdn.com", SERVICE_REFLECTOR_HOST, trustStore, SOUQ_CONNECTION_SPEC); - final SignalCdnUrl serviceCdn = new SignalCdnUrl("https://cms.souqcdn.com", SERVICE_REFLECTOR_HOST, trustStore, SOUQ_CONNECTION_SPEC); - final SignalContactDiscoveryUrl serviceContact = new SignalContactDiscoveryUrl("https://cms.souqcdn.com", SERVICE_REFLECTOR_HOST, trustStore, SOUQ_CONNECTION_SPEC); - final SignalServiceConfiguration serviceConfig = new SignalServiceConfiguration(new SignalServiceUrl[] { service }, - new SignalCdnUrl[] { serviceCdn }, - new SignalContactDiscoveryUrl[] { serviceContact }); + + final TrustStore trustStore = new DomainFrontingTrustStore(context); + final SignalServiceUrl baseGoogleService = new SignalServiceUrl("https://www.google.com", SERVICE_REFLECTOR_HOST, trustStore, GMAIL_CONNECTION_SPEC); + final SignalServiceUrl baseAndroidService = new SignalServiceUrl("https://android.clients.google.com", SERVICE_REFLECTOR_HOST, trustStore, PLAY_CONNECTION_SPEC); + final SignalServiceUrl mapsOneAndroidService = new SignalServiceUrl("https://clients3.google.com", SERVICE_REFLECTOR_HOST, trustStore, GMAPS_CONNECTION_SPEC); + final SignalServiceUrl mapsTwoAndroidService = new SignalServiceUrl("https://clients4.google.com", SERVICE_REFLECTOR_HOST, trustStore, GMAPS_CONNECTION_SPEC); + final SignalServiceUrl mailAndroidService = new SignalServiceUrl("https://inbox.google.com", SERVICE_REFLECTOR_HOST, trustStore, GMAIL_CONNECTION_SPEC); + final SignalServiceUrl egyptGoogleService = new SignalServiceUrl("https://www.google.com.eg", SERVICE_REFLECTOR_HOST, trustStore, GMAIL_CONNECTION_SPEC); + final SignalServiceUrl uaeGoogleService = new SignalServiceUrl("https://www.google.com.ae", SERVICE_REFLECTOR_HOST, trustStore, GMAIL_CONNECTION_SPEC); + final SignalServiceUrl omanGoogleService = new SignalServiceUrl("https://www.google.com.om", SERVICE_REFLECTOR_HOST, trustStore, GMAIL_CONNECTION_SPEC); + final SignalServiceUrl qatarGoogleService = new SignalServiceUrl("https://www.google.com.qa", SERVICE_REFLECTOR_HOST, trustStore, GMAIL_CONNECTION_SPEC); + + final SignalCdnUrl baseGoogleCdn = new SignalCdnUrl("https://www.google.com", SERVICE_REFLECTOR_HOST, trustStore, GMAIL_CONNECTION_SPEC); + final SignalCdnUrl baseAndroidCdn = new SignalCdnUrl("https://android.clients.google.com", SERVICE_REFLECTOR_HOST, trustStore, PLAY_CONNECTION_SPEC); + final SignalCdnUrl mapsOneAndroidCdn = new SignalCdnUrl("https://clients3.google.com", SERVICE_REFLECTOR_HOST, trustStore, GMAPS_CONNECTION_SPEC); + final SignalCdnUrl mapsTwoAndroidCdn = new SignalCdnUrl("https://clients4.google.com", SERVICE_REFLECTOR_HOST, trustStore, GMAPS_CONNECTION_SPEC); + final SignalCdnUrl mailAndroidCdn = new SignalCdnUrl("https://inbox.google.com", SERVICE_REFLECTOR_HOST, trustStore, GMAIL_CONNECTION_SPEC); + final SignalCdnUrl egyptGoogleCdn = new SignalCdnUrl("https://www.google.com.eg", SERVICE_REFLECTOR_HOST, trustStore, GMAIL_CONNECTION_SPEC); + final SignalCdnUrl uaeGoogleCdn = new SignalCdnUrl("https://www.google.com.ae", SERVICE_REFLECTOR_HOST, trustStore, GMAIL_CONNECTION_SPEC); + final SignalCdnUrl omanGoogleCdn = new SignalCdnUrl("https://www.google.com.om", SERVICE_REFLECTOR_HOST, trustStore, GMAIL_CONNECTION_SPEC); + final SignalCdnUrl qatarGoogleCdn = new SignalCdnUrl("https://www.google.com.qa", SERVICE_REFLECTOR_HOST, trustStore, GMAIL_CONNECTION_SPEC); + + final SignalContactDiscoveryUrl baseGoogleDiscovery = new SignalContactDiscoveryUrl("https://www.google.com", SERVICE_REFLECTOR_HOST, trustStore, GMAIL_CONNECTION_SPEC); + final SignalContactDiscoveryUrl baseAndroidDiscovery = new SignalContactDiscoveryUrl("https://android.clients.google.com", SERVICE_REFLECTOR_HOST, trustStore, PLAY_CONNECTION_SPEC); + final SignalContactDiscoveryUrl mapsOneAndroidDiscovery = new SignalContactDiscoveryUrl("https://clients3.google.com", SERVICE_REFLECTOR_HOST, trustStore, GMAPS_CONNECTION_SPEC); + final SignalContactDiscoveryUrl mapsTwoAndroidDiscovery = new SignalContactDiscoveryUrl("https://clients4.google.com", SERVICE_REFLECTOR_HOST, trustStore, GMAPS_CONNECTION_SPEC); + final SignalContactDiscoveryUrl mailAndroidDiscovery = new SignalContactDiscoveryUrl("https://inbox.google.com", SERVICE_REFLECTOR_HOST, trustStore, GMAIL_CONNECTION_SPEC); + final SignalContactDiscoveryUrl egyptGoogleDiscovery = new SignalContactDiscoveryUrl("https://www.google.com.eg", SERVICE_REFLECTOR_HOST, trustStore, GMAIL_CONNECTION_SPEC); + final SignalContactDiscoveryUrl uaeGoogleDiscovery = new SignalContactDiscoveryUrl("https://www.google.com.ae", SERVICE_REFLECTOR_HOST, trustStore, GMAIL_CONNECTION_SPEC); + final SignalContactDiscoveryUrl omanGoogleDiscovery = new SignalContactDiscoveryUrl("https://www.google.com.om", SERVICE_REFLECTOR_HOST, trustStore, GMAIL_CONNECTION_SPEC); + final SignalContactDiscoveryUrl qatarGoogleDiscovery = new SignalContactDiscoveryUrl("https://www.google.com.qa", SERVICE_REFLECTOR_HOST, trustStore, GMAIL_CONNECTION_SPEC); + this.censorshipConfiguration = new HashMap() {{ - put(COUNTRY_CODE_EGYPT, serviceConfig); - put(COUNTRY_CODE_UAE, serviceConfig); - put(COUNTRY_CODE_OMAN, serviceConfig); - put(COUNTRY_CODE_QATAR, serviceConfig); + put(COUNTRY_CODE_EGYPT, new SignalServiceConfiguration(new SignalServiceUrl[] {egyptGoogleService, baseGoogleService, baseAndroidService, mapsOneAndroidService, mapsTwoAndroidService, mailAndroidService}, + new SignalCdnUrl[] {egyptGoogleCdn, baseAndroidCdn, baseGoogleCdn, mapsOneAndroidCdn, mapsTwoAndroidCdn, mailAndroidCdn, mailAndroidCdn}, + new SignalContactDiscoveryUrl[] {egyptGoogleDiscovery, baseGoogleDiscovery, baseAndroidDiscovery, mapsOneAndroidDiscovery, mapsTwoAndroidDiscovery, mailAndroidDiscovery})); + + put(COUNTRY_CODE_UAE, new SignalServiceConfiguration(new SignalServiceUrl[] {uaeGoogleService, baseAndroidService, baseGoogleService, mapsOneAndroidService, mapsTwoAndroidService, mailAndroidService}, + new SignalCdnUrl[] {uaeGoogleCdn, baseAndroidCdn, baseGoogleCdn, mapsOneAndroidCdn, mapsTwoAndroidCdn, mailAndroidCdn}, + new SignalContactDiscoveryUrl[] {uaeGoogleDiscovery, baseGoogleDiscovery, baseAndroidDiscovery, mapsOneAndroidDiscovery, mapsTwoAndroidDiscovery, mailAndroidDiscovery})); + + put(COUNTRY_CODE_OMAN, new SignalServiceConfiguration(new SignalServiceUrl[] {omanGoogleService, baseAndroidService, baseGoogleService, mapsOneAndroidService, mapsTwoAndroidService, mailAndroidService}, + new SignalCdnUrl[] {omanGoogleCdn, baseAndroidCdn, baseGoogleCdn, mapsOneAndroidCdn, mapsTwoAndroidCdn, mailAndroidCdn}, + new SignalContactDiscoveryUrl[] {omanGoogleDiscovery, baseGoogleDiscovery, baseAndroidDiscovery, mapsOneAndroidDiscovery, mapsTwoAndroidDiscovery, mailAndroidDiscovery})); + + + put(COUNTRY_CODE_QATAR, new SignalServiceConfiguration(new SignalServiceUrl[] {qatarGoogleService, baseAndroidService, baseGoogleService, mapsOneAndroidService, mapsTwoAndroidService, mailAndroidService}, + new SignalCdnUrl[] {qatarGoogleCdn, baseAndroidCdn, baseGoogleCdn, mapsOneAndroidCdn, mapsTwoAndroidCdn, mailAndroidCdn}, + new SignalContactDiscoveryUrl[] {qatarGoogleDiscovery, baseGoogleDiscovery, baseAndroidDiscovery, mapsOneAndroidDiscovery, mapsTwoAndroidDiscovery, mailAndroidDiscovery})); }}; this.uncensoredConfiguration = new SignalServiceConfiguration(new SignalServiceUrl[] {new SignalServiceUrl(BuildConfig.SIGNAL_URL, new SignalServiceTrustStore(context))},