web-interface.assets.8a5ceb61-1659.c7cffabe5e05ed7e50d9.js.map Maven / Gradle / Ivy
{"version":3,"file":"8a5ceb61-1659.c7cffabe5e05ed7e50d9.js","mappings":"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","sources":["webpack://graylog-web-interface/./src/stores/codecs/CodecTypesStore.js","webpack://graylog-web-interface/./src/components/messageloaders/RawMessageLoader.tsx","webpack://graylog-web-interface/./src/components/messageloaders/useForwarderMessageLoaders.ts","webpack://graylog-web-interface/./src/components/search/MessageFieldExtractorActions.jsx","webpack://graylog-web-interface/./src/components/search/MessageFieldDescription.jsx","webpack://graylog-web-interface/./src/components/search/MessageField.jsx","webpack://graylog-web-interface/./src/components/search/MessageFields.jsx","webpack://graylog-web-interface/./src/components/search/MessageDetail.jsx","webpack://graylog-web-interface/./src/components/search/MessageShow.jsx","webpack://graylog-web-interface/./src/logic/message/MessageFormatter.js","webpack://graylog-web-interface/./src/stores/messages/MessagesStore.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 Reflux from 'reflux';\n\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\nimport * as URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport { singletonStore, singletonActions } from 'logic/singleton';\n\nexport const CodecTypesActions = singletonActions(\n 'core.CodecTypes',\n () => Reflux.createActions({\n list: { asyncResult: true },\n }),\n);\n\nexport const CodecTypesStore = singletonStore(\n 'core.CodecTypes',\n () => Reflux.createStore({\n listenables: [CodecTypesActions],\n codecTypes: undefined,\n\n getInitialState() {\n return { codecTypes: this.codecTypes };\n },\n\n list() {\n const promise = fetch('GET', URLUtils.qualifyUrl(ApiRoutes.CodecTypesController.list().url));\n\n promise.then(\n (response) => {\n this.codecTypes = response;\n this.trigger(this.getInitialState());\n },\n (error) => {\n UserNotification.error(`Fetching codec types failed with status: ${error}`,\n 'Could not retrieve codec types');\n },\n );\n\n CodecTypesActions.list.promise(promise);\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 React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport * as Immutable from 'immutable';\nimport type { Subtract } from 'utility-types';\n\nimport { getValueFromInput } from 'util/FormsUtils';\nimport { Select } from 'components/common';\nimport { Col, Row, Button, Input } from 'components/bootstrap';\nimport { BooleanField, DropdownField, NumberField, TextField } from 'components/configurationforms';\nimport connect from 'stores/connect';\nimport type { Message } from 'views/components/messagelist/Types';\nimport useForwarderMessageLoaders from 'components/messageloaders/useForwarderMessageLoaders';\nimport AppConfig from 'util/AppConfig';\nimport { CodecTypesStore, CodecTypesActions } from 'stores/codecs/CodecTypesStore';\nimport { InputsActions, InputsStore } from 'stores/inputs/InputsStore';\nimport { MessagesActions } from 'stores/messages/MessagesStore';\n\nimport type { Input as InputType, CodecTypes } from './Types';\n\nconst DEFAULT_REMOTE_ADDRESS = '127.0.0.1';\n\ntype InputSelectProps = {\n inputs: Immutable.Map,\n selectedInputId: string | undefined,\n onInputSelect: (selectedInputId: string) => void,\n show: boolean,\n};\n\nconst ServerInputSelect = ({ inputs, selectedInputId, onInputSelect }: Subtract) => {\n const _formatInputSelectOptions = () => {\n if (!inputs) {\n return [{ value: 'none', label: 'Loading inputs...', disabled: true }];\n }\n\n if (inputs.size === 0) {\n return [{ value: 'none', label: 'No inputs available' }];\n }\n\n const formattedInputs = [];\n\n inputs\n .sort((inputA, inputB) => inputA.title.toLowerCase().localeCompare(inputB.title.toLowerCase()))\n .forEach((input, id) => {\n const label = `${id} / ${input.title} / ${input.name}`;\n\n formattedInputs.push({ value: id, label: label });\n });\n\n return formattedInputs;\n };\n\n return (\n Message input (optional)>}\n help=\"Select the message input ID that should be assigned to the parsed message.\">\n \n \n );\n};\n\nconst ForwarderInputSelect = ({ onInputSelect }: Pick) => {\n const { ForwarderInputDropdown } = useForwarderMessageLoaders();\n\n return (\n <>\n \n Select an Input profile from the list below then select an then select an Input.
\n >\n );\n};\n\nconst InputSelect = ({ inputs, selectedInputId, onInputSelect, show }: InputSelectProps) => {\n const { ForwarderInputDropdown } = useForwarderMessageLoaders();\n const [selectedInputType, setSelectedInputType] = useState<'server' | 'forwarder' | undefined>();\n\n if (!show) {\n return null;\n }\n\n if (AppConfig.isCloud()) {\n return ;\n }\n\n return ForwarderInputDropdown ? (\n \n ) : (\n \n );\n};\n\ntype OptionsType = {\n message: string,\n remoteAddress: string,\n codec: string,\n codecConfiguration: {\n [key: string]: string,\n },\n inputId?: string,\n};\n\ntype Props = {\n inputs?: Immutable.Map,\n codecTypes: CodecTypes,\n onMessageLoaded: (message: Message | undefined, option: OptionsType) => void,\n inputIdSelector?: boolean,\n};\n\nconst RawMessageLoader = ({ onMessageLoaded, inputIdSelector, codecTypes, inputs }: Props) => {\n const [loading, setLoading] = useState(false);\n const [message, setMessage] = useState('');\n const [remoteAddress, setRemoteAddress] = useState(DEFAULT_REMOTE_ADDRESS);\n const [codec, setCodec] = useState('');\n const [codecConfiguration, setCodecConfiguration] = useState({});\n const [inputId, setInputId] = useState();\n\n useEffect(() => {\n CodecTypesActions.list();\n }, []);\n\n useEffect(() => {\n if (inputIdSelector) {\n InputsActions.list();\n }\n }, [inputIdSelector]);\n\n const _loadMessage = (event: React.SyntheticEvent) => {\n event.preventDefault();\n\n setLoading(true);\n const promise = MessagesActions.loadRawMessage(message, remoteAddress, codec, codecConfiguration);\n\n promise.then((loadedMessage) => {\n onMessageLoaded(\n loadedMessage,\n {\n message: message,\n remoteAddress: remoteAddress,\n codec: codec,\n codecConfiguration: codecConfiguration,\n inputId: inputId,\n },\n );\n });\n\n promise.finally(() => setLoading(false));\n };\n\n const _formatSelectOptions = () => {\n if (!codecTypes) {\n return [{ value: 'none', label: 'Loading codec types...', disabled: true }];\n }\n\n const codecTypesIds = Object.keys(codecTypes);\n\n if (codecTypesIds.length === 0) {\n return [{ value: 'none', label: 'No codecs available' }];\n }\n\n return codecTypesIds\n .filter((id) => id !== 'random-http-msg') // Skip Random HTTP codec, as nobody wants to enter a raw random message.\n .map((id) => {\n const { name } = codecTypes[id];\n\n // Add id as label on codecs not having a descriptor name\n return { value: id, label: name === '' ? id : name };\n })\n .sort((codecA, codecB) => codecA.label.toLowerCase().localeCompare(codecB.label.toLowerCase()));\n };\n\n const _onCodecSelect = (selectedCodec: string) => {\n setCodec(selectedCodec);\n setCodecConfiguration({});\n };\n\n const _onInputSelect = (selectedInput: string) => {\n setInputId(selectedInput);\n };\n\n const _onMessageChange = (event: React.SyntheticEvent) => {\n setMessage(getValueFromInput(event.target));\n };\n\n const _onRemoteAddressChange = (event: React.SyntheticEvent) => {\n setRemoteAddress(getValueFromInput(event.target));\n };\n\n const _onCodecConfigurationChange = (field: string, value: string) => {\n const newConfiguration = { ...codecConfiguration, [field]: value };\n setCodecConfiguration(newConfiguration);\n };\n\n const _formatConfigField = (key: string, configField) => {\n const value = codecConfiguration[key];\n const typeName = 'RawMessageLoader';\n const elementKey = `${typeName}-${key}`;\n\n switch (configField.type) {\n case 'text':\n return (\n \n );\n case 'number':\n return (\n \n );\n case 'boolean':\n return (\n \n );\n case 'dropdown':\n return (\n \n );\n default:\n return null;\n }\n };\n\n const _isSubmitDisabled = !message || !codec || loading;\n\n let codecConfigurationOptions;\n\n if (codecTypes && codec) {\n const currentCodecConfiguration = codecTypes[codec].requested_configuration;\n\n codecConfigurationOptions = Object.keys(currentCodecConfiguration)\n .sort((keyA, keyB) => currentCodecConfiguration[keyA].is_optional - currentCodecConfiguration[keyB].is_optional)\n .map((key) => _formatConfigField(key, currentCodecConfiguration[key]));\n }\n\n return (\n \n \n \n \n
\n );\n};\n\nRawMessageLoader.propTypes = {\n onMessageLoaded: PropTypes.func.isRequired,\n inputIdSelector: PropTypes.bool,\n codecTypes: PropTypes.object,\n inputs: PropTypes.object,\n};\n\nRawMessageLoader.defaultProps = {\n inputIdSelector: false,\n codecTypes: undefined,\n inputs: undefined,\n};\n\nexport default connect(\n // @ts-ignore\n RawMessageLoader,\n { inputs: InputsStore, codecTypes: CodecTypesStore },\n // @ts-ignore\n ({ inputs: { inputs }, codecTypes: { codecTypes } }) => ({ inputs: (inputs ? Immutable.Map(InputsStore.inputsAsMap(inputs)) : undefined), codecTypes }),\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 */\nimport { PluginStore } from 'graylog-web-plugin/plugin';\n\nconst useForwarderMessageLoaders = () => {\n const messageLoaders = PluginStore.exports('forwarder')?.[0]?.messageLoaders;\n\n return messageLoaders || { ForwarderInputDropdown: undefined };\n};\n\nexport default useForwarderMessageLoaders;\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 { LinkContainer } from 'components/common/router';\nimport { DropdownButton, MenuItem } from 'components/bootstrap';\nimport ExtractorUtils from 'util/ExtractorUtils';\n\nclass MessageFieldExtractorActions extends React.Component {\n static propTypes = {\n fieldName: PropTypes.string.isRequired,\n message: PropTypes.object.isRequired,\n };\n\n UNSAFE_componentWillMount() {\n this._refreshExtractorRoutes(this.props);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n this._refreshExtractorRoutes(nextProps);\n }\n\n _refreshExtractorRoutes = (props) => {\n this.newExtractorRoutes = ExtractorUtils.getNewExtractorRoutes(props.message.source_node_id,\n props.message.source_input_id,\n props.fieldName,\n props.message.index,\n props.message.id);\n };\n\n _formatExtractorMenuItem = (extractorType) => {\n return (\n \n \n \n );\n };\n\n render() {\n const { fieldName, message } = this.props;\n const messageField = message.fields[fieldName];\n\n if (typeof messageField === 'string') {\n return (\n \n \n {ExtractorUtils.EXTRACTOR_TYPES.map((extractorType) => this._formatExtractorMenuItem(extractorType))}\n \n \n );\n }\n\n return (\n \n \n \n \n \n );\n }\n}\n\nexport default MessageFieldExtractorActions;\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 Immutable from 'immutable';\nimport styled, { css } from 'styled-components';\n\nimport { Alert } from 'components/bootstrap';\nimport { FULL_MESSAGE_FIELD, MESSAGE_FIELD } from 'views/Constants';\n\nconst MessageTerms = styled.span(({ theme }) => css`\n margin-right: 8px;\n font-family: ${theme.fonts.family.monospace};\n`);\n\nclass MessageFieldDescription extends React.Component {\n static propTypes = {\n message: PropTypes.object.isRequired,\n fieldName: PropTypes.string.isRequired,\n renderForDisplay: PropTypes.func.isRequired,\n customFieldActions: PropTypes.node,\n };\n\n static defaultProps = {\n customFieldActions: undefined,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n messageTerms: Immutable.List(),\n };\n }\n\n _shouldShowTerms = () => {\n const { messageTerms } = this.state;\n\n return messageTerms.size !== 0;\n };\n\n _getFormattedTerms = () => {\n const { messageTerms } = this.state;\n\n return messageTerms.map((term) => {term} );\n };\n\n _getFormattedFieldActions = () => {\n const { customFieldActions, fieldName, message } = this.props;\n\n return customFieldActions ? React.cloneElement(customFieldActions, { fieldName, message }) : null;\n };\n\n render() {\n const { fieldName, renderForDisplay } = this.props;\n const className = fieldName === MESSAGE_FIELD || fieldName === FULL_MESSAGE_FIELD ? 'message-field' : '';\n\n return (\n \n {this._getFormattedFieldActions()}\n {renderForDisplay(fieldName)}\n {this._shouldShowTerms()\n && (\n this.setState({ messageTerms: Immutable.Map() })}>\n Field terms: {this._getFormattedTerms()}\n \n )}\n \n );\n }\n}\n\nexport default MessageFieldDescription;\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 { MessageFieldDescription } from 'components/search';\nimport { FULL_MESSAGE_FIELD } from 'views/Constants';\n\nconst SPECIAL_FIELDS = [FULL_MESSAGE_FIELD, 'level'];\n\nconst MessageField = ({ message, value, fieldName, customFieldActions, renderForDisplay }) => {\n const innerValue = SPECIAL_FIELDS.indexOf(fieldName) !== -1 ? message.fields[fieldName] : value;\n\n return (\n \n {fieldName} \n \n \n );\n};\n\nMessageField.propTypes = {\n customFieldActions: PropTypes.node,\n fieldName: PropTypes.string.isRequired,\n message: PropTypes.object.isRequired,\n renderForDisplay: PropTypes.func.isRequired,\n value: PropTypes.any.isRequired,\n};\n\nMessageField.defaultProps = {\n customFieldActions: undefined,\n};\n\nexport default MessageField;\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 { MessageField } from 'components/search';\nimport { MessageDetailsDefinitionList } from 'components/common';\n\nclass MessageFields extends React.Component {\n static propTypes = {\n customFieldActions: PropTypes.node,\n message: PropTypes.object.isRequired,\n renderForDisplay: PropTypes.func.isRequired,\n };\n\n static defaultProps = {\n customFieldActions: undefined,\n };\n\n _formatFields = (fields) => {\n return Object.keys(fields)\n .sort()\n .map((key) => {\n return (\n \n );\n });\n };\n\n render() {\n const { message } = this.props;\n const formattedFields = message.formatted_fields;\n const fields = this._formatFields(formattedFields);\n\n return (\n \n {fields}\n \n );\n }\n}\n\nexport default MessageFields;\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 Immutable from 'immutable';\n\nimport { Link } from 'components/common/router';\nimport { MessageDetailsDefinitionList, ClipboardButton, Icon, Timestamp } from 'components/common';\nimport { Button, ButtonGroup, Col, Label, Row } from 'components/bootstrap';\nimport StreamLink from 'components/streams/StreamLink';\nimport MessageFields from 'components/search/MessageFields';\nimport MessageDetailsTitle from 'components/search/MessageDetailsTitle';\nimport Routes from 'routing/Routes';\nimport AppConfig from 'util/AppConfig';\n\nclass MessageDetail extends React.Component {\n static propTypes = {\n renderForDisplay: PropTypes.func.isRequired,\n inputs: PropTypes.object,\n nodes: PropTypes.object,\n message: PropTypes.object.isRequired,\n streams: PropTypes.object.isRequired,\n customFieldActions: PropTypes.node,\n };\n\n static defaultProps = {\n inputs: undefined,\n nodes: undefined,\n customFieldActions: undefined,\n };\n\n _inputName = (inputId) => {\n const { inputs } = this.props;\n const input = inputs.get(inputId);\n\n return input ? {input.title} : 'deleted input';\n };\n\n _nodeName = (nodeId) => {\n const { nodes } = this.props;\n const node = nodes.get(nodeId);\n let nodeInformation;\n\n if (node) {\n const nodeURL = Routes.node(nodeId);\n\n const nodeContent = (\n <>\n \n \n {node.short_node_id} / \n {node.hostname}\n >\n );\n\n nodeInformation = AppConfig.isCloud()\n ? nodeContent\n : {nodeContent};\n } else {\n nodeInformation = stopped node;\n }\n\n return nodeInformation;\n };\n\n _formatMessageActions = () => {\n const { message, customFieldActions } = this.props;\n\n if (!customFieldActions) {\n return ;\n }\n\n const messageUrl = message.index ? Routes.message_show(message.index, message.id) : '#';\n\n return (\n \n \n\n \n \n );\n };\n\n render() {\n const { renderForDisplay, nodes, message, customFieldActions } = this.props;\n const streamIds = Immutable.Set(message.stream_ids);\n const streams = streamIds.map((id) => {\n const stream = this.props.streams.get(id);\n\n if (stream !== undefined) {\n return ;\n }\n\n return null;\n });\n\n // Legacy\n const viaRadio = message.source_radio_id\n ? (\n \n via {this._inputName(message.source_radio_input_id)} on\n radio {this._nodeName(message.source_radio_id)}\n \n )\n : null;\n\n const rawTimestamp = message.fields.timestamp;\n const timestamp = [\n Timestamp ,\n ,\n ];\n\n const receivedBy = message.source_input_id && message.source_node_id && nodes\n ? (\n \n Received by \n \n {this._inputName(message.source_input_id)}{' '}\n on {this._nodeName(message.source_node_id)}\n {viaRadio &&
}\n {viaRadio}\n \n \n )\n : null;\n\n const messageTitle = message.index\n ? (\n \n {message.id}\n \n )\n : {message.id} ;\n\n return (\n \n \n \n {this._formatMessageActions()}\n \n \n \n {messageTitle}\n \n \n
\n \n \n \n {timestamp}\n {receivedBy}\n\n Stored in index \n {message.index ? message.index : 'Message is not stored'} \n\n {streamIds.size > 0 && Routed into streams }\n {streamIds.size > 0\n && (\n \n \n {streams}\n
\n \n )}\n \n \n \n \n \n \n \n
\n \n );\n }\n}\n\nexport default MessageDetail;\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 Immutable from 'immutable';\n\nimport { Col, Row } from 'components/bootstrap';\nimport StringUtils from 'util/StringUtils';\n\nimport MessageDetail from './MessageDetail';\n\nclass MessageShow extends React.Component {\n static propTypes = {\n message: PropTypes.object.isRequired,\n inputs: PropTypes.object,\n streams: PropTypes.object.isRequired,\n nodes: PropTypes.object,\n };\n\n static defaultProps = {\n inputs: undefined,\n nodes: undefined,\n };\n\n constructor(props) {\n super(props);\n\n this.state = this._getImmutableProps(props);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n this.setState(this._getImmutableProps(nextProps));\n }\n\n _getImmutableProps = (props) => {\n return {\n streams: props.streams ? Immutable.Map(props.streams) : props.streams,\n nodes: props.nodes ? Immutable.Map(props.nodes) : props.nodes,\n };\n };\n\n renderForDisplay = (fieldName) => {\n // No highlighting for the message details view.\n const { message } = this.props;\n\n return StringUtils.stringify(message.fields[fieldName]);\n };\n\n render() {\n const { inputs, message } = this.props;\n const { streams, nodes } = this.state;\n\n return (\n \n \n \n \n
\n );\n }\n}\n\nexport default MessageShow;\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 moment from 'moment';\n\nimport MessageFieldsFilter from 'logic/message/MessageFieldsFilter';\n\nconst MessageFormatter = {\n formatMessageSummary(messageSummary) {\n const { message } = messageSummary;\n\n return this.formatMessage(message._id, messageSummary.index, message, message, messageSummary.highlight_ranges, messageSummary.decoration_stats);\n },\n\n formatResultMessage(resultMessage) {\n const { message } = resultMessage;\n\n return this.formatMessage(message.id, resultMessage.index, message, message.fields, resultMessage.highlight_ranges, resultMessage.decoration_stats);\n },\n\n formatMessage(id, index, message, fields, highlightRanges, decorationStats) {\n const filteredFields = MessageFieldsFilter.filterFields(fields);\n\n return {\n id: id,\n timestamp: moment(message.timestamp).unix(),\n filtered_fields: filteredFields,\n formatted_fields: filteredFields,\n fields: fields,\n index: index,\n source_node_id: fields.gl2_source_node,\n source_input_id: fields.gl2_source_input,\n stream_ids: message.streams,\n highlight_ranges: highlightRanges,\n decoration_stats: decorationStats,\n };\n },\n};\n\nexport default MessageFormatter;\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 fetch from 'logic/rest/FetchProvider';\nimport MessageFormatter from 'logic/message/MessageFormatter';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport * as URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport StringUtils from 'util/StringUtils';\nimport { singletonStore, singletonActions } from 'logic/singleton';\n\nexport const MessagesActions = singletonActions(\n 'core.Messages',\n () => Reflux.createActions({\n loadMessage: { asyncResult: true },\n fieldTerms: { asyncResult: true },\n loadRawMessage: { asyncResult: true },\n }),\n);\n\nexport const MessagesStore = singletonStore(\n 'core.Messages',\n () => Reflux.createStore({\n listenables: [MessagesActions],\n sourceUrl: '',\n\n getInitialState() {\n return {};\n },\n\n loadMessage(index, messageId) {\n const { url } = ApiRoutes.MessagesController.single(index.trim(), messageId.trim());\n const promise = fetch('GET', URLUtils.qualifyUrl(url))\n .then(\n (response) => MessageFormatter.formatResultMessage(response),\n (errorThrown) => {\n UserNotification.error(`Loading message information failed with status: ${errorThrown}`,\n 'Could not load message information');\n },\n );\n\n MessagesActions.loadMessage.promise(promise);\n },\n\n fieldTerms(index, string) {\n const { url } = ApiRoutes.MessagesController.analyze(index, encodeURIComponent(StringUtils.stringify(string)));\n const promise = fetch('GET', URLUtils.qualifyUrl(url))\n .then(\n (response) => response.tokens,\n (error) => {\n UserNotification.error(`Loading field terms failed with status: ${error}`,\n 'Could not load field terms.');\n },\n );\n\n MessagesActions.fieldTerms.promise(promise);\n },\n\n loadRawMessage(message, remoteAddress, codec, codecConfiguration) {\n const { url } = ApiRoutes.MessagesController.parse();\n const payload = {\n message: message,\n remote_address: remoteAddress,\n codec: codec,\n configuration: codecConfiguration,\n };\n\n const promise = fetch('POST', URLUtils.qualifyUrl(url), payload)\n .then(\n (response) => MessageFormatter.formatResultMessage(response),\n (error) => {\n if (error.additional && error.additional.status === 400) {\n UserNotification.error('Please ensure the selected codec and its configuration are right. '\n + 'Check your server logs for more information.', 'Could not load raw message');\n\n return;\n }\n\n UserNotification.error(`Loading raw message failed with status: ${error}`,\n 'Could not load raw message');\n },\n );\n\n MessagesActions.loadRawMessage.promise(promise);\n },\n }),\n);\n"],"names":["CodecTypesActions","singletonActions","Reflux","list","asyncResult","CodecTypesStore","singletonStore","listenables","codecTypes","undefined","getInitialState","this","promise","fetch","URLUtils","ApiRoutes","url","then","response","trigger","error","UserNotification","DEFAULT_REMOTE_ADDRESS","ServerInputSelect","inputs","selectedInputId","onInputSelect","id","name","label","help","inputId","placeholder","options","value","disabled","size","formattedInputs","sort","inputA","inputB","title","toLowerCase","localeCompare","forEach","input","push","_formatInputSelectOptions","matchProp","onChange","ForwarderInputSelect","ForwarderInputDropdown","useForwarderMessageLoaders","onLoadMessage","autoLoadMessage","className","InputSelect","show","useState","selectedInputType","setSelectedInputType","AppConfig","type","e","target","RawMessageLoader","onMessageLoaded","inputIdSelector","loading","setLoading","message","setMessage","remoteAddress","setRemoteAddress","codec","setCodec","codecConfiguration","setCodecConfiguration","setInputId","useEffect","InputsActions","codecConfigurationOptions","_onCodecConfigurationChange","field","newConfiguration","_isSubmitDisabled","currentCodecConfiguration","requested_configuration","Object","keys","keyA","keyB","is_optional","map","key","configField","typeName","elementKey","_formatConfigField","md","onSubmit","event","preventDefault","MessagesActions","loadedMessage","getValueFromInput","rows","required","selectedInput","codecTypesIds","length","filter","codecA","codecB","_formatSelectOptions","selectedCodec","bsStyle","propTypes","PropTypes","defaultProps","connect","InputsStore","Immutable","PluginStore","messageLoaders","MessageFieldExtractorActions","props","newExtractorRoutes","ExtractorUtils","source_node_id","source_input_id","fieldName","index","extractorType","to","_refreshExtractorRoutes","nextProps","fields","pullRight","bsSize","_formatExtractorMenuItem","React","MessageTerms","styled","theme","css","fonts","family","monospace","MessageFieldDescription","state","messageTerms","term","customFieldActions","renderForDisplay","MESSAGE_FIELD","FULL_MESSAGE_FIELD","_getFormattedFieldActions","_shouldShowTerms","onDismiss","setState","_getFormattedTerms","SPECIAL_FIELDS","MessageField","innerValue","indexOf","fieldValue","MessageFields","formattedFields","formatted_fields","_formatFields","MessageDetail","get","style","wordBreak","nodeId","nodeInformation","node","nodes","nodeURL","Routes","nodeContent","short_node_id","hostname","href","messageUrl","text","streamIds","stream_ids","streams","stream","StreamLink","viaRadio","source_radio_id","_inputName","source_radio_input_id","_nodeName","rawTimestamp","timestamp","dateTime","receivedBy","messageTitle","_formatMessageActions","MessageDetailsTitle","MessageShow","StringUtils","_getImmutableProps","showTimestamp","formatMessageSummary","messageSummary","formatMessage","_id","highlight_ranges","decoration_stats","formatResultMessage","resultMessage","highlightRanges","decorationStats","filteredFields","MessageFieldsFilter","moment","unix","filtered_fields","gl2_source_node","gl2_source_input","loadMessage","fieldTerms","loadRawMessage","sourceUrl","messageId","trim","MessageFormatter","errorThrown","string","encodeURIComponent","tokens","payload","remote_address","configuration","additional","status"],"sourceRoot":""}