<extensionManifest><groupId>org.apache.nifi</groupId><artifactId>nifi-enrich-nar</artifactId><version>1.22.0</version><parentNar><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-services-api-nar</artifactId><version>1.22.0</version></parentNar><systemApiVersion>1.22.0</systemApiVersion><buildInfo><tag>nifi-1.22.0-RC1</tag><branch>UNKNOWN</branch><revision>71e3ea9</revision></buildInfo><extensions><extension><name>org.apache.nifi.processors.GeoEnrichIP</name><type>PROCESSOR</type><description>Looks up geolocation information for an IP address and adds the geo information to FlowFile attributes. The geo data is provided as a MaxMind database. The attribute that contains the IP address to lookup is provided by the 'IP Address Attribute' property. If the name of the attribute provided is 'X', then the the attributes added by enrichment will take the form X.geo.&lt;fieldName&gt;</description><tags><tag>geo</tag><tag>enrich</tag><tag>ip</tag><tag>maxmind</tag></tags><properties><property><name>Geo Database File</name><displayName>MaxMind Database File</displayName><description>Path to Maxmind IP Enrichment Database File</description><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>VARIABLE_REGISTRY</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><resourceDefinition><cardinality>SINGLE</cardinality><resourceTypes><resourceType>FILE</resourceType><resourceType>DIRECTORY</resourceType></resourceTypes></resourceDefinition></property><property><name>IP Address Attribute</name><displayName>IP Address Attribute</displayName><description>The name of an attribute whose value is a dotted decimal IP address for which enrichment should occur</description><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property></properties><relationships><relationship><name>not found</name><description>Where to route flow files after unsuccessfully enriching attributes because no data was found</description><autoTerminated>false</autoTerminated></relationship><relationship><name>found</name><description>Where to route flow files after successfully enriching attributes with data provided by database</description><autoTerminated>false</autoTerminated></relationship></relationships><writesAttributes><writesAttribute><name>X.geo.lookup.micros</name><description>The number of microseconds that the geo lookup took</description></writesAttribute><writesAttribute><name>X.geo.city</name><description>The city identified for the IP address</description></writesAttribute><writesAttribute><name>X.geo.accuracy</name><description>The accuracy radius if provided by the database (in Kilometers)</description></writesAttribute><writesAttribute><name>X.geo.latitude</name><description>The latitude identified for this IP address</description></writesAttribute><writesAttribute><name>X.geo.longitude</name><description>The longitude identified for this IP address</description></writesAttribute><writesAttribute><name>X.geo.subdivision.N</name><description>Each subdivision that is identified for this IP address is added with a one-up number appended to the attribute name, starting with 0</description></writesAttribute><writesAttribute><name>X.geo.subdivision.isocode.N</name><description>The ISO code for the subdivision that is identified by X.geo.subdivision.N</description></writesAttribute><writesAttribute><name>X.geo.country</name><description>The country identified for this IP address</description></writesAttribute><writesAttribute><name>X.geo.country.isocode</name><description>The ISO Code for the country identified</description></writesAttribute><writesAttribute><name>X.geo.postalcode</name><description>The postal code for the country identified</description></writesAttribute></writesAttributes><supportsBatching>true</supportsBatching><eventDriven>true</eventDriven><sideEffectFree>true</sideEffectFree><inputRequirement>INPUT_REQUIRED</inputRequirement></extension><extension><name>org.apache.nifi.processors.GeoEnrichIPRecord</name><type>PROCESSOR</type><description>Looks up geolocation information for an IP address and adds the geo information to FlowFile attributes. The geo data is provided as a MaxMind database. This version uses the NiFi Record API to allow large scale enrichment of record-oriented data sets. Each field provided by the MaxMind database can be directed to a field of the user's choosing by providing a record path for that field configuration. </description><tags><tag>geo</tag><tag>enrich</tag><tag>ip</tag><tag>maxmind</tag><tag>record</tag></tags><properties><property><name>Geo Database File</name><displayName>MaxMind Database File</displayName><description>Path to Maxmind IP Enrichment Database File</description><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>VARIABLE_REGISTRY</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><resourceDefinition><cardinality>SINGLE</cardinality><resourceTypes><resourceType>FILE</resourceType><resourceType>DIRECTORY</resourceType></resourceTypes></resourceDefinition></property><property><name>geo-enrich-ip-record-reader</name><displayName>Record Reader</displayName><description>Record reader service to use for reading the flowfile contents.</description><controllerServiceDefinition><className>org.apache.nifi.serialization.RecordReaderFactory</className><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-services-api-nar</artifactId><version>1.22.0</version></controllerServiceDefinition><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>geo-enrich-ip-record-writer</name><displayName>Record Writer</displayName><description>Record writer service to use for enriching the flowfile contents.</description><controllerServiceDefinition><className>org.apache.nifi.serialization.RecordSetWriterFactory</className><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-services-api-nar</artifactId><version>1.22.0</version></controllerServiceDefinition><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>geo-enrich-ip-split-found-not-found</name><displayName>Separate Enriched From Not Enriched</displayName><description>Separate records that have been enriched from ones that have not. Default behavior is to send everything to the found relationship if even one record is enriched.</description><defaultValue>false</defaultValue><allowableValues><allowableValue><displayName>true</displayName><value>true</value><description></description></allowableValue><allowableValue><displayName>false</displayName><value>false</value><description></description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>geo-enrich-ip-ip-record-path</name><displayName>IP Address Record Path</displayName><description>The record path to retrieve the IP address for doing the lookup.</description><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>geo-enrich-ip-city-record-path</name><displayName>City Record Path</displayName><description>Record path for putting the city identified for the IP address</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>geo-enrich-ip-latitude-record-path</name><displayName>Latitude Record Path</displayName><description>Record path for putting the latitude identified for this IP address</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>geo-enrich-ip-longitude-record-path</name><displayName>Longitude Record Path</displayName><description>Record path for putting the longitude identified for this IP address</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>geo-enrich-ip-country-record-path</name><displayName>Country Record Path</displayName><description>Record path for putting the country identified for this IP address</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>geo-enrich-ip-country-iso-record-path</name><displayName>Country ISO Code Record Path</displayName><description>Record path for putting the ISO Code for the country identified</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>geo-enrich-ip-country-postal-record-path</name><displayName>Country Postal Code Record Path</displayName><description>Record path for putting the postal code for the country identified</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property></properties><relationships><relationship><name>not found</name><description>Where to route flow files after unsuccessfully enriching attributes because no data was found</description><autoTerminated>false</autoTerminated></relationship><relationship><name>original</name><description>The original input flowfile goes to this relationship regardless of whether the content was enriched or not.</description><autoTerminated>false</autoTerminated></relationship><relationship><name>found</name><description>Where to route flow files after successfully enriching attributes with data provided by database</description><autoTerminated>false</autoTerminated></relationship></relationships><writesAttributes></writesAttributes><inputRequirement>INPUT_REQUIRED</inputRequirement></extension><extension><name>org.apache.nifi.processors.ISPEnrichIP</name><type>PROCESSOR</type><description>Looks up ISP information for an IP address and adds the information to FlowFile attributes. The ISP data is provided as a MaxMind ISP database. (Note that this is NOT the same as the GeoLite database utilized by some geo enrichment tools). The attribute that contains the IP address to lookup is provided by the 'IP Address Attribute' property. If the name of the attribute provided is 'X', then the the attributes added by enrichment will take the form X.isp.&lt;fieldName&gt;</description><tags><tag>ISP</tag><tag>enrich</tag><tag>ip</tag><tag>maxmind</tag></tags><properties><property><name>Geo Database File</name><displayName>MaxMind Database File</displayName><description>Path to Maxmind IP Enrichment Database File</description><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>VARIABLE_REGISTRY</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><resourceDefinition><cardinality>SINGLE</cardinality><resourceTypes><resourceType>FILE</resourceType><resourceType>DIRECTORY</resourceType></resourceTypes></resourceDefinition></property><property><name>IP Address Attribute</name><displayName>IP Address Attribute</displayName><description>The name of an attribute whose value is a dotted decimal IP address for which enrichment should occur</description><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property></properties><relationships><relationship><name>not found</name><description>Where to route flow files after unsuccessfully enriching attributes because no data was found</description><autoTerminated>false</autoTerminated></relationship><relationship><name>found</name><description>Where to route flow files after successfully enriching attributes with data provided by database</description><autoTerminated>false</autoTerminated></relationship></relationships><writesAttributes><writesAttribute><name>X.isp.lookup.micros</name><description>The number of microseconds that the geo lookup took</description></writesAttribute><writesAttribute><name>X.isp.asn</name><description>The Autonomous System Number (ASN) identified for the IP address</description></writesAttribute><writesAttribute><name>X.isp.asn.organization</name><description>The Organization Associated with the ASN identified</description></writesAttribute><writesAttribute><name>X.isp.name</name><description>The name of the ISP associated with the IP address provided</description></writesAttribute><writesAttribute><name>X.isp.organization</name><description>The Organization associated with the IP address provided</description></writesAttribute></writesAttributes><supportsBatching>true</supportsBatching><eventDriven>true</eventDriven><sideEffectFree>true</sideEffectFree><inputRequirement>INPUT_REQUIRED</inputRequirement></extension><extension><name>org.apache.nifi.processors.enrich.QueryDNS</name><type>PROCESSOR</type><description>A powerful DNS query processor primary designed to enrich DataFlows with DNS based APIs (e.g. RBLs, ShadowServer's ASN lookup) but that can be also used to perform regular DNS lookups.</description><tags><tag>dns</tag><tag>enrich</tag><tag>ip</tag></tags><properties><property><name>QUERY_INPUT</name><displayName>Lookup value</displayName><description>The value that should be used to populate the query</description><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>QUERY_PARSER</name><displayName>Results Parser</displayName><description>The method used to slice the results into attribute groups</description><defaultValue>None</defaultValue><allowableValues><allowableValue><displayName>Split</displayName><value>Split</value><description>Use a delimiter character or RegEx  to split the results into attributes</description></allowableValue><allowableValue><displayName>RegEx</displayName><value>RegEx</value><description>Use a regular expression to split the results into attributes </description></allowableValue><allowableValue><displayName>None</displayName><value>None</value><description>Do not split results</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>QUERY_PARSER_INPUT</name><displayName>Parser RegEx</displayName><description>Choice between a splitter and regex matcher used to parse the results of the query into attribute groups.
NOTE: This is a multiline regular expression, therefore, the DFM should decide how to handle trailing new line characters.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>DNS_RETRIES</name><displayName>DNS Query Retries</displayName><description>The number of attempts before giving up and moving on</description><defaultValue>1</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>DNS_TIMEOUT</name><displayName>DNS Query Timeout</displayName><description>The amount of time to wait until considering a query as failed</description><defaultValue>1500 ms</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>DNS_SERVER</name><displayName>DNS Servers</displayName><description>A comma separated list of  DNS servers to be used. (Defaults to system wide if none is used)</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>DNS_QUERY_TYPE</name><displayName>DNS Query Type</displayName><description>The DNS query type to be used by the processor (e.g. TXT, A)</description><defaultValue>TXT</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property></properties><relationships><relationship><name>not found</name><description>Where to route flow files if data enrichment query rendered no results</description><autoTerminated>false</autoTerminated></relationship><relationship><name>found</name><description>Where to route flow files after successfully enriching attributes with data</description><autoTerminated>false</autoTerminated></relationship></relationships><writesAttributes><writesAttribute><name>enrich.dns.record*.group*</name><description>The captured fields of the DNS query response for each of the records received</description></writesAttribute></writesAttributes><supportsBatching>true</supportsBatching><eventDriven>true</eventDriven><sideEffectFree>true</sideEffectFree><inputRequirement>INPUT_REQUIRED</inputRequirement></extension><extension><name>org.apache.nifi.processors.enrich.QueryWhois</name><type>PROCESSOR</type><description>A powerful whois query processor primary designed to enrich DataFlows with whois based APIs (e.g. ShadowServer's ASN lookup) but that can be also used to perform regular whois lookups.</description><tags><tag>whois</tag><tag>enrich</tag><tag>ip</tag></tags><properties><property><name>QUERY_INPUT</name><displayName>Lookup value</displayName><description>The value that should be used to populate the query</description><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>WHOIS_QUERY_TYPE</name><displayName>Whois Query Type</displayName><description>The Whois query type to be used by the processor (if used)</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>WHOIS_SERVER</name><displayName>Whois Server</displayName><description>The Whois server to be used</description><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>WHOIS_SERVER_PORT</name><displayName>Whois Server Port</displayName><description>The TCP port of the remote Whois server</description><defaultValue>43</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>WHOIS_TIMEOUT</name><displayName>Whois Query Timeout</displayName><description>The amount of time to wait until considering a query as failed</description><defaultValue>1500 ms</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>BATCH_SIZE</name><displayName>Batch Size</displayName><description>The number of incoming FlowFiles to process in a single execution of this processor. </description><defaultValue>25</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>BULK_PROTOCOL</name><displayName>Bulk Protocol</displayName><description>The protocol used to perform the bulk query. </description><defaultValue>None</defaultValue><allowableValues><allowableValue><displayName>Begin/End</displayName><value>Begin/End</value><description>The evaluated input of each flowfile is enclosed within begin and end tags. Each row contains a delimited set of fields</description></allowableValue><allowableValue><displayName>None</displayName><value>None</value><description>Queries are made without any particular dialect</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>QUERY_PARSER</name><displayName>Results Parser</displayName><description>The method used to slice the results into attribute groups</description><defaultValue>None</defaultValue><allowableValues><allowableValue><displayName>Split</displayName><value>Split</value><description>Use a delimiter character or RegEx  to split the results into attributes</description></allowableValue><allowableValue><displayName>RegEx</displayName><value>RegEx</value><description>Use a regular expression to split the results into attributes </description></allowableValue><allowableValue><displayName>None</displayName><value>None</value><description>Do not split results</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>QUERY_PARSER_INPUT</name><displayName>Parser RegEx</displayName><description>Choice between a splitter and regex matcher used to parse the results of the query into attribute groups.
NOTE: This is a multiline regular expression, therefore, the DFM should decide how to handle trailing new line characters.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>KEY_GROUP</name><displayName>Key lookup group (multiline / batch)</displayName><description>When performing a batched lookup, the following RegEx numbered capture group or Column number will be used to match the whois server response with the lookup field</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property></properties><relationships><relationship><name>not found</name><description>Where to route flow files if data enrichment query rendered no results</description><autoTerminated>false</autoTerminated></relationship><relationship><name>found</name><description>Where to route flow files after successfully enriching attributes with data</description><autoTerminated>false</autoTerminated></relationship></relationships><writesAttributes><writesAttribute><name>enrich.dns.record*.group*</name><description>The captured fields of the Whois query response for each of the records received</description></writesAttribute></writesAttributes><supportsBatching>true</supportsBatching><eventDriven>true</eventDriven><sideEffectFree>true</sideEffectFree><inputRequirement>INPUT_REQUIRED</inputRequirement></extension></extensions></extensionManifest>