Merge pull request #19584 from cmbaxter/feature/xff-avoid-dns-cmbaxter

!htt #19388 Removing use of InetAddress.getByName
This commit is contained in:
Konrad Malawski 2016-02-15 13:29:50 +01:00
commit 10d3af1478
13 changed files with 104 additions and 26 deletions

View file

@ -13,8 +13,11 @@ import akka.http.javadsl.server.RequestVals;
import akka.http.javadsl.server.Unmarshallers;
import akka.http.javadsl.testkit.JUnitRouteTest;
import akka.http.javadsl.testkit.TestRoute;
import org.junit.Test;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.regex.Pattern;
public class RequestValTest extends JUnitRouteTest {
@ -62,16 +65,16 @@ public class RequestValTest extends JUnitRouteTest {
}
@Test
public void testClientIpExtraction() {
public void testClientIpExtraction() throws UnknownHostException{
TestRoute route = testRoute(completeWithValueToString(RequestVals.clientIP()));
route
.run(HttpRequest.create().addHeader(XForwardedFor.create(RemoteAddress.create("127.0.0.2"))))
.run(HttpRequest.create().addHeader(XForwardedFor.create(RemoteAddress.create(InetAddress.getByName("127.0.0.2")))))
.assertStatusCode(200)
.assertEntity("127.0.0.2");
route
.run(HttpRequest.create().addHeader(akka.http.javadsl.model.headers.RemoteAddress.create(RemoteAddress.create("127.0.0.3"))))
.run(HttpRequest.create().addHeader(akka.http.javadsl.model.headers.RemoteAddress.create(RemoteAddress.create(InetAddress.getByName("127.0.0.3")))))
.assertStatusCode(200)
.assertEntity("127.0.0.3");

View file

@ -10,22 +10,23 @@ import scala.concurrent.duration._
import scala.util.Try
import akka.http.scaladsl.model._
import headers._
import java.net.InetAddress
class MiscDirectivesSpec extends RoutingSpec {
"the extractClientIP directive" should {
"extract from a X-Forwarded-For header" in {
Get() ~> addHeaders(`X-Forwarded-For`("2.3.4.5"), RawHeader("x-real-ip", "1.2.3.4")) ~> {
Get() ~> addHeaders(`X-Forwarded-For`(remoteAddress("2.3.4.5")), RawHeader("x-real-ip", "1.2.3.4")) ~> {
extractClientIP { echoComplete }
} ~> check { responseAs[String] shouldEqual "2.3.4.5" }
}
"extract from a Remote-Address header" in {
Get() ~> addHeaders(RawHeader("x-real-ip", "1.2.3.4"), `Remote-Address`(RemoteAddress("5.6.7.8"))) ~> {
Get() ~> addHeaders(`X-Real-Ip`(remoteAddress("1.2.3.4")), `Remote-Address`(remoteAddress("5.6.7.8"))) ~> {
extractClientIP { echoComplete }
} ~> check { responseAs[String] shouldEqual "5.6.7.8" }
}
"extract from a X-Real-IP header" in {
Get() ~> addHeader(RawHeader("x-real-ip", "1.2.3.4")) ~> {
Get() ~> addHeader(`X-Real-Ip`(remoteAddress("1.2.3.4"))) ~> {
extractClientIP { echoComplete }
} ~> check { responseAs[String] shouldEqual "1.2.3.4" }
}
@ -85,4 +86,6 @@ class MiscDirectivesSpec extends RoutingSpec {
}
}
}
def remoteAddress(ip: String) = RemoteAddress(InetAddress.getByName(ip))
}