mirror of
https://github.com/dbeaver/cloudbeaver.git
synced 2026-10-24 11:35:54 +08:00
dbeaver/pro#6548 skip domain for ip addresses (#3647)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
This commit is contained in:
co-authored by
Daria Marutkina
parent
0bb7803565
commit
27d8f4c011
@@ -8,7 +8,8 @@ Bundle-Release-Date: 20250818
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-21
|
||||
Bundle-ActivationPolicy: lazy
|
||||
Bundle-Activator: io.cloudbeaver.server.CBPlatformActivator
|
||||
Require-Bundle: io.cloudbeaver.server;visibility:=reexport
|
||||
Require-Bundle: io.cloudbeaver.server;visibility:=reexport,
|
||||
com.google.guava
|
||||
Export-Package: io.cloudbeaver,
|
||||
io.cloudbeaver.model,
|
||||
io.cloudbeaver.model.config,
|
||||
|
||||
+9
-3
@@ -16,11 +16,11 @@
|
||||
*/
|
||||
package io.cloudbeaver.model.config;
|
||||
|
||||
import com.google.common.net.InetAddresses;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import io.cloudbeaver.auth.CBAuthConstants;
|
||||
import io.cloudbeaver.model.app.WebServerConfiguration;
|
||||
import io.cloudbeaver.server.CBConstants;
|
||||
import io.cloudbeaver.utils.ServletAppUtils;
|
||||
import org.jkiss.code.NotNull;
|
||||
import org.jkiss.dbeaver.Log;
|
||||
|
||||
@@ -209,12 +209,18 @@ public class CBServerConfig implements WebServerConfiguration {
|
||||
host = "http://" + host; // Default to HTTP if no scheme is provided to avoid uri parse exception
|
||||
}
|
||||
URI uri = URI.create(host);
|
||||
StringBuilder hostNameBuilder = new StringBuilder();
|
||||
hostNameBuilder.append(ServletAppUtils.removeSideSlashes(uri.getHost() != null ? uri.getHost() : host));
|
||||
String hostName = uri.getHost() != null ? uri.getHost() : host;
|
||||
if (InetAddresses.isInetAddress(hostName)) {
|
||||
log.warn("Host URI contains an IP address: " + hostName + ", skipped.");
|
||||
continue;
|
||||
}
|
||||
StringBuilder hostNameBuilder = new StringBuilder(hostName);
|
||||
|
||||
if (uri.getPort() > 0) {
|
||||
hostNameBuilder.append(':')
|
||||
.append(uri.getPort());
|
||||
}
|
||||
|
||||
uniqueHosts.add(hostNameBuilder.toString());
|
||||
} catch (Exception e) {
|
||||
log.error("Invalid host URI: " + host, e);
|
||||
|
||||
+16
-9
@@ -16,6 +16,7 @@
|
||||
*/
|
||||
package io.cloudbeaver.server.jetty;
|
||||
|
||||
import com.google.common.net.InetAddresses;
|
||||
import io.cloudbeaver.model.config.CBServerConfig;
|
||||
import io.cloudbeaver.server.CBApplication;
|
||||
import io.cloudbeaver.utils.ServletAppUtils;
|
||||
@@ -61,23 +62,30 @@ public class RequestHostFilter implements Filter {
|
||||
chain.doFilter(request, response);
|
||||
return;
|
||||
}
|
||||
boolean isIpAddress = InetAddresses.isInetAddress(originUri.getHost());
|
||||
String servletPath = httpRequest.getServletPath();
|
||||
if (CommonUtils.isNotEmpty(servletPath)) {
|
||||
for (String excludedPath : excludedPaths) {
|
||||
if (servletPath.contains(excludedPath)) {
|
||||
chain.doFilter(request, response);
|
||||
return;
|
||||
if (!isIpAddress) {
|
||||
if (CommonUtils.isNotEmpty(servletPath)) {
|
||||
for (String excludedPath : excludedPaths) {
|
||||
if (servletPath.contains(excludedPath)) {
|
||||
chain.doFilter(request, response);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
validateHosts(serverConfig, httpRequest, response, originUri);
|
||||
}
|
||||
validateHosts(serverConfig, httpRequest, response, originUri);
|
||||
validateSchema(serverConfig, httpRequest, response, originUri);
|
||||
|
||||
}
|
||||
chain.doFilter(request, response);
|
||||
}
|
||||
|
||||
private void validateSchema(CBServerConfig serverConfig, HttpServletRequest httpRequest, ServletResponse response, URI originUri) {
|
||||
private void validateSchema(
|
||||
@NotNull CBServerConfig serverConfig,
|
||||
@NotNull HttpServletRequest httpRequest,
|
||||
@NotNull ServletResponse response,
|
||||
@NotNull URI originUri
|
||||
) {
|
||||
boolean httpsExpected = serverConfig.isForceHttps();
|
||||
try {
|
||||
if ("http".equals(originUri.getScheme()) && httpsExpected) {
|
||||
@@ -93,7 +101,6 @@ public class RequestHostFilter implements Filter {
|
||||
.append(httpRequest.getQueryString());
|
||||
}
|
||||
((HttpServletResponse) response).sendRedirect(redirectUrlBuilder.toString());
|
||||
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("Failed to redirect to HTTPS", e);
|
||||
|
||||
Reference in New Issue
Block a user