Skip to content

Latest commit

 

History

History
131 lines (91 loc) · 3.37 KB

configuration.md

File metadata and controls

131 lines (91 loc) · 3.37 KB

Configuration

secDNS uses JSON-based configurations. The top level structure of the configuration is shown below.

{
  "listeners": [],
  "resolvers": {},
  "rules": [],
  "defaultResolver": {}
}

listeners: [ ListenerObject ]

An array of ListenerObject as configuration for listeners.

resolvers: ResolverDefinitionObject

Configuration for resolver definitions.

rules: [ RuleObject ]

An array of RuleObject as configuration for custom rules.

defaultResolver: String | ResolverObject

Configuration for default resolver. Can be the unique name of a resolver or specific configuration defined in a ResolverObject. This resolver will be used if no rule defined in rules is matched.

ListenerObject

A ListenerObject defines a listener. It handles incoming connections to secDNS. Available types of listeners are listed here.

{
  "type": "listener_type",
  "config": {}
}

type: String

The type of the listener. See each individual listed here for available values.

config: ListenerConfigObject

Listener-specific configuration. See ListenerConfigObject defined in each type of the listener.

ResolverDefinitionObject

The ResolverDefinitionObject is used to define named resolvers. Available types of resolvers are listed here.

{
  "resolver_type_example": {
    "resolver_name_example": {},
    "resolver_name_...": {}
  },
  "resolver_type_...": {
    
  }
}

"resolver_type_example", "resolver_type_...":

The type of a resolver. Note that "resolver_type_example" and "resolver_type_..." should be replaced by the actual types of resolvers.

"resolver_name_example", "resolver_name_...": ResolverConfigObject

Specify the name and the configuration of a resolver. Note that "resolver_name_example" and "resolver_name_..." should be replaced by any string literal representing a UNIQUE name for the resolver, except for the empty string "". The resolver configuration should be defined in a ResolverConfigObject. The format of ResolverConfigObject varies by resolver type.

Example
{
  "nameServer": {
    "GooglePublicDNS": {
      "address": "8.8.8.8"
    }
  }
}

The example above is a ResolverDefinitionObject which defines a nameServer resolver to use Google Public DNS.

RuleObject

A RuleObject defines a custom rule. It specifies resolvers to be used when resolving specific domain names. Available types of rules are listed here.

{
  "type": "rule_type",
  "config": {}
}

type: String

The type of the rule. See each individual listed here for available values.

config: RuleConfigObject

Rule-specific configuration. See RuleConfigObject defined in each type of the rule.

ResolverObject

A ResolverObject defines an anonymous resolver. Available types of resolvers are listed here.

{
  "type": "resolver_type",
  "config": {}
}

type: String

The type of the resolver. See each individual listed here for available values.

config: ResolverConfigObject

Resolver-specific configuration. See ResolverConfigObject defined in each type of the resolver.