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

web-interface.assets.6e61897c-54.472622149827c1587209.js.map Maven / Gradle / Ivy

There is a newer version: 6.0.2
Show newest version
{"version":3,"sources":["webpack:///./src/components/support/SmallSupportLink.tsx","webpack:///./src/actions/streams/StreamsActions.jsx","webpack:///./src/components/configurations/TimeRangeOptionsForm.jsx","webpack:///./src/components/configurations/TimeRangeOptionsSummary.jsx","webpack:///./src/components/configurations/SearchesConfig.jsx","webpack:///./src/components/configurations/MessageProcessorsConfig.jsx","webpack:///./src/components/configurations/SidecarConfig.jsx","webpack:///./src/components/configurations/EventsConfig.jsx","webpack:///./src/components/configurations/UrlWhiteListConfig.tsx","webpack:///./src/components/configurations/PermissionsConfig.tsx","webpack:///./src/components/maps/configurations/GeoIpResolverConfig.jsx","webpack:///./src/components/maps/configurations/index.js","webpack:///./src/pages/configurations/ConfigletRow.tsx","webpack:///./src/pages/configurations/ConfigletContainer.tsx","webpack:///./src/pages/configurations/PluginConfigRows.tsx","webpack:///./src/components/configurations/decorators/StreamSelect.tsx","webpack:///./src/components/configurations/decorators/FormatDecorator.tsx","webpack:///./src/components/configurations/decorators/DecoratorsConfigUpdate.tsx","webpack:///./src/components/configurations/decorators/DecoratorsUpdater.ts","webpack:///./src/components/configurations/DecoratorsConfig.tsx","webpack:///./src/pages/ConfigurationsPage.tsx","webpack:///./src/stores/streams/StreamsStore.ts"],"names":["Description","styled","div","IconStack","theme","css","colors","global","textAlt","textDefault","Content","p","SmallSupportLink","children","className","name","type","propTypes","PropTypes","node","isRequired","string","defaultProps","undefined","StreamsActions","singletonActions","Reflux","createActions","searchPaginated","asyncResult","listStreams","load","get","remove","pause","resume","cloneStream","update","save","removeOutput","addOutput","testMatch","TimeRangeOptionsForm","options","props","ObjectUtils","clone","push","period","description","_update","removedIdx","splice","changedIdx","field","e","forEach","o","idx","value","target","toUpperCase","startsWith","map","option","errorStyle","ISODurationUtils","durationStyle","validator","key","xs","onChange","_onChange","formatDuration","placeholder","style","cursor","onClick","_onRemove","this","title","help","_buildTimeRangeOptions","bsSize","_onAdd","addButtonTitle","React","Component","array","any","func","TimeRangeOptionsSummary","timerangeOptionsSummary","Object","keys","object","_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","shape","objectOf","arrayOf","MessageProcessorsConfig","createReactClass","displayName","getDefaultProps","disabled_processors","processor_order","getInitialState","inputs","configModal","_hasNoActiveProcessor","_updateSorting","newSorting","item","class_name","_toggleStatus","disabledProcessors","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","bool","sidecar_configuration_override","UNSAFE_componentWillReceiveProps","newProps","refs","FormUtils","getValueFromInput","_inactiveThresholdValidator","_expirationThresholdValidator","_updateIntervalValidator","inactiveMilliseconds","_durationMilliseconds","expirationMilliseconds","isValidDuration","StringUtils","capitalizeFirstLetter","toString","errorText","TIME_UNITS","DEFAULT_CATCH_UP_WINDOW","EventsConfig","events_search_timeout","number","events_notification_retry_period","events_notification_default_backlog","events_catchup_window","modal","_propagateChanges","nextConfig","lodash","cloneDeep","_onSearchTimeoutUpdate","nextValue","nextUnit","durationInMs","_searchTimeoutValidator","_onRetryPeriodUpdate","_notificationsRetryValidator","_onBacklogUpdate","event","_onCatchUpWindowUpdate","nextEnabled","catchupWindowinMs","_titleCase","str","capitalize","eventsSearchTimeout","extractDurationAndUnit","eventsNotificationRetryPeriod","eventsCatchupWindow","eventsNotificationDefaultBacklog","unit","controlId","units","Input","min","UrlWhiteListConfig","entries","urlConfig","isValid","updatedState","disabled","submitButtonDisabled","UrlWhiteListForm","urls","onUpdate","StyledDefList","dl","attrs","spacings","LabelSpan","span","sm","PermissionsConfig","useState","showModal","setShowModal","allow_sharing_with_everyone","allow_sharing_with_users","show","onHide","aria-modal","aria-labelledby","onSubmit","values","initialValues","isSubmitting","Header","closeButton","Title","Body","FormikInput","Footer","Spinner","GeoIpResolverConfig","db_type","db_path","run_before_extractors","_updateConfigField","_onCheckboxClick","getChecked","geoIpConfigModal","_availableDatabaseTypes","_activeDatabaseType","t","page","text","configEnabled","matchProp","_onDbTypeSelect","href","rel","PluginStore","register","PluginManifest","systemConfigurations","component","configType","ConfigletRow","Row","ErrorFallback","error","message","Boundary","FallbackComponent","ConfigletContainer","ConfigurationsActions","CombinedProvider","_getConfig","configuration","PluginConfigRows","systemConfigs","pluginConfigs","useMemo","SystemConfigComponent","_pluginConfigs","configRows","chunk","configChunk","DEFAULT_STREAM_ID","DEFAULT_SEARCH_ID","SelectContainer","StreamSelect","streams","key1","key2","defaultCompare","Select","inputId","clearable","formatDecorator","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","find","i","_updateOrder","currentDecorators","decoratorItems","d1","d2","nextOrder","reduce","currentMax","Math","max","_onCancel","BootstrapModalWrapper","AddDecoratorButton","showHelp","DecoratorList","forwardRef","DecoratorsActions","DecoratorsUpdater","oldDecorators","newDecoratorIds","oldDecoratorIds","oldDecoratorsById","prev","cur","newDecoratorsById","createdDecorators","difference","newDecoratorId","updatedDecorators","isEqual","deletedDecoratorIds","newDecorator","create","deletedID","Promise","resolve","DecoratorsConfig","setStreams","setDecorators","setTypes","useRef","useEffect","available","list","openModal","closeModal","decoratorsGroupedByStream","groupBy","readOnlyDecoratorItems","streamOptions","includes","disableDragging","UserNotification","success","CurrentUserStore","ConfigurationsStore","SEARCHES_CLUSTER_CONFIG","MESSAGE_PROCESSORS_CONFIG","SIDECAR_CONFIG","EVENTS_CONFIG","URL_WHITELIST_CONFIG","PERMISSIONS_CONFIG","updateMessageProcessorsConfig","updateWhitelist","ConfigurationsPage","loaded","setLoaded","pluginSystemConfigs","usePluginEntities","useStore","currentUser","promises","listMessageProcessorsConfig","listPermissionsConfig","isPermitted","listWhiteListConfig","pluginPromises","systemConfig","allSettled","Output","searchesConfig","messageProcessorsConfig","sidecarConfig","eventsConfig","urlWhiteListConfig","permissionsConfig","StreamsStore","singletonStore","createStore","listenables","callbacks","newPage","newPerPage","newQuery","url","PaginationURL","ApiRoutes","StreamsApiController","paginated","promise","fetch","qualifyUrl","response","query","pagination","count","total","perPage","per_page","errorThrown","result","callback","streamId","reload","_emitChange","bind","outputId","StreamOutputsApiController","add","outputs","unregister","pull"],"mappings":"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","file":"6e61897c-54.472622149827c1587209.js","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 Reflux from 'reflux';\n\nimport { singletonActions } from 'views/logic/singleton';\n\nconst StreamsActions = singletonActions('Streams', () => Reflux.createActions({\n  searchPaginated: { asyncResult: true },\n  listStreams: { asyncResult: true },\n  load: { asyncResult: true },\n  get: { asyncResult: true },\n  remove: { asyncResult: true },\n  pause: { asyncResult: true },\n  resume: { asyncResult: true },\n  cloneStream: { asyncResult: true },\n  update: { asyncResult: true },\n  save: { asyncResult: true },\n  removeOutput: { asyncResult: true },\n  addOutput: { asyncResult: true },\n  testMatch: { asyncResult: true },\n}));\n\nexport default StreamsActions;\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/graylog';\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 } from 'components/graylog';\nimport { 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/graylog';\nimport BootstrapModalForm from 'components/bootstrap/BootstrapModalForm';\nimport { IfPermitted, SortableList } from 'components/common';\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 } from 'components/graylog';\nimport { 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 } from 'components/graylog';\nimport { 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/graylog';\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 styled, { css, DefaultTheme } from 'styled-components';\nimport { Form, Formik } from 'formik';\nimport { PermissionsConfigType } from 'src/stores/configurations/ConfigurationsStore';\n\nimport { Button, Col, Modal, Row } from 'components/graylog';\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 PropTypes from 'prop-types';\nimport React from 'react';\nimport createReactClass from 'create-react-class';\n\nimport { Button } from 'components/graylog';\nimport { BootstrapModalForm, Input } from 'components/bootstrap';\nimport { IfPermitted, Select } from 'components/common';\nimport { DocumentationLink } from 'components/support';\nimport ObjectUtils from 'util/ObjectUtils';\n\nconst GeoIpResolverConfig = createReactClass({\n displayName: 'GeoIpResolverConfig',\n\n propTypes: {\n config: PropTypes.object,\n updateConfig: PropTypes.func.isRequired,\n },\n\n getDefaultProps() {\n return {\n config: {\n enabled: false,\n db_type: 'MAXMIND_CITY',\n db_path: '/etc/graylog/server/GeoLite2-City.mmdb',\n run_before_extractors: false,\n },\n };\n },\n\n getInitialState() {\n const { config } = this.props;\n\n return {\n config: ObjectUtils.clone(config),\n };\n },\n\n UNSAFE_componentWillReceiveProps(newProps) {\n this.setState({ config: ObjectUtils.clone(newProps.config) });\n },\n\n inputs: {},\n\n _updateConfigField(field, value) {\n const { config } = this.state;\n const update = ObjectUtils.clone(config);\n\n update[field] = value;\n this.setState({ config: update });\n },\n\n _onCheckboxClick(field, ref) {\n return () => {\n this._updateConfigField(field, this.inputs[ref].getChecked());\n };\n },\n\n _onUpdate(field) {\n return (e) => {\n this._updateConfigField(field, e.target.value);\n };\n },\n\n _openModal() {\n this.geoIpConfigModal.open();\n },\n\n _closeModal() {\n this.geoIpConfigModal.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 _availableDatabaseTypes() {\n // TODO: Support country database as well.\n return [\n { value: 'MAXMIND_CITY', label: 'City database' },\n ];\n },\n\n _activeDatabaseType(type) {\n return this._availableDatabaseTypes().filter((t) => t.value === type)[0].label;\n },\n\n render() {\n const { config } = this.state;\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
    Database type:
    \n
    {this._activeDatabaseType(config.db_type)}
    \n
    Database path:
    \n
    {config.db_path}
    \n
    \n\n \n \n \n\n { this.geoIpConfigModal = geoIpConfigModal; }}\n title=\"Update Geo-Location Processor Configuration\"\n onSubmitForm={this._saveConfig}\n onModalClose={this._resetConfig}\n submitButtonText=\"Save\">\n
    \n { this.inputs.configEnabled = elem; }}\n label=\"Enable Geo-Location processor\"\n name=\"enabled\"\n checked={config.enabled}\n onChange={this._onCheckboxClick('enabled', 'configEnabled')} />\n \n You can download a free version of the database from MaxMind.}\n name=\"db_path\"\n value={config.db_path}\n onChange={this._onUpdate('db_path')} />\n
    \n
    \n
    \n );\n },\n});\n\nexport default GeoIpResolverConfig;\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 { PluginManifest, PluginStore } from 'graylog-web-plugin/plugin';\n\nimport GeoIpResolverConfig from 'components/maps/configurations/GeoIpResolverConfig';\n\nPluginStore.register(new PluginManifest({}, {\n systemConfigurations: [\n {\n component: GeoIpResolverConfig,\n configType: 'org.graylog.plugins.map.config.GeoIpResolverConfig',\n },\n ],\n}));\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 */\n\nimport styled from 'styled-components';\n\nimport { Row } from 'components/graylog';\n\nconst ConfigletRow = styled(Row)`\n .deflist {\n margin-top: 10px;\n }\n\n .deflist dt {\n float: left;\n clear: left;\n }\n\n .deflist dd {\n margin-left: 180px;\n }\n\n .top-margin {\n margin-top: 10px;\n }\n\n hr.separator {\n margin-top: 10px;\n margin-bottom: 5px;\n }\n\n > div {\n margin-bottom: 30px;\n }\n`;\n\nexport default ConfigletRow;\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 { ErrorBoundary } from 'react-error-boundary';\n\nimport { Col } from 'components/graylog';\n\ntype ErrorFallbackProps = {\n error: {\n message: string,\n },\n title: string,\n};\n\nconst ErrorFallback = ({ error, title }: ErrorFallbackProps) => (\n <>\n

    {title}

    \n

    Something went wrong:

    \n
    {error.message}
    \n \n);\n\ntype BoundaryProps = {\n children: React.ReactNode,\n title: string,\n}\n\nconst Boundary = ({ children, title }: BoundaryProps) => (\n }>\n {children}\n \n);\n\nconst ConfigletContainer = ({ children, title }: BoundaryProps) => (\n \n \n {children}\n \n \n);\n\nexport default ConfigletContainer;\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 { useMemo } from 'react';\nimport { chunk } from 'lodash';\nimport { SystemConfiguration } from 'views/types';\n\nimport ConfigletContainer from 'pages/configurations/ConfigletContainer';\nimport CombinedProvider from 'injection/CombinedProvider';\nimport ConfigletRow from 'pages/configurations/ConfigletRow';\n\nconst { ConfigurationsActions } = CombinedProvider.get('Configurations');\n\nconst _onUpdate = (configType: string) => (config) => ConfigurationsActions.update(configType, config);\n\nconst _getConfig = (configType, configuration) => configuration?.[configType] ?? null;\n\nconst _pluginConfigs = (systemConfigs, configuration) => systemConfigs\n .map(({ component: SystemConfigComponent, configType }) => (\n \n \n \n ));\n\ntype PluginConfigRowsProps = {\n configuration: Record,\n systemConfigs: Array,\n};\n\nconst PluginConfigRows = ({ configuration, systemConfigs }: PluginConfigRowsProps) => {\n const pluginConfigs = useMemo(() => _pluginConfigs(systemConfigs, configuration), [configuration, systemConfigs]);\n\n // Put two plugin config components per row.\n const configRows = chunk(pluginConfigs, 2)\n .map((configChunk, idx) => (\n // eslint-disable-next-line react/no-array-index-key\n \n {configChunk[0]}\n {configChunk[1]}\n \n ));\n\n return <>{configRows};\n};\n\nexport default PluginConfigRows;\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';\nimport styled from 'styled-components';\n\nimport Select from 'components/common/Select';\nimport type { Stream } from 'stores/streams/StreamsStore';\nimport { defaultCompare } from 'views/logic/DefaultCompare';\n\nexport const DEFAULT_STREAM_ID = '000000000000000000000001';\nexport const DEFAULT_SEARCH_ID = 'DEFAULT_SEARCH';\n\nconst SelectContainer = styled.div`\n margin-bottom: 10px;\n`;\n\ntype Props = {\n onChange: (newValue: string) => void,\n value: string,\n streams: Array,\n};\n\nconst StreamSelect = ({ onChange, value, streams }: Props) => {\n const options = [{ label: 'Default Search', value: DEFAULT_SEARCH_ID }, ...streams\n .sort(({ title: key1 }, { title: key2 }) => defaultCompare(key1, key2))\n .map(({ title, id }) => ({ label: title, value: id }))];\n\n return (\n \n