diff --git a/pywb/apps/cdx_server.py b/pywb/apps/cdx_server.py index 560a667e..83f49cd0 100644 --- a/pywb/apps/cdx_server.py +++ b/pywb/apps/cdx_server.py @@ -1,4 +1,4 @@ -from pywb.framework.wsgi_wrappers import init_app, start_wsgi_server +from pywb.framework.wsgi_wrappers import init_app #from pywb.core.cdx_api_handler import create_cdx_server_app from pywb.webapp.pywb_init import create_cdx_server_app @@ -9,10 +9,3 @@ from pywb.webapp.pywb_init import create_cdx_server_app application = init_app(create_cdx_server_app, load_yaml=True) - - -def main(): # pragma: no cover - start_wsgi_server(application, 'CDX Server', default_port=8090) - -if __name__ == "__main__": - main() diff --git a/pywb/apps/cli.py b/pywb/apps/cli.py index d3905b83..092b8a38 100644 --- a/pywb/apps/cli.py +++ b/pywb/apps/cli.py @@ -1,12 +1,48 @@ import os import logging -from argparse import ArgumentParser, RawTextHelpFormatter +from argparse import ArgumentParser + + +#================================================================= +def cdx_server(args=None): #pragma: no cover + def load(): + import pywb.apps.cdx_server as mod + return mod + + cli(appload=load, + args=args, + default_port=8090, + desc='pywb CDX Index Server') + + +#================================================================= +def live_rewrite_server(args=None): #pragma: no cover + def load(): + import pywb.apps.live_rewrite_server as mod + return mod + + cli(appload=load, + args=args, + default_port=8090, + desc='pywb Live Rewrite Proxy Server') #================================================================= def wayback(args=None): - parser = ArgumentParser('pywb Wayback Web Archive Replay') - parser.add_argument('-p', '--port', type=int, default=8080) + def load(): + import pywb.apps.wayback as mod + return mod + + cli(appload=load, + args=args, + default_port=8080, + desc='pywb Wayback Web Archive Replay') + + +#================================================================= +def cli(appload, args=None, default_port=8080, desc=''): + parser = ArgumentParser(desc) + parser.add_argument('-p', '--port', type=int, default=default_port) parser.add_argument('-t', '--threads', type=int, default=4) parser.add_argument('-a', '--autoindex', action='store_true') @@ -18,7 +54,8 @@ def wayback(args=None): os.chdir(r.directory) # Load App - from pywb.apps.wayback import application + #from pywb.apps.wayback import application + application = appload().application if r.autoindex: from pywb.manager.manager import CollectionsManager @@ -38,11 +75,10 @@ def wayback(args=None): serve(application, port=r.port, threads=r.threads) except ImportError: # pragma: no cover # Shouldn't ever happen as installing waitress, but just in case.. - from pywb.framework.wsgi_wrappers import start_wsgi_server - start_wsgi_server(application, 'Wayback', default_port=r.port) + from pywb.framework.wsgi_wrappers import start_wsgi_ref_server + start_wsgi_ref_server(application, desc, port=r.port) #================================================================= if __name__ == "__main__": wayback() - diff --git a/pywb/apps/live_rewrite_server.py b/pywb/apps/live_rewrite_server.py index 8de26f10..1e89101f 100644 --- a/pywb/apps/live_rewrite_server.py +++ b/pywb/apps/live_rewrite_server.py @@ -1,4 +1,4 @@ -from pywb.framework.wsgi_wrappers import init_app, start_wsgi_server +from pywb.framework.wsgi_wrappers import init_app from pywb.webapp.live_rewrite_handler import create_live_rewriter_app @@ -27,11 +27,3 @@ def create_app(): application = create_app() - - -def main(): # pragma: no cover - start_wsgi_server(application, 'Live Rewriter App', default_port=8090) - - -if __name__ == "__main__": - main() diff --git a/pywb/framework/test/test_wsgi_wrapper.py b/pywb/framework/test/test_wsgi_wrapper.py index 39da76c2..3433acad 100644 --- a/pywb/framework/test/test_wsgi_wrapper.py +++ b/pywb/framework/test/test_wsgi_wrapper.py @@ -1,5 +1,4 @@ from pywb.framework.wsgi_wrappers import init_app -from pywb.framework.wsgi_wrappers import start_wsgi_server from pywb.utils.wbexception import AccessException diff --git a/pywb/framework/wsgi_wrappers.py b/pywb/framework/wsgi_wrappers.py index 7b6a7b2b..5d17a91c 100644 --- a/pywb/framework/wsgi_wrappers.py +++ b/pywb/framework/wsgi_wrappers.py @@ -44,9 +44,6 @@ def rel_request_uri(environ, include_query=1): class WSGIApp(object): def __init__(self, wb_router): self.wb_router = wb_router - self.port = DEFAULT_PORT - if hasattr(wb_router, 'port'): - self.port = wb_router.port # Top-level wsgi application def __call__(self, env, start_response): @@ -192,20 +189,15 @@ def init_app(init_func, load_yaml=True, config_file=None, config={}): #================================================================= -def start_wsgi_server(the_app, name, default_port=None): # pragma: no cover +def start_wsgi_ref_server(the_app, name, port): # pragma: no cover from wsgiref.simple_server import make_server # disable is_hop_by_hop restrictions import wsgiref.handlers wsgiref.handlers.is_hop_by_hop = lambda x: False - port = the_app.port - if not port: - if default_port: - port = default_port - else: - port = DEFAULT_PORT + port = DEFAULT_PORT logging.info('Starting %s on port %s', name, port) diff --git a/pywb/webapp/pywb_init.py b/pywb/webapp/pywb_init.py index 7cbea633..85272fd7 100644 --- a/pywb/webapp/pywb_init.py +++ b/pywb/webapp/pywb_init.py @@ -108,7 +108,12 @@ def create_cdx_server_app(passed_config): config = DictChain(passed_config, defaults) - collections = config.get('collections') + collections = config.get('collections', {}) + + static_routes = {} + # collections based on file system + dir_loader = DirectoryCollsLoader(config, static_routes) + collections.update(dir_loader()) routes = [] diff --git a/setup.py b/setup.py index 44c12365..e1647a72 100755 --- a/setup.py +++ b/setup.py @@ -90,9 +90,9 @@ setup( entry_points=""" [console_scripts] wayback = pywb.apps.cli:wayback - cdx-server = pywb.apps.cdx_server:main + cdx-server = pywb.apps.cli:cdx_server + live-rewrite-server = pywb.apps.cli:live_rewrite_server cdx-indexer = pywb.warc.cdxindexer:main - live-rewrite-server = pywb.apps.live_rewrite_server:main proxy-cert-auth = pywb.framework.certauth:main wb-manager = pywb.manager.manager:main_wrap_exc """,