Projects STRLCPY opencti Commits a5921c50
🤬
  • ■ ■ ■ ■ ■
    opencti-platform/opencti-front/src/components/Theme.d.ts
    skipped 14 lines
    15 15   background: Partial<ExtendedBackground>
    16 16   primary: Partial<ExtendedColor>
    17 17   error: Partial<ExtendedColor>
     18 + secondary: Partial<ExtendedColor>
    18 19  }
    19 20   
    20 21  interface ExtendedThemeOptions extends ThemeOptions {
    skipped 8 lines
  • ■ ■ ■ ■ ■ ■
    opencti-platform/opencti-front/src/private/components/data/ToolBar.js
    skipped 32 lines
    33 33   CancelOutlined,
    34 34   CenterFocusStrong,
    35 35   ClearOutlined,
    36  - CloseOutlined,
     36 + CloseOutlined, CopyAll,
    37 37   DeleteOutlined,
    38 38   LanguageOutlined,
    39 39   LinkOffOutlined,
    skipped 34 lines
    74 74  import { statusFieldStatusesSearchQuery } from '../common/form/StatusField';
    75 75  import { hexToRGB } from '../../../utils/Colors';
    76 76  import { externalReferencesSearchQuery } from '../analysis/ExternalReferences';
     77 +import {
     78 + stixCyberObservablesLinesSearchQuery,
     79 +} from '../observations/stix_cyber_observables/StixCyberObservablesLines';
     80 +import { convertFilters } from '../../../utils/ListParameters';
    77 81   
    78 82  const styles = (theme) => ({
    79 83   bottomNav: {
    skipped 156 lines
    236 240   }
    237 241  `;
    238 242   
     243 +const maxNumberOfObservablesToCopy = 4;
     244 + 
    239 245  class ToolBar extends Component {
    240 246   constructor(props) {
    241 247   super(props);
    skipped 59 lines
    301 307   
    302 308   handleClosePromote() {
    303 309   this.setState({ displayPromote: false });
     310 + }
     311 + 
     312 + handleCopy() {
     313 + let selectedValues = [];
     314 + if (this.props.selectAll) {
     315 + const observablesTypes = R.map((o) => o.id, this.props.filters.entity_type);
     316 + const filtering = R.map((o) => o, this.props.filters);
     317 + if (observablesTypes[0] === 'Stix-Cyber-Observable') {
     318 + delete filtering.entity_type;
     319 + }
     320 + 
     321 + fetchQuery(stixCyberObservablesLinesSearchQuery, { types: observablesTypes, search: this.props.search, filters: convertFilters(filtering) })
     322 + .toPromise()
     323 + .then((data) => {
     324 + const { stixCyberObservables } = data;
     325 + if (this.props.deSelectedElements === null) {
     326 + selectedValues = R.map(
     327 + (o) => o.node.observable_value,
     328 + stixCyberObservables.edges,
     329 + );
     330 + } else {
     331 + const observables = R.map((o) => [o.node.id, o.node.observable_value], stixCyberObservables.edges);
     332 + const deselectedIds = Object.keys(R.map((o) => o.id, this.props.deSelectedElements));
     333 + const selectedObservables = observables.filter((o) => !deselectedIds.includes(o[0]));
     334 + selectedValues = R.map(
     335 + (o) => o[1],
     336 + selectedObservables,
     337 + );
     338 + }
     339 + const toBeCopied = selectedValues.join('\n');
     340 + navigator.clipboard.writeText(toBeCopied);
     341 + });
     342 + } else {
     343 + const selected = this.props.selectedElements;
     344 + selectedValues = R.map((o) => o.observable_value, R.values(selected || {}));
     345 + const toBeCopied = selectedValues.join('\n');
     346 + navigator.clipboard.writeText(toBeCopied);
     347 + }
    304 348   }
    305 349   
    306 350   handleOpenEnrichment() {
    skipped 938 lines
    1245 1289   );
    1246 1290   }}
    1247 1291   </UserContext.Consumer>
     1292 + <Tooltip title={numberOfSelectedElements > maxNumberOfObservablesToCopy ? t('Copy disabled: too many selected elements') : t('Copy')}>
     1293 + <span>
     1294 + <IconButton
     1295 + aria-label="copy"
     1296 + disabled={numberOfSelectedElements > maxNumberOfObservablesToCopy}
     1297 + onClick={this.handleCopy.bind(this)}
     1298 + color="primary"
     1299 + size="large"
     1300 + >
     1301 + <CopyAll />
     1302 + </IconButton>
     1303 + </span>
     1304 + </Tooltip>
    1248 1305   <Tooltip title={t('Enrichment')}>
    1249 1306   <span>
    1250 1307   <IconButton
    skipped 745 lines
  • ■ ■ ■ ■
    opencti-platform/opencti-front/src/schema/relay.schema.graphql
    skipped 1594 lines
    1595 1595   
    1596 1596  type ExternalReferenceConnection {
    1597 1597   pageInfo: PageInfo!
    1598  - edges: [ExternalReferenceEdge]
     1598 + edges: [ExternalReferenceEdge!]!
    1599 1599  }
    1600 1600   
    1601 1601  type ExternalReferenceEdge {
    skipped 6922 lines
  • ■ ■ ■ ■ ■ ■
    opencti-platform/opencti-front/src/utils/Localization.js
    skipped 469 lines
    470 470   'No enrichment connectors on this platform':
    471 471   'Ningún conector de enriquecimiento en esta plataforma',
    472 472   'Enrichment connectors': 'Conectores de enriquecimiento ',
     473 + 'Copy disabled: too many selected elements': 'Demasiados elementos seleccionados para copiar portapapeles',
    473 474   'Registered connectors': 'Conectores registrados',
    474 475   'The relations attached to selected entities will be copied to the merged entity.':
    475 476   'Las relaciones adjuntadas a las entidades seleccionadas serán copiadas a la entidad fusionada.',
    skipped 1600 lines
    2076 2077   'No enrichment connectors on this platform':
    2077 2078   "Aucun connecteur d'enrichissement sur cette plateforme",
    2078 2079   'Enrichment connectors': "Connecteurs d'enrichissement",
     2080 + 'Copy disabled: too many selected elements': 'Copie désactivée : trop d’éléments sélectionnés',
    2079 2081   'Registered connectors': 'Connecteurs enregistrés',
    2080 2082   'The relations attached to selected entities will be copied to the merged entity.':
    2081 2083   "Les relations attachées aux entités sélectionnées seront copiées sur l'entité fusionnée.",
    skipped 1547 lines
    3629 3631   'No enrichment connectors on this platform':
    3630 3632   '有効なエンリッチ用コネクタがありません',
    3631 3633   'Enrichment connectors': 'エンリッチ用コネクタ',
     3634 + 'Copy disabled: too many selected elements': 'コピー無効:選択した要素が多すぎます',
    3632 3635   'Registered connectors': '登録済みのコネクタ',
    3633 3636   'The relations attached to selected entities will be copied to the merged entity.':
    3634 3637   '選択されたエンティティに付属するリレーションは、マージされたエンティティにコピーされます。',
    skipped 1506 lines
    5141 5144   'Enabled import connectors': '已启用的导入连接器',
    5142 5145   'No enrichment connectors on this platform': '此平台上没有富化连接器',
    5143 5146   'Enrichment connectors': '富化连接器',
     5147 + 'Copy disabled: too many selected elements': '已禁用複製:所選元素過多',
    5144 5148   'Registered connectors': '已注册连接器',
    5145 5149   'The relations attached to selected entities will be copied to the merged entity.':
    5146 5150   '附加到选定实体的关系将复制到归并的实体中。',
    skipped 1369 lines
  • ■ ■ ■ ■
    opencti-platform/opencti-graphql/config/schema/opencti.graphql
    skipped 1535 lines
    1536 1536  }
    1537 1537  type ExternalReferenceConnection {
    1538 1538   pageInfo: PageInfo!
    1539  - edges: [ExternalReferenceEdge]
     1539 + edges: [ExternalReferenceEdge!]!
    1540 1540  }
    1541 1541  type ExternalReferenceEdge {
    1542 1542   cursor: String!
    skipped 9623 lines
  • ■ ■ ■ ■ ■ ■
    opencti-platform/opencti-graphql/src/generated/graphql.ts
    skipped 3712 lines
    3713 3713   
    3714 3714  export type ExternalReferenceConnection = {
    3715 3715   __typename?: 'ExternalReferenceConnection';
    3716  - edges?: Maybe<Array<Maybe<ExternalReferenceEdge>>>;
     3716 + edges: Array<ExternalReferenceEdge>;
    3717 3717   pageInfo: PageInfo;
    3718 3718  };
    3719 3719   
    skipped 15405 lines
    19125 19125   EventsOrdering: EventsOrdering;
    19126 19126   ExternalReference: ResolverTypeWrapper<Omit<ExternalReference, 'connectors' | 'exportFiles' | 'importFiles' | 'jobs' | 'pendingFiles'> & { connectors?: Maybe<Array<Maybe<ResolversTypes['Connector']>>>, exportFiles?: Maybe<ResolversTypes['FileConnection']>, importFiles?: Maybe<ResolversTypes['FileConnection']>, jobs?: Maybe<Array<Maybe<ResolversTypes['Work']>>>, pendingFiles?: Maybe<ResolversTypes['FileConnection']> }>;
    19127 19127   ExternalReferenceAddInput: ExternalReferenceAddInput;
    19128  - ExternalReferenceConnection: ResolverTypeWrapper<Omit<ExternalReferenceConnection, 'edges'> & { edges?: Maybe<Array<Maybe<ResolversTypes['ExternalReferenceEdge']>>> }>;
     19128 + ExternalReferenceConnection: ResolverTypeWrapper<Omit<ExternalReferenceConnection, 'edges'> & { edges: Array<ResolversTypes['ExternalReferenceEdge']> }>;
    19129 19129   ExternalReferenceEdge: ResolverTypeWrapper<Omit<ExternalReferenceEdge, 'node'> & { node: ResolversTypes['ExternalReference'] }>;
    19130 19130   ExternalReferenceEditMutations: ResolverTypeWrapper<Omit<ExternalReferenceEditMutations, 'askEnrichment' | 'contextClean' | 'contextPatch' | 'fieldPatch' | 'importPush' | 'relationDelete'> & { askEnrichment?: Maybe<ResolversTypes['Work']>, contextClean?: Maybe<ResolversTypes['ExternalReference']>, contextPatch?: Maybe<ResolversTypes['ExternalReference']>, fieldPatch?: Maybe<ResolversTypes['ExternalReference']>, importPush?: Maybe<ResolversTypes['File']>, relationDelete?: Maybe<ResolversTypes['ExternalReference']> }>;
    19131 19131   ExternalReferencesFilter: ExternalReferencesFilter;
    skipped 607 lines
    19739 19739   EventsFiltering: EventsFiltering;
    19740 19740   ExternalReference: Omit<ExternalReference, 'connectors' | 'exportFiles' | 'importFiles' | 'jobs' | 'pendingFiles'> & { connectors?: Maybe<Array<Maybe<ResolversParentTypes['Connector']>>>, exportFiles?: Maybe<ResolversParentTypes['FileConnection']>, importFiles?: Maybe<ResolversParentTypes['FileConnection']>, jobs?: Maybe<Array<Maybe<ResolversParentTypes['Work']>>>, pendingFiles?: Maybe<ResolversParentTypes['FileConnection']> };
    19741 19741   ExternalReferenceAddInput: ExternalReferenceAddInput;
    19742  - ExternalReferenceConnection: Omit<ExternalReferenceConnection, 'edges'> & { edges?: Maybe<Array<Maybe<ResolversParentTypes['ExternalReferenceEdge']>>> };
     19742 + ExternalReferenceConnection: Omit<ExternalReferenceConnection, 'edges'> & { edges: Array<ResolversParentTypes['ExternalReferenceEdge']> };
    19743 19743   ExternalReferenceEdge: Omit<ExternalReferenceEdge, 'node'> & { node: ResolversParentTypes['ExternalReference'] };
    19744 19744   ExternalReferenceEditMutations: Omit<ExternalReferenceEditMutations, 'askEnrichment' | 'contextClean' | 'contextPatch' | 'fieldPatch' | 'importPush' | 'relationDelete'> & { askEnrichment?: Maybe<ResolversParentTypes['Work']>, contextClean?: Maybe<ResolversParentTypes['ExternalReference']>, contextPatch?: Maybe<ResolversParentTypes['ExternalReference']>, fieldPatch?: Maybe<ResolversParentTypes['ExternalReference']>, importPush?: Maybe<ResolversParentTypes['File']>, relationDelete?: Maybe<ResolversParentTypes['ExternalReference']> };
    19745 19745   ExternalReferencesFiltering: ExternalReferencesFiltering;
    skipped 1633 lines
    21379 21379  }>;
    21380 21380   
    21381 21381  export type ExternalReferenceConnectionResolvers<ContextType = any, ParentType extends ResolversParentTypes['ExternalReferenceConnection'] = ResolversParentTypes['ExternalReferenceConnection']> = ResolversObject<{
    21382  - edges?: Resolver<Maybe<Array<Maybe<ResolversTypes['ExternalReferenceEdge']>>>, ParentType, ContextType>;
     21382 + edges?: Resolver<Array<ResolversTypes['ExternalReferenceEdge']>, ParentType, ContextType>;
    21383 21383   pageInfo?: Resolver<ResolversTypes['PageInfo'], ParentType, ContextType>;
    21384 21384   __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
    21385 21385  }>;
    skipped 4842 lines
Please wait...
Page is in error, reload to recover