[Yanel-commits] rev 24260 - in public/yanel/trunk/src:
contributions/resources/atom/src/java/org/wyona/yanel/impl/resources
core/java/org/wyona/yanel/core/map
webapp/src/java/org/wyona/yanel/servlet
michi at wyona.com
michi at wyona.com
Tue May 8 11:46:43 CEST 2007
Author: michi
Date: 2007-05-08 11:46:41 +0200 (Tue, 08 May 2007)
New Revision: 24260
Modified:
public/yanel/trunk/src/contributions/resources/atom/src/java/org/wyona/yanel/impl/resources/AtomFeedResource.java
public/yanel/trunk/src/core/java/org/wyona/yanel/core/map/Realm.java
public/yanel/trunk/src/core/java/org/wyona/yanel/core/map/RealmConfiguration.java
public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/YanelServlet.java
Log:
ssl proxy port introduced and proxy code refactored
Modified: public/yanel/trunk/src/contributions/resources/atom/src/java/org/wyona/yanel/impl/resources/AtomFeedResource.java
===================================================================
--- public/yanel/trunk/src/contributions/resources/atom/src/java/org/wyona/yanel/impl/resources/AtomFeedResource.java 2007-05-08 09:43:34 UTC (rev 24259)
+++ public/yanel/trunk/src/contributions/resources/atom/src/java/org/wyona/yanel/impl/resources/AtomFeedResource.java 2007-05-08 09:46:41 UTC (rev 24260)
@@ -133,13 +133,11 @@
if (proxyHostName != null) {
URL url = new URL(requestURL);
url = new URL(url.getProtocol(), proxyHostName, url.getPort(), url.getFile());
- String proxyPort = realm.getProxyPort();
- if (proxyPort != null) {
- if (proxyPort.length() > 0) {
- url = new URL(url.getProtocol(), url.getHost(), new Integer(proxyPort).intValue(), url.getFile());
- } else {
- url = new URL(url.getProtocol(), url.getHost(), url.getDefaultPort(), url.getFile());
- }
+ int proxyPort = realm.getProxyPort();
+ if (proxyPort >= 0) {
+ url = new URL(url.getProtocol(), url.getHost(), proxyPort, url.getFile());
+ } else {
+ url = new URL(url.getProtocol(), url.getHost(), url.getDefaultPort(), url.getFile());
}
String proxyPrefix = realm.getProxyPrefix();
if (proxyPrefix != null) {
Modified: public/yanel/trunk/src/core/java/org/wyona/yanel/core/map/Realm.java
===================================================================
--- public/yanel/trunk/src/core/java/org/wyona/yanel/core/map/Realm.java 2007-05-08 09:43:34 UTC (rev 24259)
+++ public/yanel/trunk/src/core/java/org/wyona/yanel/core/map/Realm.java 2007-05-08 09:46:41 UTC (rev 24260)
@@ -59,8 +59,10 @@
private File rootDir;
private String[] languages;
+ private boolean proxySet = false;
private String proxyHostName;
- private String proxyPort;
+ private int proxyPort = -1;
+ private int proxySSLPort = -1;
private String proxyPrefix;
/**
@@ -71,6 +73,8 @@
this.id = id;
this.mountPoint = mountPoint;
this.configFile = configFile;
+
+ proxySet = false;
if (configFile != null) {
DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
@@ -91,6 +95,9 @@
}
}
+ /**
+ *
+ */
protected void configure(Configuration config) throws Exception {
Yanel yanel = Yanel.getInstance();
@@ -195,15 +202,24 @@
/**
*
*/
- public void setProxy(String hostName, String port, String prefix) {
+ public void setProxy(String hostName, int port, int sslPort, String prefix) {
+ proxySet = true;
proxyHostName = hostName;
proxyPort = port;
+ proxySSLPort = sslPort;
proxyPrefix = prefix;
}
/**
*
*/
+ public boolean isProxySet() {
+ return proxySet;
+ }
+
+ /**
+ *
+ */
public String getProxyHostName() {
return proxyHostName;
}
@@ -211,13 +227,20 @@
/**
*
*/
- public String getProxyPort() {
+ public int getProxyPort() {
return proxyPort;
}
/**
*
*/
+ public int getProxySSLPort() {
+ return proxySSLPort;
+ }
+
+ /**
+ *
+ */
public String getProxyPrefix() {
return proxyPrefix;
}
@@ -227,15 +250,26 @@
*/
public String toString() {
String descr = "Name: " + name + ", ID: " + id + ", Mount-Point: " + mountPoint;
- if (proxyHostName != null) {
- descr = descr + ", Reverse Proxy Host Name: " + proxyHostName;
+ if (isProxySet()) {
+ if (proxyHostName != null) {
+ descr = descr + ", Reverse Proxy Host Name: " + proxyHostName;
+ }
+ if (proxyPort >= 0) {
+ descr = descr + ", Reverse Proxy Port: " + proxyPort;
+ } else {
+ descr = descr + ", Reverse Proxy Port is set to default 80 (resp. -1)";
+ }
+ if (proxySSLPort >= 0) {
+ descr = descr + ", Reverse Proxy SSL Port: " + proxySSLPort;
+ } else {
+ descr = descr + ", Reverse Proxy SSL Port is set to default 443 (resp. -1)";
+ }
+ if (proxyPrefix != null) {
+ descr = descr + ", Reverse Proxy Prefix: " + proxyPrefix;
+ }
+ } else {
+ descr = descr + ", No reverse proxy set";
}
- if (proxyPort != null) {
- descr = descr + ", Reverse Proxy Port: " + proxyPort;
- }
- if (proxyPrefix != null) {
- descr = descr + ", Reverse Proxy Prefix: " + proxyPrefix;
- }
return descr;
}
Modified: public/yanel/trunk/src/core/java/org/wyona/yanel/core/map/RealmConfiguration.java
===================================================================
--- public/yanel/trunk/src/core/java/org/wyona/yanel/core/map/RealmConfiguration.java 2007-05-08 09:43:34 UTC (rev 24259)
+++ public/yanel/trunk/src/core/java/org/wyona/yanel/core/map/RealmConfiguration.java 2007-05-08 09:46:41 UTC (rev 24260)
@@ -197,7 +197,6 @@
String realmId = realmElements[i].getAttribute("id", null);
String rootFlag = realmElements[i].getAttribute("root", "false");
Configuration name = realmElements[i].getChild("name", false);
- Configuration proxy = realmElements[i].getChild("reverse-proxy", false);
Configuration configElement = realmElements[i].getChild("config", false);
if (configElement == null) {
throw new ConfigurationException("Missing <config src=\"...\"/> child element for realm " + realmId);
@@ -209,8 +208,11 @@
try {
Realm realm = new Realm(name.getValue(), realmId, mountPoint, realmConfigFile);
+ Configuration proxy = realmElements[i].getChild("reverse-proxy", false);
if (proxy != null) {
- realm.setProxy(proxy.getChild("host-name").getValue(), proxy.getChild("port").getValue(""), proxy.getChild("prefix").getValue());
+ int proxyPort = new Integer(proxy.getChild("port").getValue("-1")).intValue();
+ int proxySSLPort = new Integer(proxy.getChild("ssl-port").getValue("-1")).intValue();
+ realm.setProxy(proxy.getChild("host-name").getValue(), proxyPort, proxySSLPort, proxy.getChild("prefix").getValue());
}
log.info("Realm: " + realm);
@@ -326,8 +328,8 @@
while(keyIterator.hasNext()) {
String key = (String)keyIterator.next();
Realm realm = (Realm)hm.get(key);
- if ((realm.getProxyHostName() == null) && (!key.equals(rootRealm.getID()))) {
- realm.setProxy(rootRealm.getProxyHostName(), rootRealm.getProxyPort(), rootRealm.getProxyPrefix());
+ if ((realm.getProxyHostName() == null) && (!key.equals(rootRealm.getID())) && rootRealm.isProxySet()) {
+ realm.setProxy(rootRealm.getProxyHostName(), rootRealm.getProxyPort(), rootRealm.getProxySSLPort(), rootRealm.getProxyPrefix());
log.debug("Inherit root realm properties to realm: " + key);
}
if (realm.getIdentityManager() == null) {
Modified: public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/YanelServlet.java
===================================================================
--- public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/YanelServlet.java 2007-05-08 09:43:34 UTC (rev 24259)
+++ public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/YanelServlet.java 2007-05-08 09:46:41 UTC (rev 24260)
@@ -1044,8 +1044,19 @@
if(sslPort != null) {
log.info("Redirect to SSL ...");
try {
- URL url = new URL(getRequestURLQS(request, null, false).toString());
+ URL url = new URL(getRequestURLQS(request, null, false).toString());
url = new URL("https", url.getHost(), new Integer(sslPort).intValue(), url.getFile());
+ log.error("Redirect to SSL: " + url);
+ if (realm.isProxySet()) {
+ if (realm.getProxySSLPort() >= 0) {
+ log.error("DEBUG: Use configured port: " + realm.getProxySSLPort());
+ url = new URL(url.getProtocol(), url.getHost(), new Integer(realm.getProxySSLPort()).intValue(), url.getFile());
+ } else {
+ log.error("DEBUG: Use default port: " + url.getDefaultPort());
+ // NOTE: getDefaultPort depends on the Protocol (e.g. https is 443)
+ url = new URL(url.getProtocol(), url.getHost(), url.getDefaultPort(), url.getFile());
+ }
+ }
response.setHeader("Location", url.toString());
// TODO: Yulup has a bug re TEMPORARY_REDIRECT
//response.setStatus(javax.servlet.http.HttpServletResponse.SC_TEMPORARY_REDIRECT);
@@ -1111,43 +1122,43 @@
}
/**
- *
+ * Patch request with proxy settings re realm configuration
*/
private String getRequestURLQS(HttpServletRequest request, String addQS, boolean xml) {
- //Realm realm = map.getRealm(new Path(request.getServletPath()));
try {
Realm realm = map.getRealm(request.getServletPath());
// TODO: Handle this exception more gracefully!
if (realm == null) log.error("No realm found for path " +request.getServletPath());
+
String proxyHostName = realm.getProxyHostName();
- String proxyPort = realm.getProxyPort();
+ int proxyPort = realm.getProxyPort();
String proxyPrefix = realm.getProxyPrefix();
URL url = null;
url = new URL(request.getRequestURL().toString());
- if (proxyHostName != null) {
- url = new URL(url.getProtocol(), proxyHostName, url.getPort(), url.getFile());
- }
+ //if(proxyHostName != null || proxyPort >= null || proxyPrefix != null) {
+ if(realm.isProxySet()) {
+ if (proxyHostName != null) {
+ url = new URL(url.getProtocol(), proxyHostName, url.getPort(), url.getFile());
+ }
- if (proxyPort != null) {
- if (proxyPort.length() > 0) {
- url = new URL(url.getProtocol(), url.getHost(), new Integer(proxyPort).intValue(), url.getFile());
+ if (proxyPort >= 0) {
+ url = new URL(url.getProtocol(), url.getHost(), proxyPort, url.getFile());
} else {
url = new URL(url.getProtocol(), url.getHost(), url.getDefaultPort(), url.getFile());
}
- }
- if (proxyPrefix != null) {
- url = new URL(url.getProtocol(), url.getHost(), url.getPort(), url.getFile().substring(proxyPrefix.length()));
+ if (proxyPrefix != null) {
+ url = new URL(url.getProtocol(), url.getHost(), url.getPort(), url.getFile().substring(proxyPrefix.length()));
+ }
+ log.error("DEBUG: Proxy enabled for this realm resp. request: " + realm + ", " + url);
+ } else {
+ log.error("DEBUG: No proxy set for this realm resp. request: " + realm + ", " + url);
}
- if(proxyHostName != null || proxyPort != null || proxyPrefix != null) {
- log.debug("Proxy enabled request: " + url);
- }
-
String urlQS = url.toString();
if (request.getQueryString() != null) {
urlQS = urlQS + "?" + request.getQueryString();
More information about the Yanel-commits
mailing list