Skip to content

Commit

Permalink
#24 option to manage internal CA or self-signed certificates
Browse files Browse the repository at this point in the history
  • Loading branch information
jeromeleonard committed Jul 19, 2017
1 parent c9c3037 commit 512af3a
Showing 1 changed file with 14 additions and 13 deletions.
27 changes: 14 additions & 13 deletions thehive4py/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,15 @@ class TheHiveApi:
:param password: password
"""

def __init__(self, url, username, password, proxies):
def __init__(self, url, username, password, proxies, cert=True):

self.url = url
self.username = username
self.password = password
self.proxies = proxies
self.auth = requests.auth.HTTPBasicAuth(username=self.username,
password=self.password)
self.cert = cert

def create_case(self, case):

Expand All @@ -44,7 +45,7 @@ def create_case(self, case):
req = self.url + "/api/case"
data = case.jsonify()
try:
return requests.post(req, headers={'Content-Type': 'application/json'}, data=data, proxies=self.proxies, auth=self.auth)
return requests.post(req, headers={'Content-Type': 'application/json'}, data=data, proxies=self.proxies, auth=self.auth, verify=self.cert)
except requests.exceptions.RequestException as e:
sys.exit("Error: {}".format(e))

Expand All @@ -63,7 +64,7 @@ def create_case_task(self, caseId, caseTask):
data = caseTask.jsonify()

try:
return requests.post(req, headers={'Content-Type': 'application/json'}, data=data, proxies=self.proxies, auth=self.auth)
return requests.post(req, headers={'Content-Type': 'application/json'}, data=data, proxies=self.proxies, auth=self.auth, verify=True,)
except requests.exceptions.RequestException as e:
sys.exit("Error: {}".format(e))

Expand All @@ -83,13 +84,13 @@ def create_task_log(self, taskId, caseTaskLog):
if caseTaskLog.file:
f = {'attachment': ( os.path.basename(caseTaskLog.file), open(caseTaskLog.file, 'rb'), magic.Magic(mime=True).from_file(caseTaskLog.file))}
try:
return requests.post(req, data=data,files=f, proxies=self.proxies, auth=self.auth)
return requests.post(req, data=data,files=f, proxies=self.proxies, auth=self.auth, verify=True)
except requests.exceptions.RequestException as e:
sys.exit("Error: {}".format(e))

else:
try:
return requests.post(req, headers={'Content-Type': 'application/json'}, data=json.dumps({'message':caseTaskLog.message}), proxies=self.proxies, auth=self.auth)
return requests.post(req, headers={'Content-Type': 'application/json'}, data=json.dumps({'message':caseTaskLog.message}), proxies=self.proxies, auth=self.auth, verify=self.cert)
except requests.exceptions.RequestException as e:
sys.exit("Error: {}".format(e))

Expand All @@ -114,12 +115,12 @@ def create_case_observable(self, caseId, caseObservable):
"ioc": caseObservable.ioc
})
data = {"_json": mesg}
return requests.post(req, data=data, files=caseObservable.data[0], proxies=self.proxies, auth=self.auth)
return requests.post(req, data=data, files=caseObservable.data[0], proxies=self.proxies, auth=self.auth,verify=self.cert)
except requests.exceptions.RequestException as e:
sys.exit("Error: {}".format(e))
else:
try:
return requests.post(req, headers={'Content-Type': 'application/json'}, data=caseObservable.jsonify(), proxies=self.proxies, auth=self.auth)
return requests.post(req, headers={'Content-Type': 'application/json'}, data=caseObservable.jsonify(), proxies=self.proxies, auth=self.auth, verify=self.cert)
except requests.exceptions.RequestException as e:
sys.exit("Error: {}".format(e))

Expand All @@ -132,7 +133,7 @@ def get_case(self, caseId):
req = self.url + "/api/case/{}".format(caseId)

try:
return requests.get(req, proxies=self.proxies, auth=self.auth)
return requests.get(req, proxies=self.proxies, auth=self.auth, verify=self.cert)
except requests.exceptions.RequestException as e:
sys.exit("Error: {}".format(e))

Expand All @@ -156,7 +157,7 @@ def find_cases(self, **attributes):
}

try:
return requests.post(req, json=data, proxies=self.proxies, auth=self.auth, params=params)
return requests.post(req, json=data, proxies=self.proxies, auth=self.auth, params=params, verify=self.cert)
except requests.exceptions.RequestException as e:
sys.exit("Error: {}".format(e))

Expand Down Expand Up @@ -192,7 +193,7 @@ def get_case_observables(self, caseId):
}

try:
return requests.post(req, json=data, proxies=self.proxies, auth=self.auth)
return requests.post(req, json=data, proxies=self.proxies, auth=self.auth,verify=self.cert)
except requests.exceptions.RequestException as e:
sys.exit("Error: {}".format(e))

Expand All @@ -218,7 +219,7 @@ def get_case_template(self, name):
}

try:
response = requests.post(req, json=data, proxies=self.proxies, auth=self.auth)
response = requests.post(req, json=data, proxies=self.proxies, auth=self.auth, verify=self.cert)
jsonResponse = response.json()

if response.status_code == 200 and len(jsonResponse) > 0:
Expand Down Expand Up @@ -260,7 +261,7 @@ def create_alert(self, alert):
req = self.url + "/api/alert"
data = alert.jsonify()
try:
return requests.post(req, headers={'Content-Type': 'application/json'}, data=data, proxies=self.proxies, auth=self.auth)
return requests.post(req, headers={'Content-Type': 'application/json'}, data=data, proxies=self.proxies, auth=self.auth, verify=self.cert)
except requests.exceptions.RequestException as e:
sys.exit("Error: {}".format(e))

Expand All @@ -273,7 +274,7 @@ def get_alert(self, alert_id):
req = self.url + "/api/alert/{}".format(alert_id)

try:
return requests.get(req, proxies=self.proxies, auth=self.auth)
return requests.get(req, proxies=self.proxies, auth=self.auth,verify=self.cert)
except requests.exceptions.RequestException as e:
sys.exit("Error: {}".format(e))

Expand Down

0 comments on commit 512af3a

Please sign in to comment.