Fixed Memory Leak Issue \
Refactored Some Sorting for better deduplication
This commit is contained in:
+15
-8
@@ -18,7 +18,7 @@ import json
|
|||||||
import os
|
import os
|
||||||
import time
|
import time
|
||||||
import utils.colortext as ct
|
import utils.colortext as ct
|
||||||
|
import ijson
|
||||||
def pullPolicyExechistories(url, choice, policiesnames, outputjson: bool):
|
def pullPolicyExechistories(url, choice, policiesnames, outputjson: bool):
|
||||||
|
|
||||||
headers = {
|
headers = {
|
||||||
@@ -33,18 +33,20 @@ def pullPolicyExechistories(url, choice, policiesnames, outputjson: bool):
|
|||||||
for index, item in enumerate(json_response_data['response']['exechistories']):
|
for index, item in enumerate(json_response_data['response']['exechistories']):
|
||||||
if index == len(json_response_data['response']['exechistories']) -1:
|
if index == len(json_response_data['response']['exechistories']) -1:
|
||||||
checkpoint = item['checkpoint']
|
checkpoint = item['checkpoint']
|
||||||
print(ct.colorText(f"Date Greater than 30 Days, Stepping to new Checkpoint. {item['checkpoint']}", "blue"))
|
print(ct.colorText(f"All checkpoints from this execution have been processed. Stepping to the subsequent checkpoint. {item['checkpoint']}", "blue"))
|
||||||
|
break
|
||||||
else:
|
else:
|
||||||
if (datetime.date.today() - datetime.timedelta(days=10) > datetime.datetime.strptime(item['datetime'].replace(' +0000 UTC', ''), '%Y-%m-%dT%H:%M:%SZ').date()):
|
if (datetime.date.today() - datetime.timedelta(days=30) > datetime.datetime.strptime(item['datetime'].replace(' +0000 UTC', ''), '%Y-%m-%dT%H:%M:%SZ').date()):
|
||||||
pass
|
print(item['datetime'])
|
||||||
else:
|
else:
|
||||||
for output in json_response_data['response']['exechistories']:
|
print(item['datetime'])
|
||||||
json_output['response']['exechistories'].append(output)
|
json_output['response']['exechistories'].append(item)
|
||||||
json_output = json.dumps(json_output)
|
json_output = json.dumps(json_output)
|
||||||
if outputjson == True:
|
if outputjson == True:
|
||||||
return json_output
|
return json_output
|
||||||
|
|
||||||
def checkpoint_stomper(checkpoint, url, policy, headers):
|
def checkpoint_stomper(checkpoint, url, policy, headers):
|
||||||
|
json_output = {'error': 'Success', 'response': {'exechistories': []}}
|
||||||
endpoint = url + '/v1/logging/exechistories'
|
endpoint = url + '/v1/logging/exechistories'
|
||||||
payload_dict = {
|
payload_dict = {
|
||||||
"type":[1,2,6,7],
|
"type":[1,2,6,7],
|
||||||
@@ -52,8 +54,13 @@ def checkpoint_stomper(checkpoint, url, policy, headers):
|
|||||||
"policy": [policy]
|
"policy": [policy]
|
||||||
}
|
}
|
||||||
payload = json.dumps(payload_dict)
|
payload = json.dumps(payload_dict)
|
||||||
response = requests.request("POST", endpoint, headers=headers, data=payload, verify=False)
|
with requests.request("POST", endpoint, headers=headers, data=payload, verify=False, stream=True) as response:
|
||||||
parse_text = json.loads(response.text)
|
parser = ijson.items(response.raw, 'response.exechistories.item')
|
||||||
|
for item in parser:
|
||||||
|
key = (item.get('sha256'), item.get('hostname')), item.get('datetime')
|
||||||
|
if key not in json_output:
|
||||||
|
json_output['response']['exechistories'].append(item)
|
||||||
|
parse_text = json.loads(json.dumps(json_output))
|
||||||
return parse_text
|
return parse_text
|
||||||
|
|
||||||
def listPolicies(url):
|
def listPolicies(url):
|
||||||
|
|||||||
Reference in New Issue
Block a user