From 38498b752b02ae7d0a3e0cab80f7d0ea38d88791 Mon Sep 17 00:00:00 2001 From: Daniel Oaks Date: Mon, 11 Sep 2017 17:00:58 +1000 Subject: [PATCH] PROXY: Make sure given IPs are valid and pass them through appropriately --- irc/server.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/irc/server.go b/irc/server.go index 41b78a79..4cc902b5 100644 --- a/irc/server.go +++ b/irc/server.go @@ -2239,9 +2239,21 @@ func proxyHandler(server *Server, client *Client, msg ircmsg.IrcMessage) bool { clientHostname := client.hostname for _, address := range server.proxyAllowedFrom { if clientHostname == address || clientAddress == address { + proxiedIP := msg.Params[1] + + // ensure IP is sane + parsedProxiedIP := net.ParseIP(proxiedIP) + if parsedProxiedIP == nil { + client.Quit(fmt.Sprintf("Proxied IP address is not valid: [%s]", proxiedIP)) + return true + } + //TODO(dan): check DLINEs and connection throttling/limits + + // override the client's regular IP client.proxiedIP = msg.Params[1] client.hostname = LookupHostname(msg.Params[1]) + client.rawHostname = LookupHostname(msg.Params[1]) return false } }