mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-06-01 23:30:53 +00:00
Add tor listening options to create-node
This commit is contained in:
parent
4a1d1a5541
commit
e02d21aed1
@ -30,6 +30,15 @@ WHERE_OPTS = [
|
|||||||
"Comma-separated list of listener types (tcp,tor,i2p,none)."),
|
"Comma-separated list of listener types (tcp,tor,i2p,none)."),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
TOR_OPTS = [
|
||||||
|
("tor-control-port", None, None,
|
||||||
|
"Tor's control port endpoint descriptor string (e.g. tcp:127.0.0.1:9051 or unix:/var/run/tor/control)"),
|
||||||
|
]
|
||||||
|
|
||||||
|
TOR_FLAG = [
|
||||||
|
("launch-tor", None, "Launch a tor instead of connecting to a tor control port."),
|
||||||
|
]
|
||||||
|
|
||||||
def validate_where_options(o):
|
def validate_where_options(o):
|
||||||
if o['listen'] == "none":
|
if o['listen'] == "none":
|
||||||
# no other arguments are accepted
|
# no other arguments are accepted
|
||||||
@ -81,6 +90,7 @@ class CreateClientOptions(_CreateBaseOptions):
|
|||||||
# we provide 'create-node'-time options for the most common
|
# we provide 'create-node'-time options for the most common
|
||||||
# configuration knobs. The rest can be controlled by editing
|
# configuration knobs. The rest can be controlled by editing
|
||||||
# tahoe.cfg before node startup.
|
# tahoe.cfg before node startup.
|
||||||
|
|
||||||
("nickname", "n", None, "Specify the nickname for this node."),
|
("nickname", "n", None, "Specify the nickname for this node."),
|
||||||
("introducer", "i", None, "Specify the introducer FURL to use."),
|
("introducer", "i", None, "Specify the introducer FURL to use."),
|
||||||
("webport", "p", "tcp:3456:interface=127.0.0.1",
|
("webport", "p", "tcp:3456:interface=127.0.0.1",
|
||||||
@ -97,10 +107,11 @@ class CreateClientOptions(_CreateBaseOptions):
|
|||||||
class CreateNodeOptions(CreateClientOptions):
|
class CreateNodeOptions(CreateClientOptions):
|
||||||
optFlags = [
|
optFlags = [
|
||||||
("no-storage", None, "Do not offer storage service to other nodes."),
|
("no-storage", None, "Do not offer storage service to other nodes."),
|
||||||
]
|
] + TOR_FLAG
|
||||||
|
|
||||||
synopsis = "[options] [NODEDIR]"
|
synopsis = "[options] [NODEDIR]"
|
||||||
description = "Create a full Tahoe-LAFS node (client+server)."
|
description = "Create a full Tahoe-LAFS node (client+server)."
|
||||||
optParameters = CreateClientOptions.optParameters + WHERE_OPTS
|
optParameters = CreateClientOptions.optParameters + WHERE_OPTS + TOR_OPTS
|
||||||
|
|
||||||
def parseArgs(self, basedir=None):
|
def parseArgs(self, basedir=None):
|
||||||
CreateClientOptions.parseArgs(self, basedir)
|
CreateClientOptions.parseArgs(self, basedir)
|
||||||
@ -111,8 +122,8 @@ class CreateIntroducerOptions(NoDefaultBasedirOptions):
|
|||||||
description = "Create a Tahoe-LAFS introducer."
|
description = "Create a Tahoe-LAFS introducer."
|
||||||
optFlags = [
|
optFlags = [
|
||||||
("hide-ip", None, "prohibit any configuration that would reveal the node's IP address"),
|
("hide-ip", None, "prohibit any configuration that would reveal the node's IP address"),
|
||||||
]
|
] + TOR_FLAG
|
||||||
optParameters = NoDefaultBasedirOptions.optParameters + WHERE_OPTS
|
optParameters = NoDefaultBasedirOptions.optParameters + WHERE_OPTS + TOR_OPTS
|
||||||
def parseArgs(self, basedir=None):
|
def parseArgs(self, basedir=None):
|
||||||
NoDefaultBasedirOptions.parseArgs(self, basedir)
|
NoDefaultBasedirOptions.parseArgs(self, basedir)
|
||||||
validate_where_options(self)
|
validate_where_options(self)
|
||||||
@ -157,8 +168,15 @@ def write_node_config(c, config):
|
|||||||
c.write("tub.location = disabled\n")
|
c.write("tub.location = disabled\n")
|
||||||
else:
|
else:
|
||||||
if "tor" in listeners:
|
if "tor" in listeners:
|
||||||
raise NotImplementedError("--listen=tor is under development, "
|
key_file = "default.onion_key"
|
||||||
"see ticket #2490 for details")
|
onion_port = 3456
|
||||||
|
c.write("[tor]\n")
|
||||||
|
c.write("onion.external_port = %s\n" % onion_port)
|
||||||
|
c.write("onion.private_key_file = %s\n" % key_file)
|
||||||
|
#tor_provider = TorProvider(tor_binary = )
|
||||||
|
# XXX fix me
|
||||||
|
tor_provider = TorProvider()
|
||||||
|
yield CreateOnion(tor_provider,key_file, onion_port)
|
||||||
if "i2p" in listeners:
|
if "i2p" in listeners:
|
||||||
raise NotImplementedError("--listen=i2p is under development, "
|
raise NotImplementedError("--listen=i2p is under development, "
|
||||||
"see ticket #2490 for details")
|
"see ticket #2490 for details")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user