Skip to content

Commit d42f66c

Browse files
[backend/client] Fix embedded options at file upload (#14436)
Co-authored-by: Laurent Bonnet <laurent.bonnet@filigran.io>
1 parent 473fa38 commit d42f66c

File tree

65 files changed

+812
-329
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

65 files changed

+812
-329
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# coding: utf-8
2+
import datetime
3+
import os
4+
5+
from pycti import OpenCTIApiClient
6+
7+
# Variables
8+
api_url = os.getenv("OPENCTI_API_URL", "http://opencti:4000")
9+
api_token = os.getenv("OPENCTI_API_TOKEN", "bfa014e0-e02e-4aa6-a42b-603b19dcf159")
10+
11+
# OpenCTI initialization
12+
opencti_api_client = OpenCTIApiClient(api_url, api_token)
13+
14+
# Create the Intrusion Set
15+
intrusion_set = opencti_api_client.intrusion_set.create(
16+
name="Another new Intrusion Set",
17+
description="Another Evil Cluster\n\n![Image example](embedded/upload_image_example.png)",
18+
first_seen=datetime.date.today().strftime("%Y-%m-%dT%H:%M:%S+00:00"),
19+
last_seen=datetime.date.today().strftime("%Y-%m-%dT%H:%M:%S+00:00"),
20+
update=True,
21+
)
22+
23+
# Print
24+
print(intrusion_set)
25+
26+
# Upload the file
27+
file = opencti_api_client.stix_domain_object.add_file(
28+
id=intrusion_set["id"],
29+
file_name="./upload_image_example.png",
30+
embedded=True,
31+
)
32+
print(file)
33+
# file is embedded and not visible under "data" tab
34+
# it is accessible at path <OPENCTI_API_URL>/dashboard/threats/intrusion_sets/<id>/embedded/upload_image_example.png
35+
# and can be referenced in the entity description with a local path "![Image example](embedded/upload_image_example.png)"
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# coding: utf-8
2+
import datetime
3+
import os
4+
5+
from pycti import OpenCTIApiClient
6+
7+
# Variables
8+
api_url = os.getenv("OPENCTI_API_URL", "http://opencti:4000")
9+
api_token = os.getenv("OPENCTI_API_TOKEN", "bfa014e0-e02e-4aa6-a42b-603b19dcf159")
10+
11+
# OpenCTI initialization
12+
opencti_api_client = OpenCTIApiClient(api_url, api_token)
13+
14+
# get the file data
15+
with open("./upload_image_example.png", "rb") as f:
16+
file_data = f.read()
17+
f.close()
18+
19+
# Create the Intrusion Set
20+
intrusion_set = opencti_api_client.intrusion_set.create(
21+
name="Yet another new Intrusion Set",
22+
description="Yet Another Evil Cluster\n\n![Image example](embedded/upload_image_example.png)",
23+
first_seen=datetime.date.today().strftime("%Y-%m-%dT%H:%M:%S+00:00"),
24+
last_seen=datetime.date.today().strftime("%Y-%m-%dT%H:%M:%S+00:00"),
25+
update=True,
26+
files=(opencti_api_client.file("upload_image_example.png", file_data, "image/png")),
27+
embedded=True,
28+
)
29+
30+
# Print
31+
print(intrusion_set)
32+
33+
# file is embedded and not visible under "data" tab
34+
# it is accessible at path <OPENCTI_API_URL>/dashboard/threats/intrusion_sets/<id>/embedded/upload_image_example.png
35+
# and can be referenced in the entity description with a local path "![Image example](embedded/upload_image_example.png)"
14.6 KB
Loading

client-python/pycti/entities/opencti_attack_pattern.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -536,7 +536,8 @@ def create(self, **kwargs):
536536
update = kwargs.get("update", False)
537537
files = kwargs.get("files", None)
538538
files_markings = kwargs.get("filesMarkings", None)
539-
no_trigger_import = kwargs.get("noTriggerImport", False)
539+
no_trigger_import = kwargs.get("noTriggerImport", None)
540+
embedded = kwargs.get("embedded", None)
540541
upsert_operations = kwargs.get("upsert_operations", None)
541542

542543
if name is not None:
@@ -578,6 +579,7 @@ def create(self, **kwargs):
578579
"files": files,
579580
"filesMarkings": files_markings,
580581
"noTriggerImport": no_trigger_import,
582+
"embedded": embedded,
581583
"upsertOperations": upsert_operations,
582584
}
583585
result = self.opencti.query(query, {"input": input_variables})
@@ -754,7 +756,8 @@ def import_from_stix2(self, **kwargs):
754756
update=update,
755757
files=extras.get("files"),
756758
filesMarkings=extras.get("filesMarkings"),
757-
noTriggerImport=extras.get("noTriggerImport", False),
759+
noTriggerImport=extras.get("noTriggerImport", None),
760+
embedded=extras.get("embedded", None),
758761
upsert_operations=(
759762
stix_object["opencti_upsert_operations"]
760763
if "opencti_upsert_operations" in stix_object

client-python/pycti/entities/opencti_campaign.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -501,7 +501,8 @@ def create(self, **kwargs):
501501
update = kwargs.get("update", False)
502502
files = kwargs.get("files", None)
503503
files_markings = kwargs.get("filesMarkings", None)
504-
no_trigger_import = kwargs.get("noTriggerImport", False)
504+
no_trigger_import = kwargs.get("noTriggerImport", None)
505+
embedded = kwargs.get("embedded", None)
505506
upsert_operations = kwargs.get("upsert_operations", None)
506507

507508
if name is not None:
@@ -544,6 +545,7 @@ def create(self, **kwargs):
544545
"files": files,
545546
"filesMarkings": files_markings,
546547
"noTriggerImport": no_trigger_import,
548+
"embedded": embedded,
547549
"upsertOperations": upsert_operations,
548550
}
549551
},
@@ -656,7 +658,8 @@ def import_from_stix2(self, **kwargs):
656658
update=update,
657659
files=extras.get("files"),
658660
filesMarkings=extras.get("filesMarkings"),
659-
noTriggerImport=extras.get("noTriggerImport", False),
661+
noTriggerImport=extras.get("noTriggerImport", None),
662+
embedded=extras.get("embedded", None),
660663
upsert_operations=(
661664
stix_object["opencti_upsert_operations"]
662665
if "opencti_upsert_operations" in stix_object

client-python/pycti/entities/opencti_case_incident.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -791,7 +791,8 @@ def create(self, **kwargs):
791791
update = kwargs.get("update", False)
792792
files = kwargs.get("files", None)
793793
files_markings = kwargs.get("filesMarkings", None)
794-
no_trigger_import = kwargs.get("noTriggerImport", False)
794+
no_trigger_import = kwargs.get("noTriggerImport", None)
795+
embedded = kwargs.get("embedded", None)
795796
upsert_operations = kwargs.get("upsert_operations", None)
796797

797798
if name is not None:
@@ -834,6 +835,7 @@ def create(self, **kwargs):
834835
"files": files,
835836
"filesMarkings": files_markings,
836837
"noTriggerImport": no_trigger_import,
838+
"embedded": embedded,
837839
"upsertOperations": upsert_operations,
838840
}
839841
result = self.opencti.query(query, {"input": input_variables})
@@ -1073,7 +1075,8 @@ def import_from_stix2(self, **kwargs):
10731075
update=update,
10741076
files=extras.get("files"),
10751077
filesMarkings=extras.get("filesMarkings"),
1076-
noTriggerImport=extras.get("noTriggerImport", False),
1078+
noTriggerImport=extras.get("noTriggerImport", None),
1079+
embedded=extras.get("embedded", None),
10771080
upsert_operations=(
10781081
stix_object["opencti_upsert_operations"]
10791082
if "opencti_upsert_operations" in stix_object

client-python/pycti/entities/opencti_case_rfi.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -825,7 +825,8 @@ def create(self, **kwargs):
825825
information_types = kwargs.get("information_types", None)
826826
files = kwargs.get("files", None)
827827
files_markings = kwargs.get("filesMarkings", None)
828-
no_trigger_import = kwargs.get("noTriggerImport", False)
828+
no_trigger_import = kwargs.get("noTriggerImport", None)
829+
embedded = kwargs.get("embedded", None)
829830
upsert_operations = kwargs.get("upsert_operations", None)
830831

831832
if name is not None:
@@ -868,6 +869,7 @@ def create(self, **kwargs):
868869
"files": files,
869870
"filesMarkings": files_markings,
870871
"noTriggerImport": no_trigger_import,
872+
"embedded": embedded,
871873
"upsertOperations": upsert_operations,
872874
}
873875
result = self.opencti.query(query, {"input": input_variables})
@@ -1109,7 +1111,8 @@ def import_from_stix2(self, **kwargs):
11091111
),
11101112
files=extras.get("files"),
11111113
filesMarkings=extras.get("filesMarkings"),
1112-
noTriggerImport=extras.get("noTriggerImport", False),
1114+
noTriggerImport=extras.get("noTriggerImport", None),
1115+
embedded=extras.get("embedded", None),
11131116
)
11141117
else:
11151118
self.opencti.app_logger.error(

client-python/pycti/entities/opencti_case_rft.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -826,7 +826,8 @@ def create(self, **kwargs):
826826
takedown_types = kwargs.get("takedown_types", None)
827827
files = kwargs.get("files", None)
828828
files_markings = kwargs.get("filesMarkings", None)
829-
no_trigger_import = kwargs.get("noTriggerImport", False)
829+
no_trigger_import = kwargs.get("noTriggerImport", None)
830+
embedded = kwargs.get("embedded", None)
830831
upsert_operations = kwargs.get("upsert_operations", None)
831832

832833
if name is not None:
@@ -869,6 +870,7 @@ def create(self, **kwargs):
869870
"files": files,
870871
"filesMarkings": files_markings,
871872
"noTriggerImport": no_trigger_import,
873+
"embedded": embedded,
872874
"upsertOperations": upsert_operations,
873875
}
874876
result = self.opencti.query(query, {"input": input_variables})
@@ -1104,7 +1106,8 @@ def import_from_stix2(self, **kwargs):
11041106
update=update,
11051107
files=extras.get("files"),
11061108
filesMarkings=extras.get("filesMarkings"),
1107-
noTriggerImport=extras.get("noTriggerImport", False),
1109+
noTriggerImport=extras.get("noTriggerImport", None),
1110+
embedded=extras.get("embedded", None),
11081111
upsert_operations=(
11091112
stix_object["opencti_upsert_operations"]
11101113
if "opencti_upsert_operations" in stix_object

client-python/pycti/entities/opencti_channel.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -472,7 +472,8 @@ def create(self, **kwargs):
472472
update = kwargs.get("update", False)
473473
files = kwargs.get("files", None)
474474
files_markings = kwargs.get("filesMarkings", None)
475-
no_trigger_import = kwargs.get("noTriggerImport", False)
475+
no_trigger_import = kwargs.get("noTriggerImport", None)
476+
embedded = kwargs.get("embedded", None)
476477
upsert_operations = kwargs.get("upsert_operations", None)
477478

478479
if name is not None:
@@ -509,6 +510,7 @@ def create(self, **kwargs):
509510
"files": files,
510511
"filesMarkings": files_markings,
511512
"noTriggerImport": no_trigger_import,
513+
"embedded": embedded,
512514
"upsertOperations": upsert_operations,
513515
}
514516
result = self.opencti.query(query, {"input": input_variables})
@@ -607,7 +609,8 @@ def import_from_stix2(self, **kwargs):
607609
update=update,
608610
files=extras.get("files"),
609611
filesMarkings=extras.get("filesMarkings"),
610-
noTriggerImport=extras.get("noTriggerImport", False),
612+
noTriggerImport=extras.get("noTriggerImport", None),
613+
embedded=extras.get("embedded", None),
611614
upsert_operations=(
612615
stix_object["opencti_upsert_operations"]
613616
if "opencti_upsert_operations" in stix_object

client-python/pycti/entities/opencti_course_of_action.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -499,7 +499,8 @@ def create(self, **kwargs):
499499
update = kwargs.get("update", False)
500500
files = kwargs.get("files", None)
501501
files_markings = kwargs.get("filesMarkings", None)
502-
no_trigger_import = kwargs.get("noTriggerImport", False)
502+
no_trigger_import = kwargs.get("noTriggerImport", None)
503+
embedded = kwargs.get("embedded", None)
503504
upsert_operations = kwargs.get("upsert_operations", None)
504505

505506
if name is not None:
@@ -540,6 +541,7 @@ def create(self, **kwargs):
540541
"files": files,
541542
"filesMarkings": files_markings,
542543
"noTriggerImport": no_trigger_import,
544+
"embedded": embedded,
543545
"upsertOperations": upsert_operations,
544546
}
545547
},
@@ -673,7 +675,8 @@ def import_from_stix2(self, **kwargs):
673675
update=update,
674676
files=extras.get("files"),
675677
filesMarkings=extras.get("filesMarkings"),
676-
noTriggerImport=extras.get("noTriggerImport", False),
678+
noTriggerImport=extras.get("noTriggerImport", None),
679+
embedded=extras.get("embedded", None),
677680
upsert_operations=(
678681
stix_object["opencti_upsert_operations"]
679682
if "opencti_upsert_operations" in stix_object

0 commit comments

Comments
 (0)