Search in sources :

Example 1 with NetworkListenerConfiguration

use of org.carapaceproxy.server.config.NetworkListenerConfiguration in project carapaceproxy by diennea.

the class MultiListeningEndpointTest method test.

@Test
public void test() throws Exception {
    stubFor(get(urlEqualTo("/index.html?redir")).willReturn(aResponse().withStatus(200).withHeader("Content-Type", "text/html").withBody("it <b>works</b> !!")));
    int port = 1234;
    int port2 = 1235;
    TestEndpointMapper mapper = new TestEndpointMapper("localhost", wireMockRule.port());
    try (HttpProxyServer server = HttpProxyServer.buildForTests("localhost", port, mapper, tmpDir.newFolder())) {
        server.addListener(new NetworkListenerConfiguration("localhost", port2));
        server.start();
        // proxy
        {
            String s = IOUtils.toString(new URL("http://localhost:" + port + "/index.html?redir").toURI(), "utf-8");
            System.out.println("s:" + s);
            assertEquals("it <b>works</b> !!", s);
        }
        {
            String s = IOUtils.toString(new URL("http://localhost:" + port2 + "/index.html?redir").toURI(), "utf-8");
            System.out.println("s:" + s);
            assertEquals("it <b>works</b> !!", s);
        }
    }
}
Also used : TestEndpointMapper(org.carapaceproxy.utils.TestEndpointMapper) HttpProxyServer(org.carapaceproxy.core.HttpProxyServer) NetworkListenerConfiguration(org.carapaceproxy.server.config.NetworkListenerConfiguration) URL(java.net.URL) Test(org.junit.Test)

Example 2 with NetworkListenerConfiguration

use of org.carapaceproxy.server.config.NetworkListenerConfiguration in project carapaceproxy by diennea.

the class SSLSNITest method testTLSVersion.

@Test
public void testTLSVersion() throws Exception {
    String nonLocalhost = InetAddress.getLocalHost().getCanonicalHostName();
    String certificate = TestUtils.deployResource("localhost.p12", tmpDir.getRoot());
    stubFor(get(urlEqualTo("/index.html")).willReturn(aResponse().withStatus(200).withHeader("Content-Type", "text/html").withHeader("Content-Length", "it <b>works</b> !!".length() + "").withBody("it <b>works</b> !!")));
    TestEndpointMapper mapper = new TestEndpointMapper("localhost", wireMockRule.port(), true);
    // TLS 1.3 support checking
    try (HttpProxyServer server = new HttpProxyServer(mapper, tmpDir.getRoot())) {
        server.addCertificate(new SSLCertificateConfiguration(nonLocalhost, certificate, "testproxy", STATIC));
        server.addListener(new NetworkListenerConfiguration(nonLocalhost, 0, true, false, null, nonLocalhost, null, null, "TLSv1.3"));
        server.start();
        int port = server.getLocalPort();
        try (RawHttpClient client = new RawHttpClient(nonLocalhost, port, true, nonLocalhost)) {
            RawHttpClient.HttpResponse resp = client.executeRequest("GET /index.html HTTP/1.1\r\nHost: localhost\r\nConnection: close\r\n\r\n");
            assertTrue(resp.toString().contains("it <b>works</b> !!"));
            SSLSession session = client.getSSLSocket().getSession();
            assertTrue("TLSv1.3".equals(session.getProtocol()));
        }
    }
    // default ssl protocol version support checking
    for (String proto : DEFAULT_SSL_PROTOCOLS) {
        try (HttpProxyServer server = new HttpProxyServer(mapper, tmpDir.getRoot())) {
            server.addCertificate(new SSLCertificateConfiguration(nonLocalhost, certificate, "testproxy", STATIC));
            server.addListener(new NetworkListenerConfiguration(nonLocalhost, 0, true, false, null, nonLocalhost, null, null, proto));
            server.start();
            int port = server.getLocalPort();
            try (RawHttpClient client = new RawHttpClient(nonLocalhost, port, true, nonLocalhost)) {
                RawHttpClient.HttpResponse resp = client.executeRequest("GET /index.html HTTP/1.1\r\nHost: localhost\r\nConnection: close\r\n\r\n");
                assertTrue(resp.toString().contains("it <b>works</b> !!"));
                SSLSession session = client.getSSLSocket().getSession();
                assertEquals(proto, session.getProtocol());
            }
        }
    }
    try (HttpProxyServer server = new HttpProxyServer(mapper, tmpDir.getRoot())) {
        server.addCertificate(new SSLCertificateConfiguration(nonLocalhost, certificate, "testproxy", STATIC));
        server.addListener(new NetworkListenerConfiguration(nonLocalhost, 0, true, false, null, nonLocalhost, null, null));
        server.start();
        int port = server.getLocalPort();
        try (RawHttpClient client = new RawHttpClient(nonLocalhost, port, true, nonLocalhost)) {
            RawHttpClient.HttpResponse resp = client.executeRequest("GET /index.html HTTP/1.1\r\nHost: localhost\r\nConnection: close\r\n\r\n");
            assertTrue(resp.toString().contains("it <b>works</b> !!"));
            SSLSession session = client.getSSLSocket().getSession();
            assertTrue(DEFAULT_SSL_PROTOCOLS.contains(session.getProtocol()));
        }
    }
    // wrong ssl protocol version checking
    TestUtils.assertThrows(ConfigurationNotValidException.class, () -> {
        try (HttpProxyServer server = new HttpProxyServer(mapper, tmpDir.getRoot())) {
            server.addCertificate(new SSLCertificateConfiguration(nonLocalhost, certificate, "testproxy", STATIC));
            server.addListener(new NetworkListenerConfiguration(nonLocalhost, 0, true, false, null, nonLocalhost, null, null, "TLSvWRONG"));
        }
    });
}
Also used : RawHttpClient(org.carapaceproxy.utils.RawHttpClient) SSLCertificateConfiguration(org.carapaceproxy.server.config.SSLCertificateConfiguration) TestEndpointMapper(org.carapaceproxy.utils.TestEndpointMapper) HttpProxyServer(org.carapaceproxy.core.HttpProxyServer) SSLSession(javax.net.ssl.SSLSession) NetworkListenerConfiguration(org.carapaceproxy.server.config.NetworkListenerConfiguration) Test(org.junit.Test)

