Exemple #1
0
 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('/')
Exemple #2
0
 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('/')
Exemple #3
0
 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('/')