From dd538e66934e063eed80159027a969dca82c6ebc Mon Sep 17 00:00:00 2001 From: Craig Peterson Date: Wed, 28 Sep 2016 12:45:59 -0600 Subject: [PATCH] import_transform can define ttl as third parameter (#5) --- js/helpers.js | 8 ++- js/parse_tests/007-importTransformTTL.js | 4 ++ js/parse_tests/007-importTransformTTL.json | 23 +++++++ js/static.go | 71 +++++++++++----------- normalize/validate.go | 8 ++- 5 files changed, 74 insertions(+), 40 deletions(-) create mode 100644 js/parse_tests/007-importTransformTTL.js create mode 100644 js/parse_tests/007-importTransformTTL.json diff --git a/js/helpers.js b/js/helpers.js index 2169cd42f..54204b7a6 100644 --- a/js/helpers.js +++ b/js/helpers.js @@ -176,10 +176,13 @@ function format_tt(transform_table) { } // IMPORT_TRANSFORM(translation_table, domain) -function IMPORT_TRANSFORM(translation_table, domain) { +function IMPORT_TRANSFORM(translation_table, domain,ttl) { return function(d) { - addRecord(d, "IMPORT_TRANSFORM", "@", domain, [ + var rec = addRecord(d, "IMPORT_TRANSFORM", "@", domain, [ {'transform_table': format_tt(translation_table)}]) + if (ttl){ + rec.ttl = ttl; + } } } @@ -231,6 +234,7 @@ function addRecord(d,type,name,target,mods) { } } d.records.push(rec); + return rec; } //ip conversion functions from http://stackoverflow.com/a/8105740/121660 diff --git a/js/parse_tests/007-importTransformTTL.js b/js/parse_tests/007-importTransformTTL.js new file mode 100644 index 000000000..b064d2694 --- /dev/null +++ b/js/parse_tests/007-importTransformTTL.js @@ -0,0 +1,4 @@ +var TRANSFORM_INT = [ + {low: "0.0.0.0", high: "1.1.1.1", newBase: "2.2.2.2" } +] +D("foo.com","reg",IMPORT_TRANSFORM(TRANSFORM_INT,"foo2.com",60)) \ No newline at end of file diff --git a/js/parse_tests/007-importTransformTTL.json b/js/parse_tests/007-importTransformTTL.json new file mode 100644 index 000000000..de28ba1a3 --- /dev/null +++ b/js/parse_tests/007-importTransformTTL.json @@ -0,0 +1,23 @@ +{ + "registrars": [], + "dns_service_providers": [], + "domains": [ + { + "name": "foo.com", + "registrar": "reg", + "dsps": [], + "records": [ + { + "type": "IMPORT_TRANSFORM", + "name": "@", + "target": "foo2.com", + "ttl": 60, + "meta": { + "transform_table": "0.0.0.0 ~ 1.1.1.1 ~ 2.2.2.2 ~ " + } + } + ], + "keepunknown": false + } + ] + } \ No newline at end of file diff --git a/js/static.go b/js/static.go index e0e66e2f8..568fff343 100644 --- a/js/static.go +++ b/js/static.go @@ -190,43 +190,44 @@ var _escData = map[string]*_escFile{ "/helpers.js": { local: "js/helpers.js", - size: 6644, + size: 6729, modtime: 0, compressed: ` -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 +AAA= `, }, diff --git a/normalize/validate.go b/normalize/validate.go index e11805840..f88b0c2f1 100644 --- a/normalize/validate.go +++ b/normalize/validate.go @@ -130,7 +130,7 @@ func transform_cname(target, old_domain, new_domain string) string { } // import_transform imports the records of one zone into another, modifying records along the way. -func import_transform(src_domain, dst_domain *models.DomainConfig, transforms []transform.IpConversion) error { +func import_transform(src_domain, dst_domain *models.DomainConfig, transforms []transform.IpConversion, ttl uint32) error { // Read src_domain.Records, transform, and append to dst_domain.Records: // 1. Skip any that aren't A or CNAMEs. // 2. Append dest_domainname to the end of the label. @@ -142,7 +142,9 @@ func import_transform(src_domain, dst_domain *models.DomainConfig, transforms [] rec2, _ := rec.Copy() rec2.Name = rec2.NameFQDN rec2.NameFQDN = dnsutil.AddOrigin(rec2.Name, dst_domain.Name) - rec2.TTL = 60 + if ttl != 0 { + rec2.TTL = ttl + } return rec2 } switch rec.Type { @@ -222,7 +224,7 @@ func NormalizeAndValidateConfig(config *models.DNSConfig) (errs []error) { errs = append(errs, err) continue } - err = import_transform(config.FindDomain(rec.Target), domain, table) + err = import_transform(config.FindDomain(rec.Target), domain, table, rec.TTL) if err != nil { errs = append(errs, err) }