|
|
@ -79,7 +79,7 @@ public: |
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Connect to a Tor control port. |
|
|
|
* Connect to a Tor control port. |
|
|
|
* target is address of the form host:port. |
|
|
|
* target is address of the form host:port. |
|
|
|
* connected is the handler that is called when connection is succesfully established. |
|
|
|
* connected is the handler that is called when connection is successfully established. |
|
|
|
* disconnected is a handler that is called when the connection is broken. |
|
|
|
* disconnected is a handler that is called when the connection is broken. |
|
|
|
* Return true on success. |
|
|
|
* Return true on success. |
|
|
|
*/ |
|
|
|
*/ |
|
|
@ -177,7 +177,7 @@ void TorControlConnection::eventcb(struct bufferevent *bev, short what, void *ct |
|
|
|
{ |
|
|
|
{ |
|
|
|
TorControlConnection *self = (TorControlConnection*)ctx; |
|
|
|
TorControlConnection *self = (TorControlConnection*)ctx; |
|
|
|
if (what & BEV_EVENT_CONNECTED) { |
|
|
|
if (what & BEV_EVENT_CONNECTED) { |
|
|
|
LogPrint("tor", "tor: Succesfully connected!\n"); |
|
|
|
LogPrint("tor", "tor: Successfully connected!\n"); |
|
|
|
self->connected(*self); |
|
|
|
self->connected(*self); |
|
|
|
} else if (what & (BEV_EVENT_EOF|BEV_EVENT_ERROR)) { |
|
|
|
} else if (what & (BEV_EVENT_EOF|BEV_EVENT_ERROR)) { |
|
|
|
if (what & BEV_EVENT_ERROR) |
|
|
|
if (what & BEV_EVENT_ERROR) |
|
|
@ -380,7 +380,7 @@ private: |
|
|
|
void authchallenge_cb(TorControlConnection& conn, const TorControlReply& reply); |
|
|
|
void authchallenge_cb(TorControlConnection& conn, const TorControlReply& reply); |
|
|
|
/** Callback for PROTOCOLINFO result */ |
|
|
|
/** Callback for PROTOCOLINFO result */ |
|
|
|
void protocolinfo_cb(TorControlConnection& conn, const TorControlReply& reply); |
|
|
|
void protocolinfo_cb(TorControlConnection& conn, const TorControlReply& reply); |
|
|
|
/** Callback after succesful connection */ |
|
|
|
/** Callback after successful connection */ |
|
|
|
void connected_cb(TorControlConnection& conn); |
|
|
|
void connected_cb(TorControlConnection& conn); |
|
|
|
/** Callback after connection lost or failed connection attempt */ |
|
|
|
/** Callback after connection lost or failed connection attempt */ |
|
|
|
void disconnected_cb(TorControlConnection& conn); |
|
|
|
void disconnected_cb(TorControlConnection& conn); |
|
|
@ -419,7 +419,7 @@ TorController::~TorController() |
|
|
|
void TorController::add_onion_cb(TorControlConnection& conn, const TorControlReply& reply) |
|
|
|
void TorController::add_onion_cb(TorControlConnection& conn, const TorControlReply& reply) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if (reply.code == 250) { |
|
|
|
if (reply.code == 250) { |
|
|
|
LogPrint("tor", "tor: ADD_ONION succesful\n"); |
|
|
|
LogPrint("tor", "tor: ADD_ONION successful\n"); |
|
|
|
BOOST_FOREACH(const std::string &s, reply.lines) { |
|
|
|
BOOST_FOREACH(const std::string &s, reply.lines) { |
|
|
|
std::map<std::string,std::string> m = ParseTorReplyMapping(s); |
|
|
|
std::map<std::string,std::string> m = ParseTorReplyMapping(s); |
|
|
|
std::map<std::string,std::string>::iterator i; |
|
|
|
std::map<std::string,std::string>::iterator i; |
|
|
@ -448,7 +448,7 @@ void TorController::add_onion_cb(TorControlConnection& conn, const TorControlRep |
|
|
|
void TorController::auth_cb(TorControlConnection& conn, const TorControlReply& reply) |
|
|
|
void TorController::auth_cb(TorControlConnection& conn, const TorControlReply& reply) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if (reply.code == 250) { |
|
|
|
if (reply.code == 250) { |
|
|
|
LogPrint("tor", "tor: Authentication succesful\n"); |
|
|
|
LogPrint("tor", "tor: Authentication successful\n"); |
|
|
|
|
|
|
|
|
|
|
|
// Now that we know Tor is running setup the proxy for onion addresses
|
|
|
|
// Now that we know Tor is running setup the proxy for onion addresses
|
|
|
|
// if -onion isn't set to something else.
|
|
|
|
// if -onion isn't set to something else.
|
|
|
@ -501,7 +501,7 @@ static std::vector<uint8_t> ComputeResponse(const std::string &key, const std::v |
|
|
|
void TorController::authchallenge_cb(TorControlConnection& conn, const TorControlReply& reply) |
|
|
|
void TorController::authchallenge_cb(TorControlConnection& conn, const TorControlReply& reply) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if (reply.code == 250) { |
|
|
|
if (reply.code == 250) { |
|
|
|
LogPrint("tor", "tor: SAFECOOKIE authentication challenge succesful\n"); |
|
|
|
LogPrint("tor", "tor: SAFECOOKIE authentication challenge successful\n"); |
|
|
|
std::pair<std::string,std::string> l = SplitTorReplyLine(reply.lines[0]); |
|
|
|
std::pair<std::string,std::string> l = SplitTorReplyLine(reply.lines[0]); |
|
|
|
if (l.first == "AUTHCHALLENGE") { |
|
|
|
if (l.first == "AUTHCHALLENGE") { |
|
|
|
std::map<std::string,std::string> m = ParseTorReplyMapping(l.second); |
|
|
|
std::map<std::string,std::string> m = ParseTorReplyMapping(l.second); |
|
|
|