Search in sources :

Example 1 with HTTPSRequests

use of APJP.HTTP11.HTTPSRequests in project apjp by jvansteirteghem.

the class HTTPSServerWorker method process.

public void process() throws Exception {
    InputStream inputSSLSocketInputStream = inputSSLSocket.getInputStream();
    OutputStream inputSSLSocketOutputStream = inputSSLSocket.getOutputStream();
    HTTPSRequests httpsRequests = HTTPSRequests.getHTTPSRequests();
    HTTPRequestMessage httpRequestMessage1 = new HTTPRequestMessage(inputSSLSocketInputStream);
    httpRequestMessage1.read();
    HTTPMessageHeader httpRequestMessage1Header1 = httpRequestMessage1.getHTTPMessageHeader("");
    if (httpRequestMessage1Header1 == null) {
        keepAlive = false;
        return;
    }
    String httpRequestMessage1Header1Value1 = httpRequestMessage1Header1.getValue();
    if (httpRequestMessage1Header1Value1.equalsIgnoreCase("")) {
        keepAlive = false;
        return;
    }
    processHTTPRequestMessage(httpRequestMessage1);
    HTTPResponseMessage httpResponseMessage1 = null;
    try {
        HTTPSRequest httpsRequest1 = httpsRequests.createHTTPSRequest(httpRequestMessage1);
        httpsRequest1.open();
        try {
            httpResponseMessage1 = httpsRequest1.getHTTPResponseMessage();
            processHTTPResponseMessage(httpResponseMessage1);
            HTTPMessageHeader[] httpResponseMessage1Headers1 = httpResponseMessage1.getHTTPMessageHeaders();
            HTTPMessageHeader httpResponseMessage1Header1 = httpResponseMessage1Headers1[0];
            String httpResponseMessage1Header1Key1 = httpResponseMessage1Header1.getKey();
            String httpResponseMessage1Header1Value1 = httpResponseMessage1Header1.getValue();
            inputSSLSocketOutputStream.write((httpResponseMessage1Header1Value1 + "\r\n").getBytes());
            for (int i = 1; i < httpResponseMessage1Headers1.length; i = i + 1) {
                httpResponseMessage1Header1 = httpResponseMessage1Headers1[i];
                httpResponseMessage1Header1Key1 = httpResponseMessage1Header1.getKey();
                httpResponseMessage1Header1Value1 = httpResponseMessage1Header1.getValue();
                inputSSLSocketOutputStream.write((httpResponseMessage1Header1Key1 + ": " + httpResponseMessage1Header1Value1 + "\r\n").getBytes());
            }
            inputSSLSocketOutputStream.write(("\r\n").getBytes());
            httpResponseMessage1.read(inputSSLSocketOutputStream);
        } catch (Exception e) {
            throw e;
        } finally {
            try {
                httpsRequest1.close();
            } catch (Exception e) {
            }
        }
    } catch (Exception e) {
        logger.log(2, "HTTPS_SERVER_WORKER/PROCESS: EXCEPTION", e);
        if (httpResponseMessage1 == null) {
            String[] httpRequestMessage1Header1Values1 = httpRequestMessage1Header1Value1.split(" ");
            String httpRequestMessage1Header1Value2 = httpRequestMessage1Header1Values1[0];
            if (!httpRequestMessage1Header1Value2.equalsIgnoreCase("GET")) {
                throw new HTTPSServerException("HTTPS_SERVER_WORKER/PROCESS: REQUEST/METHOD != \"GET\", REQUEST/METHOD == \"" + httpRequestMessage1Header1Value2 + "\"");
            }
            HTTPMessageHeader httpRequestMessage1Header2 = httpRequestMessage1.getHTTPMessageHeader("If-Range");
            if (httpRequestMessage1Header2 != null) {
                String httpRequestMessage1Header2Value1 = httpRequestMessage1Header2.getValue();
                throw new HTTPSServerException("HTTPS_SERVER_WORKER/PROCESS: REQUEST/IF_RANGE != \"\", REQUEST/IF_RANGE == \"" + httpRequestMessage1Header2Value1 + "\"");
            }
            HTTPMessageHeader httpRequestMessage1Header3 = httpRequestMessage1.getHTTPMessageHeader("Range");
            if (httpRequestMessage1Header3 != null) {
                String httpRequestMessage1Header3Value1 = httpRequestMessage1Header3.getValue();
                throw new HTTPSServerException("HTTPS_SERVER_WORKER/PROCESS: REQUEST/RANGE != \"\", REQUEST/RANGE == \"" + httpRequestMessage1Header3Value1 + "\"");
            }
            httpRequestMessage1Header1Values1[0] = "HEAD";
            httpRequestMessage1Header1Value1 = httpRequestMessage1Header1Values1[0];
            for (int i = 1; i < httpRequestMessage1Header1Values1.length; i = i + 1) {
                httpRequestMessage1Header1Value1 = httpRequestMessage1Header1Value1 + " " + httpRequestMessage1Header1Values1[i];
            }
            httpRequestMessage1Header1.setValue(httpRequestMessage1Header1Value1);
            HTTPSRequest httpsRequest1 = httpsRequests.createHTTPSRequest(httpRequestMessage1);
            httpsRequest1.open();
            try {
                httpResponseMessage1 = httpsRequest1.getHTTPResponseMessage();
            } catch (Exception e2) {
                throw e2;
            } finally {
                try {
                    httpsRequest1.close();
                } catch (Exception e2) {
                }
            }
            HTTPMessageHeader httpResponseMessage1Header1 = httpResponseMessage1.getHTTPMessageHeader("Accept-Ranges");
            if (httpResponseMessage1Header1 == null) {
                throw new HTTPSServerException("HTTPS_SERVER_WORKER/PROCESS: RESPONSE/ACCEPT_RANGES != \"bytes\", RESPONSE/ACCEPT_RANGES == \"\"");
            }
            String httpResponseMessage1Header1Value1 = httpResponseMessage1Header1.getValue();
            if (!httpResponseMessage1Header1Value1.equalsIgnoreCase("bytes")) {
                throw new HTTPSServerException("HTTPS_SERVER_WORKER/PROCESS: RESPONSE/ACCEPT_RANGES != \"bytes\", RESPONSE/ACCEPT_RANGES == \"" + httpResponseMessage1Header1Value1 + "\"");
            }
            processHTTPResponseMessage(httpResponseMessage1);
            HTTPMessageHeader[] httpResponseMessage1Headers1 = httpResponseMessage1.getHTTPMessageHeaders();
            HTTPMessageHeader httpResponseMessage1Header2 = httpResponseMessage1Headers1[0];
            String httpResponseMessage1Header2Key1 = httpResponseMessage1Header2.getKey();
            String httpResponseMessage1Header2Value1 = httpResponseMessage1Header2.getValue();
            inputSSLSocketOutputStream.write((httpResponseMessage1Header2Value1 + "\r\n").getBytes());
            for (int i = 1; i < httpResponseMessage1Headers1.length; i = i + 1) {
                httpResponseMessage1Header2 = httpResponseMessage1Headers1[i];
                httpResponseMessage1Header2Key1 = httpResponseMessage1Header2.getKey();
                httpResponseMessage1Header2Value1 = httpResponseMessage1Header2.getValue();
                inputSSLSocketOutputStream.write((httpResponseMessage1Header2Key1 + ": " + httpResponseMessage1Header2Value1 + "\r\n").getBytes());
            }
            inputSSLSocketOutputStream.write(("\r\n").getBytes());
            HTTPMessageHeader httpResponseMessage1Header3 = httpResponseMessage1.getHTTPMessageHeader("Content-Length");
            int httpResponseMessage1Header3Value1 = 0;
            if (httpResponseMessage1Header3 != null) {
                try {
                    httpResponseMessage1Header3Value1 = new Integer(httpResponseMessage1Header3.getValue());
                } catch (Exception e2) {
                }
            }
            httpRequestMessage1Header1Values1[0] = "GET";
            httpRequestMessage1Header1Value1 = httpRequestMessage1Header1Values1[0];
            for (int i = 1; i < httpRequestMessage1Header1Values1.length; i = i + 1) {
                httpRequestMessage1Header1Value1 = httpRequestMessage1Header1Value1 + " " + httpRequestMessage1Header1Values1[i];
            }
            httpRequestMessage1Header1.setValue(httpRequestMessage1Header1Value1);
            long i = 0;
            long j = 1048576;
            if (j > httpResponseMessage1Header3Value1 - 1) {
                j = httpResponseMessage1Header3Value1 - 1;
            }
            while (i < httpResponseMessage1Header3Value1 - 1) {
                HTTPMessageHeader httpRequestMessage1Header4 = httpRequestMessage1.getHTTPMessageHeader("Range");
                if (httpRequestMessage1Header4 != null) {
                    httpRequestMessage1.removeHTTPMessageHeader(httpRequestMessage1Header4);
                }
                httpRequestMessage1.addHTTPMessageHeader(new HTTPMessageHeader("Range", "bytes=" + i + "-" + j));
                HTTPResponseMessage httpResponseMessage2 = null;
                int k = 1;
                while (k <= 5) {
                    try {
                        HTTPSRequest httpsRequest2 = httpsRequests.createHTTPSRequest(httpRequestMessage1);
                        httpsRequest2.open();
                        try {
                            httpResponseMessage2 = httpsRequest2.getHTTPResponseMessage();
                            HTTPMessageHeader httpResponseMessage2Header1 = httpResponseMessage2.getHTTPMessageHeader("Content-Range");
                            if (httpResponseMessage2Header1 == null) {
                                throw new HTTPSServerException("HTTPS_SERVER_WORKER/PROCESS: RESPONSE/CONTENT_RANGE != \"bytes " + i + "-" + j + "/" + httpResponseMessage1Header3Value1 + "\", RESPONSE/CONTENT_RANGE == \"\"");
                            }
                            String httpResponseMessage2Header1Value1 = httpResponseMessage2Header1.getValue();
                            if (!httpResponseMessage2Header1Value1.equalsIgnoreCase("bytes " + i + "-" + j + "/" + httpResponseMessage1Header3Value1)) {
                                throw new HTTPSServerException("HTTPS_SERVER_WORKER/PROCESS: RESPONSE/CONTENT_RANGE != \"bytes " + i + "-" + j + "/" + httpResponseMessage1Header3Value1 + "\", RESPONSE/CONTENT_RANGE == \"" + httpResponseMessage2Header1Value1 + "\"");
                            }
                            httpResponseMessage2.read(inputSSLSocketOutputStream);
                        } catch (Exception e2) {
                            throw e;
                        } finally {
                            try {
                                httpsRequest2.close();
                            } catch (Exception e2) {
                            }
                        }
                        k = 5;
                    } catch (Exception e2) {
                        logger.log(2, "HTTPS_SERVER_WORKER/PROCESS: EXCEPTION", e2);
                        if (k == 5) {
                            throw new HTTPSServerException("HTTPS_SERVER_WORKER/PROCESS");
                        }
                    }
                    k = k + 1;
                }
                i = j + 1;
                j = j + 1 + 1048576;
                if (j > httpResponseMessage1Header3Value1 - 1) {
                    j = httpResponseMessage1Header3Value1 - 1;
                }
            }
        }
    }
}
Also used : HTTPRequestMessage(APJP.HTTP11.HTTPRequestMessage) HTTPSRequest(APJP.HTTP11.HTTPSRequest) InputStream(java.io.InputStream) OutputStream(java.io.OutputStream) HTTPMessageHeader(APJP.HTTP11.HTTPMessageHeader) HTTPSRequests(APJP.HTTP11.HTTPSRequests) HTTPResponseMessage(APJP.HTTP11.HTTPResponseMessage)

