From c7a468eb147c611705faf19bc987a319a825a6ce Mon Sep 17 00:00:00 2001 From: shortcutme Date: Sun, 20 Jan 2019 03:15:21 +0100 Subject: [PATCH] Bind file server to ipv6 interfaces according to fileserver_ip_type config value --- src/Config.py | 8 ++++++-- src/File/FileServer.py | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/Config.py b/src/Config.py index 6bdefb08..70262fde 100644 --- a/src/Config.py +++ b/src/Config.py @@ -18,8 +18,11 @@ class Config(object): self.action = None self.pending_changes = {} self.need_restart = False - self.keys_api_change_allowed = set(["tor", "fileserver_port", "language", "tor_use_bridges", "trackers_proxy", "trackers", "trackers_file", "open_browser", "log_level"]) - self.keys_restart_need = set(["tor", "fileserver_port"]) + self.keys_api_change_allowed = set([ + "tor", "fileserver_port", "language", "tor_use_bridges", "trackers_proxy", "trackers", + "trackers_file", "open_browser", "log_level", "fileserver_ip_type" + ]) + self.keys_restart_need = set(["tor", "fileserver_port", "fileserver_ip_type"]) self.start_dir = self.getStartDir() self.config_file = "zeronet.conf" @@ -232,6 +235,7 @@ class Config(object): self.parser.add_argument('--fileserver_ip', help='FileServer bind address', default="*", metavar='ip') self.parser.add_argument('--fileserver_port', help='FileServer bind port (0: randomize)', default=0, type=int, metavar='port') self.parser.add_argument('--fileserver_port_range', help='FileServer randomization range', default="10000-40000", metavar='port') + self.parser.add_argument('--fileserver_ip_type', help='FileServer ip type', default="ipv4", choices=["ipv4", "ipv6"]) self.parser.add_argument('--ip_local', help='My local ips', default=ip_local, type=int, metavar='ip', nargs='*') self.parser.add_argument('--disable_udp', help='Disable UDP connections', action='store_true') diff --git a/src/File/FileServer.py b/src/File/FileServer.py index c4cfe0ca..76b10953 100644 --- a/src/File/FileServer.py +++ b/src/File/FileServer.py @@ -18,11 +18,15 @@ from Plugin import PluginManager @PluginManager.acceptPlugins class FileServer(ConnectionServer): - def __init__(self, ip=config.fileserver_ip, port=config.fileserver_port): + def __init__(self, ip=config.fileserver_ip, port=config.fileserver_port, ip_type=config.fileserver_ip_type): self.site_manager = SiteManager.site_manager self.portchecker = PeerPortchecker.PeerPortchecker(self) self.log = logging.getLogger("FileServer") - ip = ip.replace("*", "0.0.0.0") + self.ip_type = ip_type + if ip_type == "ipv6": + ip = ip.replace("*", "::") + else: + ip = ip.replace("*", "0.0.0.0") if config.tor == "always": port = config.tor_hs_port