8 #ifndef BITCOIN_TORCONTROL_H 9 #define BITCOIN_TORCONTROL_H 14 #include <boost/signals2/signal.hpp> 16 #include <event2/bufferevent.h> 17 #include <event2/event.h> 59 typedef std::function<void(TorControlConnection &,const TorControlReply &)>
ReplyHandlerCB;
87 boost::signals2::signal<void(TorControlConnection &,const TorControlReply &)>
async_handler;
90 std::function<void(TorControlConnection&)>
connected;
103 static void readcb(
struct bufferevent *bev,
void *
ctx);
104 static void eventcb(
struct bufferevent *bev,
short what,
void *
ctx);
157 static void reconnect_cb(evutil_socket_t fd,
short what,
void *arg);
void authchallenge_cb(TorControlConnection &conn, const TorControlReply &reply)
Callback for AUTHCHALLENGE result.
std::function< void(TorControlConnection &)> disconnected
Callback when connection lost.
std::function< void(TorControlConnection &)> ConnectionCB
bool Connect(const std::string &tor_control_center, const ConnectionCB &connected, const ConnectionCB &disconnected)
Connect to a Tor control port.
struct bufferevent * b_conn
Connection to control socket.
std::vector< uint8_t > clientNonce
ClientNonce for SAFECOOKIE auth.
Reply from Tor, can be single or multi-line.
void protocolinfo_cb(TorControlConnection &conn, const TorControlReply &reply)
Callback for PROTOCOLINFO result.
void Reconnect()
Reconnect, after getting disconnected.
std::vector< std::string > lines
std::deque< ReplyHandlerCB > reply_handlers
Response handlers.
std::function< void(TorControlConnection &, const TorControlReply &)> ReplyHandlerCB
void disconnected_cb(TorControlConnection &conn)
Callback after connection lost or failed connection attempt.
const std::string m_tor_control_center
static void readcb(struct bufferevent *bev, void *ctx)
Libevent handlers: internal.
fs::path GetPrivateKeyFile()
Get name of file to store private key in.
struct event * reconnect_ev
TorControlConnection(struct event_base *base)
Create a new TorControlConnection.
std::vector< uint8_t > cookie
Cookie for SAFECOOKIE auth.
TorControlConnection conn
static secp256k1_context * ctx
A combination of a network address (CNetAddr) and a (TCP) port.
static void reconnect_cb(evutil_socket_t fd, short what, void *arg)
Callback for reconnect timer.
void InterruptTorControl()
void add_onion_cb(TorControlConnection &conn, const TorControlReply &reply)
Callback for ADD_ONION result.
CService DefaultOnionServiceTarget()
const std::string DEFAULT_TOR_CONTROL
Default control port.
void auth_cb(TorControlConnection &conn, const TorControlReply &reply)
Callback for AUTHENTICATE result.
void StartTorControl(CService onion_service_target)
void Disconnect()
Disconnect from Tor control port.
static void eventcb(struct bufferevent *bev, short what, void *ctx)
bool Command(const std::string &cmd, const ReplyHandlerCB &reply_handler)
Send a command, register a handler for the reply.
void connected_cb(TorControlConnection &conn)
Callback after successful connection.
Controller that connects to Tor control socket, authenticate, then create and maintain an ephemeral o...
Low-level handling for Tor control connection.
boost::signals2::signal< void(TorControlConnection &, const TorControlReply &)> async_handler
Response handlers for async replies.
static const bool DEFAULT_LISTEN_ONION
TorControlReply message
Message being received.
struct event_base * base
Libevent event base.
std::function< void(TorControlConnection &)> connected
Callback when ready for use.