web-interface.assets.1255d548-3519.2239126c18006c8ef239.js.map Maven / Gradle / Ivy
{"version":3,"file":"1255d548-3519.2239126c18006c8ef239.js","mappings":"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","sources":["webpack://graylog-web-interface/./src/util/EventHandlersThrottler.js","webpack://graylog-web-interface/./src/stores/cluster/ClusterTrafficStore.ts","webpack://graylog-web-interface/./src/util/TrafficUtils.ts","webpack://graylog-web-interface/./src/components/cluster/TrafficGraph.tsx","webpack://graylog-web-interface/./src/components/cluster/GraylogClusterOverview.tsx","webpack://graylog-web-interface/./src/components/indexers/IndexerFailuresComponent.jsx","webpack://graylog-web-interface/./src/components/indexers/IndexerClusterHealthError.tsx","webpack://graylog-web-interface/./src/components/indexers/IndexerClusterHealth.tsx","webpack://graylog-web-interface/./src/components/indexers/IndexerClusterHealthSummary.tsx","webpack://graylog-web-interface/./src/components/indexers/IndexerFailure.jsx","webpack://graylog-web-interface/./src/components/indexers/IndexerFailuresList.jsx","webpack://graylog-web-interface/./src/stores/enterprise/EnterpriseStore.js","webpack://graylog-web-interface/./src/components/indexers/IndexerSystemOverviewComponent.tsx","webpack://graylog-web-interface/./src/logic/notifications/NotificationsFactory.tsx","webpack://graylog-web-interface/./src/hooks/useNotificationMessage.ts","webpack://graylog-web-interface/./src/components/notifications/Notification.tsx","webpack://graylog-web-interface/./src/components/notifications/NotificationsList.tsx","webpack://graylog-web-interface/./src/stores/systemjobs/SystemJobsStore.js","webpack://graylog-web-interface/./src/components/systemjobs/SystemJob.tsx","webpack://graylog-web-interface/./src/components/systemjobs/SystemJobsComponent.tsx","webpack://graylog-web-interface/./src/components/systemjobs/SystemJobsList.tsx","webpack://graylog-web-interface/./src/components/systemmessages/SystemMessage.jsx","webpack://graylog-web-interface/./src/stores/systemmessages/SystemMessagesStore.js","webpack://graylog-web-interface/./src/components/systemmessages/SystemMessagesComponent.jsx","webpack://graylog-web-interface/./src/components/systemmessages/SystemMessagesList.jsx","webpack://graylog-web-interface/./src/components/times/TimesList.jsx","webpack://graylog-web-interface/./src/pages/SystemOverviewPage.tsx","webpack://graylog-web-interface/./src/stores/indexers/IndexerFailuresStore.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 */\nconst DEFAULT_TIMEOUT = 1000 / 10; // 10 fps\n\n/**\n * Use when an event handler should be called after a timeout, instead of every time the event is triggered.\n * This is specially useful for handling window resize callbacks that may be expensive.\n */\nclass EventHandlersThrottler {\n constructor() {\n this.eventMutex = null;\n }\n\n /**\n * @param eventHandler Callback actually handling the event\n * @param timeout (optional) Time to wait before calling the callback\n */\n throttle(eventHandler, timeout) {\n if (this.eventMutex) {\n return;\n }\n\n this.eventMutex = setTimeout(() => {\n this.eventMutex = null;\n eventHandler();\n }, timeout || DEFAULT_TIMEOUT);\n }\n}\n\nexport default EventHandlersThrottler;\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 * as URLUtils from 'util/URLUtils';\nimport fetch from 'logic/rest/FetchProvider';\nimport { singletonStore, singletonActions } from 'logic/singleton';\n\ntype ClusterTrafficStoreState = {\n traffic: {\n from: string,\n to: string,\n output: Record,\n input: Record,\n decoded: Record,\n },\n};\ntype ClusterTrafficActionsType = {\n getTraffic: (days: number) => Promise,\n};\n\nexport const ClusterTrafficActions = singletonActions(\n 'core.ClusterTraffic',\n () => Reflux.createActions({\n getTraffic: { asyncResult: true },\n }),\n);\n\nexport const ClusterTrafficStore = singletonStore(\n 'core.ClusterTraffic',\n () => Reflux.createStore({\n listenables: [ClusterTrafficActions],\n traffic: undefined,\n\n getInitialState() {\n return { traffic: this.traffic };\n },\n\n getTraffic(days: number) {\n const promise = fetch('GET', URLUtils.qualifyUrl(`/system/cluster/traffic?days=${days}&daily=false`));\n\n promise.then((response) => {\n this.trigger({ traffic: response });\n });\n\n return 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 */\nimport map from 'lodash/map';\nimport mapKeys from 'lodash/mapKeys';\nimport mapValues from 'lodash/mapValues';\nimport moment from 'moment';\nimport crossfilter from 'crossfilter';\n\ntype Traffic = {\n [key: string]: number,\n}\n\nexport const formatTrafficData = (traffic: Traffic) => {\n const ndx = crossfilter(map(traffic, (value, key) => ({ ts: key, bytes: value })));\n const dailyTraffic = ndx.dimension((d) => moment(d.ts).format('YYYY-MM-DD'));\n\n const dailySums = dailyTraffic.group().reduceSum((d) => d.bytes);\n const t = mapKeys(dailySums.all(), (entry) => moment.utc(entry.key, 'YYYY-MM-DD').toISOString());\n\n return mapValues(t, (val) => val.value);\n};\n\nexport default {\n formatTrafficData,\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 React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Spinner } from 'components/common';\nimport GenericPlot from 'views/components/visualizations/GenericPlot';\n\ntype Props = {\n traffic: { [key: string]: number },\n width: number,\n layoutExtension?: {},\n};\n\nconst TrafficGraph = ({ width, traffic, layoutExtension }: Props) => {\n if (!traffic) {\n return ;\n }\n\n const chartData = [{\n type: 'bar',\n x: Object.keys(traffic),\n y: Object.values(traffic),\n }];\n const layout = {\n showlegend: false,\n margin: {\n l: 60,\n },\n xaxis: {\n type: 'date',\n title: {\n text: 'Time',\n },\n },\n hovermode: 'x',\n hoverlabel: {\n namelength: -1,\n },\n yaxis: {\n title: {\n text: 'Bytes',\n },\n rangemode: 'tozero',\n hoverformat: '.4s',\n tickformat: 's',\n },\n ...layoutExtension,\n };\n\n return (\n \n \n \n );\n};\n\nTrafficGraph.propTypes = {\n traffic: PropTypes.object.isRequired, // traffic is: {\"2017-11-15T15:00:00.000Z\": 68287229, ...}\n width: PropTypes.number.isRequired,\n layoutExtension: PropTypes.object,\n};\n\nTrafficGraph.defaultProps = {\n layoutExtension: {},\n};\n\nexport default TrafficGraph;\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 * as React from 'react';\nimport { useState, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport reduce from 'lodash/reduce';\nimport styled, { css } from 'styled-components';\nimport { PluginStore } from 'graylog-web-plugin/plugin';\n\nimport EventHandlersThrottler from 'util/EventHandlersThrottler';\nimport NumberUtils from 'util/NumberUtils';\nimport { useStore } from 'stores/connect';\nimport { Col, Row, Input } from 'components/bootstrap';\nimport { Spinner } from 'components/common';\nimport { ClusterTrafficActions, ClusterTrafficStore } from 'stores/cluster/ClusterTrafficStore';\nimport { NodesStore } from 'stores/nodes/NodesStore';\nimport { formatTrafficData } from 'util/TrafficUtils';\nimport { isPermitted } from 'util/PermissionsMixin';\nimport useCurrentUser from 'hooks/useCurrentUser';\nimport useSendTelemetry from 'logic/telemetry/useSendTelemetry';\nimport { TELEMETRY_EVENT_TYPE } from 'logic/telemetry/Constants';\n\nimport TrafficGraph from './TrafficGraph';\n\nconst DAYS = [\n 30,\n 90,\n 180,\n 365,\n];\n\nconst Wrapper = styled.div`\n margin-bottom: 5px;\n\n .control-label {\n padding-top: 0;\n }\n\n .graph-days-select {\n display: flex;\n align-items: baseline;\n\n select {\n padding-top: 3px;\n height: 28px;\n }\n }\n`;\n\nconst StyledDl = styled.dl`\n margin-bottom: 0;\n`;\nconst StyledH2 = styled.h2(({ theme }) => css`\n margin-bottom: ${theme.spacings.sm};\n`);\nconst StyledH3 = styled.h3(({ theme }) => css`\n margin-bottom: ${theme.spacings.sm};\n`);\n\nconst Header = () => Graylog cluster ;\n\nconst ClusterInfo = () => {\n const nodes = useStore(NodesStore);\n\n if (!nodes) {\n return ;\n }\n\n const { clusterId, nodeCount } = nodes;\n\n return (\n \n Cluster ID: \n {clusterId || 'Not available'} \n Number of nodes: \n {nodeCount} \n \n );\n};\n\nconst GraylogClusterTrafficGraph = () => {\n const { traffic } = useStore(ClusterTrafficStore);\n const [graphDays, setGraphDays] = useState(DAYS[0]);\n const [graphWidth, setGraphWidth] = useState(600);\n const eventThrottler = useRef(new EventHandlersThrottler());\n const containerRef = useRef(null);\n const licensePlugin = PluginStore.exports('license');\n const currentUser = useCurrentUser();\n const sendTelemetry = useSendTelemetry();\n\n const onGraphDaysChange = (event: React.ChangeEvent): void => {\n event.preventDefault();\n const newDays = Number(event.target.value);\n\n setGraphDays(newDays);\n\n sendTelemetry(TELEMETRY_EVENT_TYPE.SYSTEM_OVERVIEW_OUTGOING_TRAFFIC_DAYS_CHANGED, {\n app_pathname: 'system-overview',\n app_section: 'outgoing-traffic',\n app_action_value: 'trafficgraph-days-button',\n event_details: { value: newDays },\n });\n };\n\n useEffect(() => {\n ClusterTrafficActions.getTraffic(graphDays);\n }, [graphDays]);\n\n useEffect(() => {\n const _resizeGraphs = () => {\n const { clientWidth } = containerRef.current;\n\n setGraphWidth(clientWidth);\n };\n\n const _onResize = () => {\n eventThrottler.current.throttle(() => _resizeGraphs());\n };\n\n window.addEventListener('resize', _onResize);\n\n if (containerRef.current) {\n _resizeGraphs();\n }\n\n return () => {\n window.removeEventListener('resize', _onResize);\n };\n }, []);\n\n const TrafficGraphComponent = (isPermitted(currentUser.permissions, ['licenses:read']) && licensePlugin[0]?.EnterpriseTrafficGraph) || TrafficGraph;\n let sumOutput = null;\n let trafficGraph = ;\n\n if (traffic) {\n const bytesOut = reduce(traffic.output, (result, value) => result + value);\n\n sumOutput = Last {graphDays} days: {NumberUtils.formatBytes(bytesOut)};\n\n const unixTraffic = formatTrafficData(traffic.output);\n\n trafficGraph = (\n \n );\n }\n\n return (\n <>\n \n \n {DAYS.map((size) => )}\n \n \n\n Outgoing traffic {sumOutput} \n {trafficGraph}\n >\n );\n};\n\ntype Props = {\n layout?: 'default' | 'compact',\n children: React.ReactNode\n}\n\nconst GraylogClusterOverview = ({ layout, children }: Props) => {\n if (layout === 'compact') {\n return (\n \n \n \n \n \n \n
\n {children}\n \n \n \n \n
\n \n
\n );\n }\n\n return (\n \n \n \n \n
\n {children}\n \n \n \n \n
\n \n
\n );\n};\n\nGraylogClusterOverview.propTypes = {\n layout: PropTypes.oneOf(['default', 'compact']),\n children: PropTypes.node,\n};\n\nGraylogClusterOverview.defaultProps = {\n layout: 'default',\n children: null,\n};\n\nexport default GraylogClusterOverview;\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 from 'react';\nimport numeral from 'numeral';\nimport moment from 'moment';\nimport styled from 'styled-components';\n\nimport { LinkContainer } from 'components/common/router';\nimport { Alert, Col, Row, Button } from 'components/bootstrap';\nimport { Spinner } from 'components/common';\nimport DocsHelper from 'util/DocsHelper';\nimport Routes from 'routing/Routes';\nimport { DocumentationLink } from 'components/support';\nimport { IndexerFailuresStore } from 'stores/indexers/IndexerFailuresStore';\n\nconst Header = styled.div`\n display: flex;\n justify-content: space-between;\n`;\n\nconst formatTextForFailureCount = (count) => {\n if (count === 0) {\n return 'No failed indexing attempts in the last 24 hours.';\n }\n\n return There were {numeral(count).format('0,0')} failed indexing attempts in the last 24 hours.;\n};\n\nclass IndexerFailuresComponent extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {};\n }\n\n componentDidMount() {\n const since = moment().subtract(24, 'hours');\n\n IndexerFailuresStore.count(since).then((response) => {\n this.setState({ total: response.count });\n });\n }\n\n _formatFailuresSummary = () => (\n \n {formatTextForFailureCount(this.state.total)}\n\n \n \n \n \n );\n\n render() {\n let content;\n\n if (this.state.total === undefined) {\n content = ;\n } else {\n content = this._formatFailuresSummary();\n }\n\n return (\n \n \n \n Indexer failures
\n \n \n \n Every message that was not successfully indexed will be logged as an indexer failure.\n
\n {content}\n \n
\n );\n }\n}\n\nexport default IndexerFailuresComponent;\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 from 'react';\nimport styled from 'styled-components';\n\nimport { Alert } from 'components/bootstrap';\nimport type FetchError from 'logic/errors/FetchError';\n\nconst ESClusterError = styled(Alert)`\n margin-top: 10px;\n margin-bottom: 5px;\n`;\n\nconst IndexerClusterHealthError = ({ error }: { error: FetchError }) => (\n \n Could not retrieve Elasticsearch cluster health. Fetching Elasticsearch cluster health failed: {error.message}\n \n);\n\nexport default IndexerClusterHealthError;\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 from 'react';\nimport { useQueries } from '@tanstack/react-query';\nimport styled from 'styled-components';\n\nimport { isPermitted } from 'util/PermissionsMixin';\nimport { Spinner } from 'components/common';\nimport { Row, Col } from 'components/bootstrap';\nimport { DocumentationLink } from 'components/support';\nimport DocsHelper from 'util/DocsHelper';\nimport { IndexerClusterHealthSummary } from 'components/indexers';\nimport type FetchError from 'logic/errors/FetchError';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport { fetchPeriodically } from 'logic/rest/FetchProvider';\nimport * as URLUtils from 'util/URLUtils';\nimport useCurrentUser from 'hooks/useCurrentUser';\n\nimport IndexerClusterHealthError from './IndexerClusterHealthError';\n\nconst Header = styled.div`\n display: flex;\n justify-content: space-between;\n`;\n\nconst GET_INDEXER_CLUSTER_HEALTH = 'indexerCluster.health';\nconst GET_INDEXER_CLUSTER_NAME = 'indexerCluster.name';\n\nconst getIndexerClusterHealth = () => {\n const url = URLUtils.qualifyUrl(ApiRoutes.IndexerClusterApiController.health().url);\n\n return fetchPeriodically('GET', url);\n};\n\nconst getIndexerClusterName = () => {\n const url = URLUtils.qualifyUrl(ApiRoutes.IndexerClusterApiController.name().url);\n\n return fetchPeriodically('GET', url);\n};\n\nconst useLoadHealthAndName = (enabled: boolean) => {\n const options = { refetchInterval: 5000, retry: 0, enabled };\n const [\n { data: healthData, isFetching: healthIsFetching, error: healthError, isSuccess: healthIsSuccess, isRefetching: healthIsRefetching },\n { data: nameData, isFetching: nameIsFetching, error: nameError, isSuccess: nameIsSuccess, isRefetching: nameIsRefetching },\n ] = useQueries({\n queries: [\n { queryKey: [GET_INDEXER_CLUSTER_HEALTH], queryFn: getIndexerClusterHealth, ...options },\n { queryKey: [GET_INDEXER_CLUSTER_NAME], queryFn: getIndexerClusterName, ...options },\n ],\n });\n\n return ({\n health: healthData,\n name: nameData,\n error: (healthError || nameError) as FetchError,\n loading: (healthIsFetching || nameIsFetching) && !healthIsRefetching && !nameIsRefetching,\n isSuccess: healthIsSuccess && nameIsSuccess,\n });\n};\n\ntype Props = {\n minimal?: boolean,\n};\n\nconst IndexerClusterHealth = ({ minimal }: Props) => {\n const currentUser = useCurrentUser();\n const userHasRequiredPermissions = isPermitted(currentUser.permissions, 'indexercluster:read');\n const { health, name, loading, error, isSuccess } = useLoadHealthAndName(userHasRequiredPermissions);\n\n if (!userHasRequiredPermissions) {\n return null;\n }\n\n return (\n \n \n {!minimal && (\n \n Elasticsearch cluster
\n \n \n )}\n\n {isSuccess && }\n {loading &&
}\n {error && }\n \n
\n );\n};\n\nIndexerClusterHealth.defaultProps = {\n minimal: false,\n};\n\nexport default IndexerClusterHealth;\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, { useMemo } from 'react';\nimport styled from 'styled-components';\n\nimport { Alert } from 'components/bootstrap';\nimport { DocumentationLink } from 'components/support';\nimport DocsHelper from 'util/DocsHelper';\n\nconst ESClusterStatus = styled(Alert)`\n margin-top: 10px;\n margin-bottom: 5px;\n`;\n\nconst IndexerClusterHealthSummary = ({ health, name }: {\n health: {\n status: string,\n shards: {\n active: string,\n initializing: string,\n relocating: string,\n unassigned: string\n }\n },\n name?: {\n name: string\n }\n}) => {\n const formattedHealthStatus = health.status.toLowerCase();\n\n const alertClassForHealth = () => {\n switch (formattedHealthStatus) {\n case 'green': return 'success';\n case 'yellow': return 'warning';\n case 'red': return 'danger';\n default: return 'success';\n }\n };\n\n const formattedTextForHealth = useMemo(() => {\n const text = `Elasticsearch cluster ${name?.name || ''} is ${formattedHealthStatus}.`;\n\n switch (formattedHealthStatus) {\n case 'green': return text;\n case 'yellow':\n case 'red': return {text};\n default: return text;\n }\n }, [formattedHealthStatus, name]);\n\n return (\n \n {formattedTextForHealth}{' '}\n Shards:{' '}\n {health.shards.active} active,{' '}\n {health.shards.initializing} initializing,{' '}\n {health.shards.relocating} relocating,{' '}\n {health.shards.unassigned} unassigned,{' '}\n \n \n );\n};\n\nIndexerClusterHealthSummary.defaultProps = {\n name: undefined,\n};\n\nIndexerClusterHealthSummary.propTypes = {\n health: PropTypes.object.isRequired,\n name: PropTypes.object,\n};\n\nexport default IndexerClusterHealthSummary;\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 RelativeTime from 'components/common/RelativeTime';\n\nclass IndexerFailure extends React.Component {\n static propTypes = {\n failure: PropTypes.object.isRequired,\n };\n\n render() {\n const { failure } = this.props;\n\n return (\n \n \n {failure.index} \n {failure.letter_id} \n {failure.message} \n \n );\n }\n}\n\nexport default IndexerFailure;\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 { Alert, Table } from 'components/bootstrap';\nimport { Icon } from 'components/common';\nimport { IndexerFailure } from 'components/indexers';\n\nclass IndexerFailuresList extends React.Component {\n static propTypes = {\n failures: PropTypes.arrayOf(PropTypes.object).isRequired,\n };\n\n render() {\n if (this.props.failures.length === 0) {\n return (\n Hurray! There are not any indexer failures. \n );\n }\n\n return (\n \n \n \n \n Timestamp \n Index \n Letter ID \n Error message \n \n \n \n {this.props.failures.map((failure) => )}\n \n
\n \n );\n }\n}\n\nexport default IndexerFailuresList;\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';\nimport get from 'lodash/get';\n\nimport { qualifyUrl } from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport fetch from 'logic/rest/FetchProvider';\nimport { singletonStore, singletonActions } from 'logic/singleton';\n\nexport const EnterpriseActions = singletonActions(\n 'core.Enterprise',\n () => Reflux.createActions({\n getLicenseInfo: { asyncResult: true },\n }),\n);\n\nexport const EnterpriseStore = singletonStore(\n 'core.Enterprise',\n () => Reflux.createStore({\n listenables: [EnterpriseActions],\n sourceUrl: '/enterprise/license',\n licenseStatus: undefined,\n\n getInitialState() {\n return this.getState();\n },\n\n propagateChanges() {\n this.trigger(this.getState());\n },\n\n getState() {\n return {\n licenseStatus: this.licenseStatus,\n };\n },\n\n enterpriseUrl(path = '') {\n return qualifyUrl(`${this.sourceUrl}/${path}`);\n },\n\n refresh() {\n this.getLicenseInfo();\n },\n\n getLicenseInfo() {\n const promise = fetch('GET', this.enterpriseUrl('info'));\n\n promise.then(\n (response) => {\n this.licenseStatus = response.license_info.license_status;\n this.propagateChanges();\n\n return response;\n },\n (error) => {\n const errorMessage = get(error, 'additional.body.message', error.message);\n\n UserNotification.error(`Couldn't load license information: ${errorMessage}`, 'Error');\n },\n );\n\n EnterpriseActions.getLicenseInfo.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';\n\nimport { Spinner } from 'components/common';\nimport usePluginEntities from 'hooks/usePluginEntities';\nimport { EnterpriseActions } from 'stores/enterprise/EnterpriseStore';\n\nimport IndexerFailuresComponent from './IndexerFailuresComponent';\n\nconst IndexerSystemOverviewComponent = () => {\n const [loadIndexerFailuresComponent, setLoadIndexerFailuresComponent] = useState( );\n\n const pluginSystemOverview = usePluginEntities('systemOverview');\n const EnterpriseIndexerFailures = pluginSystemOverview?.[0]?.component;\n\n useEffect(() => {\n if (EnterpriseIndexerFailures) {\n EnterpriseActions.getLicenseInfo().then((response) => {\n setLoadIndexerFailuresComponent(response.license_info.license_status === 'installed' ? : );\n });\n } else {\n setLoadIndexerFailuresComponent( );\n }\n }, [EnterpriseIndexerFailures, setLoadIndexerFailuresComponent]);\n\n return loadIndexerFailuresComponent;\n};\n\nexport default IndexerSystemOverviewComponent;\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 Routes from 'routing/Routes';\nimport type { NotificationType } from 'stores/notifications/NotificationsStore';\n\nclass NotificationsFactory {\n static getValuesForNotification(notification: NotificationType) {\n switch (notification.type) {\n case 'legacy_ldap_config_migration': {\n const { auth_service_id: authServiceId } = notification.details;\n\n return {\n values: {\n AUTHENTICATION_BACKEND: Routes.SYSTEM.AUTHENTICATION.BACKENDS.show(authServiceId),\n },\n };\n }\n\n case 'no_input_running':\n case 'input_failure_shutdown':\n case 'input_failed':\n case 'input_failed_to_start': { // eslint-disable-line padding-line-between-statements\n return {\n values: {\n SYSTEM_INPUTS: Routes.SYSTEM.INPUTS,\n },\n };\n }\n\n case 'data_node_needs_provisioning':\n return {\n values: {\n DATA_NODE_CONFIGURATION: Routes.SYSTEM.configurationsSection('Data Node'),\n },\n };\n\n default:\n return undefined;\n }\n }\n}\n\nexport default NotificationsFactory;\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 { useEffect } from 'react';\n\nimport { useStore } from 'stores/connect';\nimport NotificationsFactory from 'logic/notifications/NotificationsFactory';\nimport type { NotificationType } from 'stores/notifications/NotificationsStore';\nimport { NotificationsStore, NotificationsActions } from 'stores/notifications/NotificationsStore';\n\nconst useNotificationMessage = (notification: NotificationType) => {\n const { messages } = useStore(NotificationsStore);\n\n useEffect(() => {\n NotificationsActions.getHtmlMessage(notification.type, notification.key, NotificationsFactory.getValuesForNotification(notification));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const key = `${notification.type}-${notification.key}`;\n\n return messages?.[key];\n};\n\nexport default useNotificationMessage;\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, { css } from 'styled-components';\nimport DOMPurify from 'dompurify';\n\nimport { Alert } from 'components/bootstrap';\nimport { RelativeTime, Spinner } from 'components/common';\nimport type { NotificationType } from 'stores/notifications/NotificationsStore';\nimport { NotificationsActions } from 'stores/notifications/NotificationsStore';\nimport useNotificationMessage from 'hooks/useNotificationMessage';\n\ntype Props = {\n notification: NotificationType,\n};\n\nconst StyledAlert = styled(Alert)(({ theme }) => css`\n margin-top: 10px;\n\n i {\n color: ${theme.colors.gray[10]};\n }\n\n form {\n margin-bottom: 0;\n }\n`);\n\nconst NotificationTimestamp = styled.span(({ theme }) => css`\n margin-left: 3px;\n font-size: ${theme.fonts.size.small};\n`);\n\nconst _sanitizeDescription = (description) => DOMPurify.sanitize(description);\n\nconst Notification = ({ notification }: Props) => {\n const message = useNotificationMessage(notification);\n\n const _onClose = () => {\n // eslint-disable-next-line no-alert\n if (window.confirm('Really delete this notification?')) {\n NotificationsActions.delete(notification.type, notification.key);\n }\n };\n\n if (!message) {\n return ;\n }\n\n /* eslint-disable react/no-danger */\n return (\n \n {message.title}{' '}\n\n \n (triggered )\n \n >\n )}\n onDismiss={_onClose}>\n \n \n );\n};\n\nNotification.propTypes = {\n notification: PropTypes.exact({\n severity: PropTypes.string.isRequired,\n details: PropTypes.object,\n type: PropTypes.string.isRequired,\n key: PropTypes.string,\n timestamp: PropTypes.string.isRequired,\n node_id: PropTypes.string.isRequired,\n }).isRequired,\n};\n\nexport default Notification;\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 from 'react';\n\nimport { Alert, Row, Col } from 'components/bootstrap';\nimport { Spinner } from 'components/common';\nimport Notification from 'components/notifications/Notification';\nimport type { NotificationType } from 'stores/notifications/NotificationsStore';\nimport { NotificationsStore } from 'stores/notifications/NotificationsStore';\nimport { useStore } from 'stores/connect';\n\nconst _formatNotificationCount = (count: number) => {\n if (count === 1) {\n return 'is one notification';\n }\n\n return `are ${count} notifications`;\n};\n\nconst getTitle = (count) => (count === 0 ? 'No notifications' : `There ${_formatNotificationCount(count)}`);\n\nconst getContent = (count: number, notificationsList: Array) => (count === 0 ? (\n \n No notifications\n \n) : (\n notificationsList?.map((notification) => )\n));\n\nconst NotificationsList = () => {\n const { notifications, total } = useStore(NotificationsStore);\n\n if (!notifications) {\n return ;\n }\n\n return (\n \n \n {getTitle(total)}
\n \n Notifications are triggered by Graylog and indicate a situation you should act upon. Many notification\n types will also provide a link to the Graylog documentation if you need more information or assistance.\n
\n\n {getContent(total, notifications)}\n \n
\n );\n};\n\nexport default NotificationsList;\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 * as URLUtils from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch, { fetchPeriodically } from 'logic/rest/FetchProvider';\nimport { singletonStore, singletonActions } from 'logic/singleton';\n\nexport const SystemJobsActions = singletonActions(\n 'core.SystemJobs',\n () => Reflux.createActions({\n list: { asyncResult: true },\n getJob: { asyncResult: true },\n acknowledgeJob: { asyncResult: true },\n cancelJob: { asyncResult: true },\n }),\n);\n\nexport const SystemJobsStore = singletonStore(\n 'core.SystemJobs',\n () => Reflux.createStore({\n listenables: [SystemJobsActions],\n\n jobsById: {},\n\n getInitialState() {\n return { jobs: this.jobs, jobsById: this.jobsById };\n },\n list() {\n const url = URLUtils.qualifyUrl(ApiRoutes.SystemJobsApiController.list().url);\n const promise = fetchPeriodically('GET', url).then((response) => {\n this.jobs = response;\n this.trigger({ jobs: response });\n\n return response;\n });\n\n SystemJobsActions.list.promise(promise);\n },\n getJob(jobId) {\n const url = URLUtils.qualifyUrl(ApiRoutes.SystemJobsApiController.getJob(jobId).url);\n const promise = fetch('GET', url).then((response) => {\n this.jobsById = { ...this.jobsById, [response.id]: response };\n this.trigger({ jobsById: this.jobsById });\n\n return response;\n }, () => {\n // If we get an error (probably 404 because the job is gone), remove the job from the cache and trigger an update.\n const { [jobId]: currentJob, ...rest } = this.jobsById;\n\n this.jobsById = rest;\n this.trigger({ jobsById: this.jobsById });\n });\n\n SystemJobsActions.getJob.promise(promise);\n },\n acknowledgeJob(jobId) {\n const url = URLUtils.qualifyUrl(ApiRoutes.SystemJobsApiController.acknowledgeJob(jobId).url);\n const promise = fetch('DELETE', url).then((response) => {\n delete (this.jobsById[response.id]);\n });\n\n SystemJobsActions.acknowledgeJob.promise(promise);\n },\n cancelJob(jobId) {\n const url = URLUtils.qualifyUrl(ApiRoutes.SystemJobsApiController.cancelJob(jobId).url);\n const promise = fetch('DELETE', url).then((response) => {\n delete (this.jobsById[response.id]);\n });\n\n SystemJobsActions.cancelJob.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 */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport styled, { css } from 'styled-components';\n\nimport { ProgressBar, LinkToNode, RelativeTime, Icon } from 'components/common';\nimport { Button } from 'components/bootstrap';\nimport { SystemJobsActions } from 'stores/systemjobs/SystemJobsStore';\nimport UserNotification from 'util/UserNotification';\nimport { StyledBadge } from 'components/bootstrap/Badge';\n\nenum JobStatus {\n Cancelled = 'cancelled',\n Complete = 'complete',\n Error = 'error',\n Paused = 'paused',\n Runnable = 'runnable',\n Running = 'running',\n}\n\nconst StatusBadge = styled(StyledBadge)(({ status, theme }) => {\n const {\n primary,\n success,\n info,\n warning,\n danger,\n } = theme.colors.variant.dark;\n const statuses = {\n cancelled: warning,\n complete: success,\n error: danger,\n queued: info,\n running: primary,\n };\n const color = statuses[status] ?? info;\n\n return css`\n margin-left: 4px;\n background-color: ${color};\n color: ${theme.utils.readableColor(color)};\n`;\n});\n\nconst StyledProgressBar = styled(ProgressBar)`\n margin-top: 2px;\n margin-bottom: 5px;\n`;\n\nconst JobWrap = styled.div`\n margin-bottom: 5px;\n`;\n\nconst AcknowledgeButton = styled(Button)(({ theme }) => css`\n && {\n color: ${theme.colors.variant.light.default};\n \n &:hover {\n color: ${theme.colors.variant.default};\n }\n }\n`);\n\nconst SystemJob = ({ job }) => {\n const jobIsOver = job.job_status === JobStatus.Complete\n || job.percent_complete === 100\n || job.job_status === JobStatus.Cancelled\n || job.job_status === JobStatus.Error;\n const mappedJobStatus = job.job_status === JobStatus.Runnable ? 'queued' : job.job_status;\n\n const _onAcknowledge = () => (e) => {\n e.preventDefault();\n\n SystemJobsActions.acknowledgeJob(job.id).catch((error) => {\n UserNotification.error(error.responseMessage, 'Unable to acknowledge the job');\n });\n };\n\n const _onCancel = () => (e) => {\n e.preventDefault();\n\n // eslint-disable-next-line no-alert\n if (window.confirm(`Are you sure you want to cancel system job \"${job.info}\"?`)) {\n SystemJobsActions.cancelJob(job.id).catch((error) => {\n UserNotification.error(error.responseMessage, 'Unable to cancel the job');\n });\n }\n };\n\n return (\n \n \n {' '}\n {job.info}{' '}\n - on {' '}\n {' '}\n \n {mappedJobStatus} \n \n {!jobIsOver && job.is_cancelable\n ? ()\n : ( )}\n \n\n {!jobIsOver && }\n \n );\n};\n\nSystemJob.propTypes = {\n job: PropTypes.shape({\n info: PropTypes.string,\n id: PropTypes.string,\n percent_complete: PropTypes.number,\n is_cancelable: PropTypes.bool,\n name: PropTypes.string,\n node_id: PropTypes.string,\n started_at: PropTypes.string,\n execution_duration: PropTypes.string,\n job_status: PropTypes.oneOf(Object.values(JobStatus)),\n }).isRequired,\n};\n\nexport default SystemJob;\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 } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { SystemJobsList } from 'components/systemjobs';\nimport { Col, Row } from 'components/bootstrap';\nimport { Spinner } from 'components/common';\nimport connect from 'stores/connect';\nimport { SystemJobsActions, SystemJobsStore } from 'stores/systemjobs/SystemJobsStore';\n\nconst SystemJobsComponent = ({ jobs }) => {\n useEffect(() => {\n SystemJobsActions.list();\n const interval = setInterval(SystemJobsActions.list, 2000);\n\n return () => {\n clearInterval(interval);\n };\n }, []);\n\n if (!jobs) {\n return ;\n }\n\n const jobList = Object.keys(jobs)\n .map((nodeId) => (jobs[nodeId] ? jobs[nodeId].jobs : []))\n .reduce((a, b) => a.concat(b), []);\n\n return (\n \n \n System jobs
\n \n A system job is a long-running task a graylog-server node executes for maintenance reasons. Some jobs\n provide progress information or can be stopped.\n
\n\n \n \n
\n );\n};\n\nSystemJobsComponent.propTypes = {\n jobs: PropTypes.objectOf(\n PropTypes.shape({\n jobs: PropTypes.array,\n }),\n ),\n};\n\nSystemJobsComponent.defaultProps = {\n jobs: undefined,\n};\n\nexport default connect(SystemJobsComponent,\n { systemJobsStore: SystemJobsStore },\n ({ systemJobsStore }) => ({ jobs: (systemJobsStore as any).jobs }));\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 styled, { css } from 'styled-components';\n\nimport { SystemJob } from 'components/systemjobs';\nimport { Alert } from 'components/bootstrap';\n\nconst SystemJobWrap = styled.div(({ theme }) => css`\n margin-top: 10px;\n border-bottom: 1px solid ${theme.colors.gray[80]};\n\n .progress {\n margin-top: 2px;\n margin-bottom: 5px;\n }\n\n .finished {\n display: none;\n position: relative;\n top: -1px;\n left: 2px;\n font-family: Arial, sans-serif;\n font-size: ${theme.fonts.size.small};\n }\n`);\n\nconst StyledAlert = styled(Alert)`\n margin-top: 10px;\n`;\n\nconst SystemJobsList = ({ jobs }): React.ReactElement => {\n const formatSystemJob = (job) => (\n \n \n \n );\n\n const formattedJobs = jobs.map(formatSystemJob);\n\n return (\n (formattedJobs.length === 0)\n ? (\n \n No active system jobs.\n \n )\n : (\n \n {formattedJobs}\n \n )\n );\n};\n\nSystemJobsList.propTypes = {\n jobs: PropTypes.arrayOf(PropTypes.object).isRequired,\n};\n\nexport default SystemJobsList;\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 moment from 'moment';\n\nimport { LinkToNode } from 'components/common';\n\nclass SystemMessage extends React.Component {\n static propTypes = {\n message: PropTypes.object.isRequired,\n };\n\n render() {\n const { message } = this.props;\n\n return (\n \n {moment(message.timestamp).format()} \n \n \n \n {message.content} \n \n );\n }\n}\n\nexport default SystemMessage;\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 * as URLUtils from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport { fetchPeriodically } from 'logic/rest/FetchProvider';\nimport { singletonStore } from 'logic/singleton';\n\n// eslint-disable-next-line import/prefer-default-export\nexport const SystemMessagesStore = singletonStore(\n 'core.SystemMessages',\n () => Reflux.createStore({\n listenables: [],\n\n all(page) {\n const url = URLUtils.qualifyUrl(ApiRoutes.SystemMessagesApiController.all(page).url);\n\n return fetchPeriodically('GET', url);\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 */\nimport React from 'react';\n\nimport { Col, Row } from 'components/bootstrap';\nimport { Pagination, Spinner } from 'components/common';\nimport { SystemMessagesList } from 'components/systemmessages';\nimport { SystemMessagesStore } from 'stores/systemmessages/SystemMessagesStore';\n\nclass SystemMessagesComponent extends React.Component {\n PER_PAGE = 30;\n\n constructor(props) {\n super(props);\n\n this.state = { currentPage: 1 };\n }\n\n componentDidMount() {\n const { currentPage } = this.state;\n\n this.loadMessages(currentPage);\n\n this.interval = setInterval(() => {\n const { currentPage: page } = this.state;\n this.loadMessages(page);\n }, 1000);\n }\n\n componentWillUnmount() {\n clearInterval(this.interval);\n }\n\n loadMessages = (page) => {\n SystemMessagesStore.all(page).then((response) => {\n this.setState(response);\n });\n };\n\n _onSelected = (selectedPage) => {\n this.setState({ currentPage: selectedPage });\n this.loadMessages(selectedPage);\n };\n\n render() {\n const { currentPage, messages, total } = this.state;\n let content;\n\n if (total && messages) {\n const numberPages = Math.ceil(total / this.PER_PAGE);\n\n content = (\n \n \n\n \n \n );\n } else {\n content = ;\n }\n\n return (\n \n \n System messages
\n\n \n System messages are generated by graylog-server nodes on certain events that may be interesting for\n the Graylog administrators. You don't need to actively act upon any message in here because notifications\n will be raised for any events that required action.\n
\n\n {content}\n \n
\n );\n }\n}\n\nexport default SystemMessagesComponent;\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 styled, { css } from 'styled-components';\n\nimport { Table } from 'components/bootstrap';\nimport { SystemMessage } from 'components/systemmessages';\n\nconst SystemMessagesTable = styled(Table)(({ theme }) => css`\n font-size: ${theme.fonts.size.body};\n\n a {\n color: ${theme.colors.global.textDefault};\n }\n`);\n\nconst TimestampTH = styled.th`\n width: 200px;\n`;\n\nconst SystemMessagesList = ({ messages }) => (\n \n \n \n Timestamp \n Node \n Message \n \n \n\n \n {messages.map((message) => )}\n \n \n);\n\nSystemMessagesList.propTypes = {\n messages: PropTypes.arrayOf(PropTypes.object).isRequired,\n};\n\nexport default SystemMessagesList;\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 from 'react';\n// eslint-disable-next-line no-restricted-imports\nimport createReactClass from 'create-react-class';\nimport Reflux from 'reflux';\nimport moment from 'moment';\n\nimport { Col, Row } from 'components/bootstrap';\nimport { Spinner, Timestamp, BrowserTime } from 'components/common';\nimport { CurrentUserStore } from 'stores/users/CurrentUserStore';\nimport { SystemStore } from 'stores/system/SystemStore';\n\nconst TimesList = createReactClass({\n // eslint-disable-next-line react/no-unused-class-component-methods\n displayName: 'TimesList',\n mixins: [Reflux.connect(CurrentUserStore), Reflux.connect(SystemStore)],\n\n getInitialState() {\n return { time: moment() };\n },\n\n componentDidMount() {\n this.interval = setInterval(() => this.setState(this.getInitialState()), 1000);\n },\n\n componentWillUnmount() {\n clearInterval(this.interval);\n },\n\n render() {\n if (!this.state.system) {\n return ;\n }\n\n const { time } = this.state;\n const timeFormat = 'withTz';\n const { currentUser } = this.state;\n const serverTimezone = this.state.system.timezone;\n\n return (\n \n \n Time configuration
\n\n \n Dealing with timezones can be confusing. Here you can see the timezone applied to different components of your system.\n You can check timezone settings of specific graylog-server nodes on their respective detail page.\n
\n\n \n - User {currentUser.username}:
\n \n - Your web browser:
\n \n - Graylog server:
\n \n
\n \n
\n );\n },\n});\n\nexport default TimesList;\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 { DocumentTitle, IfPermitted } from 'components/common';\nimport { IndexerClusterHealth } from 'components/indexers';\nimport IndexerSystemOverviewComponent from 'components/indexers/IndexerSystemOverviewComponent';\nimport { NotificationsList } from 'components/notifications';\nimport { SystemJobsComponent } from 'components/systemjobs';\nimport { SystemMessagesComponent } from 'components/systemmessages';\nimport { TimesList } from 'components/times';\nimport { GraylogClusterOverview } from 'components/cluster';\nimport HideOnCloud from 'util/conditional/HideOnCloud';\n\nconst SystemOverviewPage = () => (\n \n \n \n \n \n\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 SystemOverviewPage;\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';\nimport moment from 'moment';\n\nimport * as URLUtils from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\nimport { singletonStore } from 'logic/singleton';\n\n// eslint-disable-next-line import/prefer-default-export\nexport const IndexerFailuresStore = singletonStore(\n 'core.IndexerFailures',\n () => Reflux.createStore({\n listenables: [],\n\n list(limit, offset) {\n const url = URLUtils.qualifyUrl(ApiRoutes.IndexerFailuresApiController.list(limit, offset).url);\n\n return fetch('GET', url);\n },\n\n count(since) {\n const momentSince = since.format ? since : moment(since);\n const isoSince = momentSince.format('YYYY-MM-DDTHH:mm:ss.SSS');\n const url = URLUtils.qualifyUrl(ApiRoutes.IndexerFailuresApiController.count(isoSince).url);\n\n return fetch('GET', url);\n },\n }),\n);\n"],"names":["DEFAULT_TIMEOUT","EventHandlersThrottler","eventHandler","timeout","ClusterTrafficActions","singleton","ClusterTrafficStore","days","promise","URLUtils","response","formatTrafficData","traffic","dailySums","value","key","d","t","entry","val","TrafficGraph","width","layoutExtension","chartData","layout","GenericPlot","DAYS","Wrapper","StyledDl","StyledH2","theme","StyledH3","Header","ClusterInfo","nodes","NodesStore","clusterId","nodeCount","GraylogClusterTrafficGraph","graphDays","setGraphDays","graphWidth","setGraphWidth","eventThrottler","containerRef","licensePlugin","currentUser","useCurrentUser","sendTelemetry","useSendTelemetry","onGraphDaysChange","event","newDays","_resizeGraphs","clientWidth","_onResize","TrafficGraphComponent","sumOutput","trafficGraph","bytesOut","result","NumberUtils","unixTraffic","size","GraylogClusterOverview","children","formatTextForFailureCount","count","IndexerFailuresComponent","props","since","content","ESClusterError","error","GET_INDEXER_CLUSTER_HEALTH","GET_INDEXER_CLUSTER_NAME","getIndexerClusterHealth","url","ApiRoutes","getIndexerClusterName","useLoadHealthAndName","enabled","options","healthData","healthIsFetching","healthError","healthIsSuccess","healthIsRefetching","nameData","nameIsFetching","nameError","nameIsSuccess","nameIsRefetching","IndexerClusterHealth","minimal","userHasRequiredPermissions","health","name","loading","isSuccess","DocsHelper","ESClusterStatus","IndexerClusterHealthSummary","formattedHealthStatus","alertClassForHealth","formattedTextForHealth","text","IndexerFailure","failure","RelativeTime","IndexerFailuresList","EnterpriseActions","EnterpriseStore","path","errorMessage","UserNotification","loadIndexerFailuresComponent","setLoadIndexerFailuresComponent","pluginSystemOverview","usePluginEntities","EnterpriseIndexerFailures","NotificationsFactory","notification","authServiceId","Routes","messages","NotificationsStore","StyledAlert","NotificationTimestamp","_sanitizeDescription","description","Notification","message","_onClose","_formatNotificationCount","getTitle","getContent","notificationsList","notifications","total","SystemJobsActions","SystemJobsStore","jobId","currentJob","rest","JobStatus","StatusBadge","status","primary","success","info","warning","danger","color","StyledProgressBar","JobWrap","AcknowledgeButton","SystemJob","job","jobIsOver","mappedJobStatus","_onAcknowledge","e","_onCancel","SystemJobsComponent","jobs","interval","jobList","nodeId","a","b","connect","systemJobsStore","SystemJobWrap","SystemJobsList","formatSystemJob","formattedJobs","SystemMessage","SystemMessagesStore","page","SystemMessagesComponent","selectedPage","currentPage","numberPages","SystemMessagesTable","TimestampTH","SystemMessagesList","CurrentUserStore","SystemStore","time","timeFormat","serverTimezone","HideOnCloud","IndexerFailuresStore","limit","offset","isoSince"],"sourceRoot":""}