package me.test;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
public class MyRequest extends HttpServletRequestWrapper {
public MyRequest(HttpServletRequest request) {
super(request);
}
@Override
public String getScheme() {
HttpServletRequest request = (HttpServletRequest) this.getRequest();
String proto = request.getHeader("X-Forwarded-Proto");
return proto == null || proto.length() == 0
? request.getScheme()
: proto;
}
@Override
public String getRemoteAddr() {
HttpServletRequest request = (HttpServletRequest) this.getRequest();
String forwardedFor = request.getHeader("X-Forwarded-For");
if (forwardedFor == null || forwardedFor.length() == 0) {
return request.getRemoteAddr();
}
String[] ips = forwardedFor.split(",");
return ips.length == 0
? request.getRemoteAddr()
: ips[0].trim();
}
@Override
public String getRemoteHost() {
return super.getRemoteAddr();
}
@Override
public boolean isSecure() {
return "https".equalsIgnoreCase(this.getScheme());
}
@Override
public int getRemotePort() {
HttpServletRequest request = (HttpServletRequest) this.getRequest();
String forwardedFor = request.getHeader("X-Forwarded-For");
return forwardedFor == null || forwardedFor.length() == 0
? super.getRemotePort()
: -1;
}
}