mirror of https://github.com/PurpleI2P/i2pd.git
Meeh
11 years ago
7 changed files with 223 additions and 45 deletions
@ -0,0 +1,70 @@ |
|||||||
|
#include <iostream> |
||||||
|
#include <fstream> |
||||||
|
#include <boost/filesystem.hpp> |
||||||
|
#include <boost/regex.hpp> |
||||||
|
#include "Reseed.h" |
||||||
|
#include "Log.h" |
||||||
|
#include "util.h" |
||||||
|
|
||||||
|
|
||||||
|
namespace i2p |
||||||
|
{ |
||||||
|
namespace data |
||||||
|
{ |
||||||
|
|
||||||
|
Reseeder::Reseeder() |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
Reseeder::~Reseeder() |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
bool Reseeder::reseedNow() |
||||||
|
{ |
||||||
|
try |
||||||
|
{ |
||||||
|
std::string reseedHost = httpReseedHostList[(rand() % httpReseedHostList.size())]; |
||||||
|
LogPrint("Reseeding from ", reseedHost); |
||||||
|
std::string content = i2p::util::http::httpRequest(reseedHost); |
||||||
|
if (content == "") |
||||||
|
{ |
||||||
|
LogPrint("Reseed failed"); |
||||||
|
return false; |
||||||
|
} |
||||||
|
boost::regex e("<\\s*A\\s+[^>]*href\\s*=\\s*\"([^\"]*)\"", |
||||||
|
boost::regex::normal | boost::regbase::icase); |
||||||
|
boost::sregex_token_iterator i(content.begin(), content.end(), e, 1); |
||||||
|
boost::sregex_token_iterator j; |
||||||
|
std::string name; |
||||||
|
std::string routerInfo; |
||||||
|
std::string tmpUrl; |
||||||
|
std::string filename; |
||||||
|
while (i != j) |
||||||
|
{ |
||||||
|
name = *i++; |
||||||
|
LogPrint("Downloading ", name); |
||||||
|
tmpUrl = reseedHost; |
||||||
|
tmpUrl.append(name); |
||||||
|
routerInfo = i2p::util::http::httpRequest(tmpUrl); |
||||||
|
filename = "netDb/r"; |
||||||
|
filename += name.at(11); |
||||||
|
filename.append("/"); |
||||||
|
filename.append(name.c_str()); |
||||||
|
std::ofstream outfile (filename, std::ios::binary); |
||||||
|
outfile << routerInfo; |
||||||
|
outfile.close(); |
||||||
|
} |
||||||
|
return true; |
||||||
|
} |
||||||
|
catch (std::exception& ex) |
||||||
|
{ |
||||||
|
//TODO: error reporting
|
||||||
|
return false; |
||||||
|
} |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
|
@ -0,0 +1,28 @@ |
|||||||
|
#ifndef RESEED_H |
||||||
|
#define RESEED_H |
||||||
|
|
||||||
|
#include <string> |
||||||
|
#include <vector> |
||||||
|
|
||||||
|
namespace i2p |
||||||
|
{ |
||||||
|
namespace data |
||||||
|
{ |
||||||
|
|
||||||
|
class Reseeder |
||||||
|
{ |
||||||
|
public: |
||||||
|
Reseeder(); |
||||||
|
~Reseeder(); |
||||||
|
bool reseedNow(); |
||||||
|
private: |
||||||
|
std::vector<std::string> httpReseedHostList = { |
||||||
|
"http://193.150.121.66/netDb/", |
||||||
|
"http://netdb.i2p2.no/" |
||||||
|
}; |
||||||
|
}; |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
#endif |
Loading…
Reference in new issue