mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2024-09-20 06:46:19 +08:00
DOCS: Clean up formatting and punctuation (#1776)
Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
This commit is contained in:
parent
490db87ce6
commit
b3e684326a
|
@ -10,7 +10,7 @@ A adds an A record To a domain. The name should be the relative label for the re
|
|||
|
||||
The address should be an ip address, either a string, or a numeric value obtained via [IP](#IP).
|
||||
|
||||
Modifiers can be any number of [record modifiers](#record-modifiers) or json objects, which will be merged into the record's metadata.
|
||||
Modifiers can be any number of [record modifiers](#record-modifiers) or JSON objects, which will be merged into the record's metadata.
|
||||
|
||||
{% capture example %}
|
||||
```js
|
||||
|
|
|
@ -10,7 +10,7 @@ AAAA adds an AAAA record To a domain. The name should be the relative label for
|
|||
|
||||
The address should be an IPv6 address as a string.
|
||||
|
||||
Modifiers can be any number of [record modifiers](#record-modifiers) or json objects, which will be merged into the record's metadata.
|
||||
Modifiers can be any number of [record modifiers](#record-modifiers) or JSON objects, which will be merged into the record's metadata.
|
||||
|
||||
{% capture example %}
|
||||
```js
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
---
|
||||
name: AKAMAICDN
|
||||
parameters:
|
||||
- name
|
||||
- target
|
||||
- modifiers...
|
||||
- name
|
||||
- target
|
||||
- modifiers...
|
||||
---
|
||||
|
||||
AKAMAICDN is a proprietary record type that is used to configure [Zone Apex Mapping](https://blogs.akamai.com/2019/08/fast-dns-zone-apex-mapping-dnssec.html).
|
||||
|
|
|
@ -16,7 +16,7 @@ Each string is a JavaScript string (quoted using single or double
|
|||
quotes). The (somewhat complex) quoting rules of the DNS protocol
|
||||
will be done for you.
|
||||
|
||||
Modifiers can be any number of [record modifiers](#record-modifiers) or json objects, which will be merged into the record's metadata.
|
||||
Modifiers can be any number of [record modifiers](#record-modifiers) or JSON objects, which will be merged into the record's metadata.
|
||||
|
||||
{% capture example %}
|
||||
```js
|
||||
|
|
|
@ -7,7 +7,7 @@ parameters:
|
|||
|
||||
`FETCH` is a wrapper for the [Fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API). This allows dynamically setting DNS records based on an external data source, e.g. the API of your cloud provider.
|
||||
|
||||
Compared to `fetch` from Fetch API, `FETCH` will call [PANIC](#PANIC) to terminate the execution of the script, and therefore DnsControl, if a network error occurs.
|
||||
Compared to `fetch` from Fetch API, `FETCH` will call [PANIC](#PANIC) to terminate the execution of the script, and therefore DNSControl, if a network error occurs.
|
||||
|
||||
Otherwise the syntax of `FETCH` is the same as `fetch`.
|
||||
|
||||
|
@ -16,7 +16,7 @@ Otherwise the syntax of `FETCH` is the same as `fetch`.
|
|||
> WARNING:
|
||||
>
|
||||
> 1. Relying on external sources adds a point of failure. If the external source doesn't work, your script won't either. Please make sure you are aware of the consequences.
|
||||
> 2. Make sure DnsControl only uses verified configuration if you want to use `FETCH`. For example, an attacker can send Pull Requests to your config repo, and have your CI test malicious configurations and make arbitrary HTTP requests. Therefore, `FETCH` must be explicitly enabled with flag `--allow-fetch` on DnsControl invocation.
|
||||
> 2. Make sure DNSControl only uses verified configuration if you want to use `FETCH`. For example, an attacker can send Pull Requests to your config repo, and have your CI test malicious configurations and make arbitrary HTTP requests. Therefore, `FETCH` must be explicitly enabled with flag `--allow-fetch` on DNSControl invocation.
|
||||
|
||||
{% capture example %}
|
||||
```js
|
||||
|
|
|
@ -12,7 +12,7 @@ A DSP stores a DNS zone's records and provides DNS service for the zone (i.e.
|
|||
answers on port 53 to queries related to the zone).
|
||||
|
||||
* `name` must match the name of an entry in `creds.json`.
|
||||
* `type` specifies a valid DNS provider type identifier listed on the [provider page.]({{site.github.url}}/provider-list).
|
||||
* `type` specifies a valid DNS provider type identifier listed on the [provider page]({{site.github.url}}/provider-list).
|
||||
* Starting with v3.16, the type is optional. If it is absent, the `TYPE` field in `creds.json` is used instead. You can leave it out. (Thanks to JavaScript magic, you can leave it out even when there are more fields).
|
||||
* Starting with v4.0, specifying the type may be an error. Please add the `TYPE` field to `creds.json` and remove this parameter from `dnsconfig.js` to prepare.
|
||||
* `meta` is a way to send additional parameters to the provider. It is optional and only certain providers use it. See the [individual provider docs]({{site.github.url}}/provider-list) for details.
|
||||
|
|
|
@ -12,7 +12,7 @@ A registrar maintains the domain's registration and delegation (i.e. the
|
|||
nameservers for the domain). DNSControl only manages the delegation.
|
||||
|
||||
* `name` must match the name of an entry in `creds.json`.
|
||||
* `type` specifies a valid DNS provider type identifier listed on the [provider page.]({{site.github.url}}/provider-list).
|
||||
* `type` specifies a valid DNS provider type identifier listed on the [provider page]({{site.github.url}}/provider-list).
|
||||
* Starting with v3.16, the type is optional. If it is absent, the `TYPE` field in `creds.json` is used instead. You can leave it out. (Thanks to JavaScript magic, you can leave it out even when there are more fields).
|
||||
* Starting with v4.0, specifying the type may be an error. Please add the `TYPE` field to `creds.json` and remove this parameter from `dnsconfig.js` to prepare.
|
||||
* `meta` is a way to send additional parameters to the provider. It is optional and only certain providers use it. See the [individual provider docs]({{site.github.url}}/provider-list) for details.
|
||||
|
|
|
@ -4,7 +4,7 @@ parameters:
|
|||
- message
|
||||
---
|
||||
|
||||
`PANIC` terminates the script and therefore DnsControl with an exit code of 1. This should be used if your script cannot gather enough information to generate records, for example when a HTTP request failed.
|
||||
`PANIC` terminates the script and therefore DNSControl with an exit code of 1. This should be used if your script cannot gather enough information to generate records, for example when a HTTP request failed.
|
||||
|
||||
{% capture example %}
|
||||
```js
|
||||
|
|
|
@ -47,9 +47,9 @@ Example for adding DMARC report records:
|
|||
```js
|
||||
var domains = getConfiguredDomains();
|
||||
for(i = 0; i < domains.length; i++) {
|
||||
D_EXTEND("domain1.tld",
|
||||
TXT(domains[i] + '._report._dmarc', 'v=DMARC1')
|
||||
);
|
||||
D_EXTEND("domain1.tld",
|
||||
TXT(domains[i] + '._report._dmarc', 'v=DMARC1')
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
|
|
|
@ -55,7 +55,7 @@ function includeK8Sdev() {
|
|||
|
||||
{% include example.html content=example %}
|
||||
|
||||
You can also use it to require json files and initialize variables with it:
|
||||
You can also use it to require JSON files and initialize variables with it:
|
||||
For Example:
|
||||
|
||||
{% capture example %}
|
||||
|
|
|
@ -27,13 +27,13 @@ require_glob("./domains/", false);
|
|||
One more important thing to note: `require_glob()` is as smart as `require()` is. It loads files always relative to the JavaScript
|
||||
file where it's being executed in. Let's go with an example, as it describes it better:
|
||||
|
||||
dnscontrol.js:
|
||||
`dnscontrol.js`:
|
||||
|
||||
```js
|
||||
require("domains/index.js");
|
||||
```
|
||||
|
||||
domains/index.js:
|
||||
`domains/index.js`:
|
||||
|
||||
```js
|
||||
require_glob("./user1/");
|
||||
|
|
|
@ -8,8 +8,4 @@ R53_ZONE lets you specify the AWS Zone ID for an entire domain (D()) or a specif
|
|||
|
||||
When used with D(), it sets the zone id of the domain. This can be used to differentiate between split horizon domains in public and private zones.
|
||||
|
||||
When used with R53_ALIAS() it sets the required Route53 hosted zone id in a R53_ALIAS record. See [https://stackexchange.github.io/dnscontrol/js#R53_ALIAS](R53_ALIAS's documentation) for details.
|
||||
|
||||
|
||||
|
||||
|
||||
When used with R53_ALIAS() it sets the required Route53 hosted zone id in a R53_ALIAS record. See [R53_ALIAS's documentation](https://stackexchange.github.io/dnscontrol/js#R53_ALIAS) for details.
|
||||
|
|
|
@ -14,7 +14,7 @@ To use this provider, add an entry to `creds.json` with `TYPE` set to `AUTODNS`
|
|||
|
||||
Example:
|
||||
|
||||
{% highlight json %}
|
||||
```json
|
||||
{
|
||||
"autodns": {
|
||||
"TYPE": "AUTODNS",
|
||||
|
@ -23,17 +23,17 @@ Example:
|
|||
"context": "33004"
|
||||
}
|
||||
}
|
||||
{% endhighlight %}
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
An example `dnsconfig.js` configuration:
|
||||
|
||||
{% highlight js %}
|
||||
```js
|
||||
var REG_NONE = NewRegistrar("none");
|
||||
var DSP_AUTODNS = NewDnsProvider("autodns");
|
||||
|
||||
D("example.tld", REG_NONE, DnsProvider(DSP_AUTODNS),
|
||||
A("test", "1.2.3.4")
|
||||
);
|
||||
{%endhighlight%}
|
||||
```
|
||||
|
|
|
@ -90,13 +90,13 @@ the later allows `get-zones` to work properly.
|
|||
|
||||
```js
|
||||
var DSP_AXFRDDNS = NewDnsProvider("axfrddns", {
|
||||
"default_ns": [
|
||||
"ns1.example.tld.",
|
||||
"ns2.example.tld.",
|
||||
"ns3.example.tld.",
|
||||
"ns4.example.tld."
|
||||
]
|
||||
}
|
||||
"default_ns": [
|
||||
"ns1.example.tld.",
|
||||
"ns2.example.tld.",
|
||||
"ns3.example.tld.",
|
||||
"ns4.example.tld."
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
@ -144,15 +144,15 @@ transfer and a conjunction of TSIG and IP-based ACL for the updates.
|
|||
```js
|
||||
options {
|
||||
|
||||
listen-on { any; };
|
||||
listen-on-v6 { any; };
|
||||
listen-on { any; };
|
||||
listen-on-v6 { any; };
|
||||
|
||||
allow-query { any; };
|
||||
allow-notify { none; };
|
||||
allow-recursion { none; };
|
||||
allow-transfer { none; };
|
||||
allow-update { none; };
|
||||
allow-query-cache { none; };
|
||||
allow-query { any; };
|
||||
allow-notify { none; };
|
||||
allow-recursion { none; };
|
||||
allow-transfer { none; };
|
||||
allow-update { none; };
|
||||
allow-query-cache { none; };
|
||||
|
||||
};
|
||||
|
||||
|
|
|
@ -46,20 +46,20 @@ In this example we set the default SOA settings and NS records.
|
|||
|
||||
```js
|
||||
var DSP_BIND = NewDnsProvider("bind", {
|
||||
"default_soa": {
|
||||
"master": "ns1.example.tld.",
|
||||
"mbox": "sysadmin.example.tld.",
|
||||
"refresh": 3600,
|
||||
"retry": 600,
|
||||
"expire": 604800,
|
||||
"minttl": 1440,
|
||||
},
|
||||
"default_ns": [
|
||||
"ns1.example.tld.",
|
||||
"ns2.example.tld.",
|
||||
"ns3.example.tld.",
|
||||
"ns4.example.tld."
|
||||
]
|
||||
"default_soa": {
|
||||
"master": "ns1.example.tld.",
|
||||
"mbox": "sysadmin.example.tld.",
|
||||
"refresh": 3600,
|
||||
"retry": 600,
|
||||
"expire": 604800,
|
||||
"minttl": 1440,
|
||||
},
|
||||
"default_ns": [
|
||||
"ns1.example.tld.",
|
||||
"ns2.example.tld.",
|
||||
"ns3.example.tld.",
|
||||
"ns4.example.tld."
|
||||
]
|
||||
})
|
||||
```
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@ Example:
|
|||
|
||||
**Note:** Don't confuse the `TYPE` and `type` fields. `TYPE` is set to `GCLOUD` and specifies which provider type to use. `type` specifies the type of account in use.
|
||||
|
||||
**Note**: The `project_id`, `private_key`, and `client_email`, are the only fields that are strictly required, but it is sometimes easier to just paste the entire json object in. Either way is fine. `name_server_set` is optional and requires special permission from your TAM at Google in order to setup (See [Name server sets](#name_server_sets) below)
|
||||
**Note**: The `project_id`, `private_key`, and `client_email`, are the only fields that are strictly required, but it is sometimes easier to just paste the entire JSON object in. Either way is fine. `name_server_set` is optional and requires special permission from your TAM at Google in order to setup (See [Name server sets](#name_server_sets) below)
|
||||
|
||||
See [the Activation section](#activation) for some tips on obtaining these credentials.
|
||||
|
||||
|
|
|
@ -189,7 +189,7 @@ More info is available in
|
|||
```bash
|
||||
dnscontrol preview
|
||||
Creating r53 dns provider: NoCredentialProviders: no valid providers in chain. Deprecated.
|
||||
For verbose messaging see aws.Config.CredentialsChainVerboseErrors
|
||||
For verbose messaging see aws.Config.CredentialsChainVerboseErrors
|
||||
```
|
||||
|
||||
This means that the creds.json entry isn't found. Either there is no entry, or the entry name doesn't match the first parameter in the `NewDnsProvider()` call. In the above example, note
|
||||
|
@ -200,7 +200,7 @@ that the string `r53_main` is specified in `NewDnsProvider("r53_main")` and that
|
|||
```bash
|
||||
dnscontrol preview
|
||||
Creating r53_main dns provider: InvalidClientTokenId: The security token included in the request is invalid.
|
||||
status code: 403, request id: 8c006a24-e7df-11e7-9162-01963394e1df
|
||||
status code: 403, request id: 8c006a24-e7df-11e7-9162-01963394e1df
|
||||
```
|
||||
|
||||
This means the KeyId is unknown to AWS.
|
||||
|
@ -210,7 +210,7 @@ This means the KeyId is unknown to AWS.
|
|||
```bash
|
||||
dnscontrol preview
|
||||
Creating r53_main dns provider: SignatureDoesNotMatch: The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.
|
||||
status code: 403, request id: 9171d89a-e7df-11e7-8586-cbea3ea4e710
|
||||
status code: 403, request id: 9171d89a-e7df-11e7-8586-cbea3ea4e710
|
||||
```
|
||||
|
||||
This means the SecretKey is incorrect. It may be a quoting issue.
|
||||
|
|
|
@ -18,7 +18,7 @@ Example:
|
|||
|
||||
```json
|
||||
{
|
||||
"transip":{
|
||||
"transip": {
|
||||
"TYPE": "TRANSIP",
|
||||
"AccountName": "your-account-name"
|
||||
"PrivateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp\nwmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5\n1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh\n3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2\npIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX\nGukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il\nAkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF\nL0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k\nX6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl\nU9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ\n37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=\n-----END RSA PRIVATE KEY-----"
|
||||
|
|
|
@ -102,7 +102,7 @@ The dnscontrol `-dev` flag ignores `pkg/js/static.go` and reads
|
|||
`pkg/js/helpers.js` directly. This is useful when debugging since it
|
||||
is one less step.
|
||||
|
||||
Likewise, if you are debugging helpers.js and you can't figure out why
|
||||
Likewise, if you are debugging `helpers.js` and you can't figure out why
|
||||
your changes aren't making a difference, it usually means you aren't
|
||||
running `go generate` after any change, or using the `-dev` flag.
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ A few notes:
|
|||
|
||||
```go
|
||||
func init() {
|
||||
providers.RegisterDomainServiceProviderType("CLOUDFLAREAPI", newCloudflare, providers.CanUseAlias)
|
||||
providers.RegisterDomainServiceProviderType("CLOUDFLAREAPI", newCloudflare, providers.CanUseAlias)
|
||||
}
|
||||
```
|
||||
|
||||
|
|
|
@ -82,7 +82,7 @@ _.each(
|
|||
|
||||
# Caveats about getting too fancy.
|
||||
|
||||
The dnsconfig.js language is JavaScript. On the plus side, this means
|
||||
The `dnsconfig.js` language is JavaScript. On the plus side, this means
|
||||
you can use loops and variables and anything else you want.
|
||||
|
||||
However, we don't recommend you get too fancy.
|
||||
|
|
|
@ -35,7 +35,7 @@ Here's a sample file:
|
|||
## Format
|
||||
|
||||
* Primary keys: (e.g. `cloudflare_tal`, `inside`, `hexonet`)
|
||||
* ...refer to the first parameter in the `NewRegistrar()` or `NewDnsProvider()` functions in a dnsconfig.js file.
|
||||
* ...refer to the first parameter in the `NewRegistrar()` or `NewDnsProvider()` functions in a `dnsconfig.js` file.
|
||||
* ...may include any printable character except colon (`:`)
|
||||
* Convention: all lower case, usually the name of the provider or the username at the provider or both.
|
||||
* Subkeys: (e.g. `apikey`, `apiuser` and etc.)
|
||||
|
|
|
@ -144,9 +144,9 @@ D('example3.com', REG, DnsProvider('R53'), DnsProvider('GCLOUD',0),
|
|||
|
||||
```js
|
||||
DEFAULTS(
|
||||
NAMESERVER_TTL('24h'),
|
||||
DefaultTTL('12h'),
|
||||
CF_PROXY_DEFAULT_OFF
|
||||
NAMESERVER_TTL('24h'),
|
||||
DefaultTTL('12h'),
|
||||
CF_PROXY_DEFAULT_OFF
|
||||
);
|
||||
```
|
||||
# Advanced Examples
|
||||
|
|
|
@ -55,7 +55,7 @@ time.
|
|||
This file should be provided to specify which names you would like to get certificates for. You can
|
||||
specify any number of certificates, with up to 100 SAN entries each. Subject names can contain wildcards if you wish.
|
||||
|
||||
The format of the file is a simple json array of objects:
|
||||
The format of the file is a simple JSON array of objects:
|
||||
|
||||
```json
|
||||
[
|
||||
|
@ -128,7 +128,7 @@ The working directory should generally contain:
|
|||
- `--acme {url}`: URL of the acme server you wish to use. For *Let's Encrypt* you can use the presets `live` or `staging` for the standard services. If you are using a custom boulder instance or other acme server, you may specify the full **directory** url. Must be an acme **v2** server.
|
||||
- `--renew {n}`: `get-certs` will renew certs with less than this many **days** remaining. The default is 15, and certs will be renewed when they are within 15 days of expiration.
|
||||
- `--dir {d}`: Root directory holding all certificate and account data as described above. Default is current working directory.
|
||||
- `--certConfig {j}`: Location of certificate config json file as described above. Default is `./certs.json`
|
||||
- `--certConfig {j}`: Location of certificate config JSON file as described above. Default is `./certs.json`
|
||||
- `--vault` Store certificates as secrets in hashicorp vault instead of on disk. (default: false)
|
||||
- `--vaultPath {value}` Path in vault to store certificates (default: "/secret/certs")
|
||||
- `--skip {p}`: DNS Provider names (comma separated) to skip using as challenge providers. We use this to avoid unnecessary changes to our backup or internal dns providers that wouldn't be a part of the validation flow.
|
||||
|
|
350
docs/index.md
350
docs/index.md
|
@ -4,18 +4,18 @@ title: DNSControl
|
|||
---
|
||||
|
||||
<div class="row jumbotron">
|
||||
<div class="col-md-12">
|
||||
<div>
|
||||
<h1 class="hometitle">DNSControl</h1>
|
||||
<p class="lead">DNSControl is an <strong><a href="opinions">opinionated</a></strong> platform for seamlessly managing your DNS configuration across any number of DNS hosts, both in the cloud or in your own infrastructure. It manages all of the domains for the Stack Overflow network, and can do the same for you!</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-12">
|
||||
<div>
|
||||
<h1 class="hometitle">DNSControl</h1>
|
||||
<p class="lead">DNSControl is an <strong><a href="opinions">opinionated</a></strong> platform for seamlessly managing your DNS configuration across any number of DNS hosts, both in the cloud or in your own infrastructure. It manages all of the domains for the Stack Overflow network, and can do the same for you!</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row text-center" style="padding-top: 75px;">
|
||||
<div class="col-md-4">
|
||||
<h3>Try It</h3>
|
||||
<p>Want to jump right in? Follow our
|
||||
<div class="col-md-4">
|
||||
<h3>Try It</h3>
|
||||
<p>Want to jump right in? Follow our
|
||||
<strong><a href="getting-started">quick start tutorial</a></strong>
|
||||
on a new domain or
|
||||
<strong><a href="migrating">migrate</a></strong>
|
||||
|
@ -23,22 +23,22 @@ title: DNSControl
|
|||
<strong><a href="js">language spec</a></strong>
|
||||
for more info. You can also <strong><a href="toc">view a list of all topics</a></strong>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
<h3>Use It</h3>
|
||||
<p>Take advantage of the
|
||||
<div class="col-md-4">
|
||||
<h3>Use It</h3>
|
||||
<p>Take advantage of the
|
||||
<strong><a href="">advanced features</a></strong>.
|
||||
Use macros and variables for easier updates.
|
||||
<!-- Optimize your SPF records. -->
|
||||
Upload your zones to
|
||||
<strong><a href="provider-list">multiple DNS providers</a></strong>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
<h3>Get Involved</h3>
|
||||
<p>Join our
|
||||
<div class="col-md-4">
|
||||
<h3>Get Involved</h3>
|
||||
<p>Join our
|
||||
<strong><a href="https://groups.google.com/forum/#!forum/dnscontrol-discuss">mailing list</a></strong>.
|
||||
We make it easy to contribute by using
|
||||
<strong><a href="https://github.com/StackExchange/dnscontrol">GitHub</a></strong>,
|
||||
|
@ -47,7 +47,7 @@ title: DNSControl
|
|||
<strong><a href="https://everythingsysadmin.com/2017/08/go-get-up-to-speed.html">newbie-friendly</a></strong>
|
||||
so jump right in!
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row" style="padding-top: 75px"><div class='col-md-4 col-md-offset-4'><h2 class="text-center feature-header">Features</h2></div></div>
|
||||
|
@ -55,170 +55,170 @@ title: DNSControl
|
|||
|
||||
<div class="row">
|
||||
{% include feature.html text="Maintain your DNS data as a high-level DS, with macros, and variables for easier updates." img="biology.svg" %}
|
||||
{% include feature.html text="Super extensible! Plug-in architecture makes adding new DNS providers and Registrars easy!" img="light-bulb.svg" %}
|
||||
{% include feature.html text="Eliminate vendor lock-in. Switch DNS providers easily, any time, with full fidelity." img="group.svg" %}
|
||||
{% include feature.html text="Reduce points of failure: Easily maintain dual DNS providers and easily drop one that is down." img="layers.svg" %}
|
||||
{% include feature.html text="Supports 10+ DNS Providers including BIND, AWS Route 53, Google DNS, and name.com" img="cancel.svg" %}
|
||||
{% include feature.html text="Apply CI/CD principles to DNS: Unit-tests, system-tests, automated deployment." img="share.svg" %}
|
||||
{% include feature.html text="All the benefits of Git (or any VCS) for your DNS zone data. View history. Accept PRs." img="document.svg" %}
|
||||
{% include feature.html text="Optimize DNS with SPF optimizer. Detect too many lookups. Flatten includes." img="mail.svg" %}
|
||||
{% include feature.html text="Runs on Linux, Windows, Mac, or any operating system supported by Go." img="speech-bubble.svg" %}
|
||||
{% include feature.html text="Enable/disable Cloudflare proxying (the \"orange cloud\" button) directly from your DNSControl files." img="cloud-computing.svg" %}
|
||||
{% include feature.html text="Assign an IP address to a constant and use the variable name throughout the configuration. Need to change the IP address globally? Just change the variable and \"recompile.\"" img="compass.svg" %}
|
||||
{% include feature.html text="Keep similar domains in sync with transforms, macros, and variables." img="attachment.svg" %}
|
||||
{% include feature.html text="Super extensible! Plug-in architecture makes adding new DNS providers and Registrars easy!" img="light-bulb.svg" %}
|
||||
{% include feature.html text="Eliminate vendor lock-in. Switch DNS providers easily, any time, with full fidelity." img="group.svg" %}
|
||||
{% include feature.html text="Reduce points of failure: Easily maintain dual DNS providers and easily drop one that is down." img="layers.svg" %}
|
||||
{% include feature.html text="Supports 10+ DNS Providers including BIND, AWS Route 53, Google DNS, and name.com" img="cancel.svg" %}
|
||||
{% include feature.html text="Apply CI/CD principles to DNS: Unit-tests, system-tests, automated deployment." img="share.svg" %}
|
||||
{% include feature.html text="All the benefits of Git (or any VCS) for your DNS zone data. View history. Accept PRs." img="document.svg" %}
|
||||
{% include feature.html text="Optimize DNS with SPF optimizer. Detect too many lookups. Flatten includes." img="mail.svg" %}
|
||||
{% include feature.html text="Runs on Linux, Windows, Mac, or any operating system supported by Go." img="speech-bubble.svg" %}
|
||||
{% include feature.html text="Enable/disable Cloudflare proxying (the \"orange cloud\" button) directly from your DNSControl files." img="cloud-computing.svg" %}
|
||||
{% include feature.html text="Assign an IP address to a constant and use the variable name throughout the configuration. Need to change the IP address globally? Just change the variable and \"recompile.\"" img="compass.svg" %}
|
||||
{% include feature.html text="Keep similar domains in sync with transforms, macros, and variables." img="attachment.svg" %}
|
||||
</div>
|
||||
|
||||
<hr class="feature">
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<h2>
|
||||
Getting Started
|
||||
</h2>
|
||||
<p>
|
||||
Information for new users and the curious.
|
||||
</p>
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<h2>
|
||||
Getting Started
|
||||
</h2>
|
||||
<p>
|
||||
Information for new users and the curious.
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
<a href="{{site.github.url}}/getting-started">Getting Started</a>: A walk-through of the basics
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{site.github.url}}/provider-list">Providers</a>: Which DNS providers are supported
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{site.github.url}}/examples">Examples</a>: The DNSControl language by example
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{site.github.url}}/migrating">Migrating</a>: Migrating zones to DNSControl
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h2>
|
||||
Commands
|
||||
</h2>
|
||||
<p>
|
||||
DNSControl sub-commands and options.
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<!--
|
||||
<li>
|
||||
<a href="check-preview-push">check/preview/push</a>: dnscontrol's fundamentals
|
||||
</li>
|
||||
-->
|
||||
<li>
|
||||
<a href="creds-json.html">creds.json</a>: creds.json file format
|
||||
</li>
|
||||
<li>
|
||||
<a href="check-creds.html">check-creds</a>: Verify credentials
|
||||
</li>
|
||||
<!--
|
||||
<li>
|
||||
<a href="create-domains">create-domains</a>: Populate domains at a provider
|
||||
</li>
|
||||
<li>
|
||||
<a href="fmt">fmt</a>: Reformat dnsconfig.js
|
||||
</li>
|
||||
-->
|
||||
<li>
|
||||
<a href="get-zones.html">get-zones</a>: Query a provider for zone info
|
||||
</li>
|
||||
<li>
|
||||
<a href="get-certs.html">get-certs</a>: Renew SSL/TLS certs (DEPRECATED)
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<h2>
|
||||
Reference
|
||||
</h2>
|
||||
<p>
|
||||
Language resources and procedures.
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
<a href="{{site.github.url}}/js">Language Reference</a>: Full language description
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{site.github.url}}/alias">Aliases</a>: ALIAS/ANAME records
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{site.github.url}}/spf-optimizer">SPF Optimizer</a>: Optimize your SPF records
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{site.github.url}}/caa-builder">CAA Builder</a>: Build CAA records the easy way
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<h2>
|
||||
Advanced Topics
|
||||
</h2>
|
||||
<p>
|
||||
Take advantage of DNSControl's unique features.
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="{{site.github.url}}/why-the-dot">Why CNAME/MX targets require a trailing dot</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{site.github.url}}/unittests">Testing</a>: Unit Testing for you DNS Data
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{site.github.url}}/notifications">Notifications</a>: Web-hook for changes
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{site.github.url}}/code-tricks">Code Tricks</a>: Safely use macros and loops.
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{site.github.url}}/cli-variables">CLI variables</a>: Passing variables from CLI to JS
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{site.github.url}}/nameservers">Nameservers & Delegation</a>: Many examples.
|
||||
</li>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="{{site.github.url}}/ci-cd-gitlab">Gitlab CI/CD example</a>.
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<h2>
|
||||
Developer Info
|
||||
</h2>
|
||||
<p>
|
||||
It is easy to add features and new providers to DNSControl. The code is very modular and easy to modify. There are extensive integration tests that make it easy to boldly make changes with confidence that you'll know if anything is broken. Our mailing list is friendly. Afraid to make your first PR? We'll gladly mentor you through the process. Many major code contributions have come from <a href="https://everythingsysadmin.com/2017/08/go-get-up-to-speed.html">first-time Go users</a>!
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
Github: <a href="https://github.com/StackExchange/dnscontrol">https://github.com/StackExchange/dnscontrol</a>
|
||||
</li>
|
||||
<li>
|
||||
Mailing list: <a href="https://groups.google.com/forum/#!forum/dnscontrol-discuss">dnscontrol-discuss</a>: The friendly best place to ask questions and propose new features
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{site.github.url}}/bug-triage">Bug Triage</a>: How bugs are triaged
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{site.github.url}}/release-engineering">Release Engineering</a>: How to build and ship a release
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{site.github.url}}/byo-secrets">Bring-Your-Own-Secrets</a>: Automate tests
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{site.github.url}}/writing-providers">Step-by-Step Guide: Writing Providers</a>: How to write a DNS or Registrar Provider
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{site.github.url}}/adding-new-rtypes">Step-by-Step Guide: Adding new DNS rtypes</a>: How to add a new DNS record type
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<a href="{{site.github.url}}/getting-started">Getting Started</a>: A walk-through of the basics
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{site.github.url}}/provider-list">Providers</a>: Which DNS providers are supported
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{site.github.url}}/examples">Examples</a>: The DNSControl language by example
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{site.github.url}}/migrating">Migrating</a>: Migrating zones to DNSControl
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h2>
|
||||
Commands
|
||||
</h2>
|
||||
<p>
|
||||
DNSControl sub-commands and options.
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<!--
|
||||
<li>
|
||||
<a href="check-preview-push">check/preview/push</a>: dnscontrol's fundamentals
|
||||
</li>
|
||||
-->
|
||||
<li>
|
||||
<a href="creds-json.html">creds.json</a>: creds.json file format
|
||||
</li>
|
||||
<li>
|
||||
<a href="check-creds.html">check-creds</a>: Verify credentials
|
||||
</li>
|
||||
<!--
|
||||
<li>
|
||||
<a href="create-domains">create-domains</a>: Populate domains at a provider
|
||||
</li>
|
||||
<li>
|
||||
<a href="fmt">fmt</a>: Reformat dnsconfig.js
|
||||
</li>
|
||||
-->
|
||||
<li>
|
||||
<a href="get-zones.html">get-zones</a>: Query a provider for zone info
|
||||
</li>
|
||||
<li>
|
||||
<a href="get-certs.html">get-certs</a>: Renew SSL/TLS certs (DEPRECATED)
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<h2>
|
||||
Reference
|
||||
</h2>
|
||||
<p>
|
||||
Language resources and procedures.
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
<a href="{{site.github.url}}/js">Language Reference</a>: Full language description
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{site.github.url}}/alias">Aliases</a>: ALIAS/ANAME records
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{site.github.url}}/spf-optimizer">SPF Optimizer</a>: Optimize your SPF records
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{site.github.url}}/caa-builder">CAA Builder</a>: Build CAA records the easy way
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<h2>
|
||||
Advanced Topics
|
||||
</h2>
|
||||
<p>
|
||||
Take advantage of DNSControl's unique features.
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="{{site.github.url}}/why-the-dot">Why CNAME/MX targets require a trailing dot</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{site.github.url}}/unittests">Testing</a>: Unit Testing for you DNS Data
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{site.github.url}}/notifications">Notifications</a>: Web-hook for changes
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{site.github.url}}/code-tricks">Code Tricks</a>: Safely use macros and loops.
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{site.github.url}}/cli-variables">CLI variables</a>: Passing variables from CLI to JS
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{site.github.url}}/nameservers">Nameservers & Delegation</a>: Many examples.
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{site.github.url}}/ci-cd-gitlab">Gitlab CI/CD example</a>.
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<h2>
|
||||
Developer Info
|
||||
</h2>
|
||||
<p>
|
||||
It is easy to add features and new providers to DNSControl. The code is very modular and easy to modify. There are extensive integration tests that make it easy to boldly make changes with confidence that you'll know if anything is broken. Our mailing list is friendly. Afraid to make your first PR? We'll gladly mentor you through the process. Many major code contributions have come from <a href="https://everythingsysadmin.com/2017/08/go-get-up-to-speed.html">first-time Go users</a>!
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
Github: <a href="https://github.com/StackExchange/dnscontrol">https://github.com/StackExchange/dnscontrol</a>
|
||||
</li>
|
||||
<li>
|
||||
Mailing list: <a href="https://groups.google.com/forum/#!forum/dnscontrol-discuss">dnscontrol-discuss</a>: The friendly best place to ask questions and propose new features
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{site.github.url}}/bug-triage">Bug Triage</a>: How bugs are triaged
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{site.github.url}}/release-engineering">Release Engineering</a>: How to build and ship a release
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{site.github.url}}/byo-secrets">Bring-Your-Own-Secrets</a>: Automate tests
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{site.github.url}}/writing-providers">Step-by-Step Guide: Writing Providers</a>: How to write a DNS or Registrar Provider
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{site.github.url}}/adding-new-rtypes">Step-by-Step Guide: Adding new DNS rtypes</a>: How to add a new DNS record type
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr class="feature">
|
||||
|
|
|
@ -11,7 +11,7 @@ new types or destinations.
|
|||
|
||||
## Configuration
|
||||
|
||||
Notifications are set up in your credentials json file. They will use the `notifications` key to look for keys or configuration needed for various notification types.
|
||||
Notifications are set up in your credentials JSON file. They will use the `notifications` key to look for keys or configuration needed for various notification types.
|
||||
|
||||
```json
|
||||
"r53": {
|
||||
|
|
|
@ -48,7 +48,7 @@ knowledge. That's your job.
|
|||
Your coworkers should not have to know what happens in ambiguous
|
||||
situations. That's your job.
|
||||
|
||||
Your coworkers should be able to submit PRs to dnsconfig.js for you
|
||||
Your coworkers should be able to submit PRs to `dnsconfig.js` for you
|
||||
to approve; preferably via a CI system that does rudimentary checks
|
||||
before you even have to see the PR.
|
||||
|
||||
|
@ -63,7 +63,7 @@ A zonefile can list any kind of DNS record. It has no judgement and
|
|||
no morals. It will let you do bad practices as long as the bits are
|
||||
RFC-compliant.
|
||||
|
||||
dnsconfig.js is a high-level description of your DNS zone data.
|
||||
`dnsconfig.js` is a high-level description of your DNS zone data.
|
||||
Being high-level permits the code to understand intent, and stop
|
||||
bad behavior.
|
||||
|
||||
|
@ -74,7 +74,7 @@ TODO: List an example.
|
|||
|
||||
DNSControl downcases all DNS names (domains, labels, and targets). #sorrynotsorry
|
||||
|
||||
When the system reads dnsconfig.js or receives data from DNS providers,
|
||||
When the system reads `dnsconfig.js` or receives data from DNS providers,
|
||||
the DNS names are downcased.
|
||||
|
||||
This reduces code complexity, reduces the number of edge-cases that must
|
||||
|
@ -85,7 +85,7 @@ Yes, we know that DNS is case insensitive. See Opinion #3.
|
|||
|
||||
# Opinion #5: Users should state what they want, and DNSControl should do the rest.
|
||||
|
||||
When possible, dnsconfig.js lists a high-level description of what
|
||||
When possible, `dnsconfig.js` lists a high-level description of what
|
||||
is desired and the compiler does the hard work for you.
|
||||
|
||||
Some examples:
|
||||
|
|
|
@ -23,14 +23,14 @@ in [Request for Comments: Include the provider type in creds.json, remove it fro
|
|||
In a nutshell, `NewRegistrar()` and `NewDnsProvider()` will lose the 2nd
|
||||
parameter:
|
||||
|
||||
OLD dnsconfig.js:
|
||||
OLD `dnsconfig.js`:
|
||||
|
||||
```js
|
||||
var REG_GANDI = NewRegistrar("gandi", "GANDI_V5");
|
||||
var DSP_CF = NewDnsProvider("cloudflare_tal", "CLOUDFLAREAPI");
|
||||
```
|
||||
|
||||
NEW dnsconfig.js:
|
||||
NEW `dnsconfig.js`:
|
||||
|
||||
```js
|
||||
var REG_GANDI = NewRegistrar("gandi");
|
||||
|
@ -41,7 +41,7 @@ The second paramter (`GANDI_V5` and `CLOUDFLAREAPI` in the
|
|||
above examples) has moved to `creds.json` instead. It will be in a `TYPE`
|
||||
field, which all providers have. It can appear in both places for backwards compatibility for now.
|
||||
|
||||
NEW creds.json:
|
||||
NEW `creds.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
|
|
|
@ -36,7 +36,7 @@ Pretty cool, eh?
|
|||
|
||||
So how does `GetDomainCorrections()` work?
|
||||
|
||||
First, some terminology: The DNS records specified in the dnsconfig.js
|
||||
First, some terminology: The DNS records specified in the `dnsconfig.js`
|
||||
file are called the "desired" records. The DNS records stored at
|
||||
the DNS service provider are called the "existing" records.
|
||||
|
||||
|
|
Loading…
Reference in a new issue