def handleStormLogin(self, **kwargs): from splunk.appserver.mrsparkle.lib import storm cherrypy.session.regenerate() if cherrypy.request.method == 'POST' and kwargs.has_key('storm_token'): ts, token = storm.decrypt_token(kwargs['storm_token']) max_token_age = cherrypy.config.get('storm_max_token_age', 3600) if ts + max_token_age < time.time(): logger.warn("Storm session token has expired") token = defaults = None else: logger.info("Got storm token OK") cherrypy.session['storm_token'] = token new_session = True attempts = 2 ok = False while attempts: attempts -= 1 defaults = storm.get_storm_defaults(new_session) if not defaults: continue if splunk.auth.ping(sessionKey=defaults['sessionKey']): ok = True break if not defaults or not ok: if not defaults: logger.error( "Failed to fetch user's default settings from Storm" ) else: logger.error( "Storm issued a token with an invalid session key %s" % defaults['sessionKey']) token = defaults = None cherrypy.session['storm_token'] = None else: defaults = storm.get_storm_defaults() if not defaults: url = cherrypy.config.get('storm_user_url') if not url: storm_host = cherrypy.config.get('storm_host', '127.0.0.1') storm_port = cherrypy.config.get('storm_port', 80) if cherrypy.config['storm_port'] != 80: url = "http://%s:%s/" % (storm_host, storm_port) else: url = "http://%s/" % (storm_host) logger.warn( "No storm defaults found - Redirecting user back to storm appserver storm_token_set=%s" % kwargs.has_key('storm_token')) raise cherrypy.HTTPRedirect(url) cherrypy.session['user'] = { 'name': defaults['user'], 'fullName': 'Storm User', 'id': 1 } cherrypy.session['sessionKey'] = defaults['sessionKey'] return self.redirect_to_url('/')
def handleStormLogin(self, **kwargs): from splunk.appserver.mrsparkle.lib import storm cherrypy.session.regenerate() if cherrypy.request.method == 'POST' and kwargs.has_key('storm_token'): ts, token = storm.decrypt_token(kwargs['storm_token']) max_token_age = cherrypy.config.get('storm_max_token_age', 3600) if ts + max_token_age < time.time(): logger.warn("Storm session token has expired") token = defaults = None else: logger.info("Got storm token OK") cherrypy.session['storm_token'] = token new_session = True attempts = 2 ok = False while attempts: attempts -= 1 defaults = storm.get_storm_defaults(new_session) if not defaults: continue if splunk.auth.ping(sessionKey=defaults['sessionKey']): ok = True break if not defaults or not ok: if not defaults: logger.error("Failed to fetch user's default settings from Storm") else: logger.error("Storm issued a token with an invalid session key %s" % defaults['sessionKey']) token = defaults = None cherrypy.session['storm_token'] = None else: defaults = storm.get_storm_defaults() if not defaults: url = cherrypy.config.get('storm_user_url') if not url: storm_host = cherrypy.config.get('storm_host', '127.0.0.1') storm_port = cherrypy.config.get('storm_port', 80) if cherrypy.config['storm_port'] != 80: url = "http://%s:%s/" % (storm_host, storm_port) else: url = "http://%s/" % (storm_host) logger.warn("No storm defaults found - Redirecting user back to storm appserver storm_token_set=%s" % kwargs.has_key('storm_token')) raise cherrypy.HTTPRedirect(url) cherrypy.session['user'] = { 'name': defaults['user'], 'fullName': 'Storm User', 'id': 1 } cherrypy.session['sessionKey'] = defaults['sessionKey'] return self.redirect_to_url('/')
def splunkd_urlhost(self): """ New code should rely on the default value when calling the Splunk API as set above. Make splunkd_urlhost dynamic for storm """ if cherrypy.config.get('storm_enabled'): from splunk.appserver.mrsparkle.lib.storm import get_storm_defaults defaults = get_storm_defaults() return 'https://%s:%s' % (defaults['host'], defaults['port']) return self._splunkd_urlhost
def handleStormLogin(self, return_to=None, **kwargs): from splunk.appserver.mrsparkle.lib import storm cherrypy.session.regenerate() if cherrypy.request.method == 'POST' and kwargs.has_key('storm_token'): ts, token = storm.decrypt_token(kwargs['storm_token']) max_token_age = cherrypy.config.get('storm_max_token_age', 3600) if ts + max_token_age < time.time(): logger.warn("Storm session token has expired") token = defaults = None else: logger.info("Got storm token OK") cherrypy.session['storm_token'] = token new_session = True attempts = 2 ok = False while attempts: attempts -= 1 defaults = storm.get_storm_defaults(new_session) if not defaults: continue if splunk.auth.ping(sessionKey=defaults['sessionKey']): ok = True break if not defaults or not ok: if not defaults: logger.error("Failed to fetch user's default settings from Storm") else: logger.error("Storm issued a token with an invalid session key %s" % defaults['sessionKey']) token = defaults = None cherrypy.session['storm_token'] = None else: defaults = storm.get_storm_defaults() if not defaults: url = cherrypy.config.get('storm_user_url') if not url: storm_host = cherrypy.config.get('storm_host', '127.0.0.1') storm_port = cherrypy.config.get('storm_port', 80) if cherrypy.config['storm_port'] != 80: url = "http://%s:%s/" % (storm_host, storm_port) else: url = "http://%s/" % (storm_host) if return_to: return_quoted = urllib.quote_plus(return_to) url += "?return_to_splunkweb=" + return_quoted logger.warn("action=storm_login_failed, redirect_url=%s, " "storm_token_set=%s", url, kwargs.has_key('storm_token')) raise cherrypy.HTTPRedirect(url) cherrypy.session['user'] = { 'name': defaults['user'], 'fullName': 'Storm User', 'id': 1 } cherrypy.session['sessionKey'] = defaults['sessionKey'] if return_to: # return_to could potentially have a query string and a fragment, and hence break in IE6 # since we're bypassing self.redirect_to_url, we have to check for that if util.is_ie_6() and not util.redirect_url_is_ie_6_safe(return_to): return self.client_side_redirect(util.make_url_internal(return_to)) raise cherrypy.HTTPRedirect(util.make_url_internal(return_to)) else: return self.redirect_to_url('/')
def handleStormLogin(self, return_to=None, **kwargs): from splunk.appserver.mrsparkle.lib import storm cherrypy.session.regenerate() if cherrypy.request.method == 'POST' and kwargs.has_key('storm_token'): ts, token = storm.decrypt_token(kwargs['storm_token']) max_token_age = cherrypy.config.get('storm_max_token_age', 3600) if ts + max_token_age < time.time(): logger.warn("Storm session token has expired") token = defaults = None else: logger.info("Got storm token OK") cherrypy.session['storm_token'] = token new_session = True attempts = 2 ok = False while attempts: attempts -= 1 defaults = storm.get_storm_defaults(new_session) if not defaults: continue if splunk.auth.ping(sessionKey=defaults['sessionKey']): ok = True break if not defaults or not ok: if not defaults: logger.error( "Failed to fetch user's default settings from Storm" ) else: logger.error( "Storm issued a token with an invalid session key %s" % defaults['sessionKey']) token = defaults = None cherrypy.session['storm_token'] = None else: defaults = storm.get_storm_defaults() if not defaults: url = cherrypy.config.get('storm_user_url') if not url: storm_host = cherrypy.config.get('storm_host', '127.0.0.1') storm_port = cherrypy.config.get('storm_port', 80) if cherrypy.config['storm_port'] != 80: url = "http://%s:%s/" % (storm_host, storm_port) else: url = "http://%s/" % (storm_host) if return_to: return_quoted = urllib.quote_plus(return_to) url += "?return_to_splunkweb=" + return_quoted logger.warn( "action=storm_login_failed, redirect_url=%s, " "storm_token_set=%s", url, kwargs.has_key('storm_token')) raise cherrypy.HTTPRedirect(url) cherrypy.session['user'] = { 'name': defaults['user'], 'fullName': 'Storm User', 'id': 1 } cherrypy.session['sessionKey'] = defaults['sessionKey'] if return_to: # return_to could potentially have a query string and a fragment, and hence break in IE6 # since we're bypassing self.redirect_to_url, we have to check for that if util.is_ie_6( ) and not util.redirect_url_is_ie_6_safe(return_to): return self.client_side_redirect( util.make_url_internal(return_to)) raise cherrypy.HTTPRedirect(util.make_url_internal(return_to)) else: return self.redirect_to_url('/')