All Downloads are FREE. Search and download functionalities are using the official Maven repository.

web-interface.assets.b6fe2bb5-346.cc290ec7e7d4598224b7.js.map Maven / Gradle / Ivy

There is a newer version: 6.0.1
Show newest version
{"version":3,"file":"b6fe2bb5-346.cc290ec7e7d4598224b7.js","mappings":"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","sources":["webpack://graylog-web-interface/./src/components/support/SmallSupportLink.tsx","webpack://graylog-web-interface/./src/components/configurations/TimeRangeOptionsForm.jsx","webpack://graylog-web-interface/./src/components/configurations/TimeRangeOptionsSummary.jsx","webpack://graylog-web-interface/./src/components/configurations/SearchesConfig.jsx","webpack://graylog-web-interface/./src/components/configurations/MessageProcessorsConfig.jsx","webpack://graylog-web-interface/./src/components/configurations/SidecarConfig.jsx","webpack://graylog-web-interface/./src/components/configurations/EventsConfig.jsx","webpack://graylog-web-interface/./src/components/configurations/UrlWhiteListConfig.tsx","webpack://graylog-web-interface/./src/components/configurations/PermissionsConfig.tsx","webpack://graylog-web-interface/./src/components/maps/configurations/GeoIpResolverConfig.tsx","webpack://graylog-web-interface/./src/components/maps/configurations/index.ts","webpack://graylog-web-interface/./src/pages/configurations/ConfigletRow.tsx","webpack://graylog-web-interface/./src/pages/configurations/ConfigletContainer.tsx","webpack://graylog-web-interface/./src/pages/configurations/PluginConfigRows.tsx","webpack://graylog-web-interface/./src/components/configurations/decorators/StreamSelect.tsx","webpack://graylog-web-interface/./src/components/configurations/decorators/FormatDecorator.tsx","webpack://graylog-web-interface/./src/components/configurations/decorators/DecoratorsConfigUpdate.tsx","webpack://graylog-web-interface/./src/components/configurations/decorators/DecoratorsUpdater.ts","webpack://graylog-web-interface/./src/components/configurations/DecoratorsConfig.tsx","webpack://graylog-web-interface/./src/pages/ConfigurationsPage.tsx"],"sourcesContent":["/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Icon } from 'components/common';\n\ntype Props = {\n  children: React.ReactNode,\n  className?: string,\n};\n\nconst Description = styled.div`\n  display: inline-flex;\n  justify-content: center;\n  align-items: center;\n`;\n\nconst IconStack = styled.div(({ theme }) => css`\n  position: relative;\n  min-width: 2.5em;\n  \n  .fa-stack-1x {\n    color: ${theme.colors.global.textAlt};\n  }\n  \n  .fa-stack-2x {\n    color: ${theme.colors.global.textDefault};\n  }\n`);\n\nconst Content = styled.p`\n  font-weight: bold;\n  margin: 0;\n`;\n\nconst SmallSupportLink = ({ children, className }: Props) => {\n  return (\n    \n      \n        \n        \n      \n\n      \n        {children}\n      \n    \n  );\n};\n\nSmallSupportLink.propTypes = {\n  children: PropTypes.node.isRequired,\n  className: PropTypes.string,\n};\n\nSmallSupportLink.defaultProps = {\n  className: undefined,\n};\n\nexport default SmallSupportLink;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { Row, Col, Button } from 'components/bootstrap';\nimport { Icon } from 'components/common';\nimport ISODurationUtils from 'util/ISODurationUtils';\nimport ObjectUtils from 'util/ObjectUtils';\n\n/**\n * Expects `this.props.options` to be an array of period/description objects. `[{period: 'PT1S', description: 'yo'}]`\n */\nclass TimeRangeOptionsForm extends React.Component {\n  static propTypes = {\n    options: PropTypes.array,\n    title: PropTypes.string.isRequired,\n    help: PropTypes.any.isRequired,\n    addButtonTitle: PropTypes.string,\n    update: PropTypes.func.isRequired,\n    validator: PropTypes.func,\n  };\n\n  static defaultProps = {\n    options: [],\n    addButtonTitle: 'Add option',\n    validator: () => true,\n  };\n\n  _update = (options) => {\n    this.props.update(options);\n  };\n\n  _onAdd = () => {\n    const options = ObjectUtils.clone(this.props.options);\n\n    if (options) {\n      options.push({ period: '', description: '' });\n      this._update(options);\n    }\n  };\n\n  _onRemove = (removedIdx) => {\n    return () => {\n      const options = ObjectUtils.clone(this.props.options);\n\n      // Remove element at index\n      options.splice(removedIdx, 1);\n\n      this._update(options);\n    };\n  };\n\n  _onChange = (changedIdx, field) => {\n    return (e) => {\n      const options = ObjectUtils.clone(this.props.options);\n\n      options.forEach((o, idx) => {\n        if (idx === changedIdx) {\n          let { value } = e.target;\n\n          if (field === 'period') {\n            value = value.toUpperCase();\n\n            if (!value.startsWith('P')) {\n              value = `P${value}`;\n            }\n          }\n\n          options[idx][field] = value;\n        }\n      });\n\n      this._update(options);\n    };\n  };\n\n  _buildTimeRangeOptions = () => {\n    return this.props.options.map((option, idx) => {\n      const { period } = option;\n      const { description } = option;\n      const errorStyle = ISODurationUtils.durationStyle(period, this.props.validator, 'has-error');\n\n      return (\n        
\n \n \n
\n \n \n {ISODurationUtils.formatDuration(period, this.props.validator)}\n \n
\n \n \n
\n \n \n \n \n
\n \n
\n
\n );\n });\n };\n\n render() {\n return (\n
\n \n {this.props.help}\n
\n {this._buildTimeRangeOptions()}\n
\n \n
\n );\n }\n}\n\nexport default TimeRangeOptionsForm;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nclass TimeRangeOptionsSummary extends React.Component {\n static propTypes = {\n options: PropTypes.object.isRequired,\n };\n\n render() {\n let timerangeOptionsSummary = null;\n\n if (this.props.options) {\n timerangeOptionsSummary = Object.keys(this.props.options).map((key, idx) => {\n return (\n \n
{key}
\n
{this.props.options[key]}
\n
\n );\n });\n }\n\n return (\n
\n {timerangeOptionsSummary}\n
\n );\n }\n}\n\nexport default TimeRangeOptionsSummary;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React, { createRef } from 'react';\nimport moment from 'moment';\n\nimport { Button, Row, Col, BootstrapModalForm, Input } from 'components/bootstrap';\nimport { IfPermitted, ISODurationInput } from 'components/common';\nimport ObjectUtils from 'util/ObjectUtils';\n\nimport 'moment-duration-format';\n\nimport TimeRangeOptionsForm from './TimeRangeOptionsForm';\nimport TimeRangeOptionsSummary from './TimeRangeOptionsSummary';\n\nfunction _queryTimeRangeLimitValidator(milliseconds) {\n return milliseconds >= 1;\n}\n\nfunction _relativeTimeRangeValidator(milliseconds, duration) {\n return milliseconds >= 1 || duration === 'PT0S';\n}\n\nfunction _surroundingTimeRangeValidator(milliseconds) {\n return milliseconds >= 1;\n}\n\nfunction _splitStringList(stringList) {\n return stringList.split(',').map((f) => f.trim()).filter((f) => f.length > 0);\n}\n\nclass SearchesConfig extends React.Component {\n static propTypes = {\n config: PropTypes.shape({\n query_time_range_limit: PropTypes.string,\n relative_timerange_options: PropTypes.objectOf(PropTypes.string),\n surrounding_timerange_options: PropTypes.objectOf(PropTypes.string),\n surrounding_filter_fields: PropTypes.arrayOf(PropTypes.string),\n analysis_disabled_fields: PropTypes.arrayOf(PropTypes.string),\n }).isRequired,\n updateConfig: PropTypes.func.isRequired,\n };\n\n constructor(props) {\n super(props);\n\n this.searchesConfigModal = createRef();\n\n const { config } = props;\n\n const queryTimeRangeLimit = config?.query_time_range_limit;\n const relativeTimerangeOptions = config?.relative_timerange_options;\n const surroundingTimerangeOptions = config?.surrounding_timerange_options;\n const surroundingFilterFields = config?.surrounding_filter_fields;\n const analysisDisabledFields = config?.analysis_disabled_fields;\n\n this.state = {\n config: {\n query_time_range_limit: queryTimeRangeLimit,\n relative_timerange_options: relativeTimerangeOptions,\n surrounding_timerange_options: surroundingTimerangeOptions,\n surrounding_filter_fields: surroundingFilterFields,\n analysis_disabled_fields: analysisDisabledFields,\n },\n limitEnabled: moment.duration(queryTimeRangeLimit).asMilliseconds() > 0,\n relativeTimeRangeOptionsUpdate: undefined,\n surroundingTimeRangeOptionsUpdate: undefined,\n };\n\n this.defaultState = { ...this.state };\n }\n\n _onUpdate = (field) => {\n return (newOptions) => {\n const { config } = this.state;\n const update = ObjectUtils.clone(config);\n\n update[field] = newOptions;\n\n this.setState({ config: update });\n };\n };\n\n _onRelativeTimeRangeOptionsUpdate = (data) => {\n this.setState({ relativeTimeRangeOptionsUpdate: data });\n };\n\n _onSurroundingTimeRangeOptionsUpdate = (data) => {\n this.setState({ surroundingTimeRangeOptionsUpdate: data });\n };\n\n _onFilterFieldsUpdate = (e) => {\n this.setState({ surroundingFilterFields: e.target.value });\n };\n\n _onAnalysisDisabledFieldsUpdate = (e) => {\n this.setState({ analysisDisabledFields: e.target.value });\n };\n\n _onChecked = () => {\n const { config: origConfig, limitEnabled } = this.state;\n const config = ObjectUtils.clone(origConfig);\n\n if (limitEnabled) {\n // If currently enabled, disable by setting the limit to 0 seconds.\n config.query_time_range_limit = 'PT0S';\n } else {\n // If currently not enabled, set a default of 30 days.\n config.query_time_range_limit = 'P30D';\n }\n\n this.setState({ config: config, limitEnabled: !limitEnabled });\n };\n\n _saveConfig = () => {\n const { updateConfig } = this.props;\n const { analysisDisabledFields, config, relativeTimeRangeOptionsUpdate, surroundingTimeRangeOptionsUpdate, surroundingFilterFields } = this.state;\n const update = ObjectUtils.clone(config);\n\n if (relativeTimeRangeOptionsUpdate) {\n update.relative_timerange_options = {};\n\n relativeTimeRangeOptionsUpdate.forEach((entry) => {\n update.relative_timerange_options[entry.period] = entry.description;\n });\n\n this.setState({ relativeTimeRangeOptionsUpdate: undefined });\n }\n\n if (surroundingTimeRangeOptionsUpdate) {\n update.surrounding_timerange_options = {};\n\n surroundingTimeRangeOptionsUpdate.forEach((entry) => {\n update.surrounding_timerange_options[entry.period] = entry.description;\n });\n\n this.setState({ surroundingTimeRangeOptionsUpdate: undefined });\n }\n\n // Make sure to update filter fields\n if (surroundingFilterFields) {\n update.surrounding_filter_fields = _splitStringList(surroundingFilterFields);\n this.setState({ surroundingFilterFields: undefined });\n }\n\n if (analysisDisabledFields) {\n update.analysis_disabled_fields = _splitStringList(analysisDisabledFields);\n this.setState({ analysisDisabledFields: undefined });\n }\n\n updateConfig(update).then(() => {\n this._closeModal();\n });\n };\n\n _resetConfig = () => {\n // Reset to initial state when the modal is closed without saving.\n this.setState(this.defaultState);\n };\n\n _openModal = () => {\n this.searchesConfigModal.current.open();\n };\n\n _closeModal = () => {\n this.searchesConfigModal.current.close();\n };\n\n render() {\n const _buildTimeRangeOptions = (options) => {\n return Object.keys(options).map((key) => {\n return { period: key, description: options[key] };\n });\n };\n\n const {\n config,\n limitEnabled,\n surroundingTimeRangeOptionsUpdate,\n surroundingFilterFields,\n relativeTimeRangeOptionsUpdate,\n analysisDisabledFields,\n } = this.state;\n const duration = moment.duration(config.query_time_range_limit);\n const limit = limitEnabled ? `${config.query_time_range_limit} (${duration.humanize()})` : 'disabled';\n\n let filterFields;\n let filterFieldsString;\n\n if (config.surrounding_filter_fields) {\n filterFields = config.surrounding_filter_fields.map((f) =>
  • {f}
  • );\n filterFieldsString = config.surrounding_filter_fields.join(', ');\n }\n\n let analysisDisabledFieldsListItems;\n let analysisDisabledFieldsString;\n\n if (config.analysis_disabled_fields) {\n analysisDisabledFieldsListItems = config.analysis_disabled_fields.map((f) =>
  • {f}
  • );\n analysisDisabledFieldsString = config.analysis_disabled_fields.join(', ');\n }\n\n return (\n
    \n

    Search Configuration

    \n\n
    \n
    Query time range limit
    \n
    {limit}
    \n
    The maximum time users can query data in the past. This prevents users from accidentally creating queries which\n span a lot of data and would need a long time and many resources to complete (if at all).\n
    \n
    \n\n \n \n Relative time range options\n \n \n \n Surrounding time range options\n \n \n \n\n Surrounding search filter fields\n
      \n {filterFields}\n
    \n\n UI analysis disabled for fields\n
      \n {analysisDisabledFieldsListItems}\n
    \n\n \n\n
    \n \n \n \n\n \n
    \n \n \n {limitEnabled && (\n \n )}\n Configure the available options for the relative time range selector as ISO8601 duration} />\n Configure the available options for the surrounding time range selector as ISO8601 duration} />\n\n \n\n \n
    \n
    \n
    \n );\n }\n}\n\nexport default SearchesConfig;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\n// eslint-disable-next-line no-restricted-imports\nimport createReactClass from 'create-react-class';\nimport naturalSort from 'javascript-natural-sort';\n\nimport { Button, Alert, Table } from 'components/bootstrap';\nimport { IfPermitted, SortableList } from 'components/common';\nimport BootstrapModalForm from 'components/bootstrap/BootstrapModalForm';\nimport ObjectUtils from 'util/ObjectUtils';\n\nconst MessageProcessorsConfig = createReactClass({\n displayName: 'MessageProcessorsConfig',\n\n propTypes: {\n config: PropTypes.object,\n updateConfig: PropTypes.func.isRequired,\n },\n\n getDefaultProps() {\n return {\n config: {\n disabled_processors: [],\n processor_order: [],\n },\n };\n },\n\n getInitialState() {\n const { config } = this.props;\n\n return {\n config: {\n disabled_processors: config.disabled_processors,\n processor_order: config.processor_order,\n },\n };\n },\n\n inputs: {},\n\n _openModal() {\n this.configModal.open();\n },\n\n _closeModal() {\n this.configModal.close();\n },\n\n _saveConfig() {\n const { updateConfig } = this.props;\n const { config } = this.state;\n\n if (!this._hasNoActiveProcessor()) {\n updateConfig(config).then(() => {\n this._closeModal();\n });\n }\n },\n\n _resetConfig() {\n // Reset to initial state when the modal is closed without saving.\n this.setState(this.getInitialState());\n },\n\n _updateSorting(newSorting) {\n const { config } = this.state;\n const update = ObjectUtils.clone(config);\n\n update.processor_order = newSorting.map((item) => {\n return { class_name: item.id, name: item.title };\n });\n\n this.setState({ config: update });\n },\n\n _toggleStatus(className) {\n return () => {\n const { config } = this.state;\n const disabledProcessors = config.disabled_processors;\n const update = ObjectUtils.clone(config);\n const { checked } = this.inputs[className];\n\n if (checked) {\n update.disabled_processors = disabledProcessors.filter((p) => p !== className);\n } else if (disabledProcessors.indexOf(className) === -1) {\n update.disabled_processors.push(className);\n }\n\n this.setState({ config: update });\n };\n },\n\n _hasNoActiveProcessor() {\n const { config } = this.state;\n\n return config.disabled_processors.length >= config.processor_order.length;\n },\n\n _noActiveProcessorWarning() {\n if (this._hasNoActiveProcessor()) {\n return (\n \n ERROR: No active message processor!\n \n );\n }\n\n return null;\n },\n\n _summary() {\n const { config } = this.state;\n\n return config.processor_order.map((processor, idx) => {\n const status = config.disabled_processors.filter((p) => p === processor.class_name).length > 0 ? 'disabled' : 'active';\n\n return (\n // eslint-disable-next-line react/no-array-index-key\n \n {idx + 1}\n {processor.name}\n {status}\n \n );\n });\n },\n\n _sortableItems() {\n const { config } = this.state;\n\n return config.processor_order.map((processor) => {\n return { id: processor.class_name, title: processor.name };\n });\n },\n\n _statusForm() {\n const { config } = this.state;\n\n return ObjectUtils.clone(config.processor_order).sort((a, b) => naturalSort(a.name, b.name)).map((processor, idx) => {\n const enabled = config.disabled_processors.filter((p) => p === processor.class_name).length < 1;\n\n return (\n // eslint-disable-next-line react/no-array-index-key\n \n {processor.name}\n \n { this.inputs[processor.class_name] = elem; }}\n type=\"checkbox\"\n checked={enabled}\n onChange={this._toggleStatus(processor.class_name)} />\n \n \n );\n });\n },\n\n render() {\n return (\n
    \n

    Message Processors Configuration

    \n

    The following message processors are executed in order. Disabled processors will be skipped.

    \n\n \n \n \n \n \n \n \n \n \n {this._summary()}\n \n
    #ProcessorStatus
    \n\n \n \n \n\n { this.configModal = configModal; }}\n title=\"Update Message Processors Configuration\"\n onSubmitForm={this._saveConfig}\n onModalClose={this._resetConfig}\n submitButtonText=\"Save\">\n

    Order

    \n

    Use drag and drop to change the execution order of the message processors.

    \n \n\n

    Status

    \n

    Change the checkboxes to change the status of a message processor.

    \n \n \n \n \n \n \n \n \n {this._statusForm()}\n \n
    ProcessorEnabled
    \n {this._noActiveProcessorWarning()}\n
    \n
    \n );\n },\n});\n\nexport default MessageProcessorsConfig;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport createReactClass from 'create-react-class';\n\nimport { Button, BootstrapModalForm, Input } from 'components/bootstrap';\nimport { IfPermitted, ISODurationInput } from 'components/common';\nimport ObjectUtils from 'util/ObjectUtils';\nimport ISODurationUtils from 'util/ISODurationUtils';\nimport FormUtils from 'util/FormsUtils';\nimport StringUtils from 'util/StringUtils';\n\nconst SidecarConfig = createReactClass({\n displayName: 'SidecarConfig',\n\n propTypes: {\n config: PropTypes.shape({\n sidecar_expiration_threshold: PropTypes.string,\n sidecar_inactive_threshold: PropTypes.string,\n sidecar_update_interval: PropTypes.string,\n sidecar_send_status: PropTypes.bool,\n sidecar_configuration_override: PropTypes.bool,\n }),\n updateConfig: PropTypes.func.isRequired,\n },\n\n getDefaultProps() {\n return {\n config: {\n sidecar_expiration_threshold: 'P14D',\n sidecar_inactive_threshold: 'PT1M',\n sidecar_update_interval: 'PT30S',\n sidecar_send_status: true,\n sidecar_configuration_override: false,\n },\n };\n },\n\n getInitialState() {\n return {\n config: ObjectUtils.clone(this.props.config),\n };\n },\n\n UNSAFE_componentWillReceiveProps(newProps) {\n this.setState({ config: ObjectUtils.clone(newProps.config) });\n },\n\n _openModal() {\n this.refs.configModal.open();\n },\n\n _closeModal() {\n this.refs.configModal.close();\n },\n\n _resetConfig() {\n // Reset to initial state when the modal is closed without saving.\n this.setState(this.getInitialState());\n },\n\n _saveConfig() {\n this.props.updateConfig(this.state.config).then(() => {\n this._closeModal();\n });\n },\n\n _onUpdate(field) {\n return (value) => {\n const update = ObjectUtils.clone(this.state.config);\n\n if (typeof value === 'object') {\n update[field] = FormUtils.getValueFromInput(value.target);\n } else {\n update[field] = value;\n }\n\n this.setState({ config: update });\n };\n },\n\n _inactiveThresholdValidator(milliseconds) {\n return milliseconds >= 1000;\n },\n\n _expirationThresholdValidator(milliseconds) {\n return milliseconds >= 60 * 1000;\n },\n\n _updateIntervalValidator(milliseconds) {\n const inactiveMilliseconds = this._durationMilliseconds(this.state.config.sidecar_inactive_threshold);\n const expirationMilliseconds = this._durationMilliseconds(this.state.config.sidecar_expiration_threshold);\n\n return milliseconds >= 1000 && milliseconds < inactiveMilliseconds && milliseconds < expirationMilliseconds;\n },\n\n _durationMilliseconds(duration) {\n return ISODurationUtils.isValidDuration(duration, (milliseconds) => { return milliseconds; });\n },\n\n render() {\n return (\n
    \n

    Sidecars System

    \n\n
    \n
    Inactive threshold:
    \n
    {this.state.config.sidecar_inactive_threshold}
    \n
    Expiration threshold:
    \n
    {this.state.config.sidecar_expiration_threshold}
    \n
    Update interval:
    \n
    {this.state.config.sidecar_update_interval}
    \n
    Send status:
    \n
    {StringUtils.capitalizeFirstLetter(this.state.config.sidecar_send_status.toString())}
    \n
    Override configuration:
    \n
    {StringUtils.capitalizeFirstLetter(this.state.config.sidecar_configuration_override.toString())}
    \n
    \n\n \n \n \n\n \n
    \n \n\n \n \n
    \n \n \n
    \n
    \n );\n },\n});\n\nexport default SidecarConfig;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport createReactClass from 'create-react-class';\nimport lodash from 'lodash';\nimport moment from 'moment';\n\nimport { Button, FormGroup, HelpBlock, BootstrapModalForm } from 'components/bootstrap';\nimport { IfPermitted, TimeUnitInput } from 'components/common';\nimport FormUtils from 'util/FormsUtils';\nimport Input from 'components/bootstrap/Input';\nimport { extractDurationAndUnit } from 'components/common/TimeUnitInput';\n\nconst TIME_UNITS = ['HOURS', 'MINUTES', 'SECONDS'];\nconst DEFAULT_CATCH_UP_WINDOW = 3600000;\n\nconst EventsConfig = createReactClass({\n displayName: 'EventsConfig',\n\n propTypes: {\n config: PropTypes.shape({\n events_search_timeout: PropTypes.number,\n events_notification_retry_period: PropTypes.number,\n events_notification_default_backlog: PropTypes.number,\n events_catchup_window: PropTypes.number,\n }),\n updateConfig: PropTypes.func.isRequired,\n },\n\n getDefaultProps() {\n return {\n config: {\n events_search_timeout: 60000,\n events_notification_retry_period: 300000,\n events_notification_default_backlog: 50,\n events_catchup_window: DEFAULT_CATCH_UP_WINDOW,\n },\n };\n },\n\n getInitialState() {\n const { config } = this.props;\n\n return {\n config: config,\n };\n },\n\n UNSAFE_componentWillReceiveProps(newProps) {\n this.setState({ config: newProps.config });\n },\n\n _openModal() {\n this.modal.open();\n },\n\n _closeModal() {\n this.modal.close();\n },\n\n _resetConfig() {\n // Reset to initial state when the modal is closed without saving.\n this.setState(this.getInitialState());\n },\n\n _saveConfig() {\n const { updateConfig } = this.props;\n const { config } = this.state;\n\n updateConfig(config).then(() => {\n this._closeModal();\n });\n },\n\n _propagateChanges(key, value) {\n const { config } = this.state;\n const nextConfig = lodash.cloneDeep(config);\n\n nextConfig[key] = value;\n this.setState({ config: nextConfig });\n },\n\n _onSearchTimeoutUpdate(nextValue, nextUnit, enabled) {\n const durationInMs = enabled ? moment.duration(nextValue, nextUnit).asMilliseconds() : 0;\n\n if (this._searchTimeoutValidator(durationInMs)) {\n this._propagateChanges('events_search_timeout', durationInMs);\n }\n },\n\n _onRetryPeriodUpdate(nextValue, nextUnit, enabled) {\n const durationInMs = enabled ? moment.duration(nextValue, nextUnit).asMilliseconds() : 0;\n\n if (this._notificationsRetryValidator(durationInMs)) {\n this._propagateChanges('events_notification_retry_period', durationInMs);\n }\n },\n\n _searchTimeoutValidator(milliseconds) {\n return milliseconds >= 1000;\n },\n\n _notificationsRetryValidator(milliseconds) {\n return milliseconds >= 0;\n },\n\n _onBacklogUpdate(event) {\n const value = FormUtils.getValueFromInput(event.target);\n\n this._propagateChanges('events_notification_default_backlog', value);\n },\n\n _onCatchUpWindowUpdate(nextValue, nextUnit, nextEnabled) {\n const { config } = this.state;\n\n if (config.events_catchup_window === 0 && nextEnabled) {\n this._propagateChanges('events_catchup_window', DEFAULT_CATCH_UP_WINDOW);\n\n return;\n }\n\n const catchupWindowinMs = nextEnabled ? moment.duration(nextValue, nextUnit).asMilliseconds() : 0;\n\n this._propagateChanges('events_catchup_window', catchupWindowinMs);\n },\n\n _titleCase(str) {\n return lodash.capitalize(str);\n },\n\n render() {\n const { config } = this.state;\n const eventsSearchTimeout = extractDurationAndUnit(config.events_search_timeout, TIME_UNITS);\n const eventsNotificationRetryPeriod = extractDurationAndUnit(config.events_notification_retry_period, TIME_UNITS);\n const eventsCatchupWindow = extractDurationAndUnit(config.events_catchup_window, TIME_UNITS);\n const eventsNotificationDefaultBacklog = config.events_notification_default_backlog;\n\n return (\n
    \n

    Events System

    \n\n
    \n
    Search Timeout:
    \n
    {eventsSearchTimeout.duration} {this._titleCase(eventsSearchTimeout.unit)}
    \n
    Notification Retry:
    \n
    {eventsNotificationRetryPeriod.duration} {this._titleCase(eventsNotificationRetryPeriod.unit)}
    \n
    Notification Backlog:
    \n
    {eventsNotificationDefaultBacklog}
    \n
    Catch Up Window:
    \n
    {eventsCatchupWindow.duration > 0 ? eventsCatchupWindow.duration : 'disabled'} {eventsCatchupWindow.duration > 0 ? this._titleCase(eventsCatchupWindow.unit) : ''}
    \n
    \n\n \n \n \n\n { this.modal = modal; }}\n title=\"Update Events System Configuration\"\n onSubmitForm={this._saveConfig}\n onModalClose={this._resetConfig}\n submitButtonText=\"Save\">\n
    \n \n \n \n Amount of time after which an Elasticsearch query is interrupted. (Minimum timeout is 1s)\n \n \n \n \n \n Amount of time after which a failed notification is resend. (Minimum is 0 or immediate retry)\n \n \n \n \n 0}\n units={TIME_UNITS} />\n If Event processor execution is behind schedule, queries on older data will be run with this window size to speed up processing.\n (If the "search within the last" setting of an event definiton is greater, this setting will be ignored)\n \n \n
    \n
    \n
    \n );\n },\n});\n\nexport default EventsConfig;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Button, Table } from 'components/bootstrap';\nimport { IfPermitted } from 'components/common';\nimport BootstrapModalForm from 'components/bootstrap/BootstrapModalForm';\nimport UrlWhiteListForm from 'components/configurations/UrlWhiteListForm';\nimport type { WhiteListConfig } from 'stores/configurations/ConfigurationsStore';\n\ntype State = {\n config: WhiteListConfig,\n isValid: boolean,\n};\n\ntype Props = {\n config: WhiteListConfig,\n updateConfig: (config: WhiteListConfig) => Promise,\n};\n\nclass UrlWhiteListConfig extends React.Component {\n private configModal: BootstrapModalForm | undefined | null;\n\n static propTypes = {\n config: PropTypes.object.isRequired,\n updateConfig: PropTypes.func.isRequired,\n };\n\n constructor(props: Props) {\n super(props);\n const { config } = this.props;\n\n this.state = {\n config,\n isValid: false,\n };\n }\n\n _summary = (): React.ReactElement<'tr'>[] => {\n const literal = 'literal';\n const { config: { entries } } = this.props;\n\n return entries.map((urlConfig, idx) => {\n return (\n \n {idx + 1}\n {urlConfig.title}\n {urlConfig.value}\n {urlConfig.type === literal ? 'Exact match' : 'Regex'}\n \n );\n });\n };\n\n _openModal = () => {\n if (this.configModal) {\n this.configModal.open();\n }\n };\n\n _closeModal = () => {\n if (this.configModal) {\n this.configModal.close();\n }\n };\n\n _saveConfig = () => {\n const { config, isValid } = this.state;\n const { updateConfig } = this.props;\n\n if (isValid) {\n updateConfig(config).then(() => {\n this._closeModal();\n });\n }\n };\n\n _update = (config: WhiteListConfig, isValid: boolean) => {\n const updatedState = { config, isValid };\n\n this.setState(updatedState);\n };\n\n _resetConfig = () => {\n const { config } = this.props;\n const updatedState = { ...this.state, config };\n\n this.setState(updatedState);\n };\n\n render() {\n const { config: { entries, disabled } } = this.props;\n const { isValid } = this.state;\n\n return (\n
    \n

    URL Whitelist Configuration {disabled ? (Disabled) : (Enabled)}

    \n

    \n When enabled, outgoing HTTP requests from Graylog servers, such as event notifications or HTTP-based data adapter requests, are validated against the whitelists configured here.\n Because the HTTP requests are made from the Graylog servers, they might be able to reach more sensitive systems than an external user would have access to, including AWS EC2 metadata, which can contain keys and other secrets, Elasticsearch and others.\n Whitelist administrative access is separate from data adapters and event notification configuration.\n

    \n \n \n \n \n \n \n \n \n \n \n {this._summary()}\n \n
    #TitleURLType
    \n \n \n \n { this.configModal = configModal; }}\n bsSize=\"lg\"\n title=\"Update Whitelist Configuration\"\n onSubmitForm={this._saveConfig}\n onModalClose={this._resetConfig}\n submitButtonDisabled={!isValid}\n submitButtonText=\"Save\">\n

    Whitelist URLs

    \n \n
    \n
    \n );\n }\n}\n\nexport default UrlWhiteListConfig;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport { useState } from 'react';\nimport type { DefaultTheme } from 'styled-components';\nimport styled, { css } from 'styled-components';\nimport { Form, Formik } from 'formik';\nimport type { PermissionsConfigType } from 'src/stores/configurations/ConfigurationsStore';\n\nimport { Button, Col, Modal, Row } from 'components/bootstrap';\nimport FormikInput from 'components/common/FormikInput';\nimport Spinner from 'components/common/Spinner';\nimport { InputDescription } from 'components/common';\n\ntype Props = {\n config: PermissionsConfigType,\n updateConfig: (config: PermissionsConfigType) => Promise,\n};\n\nconst StyledDefList = styled.dl.attrs({\n className: 'deflist',\n})(({ theme }: { theme: DefaultTheme }) => css`\n &&.deflist {\n dd {\n padding-left: ${theme.spacings.md};\n margin-left: 200px;\n }\n }\n`);\n\nconst LabelSpan = styled.span(({ theme }: { theme: DefaultTheme }) => css`\n margin-left: ${theme.spacings.sm};\n font-weight: bold;\n`);\n\nconst PermissionsConfig = ({ config, updateConfig }: Props) => {\n const [showModal, setShowModal] = useState(false);\n\n const _saveConfig = (values) => {\n updateConfig(values).then(() => {\n setShowModal(false);\n });\n };\n\n const _resetConfig = () => {\n setShowModal(false);\n };\n\n return (\n
    \n

    Permissions Config

    \n

    These settings can be used to control which entity sharing options are available.

    \n\n {!config ? : (\n <>\n \n
    Share with everyone:
    \n
    {config.allow_sharing_with_everyone ? 'Enabled' : 'Disabled'}
    \n
    Share with users:
    \n
    {config.allow_sharing_with_users ? 'Enabled' : 'Disabled'}
    \n
    \n\n

    \n \n

    \n\n \n \n\n {({ isSubmitting }) => {\n return (\n
    \n \n Configure Permissions\n \n\n \n
    \n \n \n Share with everyone\n )} />\n \n \n \n Share with users\n )} />\n \n \n\n \n
    \n
    \n\n \n \n \n \n
    \n );\n }}\n\n
    \n
    \n \n )}\n
    \n );\n};\n\nexport default PermissionsConfig;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React, { useEffect, useState } from 'react';\nimport { Field, Form, Formik } from 'formik';\n\nimport { IfPermitted, Select, TimeUnitInput } from 'components/common';\nimport { Button, Col, Input, Modal, Row } from 'components/bootstrap';\nimport FormikInput from 'components/common/FormikInput';\nimport { DocumentationLink } from 'components/support';\n\nexport type GeoVendorType = 'MAXMIND' | 'IPINFO'\nexport type TimeUnit = 'SECONDS' | 'MINUTES' | 'HOURS' | 'DAYS'\n\nexport type GeoIpConfigType = {\n enabled: boolean;\n enforce_graylog_schema: boolean;\n db_vendor_type: GeoVendorType;\n city_db_path: string;\n asn_db_path: string;\n refresh_interval_unit: TimeUnit;\n refresh_interval: number;\n}\n\nexport type OptionType = {\n value: string;\n label: string;\n}\n\ntype Props = {\n config: GeoIpConfigType,\n updateConfig: (config: GeoIpConfigType) => Promise,\n};\n\nconst defaultConfig: GeoIpConfigType = {\n enabled: false,\n enforce_graylog_schema: true,\n db_vendor_type: 'MAXMIND',\n city_db_path: '/etc/graylog/server/GeoLite2-City.mmdb',\n asn_db_path: '/etc/graylog/server/GeoLite2-ASN.mmdb',\n refresh_interval_unit: 'MINUTES',\n refresh_interval: 10,\n};\n\nconst GeoIpResolverConfig = ({ config = defaultConfig, updateConfig }: Props) => {\n const [showModal, setShowModal] = useState(false);\n const [curConfig, setCurConfig] = useState(() => {\n return { ...defaultConfig };\n });\n\n useEffect(() => {\n setCurConfig({ ...config });\n }, [config]);\n\n const resetConfig = () => {\n setCurConfig(config);\n setShowModal(false);\n };\n\n const handleSubmit = (values: GeoIpConfigType) => {\n return updateConfig(values)\n .then((value: GeoIpConfigType) => {\n if ('enabled' in value) {\n setShowModal(false);\n }\n });\n };\n\n const availableVendorTypes = (): OptionType[] => {\n return [\n { value: 'MAXMIND', label: 'MaxMind GeoIP' },\n { value: 'IPINFO', label: 'IPInfo Standard Location' },\n ];\n };\n\n const activeVendorType = (type: GeoVendorType) => {\n return availableVendorTypes().filter((t) => t.value === type)[0].label;\n };\n\n return (\n
    \n

    Geo-Location Processor

    \n\n

    \n The Geo-Location Processor plugin scans all messages for fields containing exclusively an\n IP address, and puts their geo-location information (coordinates, ISO country code, and city name) into\n different fields. Read more in the .\n

    \n\n
    \n
    Enabled:
    \n
    {config.enabled === true ? 'Yes' : 'No'}
    \n {config.enabled && (\n <>\n
    Enforce default Graylog schema:
    \n
    {config.enforce_graylog_schema === true ? 'Yes' : 'No'}
    \n
    Database vendor type:
    \n
    {activeVendorType(config.db_vendor_type)}
    \n
    City database path:
    \n
    {config.city_db_path}
    \n
    ASN database path:
    \n
    {config.asn_db_path}
    \n
    Database refresh interval:
    \n
    {config.refresh_interval} {config.refresh_interval_unit}
    \n \n )}\n
    \n\n \n \n \n \n \n {({ values, setFieldValue, isSubmitting }) => {\n return (\n
    \n \n Update Geo-Location Processor Configuration\n \n \n \n \n \n \n \n \n \n \n \n {() => (\n \n \n \n );\n};\n\nStreamSelect.propTypes = {\n onChange: PropTypes.func.isRequired,\n value: PropTypes.string.isRequired,\n streams: PropTypes.array.isRequired,\n};\n\nexport default StreamSelect;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\n\nimport DecoratorSummary from 'views/components/messagelist/decorators/DecoratorSummary';\nimport type { Decorator, DecoratorType } from 'views/components/messagelist/decorators/Types';\n\nconst formatDecorator = (\n decorator: Decorator,\n decorators: Array,\n decoratorTypes: { [key: string]: DecoratorType },\n updateFn?: (newDecorators: Array) => unknown,\n) => {\n const typeDefinition = decoratorTypes[decorator.type] || { requested_configuration: {}, name: `Unknown type: ${decorator.type}` } as DecoratorType;\n\n const onUpdate = updateFn\n ? (id: string, updatedDecorator: Decorator) => updateFn(decorators.map((curDecorator) => (curDecorator.id === id ? updatedDecorator : curDecorator)))\n : () => {};\n\n const onDelete = updateFn\n ? (deletedDecoratorId: string) => updateFn(decorators.filter(({ id }) => (id !== deletedDecoratorId)))\n : () => {};\n\n const { id, order } = decorator;\n\n return ({\n id,\n order,\n title: ,\n });\n};\n\nexport default formatDecorator;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React, { useCallback, useState } from 'react';\nimport { cloneDeep } from 'lodash';\n\nimport BootstrapModalWrapper from 'components/bootstrap/BootstrapModalWrapper';\nimport { Button, Modal } from 'components/bootstrap';\nimport { IfPermitted } from 'components/common';\nimport type { Stream } from 'stores/streams/StreamsStore';\nimport DecoratorList from 'views/components/messagelist/decorators/DecoratorList';\nimport AddDecoratorButton from 'views/components/messagelist/decorators/AddDecoratorButton';\nimport type { Decorator } from 'views/components/messagelist/decorators/Types';\n\nimport StreamSelect, { DEFAULT_SEARCH_ID, DEFAULT_STREAM_ID } from './StreamSelect';\nimport formatDecorator from './FormatDecorator';\n\ntype Props = {\n streams: Array,\n decorators: Array,\n types: { [key: string]: any },\n // eslint-disable-next-line react/require-default-props\n show?: boolean,\n onCancel: () => void,\n onSave: (newDecorators: Array) => unknown,\n};\n\nconst _updateOrder = (orderedDecorators, decorators, onChange) => {\n const newDecorators = cloneDeep(decorators);\n\n orderedDecorators.forEach((item, idx) => {\n const decorator = newDecorators.find((i) => i.id === item.id);\n\n if (decorator) {\n decorator.order = idx;\n }\n });\n\n onChange(newDecorators);\n};\n\nconst DecoratorsConfigUpdate = ({ streams, decorators, types, show = false, onCancel, onSave }: Props, modalRef: React.Ref) => {\n const [currentStream, setCurrentStream] = useState(DEFAULT_STREAM_ID);\n const [modifiedDecorators, setModifiedDecorators] = useState(decorators);\n const onCreate = useCallback(\n ({ stream, ...rest }) => setModifiedDecorators([...modifiedDecorators, { ...rest, stream: stream === DEFAULT_SEARCH_ID ? null : stream }]),\n [modifiedDecorators, setModifiedDecorators],\n );\n const onReorder = useCallback(\n (orderedDecorators) => _updateOrder(orderedDecorators, modifiedDecorators, setModifiedDecorators),\n [modifiedDecorators, setModifiedDecorators],\n );\n const onSubmit = useCallback(() => onSave(modifiedDecorators), [onSave, modifiedDecorators]);\n\n const currentDecorators = modifiedDecorators.filter((decorator) => (decorator.stream || DEFAULT_SEARCH_ID) === currentStream);\n const decoratorItems = currentDecorators\n .sort((d1, d2) => d1.order - d2.order)\n .map((decorator) => formatDecorator(decorator, modifiedDecorators, types, setModifiedDecorators));\n\n const nextOrder = currentDecorators.reduce((currentMax, decorator) => Math.max(currentMax, decorator.order), 0) + 1;\n\n const _onCancel = useCallback(() => {\n setModifiedDecorators(decorators);\n onCancel();\n }, [decorators, onCancel]);\n\n return (\n \n \n Update Default Decorators Configuration\n \n \n

    Select the stream for which you want to change the set of default decorators.

    \n \n\n \n

    Select the type to create a new decorator for this stream:

    \n \n
    \n\n

    Use drag and drop to change the execution order of the decorators.

    \n\n \n
    \n \n \n \n \n
    \n );\n};\n\nexport default React.forwardRef(DecoratorsConfigUpdate);\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport { difference, isEqual } from 'lodash';\n\nimport { DecoratorsActions } from 'stores/decorators/DecoratorsStore';\nimport type { Decorator } from 'views/components/messagelist/decorators/Types';\n\nconst DecoratorsUpdater = (newDecorators: Array, oldDecorators: Array) => {\n const newDecoratorIds: Array = newDecorators.filter(({ id }) => id !== undefined).map(({ id }) => id).sort();\n const oldDecoratorIds: Array = oldDecorators.map(({ id }) => id).sort();\n\n const oldDecoratorsById = oldDecorators\n .reduce((prev, cur) => (cur.id ? { ...prev, [cur.id]: cur } : prev), {});\n const newDecoratorsById = newDecorators\n .reduce((prev, cur) => (cur.id ? { ...prev, [cur.id]: cur } : prev), {});\n\n const createdDecorators = difference(newDecoratorIds, oldDecoratorIds).map((newDecoratorId) => newDecoratorsById[newDecoratorId]);\n const updatedDecorators = newDecorators.filter(({ id }) => id)\n .filter((decorator) => decorator.id && oldDecoratorsById[decorator.id] && !isEqual(decorator, oldDecoratorsById[decorator.id]));\n const deletedDecoratorIds = difference(oldDecoratorIds, newDecoratorIds);\n\n return [\n ...createdDecorators.map(({ id, ...newDecorator }) => () => DecoratorsActions.create(newDecorator)),\n ...updatedDecorators.map((updatedDecorator) => () => DecoratorsActions.update(updatedDecorator.id, updatedDecorator)),\n ...deletedDecoratorIds.map((deletedID) => () => DecoratorsActions.remove(deletedID)),\n ].reduce((prev, cur) => prev.then(() => cur()), Promise.resolve());\n};\n\nexport default DecoratorsUpdater;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { groupBy } from 'lodash';\n\nimport { Button } from 'components/bootstrap';\nimport { IfPermitted } from 'components/common';\nimport Spinner from 'components/common/Spinner';\nimport { DecoratorsActions } from 'stores/decorators/DecoratorsStore';\nimport type { Stream } from 'stores/streams/StreamsStore';\nimport { StreamsActions } from 'stores/streams/StreamsStore';\nimport UserNotification from 'util/UserNotification';\nimport DecoratorList from 'views/components/messagelist/decorators/DecoratorList';\nimport type { Decorator } from 'views/components/messagelist/decorators/Types';\n\nimport DecoratorsConfigUpdate from './decorators/DecoratorsConfigUpdate';\nimport StreamSelect, { DEFAULT_SEARCH_ID, DEFAULT_STREAM_ID } from './decorators/StreamSelect';\nimport DecoratorsUpdater from './decorators/DecoratorsUpdater';\nimport formatDecorator from './decorators/FormatDecorator';\n\nimport type BootstrapModalWrapper from '../bootstrap/BootstrapModalWrapper';\n\nconst DecoratorsConfig = () => {\n const [streams, setStreams] = useState | undefined>();\n const [currentStream, setCurrentStream] = useState(DEFAULT_STREAM_ID);\n const [decorators, setDecorators] = useState | undefined>();\n const [types, setTypes] = useState();\n const configModal = useRef();\n\n useEffect(() => { StreamsActions.listStreams().then(setStreams); }, [setStreams]);\n useEffect(() => { DecoratorsActions.available().then(setTypes); }, [setTypes]);\n useEffect(() => { DecoratorsActions.list().then(setDecorators); }, [setDecorators]);\n\n const openModal = useCallback(() => configModal.current && configModal.current.open(), [configModal]);\n const closeModal = useCallback(() => configModal.current && configModal.current.close(), [configModal]);\n\n if (!streams || !decorators || !types) {\n return ;\n }\n\n const onSave = (newDecorators) => DecoratorsUpdater(newDecorators, decorators)\n .then(\n () => UserNotification.success('Updated decorators configuration.', 'Success!'),\n (error) => UserNotification.error(`Unable to save new decorators: ${error}`, 'Saving decorators failed'),\n )\n .then(DecoratorsActions.list)\n .then(setDecorators)\n .then(closeModal);\n\n const decoratorsGroupedByStream = groupBy(decorators, (decorator) => (decorator.stream || DEFAULT_SEARCH_ID));\n\n const currentDecorators = decoratorsGroupedByStream[currentStream] || [];\n const sortedDecorators = currentDecorators\n .sort((d1, d2) => d1.order - d2.order);\n const readOnlyDecoratorItems = sortedDecorators.map((decorator) => formatDecorator(decorator, currentDecorators, types));\n\n const streamOptions = streams.filter(({ id }) => Object.keys(decoratorsGroupedByStream).includes(id));\n\n return (\n
    \n

    Decorators Configuration

    \n

    Select the stream for which you want to see the set of default decorators.

    \n \n \n \n \n \n \n
    \n );\n};\n\nDecoratorsConfig.propTypes = {};\n\nexport default DecoratorsConfig;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport { useEffect, useState } from 'react';\n\nimport { Col, Row } from 'components/bootstrap';\nimport { DocumentTitle, PageHeader, Spinner } from 'components/common';\nimport { useStore } from 'stores/connect';\nimport { isPermitted } from 'util/PermissionsMixin';\nimport SearchesConfig from 'components/configurations/SearchesConfig';\nimport MessageProcessorsConfig from 'components/configurations/MessageProcessorsConfig';\nimport SidecarConfig from 'components/configurations/SidecarConfig';\nimport EventsConfig from 'components/configurations/EventsConfig';\nimport UrlWhiteListConfig from 'components/configurations/UrlWhiteListConfig';\nimport PermissionsConfig from 'components/configurations/PermissionsConfig';\nimport 'components/maps/configurations';\nimport type { Store } from 'stores/StoreTypes';\nimport usePluginEntities from 'views/logic/usePluginEntities';\nimport ConfigletRow from 'pages/configurations/ConfigletRow';\nimport { ConfigurationsActions, ConfigurationsStore } from 'stores/configurations/ConfigurationsStore';\nimport { CurrentUserStore } from 'stores/users/CurrentUserStore';\n\nimport ConfigletContainer from './configurations/ConfigletContainer';\nimport PluginConfigRows from './configurations/PluginConfigRows';\n\nimport DecoratorsConfig from '../components/configurations/DecoratorsConfig';\n\nconst SEARCHES_CLUSTER_CONFIG = 'org.graylog2.indexer.searches.SearchesClusterConfig';\nconst MESSAGE_PROCESSORS_CONFIG = 'org.graylog2.messageprocessors.MessageProcessorsConfig';\nconst SIDECAR_CONFIG = 'org.graylog.plugins.sidecar.system.SidecarConfiguration';\nconst EVENTS_CONFIG = 'org.graylog.events.configuration.EventsConfiguration';\nconst URL_WHITELIST_CONFIG = 'org.graylog2.system.urlwhitelist.UrlWhitelist';\nconst PERMISSIONS_CONFIG = 'org.graylog2.users.UserAndTeamsConfig';\n\nconst _getConfig = (configType, configuration) => configuration?.[configType] ?? null;\n\nconst _onUpdate = (configType: string) => {\n return (config) => {\n switch (configType) {\n case MESSAGE_PROCESSORS_CONFIG:\n return ConfigurationsActions.updateMessageProcessorsConfig(configType, config);\n case URL_WHITELIST_CONFIG:\n return ConfigurationsActions.updateWhitelist(configType, config);\n default:\n return ConfigurationsActions.update(configType, config);\n }\n };\n};\n\nconst ConfigurationsPage = () => {\n const [loaded, setLoaded] = useState(false);\n const pluginSystemConfigs = usePluginEntities('systemConfigurations');\n const configuration = useStore(ConfigurationsStore as Store>, (state) => state?.configuration);\n const permissions = useStore(CurrentUserStore as Store<{ currentUser: { permissions: Array } }>, (state) => state?.currentUser?.permissions);\n\n useEffect(() => {\n const promises = [\n ConfigurationsActions.list(SEARCHES_CLUSTER_CONFIG),\n ConfigurationsActions.listMessageProcessorsConfig(MESSAGE_PROCESSORS_CONFIG),\n ConfigurationsActions.list(SIDECAR_CONFIG),\n ConfigurationsActions.list(EVENTS_CONFIG),\n ConfigurationsActions.listPermissionsConfig(PERMISSIONS_CONFIG),\n ];\n\n if (isPermitted(permissions, ['urlwhitelist:read'])) {\n promises.push(ConfigurationsActions.listWhiteListConfig(URL_WHITELIST_CONFIG));\n }\n\n const pluginPromises = pluginSystemConfigs\n .map((systemConfig) => ConfigurationsActions.list(systemConfig.configType));\n\n Promise.allSettled([...promises, ...pluginPromises]).then(() => setLoaded(true));\n }, [permissions, pluginSystemConfigs]);\n\n let Output = (\n \n \n \n );\n\n if (loaded) {\n const searchesConfig = _getConfig(SEARCHES_CLUSTER_CONFIG, configuration);\n const messageProcessorsConfig = _getConfig(MESSAGE_PROCESSORS_CONFIG, configuration);\n const sidecarConfig = _getConfig(SIDECAR_CONFIG, configuration);\n const eventsConfig = _getConfig(EVENTS_CONFIG, configuration);\n const urlWhiteListConfig = _getConfig(URL_WHITELIST_CONFIG, configuration);\n const permissionsConfig = _getConfig(PERMISSIONS_CONFIG, configuration);\n\n Output = (\n <>\n {searchesConfig && (\n \n \n \n )}\n {messageProcessorsConfig && (\n \n \n \n )}\n {sidecarConfig && (\n \n \n \n )}\n {eventsConfig && (\n \n \n \n )}\n {isPermitted(permissions, ['urlwhitelist:read']) && urlWhiteListConfig && (\n \n \n \n )}\n \n \n \n {permissionsConfig && (\n \n \n \n )}\n \n );\n }\n\n return (\n \n \n \n \n You can configure system settings for different sub systems on this page.\n \n \n\n \n {Output}\n \n\n {pluginSystemConfigs.length > 0 && (\n \n \n

    Plugins

    \n

    Configuration for installed plugins.

    \n
    \n
    \n \n
    \n \n
    \n )}\n
    \n
    \n );\n};\n\nexport default ConfigurationsPage;\n"],"names":["Description","styled","IconStack","theme","css","colors","global","textAlt","textDefault","Content","SmallSupportLink","children","className","name","type","propTypes","PropTypes","defaultProps","undefined","TimeRangeOptionsForm","options","props","update","ObjectUtils","push","period","description","_update","removedIdx","splice","changedIdx","field","e","forEach","o","idx","value","target","toUpperCase","startsWith","map","option","errorStyle","ISODurationUtils","validator","key","xs","onChange","_onChange","placeholder","style","cursor","onClick","_onRemove","this","title","help","_buildTimeRangeOptions","bsSize","_onAdd","addButtonTitle","React","TimeRangeOptionsSummary","timerangeOptionsSummary","Object","keys","_queryTimeRangeLimitValidator","milliseconds","_relativeTimeRangeValidator","duration","_surroundingTimeRangeValidator","_splitStringList","stringList","split","f","trim","filter","length","SearchesConfig","newOptions","config","state","setState","data","relativeTimeRangeOptionsUpdate","surroundingTimeRangeOptionsUpdate","surroundingFilterFields","analysisDisabledFields","origConfig","limitEnabled","query_time_range_limit","updateConfig","relative_timerange_options","entry","surrounding_timerange_options","surrounding_filter_fields","analysis_disabled_fields","then","_closeModal","defaultState","searchesConfigModal","current","open","close","createRef","queryTimeRangeLimit","relativeTimerangeOptions","surroundingTimerangeOptions","moment","asMilliseconds","filterFields","filterFieldsString","analysisDisabledFieldsListItems","analysisDisabledFieldsString","limit","humanize","join","md","permissions","bsStyle","_openModal","ref","onSubmitForm","_saveConfig","onModalClose","_resetConfig","submitButtonText","htmlFor","id","label","checked","_onChecked","_onUpdate","required","_onRelativeTimeRangeOptionsUpdate","_onSurroundingTimeRangeOptionsUpdate","_onFilterFieldsUpdate","_onAnalysisDisabledFieldsUpdate","isRequired","createReactClass","displayName","getDefaultProps","disabled_processors","processor_order","getInitialState","inputs","configModal","_hasNoActiveProcessor","_updateSorting","newSorting","item","class_name","_toggleStatus","disabledProcessors","p","indexOf","_noActiveProcessorWarning","_summary","processor","status","_sortableItems","_statusForm","sort","a","b","naturalSort","enabled","elem","render","striped","bordered","condensed","BootstrapModalForm","items","onMoveItem","displayOverlayInPortal","SidecarConfig","sidecar_expiration_threshold","sidecar_inactive_threshold","sidecar_update_interval","sidecar_send_status","sidecar_configuration_override","UNSAFE_componentWillReceiveProps","newProps","refs","FormUtils","_inactiveThresholdValidator","_expirationThresholdValidator","_updateIntervalValidator","inactiveMilliseconds","_durationMilliseconds","expirationMilliseconds","StringUtils","toString","errorText","TIME_UNITS","DEFAULT_CATCH_UP_WINDOW","EventsConfig","events_search_timeout","events_notification_retry_period","events_notification_default_backlog","events_catchup_window","modal","_propagateChanges","nextConfig","lodash","_onSearchTimeoutUpdate","nextValue","nextUnit","durationInMs","_searchTimeoutValidator","_onRetryPeriodUpdate","_notificationsRetryValidator","_onBacklogUpdate","event","_onCatchUpWindowUpdate","nextEnabled","catchupWindowinMs","_titleCase","str","eventsSearchTimeout","extractDurationAndUnit","eventsNotificationRetryPeriod","eventsCatchupWindow","eventsNotificationDefaultBacklog","unit","controlId","units","Input","min","UrlWhiteListConfig","entries","urlConfig","isValid","updatedState","disabled","submitButtonDisabled","UrlWhiteListForm","urls","onUpdate","StyledDefList","spacings","LabelSpan","sm","useState","showModal","setShowModal","allow_sharing_with_everyone","allow_sharing_with_users","show","onHide","Formik","onSubmit","values","initialValues","isSubmitting","Form","closeButton","FormikInput","Spinner","defaultConfig","enforce_graylog_schema","db_vendor_type","city_db_path","asn_db_path","refresh_interval_unit","refresh_interval","curConfig","setCurConfig","useEffect","resetConfig","page","text","t","setFieldValue","Field","clearable","matchProp","defaultEnabled","hideCheckbox","PluginStore","PluginManifest","systemConfigurations","component","GeoIpResolverConfig","configType","Row","ErrorFallback","error","message","Boundary","ErrorBoundary","FallbackComponent","ConfigurationsActions","_getConfig","configuration","systemConfigs","pluginConfigs","useMemo","SystemConfigComponent","_pluginConfigs","configRows","chunk","configChunk","DEFAULT_STREAM_ID","DEFAULT_SEARCH_ID","SelectContainer","StreamSelect","streams","key1","key2","defaultCompare","Select","inputId","decorator","decorators","decoratorTypes","updateFn","typeDefinition","requested_configuration","updatedDecorator","curDecorator","onDelete","deletedDecoratorId","order","DecoratorSummary","disableMenu","DecoratorsConfigUpdate","modalRef","types","onCancel","onSave","currentStream","setCurrentStream","modifiedDecorators","setModifiedDecorators","onCreate","useCallback","stream","rest","onReorder","orderedDecorators","newDecorators","cloneDeep","find","i","_updateOrder","currentDecorators","decoratorItems","d1","d2","formatDecorator","nextOrder","reduce","currentMax","Math","max","_onCancel","BootstrapModalWrapper","AddDecoratorButton","showHelp","DecoratorList","oldDecorators","newDecoratorIds","oldDecoratorIds","oldDecoratorsById","prev","cur","newDecoratorsById","createdDecorators","difference","newDecoratorId","updatedDecorators","isEqual","deletedDecoratorIds","newDecorator","DecoratorsActions","deletedID","Promise","resolve","DecoratorsConfig","setStreams","setDecorators","setTypes","useRef","StreamsActions","openModal","closeModal","decoratorsGroupedByStream","groupBy","readOnlyDecoratorItems","streamOptions","includes","disableDragging","DecoratorsUpdater","UserNotification","SEARCHES_CLUSTER_CONFIG","MESSAGE_PROCESSORS_CONFIG","SIDECAR_CONFIG","EVENTS_CONFIG","URL_WHITELIST_CONFIG","PERMISSIONS_CONFIG","loaded","setLoaded","pluginSystemConfigs","usePluginEntities","useStore","ConfigurationsStore","CurrentUserStore","currentUser","promises","isPermitted","pluginPromises","systemConfig","allSettled","Output","searchesConfig","messageProcessorsConfig","sidecarConfig","eventsConfig","urlWhiteListConfig","permissionsConfig"],"sourceRoot":""}




    © 2015 - 2024 Weber Informatics LLC | Privacy Policy