@@ -1133,6 +1133,62 @@ public void testRequestForwarded() throws Exception {
11331133 request .getAttribute (Globals .REQUEST_FORWARDED_ATTRIBUTE ));
11341134 }
11351135
1136+ @ Test
1137+ public void testRequestForwardedForWithPortNumber () throws Exception {
1138+
1139+ // PREPARE
1140+ RemoteIpValve remoteIpValve = new RemoteIpValve ();
1141+ RemoteAddrAndHostTrackerValve remoteAddrAndHostTrackerValve = new RemoteAddrAndHostTrackerValve ();
1142+ remoteIpValve .setNext (remoteAddrAndHostTrackerValve );
1143+
1144+ Request request = new MockRequest ();
1145+ request .setCoyoteRequest (new org .apache .coyote .Request ());
1146+ // client ip
1147+ request .setRemoteAddr ("192.168.0.10" );
1148+ request .setRemoteHost ("192.168.0.10" );
1149+ request .getCoyoteRequest ().getMimeHeaders ().addValue ("x-forwarded-for" ).setString ("140.211.11.130:1234" );
1150+ // protocol
1151+ request .setServerPort (8080 );
1152+ request .getCoyoteRequest ().scheme ().setString ("http" );
1153+
1154+ // TEST
1155+ remoteIpValve .invoke (request , null );
1156+
1157+ // VERIFY
1158+
1159+ Assert .assertEquals ("140.211.11.130:1234" , remoteAddrAndHostTrackerValve .getRemoteAddr ());
1160+ }
1161+
1162+ @ Test
1163+ public void testRequestForwardedForWithProxyPortNumber () throws Exception {
1164+
1165+ // PREPARE
1166+ RemoteIpValve remoteIpValve = new RemoteIpValve ();
1167+ //remoteIpValve.setRemoteIpHeader("x-forwarded-for");
1168+ //remoteIpValve.setProtocolHeader("x-forwarded-proto");
1169+ RemoteAddrAndHostTrackerValve remoteAddrAndHostTrackerValve = new RemoteAddrAndHostTrackerValve ();
1170+ remoteIpValve .setNext (remoteAddrAndHostTrackerValve );
1171+
1172+ Request request = new MockRequest ();
1173+ request .setCoyoteRequest (new org .apache .coyote .Request ());
1174+ // client ip
1175+ request .setRemoteAddr ("192.168.0.10" );
1176+ request .setRemoteHost ("192.168.0.10" );
1177+ // Trust c.d
1178+ remoteIpValve .setTrustedProxies ("foo\\ .bar:123" );
1179+ request .getCoyoteRequest ().getMimeHeaders ().addValue ("x-forwarded-for" ).setString ("140.211.11.130:1234, foo.bar:123" );
1180+ // protocol
1181+ request .setServerPort (8080 );
1182+ request .getCoyoteRequest ().scheme ().setString ("http" );
1183+
1184+ // TEST
1185+ remoteIpValve .invoke (request , null );
1186+
1187+ // VERIFY
1188+
1189+ Assert .assertEquals ("140.211.11.130:1234" , remoteAddrAndHostTrackerValve .getRemoteAddr ());
1190+ }
1191+
11361192 private void assertArrayEquals (String [] expected , String [] actual ) {
11371193 if (expected == null ) {
11381194 Assert .assertNull (actual );
0 commit comments