From 40ee132277ce31bba075fdc5c33d9cb8d9660352 Mon Sep 17 00:00:00 2001 From: Mike Primm Date: Sun, 12 Jun 2011 18:50:41 -0700 Subject: [PATCH] Add support for using X-Forwarded-From for better proxy IP handling on webchat --- .../org/dynmap/web/handlers/SendMessageHandler.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/dynmap/web/handlers/SendMessageHandler.java b/src/main/java/org/dynmap/web/handlers/SendMessageHandler.java index 2e5f88ca..e2945df2 100644 --- a/src/main/java/org/dynmap/web/handlers/SendMessageHandler.java +++ b/src/main/java/org/dynmap/web/handlers/SendMessageHandler.java @@ -41,8 +41,14 @@ public class SendMessageHandler implements HttpHandler { JSONObject o = (JSONObject)parser.parse(reader); final Message message = new Message(); - //message.name = String.valueOf(o.get("name")); //Can't trust client....we don't need to on internal web server - message.name = request.rmtaddr.getAddress().getHostAddress(); + /* If proxied client address, get original */ + if(request.fields.containsKey("X-Forwarded-For")) + message.name = request.fields.get("X-Forwarded-For"); + /* If from loopback, we're probably getting from proxy - need to trust client */ + else if(request.rmtaddr.getAddress().isLoopbackAddress()) + message.name = String.valueOf(o.get("name")); + else + message.name = request.rmtaddr.getAddress().getHostAddress(); message.message = String.valueOf(o.get("message")); final long now = System.currentTimeMillis();