Example 2 with HTTPSRequests

use of APJP.HTTP11.HTTPSRequests in project apjp by jvansteirteghem.

the class Main method main.

public static void main(final String[] args) {
    EventQueue.invokeLater(new Runnable() {

        public void run() {
            try {
                System.setProperty("sun.net.http.allowRestrictedHeaders", "true");
                Security.addProvider(new IAIK());
                Properties properties = new Properties();
                properties.load(new FileInputStream("APJP_LOCAL.properties"));
                APJP.APJP_KEY = properties.getProperty("APJP_KEY", "");
                APJP.APJP_LOGGER_ID = "APJP";
                APJP.APJP_LOGGER_LEVEL = 1;
                APJP.APJP_LOCAL_PROXY_SERVER_ADDRESS = properties.getProperty("APJP_LOCAL_PROXY_SERVER_ADDRESS", "");
                try {
                    APJP.APJP_LOCAL_PROXY_SERVER_PORT = new Integer(properties.getProperty("APJP_LOCAL_PROXY_SERVER_PORT", "0"));
                } catch (Exception e) {
                    APJP.APJP_LOCAL_PROXY_SERVER_PORT = 0;
                }
                APJP.APJP_LOCAL_PROXY_SERVER_LOGGER_ID = "APJP_LOCAL_PROXY_SERVER";
                APJP.APJP_LOCAL_PROXY_SERVER_LOGGER_LEVEL = 1;
                APJP.APJP_LOCAL_HTTP_PROXY_SERVER_ADDRESS = properties.getProperty("APJP_LOCAL_HTTP_PROXY_SERVER_ADDRESS", "");
                try {
                    APJP.APJP_LOCAL_HTTP_PROXY_SERVER_PORT = new Integer(properties.getProperty("APJP_LOCAL_HTTP_PROXY_SERVER_PORT", "0"));
                } catch (Exception e) {
                    APJP.APJP_LOCAL_HTTP_PROXY_SERVER_PORT = 0;
                }
                APJP.APJP_LOCAL_HTTP_PROXY_SERVER_LOGGER_ID = "APJP_LOCAL_HTTP_PROXY_SERVER";
                APJP.APJP_LOCAL_HTTP_PROXY_SERVER_LOGGER_LEVEL = 1;
                APJP.APJP_LOCAL_HTTP_SERVER_ADDRESS = properties.getProperty("APJP_LOCAL_HTTP_SERVER_ADDRESS", "");
                try {
                    APJP.APJP_LOCAL_HTTP_SERVER_PORT = new Integer(properties.getProperty("APJP_LOCAL_HTTP_SERVER_PORT", "0"));
                } catch (Exception e) {
                    APJP.APJP_LOCAL_HTTP_SERVER_PORT = 0;
                }
                APJP.APJP_LOCAL_HTTP_SERVER_LOGGER_ID = "APJP_LOCAL_HTTP_SERVER";
                APJP.APJP_LOCAL_HTTP_SERVER_LOGGER_LEVEL = 1;
                APJP.APJP_REMOTE_HTTP_SERVER_REQUEST_URL = new String[10];
                APJP.APJP_REMOTE_HTTP_SERVER_REQUEST_PROPERTY_KEY = new String[10][5];
                APJP.APJP_REMOTE_HTTP_SERVER_REQUEST_PROPERTY_VALUE = new String[10][5];
                for (int i = 0; i < APJP.APJP_REMOTE_HTTP_SERVER_REQUEST_PROPERTY_KEY.length; i = i + 1) {
                    APJP.APJP_REMOTE_HTTP_SERVER_REQUEST_URL[i] = properties.getProperty("APJP_REMOTE_HTTP_SERVER_" + (i + 1) + "_REQUEST_URL", "");
                    for (int j = 0; j < APJP.APJP_REMOTE_HTTP_SERVER_REQUEST_PROPERTY_KEY[i].length; j = j + 1) {
                        APJP.APJP_REMOTE_HTTP_SERVER_REQUEST_PROPERTY_KEY[i][j] = properties.getProperty("APJP_REMOTE_HTTP_SERVER_" + (i + 1) + "_REQUEST_PROPERTY_" + (j + 1) + "_KEY", "");
                        APJP.APJP_REMOTE_HTTP_SERVER_REQUEST_PROPERTY_VALUE[i][j] = properties.getProperty("APJP_REMOTE_HTTP_SERVER_" + (i + 1) + "_REQUEST_PROPERTY_" + (j + 1) + "_VALUE", "");
                    }
                }
                APJP.APJP_LOCAL_HTTPS_PROXY_SERVER_ADDRESS = properties.getProperty("APJP_LOCAL_HTTPS_PROXY_SERVER_ADDRESS", "");
                try {
                    APJP.APJP_LOCAL_HTTPS_PROXY_SERVER_PORT = new Integer(properties.getProperty("APJP_LOCAL_HTTPS_PROXY_SERVER_PORT", "0"));
                } catch (Exception e) {
                    APJP.APJP_LOCAL_HTTPS_PROXY_SERVER_PORT = 0;
                }
                APJP.APJP_LOCAL_HTTPS_PROXY_SERVER_LOGGER_ID = "APJP_LOCAL_HTTPS_PROXY_SERVER";
                APJP.APJP_LOCAL_HTTPS_PROXY_SERVER_LOGGER_LEVEL = 1;
                APJP.APJP_LOCAL_HTTPS_SERVER_ADDRESS = properties.getProperty("APJP_LOCAL_HTTPS_SERVER_ADDRESS", "");
                try {
                    APJP.APJP_LOCAL_HTTPS_SERVER_PORT = new Integer(properties.getProperty("APJP_LOCAL_HTTPS_SERVER_PORT", "0"));
                } catch (Exception e) {
                    APJP.APJP_LOCAL_HTTPS_SERVER_PORT = 0;
                }
                APJP.APJP_LOCAL_HTTPS_SERVER_LOGGER_ID = "APJP_LOCAL_HTTPS_SERVER";
                APJP.APJP_LOCAL_HTTPS_SERVER_LOGGER_LEVEL = 1;
                APJP.APJP_REMOTE_HTTPS_SERVER_REQUEST_URL = new String[10];
                APJP.APJP_REMOTE_HTTPS_SERVER_REQUEST_PROPERTY_KEY = new String[10][5];
                APJP.APJP_REMOTE_HTTPS_SERVER_REQUEST_PROPERTY_VALUE = new String[10][5];
                for (int i = 0; i < APJP.APJP_REMOTE_HTTPS_SERVER_REQUEST_PROPERTY_KEY.length; i = i + 1) {
                    APJP.APJP_REMOTE_HTTPS_SERVER_REQUEST_URL[i] = properties.getProperty("APJP_REMOTE_HTTPS_SERVER_" + (i + 1) + "_REQUEST_URL", "");
                    for (int j = 0; j < APJP.APJP_REMOTE_HTTPS_SERVER_REQUEST_PROPERTY_KEY[i].length; j = j + 1) {
                        APJP.APJP_REMOTE_HTTPS_SERVER_REQUEST_PROPERTY_KEY[i][j] = properties.getProperty("APJP_REMOTE_HTTPS_SERVER_" + (i + 1) + "_REQUEST_PROPERTY_" + (j + 1) + "_KEY", "");
                        APJP.APJP_REMOTE_HTTPS_SERVER_REQUEST_PROPERTY_VALUE[i][j] = properties.getProperty("APJP_REMOTE_HTTPS_SERVER_" + (i + 1) + "_REQUEST_PROPERTY_" + (j + 1) + "_VALUE", "");
                    }
                }
                APJP.APJP_HTTP_PROXY_SERVER_ADDRESS = properties.getProperty("APJP_HTTP_PROXY_SERVER_ADDRESS", "");
                try {
                    APJP.APJP_HTTP_PROXY_SERVER_PORT = new Integer(properties.getProperty("APJP_HTTP_PROXY_SERVER_PORT", "0"));
                } catch (Exception e) {
                    APJP.APJP_HTTP_PROXY_SERVER_PORT = 0;
                }
                APJP.APJP_HTTP_PROXY_SERVER_USERNAME = properties.getProperty("APJP_HTTP_PROXY_SERVER_USERNAME", "");
                APJP.APJP_HTTP_PROXY_SERVER_PASSWORD = properties.getProperty("APJP_HTTP_PROXY_SERVER_PASSWORD", "");
                APJP.APJP_HTTPS_PROXY_SERVER_ADDRESS = properties.getProperty("APJP_HTTPS_PROXY_SERVER_ADDRESS", "");
                try {
                    APJP.APJP_HTTPS_PROXY_SERVER_PORT = new Integer(properties.getProperty("APJP_HTTPS_PROXY_SERVER_PORT", "0"));
                } catch (Exception e) {
                    APJP.APJP_HTTPS_PROXY_SERVER_PORT = 0;
                }
                APJP.APJP_HTTPS_PROXY_SERVER_USERNAME = properties.getProperty("APJP_HTTPS_PROXY_SERVER_USERNAME", "");
                APJP.APJP_HTTPS_PROXY_SERVER_PASSWORD = properties.getProperty("APJP_HTTPS_PROXY_SERVER_PASSWORD", "");
                Authenticator.setDefault(new Authenticator() {

                    protected PasswordAuthentication getPasswordAuthentication() {
                        PasswordAuthentication passwordAuthentication = null;
                        if (this.getRequestorType() == Authenticator.RequestorType.PROXY) {
                            if (this.getRequestingURL().getProtocol().equalsIgnoreCase("HTTP") == true) {
                                passwordAuthentication = new PasswordAuthentication(APJP.APJP_HTTP_PROXY_SERVER_USERNAME, APJP.APJP_HTTP_PROXY_SERVER_PASSWORD.toCharArray());
                            } else {
                                if (this.getRequestingURL().getProtocol().equalsIgnoreCase("HTTPS") == true) {
                                    passwordAuthentication = new PasswordAuthentication(APJP.APJP_HTTPS_PROXY_SERVER_USERNAME, APJP.APJP_HTTPS_PROXY_SERVER_PASSWORD.toCharArray());
                                }
                            }
                        }
                        return passwordAuthentication;
                    }
                });
                logger = Logger.getLogger(APJP.APJP_LOGGER_ID);
                final ProxyServer proxyServer = new ProxyServer();
                final JTextArea outputTextArea = new JTextArea();
                outputTextArea.setEditable(false);
                outputTextArea.setLineWrap(true);
                outputTextArea.setBackground(new Color(0, 0, 0));
                outputTextArea.setForeground(new Color(255, 255, 255));
                outputTextArea.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 12));
                final JScrollPane outputScrollPane = new JScrollPane(outputTextArea);
                final OutputStream outputStream = new OutputStream() {

                    public void write(final int b) throws IOException {
                        outputTextArea.append(new String(new char[] { (char) b }));
                    }

                    public void write(final byte[] b, final int off, final int len) throws IOException {
                        outputTextArea.append(new String(b, off, len));
                    }
                };
                final PrintStream printStream = new PrintStream(outputStream, true);
                System.setOut(printStream);
                final JButton startButton = new JButton();
                startButton.setText("Start");
                startButton.setPreferredSize(new Dimension(100, 30));
                startButton.addActionListener(new ActionListener() {

                    public void actionPerformed(final ActionEvent actionEvent) {
                        outputTextArea.setText("");
                        logger.log(1, "START_PROXY_SERVER");
                        try {
                            proxyServer.start();
                            logger.log(1, "START_PROXY_SERVER: OK");
                        } catch (Exception e) {
                            logger.log(1, "START_PROXY_SERVER: EXCEPTION", e);
                            logger.log(1, "START_PROXY_SERVER: NOT OK");
                        }
                        HTTPRequests httpRequests = HTTPRequests.getHTTPRequests();
                        logger.log(1, "TEST_HTTP_REQUESTS");
                        try {
                            httpRequests.test();
                            logger.log(1, "TEST_HTTP_REQUESTS: OK");
                        } catch (Exception e) {
                            logger.log(1, "TEST_HTTP_REQUESTS: EXCEPTION", e);
                            logger.log(1, "TEST_HTTP_REQUESTS: NOT OK");
                        }
                        HTTPSRequests httpsRequests = HTTPSRequests.getHTTPSRequests();
                        logger.log(1, "TEST_HTTPS_REQUESTS");
                        try {
                            httpsRequests.test();
                            logger.log(1, "TEST_HTTPS_REQUESTS: OK");
                        } catch (Exception e) {
                            logger.log(1, "TEST_HTTPS_REQUESTS: EXCEPTION", e);
                            logger.log(1, "TEST_HTTPS_REQUESTS: NOT OK");
                        }
                    }
                });
                final JButton stopButton = new JButton();
                stopButton.setText("Stop");
                stopButton.setPreferredSize(new Dimension(100, 30));
                stopButton.addActionListener(new ActionListener() {

                    public void actionPerformed(final ActionEvent actionEvent) {
                        outputTextArea.setText("");
                        logger.log(1, "STOP_PROXY_SERVER");
                        try {
                            proxyServer.stop();
                            logger.log(1, "STOP_PROXY_SERVER: OK");
                        } catch (Exception e) {
                            logger.log(1, "STOP_PROXY_SERVER: EXCEPTION", e);
                            logger.log(1, "STOP_PROXY_SERVER: NOT OK");
                        }
                    }
                });
                final Panel buttonPanel = new Panel();
                buttonPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
                buttonPanel.add(startButton);
                buttonPanel.add(stopButton);
                final ImageIcon imageIcon = new ImageIcon("APJP_LOCAL.png");
                final JFrame frame = new JFrame();
                frame.setIconImage(imageIcon.getImage());
                frame.setSize(675, 375);
                frame.setResizable(false);
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(buttonPanel, BorderLayout.NORTH);
                frame.add(outputScrollPane, BorderLayout.CENTER);
                if (SystemTray.isSupported()) {
                    final TrayIcon trayIcon = new TrayIcon(imageIcon.getImage());
                    trayIcon.setImageAutoSize(true);
                    trayIcon.addActionListener(new ActionListener() {

                        public void actionPerformed(final ActionEvent actionEvent) {
                            frame.setVisible(!frame.isVisible());
                        }
                    });
                    SystemTray.getSystemTray().add(trayIcon);
                }
                frame.setVisible(true);
            } catch (Exception e) {
                logger.log(1, "EXCEPTION", e);
            }
        }
    });
}
Also used : ImageIcon(javax.swing.ImageIcon) JTextArea(javax.swing.JTextArea) FlowLayout(java.awt.FlowLayout) ActionEvent(java.awt.event.ActionEvent) OutputStream(java.io.OutputStream) JButton(javax.swing.JButton) HTTPRequests(APJP.HTTP11.HTTPRequests) Properties(java.util.Properties) Font(java.awt.Font) HTTPSRequests(APJP.HTTP11.HTTPSRequests) BorderLayout(java.awt.BorderLayout) JFrame(javax.swing.JFrame) TrayIcon(java.awt.TrayIcon) IAIK(iaik.security.provider.IAIK) Authenticator(java.net.Authenticator) PasswordAuthentication(java.net.PasswordAuthentication) JScrollPane(javax.swing.JScrollPane) PrintStream(java.io.PrintStream) Color(java.awt.Color) IOException(java.io.IOException) Dimension(java.awt.Dimension) FileInputStream(java.io.FileInputStream) IOException(java.io.IOException) ProxyServer(APJP.ProxyServer) Panel(java.awt.Panel) ActionListener(java.awt.event.ActionListener)

