!htt #19388 Chanring x-real-ip from raw to real modeled header
* Allows for parsing rules to be applied to vet the ip * Removed last cases of code where the String variant of apply on RemoteAddress is used
This commit is contained in:
parent
7850ad36a5
commit
6d3bb94d09
10 changed files with 84 additions and 10 deletions
|
|
@ -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");
|
||||
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue