Alon Bar-Lev has uploaded a new change for review.

Change subject: utils: RedirectServlet: replace localhost to engine host
......................................................................

utils: RedirectServlet: replace localhost to engine host

as the redirect happens at client side, the client needs explicit host
name, while localhost may appear at engine configuration in regard of
where resource may be.

to overcome this, replace localhost with the known engine host.

Change-Id: I155489de230124339be4f2493686c83ebaee3a68
Signed-off-by: Alon Bar-Lev <alo...@redhat.com>
---
M 
backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/servlet/RedirectServlet.java
1 file changed, 31 insertions(+), 8 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/85/35885/1

diff --git 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/servlet/RedirectServlet.java
 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/servlet/RedirectServlet.java
index 784b1d7..a44c62f 100644
--- 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/servlet/RedirectServlet.java
+++ 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/servlet/RedirectServlet.java
@@ -1,6 +1,8 @@
 package org.ovirt.engine.core.utils.servlet;
 
 import java.io.IOException;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 import javax.servlet.ServletConfig;
 import javax.servlet.ServletException;
@@ -26,26 +28,47 @@
 public class RedirectServlet extends HttpServlet {
     private static final long serialVersionUID = -1794616863361241804L;
 
+    private static final String url404Default = 
EngineLocalConfig.getInstance().getEngineURI() + "/404.html";
+    private static final Pattern urlPattern = Pattern.compile(
+        
"((?<prefix>(\\w*://)(^[:]*(:[^@]*)?)?)?(?<host>[^/:]+)?)?(?<suffix>.*)"
+    );
+
     private static final String TARGET_URL = "targetUrl";
     private static final String URL404 = "url404";
 
     private String targetUrl;
     private String url404;
-    private static final String url404Default = 
EngineLocalConfig.getInstance().getEngineURI() + "/404.html";
+
+    private String fixLocalhostURL(String url) {
+        Matcher m = urlPattern.matcher(url);
+        if (m.matches()) {
+            String host = m.group("host");
+            if (host != null) {
+                if (host.equals("localhost") || host.startsWith("127.") || 
host.equals("::1")) {
+                    url = String.format(
+                        "%s%s%s",
+                        m.group("prefix") != null ? m.group("prefix") : "",
+                        EngineLocalConfig.getInstance().getHost(),
+                        m.group("suffix") != null ? m.group("suffix") : ""
+                    );
+                }
+            }
+        }
+        return url;
+    }
 
     @Override
     public void init(ServletConfig config) throws ServletException {
         super.init(config);
 
         // we use %{x} convention to avoid conflict with jboss properties
-        targetUrl = EngineLocalConfig.getInstance().expandString(
-                config.getInitParameter(TARGET_URL).replaceAll("%\\{", 
"\\${"));
-        String url404ConfigValue = config.getInitParameter(URL404);
-        if (StringUtils.isNotEmpty(url404ConfigValue)) {
-            url404 = 
EngineLocalConfig.getInstance().expandString(url404ConfigValue.replaceAll("%\\{",
 "\\${"));
-        } else {
-            url404 = url404Default;
+        targetUrl = 
fixLocalhostURL(EngineLocalConfig.getInstance().expandString(
+                config.getInitParameter(TARGET_URL).replaceAll("%\\{", 
"\\${")));
+        url404 = url404Default;
+        if (StringUtils.isNotEmpty(config.getInitParameter(URL404))) {
+            url404 = config.getInitParameter(URL404);
         }
+        url404 = 
fixLocalhostURL(EngineLocalConfig.getInstance().expandString(url404.replaceAll("%\\{",
 "\\${")));
     }
 
     @Override


-- 
To view, visit http://gerrit.ovirt.org/35885
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I155489de230124339be4f2493686c83ebaee3a68
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Alon Bar-Lev <alo...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to