2929import java .util .regex .Matcher ;
3030import java .util .regex .Pattern ;
3131
32+ import javax .net .ssl .HostnameVerifier ;
3233import javax .net .ssl .SSLContext ;
34+ import javax .net .ssl .SSLSession ;
3335import javax .net .ssl .SSLSocketFactory ;
3436import javax .net .ssl .TrustManager ;
3537import javax .net .ssl .TrustManagerFactory ;
@@ -55,6 +57,7 @@ public class Navigator {
5557 public static int writeTimeout = 10 ;
5658 public static int readTimeout = 30 ;
5759 public static int connectionRetry = 10 ;
60+ private static boolean trustAll ;
5861 private static CookieJar cookieJar ;
5962 private static Navigator instance ;
6063 public OkHttpClient httpClient ;
@@ -74,6 +77,7 @@ private Navigator(Context context) throws Exception {
7477 connectionRetry = Integer .parseInt (prefs .getString ("connection_retry" , "10" ));
7578 readTimeout = Integer .parseInt (prefs .getString ("read_timeout" , "30" ));
7679 connectionTimeout = Integer .parseInt (prefs .getString ("connection_timeout" , "10" ));
80+ trustAll = prefs .getBoolean ("accept_all_certs" , false );
7781 cookieJar = new CookieFilter (new SetCookieCache (), new SharedPrefsCookiePersistor (context ));
7882 initClient (cookieJar , context );
7983 }
@@ -110,7 +114,28 @@ public static CookieJar getCookieJar() {
110114 }
111115
112116 private void initClient (CookieJar cookieJar , Context context ) throws KeyManagementException , NoSuchAlgorithmException {
113- TrustManager [] trustManagers = getTrustManagers (context );
117+ TrustManager [] trustManagers ;
118+ if (trustAll ) {
119+ trustManagers = new TrustManager []{
120+ new X509TrustManager () {
121+ @ Override
122+ public void checkClientTrusted (java .security .cert .X509Certificate [] chain , String authType ) throws CertificateException {
123+ }
124+
125+ @ Override
126+ public void checkServerTrusted (java .security .cert .X509Certificate [] chain , String authType ) throws CertificateException {
127+ }
128+
129+ @ Override
130+ public java .security .cert .X509Certificate [] getAcceptedIssuers () {
131+ return new java .security .cert .X509Certificate []{};
132+ }
133+ }
134+ };
135+ } else {
136+ trustManagers = getTrustManagers (context );
137+ }
138+
114139 SSLContext sslContext = SSLContext .getInstance ("TLS" );
115140 sslContext .init (null , trustManagers , null );
116141 SSLSocketFactory socketFactory = null ;
@@ -119,7 +144,8 @@ private void initClient(CookieJar cookieJar, Context context) throws KeyManageme
119144 } else {
120145 socketFactory = sslContext .getSocketFactory ();
121146 }
122- httpClient = new OkHttpClientConnectionChecker .Builder ()
147+
148+ OkHttpClientConnectionChecker .Builder cBuilder = new OkHttpClientConnectionChecker .Builder ()
123149 .addInterceptor (new UncompressInterceptor ())
124150 .addInterceptor (new RetryInterceptor ())// the interceptors list appear to be a lifo
125151 .addInterceptor (new CFInterceptor ())
@@ -129,7 +155,16 @@ private void initClient(CookieJar cookieJar, Context context) throws KeyManageme
129155 .readTimeout (30 , TimeUnit .SECONDS )
130156 .cookieJar (cookieJar )
131157 //.dns(new MmNDNS())//
132- .build ();
158+ ;
159+ if (trustAll ) {
160+ cBuilder .hostnameVerifier (new HostnameVerifier () {
161+ @ Override
162+ public boolean verify (String hostname , SSLSession session ) {
163+ return true ;
164+ }
165+ });
166+ }
167+ httpClient = cBuilder .build ();
133168 Navigator .cookieJar = cookieJar ;
134169 }
135170
0 commit comments