Refine search
@Override public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { baseRequest.setHandled(true); if ("Get".equalsIgnoreCase(request.getMethod())) { response.setStatus(200); String proxyPath = baseRequest.getHttpURI().toString(); response.setContentLength(proxyPath.length()); response.setContentType("text/plain"); try (PrintWriter writer = response.getWriter()) { writer.print(proxyPath); writer.flush(); } } else { response.setStatus(404); response.setContentType("text/plain"); response.setContentLength(0); } } }
private static MetaData.Request toRequestMetadata(ServiceRequestContext ctx, AggregatedHttpMessage aReq) { // Construct the HttpURI final StringBuilder uriBuf = new StringBuilder(); final HttpHeaders aHeaders = aReq.headers(); uriBuf.append(ctx.sessionProtocol().isTls() ? "https" : "http"); uriBuf.append("://"); uriBuf.append(aHeaders.authority()); uriBuf.append(aHeaders.path()); final HttpURI uri = new HttpURI(uriBuf.toString()); uri.setPath(ctx.mappedPath()); // Convert HttpHeaders to HttpFields final HttpFields jHeaders = new HttpFields(aHeaders.size()); aHeaders.forEach(e -> { final AsciiString key = e.getKey(); if (!key.isEmpty() && key.byteAt(0) != ':') { jHeaders.add(key.toString(), e.getValue()); } }); return new MetaData.Request( aHeaders.method().name(), uri, HttpVersion.HTTP_1_1, jHeaders, aReq.content().length()); }
public void handle(String s, org.eclipse.jetty.server.Request r, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { if ("GET".equalsIgnoreCase(request.getMethod())) { response.addHeader("target", r.getHttpURI().getPath()); response.setStatus(HttpServletResponse.SC_OK); } else { // this handler is to handle POST request response.sendError(HttpServletResponse.SC_FORBIDDEN); } r.setHandled(true); } }
@Test public void shouldSetRequestUri() { HttpURI requestUri = new HttpURI("foo/bar/baz"); when(request.getHttpURI()).thenReturn(requestUri); jetty9Request.setRequestURI("foo/junk?a=b&c=d"); assertThat(requestUri.getPath(), is("foo/junk?a=b&c=d")); } }
public void handleAsync(AbstractHttpConnection connection) throws IOException, ServletException { final AsyncContinuation async = connection.getRequest().getAsyncContinuation(); final AsyncContinuation.AsyncEventState state = async.getAsyncEventState(); final Request baseRequest=connection.getRequest(); final String path=state.getPath(); if (path!=null) { // this is a dispatch with a path final String contextPath=state.getServletContext().getContextPath(); HttpURI uri = new HttpURI(URIUtil.addPaths(contextPath,path)); baseRequest.setUri(uri); baseRequest.setRequestURI(null); baseRequest.setPathInfo(baseRequest.getRequestURI()); if (uri.getQuery()!=null) baseRequest.mergeQueryString(uri.getQuery()); //we have to assume dispatch path and query are UTF8 } final String target=baseRequest.getPathInfo(); final HttpServletRequest request=(HttpServletRequest)async.getRequest(); final HttpServletResponse response=(HttpServletResponse)async.getResponse(); if (LOG.isDebugEnabled()) { LOG.debug("REQUEST "+target+" on "+connection); handle(target, baseRequest, request, response); LOG.debug("RESPONSE "+target+" "+connection.getResponse().getStatus()); } else handle(target, baseRequest, request, response); }
protected void forward(ServletRequest request, ServletResponse response, DispatcherType dispatch) throws ServletException, IOException Request baseRequest=Request.getBaseRequest(request); Response base_response=baseRequest.getResponse(); base_response.resetForForward(); response = new ServletResponseHttpWrapper(response); final boolean old_handled=baseRequest.isHandled(); final HttpURI old_uri=baseRequest.getHttpURI(); attr._query=old_uri.getQuery(); attr._requestURI=old_uri.getPath(); attr._contextPath=old_context_path; attr._servletPath=old_servlet_path; HttpURI uri = new HttpURI(old_uri.getScheme(),old_uri.getHost(),old_uri.getPort(), _uri.getPath(),_uri.getParam(),_uri.getQuery(),_uri.getFragment()); baseRequest.setHttpURI(uri); baseRequest.setServletPath(null); baseRequest.setPathInfo(_pathInContext); if (_uri.getQuery()!=null || old_uri.getQuery()!=null) baseRequest.mergeQueryParameters(old_uri.getQuery(),_uri.getQuery(), true); baseRequest.setAttributes(attr);
if (_uri != null && _uri.hasQuery()) _uri.decodeQueryTo(_baseParameters); else _uri.decodeQueryTo(_baseParameters,_queryEncoding); if (LOG.isDebugEnabled()) LOG.warn(e); else LOG.warn(e.toString()); String encoding = getCharacterEncoding(); String content_type = getContentType(); if (content_type != null && content_type.length() > 0) content_type = HttpFields.valueParameters(content_type,null); && (HttpMethods.POST.equals(getMethod()) || HttpMethods.PUT.equals(getMethod()))) int content_length = getContentLength();
public void handleAsync(HttpChannel connection) throws IOException, ServletException { final HttpChannelState state = connection.getRequest().getHttpChannelState(); final AsyncContextEvent event = state.getAsyncContextEvent(); final Request baseRequest=connection.getRequest(); final String path=event.getPath(); if (path!=null) { // this is a dispatch with a path ServletContext context=event.getServletContext(); String query=baseRequest.getQueryString(); baseRequest.setURIPathQuery(URIUtil.addPaths(context==null?null:context.getContextPath(), path)); HttpURI uri = baseRequest.getHttpURI(); baseRequest.setPathInfo(uri.getDecodedPath()); if (uri.getQuery()!=null) baseRequest.mergeQueryParameters(query,uri.getQuery(), true); //we have to assume dispatch path and query are UTF8 } final String target=baseRequest.getPathInfo(); final HttpServletRequest request=(HttpServletRequest)event.getSuppliedRequest(); final HttpServletResponse response=(HttpServletResponse)event.getSuppliedResponse(); if (LOG.isDebugEnabled()) { LOG.debug(request.getDispatcherType()+" "+request.getMethod()+" "+target+" on "+connection); handle(target, baseRequest, request, response); LOG.debug("RESPONSE "+target+" "+connection.getResponse().getStatus()); } else handle(target, baseRequest, request, response); }
_expect102Processing = false; if (_request.getTimeStamp() == 0) _request.setTimeStamp(System.currentTimeMillis()); _request.setMethod(httpMethod, method); _uri.parseConnect(uri.array(),uri.arrayOffset()+uri.position(),uri.remaining()); else _uri.parse(uri.array(),uri.arrayOffset()+uri.position(),uri.remaining()); _request.setUri(_uri); try path = _uri.getDecodedPath(); LOG.warn("Failed UTF-8 decode for request path, trying ISO-8859-1"); LOG.ignore(e); path = _uri.getDecodedPath(StringUtil.__ISO_8859_1);
public void handleAsync(HttpChannel<?> connection) throws IOException, ServletException { final HttpChannelState state = connection.getRequest().getHttpChannelState(); final AsyncContextEvent event = state.getAsyncContextEvent(); final Request baseRequest=connection.getRequest(); final String path=event.getPath(); if (path!=null) { // this is a dispatch with a path ServletContext context=event.getServletContext(); HttpURI uri = new HttpURI(URIUtil.addPaths(context==null?null:context.getContextPath(), path)); baseRequest.setUri(uri); baseRequest.setRequestURI(null); baseRequest.setPathInfo(uri.getDecodedPath()); if (uri.getQuery()!=null) baseRequest.mergeQueryParameters(uri.getQuery(), true); //we have to assume dispatch path and query are UTF8 } final String target=baseRequest.getPathInfo(); final HttpServletRequest request=(HttpServletRequest)event.getSuppliedRequest(); final HttpServletResponse response=(HttpServletResponse)event.getSuppliedResponse(); if (LOG.isDebugEnabled()) { LOG.debug(request.getDispatcherType()+" "+request.getMethod()+" "+target+" on "+connection); handle(target, baseRequest, request, response); LOG.debug("RESPONSE "+target+" "+connection.getResponse().getStatus()); } else handle(target, baseRequest, request, response); }
private MultiMap<String> extractQueryParameters() { MultiMap<String> result = new MultiMap<>(); if (_uri != null && _uri.hasQuery()) { if (_queryEncoding == null) { _uri.decodeQueryTo(result); } else { try { _uri.decodeQueryTo(result, _queryEncoding); } catch (UnsupportedEncodingException e) { if (LOG.isDebugEnabled()) LOG.warn(e); else LOG.warn(e.toString()); } } } return result; }
public void onRequest(MetaData.Request request) { _requests.incrementAndGet(); _request.setTimeStamp(System.currentTimeMillis()); HttpFields fields = _response.getHttpFields(); if (_configuration.getSendDateHeader() && !fields.contains(HttpHeader.DATE)) fields.put(_connector.getServer().getDateField()); long idleTO=_configuration.getIdleTimeout(); _oldIdleTimeout=getIdleTimeout(); if (idleTO>=0 && _oldIdleTimeout!=idleTO) setIdleTimeout(idleTO); request.setTrailerSupplier(_trailerSupplier); _request.setMetaData(request); _request.setSecure(HttpScheme.HTTPS.is(request.getURI().getScheme())); notifyRequestBegin(_request); if (LOG.isDebugEnabled()) LOG.debug("REQUEST for {} on {}{}{} {} {}{}{}",request.getURIString(),this,System.lineSeparator(), request.getMethod(),request.getURIString(),request.getHttpVersion(),System.lineSeparator(), request.getFields()); }
_expect102Processing = false; _request.setTimeStamp(System.currentTimeMillis()); _request.setMethod(httpMethod, method); _uri.parseConnect(uri.array(),uri.arrayOffset()+uri.position(),uri.remaining()); else _uri.parse(uri.array(),uri.arrayOffset()+uri.position(),uri.remaining()); _request.setUri(_uri); path = _uri.getDecodedPath(); LOG.warn("Failed UTF-8 decode for request path, trying ISO-8859-1"); LOG.ignore(e); path = _uri.getDecodedPath(StandardCharsets.ISO_8859_1); if( path==null && _uri.getScheme()!=null &&_uri.getHost()!=null)
public HttpChannel(Connector connector, HttpConfiguration configuration, EndPoint endPoint, HttpTransport transport, HttpInput<T> input) { _connector = connector; _configuration = configuration; _endPoint = endPoint; _transport = transport; _uri = new HttpURI(URIUtil.__CHARSET); _state = new HttpChannelState(this); input.init(_state); _request = new Request(this, input); _response = new Response(this, new HttpOutput(this)); if (LOG.isDebugEnabled()) LOG.debug("new {} -> {},{},{}",this,_endPoint,_endPoint.getConnection(),_state); }
@Override public void log(Request request, Response response) { if (logger.isDebugEnabled()) { logger.debug( "%s %s %s %s", request.getRemoteAddr(), request.getMethod(), request.getHttpURI().toString(), request.getProtocol() ); } } }
/** * @param uri * an absolute URI (for example 'http://localhost/foo/bar?a=1') */ public void setURI(URI uri) { if (!uri.isAbsolute()) throw new IllegalArgumentException("!Absolute URI: " + uri); if (uri.isOpaque()) throw new IllegalArgumentException("Opaque URI: " + uri); if (LOG.isDebugEnabled()) LOG.debug("URI = {}",uri.toASCIIString()); String scheme = uri.getScheme(); int port = uri.getPort(); if (port <= 0) port = "https".equalsIgnoreCase(scheme)?443:80; setScheme(scheme); setAddress(new Address(uri.getHost(),port)); HttpURI httpUri = new HttpURI(uri); String completePath = httpUri.getCompletePath(); setRequestURI(completePath == null?"/":completePath); }
_serverName = _uri.getHost(); if (_serverName != null) _port = _uri.getPort(); return _serverName; String hostPort = _fields.getStringField(HttpHeader.HOST); LOG.warn(e); _serverName=hostPort; _port=0; _serverName = getLocalName(); _port = getLocalPort(); if (_serverName != null && !StringUtil.ALL_INTERFACES.equals(_serverName)) return _serverName; LOG.ignore(e);
public AbstractHttpConnection(Connector connector, EndPoint endpoint, Server server) { super(endpoint); _uri = StringUtil.__UTF8.equals(URIUtil.__CHARSET)?new HttpURI():new EncodedHttpURI(URIUtil.__CHARSET); _connector = connector; HttpBuffers ab = (HttpBuffers)_connector; _parser = newHttpParser(ab.getRequestBuffers(), endpoint, new RequestHandler()); _requestFields = new HttpFields(); _responseFields = new HttpFields(); _request = new Request(this); _response = new Response(this); _generator = newHttpGenerator(ab.getResponseBuffers(), endpoint); _generator.setSendServerVersion(server.getSendServerVersion()); _server = server; }
/** * <p>Pushes a secondary resource identified by this dispatcher.</p> * * @param request the primary request * @deprecated Use {@link Request#getPushBuilder()} instead */ @Deprecated public void push(ServletRequest request) { Request baseRequest = Request.getBaseRequest(request); HttpFields fields = new HttpFields(baseRequest.getHttpFields()); String query=baseRequest.getQueryString(); if (_uri.hasQuery()) { if (query==null) query=_uri.getQuery(); else query=query+"&"+_uri.getQuery(); // TODO is this correct semantic? } HttpURI uri = HttpURI.createHttpURI(request.getScheme(),request.getServerName(),request.getServerPort(),_uri.getPath(),baseRequest.getHttpURI().getParam(),query,null); MetaData.Request push = new MetaData.Request(HttpMethod.GET.asString(),uri,baseRequest.getHttpVersion(),fields); baseRequest.getHttpChannel().getHttpTransport().push(push); }
@Override public RequestDispatcher getRequestDispatcher(String uriInContext) { if (uriInContext == null) return null; if (!uriInContext.startsWith("/")) return null; try { HttpURI uri = new HttpURI(null,null,0,uriInContext); String pathInfo=URIUtil.canonicalPath(uri.getDecodedPath()); if (pathInfo==null) return null; String contextPath=getContextPath(); if (contextPath!=null && contextPath.length()>0) uri.setPath(URIUtil.addPaths(contextPath,uri.getPath())); return new Dispatcher(ContextHandler.this,uri,pathInfo); } catch (Exception e) { LOG.ignore(e); } return null; }