stix2arango 0.0.5__tar.gz → 1.0.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of stix2arango might be problematic. Click here for more details.

Files changed (105) hide show
  1. {stix2arango-0.0.5 → stix2arango-1.0.1}/PKG-INFO +4 -2
  2. {stix2arango-0.0.5 → stix2arango-1.0.1}/pyproject.toml +6 -2
  3. {stix2arango-0.0.5 → stix2arango-1.0.1}/stix2arango/services/arangodb_service.py +15 -9
  4. {stix2arango-0.0.5 → stix2arango-1.0.1}/.env.example +0 -0
  5. {stix2arango-0.0.5 → stix2arango-1.0.1}/.env.markdown +0 -0
  6. {stix2arango-0.0.5 → stix2arango-1.0.1}/.github/workflows/create-release.yml +0 -0
  7. {stix2arango-0.0.5 → stix2arango-1.0.1}/.github/workflows/run-tests.yml +0 -0
  8. {stix2arango-0.0.5 → stix2arango-1.0.1}/.gitignore +0 -0
  9. {stix2arango-0.0.5 → stix2arango-1.0.1}/LICENSE +0 -0
  10. {stix2arango-0.0.5 → stix2arango-1.0.1}/README.md +0 -0
  11. {stix2arango-0.0.5 → stix2arango-1.0.1}/docs/README.md +0 -0
  12. {stix2arango-0.0.5 → stix2arango-1.0.1}/docs/stix2arango.png +0 -0
  13. {stix2arango-0.0.5 → stix2arango-1.0.1}/requirements.txt +0 -0
  14. {stix2arango-0.0.5 → stix2arango-1.0.1}/stix2arango/__init__.py +0 -0
  15. {stix2arango-0.0.5 → stix2arango-1.0.1}/stix2arango/__main__.py +0 -0
  16. {stix2arango-0.0.5 → stix2arango-1.0.1}/stix2arango/config.py +0 -0
  17. {stix2arango-0.0.5 → stix2arango-1.0.1}/stix2arango/services/__init__.py +0 -0
  18. {stix2arango-0.0.5 → stix2arango-1.0.1}/stix2arango/services/version_annotator.py +0 -0
  19. {stix2arango-0.0.5 → stix2arango-1.0.1}/stix2arango/stix2arango/__init__.py +0 -0
  20. {stix2arango-0.0.5 → stix2arango-1.0.1}/stix2arango/stix2arango/bundle_loader.py +0 -0
  21. {stix2arango-0.0.5 → stix2arango-1.0.1}/stix2arango/stix2arango/stix2arango.py +0 -0
  22. {stix2arango-0.0.5 → stix2arango-1.0.1}/stix2arango/templates/marking-definition.json +0 -0
  23. {stix2arango-0.0.5 → stix2arango-1.0.1}/stix2arango/utils.py +0 -0
  24. {stix2arango-0.0.5 → stix2arango-1.0.1}/stix2arango.py +0 -0
  25. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/README.md +0 -0
  26. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/files/stix2arango/custom-sco-original.json +0 -0
  27. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/files/stix2arango/custom-sco-updated.json +0 -0
  28. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/files/stix2arango/custom-sdo-original.json +0 -0
  29. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/files/stix2arango/custom-sdo-updated.json +0 -0
  30. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/files/stix2arango/duplicate-objects-all-properties-same.json +0 -0
  31. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/files/stix2arango/duplicate-objects-properties-different.json +0 -0
  32. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/files/stix2arango/embedded-ref-object-removed.json +0 -0
  33. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/files/stix2arango/embedded-ref-object-updated.json +0 -0
  34. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/files/stix2arango/embedded-ref-object.json +0 -0
  35. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/files/stix2arango/embedded-ref-sdo-sco-sro-smo.json +0 -0
  36. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/files/stix2arango/nested-embedded-ref.json +0 -0
  37. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/files/stix2arango/non-standard-embedded-relationship.json +0 -0
  38. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/files/stix2arango/sco-original.json +0 -0
  39. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/files/stix2arango/sco-updated.json +0 -0
  40. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/files/stix2arango/sigma-rule-bundle-another.json +0 -0
  41. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/files/stix2arango/sigma-rule-bundle-condensed-original.json +0 -0
  42. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/files/stix2arango/sigma-rule-bundle-condensed-update-1.json +0 -0
  43. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/files/stix2arango/sigma-rule-bundle-condensed-update-2.json +0 -0
  44. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/files/stix2arango/sigma-rule-bundle-yet-another.json +0 -0
  45. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/files/stix2arango/sigma-rule-bundle.json +0 -0
  46. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/files/stix2arango/smo-embedded-ref-1.json +0 -0
  47. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/files/stix2arango/smo-embedded-ref-2.json +0 -0
  48. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/files/stix2arango/smo-original.json +0 -0
  49. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/files/stix2arango/smo-updated-2.json +0 -0
  50. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/files/stix2arango/smo-updated.json +0 -0
  51. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/files/stix2arango/source-object-does-not-exist.json +0 -0
  52. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/files/stix2arango/sro-original.json +0 -0
  53. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/files/stix2arango/sro-updated.json +0 -0
  54. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/files/stix2arango/target-object-does-not-exist.json +0 -0
  55. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/files/stix2arango/update_with_diff_modified_times_1.json +0 -0
  56. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/files/stix2arango/update_with_diff_modified_times_2.json +0 -0
  57. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/requirements.txt +0 -0
  58. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/src/full_tests/__init__.py +0 -0
  59. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/src/full_tests/base_test.py +0 -0
  60. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/src/full_tests/test_00-basic-import-logic-with-embedded.py +0 -0
  61. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/src/full_tests/test_01-basic-import-no-embedded.py +0 -0
  62. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/src/full_tests/test_02-basic-import-no-stix2arango_note.py +0 -0
  63. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/src/full_tests/test_03-import-with-no-update-detected.py +0 -0
  64. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/src/full_tests/test_04-update-detected-because-of-stix2arango-note.py +0 -0
  65. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/src/full_tests/test_05-update-detected-because-of-modified-time-change.py +0 -0
  66. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/src/full_tests/test_06-update-detected-because-of-modified-time-change-not-in-order.py +0 -0
  67. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/src/full_tests/test_07-test-default-imported-objects.py +0 -0
  68. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/src/full_tests/test_08-duplicate-objects-in-bundle-all-identical.py +0 -0
  69. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/src/full_tests/test_09-duplicate-objects-but-diff-times-in-bundle.py +0 -0
  70. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/src/full_tests/test_10-updating-object-no-modified-time.py +0 -0
  71. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/src/full_tests/test_11-custom-sdos.py +0 -0
  72. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/src/full_tests/test_12-custom-scos.py +0 -0
  73. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/src/full_tests/test_13-updating-smos.py +0 -0
  74. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/src/full_tests/test_14-non-standard-embedded-relationship.py +0 -0
  75. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/src/full_tests/test_15-testing-when-sro-target-not-in-collection.py +0 -0
  76. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/src/full_tests/test_16-testing-when-sro-source-not-in-collection.py +0 -0
  77. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/src/full_tests/test_17-testing-update-of-embedded-refs.py +0 -0
  78. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/src/full_tests/test_18-testing-nested-embedded-ref.py +0 -0
  79. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/src/full_tests/test_19_update_with_diff_created_times.py +0 -0
  80. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/src/full_tests/test_20-embedded-sro-update-for-sdo.py +0 -0
  81. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/src/full_tests/test_21-embedded-sro-update-for-sco.py +0 -0
  82. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/src/full_tests/test_22-embedded-sro-update-for-smo.py +0 -0
  83. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/src/full_tests/test_23-embedded-sro-removed.py +0 -0
  84. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/src/full_tests/test_24-test-hidden-properties.py +0 -0
  85. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/src/full_tests/test_25-ignore-embedded-rels-smo.py +0 -0
  86. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/src/full_tests/test_26-ignore-embedded-rels-sro.py +0 -0
  87. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/src/test_bundle_loader.py +0 -0
  88. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/src/test_stix2arango.py +0 -0
  89. {stix2arango-0.0.5 → stix2arango-1.0.1}/tests/tests.env +0 -0
  90. {stix2arango-0.0.5 → stix2arango-1.0.1}/utilities/arango_cti_processor/README.md +0 -0
  91. {stix2arango-0.0.5 → stix2arango-1.0.1}/utilities/arango_cti_processor/insert_archive_atlas.py +0 -0
  92. {stix2arango-0.0.5 → stix2arango-1.0.1}/utilities/arango_cti_processor/insert_archive_attack_enterprise.py +0 -0
  93. {stix2arango-0.0.5 → stix2arango-1.0.1}/utilities/arango_cti_processor/insert_archive_attack_ics.py +0 -0
  94. {stix2arango-0.0.5 → stix2arango-1.0.1}/utilities/arango_cti_processor/insert_archive_attack_mobile.py +0 -0
  95. {stix2arango-0.0.5 → stix2arango-1.0.1}/utilities/arango_cti_processor/insert_archive_capec.py +0 -0
  96. {stix2arango-0.0.5 → stix2arango-1.0.1}/utilities/arango_cti_processor/insert_archive_cwe.py +0 -0
  97. {stix2arango-0.0.5 → stix2arango-1.0.1}/utilities/arango_cti_processor/insert_archive_disarm.py +0 -0
  98. {stix2arango-0.0.5 → stix2arango-1.0.1}/utilities/arango_cti_processor/insert_archive_locations.py +0 -0
  99. {stix2arango-0.0.5 → stix2arango-1.0.1}/utilities/arango_cti_processor/insert_archive_sigma_rules.py +0 -0
  100. {stix2arango-0.0.5 → stix2arango-1.0.1}/utilities/arango_cti_processor/insert_archive_tlp.py +0 -0
  101. {stix2arango-0.0.5 → stix2arango-1.0.1}/utilities/arango_cti_processor/insert_archive_yara_rules.py +0 -0
  102. {stix2arango-0.0.5 → stix2arango-1.0.1}/utilities/arango_cve_processor/README.md +0 -0
  103. {stix2arango-0.0.5 → stix2arango-1.0.1}/utilities/arango_cve_processor/insert_archive_cve.py +0 -0
  104. {stix2arango-0.0.5 → stix2arango-1.0.1}/utilities/arango_cve_processor/manager.py +0 -0
  105. {stix2arango-0.0.5 → stix2arango-1.0.1}/utilities/stix2arango/add_ref_types.py +0 -0
