web-interface.assets.b6fe2bb5-2063.5cd7c2604136909c54ae.js.map Maven / Gradle / Ivy
{"version":3,"file":"b6fe2bb5-2063.5cd7c2604136909c54ae.js","mappings":"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","sources":["webpack://graylog-web-interface/./src/components/maps/adapter/MaxmindAdapterFieldSet.tsx","webpack://graylog-web-interface/./src/components/maps/adapter/MaxmindAdapterSummary.jsx","webpack://graylog-web-interface/./src/components/maps/adapter/MaxmindAdapterDocumentation.jsx","webpack://graylog-web-interface/./src/components/maps/adapter/index.js","webpack://graylog-web-interface/./src/components/lookup-tables/adapters/CSVFileAdapterFieldSet.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/adapters/CSVFileAdapterSummary.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/adapters/CSVFileAdapterDocumentation.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/adapters/DnsAdapterFieldSet.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/adapters/DnsAdapterSummary.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/adapters/DnsAdapterDocumentation.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/adapters/DSVHTTPAdapterFieldSet.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/adapters/DSVHTTPAdapterSummary.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/adapters/DSVHTTPAdapterDocumentation.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/adapters/HTTPJSONPathAdapterFieldSet.tsx","webpack://graylog-web-interface/./src/components/lookup-tables/adapters/HTTPJSONPathAdapterSummary.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/adapters/HTTPJSONPathAdapterDocumentation.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/adapters/index.js","webpack://graylog-web-interface/./src/components/lookup-tables/caches/NullCacheFieldSet.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/caches/NullCacheSummary.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/caches/CaffeineCacheFieldSet.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/caches/CaffeineCacheSummary.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/caches/CaffeineCacheDocumentation.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/caches/index.js","webpack://graylog-web-interface/./src/components/lookup-tables/LUTTableEntry.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/Overview.css?d37e","webpack://graylog-web-interface/./src/components/lookup-tables/LookupTablesOverview.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/LookupTable.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/LookupTableForm.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/LookupTableCreate.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/CacheTableEntry.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/CachesOverview.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/ConfigSummaryDefinitionListWrapper.tsx","webpack://graylog-web-interface/./src/components/lookup-tables/Cache.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/CacheForm.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/CacheCreate.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/CachePicker.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/CachesContainer.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/DataAdapterTableEntry.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/DataAdaptersOverview.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/DataAdapter.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/DataAdapterForm.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/DataAdapterCreate.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/DataAdapterPicker.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/DataAdaptersContainer.jsx","webpack://graylog-web-interface/./src/components/lookup-tables/ErrorPopover.css?6f36","webpack://graylog-web-interface/./src/components/lookup-tables/ErrorPopover.jsx","webpack://graylog-web-interface/./src/stores/lookup-tables/LookupTableCachesStore.js","webpack://graylog-web-interface/./src/stores/lookup-tables/LookupTableDataAdaptersStore.js","webpack://graylog-web-interface/./src/stores/lookup-tables/LookupTablesStore.ts","webpack://graylog-web-interface/./src/components/lookup-tables/ErrorPopover.css","webpack://graylog-web-interface/./src/components/lookup-tables/Overview.css"],"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 React from 'react';\n\nimport AppConfig from 'util/AppConfig';\nimport ObjectUtils from 'util/ObjectUtils';\nimport { Input } from 'components/bootstrap';\nimport { Select, TimeUnitInput } from 'components/common';\n\ntype MaxmindAdapterFieldSetProps = {\n config: {\n [name: string]: string | number;\n };\n updateConfig: (newConfig: object) => void,\n handleFormEvent: (e: { target: { name: string; value?: string } }) => void;\n validationState: (key: string) => void,\n validationMessage: (key: string, message: string) => void,\n};\n\nconst MaxmindAdapterFieldSet = ({ config, updateConfig, handleFormEvent, validationState, validationMessage }: MaxmindAdapterFieldSetProps) => {\n const isCloud = AppConfig.isCloud();\n\n const pathsForCloud = {\n IPINFO_STANDARD_LOCATION: '/etc/graylog/server/standard_location.mmdb',\n IPINFO_ASN: '/etc/graylog/server/asn.mmdb',\n };\n\n const ipInfoDatabaseTypes = [\n { label: 'IPinfo location database', value: 'IPINFO_STANDARD_LOCATION' },\n { label: 'IPinfo ASN database', value: 'IPINFO_ASN' },\n ];\n\n let databaseTypes = [\n { label: 'ASN database', value: 'MAXMIND_ASN' },\n { label: 'City database', value: 'MAXMIND_CITY' },\n { label: 'Country database', value: 'MAXMIND_COUNTRY' },\n ];\n\n if (isCloud) {\n databaseTypes = [...ipInfoDatabaseTypes];\n } else {\n databaseTypes = [...databaseTypes, ...ipInfoDatabaseTypes];\n }\n\n const update = (value: number, unit: string, enabled: boolean, name: string) => {\n const newConfig = ObjectUtils.clone(config);\n\n newConfig[name] = enabled ? value : 0;\n newConfig[`${name}_unit`] = unit;\n updateConfig(newConfig);\n };\n\n const updateCheckInterval = (value: number, unit: string, enabled: boolean) => {\n update(value, unit, enabled, 'check_interval');\n };\n\n const onDbTypeSelect = (id: string) => {\n const newConfig = ObjectUtils.clone(config);\n\n if (isCloud) {\n newConfig.path = pathsForCloud[id];\n }\n\n newConfig.database_type = id;\n updateConfig(newConfig);\n };\n\n return (\n \n );\n};\n\nMaxmindAdapterFieldSet.propTypes = {\n config: PropTypes.object.isRequired,\n updateConfig: PropTypes.func.isRequired,\n handleFormEvent: PropTypes.func.isRequired,\n validationState: PropTypes.func.isRequired,\n validationMessage: PropTypes.func.isRequired,\n};\n\nexport default MaxmindAdapterFieldSet;\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 { TimeUnit } from 'components/common';\n\nclass MaxmindAdapterSummary extends React.Component {\n static propTypes = {\n dataAdapter: PropTypes.object.isRequired,\n };\n\n render() {\n const { config } = this.props.dataAdapter;\n const databaseTypes = {\n MAXMIND_ASN: 'ASN database',\n MAXMIND_CITY: 'City database',\n MAXMIND_COUNTRY: 'Country database',\n IPINFO_STANDARD_LOCATION: 'IPinfo location database',\n IPINFO_ASN: 'IPinfo ASN database',\n };\n\n return (\n \n - Database file path
\n - {config.path}
\n - Database type
\n - {databaseTypes[config.database_type]}
\n - Check interval
\n \n
\n );\n }\n}\n\nexport default MaxmindAdapterSummary;\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/* eslint-disable react/no-unescaped-entities */\nimport React from 'react';\n\nimport { Alert } from 'components/bootstrap';\n\nclass MaxmindAdapterDocumentation extends React.Component {\n render() {\n const cityFields = `{\n \"city\": { \"geoname_id\": 5375480, \"names\": { \"en\": \"Mountain View\" } },\n \"location\": {\n \"accuracy_radius\": 1000,\n \"average_income\": null,\n \"latitude\": 37.386,\n \"longitude\": -122.0838,\n \"metro_code\": 807,\n \"population_density\": null,\n \"time_zone\": \"America/Los_Angeles\"\n },\n \"postal\": { \"code\": \"94035\" },\n \"subdivisions\": [ { \"geoname_id\": 5332921, \"iso_code\": \"CA\", \"names\": { \"en\": \"California\" } } ],\n}`;\n\n const countryFields = `{\n \"continent\": { \"code\": \"NA\", \"geoname_id\": 6255149, \"names\": { \"en\": \"North America\" } },\n \"country\": { \"geoname_id\": 6252001, \"iso_code\": \"US\", \"names\": { \"en\": \"United States\" } },\n \"registered_country\": { \"geoname_id\": 6252001, \"iso_code\": \"US\", \"names\": { } },\n \"represented_country\": { \"geoname_id\": null, \"iso_code\": \"US\", \"names\": { } },\n \"traits\": {\n \"ip_address\": \"8.8.8.8\",\n \"is_anonymous_proxy\": false,\n \"is_legitimate_proxy\": false,\n \"is_satellite_provider\": false,\n \"isp\": null,\n \"organization\": null,\n }\n}`;\n\n const asnFields = `{\n \"as_number\": 15169,\n \"as_organization\": \"Google LLC\"\n}`;\n\n return (\n \n The GeoIP data adapter supports reading MaxMind's GeoIP2 databases.
\n\n \n Limitations
\n Currently the ASN, city and country databases are supported.
\n For support of additional database types, please visit our support channels.
\n \n\n
\n\n ASN database fields
\n\n {asnFields}
\n\n Country database fields
\n\n {countryFields}
\n\n City database fields
\n\n In addition to the fields provided by the country database, the city database also includes the following fields:
\n\n {cityFields}
\n\n For a complete documentation of the fields, please see MaxMind's developer documentation
\n \n );\n }\n}\n\nexport default MaxmindAdapterDocumentation;\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 MaxmindAdapterFieldSet from 'components/maps/adapter/MaxmindAdapterFieldSet';\nimport MaxmindAdapterSummary from 'components/maps/adapter/MaxmindAdapterSummary';\nimport MaxmindAdapterDocumentation from 'components/maps/adapter/MaxmindAdapterDocumentation';\n\nPluginStore.register(new PluginManifest({}, {\n lookupTableAdapters: [\n {\n type: 'maxmind_geoip',\n displayName: 'Geo IP - MaxMind\\u2122 or IPinfo Databases',\n formComponent: MaxmindAdapterFieldSet,\n summaryComponent: MaxmindAdapterSummary,\n documentationComponent: MaxmindAdapterDocumentation,\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 PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { Input } from 'components/bootstrap';\n\nclass CSVFileAdapterFieldSet extends React.Component {\n static propTypes = {\n config: PropTypes.object.isRequired,\n // eslint-disable-next-line react/no-unused-prop-types\n updateConfig: PropTypes.func.isRequired,\n handleFormEvent: PropTypes.func.isRequired,\n validationState: PropTypes.func.isRequired,\n validationMessage: PropTypes.func.isRequired,\n };\n\n render() {\n const { config } = this.props;\n\n return (\n \n );\n }\n}\n\nexport default CSVFileAdapterFieldSet;\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 CSVFileAdapterSummary extends React.Component {\n static propTypes = {\n dataAdapter: PropTypes.object.isRequired,\n };\n\n render() {\n const { config } = this.props.dataAdapter;\n\n return (\n \n - File path
\n - {config.path}
\n - Separator
\n {config.separator}
\n - Quote character
\n {config.quotechar}
\n - Key column
\n - {config.key_column}
\n - Value column
\n - {config.value_column}
\n - Check interval
\n - {config.check_interval} seconds
\n - Case-insensitive lookup
\n - {config.case_insensitive_lookup ? 'yes' : 'no'}
\n
\n );\n }\n}\n\nexport default CSVFileAdapterSummary;\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/* eslint-disable react/no-unescaped-entities */\nimport React from 'react';\n\nimport { Alert } from 'components/bootstrap';\n\nclass CSVFileAdapterDocumentation extends React.Component {\n render() {\n const csvFile1 = `\"ipaddr\",\"hostname\"\n\"127.0.0.1\",\"localhost\"\n\"10.0.0.1\",\"server1\"\n\"10.0.0.2\",\"server2\"`;\n\n const csvFile2 = `'ipaddr';'lladdr';'hostname'\n'127.0.0.1';'e4:b2:11:d1:38:14';'localhost'\n'10.0.0.1';'e4:b2:12:d1:48:28';'server1'\n'10.0.0.2';'e4:b2:11:d1:58:34';'server2'`;\n\n return (\n \n The CSV data adapter can read key value pairs from a CSV file.
\n Please make sure your CSV file is formatted according to your configuration settings.
\n\n \n CSV file requirements:
\n \n - The first line in the CSV file needs to be a list of field/column names
\n - The file uses utf-8 encoding
\n - The file is readable by every Graylog server node
\n
\n \n\n
\n\n Example 1
\n\n Configuration
\n \n Separator: ,
\n Quote character: \"
\n Key column: ipaddr
\n Value column: hostname
\n
\n\n CSV File
\n {csvFile1}
\n\n Example 2
\n\n Configuration
\n \n Separator: ;
\n Quote character: '
\n Key column: ipaddr
\n Value column: hostname
\n
\n\n CSV File
\n {csvFile2}
\n \n );\n }\n}\n\nexport default CSVFileAdapterDocumentation;\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 ObjectUtils from 'util/ObjectUtils';\nimport { Input } from 'components/bootstrap';\nimport { Select, TimeUnitInput } from 'components/common';\n\nclass DnsAdapterFieldSet extends React.Component {\n static propTypes = {\n config: PropTypes.shape({\n request_timeout: PropTypes.number.isRequired,\n server_ips: PropTypes.string,\n }).isRequired,\n updateConfig: PropTypes.func.isRequired,\n handleFormEvent: PropTypes.func.isRequired,\n validationMessage: PropTypes.func.isRequired,\n validationState: PropTypes.func.isRequired,\n };\n\n _onLookupTypeSelect = (id) => {\n const { config, updateConfig } = this.props;\n const newConfig = ObjectUtils.clone(config);\n\n newConfig.lookup_type = id;\n updateConfig(newConfig);\n };\n\n updateCacheTTLOverride = (value, unit, enabled) => {\n this._updateCacheTTLOverride(value, unit, enabled, 'cache_ttl_override');\n };\n\n _updateCacheTTLOverride = (value, unit, enabled, fieldPrefix) => {\n const { config, updateConfig } = this.props;\n const newConfig = ObjectUtils.clone(config);\n\n // If Cache TTL Override box is checked, then save the value. If not, then do not save it.\n if (enabled && value) {\n newConfig[fieldPrefix] = enabled && value ? value : null;\n newConfig[`${fieldPrefix}_enabled`] = enabled;\n } else {\n newConfig[fieldPrefix] = null;\n newConfig[`${fieldPrefix}_enabled`] = false;\n }\n\n newConfig[`${fieldPrefix}_unit`] = enabled ? unit : null;\n updateConfig(newConfig);\n };\n\n render() {\n const {\n config,\n handleFormEvent,\n validationMessage,\n validationState,\n } = this.props;\n const lookupTypes = [\n { label: 'Resolve hostname to IPv4 address (A)', value: 'A' },\n { label: 'Resolve hostname to IPv6 address (AAAA)', value: 'AAAA' },\n { label: 'Resolve hostname to IPv4 and IPv6 addresses (A and AAAA)', value: 'A_AAAA' },\n { label: 'Reverse lookup (PTR)', value: 'PTR' },\n { label: 'Text lookup (TXT)', value: 'TXT' },\n ];\n\n return (\n \n );\n }\n}\n\nexport default DnsAdapterFieldSet;\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 { TimeUnit } from 'components/common';\n\nconst DnsAdapterSummary = ({ dataAdapter }) => {\n const { config } = dataAdapter;\n\n // Allows enum > display label translation.\n const lookupType = {\n A: 'Resolve hostname to IPv4 address (A)',\n AAAA: 'Resolve hostname to IPv6 address (AAAA)',\n A_AAAA: 'Resolve hostname to IPv4 and IPv6 address (A and AAAA)',\n PTR: 'Reverse lookup (PTR)',\n TXT: 'Text lookup (TXT)',\n };\n\n return (\n \n - DNS Lookup Type
\n - {lookupType[config.lookup_type]}
\n\n - DNS Server IP Address
\n - {config.server_ips || 'n/a'}
\n\n - DNS Request Timeout
\n - {config.request_timeout} ms
\n\n - Cache TTL Override
\n - \n {!config.cache_ttl_override_enabled ? 'n/a' :
}\n \n
\n );\n};\n\nDnsAdapterSummary.propTypes = {\n dataAdapter: PropTypes.shape({\n config: PropTypes.shape({\n lookup_type: PropTypes.string.isRequired,\n request_timeout: PropTypes.number.isRequired,\n }),\n }).isRequired,\n};\n\nexport default DnsAdapterSummary;\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, { css } from 'styled-components';\n\nconst StyledPre = styled.pre(({ theme }) => css`\n font-size: ${theme.fonts.size.small};\n`);\n\nconst DnsAdapterDocumentation = () => {\n const styleMarginBottom = { marginBottom: 10 };\n\n const aResponse = `{\n \"single_value\": \"34.239.63.98\",\n \"multi_value\": {\n \"results\": [\n {\n \"ip_address\": \"34.239.63.98\",\n \"dns_ttl\": 60\n },\n {\n \"ip_address\": \"34.238.48.57\",\n \"dns_ttl\": 60\n }\n ]\n },\n \"ttl\": 60000\n}`;\n\n const aaaaResponse = `{\n \"single_value\": \"2307:f8b0:3000:800:0:0:0:200e\",\n \"multi_value\": {\n \"results\": [\n {\n \"ip_address\": \"2307:f8b0:3000:800:0:0:0:200e\",\n \"dns_ttl\": 77\n }\n ]\n },\n \"ttl\": 77000\n}`;\n\n const aAndAaaaResponse = `{\n \"single_value\": \"144.222.6.132\",\n \"multi_value\": {\n \"results\": [\n {\n \"ip_address\": \"144.222.6.132\",\n \"dns_ttl\": 32,\n \"ip_version\": \"IPv4\"\n },\n {\n \"ip_address\": \"1207:f8b1:6003:b01:0:0:0:8a\",\n \"dns_ttl\": 299,\n \"ip_version\": \"IPv6\"\n }\n ]\n },\n \"ttl\": 32000\n}`;\n\n const ptrResponse = `{\n \"single_value\": \"c-45-216-65-41.hd1.fl.someisp.co.uk\",\n \"multi_value\": {\n \"domain\": \"someisp.co.uk\",\n \"full_domain\": \"c-45-216-65-41.hd1.fl.someisp.co.uk\",\n \"dns_ttl\": \"300\",\n },\n \"ttl\": 300000\n}`;\n\n const txtResponse = `{\n \"single_value\": null,\n \"multi_value\": {\n \"results\": [\n {\n \"value\": \"Some text value that lives in a TXT DNS\",\n \"dns_ttl\": 300\n },\n {\n \"value\": \"v=spf1 include:some-email-domain.org ~all.\",\n \"dns_ttl\": 200\n }\n ]\n },\n \"ttl\": 200000\n}`;\n\n return (\n\n \n\n Configuration
\n\n DNS Lookup Type
\n\n \n Resolve hostname to IPv4 address (A): Returns both a single_value
containing one\n of the IPv4 addresses that the hostname resolves to,\n and a multi_value
containing all IPv4 addresses that the hostname resolves to.\n Input for this type must be a pure domain name (eg. api.graylog.com
).\n
\n {aResponse} \n\n \n Resolve hostname to IPv6 address (AAAA): Returns both a single_value
containing\n one of the IPv6 addresses that the hostname resolves to,\n and a multi_value
containing all IPv6 addresses that the hostname resolves to.\n Input for this type must be a pure domain name (eg. api.graylog.com
).\n
\n {aaaaResponse} \n\n \n Resolve hostname to IPv4 and IPv6 address (A and AAAA): Returns both\n a single_value
containing\n one of the IPv4 or IPv6 addresses that the hostname resolves to (will return IPv4 if available),\n and a multi_value
containing all IPv4 and IPv6 addresses that the hostname resolves to.\n Input for this type must be a pure domain name (eg. api.graylog.com
).\n
\n {aAndAaaaResponse} \n\n \n Reverse lookup (PTR): Returns a single_value
containing the PTR value if defined\n for the IP address. The domain
field displays the domain name (with no subdomains).\n The full_domain
field displays the full un-trimmed host name/PTR value.\n The input for this type must be a pure IPv4 or IPv6 address\n (eg. 10.0.0.1
or 2622:f3b0:4000:812::200c
).\n
\n {ptrResponse} \n\n \n Text lookup (TXT): Returns a multi_value
with all TXT records defined for the\n hostname.\n Input for this type must be a pure domain name (eg. api.graylog.com
).\n
\n {txtResponse} \n\n DNS Server IP Addresses
\n\n \n A comma-separated list of DNS server IP addresses and optional ports to use (eg. 192.168.1.1:5353, 192.168.1.244
).\n Leave this blank to use the DNS server defined for your local system. All requests use port 53 unless\n otherwise specified.\n
\n\n DNS Request Timeout
\n\n \n The DNS request timeout in milliseconds.\n
\n\n Cache TTL Override
\n\n \n If enabled, the TTL for this adapter's cache will be overridden with the specified value.\n
\n\n \n );\n};\n\nexport default DnsAdapterDocumentation;\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 { Input } from 'components/bootstrap';\nimport { URLWhiteListInput } from 'components/common';\n\nconst DSVHTTPAdapterFieldSet = ({ handleFormEvent, validationState, validationMessage, config }) => {\n return (\n \n );\n};\n\nDSVHTTPAdapterFieldSet.propTypes = {\n config: PropTypes.object.isRequired,\n // eslint-disable-next-line react/no-unused-prop-types\n handleFormEvent: PropTypes.func.isRequired,\n validationState: PropTypes.func.isRequired,\n validationMessage: PropTypes.func.isRequired,\n};\n\nexport default DSVHTTPAdapterFieldSet;\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\nconst DSVHTTPAdapterSummary = ({ dataAdapter }) => {\n const { config } = dataAdapter;\n\n return (\n \n - File URL
\n - {config.url}
\n - Separator
\n {config.separator}
\n - Line Separator
\n {config.line_separator}
\n - Quote character
\n {config.quotechar}
\n - Ignore lines starting with
\n {config.ignorechar}
\n - Key column
\n - {config.key_column}
\n - Value column
\n - {config.value_column}
\n - Check interval
\n - {config.check_interval} seconds
\n - Case-insensitive lookup
\n - {config.case_insensitive_lookup ? 'yes' : 'no'}
\n
\n );\n};\n\nexport default DSVHTTPAdapterSummary;\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 } from 'components/bootstrap';\n\nconst DSVHTTPAdapterDocumentation = () => {\n const csvFile1 = `\"127.0.0.1\",\"localhost\"\n\"10.0.0.1\",\"server1\"\n\"10.0.0.2\",\"server2\"`;\n\n const csvFile2 = `'127.0.0.1';'e4:b2:11:d1:38:14'\n'10.0.0.1';'e4:b2:12:d1:48:28'\n'10.0.0.2';'e4:b2:11:d1:58:34'`;\n\n return (\n \n The DSV data adapter can read key value pairs (or check for the presence of a key) from a DSV file.
\n Please make sure your DSV file is formatted according to your configuration settings.
\n\n \n CSV file requirements:
\n \n - The file uses utf-8 encoding
\n - The file is accessible using the same URL by every Graylog server node
\n
\n \n\n
\n\n Example 1
\n\n Configuration
\n \n Separator: ,
\n Quote character: \"
\n
\n\n DSV File
\n {csvFile1}
\n\n Example 2
\n\n Configuration
\n \n Separator: ;
\n Quote character: '
\n
\n\n DSV File
\n {csvFile2}
\n \n );\n};\n\nexport default DSVHTTPAdapterDocumentation;\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 type { SyntheticEvent } from 'react';\nimport React from 'react';\n\nimport { Input } from 'components/bootstrap';\nimport { URLWhiteListInput, KeyValueTable } from 'components/common';\nimport ObjectUtils from 'util/ObjectUtils';\n\ntype Headers = { [key: string]: string };\n\ntype Config = {\n headers: Headers,\n url: string,\n single_value_jsonpath: string,\n multi_value_jsonpath: string,\n user_agent: string,\n};\n\ntype Props = {\n config: Config,\n updateConfig: (config: Config) => void,\n handleFormEvent: (event: SyntheticEvent) => void,\n validationState: (state: string) => string,\n validationMessage: (field: string, message: string) => string,\n};\n\nclass HTTPJSONPathAdapterFieldSet extends React.Component {\n static propTypes = {\n config: PropTypes.object.isRequired,\n updateConfig: PropTypes.func.isRequired,\n handleFormEvent: PropTypes.func.isRequired,\n validationState: PropTypes.func.isRequired,\n validationMessage: PropTypes.func.isRequired,\n };\n\n onHTTPHeaderUpdate = (headers: Headers) => {\n const { config, updateConfig } = this.props;\n const configChange = ObjectUtils.clone(config);\n\n configChange.headers = headers;\n updateConfig(configChange);\n };\n\n render() {\n const { config, handleFormEvent, validationMessage, validationState } = this.props;\n\n return (\n \n );\n }\n}\n\nexport default HTTPJSONPathAdapterFieldSet;\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 { KeyValueTable } from 'components/common';\n\nconst HTTPJSONPathAdapterSummary = ({ dataAdapter }) => {\n const { config } = dataAdapter;\n\n return (\n \n - Lookup URL
\n - {config.url}
\n - Single value JSONPath
\n {config.single_value_jsonpath}
\n - Multi value JSONPath
\n {config.multi_value_jsonpath}
\n - HTTP User-Agent
\n - {config.user_agent}
\n - HTTP Headers
\n \n
\n );\n};\n\nHTTPJSONPathAdapterSummary.propTypes = {\n dataAdapter: PropTypes.object.isRequired,\n};\n\nexport default HTTPJSONPathAdapterSummary;\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/* eslint-disable react/no-unescaped-entities, no-template-curly-in-string */\nimport React from 'react';\n\nimport { Alert, Col, Row } from 'components/bootstrap';\n\nconst HTTPJSONPathAdapterDocumentation = () => {\n const exampleJSON = `{\n \"user\": {\n \"login\": \"jane\",\n \"full_name\": \"Jane Doe\",\n \"roles\": [\"admin\", \"developer\"],\n \"contact\": {\n \"email\": \"[email protected]\",\n \"cellphone\": \"+49123456789\"\n }\n }\n}`;\n const noMultiResult = '{\"value\": \"Jane Doe\"}';\n const mapResult = `{\n \"login\": \"jane\",\n \"full_name\": \"Jane Doe\",\n \"roles\": [\"admin\", \"developer\"],\n \"contact\": {\n \"email\": \"[email protected]\",\n \"cellphone\": \"+49123456789\"\n }\n}`;\n const smallMapResult = `{\n \"email\": \"[email protected]\",\n \"cellphone\": \"+49123456789\"\n}`;\n const listResult = `{\n \"value\": [\"admin\", \"developer\"]\n}`;\n const pipelineRule = `rule \"lookup user\"\nwhen has_field(\"user_login\")\nthen\n // Get the user login from the message\n let userLogin = to_string($message.user_login);\n // Lookup the single value, in our case the full name, in the user-api lookup table\n let userName = lookup_value(\"user-api\", userLogin);\n // Set the field \"user_name\" in the message\n set_field(\"user_name\", userName)\n\n // Lookup the multi value in the user-api lookup table\n let userData = lookup(\"user-api\", userLogin);\n // Set the email and cellphone as fields in the message\n set_field(\"user_email\", userData[\"email\"]);\n set_field(\"user_cellphone\", userData[\"cellphone\"]);\nend`;\n\n return (\n \n \n The HTTPJSONPath data adapter executes HTTP GET requests to lookup a key and parses the result based on\n configured JSONPath expressions.\n
\n\n \n Every lookup table result has two values. A single value and a multi value. The single\n value will be used when the lookup result is expected to be a string, number or boolean. The multi value\n will be used when the lookup result is expected to be a map or list.\n \n\n Configuration
\n\n Lookup URL
\n \n The URL that will be used for the HTTP request. To use the lookup key in the URL, the\n {'${key}'}
\n value can be used. This variable will be replaced by the actual key that is passed to a lookup function.
\n (example: {'https://example.com/api/lookup?key=${key}'}
)\n
\n\n Single value JSONPath
\n \n This JSONPath expression will be used to parse the single value of the lookup result.\n (example: $.user.full_name
)\n
\n\n Multi value JSONPath
\n \n This JSONPath expression will be used to parse the multi value of the lookup result.\n (example: $.users[*]
)\n The multi value JSONPath setting is optional. Without it, the single value is also present in the\n multi value result.\n
\n\n HTTP User-Agent
\n \n This is the User-Agent header that will be used for the HTTP requests. You should include some\n contact details so owners of the services you query know whom to contact if issues arise.\n (like excessive API requests from your Graylog cluster)\n
\n\n
\n\n Example
\n \n This shows an example configuration and the values that will be returned from a lookup.
\n The configured URL is {'https://example.com/api/users/${key}'} and the {'${key}'}
\n gets replaced by jane during the lookup request.\n
\n \n This is the resulting JSON document:\n
\n {exampleJSON}
\n\n \n \n Configuration
\n \n Single value JSONPath: $.user.full_name
\n Multi value JSONPath: empty
\n
\n \n \n Result
\n \n Single value: Jane Doe
\n Multi value:\n
{noMultiResult}
\n \n \n
\n \n \n Configuration
\n \n Single value JSONPath: $.user.full_name
\n Multi value JSONPath: $.user
\n
\n \n \n Result
\n \n Single value: Jane Doe
\n Multi value:\n
{mapResult}
\n \n \n
\n \n \n Configuration
\n \n Single value JSONPath: $.user.contact.email
\n Multi value JSONPath: $.user.roles[*]
\n
\n \n \n Result
\n \n Single value: [email protected]
\n Multi value:\n
{listResult}
\n \n \n
\n \n \n Configuration
\n \n Single value JSONPath: $.user.full_name
\n Multi value JSONPath: $.user.contact
\n
\n \n \n Result
\n \n Single value: Jane Doe
\n Multi value:\n
{smallMapResult}
\n \n \n
\n\n Pipeline Rule
\n \n This is an example pipeline rule that uses the example data from our last configuration example.\n
\n {pipelineRule}
\n \n );\n};\n\nexport default HTTPJSONPathAdapterDocumentation;\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 {} from 'components/maps/adapter';\nimport CSVFileAdapterFieldSet from './CSVFileAdapterFieldSet';\nimport CSVFileAdapterSummary from './CSVFileAdapterSummary';\nimport CSVFileAdapterDocumentation from './CSVFileAdapterDocumentation';\nimport DnsAdapterFieldSet from './DnsAdapterFieldSet';\nimport DnsAdapterSummary from './DnsAdapterSummary';\nimport DnsAdapterDocumentation from './DnsAdapterDocumentation';\nimport DSVHTTPAdapterFieldSet from './DSVHTTPAdapterFieldSet';\nimport DSVHTTPAdapterSummary from './DSVHTTPAdapterSummary';\nimport DSVHTTPAdapterDocumentation from './DSVHTTPAdapterDocumentation';\nimport HTTPJSONPathAdapterFieldSet from './HTTPJSONPathAdapterFieldSet';\nimport HTTPJSONPathAdapterSummary from './HTTPJSONPathAdapterSummary';\nimport HTTPJSONPathAdapterDocumentation from './HTTPJSONPathAdapterDocumentation';\n\nPluginStore.register(new PluginManifest({}, {\n lookupTableAdapters: [\n {\n type: 'csvfile',\n displayName: 'CSV File',\n formComponent: CSVFileAdapterFieldSet,\n summaryComponent: CSVFileAdapterSummary,\n documentationComponent: CSVFileAdapterDocumentation,\n },\n {\n type: 'dnslookup',\n displayName: 'DNS Lookup',\n formComponent: DnsAdapterFieldSet,\n summaryComponent: DnsAdapterSummary,\n documentationComponent: DnsAdapterDocumentation,\n },\n {\n type: 'dsvhttp',\n displayName: 'DSV File from HTTP',\n formComponent: DSVHTTPAdapterFieldSet,\n summaryComponent: DSVHTTPAdapterSummary,\n documentationComponent: DSVHTTPAdapterDocumentation,\n },\n {\n type: 'httpjsonpath',\n displayName: 'HTTP JSONPath',\n formComponent: HTTPJSONPathAdapterFieldSet,\n summaryComponent: HTTPJSONPathAdapterSummary,\n documentationComponent: HTTPJSONPathAdapterDocumentation,\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 PropTypes from 'prop-types';\nimport React from 'react';\n\nclass NullCacheFieldSet extends React.Component {\n static propTypes = {\n config: PropTypes.object.isRequired,\n updateConfig: PropTypes.func.isRequired,\n handleFormEvent: PropTypes.func.isRequired,\n // eslint-disable-next-line react/no-unused-prop-types\n validationState: PropTypes.func.isRequired,\n // eslint-disable-next-line react/no-unused-prop-types\n validationMessage: PropTypes.func.isRequired,\n };\n\n render() {\n return null;\n }\n}\n\nexport default NullCacheFieldSet;\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 NullCacheSummary extends React.Component {\n static propTypes = {\n cache: PropTypes.object.isRequired,\n };\n\n render() {\n return (This cache has no configuration.
);\n }\n}\n\nexport default NullCacheSummary;\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 ObjectUtils from 'util/ObjectUtils';\nimport { Input } from 'components/bootstrap';\nimport { TimeUnitInput } from 'components/common';\n\nclass CaffeineCacheFieldSet extends React.Component {\n static propTypes = {\n config: PropTypes.object.isRequired,\n updateConfig: PropTypes.func.isRequired,\n handleFormEvent: PropTypes.func.isRequired,\n // eslint-disable-next-line react/no-unused-prop-types\n validationState: PropTypes.func.isRequired,\n // eslint-disable-next-line react/no-unused-prop-types\n validationMessage: PropTypes.func.isRequired,\n };\n\n _update = (value, unit, enabled, name) => {\n const config = ObjectUtils.clone(this.props.config);\n\n config[name] = enabled ? value : 0;\n config[`${name}_unit`] = unit;\n this.props.updateConfig(config);\n };\n\n updateAfterAccess = (value, unit, enabled) => {\n this._update(value, unit, enabled, 'expire_after_access');\n };\n\n updateAfterWrite = (value, unit, enabled) => {\n this._update(value, unit, enabled, 'expire_after_write');\n };\n\n render() {\n const { config } = this.props;\n\n return (\n \n );\n }\n}\n\nexport default CaffeineCacheFieldSet;\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 { TimeUnit } from 'components/common';\n\nclass CaffeineCacheSummary extends React.Component {\n static propTypes = {\n cache: PropTypes.object.isRequired,\n };\n\n render() {\n const { config } = this.props.cache;\n\n return (\n \n - Maximum entries
\n - {config.max_size}
\n - Expire after access
\n \n - Expire after write
\n \n
\n );\n }\n}\n\nexport default CaffeineCacheSummary;\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/* eslint-disable react/no-unescaped-entities */\nimport React from 'react';\n\nimport { Alert } from 'components/bootstrap';\n\nclass CaffeineCacheDocumentation extends React.Component {\n render() {\n return (\n \n The in-memory cache maintains recently used values from data adapters.
\n Please make sure your Graylog servers have enough heap to accomodate the cached entries and monitor the cache efficiency.
\n\n \n Implementation details
\n The cache is local to each Graylog server, they do not share the entries.
\n For example, if you have two servers, they will maintain a completely independent cache from each other.
\n \n\n
\n\n Cache size
\n Every cache has a maximum number of entries, unbounded caches are not supported.
\n\n Time-based expiration
\n\n Expire after access
\n \n The cache will remove entries after a fixed time since they have been used the last time.
\n This results in the cache behaving as a space limited least recently used cache.\n
\n\n Expire after write
\n \n The cache will remove entries after a fixed time since they have been entered into the cache.
\n This results in entries that are never older than the given time, which can be important for\n regularly changing data, such as configuration state of external systems.\n
\n\n \n );\n }\n}\n\nexport default CaffeineCacheDocumentation;\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 NullCacheFieldSet from './NullCacheFieldSet';\nimport NullCacheSummary from './NullCacheSummary';\nimport CaffeineCacheFieldSet from './CaffeineCacheFieldSet';\nimport CaffeineCacheSummary from './CaffeineCacheSummary';\nimport CaffeineCacheDocumentation from './CaffeineCacheDocumentation';\n\nPluginStore.register(new PluginManifest({}, {\n lookupTableCaches: [\n {\n type: 'none',\n displayName: 'Do not cache values',\n formComponent: NullCacheFieldSet,\n summaryComponent: NullCacheSummary,\n documentationComponent: null,\n },\n {\n type: 'guava_cache', // old name kept for backwards compatibility\n displayName: 'Node-local, in-memory cache',\n formComponent: CaffeineCacheFieldSet,\n summaryComponent: CaffeineCacheSummary,\n documentationComponent: CaffeineCacheDocumentation,\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 PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { LinkContainer, Link } from 'components/common/router';\nimport Routes from 'routing/Routes';\nimport { Button } from 'components/bootstrap';\nimport { ErrorPopover } from 'components/lookup-tables';\nimport { LookupTablesActions } from 'stores/lookup-tables/LookupTablesStore';\n\nclass LUTTableEntry extends React.Component {\n static propTypes = {\n table: PropTypes.object.isRequired,\n cache: PropTypes.object.isRequired,\n dataAdapter: PropTypes.object.isRequired,\n errors: PropTypes.object,\n };\n\n static defaultProps = {\n errors: {\n table: null,\n cache: null,\n dataAdapter: null,\n },\n };\n\n _onDelete = () => {\n // eslint-disable-next-line no-alert\n if (window.confirm(`Are you sure you want to delete lookup table \"${this.props.table.title}\"?`)) {\n LookupTablesActions.delete(this.props.table.id).then(() => LookupTablesActions.reloadPage());\n }\n };\n\n render() {\n return (\n \n \n \n {this.props.errors.table && ( )}\n {this.props.table.title}\n \n {this.props.table.description} \n {this.props.table.name} \n \n {this.props.errors.cache && ( )}\n {this.props.cache.title}\n \n \n {this.props.errors.dataAdapter && ( )}\n {this.props.dataAdapter.title}\n \n \n \n \n \n \n \n \n \n \n );\n }\n}\n\nexport default LUTTableEntry;\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[6].use[1]!./Overview.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[6].use[1]!./Overview.css\";\n export default content && content.locals ? content.locals : undefined;\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 Routes from 'routing/Routes';\nimport { Row, Col, Table, Popover, Button } from 'components/bootstrap';\nimport { OverlayTrigger, PaginatedList, SearchForm, Icon } from 'components/common';\nimport LUTTableEntry from 'components/lookup-tables/LUTTableEntry';\nimport { LookupTablesActions } from 'stores/lookup-tables/LookupTablesStore';\n\nimport Styles from './Overview.css';\n\nclass LookupTablesOverview extends React.Component {\n static propTypes = {\n tables: PropTypes.arrayOf(PropTypes.object).isRequired,\n caches: PropTypes.objectOf(PropTypes.object).isRequired,\n dataAdapters: PropTypes.objectOf(PropTypes.object).isRequired,\n pagination: PropTypes.object.isRequired,\n errorStates: PropTypes.object.isRequired,\n };\n\n _onPageChange = (newPage, newPerPage) => {\n LookupTablesActions.searchPaginated(newPage, newPerPage, this.props.pagination.query);\n };\n\n _onSearch = (query, resetLoadingStateCb) => {\n LookupTablesActions\n .searchPaginated(this.props.pagination.page, this.props.pagination.per_page, query)\n .then(resetLoadingStateCb);\n };\n\n _onReset = () => {\n LookupTablesActions.searchPaginated(this.props.pagination.page, this.props.pagination.per_page);\n };\n\n _lookupName = (id, map) => {\n const empty = { title: 'None' };\n\n if (!map) {\n return empty;\n }\n\n return map[id] || empty;\n };\n\n _lookupAdapterError = (table) => {\n if (this.props.errorStates.dataAdapters && this.props.dataAdapters) {\n const adapter = this.props.dataAdapters[table.data_adapter_id];\n\n if (!adapter) {\n return null;\n }\n\n return this.props.errorStates.dataAdapters[adapter.name];\n }\n\n return null;\n };\n\n _helpPopover = () => {\n return (\n \n Available search fields
\n \n \n \n Field \n Description \n \n \n \n \n id \n Lookup Table ID \n \n \n title \n The title of the lookup table \n \n \n name \n The reference name of the lookup table \n \n \n description \n The description of lookup table \n \n \n
\n Examples
\n \n Find lookup tables by parts of their names:
\n name:geoip
\n name:geo\n
\n \n Searching without a field name matches against the title
field:
\n geoip
is the same as
\n title:geoip\n
\n \n );\n };\n\n render() {\n const lookupTables = this.props.tables.map((table) => {\n const cache = this._lookupName(table.cache_id, this.props.caches);\n const dataAdapter = this._lookupName(table.data_adapter_id, this.props.dataAdapters);\n const errors = {\n table: this.props.errorStates.tables[table.name],\n cache: null,\n dataAdapter: this._lookupAdapterError(table),\n };\n\n return (\n \n );\n });\n\n return (\n \n \n \n \n Configured lookup tables\n {this.props.pagination.total} total\n
\n \n \n \n \n \n \n \n \n \n \n \n \n Title \n Description \n Name \n Cache \n Data Adapter \n Actions \n \n \n {lookupTables}\n
\n \n \n
\n \n );\n }\n}\n\nexport default LookupTablesOverview;\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, Link } from 'components/common/router';\nimport { ButtonToolbar, Row, Col, Button, Input } from 'components/bootstrap';\nimport Routes from 'routing/Routes';\nimport * as FormsUtils from 'util/FormsUtils';\nimport { LookupTablesActions } from 'stores/lookup-tables/LookupTablesStore';\n\nclass LookupTable extends React.Component {\n static propTypes = {\n table: PropTypes.object.isRequired,\n cache: PropTypes.object.isRequired,\n dataAdapter: PropTypes.object.isRequired,\n };\n\n state = {\n lookupKey: null,\n lookupResult: null,\n purgeKey: null,\n };\n\n _onChange = (event) => {\n this.setState({ lookupKey: FormsUtils.getValueFromInput(event.target) });\n };\n\n _onChangePurgeKey = (event) => {\n this.setState({ purgeKey: FormsUtils.getValueFromInput(event.target) });\n };\n\n _onPurgeKey = (e) => {\n e.preventDefault();\n\n if (this.state.purgeKey && this.state.purgeKey.length > 0) {\n LookupTablesActions.purgeKey(this.props.table, this.state.purgeKey);\n }\n };\n\n _onPurgeAll = (e) => {\n e.preventDefault();\n LookupTablesActions.purgeAll(this.props.table);\n };\n\n _lookupKey = (e) => {\n e.preventDefault();\n\n LookupTablesActions.lookup(this.props.table.name, this.state.lookupKey).then((result) => {\n this.setState({ lookupResult: result });\n });\n };\n\n render() {\n return (\n \n \n \n {this.props.table.title}\n
\n {this.props.table.description}
\n \n - Data adapter
\n - \n {this.props.dataAdapter.title}\n
\n - Cache
\n - {this.props.cache.title}
\n
\n \n \n \n {\n (this.props.table.default_single_value || this.props.table.default_multi_value)\n && (\n \n - Default single value
\n {this.props.table.default_single_value}
{' '}({this.props.table.default_single_value_type.toLowerCase()}) \n - Default multi value
\n {this.props.table.default_multi_value}
{' '}({this.props.table.default_multi_value_type.toLowerCase()}) \n
\n )\n }\n
\n Purge Cache
\n You can purge the complete cache for this lookup table or only the cache entry for a single key.
\n \n \n \n Test lookup
\n You can manually query the lookup table using this form. The data will be cached as configured by Graylog.
\n \n {this.state.lookupResult && (\n \n Lookup result
\n {JSON.stringify(this.state.lookupResult, null, 2)}
\n \n )}\n \n
\n );\n }\n}\n\nexport default LookupTable;\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 _ from 'lodash';\n\nimport { Col, Row, Button, Input } from 'components/bootstrap';\nimport { JSONValueInput } from 'components/common';\nimport ObjectUtils from 'util/ObjectUtils';\nimport * as FormsUtils from 'util/FormsUtils';\nimport { CachesContainer, CachePicker, DataAdaptersContainer, DataAdapterPicker } from 'components/lookup-tables';\nimport { LookupTablesActions } from 'stores/lookup-tables/LookupTablesStore';\n\nclass LookupTableForm extends React.Component {\n static propTypes = {\n saved: PropTypes.func.isRequired,\n create: PropTypes.bool,\n table: PropTypes.object,\n validate: PropTypes.func,\n validationErrors: PropTypes.object,\n };\n\n static defaultProps = {\n create: true,\n table: {\n id: undefined,\n title: '',\n description: '',\n name: '',\n cache_id: undefined,\n data_adapter_id: undefined,\n default_single_value: '',\n default_single_value_type: 'NULL',\n default_multi_value: '',\n default_multi_value_type: 'NULL',\n },\n validate: null,\n validationErrors: {},\n };\n\n componentDidMount() {\n if (!this.props.create) {\n // Validate when mounted to immediately show errors for invalid objects\n this._validate(this.props.table);\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (_.isEqual(this.props.table, nextProps.table)) {\n // props haven't change, don't update our state from them\n return;\n }\n\n this.setState(this._initialState(nextProps.table));\n }\n\n componentWillUnmount() {\n this._clearTimer();\n }\n\n validationCheckTimer = undefined;\n\n _clearTimer = () => {\n if (this.validationCheckTimer !== undefined) {\n clearTimeout(this.validationCheckTimer);\n this.validationCheckTimer = undefined;\n }\n };\n\n _validate = (table) => {\n if (!table.cache_id || !table.data_adapter_id) {\n return;\n }\n\n // first cancel outstanding validation timer, we have new data\n this._clearTimer();\n\n if (this.props.validate) {\n this.validationCheckTimer = setTimeout(() => this.props.validate(table), 500);\n }\n };\n\n _initialState = (t) => {\n const table = ObjectUtils.clone(t);\n\n return {\n table: {\n id: table.id,\n title: table.title,\n description: table.description,\n name: table.name,\n cache_id: table.cache_id,\n data_adapter_id: table.data_adapter_id,\n default_single_value: table.default_single_value,\n default_single_value_type: table.default_single_value_type,\n default_multi_value: table.default_multi_value,\n default_multi_value_type: table.default_multi_value_type,\n },\n enable_default_single: table.default_single_value_type && table.default_single_value_type !== 'NULL',\n enable_default_multi: table.default_multi_value_type && table.default_multi_value_type !== 'NULL',\n };\n };\n\n _onChange = (event) => {\n const table = ObjectUtils.clone(this.state.table);\n\n table[event.target.name] = FormsUtils.getValueFromInput(event.target);\n this._validate(table);\n this.setState({ table: table });\n };\n\n _onConfigChange = (event) => {\n const table = ObjectUtils.clone(this.state.table);\n\n table.config[event.target.name] = FormsUtils.getValueFromInput(event.target);\n this._validate(table);\n this.setState({ table: table });\n };\n\n _save = (event) => {\n if (event) {\n event.preventDefault();\n }\n\n let promise;\n\n if (this.props.create) {\n promise = LookupTablesActions.create(this.state.table);\n } else {\n promise = LookupTablesActions.update(this.state.table);\n }\n\n promise.then(() => {\n this.props.saved();\n });\n };\n\n _onAdapterSelect = (id) => {\n const table = ObjectUtils.clone(this.state.table);\n\n table.data_adapter_id = id;\n this._validate(table);\n this.setState({ table: table });\n };\n\n _onCacheSelect = (id) => {\n const table = ObjectUtils.clone(this.state.table);\n\n table.cache_id = id;\n this._validate(table);\n this.setState({ table: table });\n };\n\n _onDefaultValueUpdate = (name, value, valueType) => {\n const table = ObjectUtils.clone(this.state.table);\n\n table[`default_${name}_value`] = value;\n table[`default_${name}_value_type`] = valueType;\n\n this._validate(table);\n this.setState({ table: table });\n };\n\n _onCheckEnableSingleDefault = (e) => {\n const value = FormsUtils.getValueFromInput(e.target);\n\n this.setState({ enable_default_single: value });\n\n if (value === false) {\n this._onDefaultValueUpdate('single', '', 'NULL');\n }\n };\n\n _onCheckEnableMultiDefault = (e) => {\n const value = FormsUtils.getValueFromInput(e.target);\n\n this.setState({ enable_default_multi: value });\n\n if (value === false) {\n this._onDefaultValueUpdate('multi', '', 'NULL');\n }\n };\n\n _onDefaultSingleValueUpdate = (value, valueType) => {\n this._onDefaultValueUpdate('single', value, valueType);\n };\n\n _onDefaultMultiValueUpdate = (value, valueType) => {\n this._onDefaultValueUpdate('multi', value, valueType);\n };\n\n _validationState = (fieldName) => {\n if (this.props.validationErrors[fieldName]) {\n return 'error';\n }\n\n return null;\n };\n\n _validationMessage = (fieldName, defaultText) => {\n if (this.props.validationErrors[fieldName]) {\n return (\n \n {defaultText}\n \n {this.props.validationErrors[fieldName][0]}\n \n );\n }\n\n return {defaultText};\n };\n\n state = this._initialState(this.props.table);\n\n render() {\n const { table } = this.state;\n\n return (\n \n );\n }\n}\n\nexport default LookupTableForm;\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 } from 'components/bootstrap';\nimport { LookupTableForm } from 'components/lookup-tables';\n\nclass LookupTableCreate extends React.Component {\n static propTypes = {\n saved: PropTypes.func.isRequired,\n validate: PropTypes.func,\n validationErrors: PropTypes.object,\n };\n\n static defaultProps = {\n validate: null,\n validationErrors: {},\n };\n\n state = {\n table: undefined,\n };\n\n render() {\n return (\n \n \n \n \n \n
\n \n );\n }\n}\n\nexport default LookupTableCreate;\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, Link } from 'components/common/router';\nimport { Button } from 'components/bootstrap';\nimport Routes from 'routing/Routes';\nimport { MetricsMapper, MetricContainer, CounterRate } from 'components/metrics';\nimport NumberUtils from 'util/NumberUtils';\nimport { LookupTableCachesActions } from 'stores/lookup-tables/LookupTableCachesStore';\n\nclass LUTTableEntry extends React.Component {\n static propTypes = {\n cache: PropTypes.object.isRequired,\n };\n\n _onDelete = () => {\n const { cache } = this.props;\n\n // eslint-disable-next-line no-alert\n if (window.confirm(`Are you sure you want to delete cache \"${cache.title}\"?`)) {\n LookupTableCachesActions.delete(cache.id).then(() => LookupTableCachesActions.reloadPage());\n }\n };\n\n _onCountMetrics = (metrics) => {\n let totalHits = 0;\n let totalMisses = 0;\n\n Object.keys(metrics).map((nodeId) => metrics[nodeId].hits.metric.rate.total).forEach((v) => { totalHits += v; });\n Object.keys(metrics).map((nodeId) => metrics[nodeId].misses.metric.rate.total).forEach((v) => { totalMisses += v; });\n\n const total = totalHits + totalMisses;\n\n if (total < 1) {\n return 'n/a';\n }\n\n const hitRate = (totalHits * 100.0) / total;\n\n return `${NumberUtils.formatNumber(hitRate)}%`;\n };\n\n _onEntriesMetrics = (metrics) => {\n let total = 0;\n\n Object.keys(metrics).map((nodeId) => metrics[nodeId].count.metric.value).forEach((v) => { total += v; });\n\n if (total < 0) {\n return 'n/a';\n }\n\n return NumberUtils.formatNumber(total);\n };\n\n render() {\n const { cache } = this.props;\n\n const countMap = {\n requests: `org.graylog2.lookup.caches.${cache.id}.requests`,\n hits: `org.graylog2.lookup.caches.${cache.id}.hits`,\n misses: `org.graylog2.lookup.caches.${cache.id}.misses`,\n };\n const entriesMap = {\n count: `org.graylog2.lookup.caches.${cache.id}.entries`,\n };\n\n return (\n \n \n \n {cache.title}\n \n {cache.description} \n {cache.name} \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 LUTTableEntry;\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 Routes from 'routing/Routes';\nimport { OverlayTrigger, PaginatedList, SearchForm, Spinner, Icon } from 'components/common';\nimport { Row, Col, Table, Popover, Button } from 'components/bootstrap';\nimport CacheTableEntry from 'components/lookup-tables/CacheTableEntry';\nimport { LookupTableCachesActions } from 'stores/lookup-tables/LookupTableCachesStore';\n\nimport Styles from './Overview.css';\n\nclass CachesOverview extends React.Component {\n static propTypes = {\n caches: PropTypes.array.isRequired,\n pagination: PropTypes.object.isRequired,\n };\n\n _onPageChange = (newPage, newPerPage) => {\n const { pagination } = this.props;\n\n LookupTableCachesActions.searchPaginated(newPage, newPerPage, pagination.query);\n };\n\n _onSearch = (query, resetLoadingStateCb) => {\n const { pagination } = this.props;\n\n LookupTableCachesActions\n .searchPaginated(pagination.page, pagination.per_page, query)\n .then(resetLoadingStateCb);\n };\n\n _onReset = () => {\n const { pagination } = this.props;\n\n LookupTableCachesActions.searchPaginated(pagination.page, pagination.per_page);\n };\n\n _helpPopover = () => {\n return (\n \n Available search fields
\n \n \n \n Field \n Description \n \n \n \n \n id \n Cache ID \n \n \n title \n The title of the cache \n \n \n name \n The reference name of the cache \n \n \n description \n The description of cache \n \n \n
\n Examples
\n \n Find caches by parts of their names:
\n name:guava
\n name:gua\n
\n \n Searching without a field name matches against the title
field:
\n guava
is the same as
\n title:guava\n
\n \n );\n };\n\n render() {\n const { caches, pagination } = this.props;\n\n if (!caches) {\n return ;\n }\n\n const cacheTableEntries = caches.map((cache) => {\n return (\n \n );\n });\n\n return (\n \n \n \n \n Configured lookup Caches\n \n {pagination.total} total\n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n Title \n Description \n Name \n Entries \n Hit rate \n Throughput \n Actions \n \n \n {cacheTableEntries}\n
\n \n \n
\n \n );\n }\n}\n\nexport default CachesOverview;\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 styled from 'styled-components';\n\nconst ConfigSummaryDefinitionListWrapper = styled.div`\n dl {\n margin-top: 10px;\n\n dt {\n float: left;\n clear: left;\n }\n\n dd {\n margin-left: 185px;\n word-wrap: break-word;\n\n :not(:last-child) {\n border-bottom: 1px solid #ececec;\n margin-bottom: 5px;\n padding-bottom: 5px;\n }\n }\n }\n`;\n\nexport default ConfigSummaryDefinitionListWrapper;\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 { PluginStore } from 'graylog-web-plugin/plugin';\n\nimport { LinkContainer } from 'components/common/router';\nimport Routes from 'routing/Routes';\nimport { Row, Col, Button } from 'components/bootstrap';\n\nimport ConfigSummaryDefinitionListWrapper from './ConfigSummaryDefinitionListWrapper';\n\nconst Cache = ({ cache }) => {\n const plugins = {};\n\n PluginStore.exports('lookupTableCaches').forEach((p) => {\n plugins[p.type] = p;\n });\n\n const plugin = plugins[cache.config.type];\n\n if (!plugin) {\n return Unknown cache type {cache.config.type}. Is the plugin missing?
;\n }\n\n const summary = plugin.summaryComponent;\n\n return (\n \n \n \n {cache.title}\n {' '}\n ({plugin.displayName})\n
\n \n \n - Description
\n - {cache.description || No description.}
\n
\n \n Configuration
\n \n {React.createElement(summary, { cache: cache })}\n \n \n \n \n \n \n
\n );\n};\n\nCache.propTypes = {\n cache: PropTypes.object.isRequired,\n};\n\nexport default Cache;\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 _ from 'lodash';\nimport { PluginStore } from 'graylog-web-plugin/plugin';\n\nimport { Button, Col, Row, Input } from 'components/bootstrap';\nimport ObjectUtils from 'util/ObjectUtils';\nimport * as FormsUtils from 'util/FormsUtils';\nimport { LookupTableCachesActions } from 'stores/lookup-tables/LookupTableCachesStore';\n\nclass CacheForm extends React.Component {\n validationCheckTimer = undefined;\n\n _input = undefined;\n\n static propTypes = {\n type: PropTypes.string.isRequired,\n saved: PropTypes.func.isRequired,\n title: PropTypes.string.isRequired,\n create: PropTypes.bool,\n cache: PropTypes.object,\n validate: PropTypes.func,\n validationErrors: PropTypes.object,\n };\n\n static defaultProps = {\n create: true,\n cache: {\n id: undefined,\n title: '',\n description: '',\n name: '',\n config: {},\n },\n validate: null,\n validationErrors: {},\n };\n\n constructor(props) {\n super(props);\n\n this.state = this._initialState(props.cache);\n }\n\n componentDidMount() {\n this._input.getInputDOMNode().focus();\n const { create, cache } = this.props;\n\n if (!create) {\n // Validate when mounted to immediately show errors for invalid objects\n this._validate(cache);\n }\n }\n\n componentDidUpdate(prevProps) {\n const { type: currentType } = this.props;\n\n if (prevProps.type !== currentType) {\n this._input.getInputDOMNode().focus();\n }\n\n const { cache } = this.props;\n\n if (_.isEqual(cache, prevProps.cache)) {\n // props haven't change, don't update our state from them\n return;\n }\n\n this.updateState(cache);\n }\n\n componentWillUnmount() {\n this._clearTimer();\n }\n\n updateState = (cache) => {\n this.setState(this._initialState(cache));\n };\n\n _initialState = (c) => {\n const { create } = this.props;\n const cache = ObjectUtils.clone(c);\n\n return {\n // when creating always initially auto-generate the adapter name,\n // this will be false if the user changed the adapter name manually\n generateName: create,\n cache: {\n id: cache.id,\n title: cache.title,\n description: cache.description,\n name: cache.name,\n config: cache.config,\n },\n };\n };\n\n _clearTimer = () => {\n if (this.validationCheckTimer !== undefined) {\n clearTimeout(this.validationCheckTimer);\n this.validationCheckTimer = undefined;\n }\n };\n\n _validate = (cache) => {\n const { validate } = this.props;\n\n // first cancel outstanding validation timer, we have new data\n this._clearTimer();\n\n if (validate) {\n this.validationCheckTimer = setTimeout(() => validate(cache), 500);\n }\n };\n\n _onChange = (event) => {\n const { cache: stateCache } = this.state;\n\n const cache = ObjectUtils.clone(stateCache);\n\n cache[event.target.name] = FormsUtils.getValueFromInput(event.target);\n let { generateName } = this.state;\n\n if (generateName && event.target.name === 'title') {\n // generate the name\n cache.name = this._sanitizeTitle(cache.title);\n }\n\n if (event.target.name === 'name') {\n // the cache name has been changed manually, no longer automatically change it\n generateName = false;\n }\n\n this._validate(cache);\n this.setState({ cache: cache });\n };\n\n _onConfigChange = (event) => {\n const { cache: stateCache } = this.state;\n\n const cache = ObjectUtils.clone(stateCache);\n\n cache.config[event.target.name] = FormsUtils.getValueFromInput(event.target);\n this._validate(cache);\n this.setState({ cache: cache });\n };\n\n _updateConfig = (newConfig) => {\n const { cache: stateCache } = this.state;\n\n const cache = ObjectUtils.clone(stateCache);\n\n cache.config = newConfig;\n this._validate(cache);\n this.setState({ cache: cache });\n };\n\n _save = (event) => {\n const { cache: stateCache } = this.state;\n const { create, saved } = this.props;\n\n if (event) {\n event.preventDefault();\n }\n\n let promise;\n\n if (create) {\n promise = LookupTableCachesActions.create(stateCache);\n } else {\n promise = LookupTableCachesActions.update(stateCache);\n }\n\n promise.then(() => { saved(); });\n };\n\n _sanitizeTitle = (title) => {\n return title.trim().replace(/\\W+/g, '-').toLocaleLowerCase();\n };\n\n _validationState = (fieldName) => {\n const { validationErrors } = this.props;\n\n if (validationErrors[fieldName]) {\n return 'error';\n }\n\n return null;\n };\n\n _validationMessage = (fieldName, defaultText) => {\n const { validationErrors } = this.props;\n\n if (validationErrors[fieldName]) {\n return (\n \n {defaultText}\n \n {validationErrors[fieldName][0]}\n \n );\n }\n\n return {defaultText};\n };\n\n _renderTitle = (title, typeName, create) => {\n const TagName = create ? 'h3' : 'h2';\n\n return {title} ({typeName}) ;\n };\n\n render() {\n const { cache } = this.state;\n const {\n create,\n type,\n title,\n } = this.props;\n\n const cachePlugins = PluginStore.exports('lookupTableCaches');\n\n const plugin = cachePlugins.filter((p) => p.type === type);\n let configFieldSet = null;\n let documentationComponent = null;\n let pluginDisplayName = cache.config.type;\n\n if (plugin && plugin.length > 0) {\n const p = plugin[0];\n\n pluginDisplayName = p.displayName;\n\n configFieldSet = React.createElement(p.formComponent, {\n config: cache.config,\n handleFormEvent: this._onConfigChange,\n updateConfig: this._updateConfig,\n validationMessage: this._validationMessage,\n validationState: this._validationState,\n });\n\n if (p.documentationComponent) {\n documentationComponent = React.createElement(p.documentationComponent);\n }\n }\n\n let documentationColumn = null;\n let formRowWidth = 8; // If there is no documentation component, we don't use the complete page width\n\n if (documentationComponent) {\n formRowWidth = 6;\n\n documentationColumn = (\n \n {documentationComponent}\n \n );\n }\n\n return (\n <>\n {this._renderTitle(title, pluginDisplayName, create)}\n \n \n \n \n {documentationColumn}\n
\n >\n );\n }\n}\n\nexport default CacheForm;\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 naturalSort from 'javascript-natural-sort';\nimport { PluginStore } from 'graylog-web-plugin/plugin';\n\nimport { Select } from 'components/common';\nimport { Row, Col, Input } from 'components/bootstrap';\nimport { CacheForm } from 'components/lookup-tables';\nimport ObjectUtils from 'util/ObjectUtils';\n\nclass CacheCreate extends React.Component {\n static propTypes = {\n saved: PropTypes.func.isRequired,\n types: PropTypes.object.isRequired,\n validate: PropTypes.func,\n validationErrors: PropTypes.object,\n };\n\n static defaultProps = {\n validate: null,\n validationErrors: {},\n };\n\n state = {\n cache: undefined,\n type: undefined,\n };\n\n _onTypeSelect = (cacheType) => {\n const { types } = this.props;\n\n this.setState({\n type: cacheType,\n cache: {\n id: null,\n title: '',\n name: '',\n description: '',\n config: ObjectUtils.clone(types[cacheType].default_config),\n },\n });\n };\n\n render() {\n const {\n types,\n validate,\n validationErrors,\n saved,\n } = this.props;\n const { type, cache } = this.state;\n const cachePlugins = {};\n\n PluginStore.exports('lookupTableCaches').forEach((p) => {\n cachePlugins[p.type] = p;\n });\n\n const sortedCaches = Object.keys(types).map((key) => {\n const typeItem = types[key];\n\n return { value: typeItem.type, label: cachePlugins[typeItem.type].displayName };\n }).sort((a, b) => naturalSort(a.label.toLowerCase(), b.label.toLowerCase()));\n\n return (\n \n \n \n \n \n
\n {cache && (\n \n \n \n \n
\n )}\n \n );\n }\n}\n\nexport default CacheCreate;\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 naturalSort from 'javascript-natural-sort';\nimport { PluginStore } from 'graylog-web-plugin/plugin';\n\nimport { Input } from 'components/bootstrap';\nimport { Select } from 'components/common';\n\nclass CachePicker extends React.Component {\n static propTypes = {\n onSelect: PropTypes.func.isRequired,\n selectedId: PropTypes.string,\n caches: PropTypes.array,\n pagination: PropTypes.object,\n };\n\n static defaultProps = {\n selectedId: null,\n caches: [],\n pagination: {},\n };\n\n render() {\n const cachePlugins = {};\n\n PluginStore.exports('lookupTableCaches').forEach((p) => {\n cachePlugins[p.type] = p;\n });\n\n const sortedCaches = this.props.caches.map((cache) => {\n return { value: cache.id, label: `${cache.title} (${cache.name})` };\n }).sort((a, b) => naturalSort(a.label.toLowerCase(), b.label.toLowerCase()));\n\n return (\n \n );\n }\n}\n\nexport default CachePicker;\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 Reflux from 'reflux';\n\nimport { Spinner } from 'components/common';\nimport { LookupTableCachesActions, LookupTableCachesStore } from 'stores/lookup-tables/LookupTableCachesStore';\n\nconst CachesContainer = createReactClass({\n displayName: 'CachesContainer',\n\n propTypes: {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n ]),\n },\n\n mixins: [Reflux.connect(LookupTableCachesStore)],\n\n getDefaultProps() {\n return {\n children: null,\n };\n },\n\n componentDidMount() {\n // TODO the 10k items is bad. we need a searchable/scrollable long list select box\n LookupTableCachesActions.searchPaginated(1, 10000, null);\n },\n\n render() {\n if (!this.state.caches) {\n return ;\n }\n\n const childrenWithProps = React.Children.map(this.props.children,\n (child) => React.cloneElement(child,\n { caches: this.state.caches, pagination: this.state.pagination }));\n\n return {childrenWithProps};\n },\n});\n\nexport default CachesContainer;\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, Link } from 'components/common/router';\nimport Routes from 'routing/Routes';\nimport { Button } from 'components/bootstrap';\nimport { ErrorPopover } from 'components/lookup-tables';\nimport { MetricContainer, CounterRate } from 'components/metrics';\nimport { LookupTableDataAdaptersActions } from 'stores/lookup-tables/LookupTableDataAdaptersStore';\n\nclass DataAdapterTableEntry extends React.Component {\n static propTypes = {\n adapter: PropTypes.object.isRequired,\n error: PropTypes.string,\n };\n\n static defaultProps = {\n error: null,\n };\n\n _onDelete = () => {\n const { adapter } = this.props;\n\n // eslint-disable-next-line no-alert\n if (window.confirm(`Are you sure you want to delete data adapter \"${adapter.title}\"?`)) {\n LookupTableDataAdaptersActions.delete(adapter.id).then(() => LookupTableDataAdaptersActions.reloadPage());\n }\n };\n\n render() {\n const { adapter, error } = this.props;\n\n return (\n \n \n \n {error && }\n {adapter.title}\n \n {adapter.description} \n {adapter.name} \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n }\n}\n\nexport default DataAdapterTableEntry;\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 { OverlayTrigger, PaginatedList, SearchForm, Spinner, Icon } from 'components/common';\nimport { Row, Col, Table, Popover, Button } from 'components/bootstrap';\nimport DataAdapterTableEntry from 'components/lookup-tables/DataAdapterTableEntry';\nimport Routes from 'routing/Routes';\nimport { LookupTableDataAdaptersActions } from 'stores/lookup-tables/LookupTableDataAdaptersStore';\n\nimport Styles from './Overview.css';\n\nclass DataAdaptersOverview extends React.Component {\n static propTypes = {\n dataAdapters: PropTypes.array.isRequired,\n pagination: PropTypes.object.isRequired,\n errorStates: PropTypes.object.isRequired,\n };\n\n _onPageChange = (newPage, newPerPage) => {\n const { pagination } = this.props;\n\n LookupTableDataAdaptersActions.searchPaginated(newPage, newPerPage, pagination.query);\n };\n\n _onSearch = (query, resetLoadingStateCb) => {\n const { pagination } = this.props;\n\n LookupTableDataAdaptersActions\n .searchPaginated(pagination.page, pagination.per_page, query)\n .then(resetLoadingStateCb);\n };\n\n _onReset = () => {\n const { pagination } = this.props;\n\n LookupTableDataAdaptersActions.searchPaginated(pagination.page, pagination.per_page);\n };\n\n _helpPopover = () => {\n return (\n \n Available search fields
\n \n \n \n Field \n Description \n \n \n \n \n id \n Data Adapter ID \n \n \n title \n The title of the data adapter \n \n \n name \n The reference name of the data adapter \n \n \n description \n The description of data adapter \n \n \n
\n Example
\n \n Find data adapters by parts of their names:
\n name:geoip
\n name:geo\n
\n \n Searching without a field name matches against the title
field:
\n geoip
is the same as
\n title:geoip\n
\n \n );\n };\n\n render() {\n const { dataAdapters, errorStates, pagination } = this.props;\n\n if (!dataAdapters) {\n return ;\n }\n\n const dataAdapterEntries = dataAdapters.map((dataAdapter) => {\n return (\n \n );\n });\n\n return (\n \n \n \n \n Configured lookup Data Adapters\n \n {pagination.total} total\n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n Title \n Description \n Name \n Throughput \n Actions \n \n \n {dataAdapterEntries}\n
\n \n \n
\n \n );\n }\n}\n\nexport default DataAdaptersOverview;\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 { PluginStore } from 'graylog-web-plugin/plugin';\n\nimport { LinkContainer } from 'components/common/router';\nimport { Row, Col, Button, Input } from 'components/bootstrap';\nimport { getValueFromInput } from 'util/FormsUtils';\nimport Routes from 'routing/Routes';\nimport { LookupTableDataAdaptersActions } from 'stores/lookup-tables/LookupTableDataAdaptersStore';\n\nimport ConfigSummaryDefinitionListWrapper from './ConfigSummaryDefinitionListWrapper';\n\nclass DataAdapter extends React.Component {\n static propTypes = {\n dataAdapter: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n lookupKey: null,\n lookupResult: null,\n };\n }\n\n _onChange = (event) => {\n this.setState({ lookupKey: getValueFromInput(event.target) });\n };\n\n _lookupKey = (e) => {\n const { dataAdapter } = this.props;\n const { lookupKey } = this.state;\n\n e.preventDefault();\n\n LookupTableDataAdaptersActions.lookup(dataAdapter.name, lookupKey).then((result) => {\n this.setState({ lookupResult: result });\n });\n };\n\n render() {\n const plugins = {};\n\n PluginStore.exports('lookupTableAdapters').forEach((p) => {\n plugins[p.type] = p;\n });\n\n const { dataAdapter } = this.props;\n const { lookupKey, lookupResult } = this.state;\n const plugin = plugins[dataAdapter.config.type];\n\n if (!plugin) {\n return Unknown data adapter type {dataAdapter.config.type}. Is the plugin missing?
;\n }\n\n const summary = plugin.summaryComponent;\n\n return (\n \n \n \n {dataAdapter.title}\n {' '}\n ({plugin.displayName})\n
\n \n \n - Description
\n - {dataAdapter.description || No description.}
\n
\n \n Configuration
\n \n {React.createElement(summary, { dataAdapter: dataAdapter })}\n \n \n \n \n \n \n Test lookup
\n You can manually trigger the data adapter using this form. The data will be not cached.
\n \n {lookupResult && (\n \n Lookup result
\n {JSON.stringify(lookupResult, null, 2)}
\n \n )}\n \n
\n );\n }\n}\n\nexport default DataAdapter;\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 _ from 'lodash';\nimport { PluginStore } from 'graylog-web-plugin/plugin';\n\nimport { TimeUnitInput } from 'components/common';\nimport { Col, Row, Button, Input } from 'components/bootstrap';\nimport ObjectUtils from 'util/ObjectUtils';\nimport { getValueFromInput } from 'util/FormsUtils';\nimport { LookupTableDataAdaptersActions } from 'stores/lookup-tables/LookupTableDataAdaptersStore';\n\nclass DataAdapterForm extends React.Component {\n validationCheckTimer = undefined;\n\n _input = undefined;\n\n static propTypes = {\n type: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n saved: PropTypes.func.isRequired,\n create: PropTypes.bool,\n dataAdapter: PropTypes.object,\n validate: PropTypes.func,\n validationErrors: PropTypes.object,\n };\n\n static defaultProps = {\n create: true,\n dataAdapter: {\n id: undefined,\n title: '',\n description: '',\n name: '',\n custom_error_ttl_enabled: false,\n custom_error_ttl: null,\n custom_error_ttl_unit: null,\n config: {},\n },\n validate: null,\n validationErrors: {},\n };\n\n constructor(props) {\n super(props);\n\n this.state = this._initialState(props.dataAdapter);\n }\n\n componentDidMount() {\n this._input.getInputDOMNode().focus();\n const { create, dataAdapter } = this.props;\n\n if (!create) {\n // Validate when mounted to immediately show errors for invalid objects\n this._validate(dataAdapter);\n }\n }\n\n componentDidUpdate(prevProps) {\n const { type: currentType } = this.props;\n\n if (prevProps.type !== currentType) {\n this._input.getInputDOMNode().focus();\n }\n\n const { dataAdapter } = this.props;\n\n if (_.isEqual(dataAdapter, prevProps.dataAdapter)) {\n // props haven't changed, don't update our state from them\n return;\n }\n\n this.updateState(dataAdapter);\n }\n\n componentWillUnmount() {\n this._clearTimer();\n }\n\n updateState = (dataAdapter) => {\n this.setState(this._initialState(dataAdapter));\n };\n\n _initialState = (dataAdapter) => {\n const adapter = ObjectUtils.clone(dataAdapter);\n const { create } = this.props;\n\n return {\n // when creating always initially auto-generate the adapter name,\n // this will be false if the user changed the adapter name manually\n generateAdapterName: create,\n isFormDisabled: false,\n dataAdapter: {\n id: adapter.id,\n title: adapter.title,\n description: adapter.description,\n name: adapter.name,\n custom_error_ttl_enabled: adapter.custom_error_ttl_enabled,\n custom_error_ttl: adapter.custom_error_ttl,\n custom_error_ttl_unit: adapter.custom_error_ttl_unit,\n config: adapter.config,\n },\n };\n };\n\n _clearTimer = () => {\n if (this.validationCheckTimer !== undefined) {\n clearTimeout(this.validationCheckTimer);\n this.validationCheckTimer = undefined;\n }\n };\n\n _setIsFormDisabled = (isDisabled) => {\n this.setState({ isFormDisabled: isDisabled });\n };\n\n _validate = (adapter) => {\n const { validate } = this.props;\n\n // first cancel outstanding validation timer, we have new data\n this._clearTimer();\n\n if (validate) {\n this.validationCheckTimer = setTimeout(() => validate(adapter), 500);\n }\n };\n\n _onChange = (event) => {\n const { dataAdapter: dataAdapterState } = this.state;\n const dataAdapter = ObjectUtils.clone(dataAdapterState);\n\n dataAdapter[event.target.name] = getValueFromInput(event.target);\n let { generateAdapterName } = this.state;\n\n if (generateAdapterName && event.target.name === 'title') {\n // generate the name\n dataAdapter.name = this._sanitizeTitle(dataAdapter.title);\n }\n\n if (event.target.name === 'name') {\n // the adapter name has been changed manually, no longer automatically change it\n generateAdapterName = false;\n }\n\n this._validate(dataAdapter);\n this.setState({ dataAdapter: dataAdapter, generateAdapterName: generateAdapterName });\n };\n\n _onConfigChange = (event) => {\n const { dataAdapter: dataAdapterState } = this.state;\n const dataAdapter = ObjectUtils.clone(dataAdapterState);\n\n dataAdapter.config[event.target.name] = getValueFromInput(event.target);\n this._validate(dataAdapter);\n this.setState({ dataAdapter: dataAdapter });\n };\n\n _updateConfig = (newConfig) => {\n const { dataAdapter: dataAdapterState } = this.state;\n const dataAdapter = ObjectUtils.clone(dataAdapterState);\n\n dataAdapter.config = newConfig;\n this._validate(dataAdapter);\n this.setState({ dataAdapter: dataAdapter });\n };\n\n updateCustomErrorTTL = (value, unit, enabled) => {\n this._updateCustomErrorTTL(value, unit, enabled, 'custom_error_ttl');\n };\n\n _updateCustomErrorTTL = (value, unit, enabled, fieldPrefix) => {\n const { dataAdapter: dataAdapterState } = this.state;\n const dataAdapter = ObjectUtils.clone(dataAdapterState);\n\n if (enabled && value) {\n dataAdapter[fieldPrefix] = enabled && value ? value : null;\n dataAdapter[`${fieldPrefix}_enabled`] = enabled;\n } else {\n dataAdapter[fieldPrefix] = null;\n dataAdapter[`${fieldPrefix}_enabled`] = false;\n }\n\n dataAdapter[`${fieldPrefix}_unit`] = enabled ? unit : null;\n this._validate(dataAdapter);\n this.setState({ dataAdapter: dataAdapter });\n };\n\n _save = (event) => {\n if (event) {\n event.preventDefault();\n }\n\n const { dataAdapter } = this.state;\n const { create, saved } = this.props;\n\n let promise;\n\n if (create) {\n promise = LookupTableDataAdaptersActions.create(dataAdapter);\n } else {\n promise = LookupTableDataAdaptersActions.update(dataAdapter);\n }\n\n promise.then(() => {\n saved();\n });\n };\n\n _sanitizeTitle = (title) => {\n return title.trim().replace(/\\W+/g, '-').toLocaleLowerCase();\n };\n\n _validationState = (fieldName) => {\n const { validationErrors } = this.props;\n\n if (validationErrors[fieldName]) {\n return 'error';\n }\n\n return null;\n };\n\n _validationMessage = (fieldName, defaultText) => {\n const { validationErrors } = this.props;\n\n if (validationErrors[fieldName]) {\n return (\n \n {defaultText}\n \n {validationErrors[fieldName][0]}\n \n );\n }\n\n return {defaultText};\n };\n\n _renderTitle = (title, typeName, create) => {\n const TagName = create ? 'h3' : 'h2';\n\n return {title} ({typeName}) ;\n };\n\n render() {\n const { dataAdapter, isFormDisabled } = this.state;\n const { create, type, title } = this.props;\n const adapterPlugins = PluginStore.exports('lookupTableAdapters');\n\n const plugin = adapterPlugins.filter((p) => p.type === type);\n let configFieldSet = null;\n let documentationComponent = null;\n let pluginDisplayName = dataAdapter.config.type;\n\n if (plugin && plugin.length > 0) {\n const p = plugin[0];\n\n pluginDisplayName = p.displayName;\n\n configFieldSet = React.createElement(p.formComponent, {\n config: dataAdapter.config,\n handleFormEvent: this._onConfigChange,\n updateConfig: this._updateConfig,\n validationMessage: this._validationMessage,\n validationState: this._validationState,\n setDisableFormSubmission: this._setIsFormDisabled,\n });\n\n if (p.documentationComponent) {\n documentationComponent = React.createElement(p.documentationComponent, {\n dataAdapterId: dataAdapter.id,\n });\n }\n }\n\n let documentationColumn = null;\n let formRowWidth = 8; // If there is no documentation component, we don't use the complete page\n\n // width\n if (documentationComponent) {\n formRowWidth = 6;\n\n documentationColumn = (\n \n {documentationComponent}\n \n );\n }\n\n return (\n <>\n {this._renderTitle(title, pluginDisplayName, create)}\n \n \n \n \n {documentationColumn}\n
\n >\n );\n }\n}\n\nexport default DataAdapterForm;\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 naturalSort from 'javascript-natural-sort';\nimport { PluginStore } from 'graylog-web-plugin/plugin';\n\nimport { Select } from 'components/common';\nimport { Row, Col, Input } from 'components/bootstrap';\nimport { DataAdapterForm } from 'components/lookup-tables';\nimport ObjectUtils from 'util/ObjectUtils';\n\nclass DataAdapterCreate extends React.Component {\n static propTypes = {\n saved: PropTypes.func.isRequired,\n types: PropTypes.object.isRequired,\n validate: PropTypes.func,\n validationErrors: PropTypes.object,\n };\n\n static defaultProps = {\n validate: null,\n validationErrors: {},\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n dataAdapter: undefined,\n type: undefined,\n };\n }\n\n _onTypeSelect = (adapterType) => {\n const { types } = this.props;\n\n this.setState({\n type: adapterType,\n dataAdapter: {\n id: null,\n title: '',\n name: '',\n description: '',\n config: ObjectUtils.clone(types[adapterType].default_config),\n },\n });\n };\n\n render() {\n const {\n types,\n validate,\n validationErrors,\n saved,\n } = this.props;\n const { type, dataAdapter } = this.state;\n const adapterPlugins = {};\n\n PluginStore.exports('lookupTableAdapters').forEach((p) => {\n adapterPlugins[p.type] = p;\n });\n\n const sortedAdapters = Object.keys(types).map((key) => {\n const typeItem = types[key];\n\n if (adapterPlugins[typeItem.type] === undefined) {\n // eslint-disable-next-line no-console\n console.error(`Plugin component for data adapter type ${typeItem.type} is missing - invalid or missing plugin?`);\n\n return { value: typeItem.type, disabled: true, label: `${typeItem.type} - missing or invalid plugin` };\n }\n\n return { value: typeItem.type, label: adapterPlugins[typeItem.type].displayName };\n }).sort((a, b) => naturalSort(a.label.toLowerCase(), b.label.toLowerCase()));\n\n return (\n \n \n \n \n \n
\n {dataAdapter && (\n \n \n \n \n
\n )}\n \n );\n }\n}\n\nexport default DataAdapterCreate;\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 naturalSort from 'javascript-natural-sort';\nimport { PluginStore } from 'graylog-web-plugin/plugin';\n\nimport { Input } from 'components/bootstrap';\nimport { Select } from 'components/common';\n\nclass DataAdapterPicker extends React.Component {\n static propTypes = {\n onSelect: PropTypes.func.isRequired,\n selectedId: PropTypes.string,\n dataAdapters: PropTypes.array,\n pagination: PropTypes.object,\n };\n\n static defaultProps = {\n selectedId: null,\n dataAdapters: [],\n pagination: {},\n };\n\n render() {\n const adapterPlugins = {};\n\n PluginStore.exports('lookupTableAdapters').forEach((p) => {\n adapterPlugins[p.type] = p;\n });\n\n const sortedAdapters = this.props.dataAdapters.map((adapter) => {\n return { value: adapter.id, label: `${adapter.title} (${adapter.name})` };\n }).sort((a, b) => naturalSort(a.label.toLowerCase(), b.label.toLowerCase()));\n\n return (\n \n );\n }\n}\n\nexport default DataAdapterPicker;\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 Reflux from 'reflux';\n\nimport { Spinner } from 'components/common';\nimport { LookupTableDataAdaptersActions, LookupTableDataAdaptersStore } from 'stores/lookup-tables/LookupTableDataAdaptersStore';\n\nconst DataAdaptersContainer = createReactClass({\n displayName: 'DataAdaptersContainer',\n\n propTypes: {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node,\n ]),\n },\n\n mixins: [Reflux.connect(LookupTableDataAdaptersStore)],\n\n getDefaultProps() {\n return {\n children: null,\n };\n },\n\n componentDidMount() {\n // TODO the 10k items is bad. we need a searchable/scrollable long list select box\n LookupTableDataAdaptersActions.searchPaginated(1, 10000, null);\n },\n\n render() {\n if (!this.state.dataAdapters) {\n return ;\n }\n\n const childrenWithProps = React.Children.map(this.props.children,\n (child) => React.cloneElement(child,\n { dataAdapters: this.state.dataAdapters, pagination: this.state.pagination }));\n\n return {childrenWithProps};\n },\n});\n\nexport default DataAdaptersContainer;\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[6].use[1]!./ErrorPopover.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[6].use[1]!./ErrorPopover.css\";\n export default content && content.locals ? content.locals : undefined;\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 { OverlayTrigger, Icon } from 'components/common';\nimport { Popover } from 'components/bootstrap';\n\nimport Styles from './ErrorPopover.css';\n\nclass ErrorPopover extends React.Component {\n static propTypes = {\n errorText: PropTypes.string.isRequired,\n title: PropTypes.string,\n placement: PropTypes.string,\n };\n\n static defaultProps = {\n title: 'Error',\n placement: 'bottom',\n };\n\n render() {\n const overlay = (\n \n {this.props.errorText}\n \n );\n\n return (\n \n \n \n \n \n );\n }\n}\n\nexport default ErrorPopover;\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 UserNotification from 'util/UserNotification';\nimport * as URLUtils from 'util/URLUtils';\nimport fetch from 'logic/rest/FetchProvider';\nimport { singletonStore, singletonActions } from 'logic/singleton';\n\nexport const LookupTableCachesActions = singletonActions(\n 'core.LookupTableCaches',\n () => Reflux.createActions({\n searchPaginated: { asyncResult: true },\n reloadPage: { asyncResult: true },\n get: { asyncResult: true },\n create: { asyncResult: true },\n delete: { asyncResult: true },\n update: { asyncResult: true },\n getTypes: { asyncResult: true },\n validate: { asyncResult: true },\n }),\n);\n\nexport const LookupTableCachesStore = singletonStore(\n 'core.LookupTableCaches',\n () => Reflux.createStore({\n listenables: [LookupTableCachesActions],\n cache: null,\n caches: null,\n types: null,\n pagination: {\n page: 1,\n per_page: 10,\n total: 0,\n count: 0,\n query: null,\n },\n validationErrors: {},\n\n getInitialState() {\n return this.getState();\n },\n\n getState() {\n return {\n cache: this.cache,\n caches: this.caches,\n types: this.types,\n pagination: this.pagination,\n validationErrors: this.validationErrors,\n };\n },\n\n propagateChanges() {\n this.trigger(this.getState());\n },\n\n reloadPage() {\n const promise = this.searchPaginated(this.pagination.page, this.pagination.per_page, this.pagination.query);\n\n LookupTableCachesActions.reloadPage.promise(promise);\n\n return promise;\n },\n\n searchPaginated(page, perPage, query) {\n let url;\n\n if (query) {\n url = this._url(`caches?page=${page}&per_page=${perPage}&query=${encodeURIComponent(query)}`);\n } else {\n url = this._url(`caches?page=${page}&per_page=${perPage}`);\n }\n\n const promise = fetch('GET', url);\n\n promise.then((response) => {\n this.pagination = {\n count: response.count,\n total: response.total,\n page: response.page,\n per_page: response.per_page,\n query: response.query,\n };\n\n this.caches = response.caches;\n this.propagateChanges();\n }, this._errorHandler('Fetching lookup table caches failed', 'Could not retrieve the lookup caches'));\n\n LookupTableCachesActions.searchPaginated.promise(promise);\n\n return promise;\n },\n\n get(idOrName) {\n const url = this._url(`caches/${idOrName}`);\n const promise = fetch('GET', url);\n\n promise.then((response) => {\n this.cache = response;\n this.propagateChanges();\n }, this._errorHandler(`Fetching lookup table cache ${idOrName} failed`, 'Could not retrieve lookup table cache'));\n\n LookupTableCachesActions.get.promise(promise);\n\n return promise;\n },\n\n create(cache) {\n const url = this._url('caches');\n const promise = fetch('POST', url, cache);\n\n promise.then((response) => {\n this.cache = response;\n this.propagateChanges();\n }, this._errorHandler('Creating lookup table cache failed', `Could not create lookup table cache \"${cache.name}\"`));\n\n LookupTableCachesActions.create.promise(promise);\n\n return promise;\n },\n\n update(cache) {\n const url = this._url(`caches/${cache.id}`);\n const promise = fetch('PUT', url, cache);\n\n promise.then((response) => {\n this.cache = response;\n this.propagateChanges();\n }, this._errorHandler('Updating lookup table cache failed', `Could not update lookup table cache \"${cache.name}\"`));\n\n LookupTableCachesActions.update.promise(promise);\n\n return promise;\n },\n\n getTypes() {\n const url = this._url('types/caches');\n const promise = fetch('GET', url);\n\n promise.then((response) => {\n this.types = response;\n this.propagateChanges();\n }, this._errorHandler('Fetching available types failed', 'Could not fetch the available lookup table cache types'));\n\n LookupTableCachesActions.getTypes.promise(promise);\n\n return promise;\n },\n\n delete(idOrName) {\n const url = this._url(`caches/${idOrName}`);\n const promise = fetch('DELETE', url);\n\n promise.catch(this._errorHandler('Deleting lookup table cache failed', `Could not delete lookup table cache \"${idOrName}\"`));\n\n LookupTableCachesActions.delete.promise(promise);\n\n return promise;\n },\n\n validate(cache) {\n const url = this._url('caches/validate');\n const promise = fetch('POST', url, cache);\n\n promise.then((response) => {\n this.validationErrors = response.errors;\n this.propagateChanges();\n }, this._errorHandler('Lookup table cache validation failed', `Could not validate lookup table cache \"${cache.name}\"`));\n\n LookupTableCachesActions.validate.promise(promise);\n\n return promise;\n },\n\n _errorHandler(message, title, cb) {\n return (error) => {\n let errorMessage;\n\n try {\n errorMessage = error.additional.body.message;\n } catch (e) {\n errorMessage = error.message;\n }\n\n UserNotification.error(`${message}: ${errorMessage}`, title);\n\n if (cb) {\n cb(error);\n }\n };\n },\n\n _url(path) {\n return URLUtils.qualifyUrl(`/system/lookup/${path}`);\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 Reflux from 'reflux';\n\nimport UserNotification from 'util/UserNotification';\nimport * as URLUtils from 'util/URLUtils';\nimport fetch from 'logic/rest/FetchProvider';\nimport { singletonStore, singletonActions } from 'logic/singleton';\n\nexport const LookupTableDataAdaptersActions = singletonActions(\n 'core.LookupTableDataAdapters',\n () => Reflux.createActions({\n searchPaginated: { asyncResult: true },\n reloadPage: { asyncResult: true },\n get: { asyncResult: true },\n create: { asyncResult: true },\n delete: { asyncResult: true },\n update: { asyncResult: true },\n getTypes: { asyncResult: true },\n lookup: { asyncResult: true },\n validate: { asyncResult: true },\n }),\n);\n\nexport const LookupTableDataAdaptersStore = singletonStore(\n 'core.LookupTableDataAdapters',\n () => Reflux.createStore({\n listenables: [LookupTableDataAdaptersActions],\n dataAdapter: null,\n dataAdapters: undefined,\n types: null,\n pagination: {\n page: 1,\n per_page: 10,\n total: 0,\n count: 0,\n query: null,\n },\n lookupResult: null,\n validationErrors: {},\n\n getInitialState() {\n return this.getState();\n },\n\n getState() {\n return {\n dataAdapter: this.dataAdapter,\n dataAdapters: this.dataAdapters,\n lookupResult: this.lookupResult,\n types: this.types,\n pagination: this.pagination,\n validationErrors: this.validationErrors,\n };\n },\n\n propagateChanges() {\n this.trigger(this.getState());\n },\n\n reloadPage() {\n const promise = this.searchPaginated(this.pagination.page, this.pagination.per_page, this.pagination.query);\n\n LookupTableDataAdaptersActions.reloadPage.promise(promise);\n\n return promise;\n },\n\n searchPaginated(page, perPage, query) {\n let url;\n\n if (query) {\n url = this._url(`adapters?page=${page}&per_page=${perPage}&query=${encodeURIComponent(query)}`);\n } else {\n url = this._url(`adapters?page=${page}&per_page=${perPage}`);\n }\n\n const promise = fetch('GET', url);\n\n promise.then((response) => {\n this.pagination = {\n count: response.count,\n total: response.total,\n page: response.page,\n per_page: response.per_page,\n query: response.query,\n };\n\n this.dataAdapters = response.data_adapters;\n this.propagateChanges();\n }, this._errorHandler('Fetching lookup table data adapters failed', 'Could not retrieve the lookup dataAdapters'));\n\n LookupTableDataAdaptersActions.searchPaginated.promise(promise);\n\n return promise;\n },\n\n get(idOrName) {\n const url = this._url(`adapters/${idOrName}`);\n const promise = fetch('GET', url);\n\n promise.then((response) => {\n this.dataAdapter = response;\n this.propagateChanges();\n }, this._errorHandler(`Fetching lookup table data adapter ${idOrName} failed`, 'Could not retrieve lookup table data adapter'));\n\n LookupTableDataAdaptersActions.get.promise(promise);\n\n return promise;\n },\n\n create(dataAdapter) {\n const url = this._url('adapters');\n const promise = fetch('POST', url, dataAdapter);\n\n promise.then((response) => {\n this.dataAdapter = response;\n this.propagateChanges();\n }, this._errorHandler('Creating lookup table data adapter failed', `Could not create lookup table data adapter \"${dataAdapter.name}\"`));\n\n LookupTableDataAdaptersActions.create.promise(promise);\n\n return promise;\n },\n\n update(dataAdapter) {\n const url = this._url(`adapters/${dataAdapter.id}`);\n const promise = fetch('PUT', url, dataAdapter);\n\n promise.then((response) => {\n this.dataAdapter = response;\n this.propagateChanges();\n }, this._errorHandler('Updating lookup table data adapter failed', `Could not update lookup table data adapter \"${dataAdapter.name}\"`));\n\n LookupTableDataAdaptersActions.update.promise(promise);\n\n return promise;\n },\n\n getTypes() {\n const url = this._url('types/adapters');\n const promise = fetch('GET', url);\n\n promise.then((response) => {\n this.types = response;\n this.propagateChanges();\n }, this._errorHandler('Fetching available types failed', 'Could not fetch the available lookup table data adapter types'));\n\n LookupTableDataAdaptersActions.getTypes.promise(promise);\n\n return promise;\n },\n\n delete(idOrName) {\n const url = this._url(`adapters/${idOrName}`);\n const promise = fetch('DELETE', url);\n\n promise.catch(this._errorHandler('Deleting lookup table data adapter failed', `Could not delete lookup table data adapter \"${idOrName}\"`));\n\n LookupTableDataAdaptersActions.delete.promise(promise);\n\n return promise;\n },\n\n lookup(adapterName, key) {\n const promise = fetch('GET', this._url(`adapters/${adapterName}/query?key=${encodeURIComponent(key)}`));\n\n promise.then((response) => {\n this.lookupResult = response;\n this.propagateChanges();\n }, this._errorHandler('Lookup failed', `Could not lookup value for key \"${key}\" in lookup table data adapter \"${adapterName}\"`));\n\n LookupTableDataAdaptersActions.lookup.promise(promise);\n\n return promise;\n },\n\n validate(adapter) {\n const url = this._url('adapters/validate');\n const promise = fetch('POST', url, adapter);\n\n promise.then((response) => {\n this.validationErrors = response.errors;\n this.propagateChanges();\n }, this._errorHandler('Lookup table data adapter validation failed', `Could not validate lookup table data adapter \"${adapter.name}\"`));\n\n LookupTableDataAdaptersActions.validate.promise(promise);\n\n return promise;\n },\n\n _errorHandler(message, title, cb) {\n return (error) => {\n let errorMessage;\n\n try {\n errorMessage = error.additional.body.message;\n } catch (e) {\n errorMessage = error.message;\n }\n\n UserNotification.error(`${message}: ${errorMessage}`, title);\n\n if (cb) {\n cb(error);\n }\n };\n },\n\n _url(path) {\n return URLUtils.qualifyUrl(`/system/lookup/${path}`);\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 Reflux from 'reflux';\n\nimport UserNotification from 'util/UserNotification';\nimport PaginationURL from 'util/PaginationURL';\nimport { qualifyUrl } from 'util/URLUtils';\nimport fetch from 'logic/rest/FetchProvider';\nimport { singletonStore, singletonActions } from 'logic/singleton';\nimport type { LookupTable, LookupTableAdapter, LookupTableCache } from 'logic/lookup-tables/types';\nimport type { PaginatedResponseType } from 'stores/PaginationTypes';\n\ntype LookupResult = {\n multi_value: string | number | object | boolean | null,\n single_value: string | number | object | boolean | null,\n string_list_value: Array | null,\n ttl: number,\n has_error: boolean,\n}\n\ntype ValidationErrors = {\n error_context: {\n [fieldName: string]: Array | undefined,\n },\n failed: boolean,\n errors: {\n [fieldName: string]: Array | undefined,\n },\n}\n\ntype ErrorState = {\n tables: {\n [tableId: string]: string | undefined,\n },\n caches: {\n [cacheId: string]: string | undefined,\n },\n dataAdapters: {\n [adapterId: string]: string | undefined,\n }\n}\n\ntype LookupTablesStoreState = {\n pagination: PaginatedResponseType,\n errorState: ErrorState,\n table: LookupTable | null,\n cache: LookupTableCache | null,\n dataAdapter: LookupTableAdapter | null,\n tables: {\n [tableId: string]: LookupTable | undefined,\n },\n caches: {\n [cacheId: string]: LookupTableCache | undefined,\n },\n dataAdapters: {\n [adapterId: string]: LookupTableAdapter | undefined,\n },\n lookupResult: LookupResult | null,\n validationErrors: ValidationErrors,\n}\n\ntype LookupTableActionsType = {\n searchPaginated: (page: number, perPage: number, query: string, resolve: boolean) => Promise,\n reloadPage: () => Promise,\n get: (idOrName: string) => Promise,\n create: (table: LookupTable) => Promise,\n delete: (idOrName: string) => Promise,\n update: (table: LookupTable) => Promise,\n getErrors: (tableNames: Array | undefined, cacheNames: Array | undefined, dataAdapterNames: Array | undefined) => Promise,\n lookup: (tableName: string, key: string) => Promise,\n purgeKey: (table: LookupTable, key: string) => Promise,\n purgeAll: (table: LookupTable, key: string) => Promise,\n validate: (table: LookupTable) => Promise,\n}\n\nexport const LookupTablesActions = singletonActions(\n 'core.LookupTables',\n () => Reflux.createActions({\n searchPaginated: { asyncResult: true },\n reloadPage: { asyncResult: true },\n get: { asyncResult: true },\n create: { asyncResult: true },\n delete: { asyncResult: true },\n update: { asyncResult: true },\n getErrors: { asyncResult: true },\n lookup: { asyncResult: true },\n purgeKey: { asyncResult: true },\n purgeAll: { asyncResult: true },\n validate: { asyncResult: true },\n }),\n);\n\nexport const LookupTablesStore = singletonStore(\n 'core.LookupTables',\n () => Reflux.createStore({\n listenables: [LookupTablesActions],\n pagination: {\n page: 1,\n per_page: 10,\n total: 0,\n count: 0,\n query: null,\n },\n errorStates: {\n tables: {},\n caches: {},\n dataAdapters: {},\n },\n table: null,\n cache: null,\n dataAdapter: null,\n tables: null,\n caches: null,\n dataAdapters: null,\n lookupResult: null,\n validationErrors: {},\n\n getInitialState() {\n return this.getState();\n },\n\n getState() {\n return {\n errorStates: this.errorStates,\n table: this.table,\n cache: this.cache,\n dataAdapter: this.dataAdapter,\n tables: this.tables,\n caches: this.caches,\n dataAdapters: this.dataAdapters,\n lookupResult: this.lookupResult,\n validationErrors: this.validationErrors,\n pagination: this.pagination,\n };\n },\n\n propagateChanges() {\n this.trigger(this.getState());\n },\n\n reloadPage() {\n const promise = this.searchPaginated(this.pagination.page, this.pagination.per_page, this.pagination.query);\n\n LookupTablesActions.reloadPage.promise(promise);\n\n return promise;\n },\n\n searchPaginated(page: number, perPage: number, query: string, resolve: boolean = true) {\n const url = this._url(PaginationURL('tables', page, perPage, query, { resolve }));\n const promise = fetch('GET', url);\n\n promise.then((response) => {\n this.pagination = {\n count: response.count,\n total: response.total,\n page: response.page,\n per_page: response.per_page,\n query: response.query,\n };\n\n this.tables = response.lookup_tables;\n this.caches = response.caches;\n this.dataAdapters = response.data_adapters;\n this.propagateChanges();\n }, this._errorHandler('Fetching lookup tables failed', 'Could not retrieve the lookup tables'));\n\n LookupTablesActions.searchPaginated.promise(promise);\n\n return promise;\n },\n\n get(idOrName: string) {\n const url = this._url(`tables/${idOrName}?resolve=true`);\n const promise = fetch('GET', url);\n\n promise.then((response) => {\n // do not propagate pagination! it will destroy the subsequent overview page's state.\n const lookupTable = response.lookup_tables[0];\n\n this.table = lookupTable;\n this.cache = response.caches[lookupTable.cache_id];\n this.dataAdapter = response.data_adapters[lookupTable.data_adapter_id];\n this.propagateChanges();\n }, this._errorHandler(`Fetching lookup table ${idOrName} failed`,\n 'Could not retrieve lookup table'));\n\n LookupTablesActions.get.promise(promise);\n\n return promise;\n },\n\n create(table: LookupTable) {\n const url = this._url('tables');\n const promise = fetch('POST', url, table);\n\n promise.catch(this._errorHandler('Creating lookup table failed', `Could not create lookup table \"${table.name}\"`));\n\n LookupTablesActions.create.promise(promise);\n\n return promise;\n },\n\n update(table: LookupTable) {\n const url = this._url(`tables/${table.id}`);\n const promise = fetch('PUT', url, table);\n\n promise.catch(this._errorHandler('Updating lookup table failed', `Could not update lookup table \"${table.name}\"`));\n\n LookupTablesActions.update.promise(promise);\n\n return promise;\n },\n\n delete(idOrName: string) {\n const url = this._url(`tables/${idOrName}`);\n const promise = fetch('DELETE', url);\n\n promise.catch(this._errorHandler('Deleting lookup table failed', `Could not delete lookup table \"${idOrName}\"`));\n\n LookupTablesActions.delete.promise(promise);\n\n return promise;\n },\n\n getErrors(tableNames: Array | undefined, cacheNames: Array | undefined, dataAdapterNames: Array | undefined) {\n const request: {\n tables?: Array;\n caches?: Array;\n data_adapters?: Array;\n } = {};\n\n if (tableNames) {\n request.tables = tableNames;\n }\n\n if (cacheNames) {\n request.caches = cacheNames;\n }\n\n if (dataAdapterNames) {\n request.data_adapters = dataAdapterNames;\n }\n\n const promise = fetch('POST', this._url('errorstates'), request);\n\n promise.then((response) => {\n this.errorStates = {\n tables: response.tables || {},\n caches: response.caches || {},\n dataAdapters: response.data_adapters || {},\n };\n\n this.propagateChanges();\n }, this._errorHandler('Fetching lookup table error state failed.', 'Could not error states'));\n\n LookupTablesActions.getErrors.promise(promise);\n\n return promise;\n },\n\n lookup(tableName: string, key: string) {\n const promise = fetch('GET', this._url(`tables/${tableName}/query?key=${encodeURIComponent(key)}`));\n\n promise.then((response) => {\n this.lookupResult = response;\n this.propagateChanges();\n }, this._errorHandler('Lookup failed', `Could not lookup value for key \"${key}\" in lookup table \"${tableName}\"`));\n\n LookupTablesActions.lookup.promise(promise);\n\n return promise;\n },\n\n purgeKey(table: LookupTable, key: string) {\n const promise = fetch('POST', this._urlClusterWise(`tables/${table.id}/purge?key=${encodeURIComponent(key)}`));\n\n promise.then(() => {\n UserNotification.success(`Purging cache key \"${key}\" for lookup table \"${table.name}\"`, 'Success!');\n }, this._errorHandler(`Could not purge cache for key \"${key}\" in lookup table \"${table.name}\"`, 'Failed!'));\n\n LookupTablesActions.purgeKey.promise(promise);\n\n return promise;\n },\n\n purgeAll(table: LookupTable) {\n const promise = fetch('POST', this._urlClusterWise(`tables/${table.id}/purge`));\n\n promise.then(() => {\n UserNotification.success(`Purging cache for lookup table \"${table.name}\"`, 'Success!');\n }, this._errorHandler(`Could not purge cache for lookup table \"${table.name}\"`, 'Failed!'));\n\n LookupTablesActions.purgeAll.promise(promise);\n\n return promise;\n },\n\n validate(table: LookupTable) {\n const url = this._url('tables/validate');\n const promise = fetch('POST', url, table);\n\n promise.then((response) => {\n this.validationErrors = response.errors;\n this.propagateChanges();\n }, this._errorHandler('Lookup table validation failed', `Could not validate lookup table \"${table.name}\"`));\n\n LookupTablesActions.validate.promise(promise);\n\n return promise;\n },\n\n _errorHandler(message: string, title: string, cb: (error: Error) => void | undefined) {\n return (error) => {\n try {\n // Do not show the user notification if the error is a hibernate error message. We cannot display those\n // properly yet...\n if (error.additional.body[0].message_template) {\n return;\n }\n } catch (e) {\n // ignored\n }\n\n let errorMessage;\n\n try {\n errorMessage = error.additional.body.message;\n } catch (e) {\n errorMessage = error.message;\n }\n\n UserNotification.error(`${message}: ${errorMessage}`, title);\n\n if (cb) {\n cb(error);\n }\n };\n },\n\n _url(path: string) {\n return qualifyUrl(`/system/lookup/${path}`);\n },\n\n _urlClusterWise(path: string) {\n return qualifyUrl(`/cluster/system/lookup/${path}`);\n },\n }),\n);\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"._WOp2bWqXDYrxvBkNQVa {\\n max-width: 400px;\\n}\\n\\n.ZB8sCgEwW7KZwhU6vhHF {\\n margin-right: 5px;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/lookup-tables/ErrorPopover.css\"],\"names\":[],\"mappings\":\"AAAA;IACI,gBAAgB;AACpB;;AAEA;IACI,iBAAiB;AACrB\",\"sourcesContent\":[\":local(.overlay) {\\n max-width: 400px;\\n}\\n\\n:local(.trigger) {\\n margin-right: 5px;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"overlay\": \"_WOp2bWqXDYrxvBkNQVa\",\n\t\"trigger\": \"ZB8sCgEwW7KZwhU6vhHF\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n\\n.eooimJB8iUwv4GuS5OgP {\\n cursor: help;\\n padding: 0 0 0 2px;\\n margin-left: 5px;\\n}\\n\\n.EM8rNPeHI3I13MdYidzw {\\n max-width: 500px;\\n min-width: 350px;\\n}\\n\\n/* styles for table columns */\\n.oNIxQlLcjvvFY27jyODI {\\n width: 15%;\\n}\\n.jXZIhUCAUZtfWZKKiLy0 {\\n max-width: 50%;\\n width: 35%\\n}\\n.Ii_DwC6G4wRm7thBYSKE {\\n width: 15%;\\n}\\n.q54g6XMj1D9X2J48jgrw {\\n width: 15%;\\n}\\n.wFLgXxYT9cnZwrNRg6DJ {\\n width: 15%;\\n}\\n.mk2GxDtbjbYu9RWQh_nL {\\n min-width: 100px;\\n}\\n\\noverviewTable {\\n width: 100%;\\n table-layout: fixed;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/lookup-tables/Overview.css\"],\"names\":[],\"mappings\":\";;AAEA;IACI,YAAY;IACZ,kBAAkB;IAClB,gBAAgB;AACpB;;AAEA;IACI,gBAAgB;IAChB,gBAAgB;AACpB;;AAEA,6BAA6B;AAC7B;IACI,UAAU;AACd;AACA;IACI,cAAc;IACd;AACJ;AACA;IACI,UAAU;AACd;AACA;IACI,UAAU;AACd;AACA;IACI,UAAU;AACd;AACA;IACI,gBAAgB;AACpB;;AAEA;IACI,WAAW;IACX,mBAAmB;AACvB\",\"sourcesContent\":[\"\\n\\n:local(.searchHelpButton) {\\n cursor: help;\\n padding: 0 0 0 2px;\\n margin-left: 5px;\\n}\\n\\n:local(.popoverWide) {\\n max-width: 500px;\\n min-width: 350px;\\n}\\n\\n/* styles for table columns */\\n:local(.rowTitle) {\\n width: 15%;\\n}\\n:local(.rowDescription) {\\n max-width: 50%;\\n width: 35%\\n}\\n:local(.rowName) {\\n width: 15%;\\n}\\n:local(.rowCache) {\\n width: 15%;\\n}\\n:local(.rowAdapter) {\\n width: 15%;\\n}\\n:local(.rowActions) {\\n min-width: 100px;\\n}\\n\\n:local(overviewTable) {\\n width: 100%;\\n table-layout: fixed;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"searchHelpButton\": \"eooimJB8iUwv4GuS5OgP\",\n\t\"popoverWide\": \"EM8rNPeHI3I13MdYidzw\",\n\t\"rowTitle\": \"oNIxQlLcjvvFY27jyODI\",\n\t\"rowDescription\": \"jXZIhUCAUZtfWZKKiLy0\",\n\t\"rowName\": \"Ii_DwC6G4wRm7thBYSKE\",\n\t\"rowCache\": \"q54g6XMj1D9X2J48jgrw\",\n\t\"rowAdapter\": \"wFLgXxYT9cnZwrNRg6DJ\",\n\t\"rowActions\": \"mk2GxDtbjbYu9RWQh_nL\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n"],"names":["MaxmindAdapterFieldSet","config","updateConfig","handleFormEvent","validationState","validationMessage","isCloud","AppConfig","pathsForCloud","IPINFO_STANDARD_LOCATION","IPINFO_ASN","ipInfoDatabaseTypes","label","value","databaseTypes","type","id","name","autoFocus","required","onChange","help","bsStyle","path","labelClassName","wrapperClassName","placeholder","clearable","options","matchProp","newConfig","ObjectUtils","database_type","update","unit","enabled","check_interval","check_interval_unit","defaultEnabled","propTypes","PropTypes","MaxmindAdapterSummary","this","props","dataAdapter","MAXMIND_ASN","MAXMIND_CITY","MAXMIND_COUNTRY","React","MaxmindAdapterDocumentation","style","marginBottom","href","target","rel","PluginStore","PluginManifest","lookupTableAdapters","displayName","formComponent","summaryComponent","documentationComponent","CSVFileAdapterFieldSet","separator","quotechar","key_column","value_column","checked","case_insensitive_lookup","CSVFileAdapterSummary","CSVFileAdapterDocumentation","className","padding","DnsAdapterFieldSet","lookup_type","_updateCacheTTLOverride","fieldPrefix","_onLookupTypeSelect","server_ips","request_timeout","updateCacheTTLOverride","cache_ttl_override","cache_ttl_override_unit","units","cache_ttl_override_enabled","isRequired","DnsAdapterSummary","A","AAAA","A_AAAA","PTR","TXT","StyledPre","styled","theme","css","fonts","size","small","styleMarginBottom","DSVHTTPAdapterFieldSet","url","refresh_interval","line_separator","ignorechar","check_presence_only","HTTPJSONPathAdapterFieldSet","headers","configChange","urlType","single_value_jsonpath","multi_value_jsonpath","user_agent","pairs","editable","onHTTPHeaderUpdate","HTTPJSONPathAdapterSummary","md","DnsAdapterDocumentation","DSVHTTPAdapterSummary","DSVHTTPAdapterDocumentation","HTTPJSONPathAdapterDocumentation","NullCacheFieldSet","NullCacheSummary","cache","CaffeineCacheFieldSet","_update","max_size","updateAfterAccess","expire_after_access","expire_after_access_unit","updateAfterWrite","expire_after_write","expire_after_write_unit","CaffeineCacheSummary","CaffeineCacheDocumentation","lookupTableCaches","LUTTableEntry","window","confirm","table","title","LookupTablesActions","then","errors","placement","errorText","to","Routes","description","bsSize","onClick","_onDelete","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","undefined","LookupTablesOverview","newPage","newPerPage","pagination","query","resetLoadingStateCb","page","per_page","map","empty","errorStates","dataAdapters","adapter","data_adapter_id","Styles","condensed","lookupTables","tables","_lookupName","cache_id","caches","_lookupAdapterError","key","total","_onPageChange","totalItems","onSearch","_onSearch","onReset","_onReset","useLoadingState","marginLeft","trigger","rootClose","overlay","_helpPopover","fixedWidth","hover","LookupTable","lookupKey","lookupResult","purgeKey","event","setState","FormsUtils","e","preventDefault","state","length","result","default_single_value","default_multi_value","default_single_value_type","toLowerCase","default_multi_value_type","onSubmit","_onPurgeKey","_onChangePurgeKey","_onPurgeAll","_lookupKey","_onChange","JSON","stringify","LookupTableForm","validationCheckTimer","clearTimeout","_clearTimer","validate","setTimeout","t","enable_default_single","enable_default_multi","_validate","create","saved","valueType","_onDefaultValueUpdate","fieldName","validationErrors","defaultText","_initialState","nextProps","_","_save","_validationMessage","_validationState","_onCheckEnableSingleDefault","_onDefaultSingleValueUpdate","allowedTypes","_onCheckEnableMultiDefault","_onDefaultMultiValueUpdate","onSelect","_onAdapterSelect","selectedId","_onCacheSelect","mdOffset","LookupTableCreate","lg","LookupTableCachesActions","metrics","totalHits","totalMisses","Object","keys","nodeId","hits","metric","rate","forEach","v","misses","hitRate","NumberUtils","count","countMap","requests","entriesMap","computeValue","_onEntriesMetrics","_onCountMetrics","suffix","CachesOverview","text","cacheTableEntries","CacheTableEntry","Cache","plugins","p","plugin","summary","CacheForm","c","generateName","stateCache","_sanitizeTitle","trim","replace","toLocaleLowerCase","typeName","TagName","_input","getInputDOMNode","focus","prevProps","currentType","updateState","filter","configFieldSet","pluginDisplayName","_onConfigChange","_updateConfig","documentationColumn","formRowWidth","_renderTitle","ref","CacheCreate","cacheType","types","default_config","cachePlugins","sortedCaches","typeItem","sort","a","b","naturalSort","_onTypeSelect","CachePicker","createReactClass","children","mixins","Reflux","LookupTableCachesStore","getDefaultProps","componentDidMount","render","childrenWithProps","child","DataAdapterTableEntry","LookupTableDataAdaptersActions","error","DataAdaptersOverview","dataAdapterEntries","DataAdapter","getValueFromInput","DataAdapterForm","generateAdapterName","isFormDisabled","custom_error_ttl_enabled","custom_error_ttl","custom_error_ttl_unit","isDisabled","dataAdapterState","_updateCustomErrorTTL","setDisableFormSubmission","_setIsFormDisabled","dataAdapterId","updateCustomErrorTTL","disabled","DataAdapterCreate","adapterType","adapterPlugins","sortedAdapters","console","DataAdapterPicker","LookupTableDataAdaptersStore","ErrorPopover","singletonActions","searchPaginated","asyncResult","reloadPage","get","delete","getTypes","singletonStore","listenables","getInitialState","getState","propagateChanges","promise","perPage","_url","encodeURIComponent","fetch","response","_errorHandler","idOrName","message","cb","errorMessage","additional","body","UserNotification","URLUtils","lookup","data_adapters","adapterName","getErrors","purgeAll","LookupTablesStore","resolve","PaginationURL","lookup_tables","lookupTable","tableNames","cacheNames","dataAdapterNames","request","tableName","_urlClusterWise","message_template","qualifyUrl","___CSS_LOADER_EXPORT___","push","module","locals"],"sourceRoot":""}