mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2024-05-11 05:55:12 +00:00
Add SSHFP DNS record support. (#439)
* Add SSHFP DNS record support. * Fix integration test.
This commit is contained in:
@@ -235,6 +235,22 @@ var SRV = recordBuilder('SRV', {
|
||||
},
|
||||
});
|
||||
|
||||
// SSHFP(name,algorithm,type,value, recordModifiers...)
|
||||
var SSHFP = recordBuilder('SSHFP', {
|
||||
args: [
|
||||
['name', _.isString],
|
||||
['algorithm', _.isNumber],
|
||||
['fingerprint', _.isNumber],
|
||||
['value', _.isString],
|
||||
],
|
||||
transform: function(record, args, modifiers) {
|
||||
record.name = args.name;
|
||||
record.sshfpalgorithm = args.algorithm;
|
||||
record.sshfpfingerprint = args.fingerprint;
|
||||
record.target = args.value;
|
||||
},
|
||||
});
|
||||
|
||||
// name, usage, selector, matchingtype, certificate
|
||||
var TLSA = recordBuilder('TLSA', {
|
||||
args: [
|
||||
|
10
pkg/js/parse_tests/022-sshfp.js
Normal file
10
pkg/js/parse_tests/022-sshfp.js
Normal file
@@ -0,0 +1,10 @@
|
||||
D("foo.com","none",
|
||||
SSHFP("@",1,1,"66c7d5540b7d75a1fb4c84febfa178ad99bdd67c"),
|
||||
SSHFP("@",1,2,"745a635bc46a397a5c4f21d437483005bcc40d7511ff15fbfafe913a081559bc"),
|
||||
SSHFP("@",2,1,"66c7d5540b7d75a1fb4c84febfa178ad99bdd67c"),
|
||||
SSHFP("@",2,2,"745a635bc46a397a5c4f21d437483005bcc40d7511ff15fbfafe913a081559bc"),
|
||||
SSHFP("@",3,1,"66c7d5540b7d75a1fb4c84febfa178ad99bdd67c"),
|
||||
SSHFP("@",3,2,"745a635bc46a397a5c4f21d437483005bcc40d7511ff15fbfafe913a081559bc"),
|
||||
SSHFP("@",4,1,"66c7d5540b7d75a1fb4c84febfa178ad99bdd67c"),
|
||||
SSHFP("@",4,2,"745a635bc46a397a5c4f21d437483005bcc40d7511ff15fbfafe913a081559bc")
|
||||
);
|
61
pkg/js/parse_tests/022-sshfp.json
Normal file
61
pkg/js/parse_tests/022-sshfp.json
Normal file
@@ -0,0 +1,61 @@
|
||||
{
|
||||
"registrars": [],
|
||||
"dns_providers": [],
|
||||
"domains": [
|
||||
{
|
||||
"name": "foo.com",
|
||||
"registrar": "none",
|
||||
"dnsProviders": {},
|
||||
"records": [
|
||||
{
|
||||
"type": "SSHFP",
|
||||
"algorithm": 1,
|
||||
"fingerprint": 1,
|
||||
"value": "66c7d5540b7d75a1fb4c84febfa178ad99bdd67c"
|
||||
},
|
||||
{
|
||||
"type": "SSHFP",
|
||||
"algorithm": 1,
|
||||
"fingerprint": 2,
|
||||
"value": "745a635bc46a397a5c4f21d437483005bcc40d7511ff15fbfafe913a081559bc"
|
||||
},
|
||||
{
|
||||
"type": "SSHFP",
|
||||
"algorithm": 2,
|
||||
"fingerprint": 1,
|
||||
"value": "66c7d5540b7d75a1fb4c84febfa178ad99bdd67c"
|
||||
},
|
||||
{
|
||||
"type": "SSHFP",
|
||||
"algorithm": 2,
|
||||
"fingerprint": 2,
|
||||
"value": "745a635bc46a397a5c4f21d437483005bcc40d7511ff15fbfafe913a081559bc"
|
||||
},
|
||||
{
|
||||
"type": "SSHFP",
|
||||
"algorithm": 3,
|
||||
"fingerprint": 1,
|
||||
"value": "66c7d5540b7d75a1fb4c84febfa178ad99bdd67c"
|
||||
},
|
||||
{
|
||||
"type": "SSHFP",
|
||||
"algorithm": 3,
|
||||
"fingerprint": 2,
|
||||
"value": "745a635bc46a397a5c4f21d437483005bcc40d7511ff15fbfafe913a081559bc"
|
||||
},
|
||||
{
|
||||
"type": "SSHFP",
|
||||
"algorithm": 4,
|
||||
"fingerprint": 1,
|
||||
"value": "66c7d5540b7d75a1fb4c84febfa178ad99bdd67c"
|
||||
},
|
||||
{
|
||||
"type": "SSHFP",
|
||||
"algorithm": 4,
|
||||
"fingerprint": 2,
|
||||
"value": "745a635bc46a397a5c4f21d437483005bcc40d7511ff15fbfafe913a081559bc"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@@ -58,6 +58,7 @@ func validateRecordTypes(rec *models.RecordConfig, domain string, pTypes []strin
|
||||
"IMPORT_TRANSFORM": false,
|
||||
"MX": true,
|
||||
"SRV": true,
|
||||
"SSHFP": true,
|
||||
"TXT": true,
|
||||
"NS": true,
|
||||
"PTR": true,
|
||||
@@ -160,7 +161,7 @@ func checkTargets(rec *models.RecordConfig, domain string) (errs []error) {
|
||||
check(checkTarget(target))
|
||||
case "SRV":
|
||||
check(checkTarget(target))
|
||||
case "TXT", "IMPORT_TRANSFORM", "CAA", "TLSA":
|
||||
case "TXT", "IMPORT_TRANSFORM", "CAA", "SSHFP", "TLSA":
|
||||
default:
|
||||
if rec.Metadata["orig_custom_type"] != "" {
|
||||
// it is a valid custom type. We perform no validation on target
|
||||
|
Reference in New Issue
Block a user