Author: keith
Date: Thu Feb 12 00:11:41 2009
New Revision: 30699
URL: http://wso2.org/svn/browse/wso2?view=rev&revision=30699

Log:
Applying following fix to the branch

Author: keith
Date: Mon Oct 20 00:28:11 2008
New Revision: 22603
URL: http://wso2.org/svn/browse/wso2?view=rev&revision=22603

Log:
Putting in a patch that addresses
https://issues.apache.org/jira/browse/AXIS2-4050



Added:
   
branches/mashup/java/1.5/java/modules/patches/axis2/src/org/apache/axis2/transport/http/
   
branches/mashup/java/1.5/java/modules/patches/axis2/src/org/apache/axis2/transport/http/ProxyConfiguration.java
Modified:
   
branches/mashup/java/1.5/java/modules/patches/axis2/resources/axis2-patches.txt

Modified: 
branches/mashup/java/1.5/java/modules/patches/axis2/resources/axis2-patches.txt
URL: 
http://wso2.org/svn/browse/wso2/branches/mashup/java/1.5/java/modules/patches/axis2/resources/axis2-patches.txt?rev=30699&r1=30698&r2=30699&view=diff
==============================================================================
--- 
branches/mashup/java/1.5/java/modules/patches/axis2/resources/axis2-patches.txt 
    (original)
+++ 
branches/mashup/java/1.5/java/modules/patches/axis2/resources/axis2-patches.txt 
    Thu Feb 12 00:11:41 2009
@@ -5,6 +5,7 @@
 https://issues.apache.org/jira/browse/AXIS2-3897
 https://issues.apache.org/jira/browse/AXIS2-3902
 https://issues.apache.org/jira/browse/AXIS2-3961
+https://issues.apache.org/jira/browse/AXIS2-4050
 https://wso2.org/jira/browse/MASHUP-1048
 https://wso2.org/jira/browse/MASHUP-1056
 https://wso2.org/jira/browse/MASHUP-1061

Added: 
branches/mashup/java/1.5/java/modules/patches/axis2/src/org/apache/axis2/transport/http/ProxyConfiguration.java
URL: 
http://wso2.org/svn/browse/wso2/branches/mashup/java/1.5/java/modules/patches/axis2/src/org/apache/axis2/transport/http/ProxyConfiguration.java?pathrev=30699
==============================================================================
--- (empty file)
+++ 
branches/mashup/java/1.5/java/modules/patches/axis2/src/org/apache/axis2/transport/http/ProxyConfiguration.java
     Thu Feb 12 00:11:41 2009
