Browse Source

* Reseed.cpp : use new http classes

pull/578/head
hagen 8 years ago
parent
commit
25ba08abcf
  1. 31
      Reseed.cpp

31
Reseed.cpp

@ -14,6 +14,7 @@
#include "Log.h" #include "Log.h"
#include "Identity.h" #include "Identity.h"
#include "NetDb.h" #include "NetDb.h"
#include "HTTP.h"
#include "util.h" #include "util.h"
namespace i2p namespace i2p
@ -372,13 +373,19 @@ namespace data
std::string Reseeder::HttpsRequest (const std::string& address) std::string Reseeder::HttpsRequest (const std::string& address)
{ {
i2p::util::http::url u(address); i2p::http::URL url;
if (u.port_ == 80) u.port_ = 443; if (!url.parse(address)) {
LogPrint(eLogError, "Reseed: failed to parse url: ", address);
return "";
}
url.schema = "https";
if (!url.port)
url.port = 443;
boost::asio::io_service service; boost::asio::io_service service;
boost::system::error_code ecode; boost::system::error_code ecode;
auto it = boost::asio::ip::tcp::resolver(service).resolve ( auto it = boost::asio::ip::tcp::resolver(service).resolve (
boost::asio::ip::tcp::resolver::query (u.host_, std::to_string (u.port_)), ecode); boost::asio::ip::tcp::resolver::query (url.host, std::to_string(url.port)), ecode);
if (!ecode) if (!ecode)
{ {
boost::asio::ssl::context ctx(service, boost::asio::ssl::context::sslv23); boost::asio::ssl::context ctx(service, boost::asio::ssl::context::sslv23);
@ -390,12 +397,12 @@ namespace data
s.handshake (boost::asio::ssl::stream_base::client, ecode); s.handshake (boost::asio::ssl::stream_base::client, ecode);
if (!ecode) if (!ecode)
{ {
LogPrint (eLogInfo, "Reseed: Connected to ", u.host_, ":", u.port_); LogPrint (eLogDebug, "Reseed: Connected to ", url.host, ":", url.port);
// send request i2p::http::HTTPReq req;
std::stringstream ss; req.uri = url.to_string();
ss << "GET " << u.path_ << " HTTP/1.1\r\nHost: " << u.host_ req.add_header("User-Agent", "Wget/1.11.4");
<< "\r\nAccept: */*\r\n" << "User-Agent: Wget/1.11.4\r\n" << "Connection: close\r\n\r\n"; req.add_header("Connection", "close");
s.write_some (boost::asio::buffer (ss.str ())); s.write_some (boost::asio::buffer (req.to_string()));
// read response // read response
std::stringstream rs; std::stringstream rs;
char response[1024]; size_t l = 0; char response[1024]; size_t l = 0;
@ -412,10 +419,10 @@ namespace data
LogPrint (eLogError, "Reseed: SSL handshake failed: ", ecode.message ()); LogPrint (eLogError, "Reseed: SSL handshake failed: ", ecode.message ());
} }
else else
LogPrint (eLogError, "Reseed: Couldn't connect to ", u.host_, ": ", ecode.message ()); LogPrint (eLogError, "Reseed: Couldn't connect to ", url.host, ": ", ecode.message ());
} }
else else
LogPrint (eLogError, "Reseed: Couldn't resolve address ", u.host_, ": ", ecode.message ()); LogPrint (eLogError, "Reseed: Couldn't resolve address ", url.host, ": ", ecode.message ());
return ""; return "";
} }
} }

Loading…
Cancel
Save