Source code for spylunking.get_token

"""
Get a Splunk User Token
"""

import os
import requests
import urllib3
from xml.dom.minidom import parseString
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)


[docs]def get_token( user=None, password=None, url='https://localhost:8089', verify=False, ssl_options=None, version="7.0.3", debug=False): """get_token This will get a user token and throw for any errors :param user: username - defaults to env var: SPLUNK_ADMIN_USER :param password: password - defaults to env var: SPLUNK_ADMIN_PASSWORD :param url: splunk auth url :param verify: verify cert :param ssl_options: ssl options dictionary :param version: splunk version string :param debug: debug xml response from splunk (for versioning) """ use_user = os.getenv( "SPLUNK_ADMIN_USER", user) use_password = os.getenv( "SPLUNK_ADMIN_PASSWORD", password) if not use_user: use_user = "admin" if not use_password: use_password = "changeme" full_url = ( '{}/servicesNS/admin/splunk_httpinput/data/inputs/http').format( url) if debug: print(full_url) response = requests.get( url=full_url, verify=False, auth=(use_user, use_password), data={ 'username': use_user, 'password': use_password }) if debug: print((response.text)) # this works on 7.0.3 if version == "7.0.3": all_keys = parseString( response.text).getElementsByTagName( 'entry')[0].getElementsByTagName( 'content')[0].childNodes[1].getElementsByTagName( 's:key') for k in all_keys: name_value = k.attributes.get( "name", None) if name_value: if name_value.value == "token": if debug: print((name_value.value)) print((k.childNodes[0].nodeValue)) return k.childNodes[0].nodeValue break else: print((( "Unsupported version={}").format( version))) # end of version handling on xml responses return None
# end of get_token