@@ -0,0 +1,345 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.axis2.transport.http;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.Parameter;
+import org.apache.commons.httpclient.*;
+import org.apache.commons.httpclient.auth.AuthScope;
+
+import javax.xml.namespace.QName;
+import java.net.URL;
+
+
+/**
+ * The purpose of this class is to configure the proxy auth regardles of the 
protocol.
+ * Proxy will be set only for HTTP connection
+ */
+
+public class ProxyConfiguration {
+
+    protected String proxyHost;
+    protected String nonProxyHosts;
+    protected int proxyPort = -1; //If port is not set, default is set to -1
+    protected String proxyUser;
+    protected String proxyPassword;
+
+    protected static final String HTTP_PROXY_HOST = "http.proxyHost";
+    protected static final String HTTP_PROXY_PORT = "http.proxyPort";
+    protected static final String HTTP_NON_PROXY_HOSTS = "http.nonProxyHosts";
+
+    protected static final String ATTR_PROXY = "Proxy";
+    protected static final String PROXY_HOST_ELEMENT = "ProxyHost";
+    protected static final String PROXY_PORT_ELEMENT = "ProxyPort";
+    protected static final String PROXY_USER_ELEMENT = "ProxyUser";
+    protected static final String PROXY_PASSWORD_ELEMENT = "ProxyPassword";
+
+    public void configure(MessageContext messageContext,
+                          HttpClient httpClient,
+                          HostConfiguration config) throws AxisFault {
+
+        //        <parameter name="Proxy">
+        //              <Configuration>
+        //                     <ProxyHost>example.org</ProxyHost>
+        //                     <ProxyPort>5678</ProxyPort>
+        //                     <ProxyUser>EXAMPLE\saminda</ProxyUser>
+        //                     <ProxyPassword>ppp</ProxyPassword>
+        //              </Configuration>
+        //        </parameter>
+        Credentials proxyCred = null;
+
+        //Getting configuration values from Axis2.xml
+        Parameter param = 
messageContext.getConfigurationContext().getAxisConfiguration()
+                .getParameter(ATTR_PROXY);
+
+        if (param != null) {
+            OMElement configurationEle = 
param.getParameterElement().getFirstElement();
+            if (configurationEle == null) {
+                throw new AxisFault(
+                        ProxyConfiguration.class.getName() + " Configuration 
element is missing");
+            }
+
+            OMElement proxyHostEle =
+                    configurationEle.getFirstChildWithName(new 
QName(PROXY_HOST_ELEMENT));
+            OMElement proxyPortEle =
+                    configurationEle.getFirstChildWithName(new 
QName(PROXY_PORT_ELEMENT));
+            OMElement proxyUserEle =
+                    configurationEle.getFirstChildWithName(new 
QName(PROXY_USER_ELEMENT));
+            OMElement proxyPasswordEle =
+                    configurationEle.getFirstChildWithName(new 
QName(PROXY_PASSWORD_ELEMENT));
+
+            if (proxyHostEle == null) {
+                throw new AxisFault(
+                        ProxyConfiguration.class.getName() + " ProxyHost 
element is missing");
+            }
+            String text = proxyHostEle.getText();
+            if (text == null) {
+                throw new AxisFault(
+                        ProxyConfiguration.class.getName() + " ProxyHost's 
value is missing");
+            }
+
+            this.setProxyHost(text);
+
+            if (proxyPortEle != null) {
+                this.setProxyPort(Integer.parseInt(proxyPortEle.getText()));
+            }
+
+            if (proxyUserEle != null) {
+                this.setProxyUser(proxyUserEle.getText());
+            }
+
+            if (proxyPasswordEle != null) {
+                this.setProxyPassword(proxyPasswordEle.getText());
+            }
+
+            if (this.getProxyUser() == null && this.getProxyUser() == null) {
+                proxyCred = new UsernamePasswordCredentials("", "");
+            } else {
+                proxyCred =
+                        new UsernamePasswordCredentials(this.getProxyUser(),
+                                                        
this.getProxyPassword());
+            }
+
+            // if the username is in the form "DOMAIN\\user"
+            // then use NTCredentials instead.
+            if (this.getProxyUser() != null) {
+                int domainIndex = this.getProxyUser().indexOf("\\");
+                if (domainIndex > 0) {
+                    String domain = this.getProxyUser().substring(0, 
domainIndex);
+                    if (this.getProxyUser().length() > domainIndex + 1) {
+                        String user = 
this.getProxyUser().substring(domainIndex + 1);
+                        proxyCred = new NTCredentials(user,
+                                                      this.getProxyPassword(),
+                                                      this.getProxyHost(),
+                                                      domain);
+                    }
+                }
+            }
+        }
+
+        // Overide the property setting in runtime.
+        HttpTransportProperties.ProxyProperties proxyProperties =
+                (HttpTransportProperties.ProxyProperties) messageContext
+                        .getProperty(HTTPConstants.PROXY);
+
+        if (proxyProperties != null) {
+            String host = proxyProperties.getProxyHostName();
+            if (host == null || host.length() == 0) {
+                throw new AxisFault(ProxyConfiguration.class.getName() +
+                                    " Proxy host is not available. Host is a 
MUST parameter");
+
+            } else {
+                this.setProxyHost(host);
+            }
+
+
+            this.setProxyPort(proxyProperties.getProxyPort());
+
+            //Setting credentials
+
+            String userName = proxyProperties.getUserName();
+            String password = proxyProperties.getPassWord();
+            String domain = proxyProperties.getDomain();
+
+            if (userName == null && password == null) {
+                proxyCred = new UsernamePasswordCredentials("", "");
+            } else {
+                proxyCred = new UsernamePasswordCredentials(userName, 
password);
+            }
+
+            if (userName != null && password != null && domain != null) {
+                proxyCred = new NTCredentials(userName, password, host, 
domain);
+            }
+
+        }
+
+        //Using Java Networking Properties
+
+        String host = System.getProperty(HTTP_PROXY_HOST);
+        if (host != null) {
+            this.setProxyHost(host);
+            proxyCred = new UsernamePasswordCredentials("","");
+        }
+
+        String port = System.getProperty(HTTP_PROXY_PORT);
+
+        if (port != null) {
+            this.setProxyPort(Integer.parseInt(port));
+        }
+
+        if (proxyCred == null) {
+            throw new AxisFault(ProxyConfiguration.class.getName() +
+                                    " Minimum proxy credentials are not set");
+        }
+        httpClient.getParams().setAuthenticationPreemptive(true);
+        httpClient.getState().setProxyCredentials(AuthScope.ANY, proxyCred);
+        config.setProxy(this.getProxyHost(), this.getProxyPort());
+    }
+
+    /**
+     * Check first if the proxy is configured or active.
+     * If yes this will return true. This is not a deep check
+     *
+     * @param messageContext
+     * @return boolean
+     */
+
+    public static boolean isProxyEnabled(MessageContext messageContext, URL 
targetURL)
+            throws AxisFault {
+
+        boolean state = false;
+
+
+        Parameter param = 
messageContext.getConfigurationContext().getAxisConfiguration()
+                .getParameter(ATTR_PROXY);
+
+        //If configuration is over ridden
+        Object obj = messageContext.getProperty(HTTPConstants.PROXY);
+
+        //From Java Networking Properties
+        String sp = System.getProperty(HTTP_PROXY_HOST);
+
+        if (param != null || obj != null || sp != null) {
+            state = true;
+        }
+
+        boolean isNonProxyHost = validateNonProxyHosts(targetURL.getHost());
+
+        return state && !isNonProxyHost;
+
+    }
+
+    /**
+     * Validates for names that shouldn't be listered as proxies.
+     * The http.nonProxyHosts can be set to specify the hosts which should be
+     * connected to directly (not through the proxy server).
+     * The value of the http.nonProxyHosts property can be a list of hosts,
+     * each separated by a |; it can also take a regular expression for 
matches;
+     * for example: *.sfbay.sun.com would match any fully qualified hostname 
in the sfbay domain.
+     *
+     * For more information refer to : 
http://java.sun.com/features/2002/11/hilevel_network.html
+     *
+     * false : validation fail : User can use the proxy
+     * true : validation pass ; User can't use the proxy
+     *
+     * @return boolean
+     */
+    private static boolean validateNonProxyHosts(String targetHost) {
+
+        //From system property http.nonProxyHosts
+        String nonProxyHosts = System.getProperty(HTTP_NON_PROXY_HOSTS);
+
+        if (nonProxyHosts == null) {
+            return false;
+        }
+
+        String[] nonProxyHostsArray = nonProxyHosts.split("\\|");
+
+        if (nonProxyHostsArray.length == 1) {
+            return targetHost.matches(nonProxyHosts);
+        } else {
+            boolean pass = false;
+            for (int i = 0; i < nonProxyHostsArray.length; i++) {
+                String a = nonProxyHostsArray[i];
+                if (targetHost.matches(a)) {
+                    pass = true;
+                    break;
+                }
+            }
+            return pass;
+        }
+    }
+
+    /**
+     * Retrun proxy host
+     *
+     * @return String
+     */
+    public String getProxyHost() {
+        return proxyHost;
+    }
+
+    /**
+     * set proxy host
+     *
+     * @param proxyHost
+     */
+
+    public void setProxyHost(String proxyHost) {
+        this.proxyHost = proxyHost;
+    }
+
+    /**
+     * retrun proxy port
+     *
+     * @return String
+     */
+    public int getProxyPort() {
+        return proxyPort;
+    }
+
+    /**
+     * set proxy port
+     *
+     * @param proxyPort
+     */
+    public void setProxyPort(int proxyPort) {
+        this.proxyPort = proxyPort;
+    }
+
+    /**
+     * return proxy user. Proxy user can be user/domain or user
+     *
+     * @return String
+     */
+    public String getProxyUser() {
+        return proxyUser;
+    }
+
+    /**
+     * get proxy user
+     *
+     * @param proxyUser
+     */
+    public void setProxyUser(String proxyUser) {
+        this.proxyUser = proxyUser;
+    }
+
+    /**
+     * set password
+     *
+     * @return String
+     */
+    public String getProxyPassword() {
+        return proxyPassword;
+    }
+
+    /**
+     * get password
+     *
+     * @param proxyPassword
+     */
+    public void setProxyPassword(String proxyPassword) {
+        this.proxyPassword = proxyPassword;
+    }
+
+
+}

_______________________________________________
Mashup-dev mailing list
[email protected]
https://wso2.org/cgi-bin/mailman/listinfo/mashup-dev

Reply via email to