From e03dc1a42f3f1055c1ccc803ac8913714e4214a4 Mon Sep 17 00:00:00 2001 From: Mat Kelly Date: Sat, 7 May 2022 21:44:28 -0400 Subject: [PATCH] Add host specification on the CLI for #763 --- ipwb/__main__.py | 12 +++++++++++- ipwb/replay.py | 8 ++++---- ipwb/util.py | 2 +- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/ipwb/__main__.py b/ipwb/__main__.py index 84201529..7b384c93 100644 --- a/ipwb/__main__.py +++ b/ipwb/__main__.py @@ -58,6 +58,11 @@ def check_args_replay(args): print(f'Proxying to {args.proxy}') proxy = args.proxy + host = replay.IPWBREPLAY_HOST + if hasattr(args, 'host') and args.host is not None: + print(f'Using custom host {args.host} for replay.') + host = args.host + port = replay.IPWBREPLAY_PORT if hasattr(args, 'port') and args.port is not None: print(f'Using custom port {args.port} for replay.') @@ -65,7 +70,7 @@ def check_args_replay(args): # TODO: add any other sub-arguments for replay here if supplied_index_parameter: - replay.start(cdxj_file_path=args.index, proxy=proxy, port=port) + replay.start(cdxj_file_path=args.index, proxy=proxy, host=host, port=port) else: print('ERROR: An index file must be specified if not piping, e.g.,') print(("> ipwb replay " @@ -144,6 +149,11 @@ def check_args(args_in): type=int, default=util.IPWBREPLAY_PORT ) + replay_parser.add_argument( + '-H', '--host', + help='Custom Host', + default=util.IPWBREPLAY_HOST + ) replay_parser.set_defaults(func=check_args_replay, onError=replay_parser.print_help) diff --git a/ipwb/replay.py b/ipwb/replay.py index d83fa427..8e2e3d05 100755 --- a/ipwb/replay.py +++ b/ipwb/replay.py @@ -1047,15 +1047,15 @@ def get_cdxj_line_binary_search( return line_found -def start(cdxj_file_path, proxy=None, port=IPWBREPLAY_PORT): +def start(cdxj_file_path, proxy=None, host=IPWBREPLAY_HOST, port=IPWBREPLAY_PORT): host_port = ipwb_utils.get_ipwb_replay_config() app.proxy = proxy # Retain port for subsequent runs - ipwb_utils.set_ipwb_replay_config(IPWBREPLAY_HOST, port) + ipwb_utils.set_ipwb_replay_config(host, port) if not host_port: - host_port = (IPWBREPLAY_HOST, port) + host_port = (host, port) # This will throw an exception if daemon is not available. ipwb_utils.check_daemon_is_alive() @@ -1067,7 +1067,7 @@ def start(cdxj_file_path, proxy=None, port=IPWBREPLAY_PORT): print((f'IPWB replay started on ' f'http://{host_port[0]}:{host_port[1]}')) - app.run(host='0.0.0.0', port=host_port[1]) + app.run(host=host_and_port[0], port=host_port[1]) except gaierror: print('Detected no active Internet connection.') print('Overriding to use default IP and port configuration.') diff --git a/ipwb/util.py b/ipwb/util.py index dbbf12b6..d220e011 100644 --- a/ipwb/util.py +++ b/ipwb/util.py @@ -33,7 +33,7 @@ # or '/ip4/{ipaddress}/tcp/{port}/http' # or '/ip6/{ipaddress}/tcp/{port}/http -IPWBREPLAY_ADDRESS = 'localhost:2016' +IPWBREPLAY_ADDRESS = '0.0.0.0:2016' (IPWBREPLAY_HOST, IPWBREPLAY_PORT) = IPWBREPLAY_ADDRESS.split(':') IPWBREPLAY_PORT = int(IPWBREPLAY_PORT)