@@ -1,10 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: stix2arango
3
- Version: 0.0.5
3
+ Version: 1.0.1
4
4
  Summary: stix2arango is a command line tool that takes a group of STIX 2.1 objects in a bundle and inserts them into ArangoDB. It can also handle updates to existing objects in ArangoDB imported in a bundle.
5
5
  Project-URL: Homepage, https://github.com/muchdogesec/stix2arango
6
6
  Project-URL: Issues, https://github.com/muchdogesec/stix2arango/issues
7
- Author-email: DOGESEC <support@dogesec.com>
7
+ Project-URL: dogesec HQ, https://dogesec.com
8
+ Author: dogesec
9
+ Maintainer: dogesec
8
10
  License-File: LICENSE
9
11
  Classifier: License :: OSI Approved :: Apache Software License
10
12
  Classifier: Operating System :: OS Independent
@@ -4,9 +4,12 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "stix2arango"
7
- version = "0.0.5"
7
+ version = "1.0.1"
8
8
  authors = [
9
- { name="DOGESEC", email="support@dogesec.com" },
9
+ { name = "dogesec" }
10
+ ]
11
+ maintainers = [
12
+ { name = "dogesec" }
10
13
  ]
11
14
  description = "stix2arango is a command line tool that takes a group of STIX 2.1 objects in a bundle and inserts them into ArangoDB. It can also handle updates to existing objects in ArangoDB imported in a bundle."
