1
2
3
4
5
6
7
8
9
10
11
12
13 package com.eviware.soapui.impl.wsdl.support.http;
14
15 import java.net.MalformedURLException;
16 import java.net.URL;
17
18 import org.apache.commons.httpclient.Credentials;
19 import org.apache.commons.httpclient.HostConfiguration;
20 import org.apache.commons.httpclient.HttpState;
21 import org.apache.commons.httpclient.UsernamePasswordCredentials;
22 import org.apache.commons.httpclient.auth.AuthScope;
23
24 import com.eviware.soapui.SoapUI;
25 import com.eviware.soapui.model.settings.Settings;
26 import com.eviware.soapui.settings.ProxySettings;
27 import com.eviware.soapui.support.StringUtils;
28
29 /***
30 * Utilities for setting proxy-servers corectly
31 *
32 * @author ole.matzura
33 */
34
35 public class ProxyUtils
36 {
37 public static HostConfiguration initProxySettings( Settings settings, HttpState httpState, HostConfiguration hostConfiguration,
38 String urlString )
39 {
40
41 String proxyHost = System.getProperty( "http.proxyHost" );
42 String proxyPort = System.getProperty( "http.proxyPort" );
43
44 if( proxyHost == null )
45 proxyHost = settings.getString(ProxySettings.HOST, null);
46
47 if( proxyPort == null )
48 proxyPort = settings.getString(ProxySettings.PORT, null);
49
50 if( !StringUtils.isNullOrEmpty( proxyHost ) && !StringUtils.isNullOrEmpty( proxyPort ))
51 {
52
53 String[] excludes = settings.getString(ProxySettings.EXCLUDES, "").split( "," );
54
55 try
56 {
57 URL url = new URL( urlString );
58
59 if( !excludes( excludes, url.getHost(), url.getPort() ) )
60 {
61 hostConfiguration.setProxy(proxyHost, Integer.parseInt(proxyPort));
62
63 String proxyUsername = settings.getString(ProxySettings.USERNAME, null);
64 String proxyPassword = settings.getString(ProxySettings.PASSWORD, null);
65
66 if (proxyUsername != null && proxyPassword != null )
67 {
68 Credentials defaultcreds = new UsernamePasswordCredentials(proxyUsername, proxyPassword);
69 httpState.setProxyCredentials(AuthScope.ANY, defaultcreds);
70 }
71 }
72 }
73 catch( MalformedURLException e )
74 {
75 SoapUI.logError( e );
76 }
77 }
78
79 return hostConfiguration;
80 }
81
82 public static boolean excludes( String [] excludes, String proxyHost, int proxyPort )
83 {
84 for( int c = 0; c < excludes.length; c++ )
85 {
86 String exclude = excludes[c].trim();
87 if( exclude.length() == 0 )
88 continue;
89
90
91 int ix = exclude.indexOf( ':' );
92
93 if( ix >= 0 && exclude.length() > ix+1 )
94 {
95 String excludePort = exclude.substring( ix+1 );
96 if( proxyPort != -1 && excludePort.equals( String.valueOf( proxyPort )))
97 {
98 exclude = exclude.substring( 0, ix );
99 }
100 else
101 {
102 continue;
103 }
104 }
105
106 if( proxyHost.endsWith( exclude ))
107 return true;
108 }
109
110 return false;
111 }
112 }