mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2024-05-11 05:55:12 +00:00
* Replace Jekyll highlight tags with fenced code blocks Replace Jekyll highlight tags with fenced code blocks. Canonicalize javascript to js. Correct highlighting languages. Add highlighting to code blocks. Remove leading $ from bash blocks. Remove empty lines at start and end of code blocks. Stripped trailing whitespace. * Fix language of code highlighting
1.6 KiB
1.6 KiB
name, parameters
name | parameters | ||
---|---|---|---|
FETCH |
|
FETCH
is a wrapper for the 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 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
.
FETCH
is not enabled by default. Please read the warnings below.
WARNING:
- 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.
- 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.
{% include startExample.html %}
var REG_NONE = NewRegistrar('none', 'NONE');
var DNS_BIND = NewDnsProvider('bind', 'BIND');
D('example.com', REG_NONE, DnsProvider(DNS_BIND), [
A('@', '1.2.3.4'),
]);
FETCH('https://example.com', {
// All three options below are optional
headers: {"X-Authentication": "barfoo"},
method: "POST",
body: "Hello World",
}).then(function(r) {
return r.text();
}).then(function(t) {
// Example of generating record based on response
D_EXTEND('example.com', [
TXT('@', t.slice(0, 100)),
]);
});
{% include endExample.html %}