12
15
  readme = "README.md"
@@ -28,6 +31,7 @@ dependencies = [
28
31
  [project.urls]
29
32
  Homepage = "https://github.com/muchdogesec/stix2arango"
30
33
  Issues = "https://github.com/muchdogesec/stix2arango/issues"
34
+ "dogesec HQ" = "https://dogesec.com"
31
35
 
32
36
  [project.scripts]
33
37
  stix2arango = "stix2arango.__main__:main"
@@ -146,14 +146,12 @@ class ArangoDBService:
146
146
  if isinstance(ret, arango.exceptions.DocumentInsertError):
147
147
  if ret.error_code == 1210:
148
148
  existing_objects[f'{obj["id"]};{obj["_record_md5_hash"]}'] = collection_name + '/' + re.search(r'conflicting key: (.*)', ret.message).group(1)
149
- if 'relationship--7a1682a3-fec3-53ed-8dd5-68f54b1d6f7a' in ret.message:
150
- print(1)
151
149
  else:
152
150
  raise ret
153
151
  return [obj["id"] for obj in new_insertions], existing_objects
154
152
 
155
153
  def insert_several_objects_chunked(
156
- self, objects, collection_name, chunk_size=1000, remove_duplicates=True
154
+ self, objects, collection_name, chunk_size=5000, remove_duplicates=True
157
155
  ):
158
156
  if remove_duplicates:
159
157
  original_length = len(objects)
@@ -183,7 +181,7 @@ class ArangoDBService:
183
181
  relationships: list[dict[str, Any]],
184
182
  id_to_key_map: dict[str, str],
185
183
  collection_name: str,
186
- chunk_size=1200,
184
+ chunk_size=5000,
187
185
  ):
188
186
  for relationship in relationships:
189
187
  source_key = id_to_key_map.get(relationship["source_ref"])
@@ -244,7 +242,7 @@ class ArangoDBService:
244
242
  progress_bar.update(len(chunk))
245
243
 
246
244
  logging.info(
247
- f"Updating relationship's _is_latest for {len(deprecated_key_ids)} items"
245
+ f"Deprecating _is_latest for {len(deprecated_key_ids)} items"
248
246
  )
249
247
  self.deprecate_relationships(deprecated_key_ids, edge_collection)
250
248
  return deprecated_key_ids
@@ -253,11 +251,19 @@ class ArangoDBService:
253
251
  self, deprecated_key_ids: list, edge_collection: str, chunk_size=5000
254
252
  ):
255
253
  keys = self.get_relationships_to_deprecate(deprecated_key_ids, edge_collection)
256
- self.db.collection(edge_collection).update_many(
257
- tuple(dict(_key=_key, _is_latest=False) for _key in keys),
258
- silent=True,
259
- raise_on_document_error=True,
254
+
255
+ progress_bar = tqdm(
256
+ utils.chunked(keys, chunk_size),
257
+ total=len(keys),
258
+ desc="deprecate_relationships",
260
259
  )
260
+ for chunk in progress_bar:
261
+ self.db.collection(edge_collection).update_many(
262
+ tuple(dict(_key=_key, _is_latest=False) for _key in chunk),
263
+ silent=True,
264
+ raise_on_document_error=True,
265
+ )
266
+ progress_bar.update(len(chunk))
261
267
  return len(keys)
262
268
 
263
269
  def get_relationships_to_deprecate(
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes