Skip to content
This repository was archived by the owner on Mar 16, 2023. It is now read-only.
Open
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
929972e
Bump to release 0.9.48.post1
jtschichold Jun 15, 2018
4098962
Merge branch 'release-0.9.48.post1'
jtschichold Jun 15, 2018
5a58c12
Merge branch 'release-0.9.50'
jtschichold Jul 27, 2018
1d53750
Merge branch 'develop'
jtschichold Jul 27, 2018
dc261fe
Merge branch 'release-0.9.50.post2'
jtschichold Oct 26, 2018
89afbca
Merge branch 'release-0.9.50.post3'
jtschichold Nov 5, 2018
fe6ddf9
Merge branch 'release-0.9.50.post4'
jtschichold Nov 7, 2018
79a2917
Merge branch 'release-0.9.52'
jtschichold Dec 7, 2018
af97fa2
Merge branch 'release-0.9.52.post1'
jtschichold Dec 31, 2018
b1962df
Merge branch 'release-0.9.60'
jtschichold Mar 11, 2019
4ec6f64
Merge branch 'fix-cci'
jtschichold Mar 11, 2019
e34cded
Merge branch 'fix-cci-2'
jtschichold Mar 11, 2019
9f4a017
Merge branch 'release-0.9.62'
jtschichold Jun 27, 2019
0aae475
Merge branch 'release-0.9.64'
jtschichold Sep 17, 2019
b659532
Merge branch 'release-0.9.66'
jtschichold Jan 7, 2020
f39f323
Merge branch 'release-0.9.68'
jtschichold Feb 19, 2020
901b0e2
Merge branch 'release-0.9.70'
jtschichold May 13, 2020
2f11ab7
Merge branch 'release-0.9.70.post1'
jtschichold Jun 15, 2020
a67fd58
Merge branch 'release-0.9.70.post2'
jtschichold Feb 10, 2021
8c1da46
Merge branch 'release-0.9.70.post3'
jtschichold Feb 11, 2021
dde49f8
Merge branch 'release-0.9.70.post4'
jtschichold Apr 7, 2021
d9c08b2
Merge branch 'release-0.9.70.post5'
jtschichold Apr 27, 2021
c16c469
Fix TAXII 2.1 pagination. Use 'next' key in response if available, o…
Oct 20, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 19 additions & 4 deletions minemeld/ft/taxii2.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ def __init__(self, name, chassis, config):
self.poll_service = None
self.last_taxii2_run = None
self.last_stix2_package_ts = None
self.taxii_date_added_last = None

super(Taxii2Client, self).__init__(name, chassis, config)

Expand Down Expand Up @@ -361,14 +362,16 @@ def _explore(self, root, types):
def _poll_taxii21_server(self):
"""
TAXII 2.1 uses a limit url query parameter and a 'more' true/false key in the returned data
as well as a next key for pagination, and the X-TAXII-Date-Added-Last to show the added
datetime of the newest object in the response.
https://docs.oasis-open.org/cti/taxii/v2.1/csprd01/taxii-v2.1-csprd01.html#_Toc532988055
:return: list of objects
"""

data = []
params = {'limit': '100'}
if self.last_stix2_package_ts:
params['added_after'] = self.last_stix2_package_ts
if self.taxii_date_added_last:
params['added_after'] = self.taxii_date_added_last
fetch_more = True

while fetch_more:
Expand All @@ -390,9 +393,21 @@ def _poll_taxii21_server(self):
# Sort the objs in data by timestamp to find the most recent timestamp
data.sort(key=lambda x: datetime.strptime(x['modified'], '%Y-%m-%dT%H:%M:%S.%fZ'))
if len(data):
ts = data[-1]['modified']
if 'next' in r_json:
next_uuid = r_json['next']
params['next'] = next_uuid
ts = self.taxii_date_added_last
LOG.info('{} - Paginating via next uuid - {}'.format(self.name, next_uuid))
elif 'X-TAXII-Date-Added-Last' in r.headers:
params.pop('next', None)
ts = r.headers['X-TAXII-Date-Added-Last']
LOG.info('{} - Paginating via X-TAXII-Date-Added-Last header - {}'.format(self.name, ts))
else:
raise RuntimeError('Server does not appear to use X-TAXII-Date-Added-Last header \
or "next" key in response, cannot paginate. Is this really a TAXII 2.1 server?')

params['added_after'] = ts
self.last_stix2_package_ts = ts
self.taxii_date_added_last = ts

if 'more' in r_json and r_json['more'] is True:
pass
Expand Down