|  | @@ -1,6 +1,8 @@
 | 
	
		
			
				|  |  |  package com.vpn.fastestvpnservice.retrofit;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import android.content.pm.PackageInfo;
 | 
	
		
			
				|  |  | +import android.os.Build;
 | 
	
		
			
				|  |  | +import android.util.Log;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import com.stealthcopter.networktools.Ping;
 | 
	
		
			
				|  |  |  import de.blinkt.openvpn.core.App;
 | 
	
	
		
			
				|  | @@ -10,8 +12,13 @@ import com.vpn.fastestvpnservice.retrofit.entities.GsonFactory;
 | 
	
		
			
				|  |  |  import com.vpn.fastestvpnservice.utils.StaticMethods;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import java.io.IOException;
 | 
	
		
			
				|  |  | +import java.security.cert.X509Certificate;
 | 
	
		
			
				|  |  |  import java.util.concurrent.TimeUnit;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import javax.net.ssl.SSLContext;
 | 
	
		
			
				|  |  | +import javax.net.ssl.TrustManager;
 | 
	
		
			
				|  |  | +import javax.net.ssl.X509TrustManager;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  import okhttp3.Interceptor;
 | 
	
		
			
				|  |  |  import okhttp3.OkHttpClient;
 | 
	
		
			
				|  |  |  import okhttp3.Request;
 | 
	
	
		
			
				|  | @@ -43,6 +50,14 @@ public class WebServiceFactory {
 | 
	
		
			
				|  |  |          httpClient.connectTimeout(120, TimeUnit.SECONDS);
 | 
	
		
			
				|  |  |          httpClient.readTimeout(120, TimeUnit.SECONDS);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
 | 
	
		
			
				|  |  | +            Log.d("build_api", "VERSION = " + Build.VERSION.RELEASE + ", " + Build.VERSION.SDK_INT + ", " + Build.VERSION_CODES.O);
 | 
	
		
			
				|  |  | +            httpClient.sslSocketFactory(getUnsafeSslContext().getSocketFactory(), getTrustManager());
 | 
	
		
			
				|  |  | +            httpClient.hostnameVerifier((hostname, session) -> true);
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +            Log.d("build_api", "else");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          boolean isTV = StaticMethods.isTV(App.getContext().getApplicationContext());
 | 
	
		
			
				|  |  |          String platform = "";
 | 
	
		
			
				|  |  |          if (isTV) { platform = "TV"; } else { platform = "android"; }
 | 
	
	
		
			
				|  | @@ -91,4 +106,41 @@ public class WebServiceFactory {
 | 
	
		
			
				|  |  |          return instance;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    private static SSLContext getUnsafeSslContext() {
 | 
	
		
			
				|  |  | +        try {
 | 
	
		
			
				|  |  | +            final TrustManager[] trustAllCerts = new TrustManager[]{
 | 
	
		
			
				|  |  | +                    new X509TrustManager() {
 | 
	
		
			
				|  |  | +                        public java.security.cert.X509Certificate[] getAcceptedIssuers() {
 | 
	
		
			
				|  |  | +                            return new java.security.cert.X509Certificate[]{};
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                        @Override
 | 
	
		
			
				|  |  | +                        public void checkClientTrusted(X509Certificate[] chain, String authType) {}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                        @Override
 | 
	
		
			
				|  |  | +                        public void checkServerTrusted(X509Certificate[] chain, String authType) {}
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +            };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            final SSLContext sslContext = SSLContext.getInstance("TLS");
 | 
	
		
			
				|  |  | +            sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
 | 
	
		
			
				|  |  | +            return sslContext;
 | 
	
		
			
				|  |  | +        } catch (Exception e) {
 | 
	
		
			
				|  |  | +            throw new RuntimeException(e);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private static X509TrustManager getTrustManager() {
 | 
	
		
			
				|  |  | +        return new X509TrustManager() {
 | 
	
		
			
				|  |  | +            public java.security.cert.X509Certificate[] getAcceptedIssuers() {
 | 
	
		
			
				|  |  | +                return new java.security.cert.X509Certificate[]{};
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            @Override
 | 
	
		
			
				|  |  | +            public void checkClientTrusted(X509Certificate[] chain, String authType) {}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            @Override
 | 
	
		
			
				|  |  | +            public void checkServerTrusted(X509Certificate[] chain, String authType) {}
 | 
	
		
			
				|  |  | +        };
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  }
 |