diff --git a/opencti-platform/opencti-front/src/private/components/arsenal/Channels.js b/opencti-platform/opencti-front/src/private/components/arsenal/Channels.js
index bd84406597fa..242f53a06f4f 100644
--- a/opencti-platform/opencti-front/src/private/components/arsenal/Channels.js
+++ b/opencti-platform/opencti-front/src/private/components/arsenal/Channels.js
@@ -106,12 +106,17 @@ class Channels extends Component {
const dataColumns = {
name: {
label: 'Name',
- width: '35%',
+ width: '30%',
+ isSortable: true,
+ },
+ channel_types: {
+ label: 'Types',
+ width: '15%',
isSortable: true,
},
objectLabel: {
label: 'Labels',
- width: '25%',
+ width: '20%',
isSortable: false,
},
created: {
@@ -142,6 +147,7 @@ class Channels extends Component {
paginationOptions={paginationOptions}
numberOfElements={numberOfElements}
availableFilterKeys={[
+ 'channel_types',
'labelledBy',
'markedBy',
'created_start_date',
diff --git a/opencti-platform/opencti-front/src/private/components/arsenal/channels/ChannelLine.js b/opencti-platform/opencti-front/src/private/components/arsenal/channels/ChannelLine.js
index 625a468a32ac..f29e3e983e07 100644
--- a/opencti-platform/opencti-front/src/private/components/arsenal/channels/ChannelLine.js
+++ b/opencti-platform/opencti-front/src/private/components/arsenal/channels/ChannelLine.js
@@ -66,6 +66,12 @@ class ChannelLineComponent extends Component {
>
{node.name}
+
+ {node.channel_types.join(', ')}
+
+
+
+
({
const directFilters = [
'report_types',
+ 'channel_types',
'sightedBy',
'container_type',
'toSightingId',
@@ -849,6 +850,33 @@ class Filters extends Component {
});
});
break;
+ case 'channel_types':
+ fetchQuery(attributesSearchQuery, {
+ attributeName: 'channel_types',
+ search: event.target.value !== 0 ? event.target.value : '',
+ first: 10,
+ })
+ .toPromise()
+ .then((data) => {
+ const channelTypesEntities = R.pipe(
+ R.pathOr([], ['runtimeAttributes', 'edges']),
+ R.map((n) => ({
+ label: t(n.node.value),
+ value: n.node.value,
+ type: 'attribute',
+ })),
+ )(data);
+ this.setState({
+ entities: {
+ ...this.state.entities,
+ channel_types: R.union(
+ channelTypesEntities,
+ this.state.entities.channel_types,
+ ),
+ },
+ });
+ });
+ break;
case 'entity_type':
// eslint-disable-next-line no-case-declarations
let entitiesTypes = [];
diff --git a/opencti-platform/opencti-front/src/utils/Localization.js b/opencti-platform/opencti-front/src/utils/Localization.js
index 7c0080f98c1f..1a83566d4a7a 100644
--- a/opencti-platform/opencti-front/src/utils/Localization.js
+++ b/opencti-platform/opencti-front/src/utils/Localization.js
@@ -1466,6 +1466,7 @@ const i18n = {
filter_containedBy: 'Contenedor',
filter_x_opencti_workflow_id: 'Estado',
filter_report_types: 'Tipo de informe',
+ filter_channel_types: 'Tipo de canal',
filter_confidence_gt: 'Confianza superior a',
filter_published_start_date: 'Publicado después de',
filter_published_end_date: 'Publicado antes de',
@@ -2974,6 +2975,7 @@ const i18n = {
filter_containedBy: 'Conteneur',
filter_x_opencti_workflow_id: 'Statut',
filter_report_types: 'Type de rapport',
+ filter_channel_types: 'Type de canal',
filter_confidence_gt: 'Confiance supérieure à',
filter_published_start_date: 'Publié après',
filter_published_end_date: 'Publié avant',
@@ -4378,6 +4380,7 @@ const i18n = {
filter_containedBy: '包含',
filter_x_opencti_workflow_id: '状态',
filter_report_types: '报告类型',
+ filter_channel_types: '渠道类型',
filter_confidence_gt: '置信度高于',
filter_published_start_date: '发布开始日期',
filter_published_end_date: '发布结束日期',
@@ -4678,6 +4681,7 @@ const i18n = {
filter_confidence_gt: 'Confidence greater than',
filter_x_opencti_workflow_id: 'Status',
filter_report_types: 'Report type',
+ filter_channel_types: 'Channel type',
filter_published_start_date: 'Published after',
filter_published_end_date: 'Published before',
filter_created_start_date: 'Created after',