Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 11 additions & 3 deletions src/main/java/io/supertokens/webserver/Utils.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,10 @@ public static String normalizeAndValidateStringParam(String param, String paramN
}

public static String normalizeAndValidateConnectionUriDomain(String connectionUriDomain) throws ServletException {
return normalizeAndValidateConnectionUriDomain(connectionUriDomain, true);
}

public static String normalizeAndValidateConnectionUriDomain(String connectionUriDomain, boolean throwExceptionIfInvalid) throws ServletException {
connectionUriDomain = connectionUriDomain.trim();
connectionUriDomain = connectionUriDomain.toLowerCase();

Expand All @@ -47,7 +51,9 @@ public static String normalizeAndValidateConnectionUriDomain(String connectionUr
String ipRegex = "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(:[0-9]+)?$";

if (!connectionUriDomain.matches(hostnameRegex) && !connectionUriDomain.matches(ipRegex)) {
throw new ServletException(new WebserverAPI.BadRequestException("connectionUriDomain is invalid"));
if (throwExceptionIfInvalid) {
throw new ServletException(new WebserverAPI.BadRequestException("connectionUriDomain is invalid"));
}
}

try {
Expand All @@ -58,8 +64,10 @@ public static String normalizeAndValidateConnectionUriDomain(String connectionUr
}

connectionUriDomain = url.getHost();
} catch (MalformedURLException e) {
throw new ServletException(new WebserverAPI.BadRequestException("connectionUriDomain is invalid"));
} catch (Exception e) {
if (throwExceptionIfInvalid) {
throw new ServletException(new WebserverAPI.BadRequestException("connectionUriDomain is invalid"));
}
}

return connectionUriDomain;
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/io/supertokens/webserver/WebserverAPI.java
Original file line number Diff line number Diff line change
Expand Up @@ -273,7 +273,7 @@ private String getAppId(HttpServletRequest req) {

private String getConnectionUriDomain(HttpServletRequest req) throws ServletException {
String connectionUriDomain = req.getServerName();
connectionUriDomain = Utils.normalizeAndValidateConnectionUriDomain(connectionUriDomain);
connectionUriDomain = Utils.normalizeAndValidateConnectionUriDomain(connectionUriDomain, false);

try {
if (Config.getConfig(new TenantIdentifier(connectionUriDomain, null, null), main) ==
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -515,6 +515,9 @@ public void testConnectionUriDomainValidationUtil() throws Exception {
} catch (Exception ignored) {
}
}

assertEquals("abccom", io.supertokens.webserver.Utils.normalizeAndValidateConnectionUriDomain("abccom", false));
assertEquals("local_host", io.supertokens.webserver.Utils.normalizeAndValidateConnectionUriDomain("local_host", false));
}

@Test
Expand Down