diff --git a/sickbeard/webserve.py b/sickbeard/webserve.py
index e8921c38..bfa3011f 100644
--- a/sickbeard/webserve.py
+++ b/sickbeard/webserve.py
@@ -144,7 +144,6 @@ class HTTPRedirect(Exception):
def redirect(url, permanent=False, status=None):
raise HTTPRedirect(url, permanent, status)
-
@authenticated
class MainHandler(RequestHandler):
def http_error_401_handler(self):
@@ -165,10 +164,27 @@ class MainHandler(RequestHandler):
if status_code == 401:
self.finish(self.http_error_401_handler())
elif status_code == 404:
- redirect('/home/')
- else:
- logger.log(traceback.format_exc(), logger.DEBUG)
- super(MainHandler, self).write_error(status_code, **kwargs)
+ self.redirect(urlparse.urljoin(sickbeard.WEB_ROOT, '/home/'))
+ elif self.settings.get("debug") and "exc_info" in kwargs:
+ exc_info = kwargs["exc_info"]
+ trace_info = ''.join(["%s
" % line for line in traceback.format_exception(*exc_info)])
+ request_info = ''.join(["%s: %s
" % (k, self.request.__dict__[k] ) for k in
+ self.request.__dict__.keys()])
+ error = exc_info[1]
+
+ self.set_header('Content-Type', 'text/html')
+ self.finish("""
+
%s
+%s
+%s
+ + """ % (error, error, + trace_info, request_info)) def _dispatch(self): @@ -212,7 +228,7 @@ class MainHandler(RequestHandler): elif not func: func = getattr(klass, 'index', None) - if func: + if callable(func): return func(**args) raise HTTPError(404) @@ -220,14 +236,14 @@ class MainHandler(RequestHandler): def get(self, *args, **kwargs): try: self.finish(self._dispatch()) - except HTTPRedirect, inst: - self.redirect(inst.url, inst.permanent, inst.status) + except HTTPRedirect, e: + self.redirect(e.url, e.permanent, e.status) def post(self, *args, **kwargs): try: self.finish(self._dispatch()) - except HTTPRedirect, inst: - self.redirect(inst.url, inst.permanent, inst.status) + except HTTPRedirect, e: + self.redirect(e.url, e.permanent, e.status) def robots_txt(self, *args, **kwargs): """ Keep web crawlers out """ diff --git a/sickbeard/webserveInit.py b/sickbeard/webserveInit.py index fceb9657..4987c8b8 100644 --- a/sickbeard/webserveInit.py +++ b/sickbeard/webserveInit.py @@ -35,7 +35,7 @@ class MultiStaticFileHandler(StaticFileHandler): raise HTTPError(404) class SRWebServer(threading.Thread): - def __init__(self, options=[], io_loop=None): + def __init__(self, options={}, io_loop=None): threading.Thread.__init__(self) self.daemon = True self.alive = True @@ -63,12 +63,12 @@ class SRWebServer(threading.Thread): if not create_https_certificates(self.https_cert, self.https_key): logger.log(u"Unable to create CERT/KEY files, disabling HTTPS") sickbeard.ENABLE_HTTPS = False - enable_https = False + self.enable_https = False if not (os.path.exists(self.https_cert) and os.path.exists(self.https_key)): logger.log(u"Disabled HTTPS because of missing CERT and KEY files", logger.WARNING) sickbeard.ENABLE_HTTPS = False - enable_https = False + self.enable_https = False # Load the app self.app = Application([], @@ -87,7 +87,7 @@ class SRWebServer(threading.Thread): # Static Path Handler self.app.add_handlers(".*$", [ - (r'%s/(favicon\.ico)' % self.options['web_root'], MultiStaticFileHandler, + (r'/(favicon\.ico)', MultiStaticFileHandler, {'paths': [os.path.join(self.options['data_root'], 'images/ico/favicon.ico')]}), (r'%s/%s/(.*)(/?)' % (self.options['web_root'], 'images'), MultiStaticFileHandler, {'paths': [os.path.join(self.options['data_root'], 'images'),