@@ -981,7 +981,7 @@ def export_stix_relation(self, entity):
981981 stix_relation [CustomProperties .ID ] = entity ['id' ]
982982 return self .prepare_export (entity , stix_relation )
983983
984- def import_relationship (self , stix_relation , update = False ):
984+ def import_relationship (self , stix_relation , update = False , types = None ):
985985 # Check relation
986986 stix_relation_result = self .opencti .get_stix_relation_by_stix_id_key (stix_relation ['id' ])
987987 if stix_relation_result is not None :
@@ -1087,48 +1087,49 @@ def import_relationship(self, stix_relation, update=False):
10871087
10881088 # Add a corresponding report
10891089 # Extract date
1090- if 'description' in external_reference :
1091- matches = list (datefinder .find_dates (external_reference ['description' ]))
1092- else :
1093- matches = list (datefinder .find_dates (source_name ))
1094- if len (matches ) > 0 :
1095- published = matches [0 ].strftime ('%Y-%m-%dT%H:%M:%SZ' )
1096- else :
1097- published = datetime .datetime .today ().strftime ('%Y-%m-%dT%H:%M:%SZ' )
1098-
1099- title = source_name
1100- if 'external_id' in external_reference :
1101- title = title + ' (' + external_reference ['external_id' ] + ')'
1102- report_id = self .opencti .create_report_if_not_exists_from_external_reference (
1103- external_reference_id ,
1104- title ,
1105- external_reference ['description' ] if 'description' in external_reference else None ,
1106- published ,
1107- 'Threat Report' ,
1108- 2
1109- )['id' ]
1110-
1111- # Resolve author
1112- author_id = self .resolve_author (title )
1113- if author_id is not None :
1114- self .opencti .update_stix_domain_entity_created_by_ref (report_id , author_id )
1115-
1116- # Add marking
1117- if 'marking_tlpwhite' in self .mapping_cache :
1118- object_marking_ref_result = self .mapping_cache ['marking_tlpwhite' ]
1119- else :
1120- object_marking_ref_result = self .opencti .get_marking_definition_by_definition ('TLP' , 'TLP:WHITE' )
1121- if object_marking_ref_result is not None :
1122- self .mapping_cache ['marking_tlpwhite' ] = {'id' : object_marking_ref_result ['id' ]}
1123- self .opencti .add_marking_definition_if_not_exists (report_id , object_marking_ref_result ['id' ])
1090+ if types is None or 'report' in types :
1091+ if 'description' in external_reference :
1092+ matches = list (datefinder .find_dates (external_reference ['description' ]))
1093+ else :
1094+ matches = list (datefinder .find_dates (source_name ))
1095+ if len (matches ) > 0 :
1096+ published = matches [0 ].strftime ('%Y-%m-%dT%H:%M:%SZ' )
1097+ else :
1098+ published = datetime .datetime .today ().strftime ('%Y-%m-%dT%H:%M:%SZ' )
1099+
1100+ title = source_name
1101+ if 'external_id' in external_reference :
1102+ title = title + ' (' + external_reference ['external_id' ] + ')'
1103+ report_id = self .opencti .create_report_if_not_exists_from_external_reference (
1104+ external_reference_id ,
1105+ title ,
1106+ external_reference ['description' ] if 'description' in external_reference else None ,
1107+ published ,
1108+ 'Threat Report' ,
1109+ 2
1110+ )['id' ]
1111+
1112+ # Resolve author
1113+ author_id = self .resolve_author (title )
1114+ if author_id is not None :
1115+ self .opencti .update_stix_domain_entity_created_by_ref (report_id , author_id )
11241116
1125- # Add external reference to report
1126- self .opencti .add_external_reference_if_not_exists (report_id , external_reference_id )
1117+ # Add marking
1118+ if 'marking_tlpwhite' in self .mapping_cache :
1119+ object_marking_ref_result = self .mapping_cache ['marking_tlpwhite' ]
1120+ else :
1121+ object_marking_ref_result = self .opencti .get_marking_definition_by_definition ('TLP' , 'TLP:WHITE' )
1122+ if object_marking_ref_result is not None :
1123+ self .mapping_cache ['marking_tlpwhite' ] = {'id' : object_marking_ref_result ['id' ]}
1124+ self .opencti .add_marking_definition_if_not_exists (report_id , object_marking_ref_result ['id' ])
1125+
1126+ # Add external reference to report
1127+ self .opencti .add_external_reference_if_not_exists (report_id , external_reference_id )
11271128
1128- # Add refs to report
1129- self .opencti .add_object_ref_to_report_if_not_exists (report_id , source_id )
1130- self .opencti .add_object_ref_to_report_if_not_exists (report_id , target_id )
1131- self .opencti .add_object_ref_to_report_if_not_exists (report_id , stix_relation_result_id )
1129+ # Add refs to report
1130+ self .opencti .add_object_ref_to_report_if_not_exists (report_id , source_id )
1131+ self .opencti .add_object_ref_to_report_if_not_exists (report_id , target_id )
1132+ self .opencti .add_object_ref_to_report_if_not_exists (report_id , stix_relation_result_id )
11321133
11331134 def resolve_author (self , title ):
11341135 if 'fireeye' in title .lower () or 'mandiant' in title .lower ():
0 commit comments