Example 3 with HTTPSRequests

use of APJP.HTTP11.HTTPSRequests in project apjp by jvansteirteghem.

the class HTTPSServerWorker method process.

public void process() throws Exception {
    InputStream inputSSLSocketInputStream = inputSSLSocket.getInputStream();
    OutputStream inputSSLSocketOutputStream = inputSSLSocket.getOutputStream();
    HTTPSRequests httpsRequests = HTTPSRequests.getHTTPSRequests();
    HTTPRequestMessage httpRequestMessage1 = new HTTPRequestMessage(inputSSLSocketInputStream);
    httpRequestMessage1.read();
    HTTPMessageHeader httpRequestMessage1Header1 = httpRequestMessage1.getHTTPMessageHeader("");
    if (httpRequestMessage1Header1 == null) {
        keepAlive = false;
        return;
    }
    String httpRequestMessage1Header1Value1 = httpRequestMessage1Header1.getValue();
    if (httpRequestMessage1Header1Value1.equalsIgnoreCase("")) {
        keepAlive = false;
        return;
    }
    processHTTPRequestMessage(httpRequestMessage1);
    HTTPResponseMessage httpResponseMessage1 = null;
    try {
        HTTPSRequest httpsRequest1 = httpsRequests.createHTTPSRequest(httpRequestMessage1);
        httpsRequest1.open();
        try {
            httpResponseMessage1 = httpsRequest1.getHTTPResponseMessage();
            processHTTPResponseMessage(httpResponseMessage1);
            HTTPMessageHeader[] httpResponseMessage1Headers1 = httpResponseMessage1.getHTTPMessageHeaders();
            HTTPMessageHeader httpResponseMessage1Header1 = httpResponseMessage1Headers1[0];
            String httpResponseMessage1Header1Key1 = httpResponseMessage1Header1.getKey();
            String httpResponseMessage1Header1Value1 = httpResponseMessage1Header1.getValue();
            inputSSLSocketOutputStream.write((httpResponseMessage1Header1Value1 + "\r\n").getBytes());
            for (int i = 1; i < httpResponseMessage1Headers1.length; i = i + 1) {
                httpResponseMessage1Header1 = httpResponseMessage1Headers1[i];
                httpResponseMessage1Header1Key1 = httpResponseMessage1Header1.getKey();
                httpResponseMessage1Header1Value1 = httpResponseMessage1Header1.getValue();
                inputSSLSocketOutputStream.write((httpResponseMessage1Header1Key1 + ": " + httpResponseMessage1Header1Value1 + "\r\n").getBytes());
            }
            inputSSLSocketOutputStream.write(("\r\n").getBytes());
            httpResponseMessage1.read(inputSSLSocketOutputStream);
        } catch (Exception e) {
            throw e;
        } finally {
            try {
                httpsRequest1.close();
            } catch (Exception e) {
            }
        }
    } catch (Exception e) {
        logger.log(2, "HTTPS_SERVER_WORKER/PROCESS: EXCEPTION", e);
        if (httpResponseMessage1 == null) {
            String[] httpRequestMessage1Header1Values1 = httpRequestMessage1Header1Value1.split(" ");
            String httpRequestMessage1Header1Value2 = httpRequestMessage1Header1Values1[0];
            if (!httpRequestMessage1Header1Value2.equalsIgnoreCase("GET")) {
                throw new HTTPSServerException("HTTPS_SERVER_WORKER/PROCESS: REQUEST/METHOD != \"GET\", REQUEST/METHOD == \"" + httpRequestMessage1Header1Value2 + "\"");
            }
            HTTPMessageHeader httpRequestMessage1Header2 = httpRequestMessage1.getHTTPMessageHeader("If-Range");
            if (httpRequestMessage1Header2 != null) {
                String httpRequestMessage1Header2Value1 = httpRequestMessage1Header2.getValue();
                throw new HTTPSServerException("HTTPS_SERVER_WORKER/PROCESS: REQUEST/IF_RANGE != \"\", REQUEST/IF_RANGE == \"" + httpRequestMessage1Header2Value1 + "\"");
            }
            HTTPMessageHeader httpRequestMessage1Header3 = httpRequestMessage1.getHTTPMessageHeader("Range");
            if (httpRequestMessage1Header3 != null) {
                String httpRequestMessage1Header3Value1 = httpRequestMessage1Header3.getValue();
                throw new HTTPSServerException("HTTPS_SERVER_WORKER/PROCESS: REQUEST/RANGE != \"\", REQUEST/RANGE == \"" + httpRequestMessage1Header3Value1 + "\"");
            }
            httpRequestMessage1Header1Values1[0] = "HEAD";
            httpRequestMessage1Header1Value1 = httpRequestMessage1Header1Values1[0];
            for (int i = 1; i < httpRequestMessage1Header1Values1.length; i = i + 1) {
                httpRequestMessage1Header1Value1 = httpRequestMessage1Header1Value1 + " " + httpRequestMessage1Header1Values1[i];
            }
            httpRequestMessage1Header1.setValue(httpRequestMessage1Header1Value1);
            HTTPSRequest httpsRequest1 = httpsRequests.createHTTPSRequest(httpRequestMessage1);
            httpsRequest1.open();
            try {
                httpResponseMessage1 = httpsRequest1.getHTTPResponseMessage();
            } catch (Exception e2) {
                throw e2;
            } finally {
                try {
                    httpsRequest1.close();
                } catch (Exception e2) {
                }
            }
            HTTPMessageHeader httpResponseMessage1Header1 = httpResponseMessage1.getHTTPMessageHeader("Accept-Ranges");
            if (httpResponseMessage1Header1 == null) {
                throw new HTTPSServerException("HTTPS_SERVER_WORKER/PROCESS: RESPONSE/ACCEPT_RANGES != \"bytes\", RESPONSE/ACCEPT_RANGES == \"\"");
            }
            String httpResponseMessage1Header1Value1 = httpResponseMessage1Header1.getValue();
            if (!httpResponseMessage1Header1Value1.equalsIgnoreCase("bytes")) {
                throw new HTTPSServerException("HTTPS_SERVER_WORKER/PROCESS: RESPONSE/ACCEPT_RANGES != \"bytes\", RESPONSE/ACCEPT_RANGES == \"" + httpResponseMessage1Header1Value1 + "\"");
            }
            processHTTPResponseMessage(httpResponseMessage1);
            HTTPMessageHeader[] httpResponseMessage1Headers1 = httpResponseMessage1.getHTTPMessageHeaders();
            HTTPMessageHeader httpResponseMessage1Header2 = httpResponseMessage1Headers1[0];
            String httpResponseMessage1Header2Key1 = httpResponseMessage1Header2.getKey();
            String httpResponseMessage1Header2Value1 = httpResponseMessage1Header2.getValue();
            inputSSLSocketOutputStream.write((httpResponseMessage1Header2Value1 + "\r\n").getBytes());
            for (int i = 1; i < httpResponseMessage1Headers1.length; i = i + 1) {
                httpResponseMessage1Header2 = httpResponseMessage1Headers1[i];
                httpResponseMessage1Header2Key1 = httpResponseMessage1Header2.getKey();
                httpResponseMessage1Header2Value1 = httpResponseMessage1Header2.getValue();
                inputSSLSocketOutputStream.write((httpResponseMessage1Header2Key1 + ": " + httpResponseMessage1Header2Value1 + "\r\n").getBytes());
            }
            inputSSLSocketOutputStream.write(("\r\n").getBytes());
            HTTPMessageHeader httpResponseMessage1Header3 = httpResponseMessage1.getHTTPMessageHeader("Content-Length");
            int httpResponseMessage1Header3Value1 = 0;
            if (httpResponseMessage1Header3 != null) {
                try {
                    httpResponseMessage1Header3Value1 = new Integer(httpResponseMessage1Header3.getValue());
                } catch (Exception e2) {
                }
            }
            httpRequestMessage1Header1Values1[0] = "GET";
            httpRequestMessage1Header1Value1 = httpRequestMessage1Header1Values1[0];
            for (int i = 1; i < httpRequestMessage1Header1Values1.length; i = i + 1) {
                httpRequestMessage1Header1Value1 = httpRequestMessage1Header1Value1 + " " + httpRequestMessage1Header1Values1[i];
            }
            httpRequestMessage1Header1.setValue(httpRequestMessage1Header1Value1);
            long i = 0;
            long j = 1048576;
            if (j > httpResponseMessage1Header3Value1 - 1) {
                j = httpResponseMessage1Header3Value1 - 1;
            }
            while (i < httpResponseMessage1Header3Value1 - 1) {
                HTTPMessageHeader httpRequestMessage1Header4 = httpRequestMessage1.getHTTPMessageHeader("Range");
                if (httpRequestMessage1Header4 != null) {
                    httpRequestMessage1.removeHTTPMessageHeader(httpRequestMessage1Header4);
                }
                httpRequestMessage1.addHTTPMessageHeader(new HTTPMessageHeader("Range", "bytes=" + i + "-" + j));
                HTTPResponseMessage httpResponseMessage2 = null;
                int k = 1;
                while (k <= 5) {
                    try {
                        HTTPSRequest httpsRequest2 = httpsRequests.createHTTPSRequest(httpRequestMessage1);
                        httpsRequest2.open();
                        try {
                            httpResponseMessage2 = httpsRequest2.getHTTPResponseMessage();
                            HTTPMessageHeader httpResponseMessage2Header1 = httpResponseMessage2.getHTTPMessageHeader("Content-Range");
                            if (httpResponseMessage2Header1 == null) {
                                throw new HTTPSServerException("HTTPS_SERVER_WORKER/PROCESS: RESPONSE/CONTENT_RANGE != \"bytes " + i + "-" + j + "/" + httpResponseMessage1Header3Value1 + "\", RESPONSE/CONTENT_RANGE == \"\"");
                            }
                            String httpResponseMessage2Header1Value1 = httpResponseMessage2Header1.getValue();
                            if (!httpResponseMessage2Header1Value1.equalsIgnoreCase("bytes " + i + "-" + j + "/" + httpResponseMessage1Header3Value1)) {
                                throw new HTTPSServerException("HTTPS_SERVER_WORKER/PROCESS: RESPONSE/CONTENT_RANGE != \"bytes " + i + "-" + j + "/" + httpResponseMessage1Header3Value1 + "\", RESPONSE/CONTENT_RANGE == \"" + httpResponseMessage2Header1Value1 + "\"");
                            }
                            httpResponseMessage2.read(inputSSLSocketOutputStream);
                        } catch (Exception e2) {
                            throw e;
                        } finally {
                            try {
                                httpsRequest2.close();
                            } catch (Exception e2) {
                            }
                        }
                        k = 5;
                    } catch (Exception e2) {
                        logger.log(2, "HTTPS_SERVER_WORKER/PROCESS: EXCEPTION", e2);
                        if (k == 5) {
                            throw new HTTPSServerException("HTTPS_SERVER_WORKER/PROCESS");
                        }
                    }
                    k = k + 1;
                }
                i = j + 1;
                j = j + 1 + 1048576;
                if (j > httpResponseMessage1Header3Value1 - 1) {
                    j = httpResponseMessage1Header3Value1 - 1;
                }
            }
        }
    }
}
Also used : HTTPRequestMessage(APJP.ANDROID.HTTP11.HTTPRequestMessage) HTTPSRequest(APJP.ANDROID.HTTP11.HTTPSRequest) InputStream(java.io.InputStream) OutputStream(java.io.OutputStream) HTTPMessageHeader(APJP.ANDROID.HTTP11.HTTPMessageHeader) HTTPSRequests(APJP.ANDROID.HTTP11.HTTPSRequests) HTTPResponseMessage(APJP.ANDROID.HTTP11.HTTPResponseMessage)

