aboutsummaryrefslogtreecommitdiff
path: root/src/torcontrol.h
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2015-08-25 20:12:08 +0200
committerWladimir J. van der Laan <laanwj@gmail.com>2015-11-10 17:29:56 +0100
commit8f4e67f152a9625a1c66c20de00679286b2c187c (patch)
tree69a6b3f08d8dc830139ed169858be5f75dd20206 /src/torcontrol.h
parentb56953e9bb5a32bc35365d1f0c5de5528c0650dd (diff)
downloadbitcoin-8f4e67f152a9625a1c66c20de00679286b2c187c.tar.xz
net: Automatically create hidden service, listen on Tor
Starting with Tor version 0.2.7.1 it is possible, through Tor's control socket API, to create and destroy 'ephemeral' hidden services programmatically. https://stem.torproject.org/api/control.html#stem.control.Controller.create_ephemeral_hidden_service This means that if Tor is running (and proper authorization is available), bitcoin automatically creates a hidden service to listen on, without user manual configuration. This will positively affect the number of available .onion nodes. - When the node is started, connect to Tor through control socket - Send `ADD_ONION` command - First time: - Make it create a hidden service key - Save the key in the data directory for later usage - Make it redirect port 8333 to the local port 8333 (or whatever port we're listening on). - Keep control socket connection open for as long node is running. The hidden service will (by default) automatically go away when the connection is closed.
Diffstat (limited to 'src/torcontrol.h')
-rw-r--r--src/torcontrol.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/torcontrol.h b/src/torcontrol.h
new file mode 100644
index 0000000000..fa55f6b030
--- /dev/null
+++ b/src/torcontrol.h
@@ -0,0 +1,19 @@
+// Copyright (c) 2015 The Bitcoin Core developers
+// Distributed under the MIT software license, see the accompanying
+// file COPYING or http://www.opensource.org/licenses/mit-license.php.
+
+/**
+ * Functionality for communicating with Tor.
+ */
+#ifndef BITCOIN_TORCONTROL_H
+#define BITCOIN_TORCONTROL_H
+
+#include "scheduler.h"
+
+extern const std::string DEFAULT_TOR_CONTROL;
+static const bool DEFAULT_LISTEN_ONION = true;
+
+void StartTorControl(boost::thread_group& threadGroup, CScheduler& scheduler);
+void StopTorControl();
+
+#endif /* BITCOIN_TORCONTROL_H */