Example 3 with NetworkListenerConfiguration

use of org.carapaceproxy.server.config.NetworkListenerConfiguration in project carapaceproxy by diennea.

the class UnreachableBackendTest method testNonHttpResponseThenClose.

@Test
public void testNonHttpResponseThenClose() throws Exception {
    stubFor(get(urlEqualTo("/index.html")).willReturn(aResponse().withFault(Fault.RANDOM_DATA_THEN_CLOSE)));
    int dummyport = wireMockRule.port();
    TestEndpointMapper mapper = new TestEndpointMapper("localhost", dummyport, useCache);
    EndpointKey key = new EndpointKey("localhost", dummyport);
    try (HttpProxyServer server = new HttpProxyServer(mapper, tmpDir.newFolder())) {
        Properties properties = new Properties();
        server.configureAtBoot(new PropertiesConfigurationStore(properties));
        server.addListener(new NetworkListenerConfiguration("localhost", 0));
        server.setMapper(mapper);
        server.start();
        int port = server.getLocalPort();
        try (RawHttpClient client = new RawHttpClient("localhost", port)) {
            RawHttpClient.HttpResponse resp = client.executeRequest("GET /index.html HTTP/1.1\r\nHost: localhost\r\nConnection: close\r\n\r\n");
            String s = resp.toString();
            System.out.println("s:" + s);
            assertEquals("HTTP/1.1 500 Internal Server Error\r\n", resp.getStatusLine());
            assertEquals("<html>\n" + "    <body>\n" + "        An internal error occurred\n" + "    </body>        \n" + "</html>\n", resp.getBodyString());
        }
        assertTrue(server.getBackendHealthManager().isAvailable(key.getHostPort()));
        assertThat((int) ProxyRequestsManager.PENDING_REQUESTS_GAUGE.get(), is(0));
    }
}
Also used : RawHttpClient(org.carapaceproxy.utils.RawHttpClient) TestEndpointMapper(org.carapaceproxy.utils.TestEndpointMapper) HttpProxyServer(org.carapaceproxy.core.HttpProxyServer) PropertiesConfigurationStore(org.carapaceproxy.configstore.PropertiesConfigurationStore) EndpointKey(org.carapaceproxy.client.EndpointKey) Properties(java.util.Properties) NetworkListenerConfiguration(org.carapaceproxy.server.config.NetworkListenerConfiguration) Test(org.junit.Test)

Example 4 with NetworkListenerConfiguration

use of org.carapaceproxy.server.config.NetworkListenerConfiguration in project carapaceproxy by diennea.

the class CacheTest method testBootSslRelativeCertificatePath.