Aggregations

OutputStream (java.io.OutputStream)3 HTTPSRequests (APJP.HTTP11.HTTPSRequests)2 InputStream (java.io.InputStream)2 HTTPMessageHeader (APJP.ANDROID.HTTP11.HTTPMessageHeader)1 HTTPRequestMessage (APJP.ANDROID.HTTP11.HTTPRequestMessage)1 HTTPResponseMessage (APJP.ANDROID.HTTP11.HTTPResponseMessage)1 HTTPSRequest (APJP.ANDROID.HTTP11.HTTPSRequest)1 HTTPSRequests (APJP.ANDROID.HTTP11.HTTPSRequests)1 HTTPMessageHeader (APJP.HTTP11.HTTPMessageHeader)1 HTTPRequestMessage (APJP.HTTP11.HTTPRequestMessage)1 HTTPRequests (APJP.HTTP11.HTTPRequests)1 HTTPResponseMessage (APJP.HTTP11.HTTPResponseMessage)1 HTTPSRequest (APJP.HTTP11.HTTPSRequest)1 ProxyServer (APJP.ProxyServer)1 IAIK (iaik.security.provider.IAIK)1 BorderLayout (java.awt.BorderLayout)1 Color (java.awt.Color)1 Dimension (java.awt.Dimension)1 FlowLayout (java.awt.FlowLayout)1 Font (java.awt.Font)1