/** * Returns the original host's server name requested by the client. * @param request * @return */ public static String getRequestServerName(HttpServletRequest request) { String requestHost = getFarthestRequestHost(request); if (requestHost == null) { return request.getServerName(); } int offset = requestHost.indexOf(':'); if (offset != -1) { return requestHost.substring(0, offset); } else { return requestHost; } }
private static String getFarthestUrlPrefix(final HttpServletRequest servletRequest) { final String farthestRequestScheme = HstRequestUtils.getFarthestRequestScheme(servletRequest); final String farthestRequestHost = HstRequestUtils.getFarthestRequestHost(servletRequest, false); return farthestRequestScheme + "://" + farthestRequestHost; }
public String getBaseURL(HttpServletRequest request) { StringBuilder builder = new StringBuilder(); String scheme = this.getScheme(); if (scheme == null) { scheme = "http"; } String serverName = HstRequestUtils.getFarthestRequestHost(request); builder.append(scheme); builder.append("://").append(serverName); return builder.toString(); }
public String getBaseURL(HttpServletRequest request) { final StringBuilder builder = new StringBuilder(); final String scheme = HstRequestUtils.getFarthestRequestScheme(request); final String serverName = HstRequestUtils.getFarthestRequestHost(request, false); builder.append(scheme); builder.append("://").append(serverName); return builder.toString(); }
public static String getBaseURL(HttpServletRequest request) { final StringBuilder builder = new StringBuilder(); final String scheme = HstRequestUtils.getFarthestRequestScheme(request); final String serverName = HstRequestUtils.getFarthestRequestHost(request, false); builder.append(scheme); builder.append("://").append(serverName); return builder.toString(); }
/** * Returns the original host' port number requested by the client. * @param request * @return */ public static int getRequestServerPort(HttpServletRequest request) { String requestHost = getFarthestRequestHost(request); if (requestHost == null) { return request.getServerPort(); } int offset = requestHost.indexOf(':'); if (offset != -1) { return Integer.parseInt(requestHost.substring(offset + 1)); } else { return ("https".equals(request.getScheme()) ? 443 : 80); } }
public Serializable create(final HstRequestContext requestContext) { HttpServletRequest request = requestContext.getServletRequest(); StringBuilder requestInfo = new StringBuilder(256); final char delim = '\uFFFF'; Optional<String> antiCacheValue = webFilesAntiCacheValue; if (antiCacheValue == null) { antiCacheValue = populateAntiCacheValue(requestContext); } if (antiCacheValue.isPresent()) { requestInfo.append(antiCacheValue.get()).append(delim); } // Implementers should differentiate between GET and HEAD requests otherwise blank pages // can result. requestInfo.append(request.getMethod()).append(delim); requestInfo.append(HstRequestUtils.getFarthestRequestScheme(request)).append(delim); requestInfo.append(HstRequestUtils.getFarthestRequestHost(request)).append(delim); requestInfo.append(request.getRequestURI()).append(delim); requestInfo.append(StringUtils.defaultString(request.getQueryString())).append(delim); // AFter an internal HST FORWARD, all the above parts are the same because same http request, // but the base URL pathInfo has been changed. Hence, we need to account for pathInfo // to make sure that in a FORWARDED request we do not get the same cached entry requestInfo.append(requestContext.getBaseURL().getPathInfo()).append(delim); return requestInfo.toString(); }
@Override public void invoke(ValveContext context) throws ContainerException { HttpServletResponse servletResponse = context.getServletResponse(); String url = HstRequestUtils.getFarthestRequestHost(context.getServletRequest()) + context.getServletRequest().getRequestURI(); if (!StringUtils.isEmpty(context.getServletRequest().getQueryString())) { url += "?" + context.getServletRequest().getQueryString(); } log.warn("Return HttpServletResponse.SC_NOT_FOUND (404) because NoopPipeline was invoked for {}", context.getServletRequest()); servletResponse.setStatus(HttpServletResponse.SC_NOT_FOUND); // do not call invoke next as we already return no content } }
varsMap.put("HTTP_HOST", HstRequestUtils.getFarthestRequestHost(request));
/** * when there is not {@link ResolvedVirtualHost} on the {@link HttpServletRequest}, we try to resolve it and set it on the {@link HttpServletRequest} in * this method. * @param request */ private void resolveVirtualHost(HttpServletRequest request) { ResolvedVirtualHost resolvedVirtualHost = (ResolvedVirtualHost) request.getAttribute(ContainerConstants.VIRTUALHOSTS_REQUEST_ATTR); if (resolvedVirtualHost != null) { return; } String hostName = HstRequestUtils.getFarthestRequestHost(request); HstManager hstSitesManager = HstServices.getComponentManager().getComponent(HstManager.class.getName()); try { resolvedVirtualHost = hstSitesManager.getVirtualHosts().matchVirtualHost(hostName); request.setAttribute(ContainerConstants.VIRTUALHOSTS_REQUEST_ATTR, resolvedVirtualHost); } catch (Exception e) { log.warn("Unable to match '" + hostName + "' to a hst host. Try to complete request without but contextpath might be included in URLs while not desired", e); } }
cmsBaseUrl = mount.getCmsLocations().get(0); } else { cmsBaseUrl = getBestCmsLocation(mount.getCmsLocations(), HstRequestUtils.getFarthestRequestHost(servletRequest, false));
public HstContainerURL parseURL(HttpServletRequest request, HttpServletResponse response, ResolvedMount resolvedMount) { HstContainerURLImpl url = new HstContainerURLImpl(); url.setContextPath(request.getContextPath()); url.setHostName(HstRequestUtils.getFarthestRequestHost(request)); url.setPortNumber(HstRequestUtils.getRequestServerPort(request)); url.setRequestPath(HstRequestUtils.getRequestPath(request)); url.setCharacterEncoding(HstRequestUtils.getCharacterEncoding(request)); String uriEncoding = HstRequestUtils.getURIEncoding(request); url.setURIEncoding(uriEncoding); try { Map<String, String[]> paramMap = HstRequestUtils.parseQueryString(request); url.setParameters(paramMap); } catch (UnsupportedEncodingException e) { if (log.isDebugEnabled()) { log.warn("Unsupported encoding in request, using empty query parameters:", e); } else { log.warn("Unsupported encoding in request, using empty query parameters: " + e.toString()); } } url.setResolvedMountPath(resolvedMount.getResolvedMountPath()); url.setPathInfo(request.getPathInfo()); parseRequestInfo(url); return url; }
if (mount == null) { try { mount = vHosts.matchSiteMount(HstRequestUtils.getFarthestRequestHost(req), req.getContextPath() , HstRequestUtils.getRequestPath(req)); if(mount != null) { requestContext.setResolvedSiteMount(mount); throw new MatchException("No matching SiteMount for '"+HstRequestUtils.getFarthestRequestHost(req)+"' and '"+req.getRequestURI()+"'"); logger.warn(HstRequestUtils.getFarthestRequestHost(req)+"' and '"+req.getRequestURI()+"' could not be processed by the HST: {}" , e.getMessage()); res.sendError(HttpServletResponse.SC_NOT_FOUND); return; if(resolvedSiteMapItem == null) { logger.warn(HstRequestUtils.getFarthestRequestHost(req)+"' and '"+req.getRequestURI()+"' could not be processed by the HST: Error resolving request to sitemap item"); res.sendError(HttpServletResponse.SC_NOT_FOUND); return; logger.warn(HstRequestUtils.getFarthestRequestHost(req)+"' and '"+req.getRequestURI()+"' could not be processed by the HST: No hstSite and no custom namedPipeline for SiteMount"); res.sendError(HttpServletResponse.SC_NOT_FOUND);
public HstContainerURL parseURL(HttpServletRequest request, HttpServletResponse response, ResolvedSiteMount resolvedSiteMount) { HstContainerURLImpl url = new HstContainerURLImpl(); url.setContextPath(request.getContextPath()); url.setHostName(HstRequestUtils.getFarthestRequestHost(request)); url.setPortNumber(HstRequestUtils.getRequestServerPort(request)); url.setRequestPath(HstRequestUtils.getRequestPath(request)); String characterEncoding = request.getCharacterEncoding(); if (characterEncoding == null) { characterEncoding = "ISO-8859-1"; } url.setCharacterEncoding(characterEncoding); Map<String, String []> paramMap = HttpUtils.parseQueryString(request); url.setParameters(paramMap); url.setResolvedMountPath(resolvedSiteMount.getResolvedMountPath()); String [] namespacedPartAndPathInfo = splitPathInfo(resolvedSiteMount, request, characterEncoding); url.setPathInfo(namespacedPartAndPathInfo[1]); parseRequestInfo(url,namespacedPartAndPathInfo[0]); return url; }
String hostName = getFarthestRequestHost(containerRequest);
if(resolvedSiteMapItem == null) { throw new MatchException("Error resolving request to sitemap item: '"+HstRequestUtils.getFarthestRequestHost(req)+"' and '"+req.getRequestURI()+"'");