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);
}
}
}
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"));
}
});
}
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));
}
}
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();
}
}
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);
}
}
}
Aggregations