def postOptions(self): super(_CreateBaseOptions, self).postOptions() if self['hide-ip']: if tor_provider._import_txtorcon( ) is None and i2p_provider._import_txi2p() is None: raise UsageError( "--hide-ip was specified but neither 'txtorcon' nor 'txi2p' " "are installed.\nTo do so:\n pip install tahoe-lafs[tor]\nor\n" " pip install tahoe-lafs[i2p]")
def postOptions(self): super(_CreateBaseOptions, self).postOptions() if self['hide-ip']: if tor_provider._import_txtorcon() is None and i2p_provider._import_txi2p() is None: raise UsageError( "--hide-ip was specified but neither 'txtorcon' nor 'txi2p' " "are installed.\nTo do so:\n pip install tahoe-lafs[tor]\nor\n" " pip install tahoe-lafs[i2p]" )
def validate_tor_options(o): use_tor = "tor" in o["listen"].split(",") if use_tor or any((o["tor-launch"], o["tor-control-port"])): if tor_provider._import_txtorcon() is None: raise UsageError( "Specifying any Tor options requires the 'txtorcon' module") if not use_tor: if o["tor-launch"]: raise UsageError("--tor-launch requires --listen=tor") if o["tor-control-port"]: raise UsageError("--tor-control-port= requires --listen=tor") if o["tor-launch"] and o["tor-control-port"]: raise UsageError( "use either --tor-launch or --tor-control-port=, not both")
def validate_tor_options(o): use_tor = "tor" in o["listen"].split(",") if use_tor or any((o["tor-launch"], o["tor-control-port"])): if tor_provider._import_txtorcon() is None: raise UsageError( "Specifying any Tor options requires the 'txtorcon' module" ) if not use_tor: if o["tor-launch"]: raise UsageError("--tor-launch requires --listen=tor") if o["tor-control-port"]: raise UsageError("--tor-control-port= requires --listen=tor") if o["tor-launch"] and o["tor-control-port"]: raise UsageError("use either --tor-launch or --tor-control-port=, not both")
def write_node_config(c, config): # this is shared between clients and introducers c.write("# -*- mode: conf; coding: utf-8 -*-\n") c.write("\n") c.write("# This file controls the configuration of the Tahoe node that\n") c.write("# lives in this directory. It is only read at node startup.\n") c.write("# For details about the keys that can be set here, please\n") c.write("# read the 'docs/configuration.rst' file that came with your\n") c.write("# Tahoe installation.\n") c.write("\n\n") if config["hide-ip"]: c.write("[connections]\n") if tor_provider._import_txtorcon(): c.write("tcp = tor\n") else: c.write("tcp = disabled\n") c.write("\n") c.write("[node]\n") nickname = argv_to_unicode(config.get("nickname") or "") c.write("nickname = %s\n" % (nickname.encode('utf-8'), )) if config["hide-ip"]: c.write("reveal-IP-address = false\n") else: c.write("reveal-IP-address = true\n") # TODO: validate webport webport = argv_to_unicode(config.get("webport") or "none") if webport.lower() == "none": webport = "" c.write("web.port = %s\n" % (webport.encode('utf-8'), )) c.write("web.static = public_html\n") listeners = config['listen'].split(",") tor_config = {} i2p_config = {} tub_ports = [] tub_locations = [] if listeners == ["none"]: c.write("tub.port = disabled\n") c.write("tub.location = disabled\n") else: if "tor" in listeners: (tor_config, tor_port, tor_location) = \ yield tor_provider.create_onion(reactor, config) tub_ports.append(tor_port) tub_locations.append(tor_location) if "i2p" in listeners: (i2p_config, i2p_port, i2p_location) = \ yield i2p_provider.create_dest(reactor, config) tub_ports.append(i2p_port) tub_locations.append(i2p_location) if "tcp" in listeners: if config["port"]: # --port/--location are a pair tub_ports.append(config["port"].encode('utf-8')) tub_locations.append(config["location"].encode('utf-8')) else: assert "hostname" in config hostname = config["hostname"] new_port = iputil.allocate_tcp_port() tub_ports.append("tcp:%s" % new_port) tub_locations.append("tcp:%s:%s" % (hostname.encode('utf-8'), new_port)) c.write("tub.port = %s\n" % ",".join(tub_ports)) c.write("tub.location = %s\n" % ",".join(tub_locations)) c.write("\n") c.write("#log_gatherer.furl =\n") c.write("#timeout.keepalive =\n") c.write("#timeout.disconnect =\n") c.write("#ssh.port = 8022\n") c.write("#ssh.authorized_keys_file = ~/.ssh/authorized_keys\n") c.write("\n") if tor_config: c.write("[tor]\n") for key, value in tor_config.items(): c.write("%s = %s\n" % (key, value)) c.write("\n") if i2p_config: c.write("[i2p]\n") for key, value in i2p_config.items(): c.write("%s = %s\n" % (key, value)) c.write("\n")
def write_node_config(c, config): # this is shared between clients and introducers c.write("# -*- mode: conf; coding: utf-8 -*-\n") c.write("\n") c.write("# This file controls the configuration of the Tahoe node that\n") c.write("# lives in this directory. It is only read at node startup.\n") c.write("# For details about the keys that can be set here, please\n") c.write("# read the 'docs/configuration.rst' file that came with your\n") c.write("# Tahoe installation.\n") c.write("\n\n") if config["hide-ip"]: c.write("[connections]\n") if tor_provider._import_txtorcon(): c.write("tcp = tor\n") else: c.write("tcp = disabled\n") c.write("\n") c.write("[node]\n") nickname = argv_to_unicode(config.get("nickname") or "") c.write("nickname = %s\n" % (nickname.encode('utf-8'),)) if config["hide-ip"]: c.write("reveal-IP-address = false\n") else: c.write("reveal-IP-address = true\n") # TODO: validate webport webport = argv_to_unicode(config.get("webport") or "none") if webport.lower() == "none": webport = "" c.write("web.port = %s\n" % (webport.encode('utf-8'),)) c.write("web.static = public_html\n") listeners = config['listen'].split(",") tor_config = {} i2p_config = {} tub_ports = [] tub_locations = [] if listeners == ["none"]: c.write("tub.port = disabled\n") c.write("tub.location = disabled\n") else: if "tor" in listeners: (tor_config, tor_port, tor_location) = \ yield tor_provider.create_onion(reactor, config) tub_ports.append(tor_port) tub_locations.append(tor_location) if "i2p" in listeners: (i2p_config, i2p_port, i2p_location) = \ yield i2p_provider.create_dest(reactor, config) tub_ports.append(i2p_port) tub_locations.append(i2p_location) if "tcp" in listeners: if config["port"]: # --port/--location are a pair tub_ports.append(config["port"].encode('utf-8')) tub_locations.append(config["location"].encode('utf-8')) else: assert "hostname" in config hostname = config["hostname"] new_port = iputil.allocate_tcp_port() tub_ports.append("tcp:%s" % new_port) tub_locations.append("tcp:%s:%s" % (hostname.encode('utf-8'), new_port)) c.write("tub.port = %s\n" % ",".join(tub_ports)) c.write("tub.location = %s\n" % ",".join(tub_locations)) c.write("\n") c.write("#log_gatherer.furl =\n") c.write("#timeout.keepalive =\n") c.write("#timeout.disconnect =\n") c.write("#ssh.port = 8022\n") c.write("#ssh.authorized_keys_file = ~/.ssh/authorized_keys\n") c.write("\n") if tor_config: c.write("[tor]\n") for key, value in tor_config.items(): c.write("%s = %s\n" % (key, value)) c.write("\n") if i2p_config: c.write("[i2p]\n") for key, value in i2p_config.items(): c.write("%s = %s\n" % (key, value)) c.write("\n")