---
apiVersion: v1
kind: ConfigMap
metadata:
  labels:
    funktion.fabric8.io/kind: Connector
  name: dns
data:
  deployment.yml: |
    ---
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      labels:
        funktion.fabric8.io/kind: Subscription
        connector: dns
    spec:
      replicas: 1
      template:
        metadata:
          labels:
            funktion.fabric8.io/kind: Subscription
            connector: dns
        spec:
          containers:
          - image: funktion/connector-dns:${project.version}
            name: connector
  schema.yml: |
    ---
    component:
      kind: component
      scheme: dns
      syntax: dns:dnsType
      title: DNS
      description: To lookup domain information and run DNS queries using DNSJava.
      label: networking
      deprecated: false
      async: false
      producerOnly: true
      javaType: org.apache.camel.component.dns.DnsComponent
      groupId: org.apache.camel
      artifactId: camel-dns
      version: 2.18.3
    componentProperties: {}
    properties:
      dnsType:
        kind: path
        group: producer
        required: true
        type: string
        javaType: org.apache.camel.component.dns.DnsType
        enum:
        - dig
        - ip
        - lookup
        - wikipedia
        deprecated: false
        secret: false
        description: The type of the lookup.
        order: 0
      synchronous:
        kind: parameter
        group: advanced
        label: advanced
        type: boolean
        javaType: boolean
        deprecated: false
        secret: false
        defaultValue: false
        description: Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported).
        order: 1
  documentation.adoc: |+
    [[DNS-DNS]]
    DNS
    ~~~

    *Available as of Camel 2.7*

    This is an additional component for Camel to run DNS queries, using
    DNSJava. The component is a thin layer on top of
    http://www.xbill.org/dnsjava/[DNSJava]. +
     The component offers the following operations:

    * ip, to resolve a domain by its ip
    * lookup, to lookup information about the domain
    * dig, to run DNS queries

    INFO:*Requires SUN JVM*
    The DNSJava library requires running on the SUN JVM. +
     If you use Apache ServiceMix or Apache Karaf, you'll need to adjust the
    `etc/jre.properties` file, to add `sun.net.spi.nameservice` to the list
    of Java platform packages exported. The server will need restarting
    before this change takes effect.

    Maven users will need to add the following dependency to their `pom.xml`
    for this component:

    [source,xml]
    ------------------------------------------------------------
    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-dns</artifactId>
        <version>x.x.x</version>
        <!-- use the same version as your Camel core version -->
    </dependency>
    ------------------------------------------------------------

    [[DNS-URIformat]]
    URI format
    ^^^^^^^^^^

    The URI scheme for a DNS component is as follows

    [source,java]
    -------------------------
    dns://operation[?options]
    -------------------------

    This component only supports producers.

    [[DNS-Options]]
    Options
    ^^^^^^^


    // component options: START
    The DNS component has no options.
    // component options: END



    // endpoint options: START
    The DNS component supports 2 endpoint options which are listed below:

    {% raw %}
    [width="100%",cols="2,1,1m,1m,5",options="header"]
    |=======================================================================
    | Name | Group | Default | Java Type | Description
    | dnsType | producer |  | DnsType | *Required* The type of the lookup.
    | synchronous | advanced | false | boolean | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported).
    |=======================================================================
    {% endraw %}
    // endpoint options: END


    [[DNS-Headers]]
    Headers
    ^^^^^^^
    [width="100%",cols="10%,10%,10%,70%",options="header",]
    |=======================================================================

    |Header |Type |Operations |Description

    |dns.domain |String |ip |The domain name. Mandatory.

    |dns.name |String |lookup |The name to lookup. Mandatory.

    |dns.type |   | lookup, dig |The type of the lookup. Should match the values of `org.xbill.dns.Type`.
    Optional.

    |dns.class |   | lookup, dig |The DNS class of the lookup. Should match the values of
    `org.xbill.dns.DClass`. Optional.

    |dns.query |String |dig |The query itself. Mandatory.

    |dns.server |String |dig |The server in particular for the query. If none is given, the default
    one specified by the OS will be used. Optional.
    |=======================================================================

    [[DNS-Examples]]
    Examples
    ^^^^^^^^

    [[DNS-IPlookup]]
    IP lookup
    +++++++++

    [source,xml]
    --------------------------------------
            <route id="IPCheck">
                <from uri="direct:start"/>
                <to uri="dns:ip"/>
            </route>
    --------------------------------------

    This looks up a domain's IP. For example, www.example.com resolves to
    192.0.32.10. +
     The IP address to lookup must be provided in the header with key
    `"dns.domain"`.

    [[DNS-DNSlookup]]
    DNS lookup
    ++++++++++

    [source,xml]
    --------------------------------------
            <route id="IPCheck">
                <from uri="direct:start"/>
                <to uri="dns:lookup"/>
            </route>
    --------------------------------------

    This returns a set of DNS records associated with a domain. +
     The name to lookup must be provided in the header with key
    `"dns.name"`.

    [[DNS-DNSDig]]
    DNS Dig
    +++++++

    Dig is a Unix command-line utility to run DNS queries.

    [source,xml]
    --------------------------------------
            <route id="IPCheck">
                <from uri="direct:start"/>
                <to uri="dns:dig"/>
            </route>
    --------------------------------------

    The query must be provided in the header with key `"dns.query"`.

    [[DNS-SeeAlso]]
    See Also
    ^^^^^^^^

    * link:configuring-camel.html[Configuring Camel]
    * link:component.html[Component]
    * link:endpoint.html[Endpoint]
    * link:getting-started.html[Getting Started]

