mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2025-09-11 15:44:55 +08:00
Merge remote-tracking branch 'origin/master' into ptr
This commit is contained in:
commit
0e87177481
10 changed files with 127 additions and 63 deletions
|
@ -5,7 +5,7 @@
|
|||
Build the software and install in your personal bin:
|
||||
|
||||
```cmd
|
||||
$ cd misc/convertzone/
|
||||
$ cd cmd/convertzone
|
||||
$ go build
|
||||
$ cp convertzone ~/bin/.
|
||||
```
|
||||
|
|
|
@ -31,18 +31,64 @@ Provider level metadata availible:
|
|||
* `ip_conversions`
|
||||
* `manage_redirects`: set to `true` to manage page-rule based redirects
|
||||
|
||||
What does on/off/full mean?
|
||||
|
||||
* "off" disables the Cloudflare proxy
|
||||
* "on" enables the Cloudflare proxy (turns on the "orange cloud")
|
||||
* "full" is the same as "on" but also enables Railgun. DNSControl will prevent you from accidentally enabling "full" on a CNAME that points to an A record that is set to "off", as this is generally not desired.
|
||||
|
||||
**Aliases:**
|
||||
|
||||
To make configuration files more readable and less prone to typos,
|
||||
the following aliases are pre-defined:
|
||||
|
||||
{% highlight json %}
|
||||
// Meta settings for individual records.
|
||||
var CF_PROXY_OFF = {'cloudflare_proxy': 'off'}; // Proxy disabled.
|
||||
var CF_PROXY_ON = {'cloudflare_proxy': 'on'}; // Proxy enabled.
|
||||
var CF_PROXY_FULL = {'cloudflare_proxy': 'full'}; // Proxy+Railgun enabled.
|
||||
// Per-domain meta settings:
|
||||
// Proxy default off for entire domain (the default):
|
||||
var CF_PROXY_DEFAULT_OFF = {'cloudflare_proxy_default': 'off'};
|
||||
// Proxy default on for entire domain:
|
||||
var CF_PROXY_DEFAULT_ON = {'cloudflare_proxy_default': 'on'};
|
||||
{% endhighlight %}
|
||||
|
||||
The following example shows how to set meta variables with and without aliases:
|
||||
|
||||
{% highlight json %}
|
||||
D('example.tld', REG_NAMECOM, DnsProvider(CFLARE),
|
||||
A('www1','1.2.3.11', CF_PROXY_ON), // turn proxy ON.
|
||||
A('www2','1.2.3.12', CF_PROXY_OFF), // default is OFF, this is a no-op.
|
||||
A('www3','1.2.3.13', {'cloudflare_proxy': 'on'}) // why would anyone do this?
|
||||
);
|
||||
{% endhighlight %}
|
||||
|
||||
## Usage
|
||||
|
||||
Example javascript:
|
||||
|
||||
{% highlight js %}
|
||||
var REG_NAMECOM = NewRegistrar("name.com","NAMEDOTCOM");
|
||||
var CFLARE = NewDnsProvider("cloudflare.com","CLOUDFLAREAPI");
|
||||
var REG_NAMECOM = NewRegistrar('name.com','NAMEDOTCOM');
|
||||
var CFLARE = NewDnsProvider('cloudflare.com','CLOUDFLAREAPI');
|
||||
|
||||
D("example.tld", REG_NAMECOM, DnsProvider(CFLARE),
|
||||
A("test","1.2.3.4"),
|
||||
A("www","1.2.3.4", {cloudlfare_proxy:"on"}),
|
||||
ALIAS("@","test.example.tld",{cloudflare_proxy:"on"})
|
||||
// Example domain where the CF proxy abides by the default (off).
|
||||
D('example.tld', REG_NAMECOM, DnsProvider(CFLARE),
|
||||
A('proxied','1.2.3.4', CF_PROXY_ON),
|
||||
A('notproxied','1.2.3.5'),
|
||||
A('another','1.2.3.6', CF_PROXY_ON),
|
||||
ALIAS('@','www.example.tld.', CF_PROXY_ON),
|
||||
CNAME('myalias','www.example.tld.', CF_PROXY_ON)
|
||||
);
|
||||
|
||||
// Example domain where the CF proxy default is set to "on":
|
||||
D('example2.tld', REG_NAMECOM, DnsProvider(CFLARE),
|
||||
CF_PROXY_DEFAULT_ON, // Enable CF proxy for all items unless otherwise noted.
|
||||
A('proxied','1.2.3.4'),
|
||||
A('notproxied','1.2.3.5', CF_PROXY_OFF),
|
||||
A('another','1.2.3.6'),
|
||||
ALIAS('@','www.example2.tld.'),
|
||||
CNAME('myalias','www.example2.tld.')
|
||||
);
|
||||
{%endhighlight%}
|
||||
|
||||
|
@ -54,8 +100,7 @@ DNSControl depends on a Cloudflare Global API Key that's available under "My Set
|
|||
|
||||
If a domain does not exist in your CloudFlare account, DNSControl
|
||||
will *not* automatically add it. You'll need to do that via the
|
||||
control panel manually or via the command `dnscontrol create-domains`
|
||||
-command.
|
||||
control panel manually or via the `dnscontrol create-domains` command.
|
||||
|
||||
## Redirects
|
||||
|
||||
|
@ -83,4 +128,4 @@ Notice a few details:
|
|||
|
||||
1. We need an A record with cloudflare proxy on, or the page rule will never run.
|
||||
2. The IP address in those A records may be mostly irrelevant, as cloudflare should handle all requests (assuming some page rule matches).
|
||||
3. Ordering matters for priority. CF_REDIRECT records will be added in the order they appear in your js. So put catch-alls at the bottom.
|
||||
3. Ordering matters for priority. CF_REDIRECT records will be added in the order they appear in your js. So put catch-alls at the bottom.
|
||||
|
|
|
@ -40,7 +40,7 @@ Example javascript (Registrar only. DNS hosted elsewhere):
|
|||
|
||||
{% highlight js %}
|
||||
var REG_NAMECOM = NewRegistrar("name.com","NAMEDOTCOM");
|
||||
var R53 = NewDnsProvider("r53", ROUTE53);
|
||||
var R53 = NewDnsProvider("r53", "ROUTE53");
|
||||
|
||||
D("example.tld", REG_NAMECOM, DnsProvider(R53),
|
||||
A("test","1.2.3.4")
|
||||
|
|
|
@ -49,7 +49,7 @@ Example javascript:
|
|||
|
||||
{% highlight js %}
|
||||
var namecheap = NewRegistrar("namecheap.com","NAMECHEAP");
|
||||
var R53 = NewDnsProvider("r53", ROUTE53);
|
||||
var R53 = NewDnsProvider("r53", "ROUTE53");
|
||||
|
||||
D("example.tld", namecheap, DnsProvider(R53),
|
||||
A("test","1.2.3.4")
|
||||
|
|
|
@ -7,7 +7,7 @@ jsId: ROUTE53
|
|||
|
||||
## Configuration
|
||||
|
||||
By default, you can configure aws setting like the [go sdk configuration](https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html). For example you can use environment variables:
|
||||
By default, you can configure aws setting like the [go sdk configuration](https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html). For example you can use environment variables:
|
||||
```
|
||||
$ export AWS_ACCESS_KEY_ID=XXXXXXXXX
|
||||
$ export AWS_SECRET_ACCESS_KEY=YYYYYYYYY
|
||||
|
@ -34,7 +34,7 @@ Example javascript:
|
|||
|
||||
{% highlight js %}
|
||||
var REG_NAMECOM = NewRegistrar("name.com","NAMEDOTCOM");
|
||||
var R53 = NewDnsProvider("r53", ROUTE53);
|
||||
var R53 = NewDnsProvider("r53", "ROUTE53");
|
||||
|
||||
D("example.tld", REG_NAMECOM, DnsProvider(R53),
|
||||
A("test","1.2.3.4")
|
||||
|
@ -47,7 +47,7 @@ DNSControl depends on a standard [aws access key](https://aws.amazon.com/develop
|
|||
|
||||
## New domains
|
||||
|
||||
If a domain does not exist in your Route53 account, DNSControl
|
||||
If a domain does not exist in your Route53 account, DNSControl
|
||||
will *not* automatically add it. You can do that either manually
|
||||
via the control panel, or via the command `dnscontrol create-domains`
|
||||
command.
|
||||
|
|
|
@ -240,7 +240,7 @@ The [Migrating]({{site.github.url}}/migrating) doc has advice
|
|||
about converting from other systems.
|
||||
You can manually create the `D()` statements, or you can
|
||||
generate them automatically using the
|
||||
[convertzone](https://github.com/StackExchange/dnscontrol/blob/master/misc/convertzone/README.md)
|
||||
[convertzone](https://github.com/StackExchange/dnscontrol/blob/master/cmd/convertzone/README.md)
|
||||
utility that is included in the DNSControl repo (it converts
|
||||
BIND-style zone files to DNSControl's language).
|
||||
|
||||
|
|
|
@ -41,9 +41,9 @@ The `convertzone` tool can automate 90% of the conversion for you. It
|
|||
reads a BIND-style zone file and outputs a `D()` statement
|
||||
that is usually fairly complete. You may need to touch it up a bit.
|
||||
|
||||
The convertzone command is in the `misc/convertzone` subdirectory.
|
||||
The convertzone command is in the `cmd/convertzone` subdirectory.
|
||||
Build instructions are
|
||||
[here](https://github.com/StackExchange/dnscontrol/blob/master/misc/convertzone/README.md).
|
||||
[here](https://github.com/StackExchange/dnscontrol/blob/master/cmd/convertzone/README.md).
|
||||
|
||||
If you do not use BIND already, most DNS providers will export your
|
||||
existing zone data to a file called the BIND zone file format.
|
||||
|
|
|
@ -18,11 +18,14 @@ the specific changes so the user knows exactly what changed.
|
|||
|
||||
Here are some tips:
|
||||
|
||||
* A provider can be a DnsProvider, a Registrar, or both. We recommend you write the DnsProvider first, release it, and then write the Registrar if needed.
|
||||
* Create a directory for the provider called `providers/name` where `name` is all lowercase and represents the commonly-used name for the service.
|
||||
* The main driver should be called `providers/name/nameProvider.go`. The API abstraction is usually in a separate file (often called `api.go`).
|
||||
* List the provider in `providers/_all/all.go` so DNSControl knows it exists.
|
||||
* Implement all the calls in [providers.DNSServiceProvider interface.](https://godoc.org/github.com/StackExchange/dnscontrol/providers#DNSServiceProvider). The function `GetDomainCorrections` is a bit interesting. It returns a list of corrections to be made. These are in the form of functions that DNSControl can call to actually make the corrections.
|
||||
* If you have any questions, please dicuss them in the Github issue related to the request for this provider. Please let us know what was confusing so we can update this document with advice for future authors (or feel free to update this document yourself!).
|
||||
* If you have any questions, please dicuss them in the Github issue related to the request for this provider. Please let us know what was confusing so we can update this document with advice for future authors (or feel free to update [this document](https://github.com/StackExchange/dnscontrol/blob/master/docs/writing-providers.md) yourself!).
|
||||
* Add the provider to the provider list: [docs/provider-list.html](https://github.com/StackExchange/dnscontrol/blob/master/docs/provider-list.html).
|
||||
* Add the provider to the README: [README.md](https://github.com/StackExchange/dnscontrol)
|
||||
|
||||
## Documentation
|
||||
|
||||
|
|
|
@ -304,6 +304,19 @@ function num2dot(num)
|
|||
return d;
|
||||
}
|
||||
|
||||
|
||||
// Cloudflare aliases:
|
||||
|
||||
// Meta settings for individual records.
|
||||
var CF_PROXY_OFF = {'cloudflare_proxy': 'off'}; // Proxy disabled.
|
||||
var CF_PROXY_ON = {'cloudflare_proxy': 'on'}; // Proxy enabled.
|
||||
var CF_PROXY_FULL = {'cloudflare_proxy': 'full'}; // Proxy+Railgun enabled.
|
||||
// Per-domain meta settings:
|
||||
// Proxy default off for entire domain (the default):
|
||||
var CF_PROXY_DEFAULT_OFF = {'cloudflare_proxy_default': 'off'};
|
||||
// Proxy default on for entire domain:
|
||||
var CF_PROXY_DEFAULT_ON = {'cloudflare_proxy_default': 'on'};
|
||||
|
||||
// CUSTOM, PROVIDER SPECIFIC RECORD TYPES
|
||||
function CF_REDIRECT(src, dst) {
|
||||
return function(d) {
|
||||
|
@ -320,4 +333,4 @@ function CF_TEMP_REDIRECT(src, dst) {
|
|||
}
|
||||
addRecord(d,"CF_TEMP_REDIRECT","@",src+","+dst)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -190,51 +190,54 @@ var _escData = map[string]*_escFile{
|
|||
|
||||
"/helpers.js": {
|
||||
local: "pkg/js/helpers.js",
|
||||
size: 8320,
|
||||
size: 8855,
|
||||
modtime: 0,
|
||||
compressed: `
|
||||
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
|
||||
/mw0vvmfs0FNqf2G+HcAAAD//xD4Q9mAIAAA
|
||||
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
|
||||
9Q1D/CcAAP//qJ7f15ciAAA=
|
||||
`,
|
||||
},
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue