Author: jleroux
Date: Tue Feb 28 14:39:59 2017 New Revision: 1784745 URL: http://svn.apache.org/viewvc?rev=1784745&view=rev Log: "Partially backport the fix idea from trunk framework for revision: 1784549 " ------------------------------------------------------------------------ r1784549 | jleroux | 2017-02-27 13:33:42 +0100 (lun. 27 fev. 2017) | 26 lignes Here, unlike in r1784549, I kept getDefaultServerRootUrl() and did no changes in url.properties. URL properties will be, for instance, used to specify the ports used in demos (18443/18080) Fixed: "Login and logout process in demos shows a certificate issue" (OFBIZ-9206) Also fixes "16.11 ofbizUrl include host+port and break some reverse-proxy/docker setups" (OFBIZ-9224) The idea is to use the port initially passed by a successful login request as it's done since WebSiteProperties class exists. I also don't add twice the portOffset when it's build from the request, and only then. Keep it as is when it's build from a WebSite GenericValue. We then trust the user and don't rely on the request. Thanks: Pierre Smits and Leonard Lin for reports ------------------------------------------------------------------------ Modified: ofbiz/branches/release13.07/framework/common/src/org/ofbiz/common/email/NotificationServices.java ofbiz/branches/release13.07/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java ofbiz/branches/release13.07/framework/webapp/src/org/ofbiz/webapp/ftl/OfbizUrlTransform.java Modified: ofbiz/branches/release13.07/framework/common/src/org/ofbiz/common/email/NotificationServices.java URL: http://svn.apache.org/viewvc/ofbiz/branches/release13.07/framework/common/src/org/ofbiz/common/email/NotificationServices.java?rev=1784745&r1=1784744&r2=1784745&view=diff ============================================================================== --- ofbiz/branches/release13.07/framework/common/src/org/ofbiz/common/email/NotificationServices.java (original) +++ ofbiz/branches/release13.07/framework/common/src/org/ofbiz/common/email/NotificationServices.java Tue Feb 28 14:39:59 2017 @@ -27,8 +27,6 @@ import java.net.UnknownHostException; import java.util.Locale; import java.util.Map; -import javolution.util.FastMap; - import org.ofbiz.base.container.ClassLoaderContainer; import org.ofbiz.base.util.Debug; import org.ofbiz.base.util.UtilGenerics; @@ -48,6 +46,7 @@ import org.ofbiz.service.ModelService; import org.ofbiz.service.ServiceUtil; import freemarker.template.TemplateException; +import javolution.util.FastMap; /** * Provides generic services related to preparing and @@ -267,6 +266,7 @@ public class NotificationServices { String httpPort = null; String httpServer = null; Boolean enableHttps = null; + Boolean dontAdd = false; try { // using just the IP address of localhost if we don't have a defined server @@ -296,7 +296,10 @@ public class NotificationServices { // fill in any missing properties with fields from the global file if (UtilValidate.isEmpty(httpsPort)) { - httpsPort = EntityUtilProperties.getPropertyValue("url.properties", "port.https", "443", delegator); + httpsPort = EntityUtilProperties.getPropertyValue("url.properties", "port.https", "8443", delegator); + if ("8443" != httpsPort) { + dontAdd = true; // Here we can't initialise the port from a request, so we assume it's set in properties or DB, we don't add the portOffset anyway + } } if (UtilValidate.isEmpty(httpsServer)) { httpsServer = EntityUtilProperties.getPropertyValue("url.properties", "force.https.host", localServer, delegator); @@ -315,9 +318,13 @@ public class NotificationServices { Integer httpPortValue = Integer.valueOf(httpPort); httpPortValue += ClassLoaderContainer.portOffset; httpPort = httpPortValue.toString(); - Integer httpsPortValue = Integer.valueOf(httpsPort); - httpsPortValue += ClassLoaderContainer.portOffset; - httpsPort = httpsPortValue.toString(); + if (!dontAdd) { + Integer httpsPortValue = Integer.valueOf(httpsPort); + if (!httpsPort.isEmpty()) { + httpsPortValue += ClassLoaderContainer.portOffset; + } + httpsPort = httpsPortValue.toString(); + } } // prepare the (non-secure) URL Modified: ofbiz/branches/release13.07/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java URL: http://svn.apache.org/viewvc/ofbiz/branches/release13.07/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java?rev=1784745&r1=1784744&r2=1784745&view=diff ============================================================================== --- ofbiz/branches/release13.07/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java (original) +++ ofbiz/branches/release13.07/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java Tue Feb 28 14:39:59 2017 @@ -34,8 +34,6 @@ import javax.servlet.http.HttpServletReq import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; -import javolution.util.FastMap; - import org.ofbiz.base.container.ClassLoaderContainer; import org.ofbiz.base.util.Debug; import org.ofbiz.base.util.SSLUtil; @@ -61,6 +59,8 @@ import org.ofbiz.webapp.view.ViewHandler import org.ofbiz.webapp.website.WebSiteWorker; import org.owasp.esapi.errors.EncodingException; +import javolution.util.FastMap; + /** * RequestHandler - Request Processor Object */ @@ -942,7 +942,12 @@ public class RequestHandler { public static String getDefaultServerRootUrl(HttpServletRequest request, boolean secure) { Delegator delegator = (Delegator) request.getAttribute("delegator"); - String httpsPort = EntityUtilProperties.getPropertyValue("url.properties", "port.https", "443", delegator); + Boolean dontAdd = false; + String httpsPort = EntityUtilProperties.getPropertyValue("url.properties", "port.https", "8443", delegator); + if (httpsPort.isEmpty() ) { + httpsPort = String.valueOf(request.getServerPort()); + dontAdd = true; // We take the port from the request, don't add the portOffset + } String httpsServer = EntityUtilProperties.getPropertyValue("url.properties", "force.https.host", delegator); String httpPort = EntityUtilProperties.getPropertyValue("url.properties", "port.http", "80", delegator); String httpServer = EntityUtilProperties.getPropertyValue("url.properties", "force.http.host", delegator); @@ -952,9 +957,13 @@ public class RequestHandler { Integer httpPortValue = Integer.valueOf(httpPort); httpPortValue += ClassLoaderContainer.portOffset; httpPort = httpPortValue.toString(); - Integer httpsPortValue = Integer.valueOf(httpsPort); - httpsPortValue += ClassLoaderContainer.portOffset; - httpsPort = httpsPortValue.toString(); + if (!dontAdd) { + Integer httpsPortValue = Integer.valueOf(httpsPort); + if (!httpsPort.isEmpty()) { + httpsPortValue += ClassLoaderContainer.portOffset; + } + httpsPort = httpsPortValue.toString(); + } } StringBuilder newURL = new StringBuilder(); @@ -1064,6 +1073,7 @@ public class RequestHandler { String httpPort = null; String httpServer = null; Boolean enableHttps = null; + Boolean dontAdd = false; // load the properties from the website entity GenericValue webSite; @@ -1084,7 +1094,11 @@ public class RequestHandler { // fill in any missing properties with fields from the global file if (UtilValidate.isEmpty(httpsPort)) { - httpsPort = EntityUtilProperties.getPropertyValue("url.properties", "port.https", "443", delegator); + httpsPort = EntityUtilProperties.getPropertyValue("url.properties", "port.https", "8443", delegator); + if (httpsPort.isEmpty() ) { + httpsPort = String.valueOf(request.getServerPort()); + dontAdd = true; // We take the port from the request, don't add the portOffset + } } if (UtilValidate.isEmpty(httpsServer)) { httpsServer = EntityUtilProperties.getPropertyValue("url.properties", "force.https.host", delegator); @@ -1103,9 +1117,13 @@ public class RequestHandler { Integer httpPortValue = Integer.valueOf(httpPort); httpPortValue += ClassLoaderContainer.portOffset; httpPort = httpPortValue.toString(); - Integer httpsPortValue = Integer.valueOf(httpsPort); - httpsPortValue += ClassLoaderContainer.portOffset; - httpsPort = httpsPortValue.toString(); + if (!dontAdd) { + Integer httpsPortValue = Integer.valueOf(httpsPort); + if (!httpsPort.isEmpty()) { + httpsPortValue += ClassLoaderContainer.portOffset; + } + httpsPort = httpsPortValue.toString(); + } } // create the path the the control servlet Modified: ofbiz/branches/release13.07/framework/webapp/src/org/ofbiz/webapp/ftl/OfbizUrlTransform.java URL: http://svn.apache.org/viewvc/ofbiz/branches/release13.07/framework/webapp/src/org/ofbiz/webapp/ftl/OfbizUrlTransform.java?rev=1784745&r1=1784744&r2=1784745&view=diff ============================================================================== --- ofbiz/branches/release13.07/framework/webapp/src/org/ofbiz/webapp/ftl/OfbizUrlTransform.java (original) +++ ofbiz/branches/release13.07/framework/webapp/src/org/ofbiz/webapp/ftl/OfbizUrlTransform.java Tue Feb 28 14:39:59 2017 @@ -104,6 +104,7 @@ public class OfbizUrlTransform implement BeanModel res = (BeanModel) env.getVariable("response"); Object prefix = env.getVariable("urlPrefix"); if (UtilValidate.isNotEmpty(webSiteId)) { + Boolean dontAdd = false; HttpServletRequest request = (HttpServletRequest) req.getWrappedObject(); Delegator delegator = (Delegator) request.getAttribute("delegator"); String httpsPort = null; @@ -127,7 +128,11 @@ public class OfbizUrlTransform implement } // fill in any missing properties with fields from the global file if (UtilValidate.isEmpty(httpsPort)) { - httpsPort = EntityUtilProperties.getPropertyValue("url.properties", "port.https", "443", delegator); + httpsPort = EntityUtilProperties.getPropertyValue("url.properties", "port.https", "8443", delegator); + if (httpsPort.isEmpty() ) { + httpsPort = String.valueOf(request.getServerPort()); + dontAdd = true; // We take the port from the request, don't add the portOffset + } } if (UtilValidate.isEmpty(httpsServer)) { httpsServer = EntityUtilProperties.getPropertyValue("url.properties", "force.https.host", delegator); @@ -146,11 +151,14 @@ public class OfbizUrlTransform implement Integer httpPortValue = Integer.valueOf(httpPort); httpPortValue += ClassLoaderContainer.portOffset; httpPort = httpPortValue.toString(); - Integer httpsPortValue = Integer.valueOf(httpsPort); - httpsPortValue += ClassLoaderContainer.portOffset; - httpsPort = httpsPortValue.toString(); + if (!dontAdd) { + Integer httpsPortValue = Integer.valueOf(httpsPort); + if (!httpsPort.isEmpty()) { + httpsPortValue += ClassLoaderContainer.portOffset; + } + httpsPort = httpsPortValue.toString(); + } } - if (secure && enableHttps) { String server = httpsServer; if (UtilValidate.isEmpty(server)) { |
Free forum by Nabble | Edit this page |