diff --git a/ipwb/__main__.py b/ipwb/__main__.py index 42da2d3d..84201529 100644 --- a/ipwb/__main__.py +++ b/ipwb/__main__.py @@ -58,9 +58,14 @@ def check_args_replay(args): print(f'Proxying to {args.proxy}') proxy = args.proxy + port = replay.IPWBREPLAY_PORT + if hasattr(args, 'port') and args.port is not None: + print(f'Using custom port {args.port} for replay.') + port = args.port + # TODO: add any other sub-arguments for replay here if supplied_index_parameter: - replay.start(cdxj_file_path=args.index, proxy=proxy) + replay.start(cdxj_file_path=args.index, proxy=proxy, port=port) else: print('ERROR: An index file must be specified if not piping, e.g.,') print(("> ipwb replay " @@ -133,6 +138,12 @@ def check_args(args_in): help='Proxy URL', metavar='', nargs='?') + replay_parser.add_argument( + '-p', '--port', + help='Custom Port', + type=int, + default=util.IPWBREPLAY_PORT + ) replay_parser.set_defaults(func=check_args_replay, onError=replay_parser.print_help) diff --git a/ipwb/replay.py b/ipwb/replay.py index dd6ae15e..d83fa427 100755 --- a/ipwb/replay.py +++ b/ipwb/replay.py @@ -1047,12 +1047,15 @@ def get_cdxj_line_binary_search( return line_found -def start(cdxj_file_path, proxy=None): +def start(cdxj_file_path, proxy=None, 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) + if not host_port: - ipwb_utils.set_ipwb_replay_config(IPWBREPLAY_HOST, IPWBREPLAY_PORT) + host_port = (IPWBREPLAY_HOST, port) # This will throw an exception if daemon is not available. ipwb_utils.check_daemon_is_alive() @@ -1062,9 +1065,9 @@ def start(cdxj_file_path, proxy=None): try: print((f'IPWB replay started on ' - f'http://{IPWBREPLAY_HOST}:{IPWBREPLAY_PORT}')) + f'http://{host_port[0]}:{host_port[1]}')) - app.run(host='0.0.0.0', port=IPWBREPLAY_PORT) + app.run(host='0.0.0.0', port=host_port[1]) except gaierror: print('Detected no active Internet connection.') print('Overriding to use default IP and port configuration.')