@Test
public void testBootSslRelativeCertificatePath() throws Exception {
    String certificate = TestUtils.deployResource("localhost.p12", tmpDir.getRoot());
    stubFor(get(urlEqualTo("/index.html")).willReturn(aResponse().withStatus(200).withHeader("Content-Type", "text/html").withHeader("Content-Length", "it <b>works</b> !!".length() + "").withBody("it <b>works</b> !!")));
    TestEndpointMapper mapper = new TestEndpointMapper("localhost", wireMockRule.port(), true);
    EndpointKey key = new EndpointKey("localhost", wireMockRule.port());
    EndpointStats stats;
    try (HttpProxyServer server = new HttpProxyServer(mapper, tmpDir.getRoot())) {
        server.addCertificate(new SSLCertificateConfiguration("localhost", "localhost.p12", "testproxy", STATIC));
        server.addListener(new NetworkListenerConfiguration("localhost", 0, true, false, null, "localhost", null, null));
        server.start();
    }
}
Also used : SSLCertificateConfiguration(org.carapaceproxy.server.config.SSLCertificateConfiguration) TestEndpointMapper(org.carapaceproxy.utils.TestEndpointMapper) HttpProxyServer(org.carapaceproxy.core.HttpProxyServer) EndpointStats(org.carapaceproxy.EndpointStats) EndpointKey(org.carapaceproxy.client.EndpointKey) NetworkListenerConfiguration(org.carapaceproxy.server.config.NetworkListenerConfiguration) Test(org.junit.Test)

Example 5 with NetworkListenerConfiguration

use of org.carapaceproxy.server.config.NetworkListenerConfiguration in project carapaceproxy by diennea.

the class SimpleHTTPProxyTest method testSsl.

@Test
public void testSsl() throws Exception {
    HttpTestUtils.overideJvmWideHttpsVerifier();
    String certificate = TestUtils.deployResource("ia.p12", tmpDir.getRoot());
    String caCertificate = TestUtils.deployResource("ca.p12", tmpDir.getRoot());
    stubFor(get(urlEqualTo("/index.html?redir")).willReturn(aResponse().withStatus(200).withHeader("Content-Type", "text/html").withBody("it <b>works</b> !!")));
    TestEndpointMapper mapper = new TestEndpointMapper("localhost", wireMockRule.port());
    EndpointKey key = new EndpointKey("localhost", wireMockRule.port());
    try (HttpProxyServer server = new HttpProxyServer(mapper, tmpDir.getRoot())) {
        server.addCertificate(new SSLCertificateConfiguration("localhost", certificate, "changeit", STATIC));
        server.addListener(new NetworkListenerConfiguration("localhost", 0, true, false, null, "localhost", caCertificate, "changeit"));
        server.start();
        int port = server.getLocalPort();
        // not found
        try {
            String s = IOUtils.toString(new URL("https://localhost:" + port + "/index.html?not-found").toURI(), "utf-8");
            System.out.println("s:" + s);
            fail();
        } catch (FileNotFoundException ok) {
        }
        // proxy
        {
            String s = IOUtils.toString(new URL("https://localhost:" + port + "/index.html?redir").toURI(), "utf-8");
            System.out.println("s:" + s);
            assertEquals("it <b>works</b> !!", s);
        }
    }
}
Also used : SSLCertificateConfiguration(org.carapaceproxy.server.config.SSLCertificateConfiguration) TestEndpointMapper(org.carapaceproxy.utils.TestEndpointMapper) HttpProxyServer(org.carapaceproxy.core.HttpProxyServer) FileNotFoundException(java.io.FileNotFoundException) EndpointKey(org.carapaceproxy.client.EndpointKey) NetworkListenerConfiguration(org.carapaceproxy.server.config.NetworkListenerConfiguration) URL(java.net.URL) Test(org.junit.Test)

Aggregations

NetworkListenerConfiguration (org.carapaceproxy.server.config.NetworkListenerConfiguration)15 HttpProxyServer (org.carapaceproxy.core.HttpProxyServer)11 Test (org.junit.Test)11 TestEndpointMapper (org.carapaceproxy.utils.TestEndpointMapper)10 EndpointKey (org.carapaceproxy.client.EndpointKey)9 SSLCertificateConfiguration (org.carapaceproxy.server.config.SSLCertificateConfiguration)8 RawHttpClient (org.carapaceproxy.utils.RawHttpClient)8 Parameters (junitparams.Parameters)4 List (java.util.List)3 Map (java.util.Map)3 Properties (java.util.Properties)3 EndpointStats (org.carapaceproxy.EndpointStats)3 PropertiesConfigurationStore (org.carapaceproxy.configstore.PropertiesConfigurationStore)3 WireMock.aResponse (com.github.tomakehurst.wiremock.client.WireMock.aResponse)2 WireMock.get (com.github.tomakehurst.wiremock.client.WireMock.get)2 WireMock.stubFor (com.github.tomakehurst.wiremock.client.WireMock.stubFor)2 WireMock.urlEqualTo (com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo)2 WireMockRule (com.github.tomakehurst.wiremock.junit.WireMockRule)2 HttpHeaderNames (io.netty.handler.codec.http.HttpHeaderNames)2 ServerSocket (java.net.ServerSocket)2