From be71e8afa2facd03862d877807e37058806731f9 Mon Sep 17 00:00:00 2001 From: Vinnie Falco Date: Tue, 2 Feb 2016 11:42:55 -0500 Subject: [PATCH] Get X-Forwarded-For from Session request --- src/ripple/server/Session.h | 10 -------- src/ripple/server/impl/Peer.h | 27 +-------------------- src/ripple/server/impl/ServerHandlerImp.cpp | 19 ++++++++++++++- 3 files changed, 19 insertions(+), 37 deletions(-) diff --git a/src/ripple/server/Session.h b/src/ripple/server/Session.h index 7b280d5a9..6e609ef7c 100644 --- a/src/ripple/server/Session.h +++ b/src/ripple/server/Session.h @@ -68,16 +68,6 @@ public: beast::IP::Endpoint remoteAddress() = 0; - /** Returns the user name if behind a proxy (secure_gateway). */ - virtual - std::string - user() = 0; - - /** Returns X-Forwarded-For if behind a proxy (secure_gateway). */ - virtual - std::string - forwarded_for() = 0; - /** Returns the current HTTP request. */ virtual beast::http::message& diff --git a/src/ripple/server/impl/Peer.h b/src/ripple/server/impl/Peer.h index 28032a74d..3d9289e2f 100644 --- a/src/ripple/server/impl/Peer.h +++ b/src/ripple/server/impl/Peer.h @@ -86,8 +86,6 @@ protected: boost::asio::io_service::strand strand_; waitable_timer timer_; endpoint_type remote_address_; - std::string forwarded_for_; - std::string user_; beast::Journal journal_; std::string id_; @@ -183,18 +181,6 @@ protected: return beast::IPAddressConversion::from_asio(remote_address_); } - std::string - user() override - { - return user_; - } - - std::string - forwarded_for() override - { - return forwarded_for_; - } - beast::http::message& request() override { @@ -385,20 +371,9 @@ Peer::do_read (yield_context yield) if (! ec) { if (parser.complete()) - { - auto const iter = message_.headers.find ("X-Forwarded-For"); - if (iter != message_.headers.end()) - forwarded_for_ = iter->second; - auto const iter2 = message_.headers.find ("X-User"); - if (iter2 != message_.headers.end()) - user_ = iter2->second; - return do_request(); - } - else if (eof) - { + if (eof) ec = boost::asio::error::eof; // incomplete request - } } if (ec) diff --git a/src/ripple/server/impl/ServerHandlerImp.cpp b/src/ripple/server/impl/ServerHandlerImp.cpp index fa88a4dc5..b8d71bf16 100644 --- a/src/ripple/server/impl/ServerHandlerImp.cpp +++ b/src/ripple/server/impl/ServerHandlerImp.cpp @@ -205,7 +205,24 @@ ServerHandlerImp::processSession (std::shared_ptr const& session, { processRequest (session->port(), to_string (session->body()), session->remoteAddress().at_port (0), makeOutput (*session), jobCoro, - session->forwarded_for(), session->user()); + [&] + { + auto const iter = + session->request().headers.find( + "X-Forwarded-For"); + if(iter != session->request().headers.end()) + return iter->second; + return std::string{}; + }(), + [&] + { + auto const iter = + session->request().headers.find( + "X-User"); + if(iter != session->request().headers.end()) + return iter->second; + return std::string{}; + }()); if (session->request().keep_alive()) session->complete();