1212import java .util .Arrays ;
1313import java .util .List ;
1414import java .util .Objects ;
15+ import java .util .Optional ;
1516import java .util .function .Function ;
1617
1718/**
@@ -72,12 +73,13 @@ public List<String> ipFrom(MultiMap headers, String host) {
7273
7374 private List <String > ipFrom (Function <String , String > headerGetter , String host ) {
7475 final List <String > candidates = new ArrayList <>();
75- candidates .add (headerGetter .apply ("True-Client-IP" ));
76- final String xff = headerGetter .apply ("X-Forwarded-For" );
76+ candidates .add (headerGetter .apply (HttpUtil . TRUE_CLIENT_IP_HEADER . toString () ));
77+ final String xff = headerGetter .apply (HttpUtil . X_FORWARDED_FOR_HEADER . toString () );
7778 if (xff != null ) {
7879 candidates .addAll (Arrays .asList (xff .split ("," )));
7980 }
80- candidates .add (headerGetter .apply ("X-Real-IP" ));
81+ candidates .add (headerGetter .apply (HttpUtil .X_REAL_IP_HEADER .toString ()));
82+ candidates .add (headerGetter .apply (HttpUtil .X_DEVICE_IP_HEADER .toString ()));
8183 candidates .add (host );
8284
8385 return candidates .stream ()
@@ -90,7 +92,12 @@ private List<String> ipFrom(Function<String, String> headerGetter, String host)
9092 * Determines User-Agent by checking 'User-Agent' http header.
9193 */
9294 public String uaFrom (HttpRequestContext request ) {
93- return StringUtils .trimToNull (request .getHeaders ().get (HttpUtil .USER_AGENT_HEADER ));
95+ return Optional .ofNullable (getTrimmedHeader (request , HttpUtil .USER_AGENT_HEADER ))
96+ .orElseGet (() -> getTrimmedHeader (request , HttpUtil .X_DEVICE_USER_AGENT_HEADER ));
97+ }
98+
99+ private static String getTrimmedHeader (HttpRequestContext request , CharSequence header ) {
100+ return StringUtils .trimToNull (request .getHeaders ().get (header ));
94101 }
95102
96103 /**
0 commit comments