mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2024-05-11 05:55:12 +00:00
Bugfixed: NO_PURGE now works on all diff2 providers (#2084)
This commit is contained in:
@@ -104,6 +104,7 @@ function newDomain(name, registrar) {
|
||||
registrar: registrar,
|
||||
meta: {},
|
||||
records: [],
|
||||
recordsabsent: [],
|
||||
dnsProviders: {},
|
||||
defaultTTL: 0,
|
||||
nameservers: [],
|
||||
@@ -614,7 +615,6 @@ function IGNORE_NAME(name, rTypes) {
|
||||
d.unmanaged.push({
|
||||
label_pattern: name,
|
||||
rType_pattern: rTypes,
|
||||
target_pattern: '*',
|
||||
});
|
||||
};
|
||||
}
|
||||
@@ -632,7 +632,6 @@ function IGNORE_TARGET(target, rType) {
|
||||
return function (d) {
|
||||
d.ignored_targets.push({ pattern: target, type: rType });
|
||||
d.unmanaged.push({
|
||||
label_pattern: '*',
|
||||
rType_pattern: rType,
|
||||
target_pattern: target,
|
||||
});
|
||||
@@ -660,6 +659,22 @@ function NO_PURGE(d) {
|
||||
d.KeepUnknown = true;
|
||||
}
|
||||
|
||||
// ENSURE_ABSENT_REC()
|
||||
// Usage: A("foo", "1.2.3.4", ENSURE_ABSENT_REC())
|
||||
function ENSURE_ABSENT_REC() {
|
||||
return function (r) {
|
||||
r.ensure_absent = true;
|
||||
};
|
||||
}
|
||||
|
||||
// ENSURE_ABSENT()
|
||||
// Usage: ENSURE_ABSENT(A("foo", "1.2.3.4"))
|
||||
// (BROKEN. COMMENTED OUT UNTIL IT IS FIXED.)
|
||||
// function ENSURE_ABSENT(r) {
|
||||
// //console.log(r);
|
||||
// return r;
|
||||
// }
|
||||
|
||||
// AUTODNSSEC
|
||||
// Permitted values are:
|
||||
// "" Do not modify the setting (the default)
|
||||
@@ -678,15 +693,6 @@ function AUTODNSSEC(d) {
|
||||
}
|
||||
|
||||
function UNMANAGED(label_pattern, rType_pattern, target_pattern) {
|
||||
if (rType_pattern === undefined) {
|
||||
rType_pattern = '*';
|
||||
}
|
||||
if (rType_pattern === "") {
|
||||
rType_pattern = '*';
|
||||
}
|
||||
if (target_pattern === undefined) {
|
||||
target_pattern = '*';
|
||||
}
|
||||
return function (d) {
|
||||
d.unmanaged.push({
|
||||
label_pattern: label_pattern,
|
||||
@@ -835,7 +841,15 @@ function recordBuilder(type, opts) {
|
||||
}
|
||||
}
|
||||
|
||||
d.records.push(record);
|
||||
// Now we finally have the record. If it is a normal record, we add
|
||||
// it to "records". If it is an ENSURE_ABSENT record, we add it to
|
||||
// the ensure_absent list.
|
||||
if (record.ensure_absent) {
|
||||
d.recordsabsent.push(record);
|
||||
} else {
|
||||
d.records.push(record);
|
||||
}
|
||||
|
||||
return record;
|
||||
};
|
||||
};
|
||||
|
@@ -45,6 +45,11 @@ func ExecuteJavascript(file string, devMode bool, variables map[string]string) (
|
||||
// Record the directory path leading up to this file.
|
||||
currentDirectory = filepath.Dir(file)
|
||||
|
||||
return ExecuteJavascriptString(script, devMode, variables)
|
||||
}
|
||||
|
||||
func ExecuteJavascriptString(script []byte, devMode bool, variables map[string]string) (*models.DNSConfig, error) {
|
||||
|
||||
vm := otto.New()
|
||||
l := loop.New(vm)
|
||||
|
||||
|
@@ -46,45 +46,37 @@
|
||||
"unmanaged": [
|
||||
{
|
||||
"label_pattern": "testignore",
|
||||
"rType_pattern": "*",
|
||||
"target_pattern": "*"
|
||||
"rType_pattern": "*"
|
||||
},
|
||||
{
|
||||
"label_pattern": "testignore2",
|
||||
"rType_pattern": "A",
|
||||
"target_pattern": "*"
|
||||
"rType_pattern": "A"
|
||||
},
|
||||
{
|
||||
"label_pattern": "testignore3",
|
||||
"rType_pattern": "A, CNAME, TXT",
|
||||
"target_pattern": "*"
|
||||
"rType_pattern": "A, CNAME, TXT"
|
||||
},
|
||||
{
|
||||
"label_pattern": "testignore4",
|
||||
"rType_pattern": "*",
|
||||
"target_pattern": "*"
|
||||
"rType_pattern": "*"
|
||||
},
|
||||
{
|
||||
"label_pattern": "*",
|
||||
"rType_pattern": "CNAME",
|
||||
"target_pattern": "testtarget"
|
||||
},
|
||||
{
|
||||
"label_pattern": "legacyignore",
|
||||
"rType_pattern": "*",
|
||||
"target_pattern": "*"
|
||||
"rType_pattern": "*"
|
||||
},
|
||||
{
|
||||
"label_pattern": "@",
|
||||
"rType_pattern": "*",
|
||||
"target_pattern": "*"
|
||||
"rType_pattern": "*"
|
||||
},
|
||||
{
|
||||
"label_pattern": "*",
|
||||
"rType_pattern": "CNAME",
|
||||
"target_pattern": "@"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
@@ -16,10 +16,9 @@
|
||||
"unmanaged": [
|
||||
{
|
||||
"label_pattern": "\\*.testignore",
|
||||
"rType_pattern": "*",
|
||||
"target_pattern": "*"
|
||||
"rType_pattern": "*"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
@@ -1,6 +1,9 @@
|
||||
D("foo.com", "none"
|
||||
, UNMANAGED("one")
|
||||
, UNMANAGED("two", "A, CNAME")
|
||||
, UNMANAGED("three", "TXT", "findme")
|
||||
, UNMANAGED("notype", "", "targglob")
|
||||
, UNMANAGED("", "", "targetGlob1")
|
||||
, UNMANAGED("", "CNAME", "")
|
||||
, UNMANAGED("", "A", "targetGlob3")
|
||||
, UNMANAGED("lab4")
|
||||
, UNMANAGED("notype", "", "targetGlob5")
|
||||
, UNMANAGED("lab6", "A, CNAME")
|
||||
, UNMANAGED("lab7", "TXT", "targetGlob7")
|
||||
);
|
||||
|
@@ -1,34 +1,40 @@
|
||||
{
|
||||
"registrars": [],
|
||||
"dns_providers": [],
|
||||
"domains": [
|
||||
{
|
||||
"name": "foo.com",
|
||||
"registrar": "none",
|
||||
"dnsProviders": {},
|
||||
"name": "foo.com",
|
||||
"records": [],
|
||||
"registrar": "none",
|
||||
"unmanaged": [
|
||||
{
|
||||
"label_pattern": "one",
|
||||
"rType_pattern": "*",
|
||||
"target_pattern": "*"
|
||||
"target_pattern": "targetGlob1"
|
||||
},
|
||||
{
|
||||
"label_pattern": "two",
|
||||
"rType_pattern": "A, CNAME",
|
||||
"target_pattern": "*"
|
||||
"rType_pattern": "CNAME"
|
||||
},
|
||||
{
|
||||
"label_pattern": "three",
|
||||
"rType_pattern": "TXT",
|
||||
"target_pattern": "findme"
|
||||
"rType_pattern": "A",
|
||||
"target_pattern": "targetGlob3"
|
||||
},
|
||||
{
|
||||
"label_pattern": "lab4"
|
||||
},
|
||||
{
|
||||
"label_pattern": "notype",
|
||||
"rType_pattern": "*",
|
||||
"target_pattern": "targglob"
|
||||
"target_pattern": "targetGlob5"
|
||||
},
|
||||
{
|
||||
"label_pattern": "lab6",
|
||||
"rType_pattern": "A, CNAME"
|
||||
},
|
||||
{
|
||||
"label_pattern": "lab7",
|
||||
"rType_pattern": "TXT",
|
||||
"target_pattern": "targetGlob7"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"registrars": []
|
||||
}
|
||||
|
5
pkg/js/parse_tests/044-ensureabsent.js
Normal file
5
pkg/js/parse_tests/044-ensureabsent.js
Normal file
@@ -0,0 +1,5 @@
|
||||
D("example.com", "none",
|
||||
A("normal", "1.1.1.1"),
|
||||
A("helper", "2.2.2.2", ENSURE_ABSENT_REC()),
|
||||
//ENSURE_ABSENT(A("wrapped", "3.3.3.3")),
|
||||
{});
|
25
pkg/js/parse_tests/044-ensureabsent.json
Normal file
25
pkg/js/parse_tests/044-ensureabsent.json
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"dns_providers": [],
|
||||
"domains": [
|
||||
{
|
||||
"dnsProviders": {},
|
||||
"name": "example.com",
|
||||
"records": [
|
||||
{
|
||||
"name": "normal",
|
||||
"target": "1.1.1.1",
|
||||
"type": "A"
|
||||
}
|
||||
],
|
||||
"recordsabsent": [
|
||||
{
|
||||
"name": "helper",
|
||||
"target": "2.2.2.2",
|
||||
"type": "A"
|
||||
}
|
||||
],
|
||||
"registrar": "none"
|
||||
}
|
||||
],
|
||||
"registrars": []
|
||||
}
|
Reference in New Issue
Block a user