From 79488c4785b3bfcb395eb847c74184d213ff698c Mon Sep 17 00:00:00 2001 From: shypike Date: Mon, 25 Jun 2012 22:34:07 +0200 Subject: [PATCH] Add option to suppress listening on web host address ::1 --- SABnzbd.py | 24 ++++++++++++++++-------- sabnzbd/cfg.py | 1 + sabnzbd/interface.py | 2 +- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/SABnzbd.py b/SABnzbd.py index 33de621..d932884 100755 --- a/SABnzbd.py +++ b/SABnzbd.py @@ -253,6 +253,7 @@ def print_help(): print " --log-all Log all article handling (for developers)" print " --console Force console logging for OSX app" print " --new Run a new instance of SABnzbd" + print " --no_ipv6 Do listen on IPv6 address [::1]" def print_version(): print """ @@ -675,13 +676,14 @@ def get_webhost(cherryhost, cherryport, https_port): def attach_server(host, port, cert=None, key=None): """ Define and attach server, optionally HTTPS """ - http_server = _cpwsgi_server.CPWSGIServer() - http_server.bind_addr = (host, port) - if cert and key: - http_server.ssl_certificate = cert - http_server.ssl_private_key = key - adapter = _cpserver.ServerAdapter(cherrypy.engine, http_server, http_server.bind_addr) - adapter.subscribe() + if not (sabnzbd.cfg.no_ipv6() and '::1' in host): + http_server = _cpwsgi_server.CPWSGIServer() + http_server.bind_addr = (host, port) + if cert and key: + http_server.ssl_certificate = cert + http_server.ssl_private_key = key + adapter = _cpserver.ServerAdapter(cherrypy.engine, http_server, http_server.bind_addr) + adapter.subscribe() def is_sabnzbd_running(url): @@ -841,7 +843,7 @@ def commandline_handler(frozen=True): try: opts, args = getopt.getopt(info, "phdvncw:l:s:f:t:b:2:", ['pause', 'help', 'daemon', 'nobrowser', 'clean', 'logging=', - 'weblogging=', 'server=', 'templates', + 'weblogging=', 'server=', 'templates', 'no_ipv6', 'template2', 'browser=', 'config-file=', 'force', 'version', 'https=', 'autorestarted', 'repair', 'repair-all', 'log-all', 'no-login', 'pid=', 'new', 'sessions', 'console', @@ -919,6 +921,7 @@ def main(): new_instance = False force_sessions = False osx_console = False + no_ipv6 = False service, sab_opts, serv_opts, upload_nzbs = commandline_handler() @@ -1005,6 +1008,8 @@ def main(): elif opt in ('--console',): re_argv.append(opt) osx_console = True + elif opt in ('--no_ipv6',): + no_ipv6 = True sabnzbd.MY_FULLNAME = os.path.normpath(os.path.abspath(sabnzbd.MY_FULLNAME)) sabnzbd.MY_NAME = os.path.basename(sabnzbd.MY_FULLNAME) @@ -1087,6 +1092,9 @@ def main(): # Set root folders for HTTPS server file paths sabnzbd.cfg.set_root_folders2() + if no_ipv6: + sabnzbd.cfg.no_ipv6.set(True) + # Determine web host address cherryhost, cherryport, browserhost, https_port = get_webhost(cherryhost, cherryport, https_port) enable_https = sabnzbd.cfg.enable_https() diff --git a/sabnzbd/cfg.py b/sabnzbd/cfg.py index e43384f..03ae4d2 100644 --- a/sabnzbd/cfg.py +++ b/sabnzbd/cfg.py @@ -221,6 +221,7 @@ api_warnings = OptionBool('misc', 'api_warnings', True) max_art_tries = OptionNumber('misc', 'max_art_tries', 3, 2) max_art_opt = OptionBool('misc', 'max_art_opt', False) use_pickle = OptionBool('misc', 'use_pickle', False) +no_ipv6 = OptionBool('misc', 'no_ipv6', False) growl_server = OptionStr('growl', 'growl_server') growl_password = OptionPassword('growl', 'growl_password') diff --git a/sabnzbd/interface.py b/sabnzbd/interface.py index d56171c..706593e 100644 --- a/sabnzbd/interface.py +++ b/sabnzbd/interface.py @@ -1188,7 +1188,7 @@ SPECIAL_BOOL_LIST = \ 'queue_complete_pers', 'api_warnings', 'allow_64bit_tools', 'par2_multicore', 'never_repair', 'allow_streaming', 'ignore_unrar_dates', 'rss_filenames', 'osx_menu', 'osx_speed', 'win_menu', 'uniconfig', 'use_pickle', 'allow_incomplete_nzb', - 'random_server_ip' + 'random_server_ip', 'no_ipv6' ) SPECIAL_VALUE_LIST = \ ( 'size_limit', 'folder_max_length', 'fsys_type', 'movie_rename_limit', 'nomedia_marker',