Exemple #1
0
	bool HTTPProxyHandler::CreateHTTPRequest(uint8_t *http_buff, std::size_t len) 
	{
		ExtractRequest(); //TODO: parse earlier
		if (!ValidateHTTPRequest()) return false;
		HandleJumpServices();
		m_request = m_method;
		m_request.push_back(' ');
		m_request += m_path;
		m_request.push_back(' ');
		m_request += m_version;
		m_request.push_back('\r');
		m_request.push_back('\n');
		m_request.append("Connection: close\r\n");
		m_request.append(reinterpret_cast<const char *>(http_buff),len);
		return true;
	}
Exemple #2
0
	void HTTPProxyConnection::RunRequest()
	{
		request r;
		ExtractRequest(r);
		parseHeaders(m_Buffer, r.headers);
		size_t addressHelperPos = r.uri.find ("i2paddresshelper");
		if (addressHelperPos != std::string::npos)
		{
			// jump service
			size_t addressPos = r.uri.find ("=", addressHelperPos);
			if (addressPos != std::string::npos)
			{
				LogPrint ("Jump service for ", r.host, " found. Inserting to address book");
				auto base64 = r.uri.substr (addressPos + 1);
				i2p::client::context.GetAddressBook ().InsertAddress (r.host, base64);
			}
		}			
	
		LogPrint("Requesting ", r.host, ":", r.port, " with path ", r.uri, " and method ", r.method);
		SendToAddress (r.host, r.port,  m_Buffer, m_BufferLen);
	}