mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2024-05-11 05:55:12 +00:00
allowing multiple newBase ips (#1)
* allowing multiple newBase ips * generate * only bundle helpers * generate change
This commit is contained in:
@ -156,10 +156,18 @@ function format_tt(transform_table) {
|
||||
newIP = num2dot(newIP);
|
||||
}
|
||||
}
|
||||
var newBase = ip.newBase;
|
||||
if (newBase){
|
||||
if(_.isArray(newBase)){
|
||||
newBase = _.map(newBase,function(i){return num2dot(i)}).join(",")
|
||||
}else{
|
||||
newBase = num2dot(newBase);
|
||||
}
|
||||
}
|
||||
var row = [
|
||||
num2dot(ip.low),
|
||||
num2dot(ip.high),
|
||||
num2dot(ip.newBase),
|
||||
newBase,
|
||||
newIP
|
||||
]
|
||||
lines.push(row.join(" ~ "))
|
||||
|
12
js/parse_tests/006-transforms.js
Normal file
12
js/parse_tests/006-transforms.js
Normal file
@ -0,0 +1,12 @@
|
||||
var REG = NewRegistrar("Third-Party","NONE");
|
||||
var CF = NewDSP("Cloudflare", "CLOUDFLAREAPI")
|
||||
|
||||
var TRANSFORM_INT = [
|
||||
{low: "0.0.0.0", high: "1.1.1.1", newBase: "2.2.2.2" },
|
||||
{low: "1.1.1.1", high: IP("2.2.2.2"), newBase: ["3.3.3.3","4.4.4.4",IP("5.5.5.5")]} ,
|
||||
{low: "1.1.1.1", high: IP("2.2.2.2"), newIP: ["3.3.3.3","4.4.4.4",IP("5.5.5.5")]}
|
||||
]
|
||||
|
||||
D("foo.com",REG,CF,
|
||||
A("@","1.2.3.4",{transform: TRANSFORM_INT})
|
||||
);
|
34
js/parse_tests/006-transforms.json
Normal file
34
js/parse_tests/006-transforms.json
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"registrars": [
|
||||
{
|
||||
"name": "Third-Party",
|
||||
"type": "NONE"
|
||||
}
|
||||
],
|
||||
"dns_service_providers": [
|
||||
{
|
||||
"name": "Cloudflare",
|
||||
"type": "CLOUDFLAREAPI"
|
||||
}
|
||||
],
|
||||
"domains": [
|
||||
{
|
||||
"name": "foo.com",
|
||||
"registrar": "Third-Party",
|
||||
"dsps": [
|
||||
"Cloudflare"
|
||||
],
|
||||
"records": [
|
||||
{
|
||||
"type": "A",
|
||||
"name": "@",
|
||||
"target": "1.2.3.4",
|
||||
"meta": {
|
||||
"transform": "0.0.0.0 ~ 1.1.1.1 ~ 2.2.2.2 ~ ; 1.1.1.1 ~ 2.2.2.2 ~ 3.3.3.3,4.4.4.4,5.5.5.5 ~ ; 1.1.1.1 ~ 2.2.2.2 ~ ~ 3.3.3.3,4.4.4.4,5.5.5.5"
|
||||
}
|
||||
}
|
||||
],
|
||||
"keepunknown": false
|
||||
}
|
||||
]
|
||||
}
|
86
js/static.go
86
js/static.go
@ -190,59 +190,43 @@ var _escData = map[string]*_escFile{
|
||||
|
||||
"/helpers.js": {
|
||||
local: "js/helpers.js",
|
||||
size: 6427,
|
||||
size: 6644,
|
||||
modtime: 0,
|
||||
compressed: `
|
||||
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
|
||||
`,
|
||||
},
|
||||
|
||||
"/tester.html": {
|
||||
local: "js/tester.html",
|
||||
size: 953,
|
||||
modtime: 0,
|
||||
compressed: `
|
||||
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
|
||||
`,
|
||||
},
|
||||
|
||||
|
2
main.go
2
main.go
@ -29,7 +29,7 @@ import (
|
||||
_ "github.com/StackExchange/dnscontrol/providers/route53"
|
||||
)
|
||||
|
||||
//go:generate esc -modtime 0 -o js/static.go -pkg js -ignore go -prefix js js
|
||||
//go:generate esc -modtime 0 -o js/static.go -pkg js -include helpers\.js -ignore go -prefix js js
|
||||
//go:generate esc -modtime 0 -o web/static.go -pkg web -include=bundle\.js -ignore node_modules -prefix web web
|
||||
|
||||
// One of these config options must be set.
|
||||
|
@ -7,7 +7,8 @@ import (
|
||||
)
|
||||
|
||||
type IpConversion struct {
|
||||
Low, High, NewBase net.IP
|
||||
Low, High net.IP
|
||||
NewBases []net.IP
|
||||
NewIPs []net.IP
|
||||
}
|
||||
|
||||
@ -44,9 +45,11 @@ func DecodeTransformTable(transforms string) ([]IpConversion, error) {
|
||||
con := IpConversion{
|
||||
Low: net.ParseIP(items[0]),
|
||||
High: net.ParseIP(items[1]),
|
||||
NewBase: net.ParseIP(items[2]),
|
||||
}
|
||||
for _, ip := range strings.Split(items[3], ",") {
|
||||
parseList := func(s string) ([]net.IP, error) {
|
||||
ips := []net.IP{}
|
||||
for _, ip := range strings.Split(s, ",") {
|
||||
|
||||
if ip == "" {
|
||||
continue
|
||||
}
|
||||
@ -54,7 +57,16 @@ func DecodeTransformTable(transforms string) ([]IpConversion, error) {
|
||||
if addr == nil {
|
||||
return nil, fmt.Errorf("%s is not a valid ip address", ip)
|
||||
}
|
||||
con.NewIPs = append(con.NewIPs, addr)
|
||||
ips = append(ips, addr)
|
||||
}
|
||||
return ips, nil
|
||||
}
|
||||
var err error
|
||||
if con.NewBases, err = parseList(items[2]); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if con.NewIPs, err = parseList(items[3]); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
low, _ := ipToUint(con.Low)
|
||||
@ -62,8 +74,8 @@ func DecodeTransformTable(transforms string) ([]IpConversion, error) {
|
||||
if low > high {
|
||||
return nil, fmt.Errorf("transform_table Low should be less than High. row (%v) %v>%v (%v)\n", ri, con.Low, con.High, transforms)
|
||||
}
|
||||
if con.NewBase != nil && con.NewIPs != nil {
|
||||
return nil, fmt.Errorf("transform_table_rows should only specify one of NewBase or NewIP. Not both.")
|
||||
if len(con.NewBases) > 0 && len(con.NewIPs) > 0 {
|
||||
return nil, fmt.Errorf("transform_table_rows should only specify one of NewBases or NewIPs, Not both")
|
||||
}
|
||||
result = append(result, con)
|
||||
}
|
||||
@ -102,11 +114,15 @@ func TransformIPToList(address net.IP, transforms []IpConversion) ([]net.IP, err
|
||||
if conv.NewIPs != nil {
|
||||
return conv.NewIPs, nil
|
||||
}
|
||||
newbase, err := ipToUint(conv.NewBase)
|
||||
list := []net.IP{}
|
||||
for _, nb := range conv.NewBases {
|
||||
newbase, err := ipToUint(nb)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return []net.IP{UintToIP(newbase + (thisIP - min))}, nil
|
||||
list = append(list, UintToIP(newbase+(thisIP-min)))
|
||||
}
|
||||
return list, nil
|
||||
}
|
||||
}
|
||||
return []net.IP{address}, nil
|
||||
|
@ -2,6 +2,7 @@ package transform
|
||||
|
||||
import (
|
||||
"net"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
@ -46,7 +47,7 @@ func Test_DecodeTransformTable_0(t *testing.T) {
|
||||
}
|
||||
test_ip(t, "low", "1.2.3.4", result[0].Low)
|
||||
test_ip(t, "high", "2.3.4.5", result[0].High)
|
||||
test_ip(t, "newBase", "3.4.5.6", result[0].NewBase)
|
||||
test_ip(t, "newBase", "3.4.5.6", result[0].NewBases[0])
|
||||
//test_ip(t, "newIP", "", result[0].NewIPs)
|
||||
}
|
||||
|
||||
@ -60,11 +61,11 @@ func Test_DecodeTransformTable_1(t *testing.T) {
|
||||
}
|
||||
test_ip(t, "Low[0]", "1.2.3.4", result[0].Low)
|
||||
test_ip(t, "High[0]", "2.3.4.5", result[0].High)
|
||||
test_ip(t, "NewBase[0]", "3.4.5.6", result[0].NewBase)
|
||||
test_ip(t, "NewBase[0]", "3.4.5.6", result[0].NewBases[0])
|
||||
//test_ip(t, "newIP[0]", "", result[0].NewIP)
|
||||
test_ip(t, "Low[1]", "8.7.6.5", result[1].Low)
|
||||
test_ip(t, "High[1]", "9.8.7.6", result[1].High)
|
||||
test_ip(t, "NewBase[1]", "7.6.5.4", result[1].NewBase)
|
||||
test_ip(t, "NewBase[1]", "7.6.5.4", result[1].NewBases[0])
|
||||
//test_ip(t, "newIP[1]", "", result[0].NewIP)
|
||||
}
|
||||
func Test_DecodeTransformTable_NewIP(t *testing.T) {
|
||||
@ -77,8 +78,7 @@ func Test_DecodeTransformTable_NewIP(t *testing.T) {
|
||||
}
|
||||
test_ip(t, "low", "1.2.3.4", result[0].Low)
|
||||
test_ip(t, "high", "2.3.4.5", result[0].High)
|
||||
//test_ip(t, "newIP", "3.4.5.6", result[0].NewIP)
|
||||
test_ip(t, "newBase", "", result[0].NewBase)
|
||||
test_ip(t, "newIP", "3.4.5.6", result[0].NewIPs[0])
|
||||
}
|
||||
|
||||
func Test_DecodeTransformTable_order(t *testing.T) {
|
||||
@ -108,19 +108,23 @@ func Test_TransformIP(t *testing.T) {
|
||||
var transforms1 = []IpConversion{{
|
||||
Low: net.ParseIP("11.11.11.0"),
|
||||
High: net.ParseIP("11.11.11.20"),
|
||||
NewBase: net.ParseIP("99.99.99.0"),
|
||||
NewBases: []net.IP{net.ParseIP("99.99.99.0")},
|
||||
}, {
|
||||
Low: net.ParseIP("22.22.22.0"),
|
||||
High: net.ParseIP("22.22.22.40"),
|
||||
NewBase: net.ParseIP("99.99.99.100"),
|
||||
NewBases: []net.IP{net.ParseIP("99.99.99.100")},
|
||||
}, {
|
||||
Low: net.ParseIP("33.33.33.20"),
|
||||
High: net.ParseIP("33.33.35.40"),
|
||||
NewBase: net.ParseIP("100.100.100.0"),
|
||||
NewBases: []net.IP{net.ParseIP("100.100.100.0")},
|
||||
}, {
|
||||
Low: net.ParseIP("44.44.44.20"),
|
||||
High: net.ParseIP("44.44.44.40"),
|
||||
NewBase: net.ParseIP("100.100.100.40"),
|
||||
NewBases: []net.IP{net.ParseIP("100.100.100.40")},
|
||||
}, {
|
||||
Low: net.ParseIP("55.0.0.0"),
|
||||
High: net.ParseIP("55.255.0.0"),
|
||||
NewBases: []net.IP{net.ParseIP("66.0.0.0"), net.ParseIP("77.0.0.0")},
|
||||
}}
|
||||
|
||||
var tests = []struct {
|
||||
@ -145,17 +149,22 @@ func Test_TransformIP(t *testing.T) {
|
||||
{"33.33.35.41", "33.33.35.41"},
|
||||
{"44.44.44.24", "100.100.100.44"},
|
||||
{"44.44.44.44", "44.44.44.44"},
|
||||
{"55.0.42.42", "66.0.42.42,77.0.42.42"},
|
||||
}
|
||||
|
||||
for _, test := range tests {
|
||||
experiment := net.ParseIP(test.experiment)
|
||||
expected := net.ParseIP(test.expected)
|
||||
actual, err := TransformIP(experiment, transforms1)
|
||||
actual, err := TransformIPToList(experiment, transforms1)
|
||||
if err != nil {
|
||||
t.Errorf("%v: got an err: %v\n", experiment, err)
|
||||
}
|
||||
if !expected.Equal(actual) {
|
||||
t.Errorf("%v: expected (%v) got (%v)\n", experiment, expected, actual)
|
||||
list := []string{}
|
||||
for _, ip := range actual {
|
||||
list = append(list, ip.String())
|
||||
}
|
||||
act := strings.Join(list, ",")
|
||||
if test.expected != act {
|
||||
t.Errorf("%v: expected (%v) got (%v)\n", experiment, test.expected, act)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user