From da8ecd0c7bbd4f365b3ca2789978e56f7708b9a5 Mon Sep 17 00:00:00 2001 From: Akshay Nair Date: Mon, 5 Oct 2020 15:55:21 +0530 Subject: [PATCH] Adds '@' rule for root domain --- domains/@.json | 9 +++++++++ domains/www.json | 2 +- utils/domain.js | 11 +++++++---- 3 files changed, 17 insertions(+), 5 deletions(-) create mode 100644 domains/@.json diff --git a/domains/@.json b/domains/@.json new file mode 100644 index 000000000..fb2fd28a6 --- /dev/null +++ b/domains/@.json @@ -0,0 +1,9 @@ +{ + "owner": { + "username": "phenax", + "email": "phenax5@gmail.com" + }, + "record": { + "URL": "https://www.is-a.dev" + } +} diff --git a/domains/www.json b/domains/www.json index b73069225..fe2f0b92a 100644 --- a/domains/www.json +++ b/domains/www.json @@ -4,6 +4,6 @@ "email": "phenax5@gmail.com" }, "record": { - "CNAME": "placeholder" + "CNAME": "placeholder.com" } } diff --git a/utils/domain.js b/utils/domain.js index 5cbc48d6c..089bde425 100644 --- a/utils/domain.js +++ b/utils/domain.js @@ -18,7 +18,7 @@ const getDomains = () => name: name.replace(/\.json$/, ''), }))); -const hasLengthLessThan = len => R.compose(R.not, R.lt(len), R.length); +const between = (min, max) => num => num >= min && num <= max; const validate = pattern => data => R.compose( invalidPairs => invalidPairs.length ? { errors: invalidPairs, valid: false } : { errors: [], valid: true }, @@ -34,9 +34,12 @@ const validateNameRecord = type => R.allPass([ const validateDomainData = validate({ name: { reason: 'The name of the file is invalid', - fn: R.allPass([ - hasLengthLessThan(100), - str => str && str.match(/^[A-Za-z0-9\-]{2,}$/ig), + fn: R.anyPass([ + R.equals('@'), + R.allPass([ + R.compose(between(2, 100), R.length), + str => str && str.match(/^[A-Za-z0-9\-]+$/ig), + ]) ]), }, description: { reason: '', fn: R.T, },