Package org.jboss.com.sun.net.httpserver

Examples of org.jboss.com.sun.net.httpserver.Headers


    @Override
    public void doFilter(HttpExchange exchange, Chain chain) throws IOException {
        if (domainCBH.isReady()) {
            chain.doFilter(exchange);
        } else {
            Headers responseHeaders = exchange.getResponseHeaders();
            responseHeaders.add(LOCATION, redirectTo + "/");
            exchange.sendResponseHeaders(TEMPORARY_REDIRECT, 0);
            exchange.close();
        }
    }
View Full Code Here


            return eof;
        }
    }

    public static ParseResult parseHeaders(InputStream stream) throws IOException {
        Headers headers  = new Headers();

        StringBuilder builder = new StringBuilder();
        String key = null, value = null;
        int c;

        loop:
        for (int lastc = -1, lastc2 = -1, lastc3 = -1; (c = stream.read()) != -1;) {
            boolean skip = false;
            switch (c) {
                case ':':
                    if (key == null) {
                        key = trim(builder).toString();
                        builder.setLength(0);
                        skip = true;
                    }
                    break;
                case '\t':
                    // Convert tabs to spaces
                    c = ' ';
                    break;
                case ' ':
                    // continuation
                    if (lastc == '\n' && lastc2 == '\r') {
                        builder.setLength(builder.length() - 2);
                    }

                    break;
                case '\n':
                    if (lastc3 == '\r' && lastc2 == '\n' && lastc == '\r') {
                        key = value = null;
                        break loop;
                    }
                    break;
                default:
                    if (lastc == '\n' && lastc2 == '\r') {
                        // Ignore garbage lines without a key
                        if (key != null) {
                            builder.setLength(builder.length() - 2);
                            value =  ltrim(builder).toString();
                        }

                        builder.setLength(0);
                    }
                    break;
            }

            if (!skip)
                builder.append((char)c);

            if (value != null) {
                headers.add(key, value);
                key = null;
                value = null;
            }

            lastc3 = lastc2;
            lastc2 = lastc;
            lastc = c;
        }

        if (key != null) {
            value = ltrim(builder).toString();
            headers.add(key, value);
        }

        return new ParseResult(headers, c == -1);
    }
