Browse Source

jump service

pull/102/head
orignal 10 years ago
parent
commit
e51cca8263
  1. 8
      AddressBook.cpp
  2. 1
      AddressBook.h
  3. 14
      HTTPProxy.cpp
  4. 1
      NetDb.h

8
AddressBook.cpp

@ -32,6 +32,14 @@ namespace data @@ -32,6 +32,14 @@ namespace data
return nullptr;
}
void AddressBook::InsertAddress (const std::string& address, const std::string& base64)
{
IdentityEx ident;
ident.FromBase64 (base64);
m_Addresses[address] = ident.GetIdentHash ();
LogPrint (address,"->",ident.GetIdentHash ().ToBase32 (), ".b32.i2p added");
}
void AddressBook::LoadHostsFromI2P ()
{
std::string content;

1
AddressBook.h

@ -19,6 +19,7 @@ namespace data @@ -19,6 +19,7 @@ namespace data
AddressBook ();
const IdentHash * FindAddress (const std::string& address);
void InsertAddress (const std::string& address, const std::string& base64); // for jump service
private:

14
HTTPProxy.cpp

@ -1,6 +1,7 @@ @@ -1,6 +1,7 @@
#include <boost/lexical_cast.hpp>
#include <boost/regex.hpp>
#include "NetDb.h"
#include "HTTPProxy.h"
namespace i2p
@ -63,6 +64,19 @@ namespace proxy @@ -63,6 +64,19 @@ namespace proxy
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::data::netdb.InsertAddress (r.host, base64);
}
}
LogPrint("Requesting ", r.host, " with path ", r.uri, " and method ", r.method);
SendToAddress (r.host, m_Buffer, m_BufferLen);
}

1
NetDb.h

@ -67,6 +67,7 @@ namespace data @@ -67,6 +67,7 @@ namespace data
RouterInfo * FindRouter (const IdentHash& ident) const;
LeaseSet * FindLeaseSet (const IdentHash& destination) const;
const IdentHash * FindAddress (const std::string& address) { return m_AddressBook.FindAddress (address); }; // TODO: move AddressBook away from NetDb
void InsertAddress (const std::string& address, const std::string& base64) { m_AddressBook.InsertAddress (address, base64); };
void Subscribe (const IdentHash& ident, i2p::tunnel::TunnelPool * pool = nullptr); // keep LeaseSets upto date
void Unsubscribe (const IdentHash& ident);

Loading…
Cancel
Save