diff --git a/pywb/replay_resolvers.py b/pywb/replay_resolvers.py index 99c24b44..c0913c2c 100644 --- a/pywb/replay_resolvers.py +++ b/pywb/replay_resolvers.py @@ -11,14 +11,15 @@ def PrefixResolver(prefix, contains = ''): #====================================== class RedisResolver: - def __init__(self, redisUrl, keyPrefix = 'w:'): - self.redisUrl = redisUrl - self.keyPrefix = keyPrefix - self.redis = redis.StrictRedis.from_url(redisUrl) + def __init__(self, redis_url, key_prefix = 'w:'): + self.redis_url = redis_url + self.key_prefix = key_prefix + self.redis = redis.StrictRedis.from_url(redis_url) def __call__(self, filename): try: - return [self.redis.hget(self.keyPrefix + filename, 'path')] + redis_val = self.redis.hget(self.key_prefix + filename, 'path') + return [redis_val] if redis_val else None except Exception as e: print e return None diff --git a/pywb/wbapp.py b/pywb/wbapp.py index 9c42221a..dae877c0 100644 --- a/pywb/wbapp.py +++ b/pywb/wbapp.py @@ -1,8 +1,13 @@ -from utils import rel_request_uri +import utils import wbexceptions from wbrequestresponse import WbResponse, StatusAndHeaders +import os +import importlib +import logging + + ## =========== default_head_insert = """ @@ -79,7 +84,7 @@ def create_wb_app(wb_router): # Top-level wsgi application def application(env, start_response): if env.get('SCRIPT_NAME') or not env.get('REQUEST_URI'): - env['REL_REQUEST_URI'] = rel_request_uri(env) + env['REL_REQUEST_URI'] = utils.rel_request_uri(env) else: env['REL_REQUEST_URI'] = env['REQUEST_URI'] @@ -95,7 +100,7 @@ def create_wb_app(wb_router): response = WbResponse(StatusAndHeaders(ir.status, ir.httpHeaders)) except (wbexceptions.NotFoundException, wbexceptions.AccessException) as e: - print "[INFO]: " + str(e) + logging.info(str(e)) response = handle_exception(env, e) except Exception as e: @@ -119,18 +124,32 @@ def handle_exception(env, exc): return WbResponse.text_response(status + ' Error: ' + str(exc), status = status) -if __name__ == "__main__": - app = create_wb_app(sample_wb_settings()) +#================================================================= +def main(): + try: + # Attempt to load real settings from globalwb module + logging.basicConfig(format = '%(asctime)s: [%(levelname)s]: %(message)s', level = logging.DEBUG) + config_name = os.environ.get('PYWB_CONFIG') + + if not config_name: + config_name = 'pywb_init' + logging.info('PYWB_CONFIG not specified, attempting to load config from default module {0}'.format(config_name)) + + module = importlib.import_module(config_name) + + app = create_wb_app(module.pywb_config(default_head_insert)) + logging.info('\n\n*** pywb inited with settings from {0}.pywb_config()!\n'.format(config_name)) + return app + + except Exception as e: + # Otherwise, start with the sample settings + logging.exception('\n\n*** pywb could not init with settings from {0}.pywb_config()!\n'.format(config_name)) + raise e #================================================================= -try: - # Attempt to load real settings from globalwb module - import globalwb - application = create_wb_app(globalwb.create_global_wb(default_head_insert)) -except ImportError as e: - # Otherwise, start with the sample settings +if __name__ == "__main__" or utils.enable_doctests(): + # Test sample settings application = create_wb_app(sample_wb_settings()) -#================================================================= - - +else: + application = main() diff --git a/run.sh b/run.sh index 9357d69d..dd507f4d 100755 --- a/run.sh +++ b/run.sh @@ -2,17 +2,23 @@ mypath=$(cd `dirname $0` && pwd) -app=$2 -#cd $mypath/pywb -if [ -z "$app" ]; then - app=pywb.wbapp -fi +# Setup init module +export 'PYWB_CONFIG=globalwb' + +app="pywb.wbapp" + +params="--static-map /static=$mypath/static --http-socket :8080 -b 65536" if [ -z "$1" ]; then # Standard root config - uwsgi --static-map /static=$mypath/static --http-socket :8080 -b 65536 --wsgi $app + params="$params --wsgi pywb.wbapp" else - # Test on non-root mount - uwsgi --static-map /static=$mypath/static --http-socket :8080 --mount "$1=$app" --no-default-app --manage-script-name + # run with --mount + # requires a file not a package, so creating a mount_run.py to load the package + echo "#!/bin/python\n" > $mypath/mount_run.py + echo "import $app\napplication = $app.application" >> $mypath/mount_run.py + params="$params --mount $1=mount_run.py --no-default-app --manage-script-name" fi +uwsgi $params + diff --git a/static/wb.js b/static/wb.js index 27fcd45c..009ffc85 100644 --- a/static/wb.js +++ b/static/wb.js @@ -23,7 +23,8 @@ function initBanner() if (!banner) { banner = document.createElement("wb_div"); banner.setAttribute("id", BANNER_ID); - banner.innerHTML = "PyWb Test Banner!" + banner.setAttribute("lang", "en"); + banner.innerHTML = "PyWb Archived Content" document.body.insertBefore(banner, document.body.firstChild); } }