diff options
author | Rob Crittenden <rcritten@redhat.com> | 2008-05-28 13:59:19 -0400 |
---|---|---|
committer | Rob Crittenden <rcritten@redhat.com> | 2008-06-03 22:41:09 -0400 |
commit | 9bcd31efc5abcfb529b30c8e067cd421e87d7ed4 (patch) | |
tree | 017d4a1fed8701e1c9f2e9c1582ff67feec49a09 | |
parent | c58b7a3d7c32147fd8e72de4254bb35191fedc4b (diff) | |
download | freeipa-9bcd31efc5abcfb529b30c8e067cd421e87d7ed4.tar.gz freeipa-9bcd31efc5abcfb529b30c8e067cd421e87d7ed4.tar.xz freeipa-9bcd31efc5abcfb529b30c8e067cd421e87d7ed4.zip |
Fix issue of double logging in ipa_error.log.
We open the log in ipa_webgui and this was being inherited by TurboGears
which uses the same log so everything was getting logged twice. Shut down
the log in ipa_webgui at the last possible moment. This will not catch
configuration errors.
Add a Not Found template.
Only print a traceback on 500 errors.
-rw-r--r-- | ipa-server/ipa-gui/ipa_webgui | 7 | ||||
-rw-r--r-- | ipa-server/ipa-gui/ipa_webgui.cfg | 2 | ||||
-rw-r--r-- | ipa-server/ipa-gui/ipagui/config/app.cfg | 1 | ||||
-rw-r--r-- | ipa-server/ipa-gui/ipagui/controllers.py | 16 | ||||
-rw-r--r-- | ipa-server/ipa-gui/ipagui/templates/Makefile.am | 1 | ||||
-rw-r--r-- | ipa-server/ipa-gui/ipagui/templates/not_found.kid | 37 |
6 files changed, 60 insertions, 4 deletions
diff --git a/ipa-server/ipa-gui/ipa_webgui b/ipa-server/ipa-gui/ipa_webgui index 61eaf60c1..5df578956 100644 --- a/ipa-server/ipa-gui/ipa_webgui +++ b/ipa-server/ipa-gui/ipa_webgui @@ -140,11 +140,13 @@ def main(): if devel: logging.basicConfig(level=loglevel, + format='%(asctime)s %(name)s %(levelname)s %(message)s', stream=sys.stderr) else: # This log file name needs to be kept in sync with the one in # ipa_webgui.cfg logging.basicConfig(level=loglevel, + format='%(asctime)s %(name)s %(levelname)s %(message)s', filename='/var/log/ipa_error.log') sys.path.append("/usr/share/ipa") @@ -159,6 +161,11 @@ def main(): import cherrypy cherrypy.lowercase_api = True + # Shut down the logging set up here so that CherryPy logging can take + # over. TurboGears configuration errors will not be caught. + if not devel: + logging.shutdown() + # Load the config - look for a local file first for development # and then the system config file if devel: diff --git a/ipa-server/ipa-gui/ipa_webgui.cfg b/ipa-server/ipa-gui/ipa_webgui.cfg index 101eb825e..5d0f6f8a6 100644 --- a/ipa-server/ipa-gui/ipa_webgui.cfg +++ b/ipa-server/ipa-gui/ipa_webgui.cfg @@ -95,10 +95,12 @@ args='(sys.stdout,)' level='DEBUG' qualname='ipagui' handlers=['debug_out'] +propagate=0 [[[allinfo]]] level='INFO' handlers=['debug_out'] +propagate=0 [[[access]]] level='INFO' diff --git a/ipa-server/ipa-gui/ipagui/config/app.cfg b/ipa-server/ipa-gui/ipagui/config/app.cfg index 03170d376..01bb5ad2c 100644 --- a/ipa-server/ipa-gui/ipagui/config/app.cfg +++ b/ipa-server/ipa-gui/ipagui/config/app.cfg @@ -88,6 +88,7 @@ identity.provider='proxyprovider' # identity associated with a request? Comma separated list of identity sources. # Valid sources: form, visit, http_auth # identity.source="form,http_auth,visit" +identity.source="visit" # compress the data sends to the web browser # [/] diff --git a/ipa-server/ipa-gui/ipagui/controllers.py b/ipa-server/ipa-gui/ipagui/controllers.py index 1ec56b25e..024a804dd 100644 --- a/ipa-server/ipa-gui/ipagui/controllers.py +++ b/ipa-server/ipa-gui/ipagui/controllers.py @@ -84,11 +84,14 @@ class Root(controllers.RootController): """This method is derived from the sample error catcher on http://docs.turbogears.org/1.0/ErrorReporting.""" try: - cherrypy._cputil._cp_on_http_error(status, message) error_msg = self._error_codes.get(status, self._error_codes[None]) url = "%s %s" % (cherrypy.request.method, cherrypy.request.path) - log.exception("CherryPy %s error (%s) for request '%s'", status, - error_msg, url) + if (status == 500): + log.exception("%s error (%s) for request '%s'", status, + error_msg, url) + else: + log.error("%s error (%s) for request '%s'", status, + error_msg, url) if config.get('server.environment') == 'production': details = '' @@ -106,9 +109,14 @@ class Root(controllers.RootController): details = details, ) + if status == 404: + page_template = 'ipagui.templates.not_found' + else: + page_template = 'ipagui.templates.unhandled_exception' + body = controllers._process_output( data, - 'ipagui.templates.unhandled_exception', + page_template, 'html', 'text/html', None diff --git a/ipa-server/ipa-gui/ipagui/templates/Makefile.am b/ipa-server/ipa-gui/ipagui/templates/Makefile.am index 83d546650..ddc8666ca 100644 --- a/ipa-server/ipa-gui/ipagui/templates/Makefile.am +++ b/ipa-server/ipa-gui/ipagui/templates/Makefile.am @@ -25,6 +25,7 @@ app_DATA = \ ipapolicyshow.kid \ loginfailed.kid \ master.kid \ + not_found.kid \ policyindex.kid \ policylayout.kid \ principallayout.kid \ diff --git a/ipa-server/ipa-gui/ipagui/templates/not_found.kid b/ipa-server/ipa-gui/ipagui/templates/not_found.kid new file mode 100644 index 000000000..0bc4c05c0 --- /dev/null +++ b/ipa-server/ipa-gui/ipagui/templates/not_found.kid @@ -0,0 +1,37 @@ +<!-- + Copyright (C) 2007-2008 Red Hat + see file 'COPYING' for use and warranty information + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; version 2 only + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" + xmlns:py="http://purl.org/kid/ns#" + py:extends="'master.kid'"> +<head> +<meta content="text/html; charset=utf-8" http-equiv="Content-Type" py:replace="''"/> +<title>Page Not Found</title> +</head> + +<body> + <div id="main_content"> + <h1>Page Not Found</h1> + <div py:if='message'> + ${message} + </div> + + </div> + +</body> +</html> |