extract address

This commit is contained in:
orignal 2014-01-14 19:56:34 -05:00
parent 5856310cd6
commit 68a0643310
2 changed files with 23 additions and 4 deletions

View File

@ -1,6 +1,7 @@
#include <boost/bind.hpp>
#include <boost/lexical_cast.hpp>
#include "base64.h"
#include "Log.h"
#include "Tunnel.h"
#include "TransitTunnel.h"
#include "Transports.h"
@ -45,7 +46,7 @@ namespace util
void HTTPConnection::Receive ()
{
m_Socket->async_read_some (boost::asio::buffer (m_Buffer),
m_Socket->async_read_some (boost::asio::buffer (m_Buffer, 8192),
boost::bind(&HTTPConnection::HandleReceive, this,
boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred));
}
@ -54,7 +55,12 @@ namespace util
{
if (!ecode)
{
HandleRequest ();
m_Buffer[bytes_transferred] = 0;
auto address = ExtractAddress ();
if (address.find ('?') != std::string::npos)
HandleDestinationRequest ("zmw2cyw2vj7f6obx3msmdvdepdhnw2ctc4okza2zjxlukkdfckhq");
else
HandleRequest ();
boost::asio::async_write (*m_Socket, m_Reply.to_buffers(),
boost::bind (&HTTPConnection::HandleWrite, this,
boost::asio::placeholders::error));
@ -64,6 +70,18 @@ namespace util
Terminate ();
}
std::string HTTPConnection::ExtractAddress ()
{
char * get = strstr (m_Buffer, "GET");
if (get)
{
char * http = strstr (get, "HTTP");
if (http)
return std::string (get + 3, http - get - 3);
}
return "";
}
void HTTPConnection::HandleWrite (const boost::system::error_code& ecode)
{
Terminate ();

View File

@ -50,11 +50,12 @@ namespace util
void HandleRequest ();
void HandleDestinationRequest (std::string b32);
void FillContent (std::stringstream& s);
std::string ExtractAddress ();
private:
boost::asio::ip::tcp::socket * m_Socket;
boost::array<char, 8192> m_Buffer;
char m_Buffer[8192];
request m_Request;
reply m_Reply;
};