DOCS: Clean up formatting and punctuation (#1776)

Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
This commit is contained in:
Jeffrey Cafferata 2022-10-27 22:17:19 +02:00 committed by GitHub
parent 490db87ce6
commit b3e684326a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
29 changed files with 249 additions and 253 deletions

View file

@ -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

View file

@ -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

View file

@ -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).

View file

@ -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

View file

@ -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

View file

@ -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.

View file

@ -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.

View file

@ -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

View file

@ -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')
);
}
```

View file

@ -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 %}

View file

@ -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/");

View file

@ -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.

View file

@ -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%}
```

View file

@ -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; };
};

View file

@ -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."
]
})
```

View file

@ -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.

View file

@ -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.

View file

@ -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-----"

View file

@ -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.

View file

@ -16,7 +16,7 @@ A few notes:
```go
func init() {
providers.RegisterDomainServiceProviderType("CLOUDFLAREAPI", newCloudflare, providers.CanUseAlias)
providers.RegisterDomainServiceProviderType("CLOUDFLAREAPI", newCloudflare, providers.CanUseAlias)
}
```

View file

@ -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.

View file

@ -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.)

View file

@ -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

View file

@ -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.

View file

@ -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 &amp; 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 &amp; 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">

View file

@ -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": {

View file

@ -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:

View file

@ -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
{

View file

@ -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.