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

web-interface.assets.d7fbfcf5-9.b67e8c7e61f91c988887.js.map Maven / Gradle / Ivy

There is a newer version: 5.2.7
Show newest version
{"version":3,"sources":["webpack:///./src/components/maps/adapter/MaxmindAdapterFieldSet.jsx","webpack:///./src/components/maps/adapter/MaxmindAdapterSummary.jsx","webpack:///./src/components/maps/adapter/MaxmindAdapterDocumentation.jsx","webpack:///./src/components/maps/adapter/index.js","webpack:///./src/components/lookup-tables/adapters/CSVFileAdapterFieldSet.jsx","webpack:///./src/components/lookup-tables/adapters/CSVFileAdapterSummary.jsx","webpack:///./src/components/lookup-tables/adapters/CSVFileAdapterDocumentation.jsx","webpack:///./src/components/lookup-tables/adapters/DnsAdapterFieldSet.jsx","webpack:///./src/components/lookup-tables/adapters/DnsAdapterSummary.jsx","webpack:///./src/components/lookup-tables/adapters/DnsAdapterDocumentation.jsx","webpack:///./src/components/lookup-tables/adapters/DSVHTTPAdapterFieldSet.jsx","webpack:///./src/components/lookup-tables/adapters/DSVHTTPAdapterSummary.jsx","webpack:///./src/components/lookup-tables/adapters/DSVHTTPAdapterDocumentation.jsx","webpack:///./src/components/lookup-tables/adapters/HTTPJSONPathAdapterFieldSet.jsx","webpack:///./src/components/lookup-tables/adapters/HTTPJSONPathAdapterSummary.jsx","webpack:///./src/components/lookup-tables/adapters/HTTPJSONPathAdapterDocumentation.jsx","webpack:///./src/components/lookup-tables/adapters/index.js","webpack:///./src/components/lookup-tables/caches/NullCacheFieldSet.jsx","webpack:///./src/components/lookup-tables/caches/NullCacheSummary.jsx","webpack:///./src/components/lookup-tables/caches/CaffeineCacheFieldSet.jsx","webpack:///./src/components/lookup-tables/caches/CaffeineCacheSummary.jsx","webpack:///./src/components/lookup-tables/caches/CaffeineCacheDocumentation.jsx","webpack:///./src/components/lookup-tables/caches/index.js","webpack:///./src/components/lookup-tables/LUTTableEntry.jsx","webpack:///./src/components/lookup-tables/LookupTablesOverview.jsx","webpack:///./src/components/lookup-tables/LookupTable.jsx","webpack:///./src/components/lookup-tables/LookupTableForm.jsx","webpack:///./src/components/lookup-tables/LookupTableCreate.jsx","webpack:///./src/components/lookup-tables/CacheTableEntry.jsx","webpack:///./src/components/lookup-tables/CachesOverview.jsx","webpack:///./src/components/lookup-tables/Cache.jsx","webpack:///./src/components/lookup-tables/CacheForm.jsx","webpack:///./src/components/lookup-tables/CacheCreate.jsx","webpack:///./src/components/lookup-tables/CachePicker.jsx","webpack:///./src/components/lookup-tables/CachesContainer.jsx","webpack:///./src/components/lookup-tables/DataAdapterTableEntry.jsx","webpack:///./src/components/lookup-tables/DataAdaptersOverview.jsx","webpack:///./src/components/lookup-tables/DataAdapter.jsx","webpack:///./src/components/lookup-tables/DataAdapterForm.jsx","webpack:///./src/components/lookup-tables/DataAdapterCreate.jsx","webpack:///./src/components/lookup-tables/DataAdapterPicker.jsx","webpack:///./src/components/lookup-tables/DataAdaptersContainer.jsx","webpack:///./src/components/lookup-tables/ErrorPopover.jsx","webpack:///./src/components/lookup-tables/index.js","webpack:///./src/components/lookup-tables/Overview.css","webpack:///./src/components/lookup-tables/ConfigSummary.css?de13","webpack:///./src/components/lookup-tables/ErrorPopover.css?cabb","webpack:///./src/components/lookup-tables/ConfigSummary.css","webpack:///./src/components/lookup-tables/ErrorPopover.css","webpack:///./src/components/lookup-tables/Overview.css?d088"],"names":["MaxmindAdapterFieldSet","value","unit","enabled","name","config","ObjectUtils","clone","props","updateConfig","_update","id","database_type","this","type","label","autoFocus","required","onChange","handleFormEvent","help","validationMessage","bsStyle","validationState","path","labelClassName","wrapperClassName","placeholder","clearable","options","matchProp","_onDbTypeSelect","update","updateCheckInterval","check_interval","check_interval_unit","defaultEnabled","React","Component","PropTypes","object","isRequired","func","MaxmindAdapterSummary","dataAdapter","MAXMIND_ASN","MAXMIND_CITY","MAXMIND_COUNTRY","MaxmindAdapterDocumentation","style","marginBottom","href","target","rel","PluginStore","register","PluginManifest","lookupTableAdapters","displayName","formComponent","summaryComponent","documentationComponent","CSVFileAdapterFieldSet","separator","quotechar","key_column","value_column","checked","case_insensitive_lookup","CSVFileAdapterSummary","CSVFileAdapterDocumentation","className","padding","DnsAdapterFieldSet","newConfig","lookup_type","_updateCacheTTLOverride","fieldPrefix","_onLookupTypeSelect","server_ips","request_timeout","updateCacheTTLOverride","cache_ttl_override","cache_ttl_override_unit","units","cache_ttl_override_enabled","shape","number","string","DnsAdapterSummary","A","AAAA","A_AAAA","PTR","TXT","propTypes","DnsAdapterDocumentation","styleMarginBottom","codeStyle","fontSize","DSVHTTPAdapterFieldSet","url","refresh_interval","line_separator","ignorechar","check_presence_only","DSVHTTPAdapterSummary","DSVHTTPAdapterDocumentation","HTTPJSONPathAdapterFieldSet","headers","urlType","single_value_jsonpath","multi_value_jsonpath","user_agent","pairs","editable","onHTTPHeaderUpdate","HTTPJSONPathAdapterSummary","HTTPJSONPathAdapterDocumentation","md","NullCacheFieldSet","NullCacheSummary","cache","CaffeineCacheFieldSet","max_size","updateAfterAccess","expire_after_access","expire_after_access_unit","updateAfterWrite","expire_after_write","expire_after_write_unit","CaffeineCacheSummary","CaffeineCacheDocumentation","lookupTableCaches","LookupTablesActions","CombinedProvider","get","LUTTableEntry","window","confirm","table","title","then","reloadPage","errors","placement","errorText","to","Routes","SYSTEM","LOOKUPTABLES","show","contentPack","content_pack","marginLeft","description","CACHES","DATA_ADAPTERS","edit","bsSize","onClick","_onDelete","LookupTablesOverview","newPage","newPerPage","searchPaginated","pagination","query","resetLoadingStateCb","page","per_page","map","empty","errorStates","dataAdapters","adapter","data_adapter_id","Styles","popoverWide","condensed","lookupTables","tables","_lookupName","cache_id","caches","_lookupAdapterError","key","total","_onPageChange","totalItems","onSearch","_onSearch","onReset","_onReset","useLoadingState","CREATE","trigger","rootClose","overlay","_helpPopover","searchHelpButton","fixedWidth","hover","overviewTable","rowTitle","rowDescription","rowName","rowCache","rowAdapter","rowActions","arrayOf","objectOf","LookupTable","lookupKey","lookupResult","purgeKey","event","setState","FormsUtils","getValueFromInput","e","preventDefault","state","length","purgeAll","lookup","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","undefined","validationCheckTimer","clearTimeout","_clearTimer","validate","setTimeout","t","enable_default_single","enable_default_multi","_validate","create","saved","valueType","_onDefaultValueUpdate","fieldName","validationErrors","defaultText","_initialState","nextProps","_","isEqual","_save","_validationMessage","_validationState","_onCheckEnableSingleDefault","_onDefaultSingleValueUpdate","allowedTypes","_onCheckEnableMultiDefault","_onDefaultMultiValueUpdate","onSelect","_onAdapterSelect","selectedId","_onCacheSelect","mdOffset","bool","LookupTableCreate","lg","LookupTableCachesActions","metrics","totalHits","totalMisses","Object","keys","nodeId","hits","metric","rate","forEach","v","misses","hitRate","NumberUtils","formatNumber","count","countMap","requests","entriesMap","computeValue","_onEntriesMetrics","_onCountMetrics","suffix","CachesOverview","text","cacheTableEntries","CacheTableEntry","array","Cache","plugins","exports","p","plugin","summary","createElement","CacheForm","c","generateName","stateCache","_sanitizeTitle","trim","replace","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","LookupTableCachesStore","CachesContainer","createReactClass","children","oneOfType","node","mixins","Reflux","connect","getDefaultProps","componentDidMount","render","childrenWithProps","Children","child","cloneElement","LookupTableDataAdaptersActions","DataAdapterTableEntry","error","DataAdaptersOverview","dataAdapterEntries","DataAdapter","DataAdapterForm","generateAdapterName","custom_error_ttl_enabled","custom_error_ttl","custom_error_ttl_unit","dataAdapterState","_updateCustomErrorTTL","dataAdapterId","updateCustomErrorTTL","DataAdapterCreate","adapterType","adapterPlugins","sortedAdapters","console","disabled","DataAdapterPicker","LookupTableDataAdaptersStore","DataAdaptersContainer","ErrorPopover","module","push","i","locals","content","transform"],"mappings":"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","file":"d7fbfcf5-9.b67e8c7e61f91c988887.js","sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\nimport ObjectUtils from 'util/ObjectUtils';\n\nimport { Input } from 'components/bootstrap';\nimport { Select, TimeUnitInput } from 'components/common';\n\nclass MaxmindAdapterFieldSet 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  _update = (value, unit, enabled, name) => {\n    const config = ObjectUtils.clone(this.props.config);\n    config[name] = enabled ? value : 0;\n    config[`${name}_unit`] = unit;\n    this.props.updateConfig(config);\n  };\n\n  updateCheckInterval = (value, unit, enabled) => {\n    this._update(value, unit, enabled, 'check_interval');\n  };\n\n  _onDbTypeSelect = (id) => {\n    const config = ObjectUtils.clone(this.props.config);\n    config.database_type = id;\n    this.props.updateConfig(config);\n  };\n\n  render() {\n    const { config } = this.props;\n    const databaseTypes = [\n      { label: 'ASN database', value: 'MAXMIND_ASN' },\n      { label: 'City database', value: 'MAXMIND_CITY' },\n      { label: 'Country database', value: 'MAXMIND_COUNTRY' },\n    ];\n    return (\n      
\n \n \n \n \n \n \n \n \n \n
\n );\n }\n}\n\nexport default CSVFileAdapterFieldSet;\n","import 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 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\n\nexport default CSVFileAdapterSummary;\n","/* eslint-disable react/no-unescaped-entities */\nimport React from 'react';\nimport { Alert } from 'components/graylog';\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","import PropTypes from 'prop-types';\nimport React from 'react';\nimport ObjectUtils from 'util/ObjectUtils';\n\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 \n
\n );\n }\n}\n\nexport default DnsAdapterFieldSet;\n","import React from 'react';\nimport PropTypes from 'prop-types';\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","import React from 'react';\n\nconst DnsAdapterDocumentation = () => {\n const styleMarginBottom = { marginBottom: 10 };\n const codeStyle = { fontSize: 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\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,\n 192.168.1.244\n ).\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","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Input } from 'components/bootstrap';\nimport { URLWhiteListInput } from 'components/common';\n\nconst DSVHTTPAdapterFieldSet = ({ handleFormEvent, validationState, validationMessage, config }) => {\n return (\n
\n \n \n \n \n \n \n \n \n \n \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","import 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","import React from 'react';\n\nimport { Alert } from 'components/graylog';\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","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { Input } from 'components/bootstrap';\nimport { URLWhiteListInput, KeyValueTable } from 'components/common';\n\nimport ObjectUtils from 'util/ObjectUtils';\n\nclass HTTPJSONPathAdapterFieldSet 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 state = {};\n\n onHTTPHeaderUpdate = (headers) => {\n const { config, updateConfig } = this.props;\n const configChange = ObjectUtils.clone(config);\n configChange.headers = headers;\n updateConfig(config);\n };\n\n render() {\n const { config, handleFormEvent, validationMessage, validationState } = this.props;\n\n return (\n
\n \n \n \n \n \n \n \n\n
\n );\n }\n}\n\nexport default HTTPJSONPathAdapterFieldSet;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { KeyValueTable } from 'components/common';\n\nconst HTTPJSONPathAdapterSummary = ({ dataAdapter }) => {\n const { config } = dataAdapter;\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","/* eslint-disable react/no-unescaped-entities, no-template-curly-in-string */\nimport React from 'react';\nimport { Alert, Col, Row } from 'components/graylog';\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","import { 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","import 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","import 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","import PropTypes from 'prop-types';\nimport React from 'react';\nimport ObjectUtils from 'util/ObjectUtils';\n\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 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 0}\n labelClassName=\"col-sm-3\"\n wrapperClassName=\"col-sm-9\" />\n 0}\n labelClassName=\"col-sm-3\"\n wrapperClassName=\"col-sm-9\" />\n
\n );\n }\n}\n\nexport default CaffeineCacheFieldSet;\n","import PropTypes from 'prop-types';\nimport React from 'react';\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 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","/* eslint-disable react/no-unescaped-entities */\nimport React from 'react';\nimport { Alert } from 'components/graylog';\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","import { 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","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { LinkContainer } from 'react-router-bootstrap';\nimport { Link } from 'react-router';\n\nimport CombinedProvider from 'injection/CombinedProvider';\n\nimport Routes from 'routing/Routes';\n\nimport { Button } from 'components/graylog';\nimport { ErrorPopover } from 'components/lookup-tables';\nimport { ContentPackMarker } from 'components/common';\n\nconst { LookupTablesActions } = CombinedProvider.get('LookupTables');\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 \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","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { LinkContainer } from 'react-router-bootstrap';\n\nimport Routes from 'routing/Routes';\nimport CombinedProvider from 'injection/CombinedProvider';\n\nimport { Row, Col, Table, Popover, OverlayTrigger, Button } from 'components/graylog';\nimport { PaginatedList, SearchForm, Icon } from 'components/common';\nimport LUTTableEntry from 'components/lookup-tables/LUTTableEntry';\n\nimport Styles from './Overview.css';\n\nconst { LookupTablesActions } = CombinedProvider.get('LookupTables');\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 if (!map) {\n return empty;\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 if (!adapter) {\n return null;\n }\n return this.props.errorStates.dataAdapters[adapter.name];\n }\n return null;\n };\n\n _helpPopover = () => {\n return (\n \n

Available search fields

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
FieldDescription
idLookup Table ID
titleThe title of the lookup table
nameThe reference name of the lookup table
descriptionThe description of lookup table
\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 \n \n \n \n \n \n \n \n {lookupTables}\n
TitleDescriptionNameCacheData AdapterActions
\n
\n \n
\n
\n );\n }\n}\n\nexport default LookupTablesOverview;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { LinkContainer } from 'react-router-bootstrap';\nimport { Link } from 'react-router';\n\nimport { ButtonToolbar, Row, Col, Button } from 'components/graylog';\nimport { Input } from 'components/bootstrap';\nimport Routes from 'routing/Routes';\nimport FormsUtils from 'util/FormsUtils';\nimport { ContentPackMarker } from 'components/common';\nimport CombinedProvider from 'injection/CombinedProvider';\n\nconst { LookupTablesActions } = CombinedProvider.get('LookupTables');\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 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 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

