use of password.pwm.http.servlet.PwmServletDefinition in project pwm by pwm-project.
the class ObsoleteUrlFilter method redirectOldUrls.
private ProcessStatus redirectOldUrls(final PwmRequest pwmRequest) throws PwmUnrecoverableException, IOException {
if (pwmRequest == null || pwmRequest.getURL() == null) {
return ProcessStatus.Continue;
}
final PwmURL pwmURL = pwmRequest.getURL();
if (pwmURL.isResourceURL() || pwmURL.isCommandServletURL()) {
return ProcessStatus.Continue;
}
if (pwmRequest.getMethod() != HttpMethod.GET) {
return ProcessStatus.Continue;
}
if (!pwmRequest.readParametersAsMap().isEmpty()) {
return ProcessStatus.Continue;
}
final String requestUrl = pwmRequest.getURLwithoutQueryString();
final String requestServletUrl = requestUrl.substring(pwmRequest.getContextPath().length(), requestUrl.length());
for (final PwmServletDefinition pwmServletDefinition : PwmServletDefinition.values()) {
boolean match = false;
for (final String patternUrl : pwmServletDefinition.urlPatterns()) {
if (patternUrl.equals(requestServletUrl)) {
match = true;
break;
}
}
if (match) {
if (!pwmServletDefinition.servletUrl().equals(requestServletUrl)) {
LOGGER.debug(pwmRequest, "obsolete url of '" + requestServletUrl + "' detected, redirecting to canonical URL of '" + pwmServletDefinition.servletUrl() + "'");
StatisticsManager.incrementStat(pwmRequest, Statistic.OBSOLETE_URL_REQUESTS);
pwmRequest.sendRedirect(pwmServletDefinition);
return ProcessStatus.Halt;
}
}
}
return ProcessStatus.Continue;
}
Aggregations