View Full Code Here

        ModelNode dmr = null;
        ModelNode response;
        int status = OK;

        Headers requestHeaders = http.getRequestHeaders();
        boolean encode = APPLICATION_DMR_ENCODED.equals(requestHeaders.getFirst(ACCEPT))
                || APPLICATION_DMR_ENCODED.equals(requestHeaders.getFirst(CONTENT_TYPE));

        try {
            dmr = isGet ? convertGetRequest(request) : convertPostRequest(http.getRequestBody(), encode);
            response = modelController.execute(new OperationBuilder(dmr).build());
        } catch (Throwable t) {
View Full Code Here

     * @param encode Flag indicating whether or not to Base64 encode the response payload.
     * @throws IOException if an error occurs while attempting to generate the HTTP response.
     */
    private void writeResponse(final HttpExchange http, boolean isGet, boolean pretty, ModelNode response, int status,
            boolean encode, String contentType) throws IOException {
        final Headers responseHeaders = http.getResponseHeaders();
        responseHeaders.add(CONTENT_TYPE, contentType);
        responseHeaders.add(ACCESS_CONTROL_ALLOW_ORIGIN, "*");
        http.sendResponseHeaders(status, 0);

        final OutputStream out = http.getResponseBody();
        final PrintWriter print = new PrintWriter(out);

View Full Code Here

        while (!stream.isOuterStreamClosed()) {
            // purposefully send the trailing CRLF to headers so that a headerless body can be detected
            MimeHeaderParser.ParseResult result = MimeHeaderParser.parseHeaders(stream);
            if (result.eof()) continue; // Skip content-less part

            Headers partHeaders = result.headers();
            String disposition = partHeaders.getFirst(CONTENT_DISPOSITION);
            if (disposition != null) {
                matcher = DISPOSITION_FILE.matcher(disposition);
                if (matcher.matches()) {
                    SeekResult seek = new SeekResult();
                    seek.fileName = matcher.group(1);
View Full Code Here

    public void doFilter(HttpExchange exchange, Chain chain) throws IOException {
        URI requestURI = exchange.getRequestURI();
        String path = requestURI.getPath();

        if (path.endsWith("/") == false) {
            Headers responseHeaders = exchange.getResponseHeaders();
            responseHeaders.add(LOCATION, path + "/");
            exchange.sendResponseHeaders(MOVED_PERMENANTLY, 0);
            exchange.close();
        } else {
            chain.doFilter(exchange);
        }
View Full Code Here

            // "/console" request redirect to "/console/index.html"

            InetSocketAddress address = http.getHttpContext().getServer().getAddress();
            String hostName = address.getHostName();
            int port = address.getPort();
            final Headers responseHeaders = http.getResponseHeaders();
            responseHeaders.add(CONTENT_TYPE, TEXT_HTML);
            responseHeaders.add(LOCATION, "http://"+hostName + ":"+port+"/console/index.html");
            http.sendResponseHeaders(FOUND, 0);

            OutputStream outputStream = http.getResponseBody();
            outputStream.flush();
            safeClose(outputStream);

            return;
        } else if(resource.indexOf(".")==-1) {
            respond404(http);
        }

        // load resource
        InputStream inputStream = getLoader().getResourceAsStream(resource);

        if(inputStream!=null) {

            final Headers responseHeaders = http.getResponseHeaders();
            responseHeaders.add(CONTENT_TYPE, resolveContentType(path));
            responseHeaders.add(ACCESS_CONTROL_ALLOW_ORIGIN, WILDCARD);


            boolean skipcache = resource.endsWith(NOCACHE_JS);
            if(!skipcache){
                // provide 'Expires' headers for GWT files

                if(System.currentTimeMillis()>lastExpiryDate) {
                    lastExpiryDate = calculateExpiryDate();
                    lastExpiryHeader = htmlExpiresDateFormat().format(new Date(lastExpiryDate));
                }

                responseHeaders.add(EXPIRES_HEADER, lastExpiryHeader);
            }

            http.sendResponseHeaders(OK, 0);

            // nio write
View Full Code Here

        return contentType;
    }

    private void respond404(HttpExchange http) throws IOException {

        final Headers responseHeaders = http.getResponseHeaders();
        responseHeaders.add(CONTENT_TYPE, TEXT_HTML);
        responseHeaders.add(ACCESS_CONTROL_ALLOW_ORIGIN, WILDCARD);
        http.sendResponseHeaders(NOT_FOUND, 0);
        OutputStream out = http.getResponseBody();
        out.flush();
        safeClose(out);
    }
View Full Code Here

        if (context.isAuthenticated()) {
            return new Authenticator.Success(context.getPrincipal());
        }

        // No previous authentication so time to continue the process.
        Headers requestHeaders = httpExchange.getRequestHeaders();
        if (requestHeaders.containsKey(AUTHORIZATION_HEADER) == false) {
            Headers responseHeaders = httpExchange.getResponseHeaders();

            responseHeaders.add(WWW_AUTHENTICATE_HEADER, CHALLENGE + " " + createChallenge(false));

            return new Authenticator.Retry(UNAUTHORIZED);
        }

        String authorizationHeader = requestHeaders.getFirst(AUTHORIZATION_HEADER);
        if (authorizationHeader.startsWith(CHALLENGE + " ") == false) {
            throw new RuntimeException("Invalid 'Authorization' header.");
        }
        String challenge = authorizationHeader.substring(CHALLENGE.length() + 1);
        Map<String, String> challengeParameters = parseDigestChallenge(challenge);

        // Validate Challenge, expect one of 3 responses VALID, INVALID, STALE

        HttpPrincipal principal = validateUser(httpExchange, challengeParameters);

        // INVALID - Username / Password verification failed - Nonce is irrelevant.
        if (principal == null) {
            if (challengeParameters.containsKey(NONCE)) {
                nonceFactory.useNonce(challengeParameters.get(NONCE));
            }

            Headers responseHeaders = httpExchange.getResponseHeaders();
            responseHeaders.add(WWW_AUTHENTICATE_HEADER, CHALLENGE + " " + createChallenge(false));
            return new Authenticator.Retry(UNAUTHORIZED);
        }

        // VALID - Verified username and password, Nonce is correct.
        if (nonceFactory.useNonce(challengeParameters.get(NONCE))) {
            context.principal = principal;

            return new Authenticator.Success(principal);
        }

        // STALE - Verification of username and password succeeded but Nonce now stale.
        Headers responseHeaders = httpExchange.getResponseHeaders();
        responseHeaders.add(WWW_AUTHENTICATE_HEADER, CHALLENGE + " " + createChallenge(true));
        return new Authenticator.Retry(UNAUTHORIZED);
    }
View Full Code Here

                } catch (java.net.URISyntaxException ex) {
                    // invalid Host header value, just ignore
                }
            }

            final Headers responseHeaders = http.getResponseHeaders();
            responseHeaders.add(CONTENT_TYPE, TEXT_HTML);
            responseHeaders.add(LOCATION, "http://"+hostName + ":"+port+"/console/index.html");
            http.sendResponseHeaders(FOUND, 0);

            OutputStream outputStream = http.getResponseBody();
            outputStream.flush();
            safeClose(outputStream);

            return;
        } else if(resource.indexOf(".")==-1) {
            respond404(http);
        }

        // load resource
        InputStream inputStream = getLoader().getResourceAsStream(resource);

        if(inputStream!=null) {

            final Headers responseHeaders = http.getResponseHeaders();
            responseHeaders.add(CONTENT_TYPE, resolveContentType(path));
            responseHeaders.add(ACCESS_CONTROL_ALLOW_ORIGIN, WILDCARD);


            boolean skipcache = resource.endsWith(NOCACHE_JS);
            if(!skipcache){
                // provide 'Expires' headers for GWT files

                if(System.currentTimeMillis()>lastExpiryDate) {
                    lastExpiryDate = calculateExpiryDate();
                    lastExpiryHeader = htmlExpiresDateFormat().format(new Date(lastExpiryDate));
                }

                responseHeaders.add(EXPIRES_HEADER, lastExpiryHeader);
            }

            http.sendResponseHeaders(OK, 0);

            // nio write
View Full Code Here

TOP

Related Classes of org.jboss.com.sun.net.httpserver.Headers

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.