\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 \n \n \n \n
\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
\n \n \n
\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","import PropTypes from 'prop-types';\nimport React from 'react';\nimport _ from 'lodash';\n\nimport { Col, Row, Button } from 'components/graylog';\nimport { Input } from 'components/bootstrap';\nimport ObjectUtils from 'util/ObjectUtils';\nimport FormsUtils from 'util/FormsUtils';\nimport { JSONValueInput } from 'components/common';\n\nimport { CachesContainer, CachePicker, DataAdaptersContainer, DataAdapterPicker } from 'components/lookup-tables';\n\nimport CombinedProvider from 'injection/CombinedProvider';\n\nconst { LookupTablesActions } = CombinedProvider.get('LookupTables');\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 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 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 // first cancel outstanding validation timer, we have new data\n this._clearTimer();\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 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 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 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 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 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 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 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 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 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 \n\n \n\n \n\n {this.state.enable_default_single\n && (\n \n )}\n\n \n\n {this.state.enable_default_multi\n && (\n \n )}\n
\n\n \n \n \n\n \n \n \n\n
\n \n \n \n \n \n
\n
\n );\n }\n}\n\nexport default LookupTableForm;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { Row, Col } from 'components/graylog';\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","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { LinkContainer } from 'react-router-bootstrap';\nimport { Link } from 'react-router';\n\nimport { Button } from 'components/graylog';\nimport Routes from 'routing/Routes';\nimport CombinedProvider from 'injection/CombinedProvider';\nimport { ContentPackMarker } from 'components/common';\nimport { MetricsMapper, MetricContainer, CounterRate } from 'components/metrics';\nimport NumberUtils from 'util/NumberUtils';\n\nconst { LookupTableCachesActions } = CombinedProvider.get('LookupTableCaches');\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 const hitRate = (totalHits * 100.0) / total;\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 \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","import PropTypes from 'prop-types';\nimport React from 'react';\nimport Routes from 'routing/Routes';\nimport { LinkContainer } from 'react-router-bootstrap';\n\nimport CombinedProvider from 'injection/CombinedProvider';\nimport { Row, Col, Table, Popover, OverlayTrigger, Button } from 'components/graylog';\nimport { PaginatedList, SearchForm, Spinner, Icon } from 'components/common';\nimport CacheTableEntry from 'components/lookup-tables/CacheTableEntry';\n\nimport Styles from './Overview.css';\n\nconst { LookupTableCachesActions } = CombinedProvider.get('LookupTableCaches');\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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
FieldDescription
idCache ID
titleThe title of the cache
nameThe reference name of the cache
descriptionThe description of cache
\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 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 \n \n \n \n \n \n \n \n \n {cacheTableEntries}\n
TitleDescriptionNameEntriesHit rateThroughputActions
\n
\n \n
\n
\n );\n }\n}\n\nexport default CachesOverview;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { LinkContainer } from 'react-router-bootstrap';\n\nimport Routes from 'routing/Routes';\nimport { PluginStore } from 'graylog-web-plugin/plugin';\nimport { Row, Col, Button } from 'components/graylog';\nimport { ContentPackMarker } from 'components/common';\n\nimport Styles from './ConfigSummary.css';\n\nconst Cache = ({ cache }) => {\n const plugins = {};\n PluginStore.exports('lookupTableCaches').forEach((p) => {\n plugins[p.type] = p;\n });\n\n const plugin = plugins[cache.config.type];\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 {' '}\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","import PropTypes from 'prop-types';\nimport React from 'react';\nimport _ from 'lodash';\n\nimport { Button, Col, Row } from 'components/graylog';\nimport { Input } from 'components/bootstrap';\nimport ObjectUtils from 'util/ObjectUtils';\nimport FormsUtils from 'util/FormsUtils';\n\nimport { PluginStore } from 'graylog-web-plugin/plugin';\n\nimport CombinedProvider from 'injection/CombinedProvider';\n\nconst { LookupTableCachesActions } = CombinedProvider.get('LookupTableCaches');\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 if (prevProps.type !== currentType) {\n this._input.getInputDOMNode().focus();\n }\n const { cache } = this.props;\n if (_.isEqual(cache, prevProps.cache)) {\n // props haven't change, don't update our state from them\n return;\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 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 cache[event.target.name] = FormsUtils.getValueFromInput(event.target);\n let { generateName } = this.state;\n if (generateName && event.target.name === 'title') {\n // generate the name\n cache.name = this._sanitizeTitle(cache.title);\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 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 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 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 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, '-').toLowerCase();\n };\n\n _validationState = (fieldName) => {\n const { validationErrors } = this.props;\n\n if (validationErrors[fieldName]) {\n return 'error';\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 return {defaultText};\n };\n\n _renderTitle = (title, typeName, create) => {\n const TagName = create ? 'h3' : 'h2';\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 if (plugin && plugin.length > 0) {\n const p = plugin[0];\n pluginDisplayName = p.displayName;\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 if (p.documentationComponent) {\n documentationComponent = React.createElement(p.documentationComponent);\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 if (documentationComponent) {\n formRowWidth = 6;\n documentationColumn = (\n \n {documentationComponent}\n \n );\n }\n\n return (\n <>\n {this._renderTitle(title, pluginDisplayName, create)}\n \n \n
\n
\n { this._input = ref; }}\n labelClassName=\"col-sm-3\"\n wrapperClassName=\"col-sm-9\" />\n\n \n\n \n
\n {configFieldSet}\n
\n \n \n \n \n \n
\n
\n \n {documentationColumn}\n
\n \n );\n }\n}\n\nexport default CacheForm;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport naturalSort from 'javascript-natural-sort';\n\nimport { Row, Col } from 'components/graylog';\nimport { Input } from 'components/bootstrap';\nimport { Select } from 'components/common';\nimport { CacheForm } from 'components/lookup-tables';\nimport { PluginStore } from 'graylog-web-plugin/plugin';\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 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 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 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 \n \n \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","import PropTypes from 'prop-types';\nimport React from 'react';\nimport _ from 'lodash';\n\nimport { Col, Row, Button } from 'components/graylog';\nimport { Input } from 'components/bootstrap';\nimport ObjectUtils from 'util/ObjectUtils';\nimport FormsUtils from 'util/FormsUtils';\nimport { PluginStore } from 'graylog-web-plugin/plugin';\nimport CombinedProvider from 'injection/CombinedProvider';\nimport { TimeUnitInput } from 'components/common';\n\nconst { LookupTableDataAdaptersActions } = CombinedProvider.get('LookupTableDataAdapters');\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 if (prevProps.type !== currentType) {\n this._input.getInputDOMNode().focus();\n }\n const { dataAdapter } = this.props;\n if (_.isEqual(dataAdapter, prevProps.dataAdapter)) {\n // props haven't changed, don't update our state from them\n return;\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 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 _validate = (adapter) => {\n const { validate } = this.props;\n\n // first cancel outstanding validation timer, we have new data\n this._clearTimer();\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 dataAdapter[event.target.name] = FormsUtils.getValueFromInput(event.target);\n let { generateAdapterName } = this.state;\n if (generateAdapterName && event.target.name === 'title') {\n // generate the name\n dataAdapter.name = this._sanitizeTitle(dataAdapter.title);\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 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 dataAdapter.config[event.target.name] = FormsUtils.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 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 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 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, '-').toLowerCase();\n };\n\n _validationState = (fieldName) => {\n const { validationErrors } = this.props;\n if (validationErrors[fieldName]) {\n return 'error';\n }\n return null;\n };\n\n _validationMessage = (fieldName, defaultText) => {\n const { validationErrors } = this.props;\n if (validationErrors[fieldName]) {\n return (\n
\n {defaultText}\n  \n {validationErrors[fieldName][0]}\n
\n );\n }\n return {defaultText};\n };\n\n _renderTitle = (title, typeName, create) => {\n const TagName = create ? 'h3' : 'h2';\n return {title} ({typeName});\n };\n\n render() {\n const { dataAdapter } = 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 if (plugin && plugin.length > 0) {\n const p = plugin[0];\n pluginDisplayName = p.displayName;\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 });\n if (p.documentationComponent) {\n documentationComponent = React.createElement(p.documentationComponent, {\n dataAdapterId: dataAdapter.id,\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 // width\n if (documentationComponent) {\n formRowWidth = 6;\n documentationColumn = (\n \n {documentationComponent}\n \n );\n }\n return (\n <>\n {this._renderTitle(title, pluginDisplayName, create)}\n \n \n
\n
\n { this._input = ref; }}\n wrapperClassName=\"col-sm-9\" />\n\n \n\n \n\n \n
\n {configFieldSet}\n
\n \n \n \n \n \n
\n
\n \n {documentationColumn}\n
\n \n );\n }\n}\n\nexport default DataAdapterForm;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport naturalSort from 'javascript-natural-sort';\n\nimport { Row, Col } from 'components/graylog';\nimport { Input } from 'components/bootstrap';\nimport { Select } from 'components/common';\nimport { DataAdapterForm } from 'components/lookup-tables';\nimport { PluginStore } from 'graylog-web-plugin/plugin';\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 state = {\n dataAdapter: undefined,\n type: undefined,\n };\n\n _onTypeSelect = (adapterType) => {\n const { types } = this.props;\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 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 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 return { value: typeItem.type, disabled: true, label: `${typeItem.type} - missing or invalid plugin` };\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