added config to set name of the IP forward header
This commit is contained in:
parent
d42e64cd75
commit
42f9dcc250
sp-relay/src/main/java/net/lax1dude/eaglercraft/sp/relay
stable-download
@ -160,8 +160,8 @@ public class EaglerSPRelay extends WebSocketServer {
|
|||||||
public void onOpen(WebSocket arg0, ClientHandshake arg1) {
|
public void onOpen(WebSocket arg0, ClientHandshake arg1) {
|
||||||
String addr;
|
String addr;
|
||||||
long millis = System.currentTimeMillis();
|
long millis = System.currentTimeMillis();
|
||||||
if(config.isEnableRealIpHeader() && arg1.hasFieldValue("X-Real-IP")) {
|
if(config.isEnableRealIpHeader() && arg1.hasFieldValue(config.getRealIPHeaderName())) {
|
||||||
addr = arg1.getFieldValue("X-Real-IP").toLowerCase();
|
addr = arg1.getFieldValue(config.getRealIPHeaderName()).toLowerCase();
|
||||||
}else {
|
}else {
|
||||||
addr = arg0.getRemoteSocketAddress().getAddress().getHostAddress().toLowerCase();
|
addr = arg0.getRemoteSocketAddress().getAddress().getHostAddress().toLowerCase();
|
||||||
}
|
}
|
||||||
|
@ -36,6 +36,7 @@ public class EaglerSPRelayConfig {
|
|||||||
private String originWhitelist = "";
|
private String originWhitelist = "";
|
||||||
private String[] originWhitelistArray = new String[0];
|
private String[] originWhitelistArray = new String[0];
|
||||||
private boolean enableRealIpHeader = false;
|
private boolean enableRealIpHeader = false;
|
||||||
|
private String realIpHeaderName = "CF-Connecting-IP";
|
||||||
private boolean enableShowLocals = true;
|
private boolean enableShowLocals = true;
|
||||||
private String serverComment = "Eags. Public LAN Relay";
|
private String serverComment = "Eags. Public LAN Relay";
|
||||||
|
|
||||||
@ -55,7 +56,8 @@ public class EaglerSPRelayConfig {
|
|||||||
gotPingRateLimitLimit = false, gotPingRateLimitLockoutLimit = false,
|
gotPingRateLimitLimit = false, gotPingRateLimitLockoutLimit = false,
|
||||||
gotPingRateLimitLockoutDuration = false;
|
gotPingRateLimitLockoutDuration = false;
|
||||||
boolean gotOriginWhitelist = false, gotEnableRealIpHeader = false,
|
boolean gotOriginWhitelist = false, gotEnableRealIpHeader = false,
|
||||||
gotAddress = false, gotComment = false, gotShowLocals = false;
|
gotRealIpHeaderName = false, gotAddress = false, gotComment = false,
|
||||||
|
gotShowLocals = false;
|
||||||
|
|
||||||
Throwable t2 = null;
|
Throwable t2 = null;
|
||||||
try(BufferedReader reader = new BufferedReader(new FileReader(conf))) {
|
try(BufferedReader reader = new BufferedReader(new FileReader(conf))) {
|
||||||
@ -238,6 +240,9 @@ public class EaglerSPRelayConfig {
|
|||||||
t2 = t;
|
t2 = t;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}else if(ss[0].equalsIgnoreCase("real-ip-header-name")) {
|
||||||
|
realIpHeaderName = ss[1];
|
||||||
|
gotRealIpHeaderName = true;
|
||||||
}else if(ss[0].equalsIgnoreCase("show-local-worlds")) {
|
}else if(ss[0].equalsIgnoreCase("show-local-worlds")) {
|
||||||
try {
|
try {
|
||||||
enableShowLocals = getBooleanValue(ss[1]);
|
enableShowLocals = getBooleanValue(ss[1]);
|
||||||
@ -270,7 +275,7 @@ public class EaglerSPRelayConfig {
|
|||||||
!gotPingRateLimitPeriod || !gotPingRateLimitLimit ||
|
!gotPingRateLimitPeriod || !gotPingRateLimitLimit ||
|
||||||
!gotPingRateLimitLockoutLimit || !gotPingRateLimitLockoutDuration ||
|
!gotPingRateLimitLockoutLimit || !gotPingRateLimitLockoutDuration ||
|
||||||
!gotOriginWhitelist || !gotEnableRealIpHeader || !gotAddress ||
|
!gotOriginWhitelist || !gotEnableRealIpHeader || !gotAddress ||
|
||||||
!gotComment || !gotShowLocals) {
|
!gotComment || !gotShowLocals || !gotRealIpHeaderName) {
|
||||||
EaglerSPRelay.logger.warn("Updating config file: {}", conf.getAbsoluteFile());
|
EaglerSPRelay.logger.warn("Updating config file: {}", conf.getAbsoluteFile());
|
||||||
save(conf);
|
save(conf);
|
||||||
}
|
}
|
||||||
@ -310,6 +315,7 @@ public class EaglerSPRelayConfig {
|
|||||||
w.println("world-ratelimit-lockout-limit: " + openRateLimitLockoutLimit);
|
w.println("world-ratelimit-lockout-limit: " + openRateLimitLockoutLimit);
|
||||||
w.println("world-ratelimit-lockout-duration: " + openRateLimitLockoutDuration);
|
w.println("world-ratelimit-lockout-duration: " + openRateLimitLockoutDuration);
|
||||||
w.println("origin-whitelist: " + originWhitelist);
|
w.println("origin-whitelist: " + originWhitelist);
|
||||||
|
w.println("real-ip-header-name: " + realIpHeaderName);
|
||||||
w.println("enable-real-ip-header: " + enableRealIpHeader);
|
w.println("enable-real-ip-header: " + enableRealIpHeader);
|
||||||
w.println("show-local-worlds: " + isEnableShowLocals());
|
w.println("show-local-worlds: " + isEnableShowLocals());
|
||||||
w.print("server-comment: " + serverComment);
|
w.print("server-comment: " + serverComment);
|
||||||
@ -422,6 +428,10 @@ public class EaglerSPRelayConfig {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getRealIPHeaderName() {
|
||||||
|
return realIpHeaderName;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isEnableRealIpHeader() {
|
public boolean isEnableRealIpHeader() {
|
||||||
return enableRealIpHeader;
|
return enableRealIpHeader;
|
||||||
}
|
}
|
||||||
|
BIN
stable-download/sp-relay.jar
Normal file
BIN
stable-download/sp-relay.jar
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user