def handler(mod_python_req, fields=None, is_profiling=False): # Create an object that contains all data about the request and # helper functions for creating valid HTML. Parse URI and # store results in the request object for later usage. __builtin__.html = html_mod_python(mod_python_req, fields) response_code = apache.OK try: config.initialize() init_profiling(is_profiling) html.init_modes() # Make sure all plugins are avaiable as early as possible. At least # we need the plugins (i.e. the permissions declared in these) at the # time before the first login for generating auth.php. modules.load_all_plugins() # Get page handler. handler = modules.get_handler(html.myfile, page_not_found) # Some pages do skip authentication. This is done by adding # noauth: to the page hander, e.g. "noauth:run_cron" : ... # TODO: Eliminate those "noauth:" pages. Eventually replace it by call using # the now existing default automation user. if handler == page_not_found: handler = modules.get_handler("noauth:" + html.myfile, page_not_found) if handler != page_not_found: try: handler() except Exception, e: html.write_text("%s" % e) if config.debug: html.write_text(traceback.format_exc()) raise FinalizeRequest() # Ensure the user is authenticated. This call is wrapping all the different # authentication modes the Check_MK GUI supports and initializes the logged # in user objects. if not login.authenticate(mod_python_req): handle_not_authenticated() # Initialize the multiste i18n. This will be replaced by # language settings stored in the user profile after the user # has been initialized previous_language = i18n.get_current_language() i18n.localize(html.var("lang", config.user.language())) # All plugins might have to be reloaded due to a language change. Only trigger # a second plugin loading when the user is really using a custom localized GUI. # Otherwise the load_all_plugins() at the beginning of the request is sufficient. if i18n.get_current_language() != previous_language: modules.load_all_plugins() ensure_general_access() handler()
def handler(mod_python_req, fields = None, is_profiling = False): # Create an object that contains all data about the request and # helper functions for creating valid HTML. Parse URI and # store results in the request object for later usage. __builtin__.html = html_mod_python(mod_python_req, fields) response_code = apache.OK try: config.initialize() init_profiling(is_profiling) html.init_modes() # Make sure all plugins are avaiable as early as possible. At least # we need the plugins (i.e. the permissions declared in these) at the # time before the first login for generating auth.php. modules.load_all_plugins() # Get page handler. handler = modules.get_handler(html.myfile, page_not_found) # Some pages do skip authentication. This is done by adding # noauth: to the page hander, e.g. "noauth:run_cron" : ... # TODO: Eliminate those "noauth:" pages. Eventually replace it by call using # the now existing default automation user. if handler == page_not_found: handler = modules.get_handler("noauth:" + html.myfile, page_not_found) if handler != page_not_found: try: handler() except Exception, e: html.write(str(e)) if config.debug: html.write(html.attrencode(traceback.format_exc())) raise FinalizeRequest() # Ensure the user is authenticated. This call is wrapping all the different # authentication modes the Check_MK GUI supports and initializes the logged # in user objects. if not login.authenticate(mod_python_req): handle_not_authenticated() # Initialize the multiste i18n. This will be replaced by # language settings stored in the user profile after the user # has been initialized previous_language = i18n.get_current_language() i18n.localize(html.var("lang", config.user.language())) # All plugins might have to be reloaded due to a language change. Only trigger # a second plugin loading when the user is really using a custom localized GUI. # Otherwise the load_all_plugins() at the beginning of the request is sufficient. if i18n.get_current_language() != previous_language: modules.load_all_plugins() ensure_general_access() handler()
def page_login(no_html_output = False): # Initialize the i18n for the login dialog. This might be overridden # later after user login i18n.localize(html.var("lang", config.get_language())) result = do_login() if type(result) == tuple: return result # Successful login elif no_html_output: raise MKAuthException(_("Invalid login credentials.")) if html.mobile: import mobile return mobile.page_login() else: return normal_login_page()
def handler(req, fields = None, is_profiling = False): # Create an object that contains all data about the request and # helper functions for creating valid HTML. Parse URI and # store results in the request object for later usage. __builtin__.html = html_mod_python(req, fields) response_code = apache.OK try: config.load_config() # load multisite.mk etc. html.init_modes() init_profiling(is_profiling) # Make sure all plugins are avaiable as early as possible. At least # we need the plugins (i.e. the permissions declared in these) at the # time before the first login for generating auth.php. modules.load_all_plugins() # Get page handler. handler = modules.get_handler(html.myfile, page_not_found) # Some pages do skip authentication. This is done by adding # noauth: to the page hander, e.g. "noauth:run_cron" : ... if handler == page_not_found: handler = modules.get_handler("noauth:" + html.myfile, page_not_found) if handler != page_not_found: try: # Call userdb page hooks which are executed on a regular base to e.g. syncronize # information withough explicit user triggered actions userdb.hook_page() handler() except Exception, e: html.write(str(e)) if config.debug: html.write(html.attrencode(format_exception())) raise FinalizeRequest() # Is the user set by the webserver? otherwise use the cookie based auth if not html.is_logged_in(): config.auth_type = 'cookie' # When not authed tell the browser to ask for the password html.login(login.check_auth()) if not html.is_logged_in(): if fail_silently(): # While api call don't show the login dialog raise MKUnauthenticatedException(_('You are not authenticated.')) # Redirect to the login-dialog with the current url as original target # Never render the login form directly when accessing urls like "index.py" # or "dashboard.py". This results in strange problems. if html.myfile != 'login': html.http_redirect(defaults.url_prefix + 'check_mk/login.py?_origtarget=%s' % html.urlencode(html.makeuri([]))) # Initialize the i18n for the login dialog. This might be overridden # later after user login i18n.localize(html.var("lang", config.get_language())) # This either displays the login page or validates the information submitted # to the login form. After successful login a http redirect to the originally # requested page is performed. login.page_login(plain_error()) raise FinalizeRequest() else: # In case of basic auth the user is already known, but we still need to decide # whether or not the user is an automation user (which is allowed to use transid=-1) if html.var("_secret"): login.check_auth_automation() # Call userdb page hooks which are executed on a regular base to e.g. syncronize # information withough explicit user triggered actions userdb.hook_page() # Set all permissions, read site config, and similar stuff config.login(html.user) html.load_help_visible() # Initialize the multiste i18n. This will be replaced by # language settings stored in the user profile after the user # has been initialized i18n.localize(html.var("lang", config.get_language())) # All plugins might have to be reloaded due to a language change modules.load_all_plugins() # User allowed to login at all? if not config.may("general.use"): reason = _("You are not authorized to use Check_MK Multisite. Sorry. " "You are logged in as <b>%s</b>.") % config.user_id if len(config.user_role_ids): reason += _("Your roles are <b>%s</b>. " % ", ".join(config.user_role_ids)) else: reason += _("<b>You do not have any roles.</b> ") reason += _("If you think this is an error, " "please ask your administrator to check the permissions configuration.") if config.auth_type == 'cookie': reason += _('<p>You have been logged out. Please reload the page to re-authenticate.</p>') login.del_auth_cookie() raise MKAuthException(reason) handler()
def handler(req, fields = None, is_profiling = False): # Create an object that contains all data about the request and # helper functions for creating valid HTML. Parse URI and # store results in the request object for later usage. __builtin__.html = html_mod_python(req, fields) response_code = apache.OK try: config.load_config() # load multisite.mk etc. init_profiling(is_profiling) html.init_modes() # Make sure all plugins are avaiable as early as possible. At least # we need the plugins (i.e. the permissions declared in these) at the # time before the first login for generating auth.php. modules.load_all_plugins() # Get page handler. handler = modules.get_handler(html.myfile, page_not_found) # Some pages do skip authentication. This is done by adding # noauth: to the page hander, e.g. "noauth:run_cron" : ... if handler == page_not_found: handler = modules.get_handler("noauth:" + html.myfile, page_not_found) if handler != page_not_found: try: handler() except Exception, e: html.write("%s" % e) if config.debug: html.write(html.attrencode(format_exception())) raise FinalizeRequest() # Is the user set by the webserver? otherwise use the cookie based auth if not html.is_logged_in(): config.auth_type = 'cookie' # When not authed tell the browser to ask for the password html.login(login.check_auth()) if not html.is_logged_in(): if fail_silently(): # While api call don't show the login dialog raise MKUnauthenticatedException(_('You are not authenticated.')) # Redirect to the login-dialog with the current url as original target # Never render the login form directly when accessing urls like "index.py" # or "dashboard.py". This results in strange problems. if html.myfile != 'login': html.http_redirect(defaults.url_prefix + 'check_mk/login.py?_origtarget=%s' % html.urlencode(html.makeuri([]))) # Initialize the i18n for the login dialog. This might be overridden # later after user login i18n.localize(html.var("lang", config.get_language())) # This either displays the login page or validates the information submitted # to the login form. After successful login a http redirect to the originally # requested page is performed. login.page_login(plain_error()) raise FinalizeRequest() else: # In case of basic auth the user is already known, but we still need to decide # whether or not the user is an automation user (which is allowed to use transid=-1) if html.var("_secret"): login.check_auth_automation() # Set all permissions, read site config, and similar stuff config.login(html.user) html.load_help_visible() # Initialize the multiste i18n. This will be replaced by # language settings stored in the user profile after the user # has been initialized previous_language = current_language i18n.localize(html.var("lang", config.get_language())) # All plugins might have to be reloaded due to a language change. Only trigger # a second plugin loading when the user is really using a custom localized GUI. # Otherwise the load_all_plugins() at the beginning of the request is sufficient. if current_language != previous_language: modules.load_all_plugins() # User allowed to login at all? if not config.may("general.use"): reason = _("You are not authorized to use Check_MK Multisite. Sorry. " "You are logged in as <b>%s</b>.") % config.user_id if len(config.user_role_ids): reason += _("Your roles are <b>%s</b>. " % ", ".join(config.user_role_ids)) else: reason += _("<b>You do not have any roles.</b> ") reason += _("If you think this is an error, " "please ask your administrator to check the permissions configuration.") if config.auth_type == 'cookie': reason += _('<p>You have been logged out. Please reload the page to re-authenticate.</p>') login.del_auth_cookie() raise MKAuthException(reason) handler()