Skip to content

Commit 4559aa5

Browse files
authored
bump-s2a, improve ingestor (#354)
1 parent 728bba2 commit 4559aa5

2 files changed

Lines changed: 15 additions & 4 deletions

File tree

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ stix2==3.0.1
173173
# stix2extensions
174174
stix2-patterns==2.0.0
175175
# via stix2
176-
stix2arango==1.1.12
176+
stix2arango==1.3.4
177177
# via
178178
# -r requirements.in
179179
# arango-cve-processor

utilities/s2a_importer/insert_archive_cve.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import requests
66
import time
77
import calendar
8-
from datetime import datetime, timedelta
8+
from datetime import date, datetime, timedelta
99
from stix2arango.stix2arango.stix2arango import Stix2Arango
1010
from manager import VersionManager
1111
from pathlib import Path
@@ -51,17 +51,26 @@ def parse_arguments():
5151
parser = argparse.ArgumentParser(description="Process NVD CVE versions.")
5252
parser.add_argument('--min_date', type=str, help='Start date in yyyy-mm-dd format.')
5353
parser.add_argument('--max_date', type=str, help='End date in yyyy-mm-dd format.')
54+
parser.add_argument('--days', type=lambda x: datetime.fromisoformat(x).date(), nargs='+', help='manually select days to run.')
5455
parser.add_argument('--ignore_embedded_relationships', action='store_true', help='Flag to ignore embedded relationships. Default is false.')
5556
parser.add_argument('--database', type=str, default="cti_knowledge_base_store", help='Name of the database to use. Default is "cti_knowledge_base_store".')
5657
parser.add_argument('--start_over', action='store_true', help='Delete database holding previous attempts.')
5758
parser.add_argument('--download_path', type=parse_path, help='Path where the database is to be downloaded to. Default is `./cti_knowledge_base_store`', default='./cti_knowledge_base_store/')
5859
return parser.parse_args()
5960

60-
def filter_versions_by_date(min_date, max_date):
61+
def filter_versions_by_date_range(min_date, max_date):
6162
min_dt = datetime.strptime(min_date, "%Y-%m-%d")
6263
max_dt = datetime.strptime(max_date, "%Y-%m-%d")
6364
return [item for item in all_versions if min_dt <= datetime(item[0], item[1], item[2]) <= max_dt]
6465

66+
def filter_versions_by_date_list(dates):
67+
versions = []
68+
for version in all_versions:
69+
d = date(version[0], version[1], version[2])
70+
if d in dates:
71+
versions.append(version)
72+
return versions
73+
6574
def create_directory(path):
6675
if not os.path.exists(path):
6776
os.makedirs(path)
@@ -104,10 +113,12 @@ def main():
104113
print(f"Database to be used: {args.database}")
105114

106115
if args.min_date and args.max_date:
107-
versions = filter_versions_by_date(args.min_date, args.max_date)
116+
versions = filter_versions_by_date_range(args.min_date, args.max_date)
108117
elif args.min_date or args.max_date:
109118
print("Both --min_date and --max_date must be provided.")
110119
return
120+
elif args.days:
121+
versions = filter_versions_by_date_list(args.days)
111122
else:
112123
versions = all_versions # If no filter is applied, process all versions.
113124

0 commit comments

Comments
 (0)