From 79f049e12d77c0e6702c2ddc92ee276bf2eda2fe Mon Sep 17 00:00:00 2001 From: Akshay Nair Date: Sun, 17 Sep 2023 15:24:56 +0530 Subject: [PATCH] fix(script): fixes validation for ipv6 --- bun.lockb | Bin 53511 -> 51000 bytes package.json | 2 +- tests/validations.test.js | 7 +++++++ utils/constants.js | 2 +- utils/validations.js | 6 +++--- 5 files changed, 12 insertions(+), 5 deletions(-) diff --git a/bun.lockb b/bun.lockb index a21cd4a5c79284d5aba13d6ce084051e1d4b48a1..5022120107e0be77c9cb0067f2b55c8b7f2a579d 100755 GIT binary patch delta 10856 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 delta 12315 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 diff --git a/package.json b/package.json index 60ab02ae0..ccc8dbd41 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "author": "Akshay Nair ", "license": "GPL-3.0", "dependencies": { - "is-ip": "^5.0.1", + "ip-regex": "^5.0.0", "ramda": "^0.27.1" }, "devDependencies": { diff --git a/tests/validations.test.js b/tests/validations.test.js index e97ddbb08..b2912e3a1 100644 --- a/tests/validations.test.js +++ b/tests/validations.test.js @@ -1,5 +1,6 @@ const { validateDomainData, isValidDomain } = require('../utils/validations'); const INVALID_NAMES = require('../utils/invalid-domains.json'); +const ipRegex = require('ip-regex'); const defaultDomain = { name: 'aaa', @@ -60,6 +61,10 @@ describe('validateDomainData', () => { { ...defaultDomain, name: 'help.baa' }, { ...defaultDomain, name: '_github-pages-challenge-is-a-dev' }, { ...defaultDomain, name: '_github-challenge-is-a-dev' }, + { ...defaultDomain, record: { AAAA: [] } }, + { ...defaultDomain, record: { AAAA: ['182.22.222.22', '::1'] } }, + { ...defaultDomain, record: { AAAA: '182.22.222.22' } }, + { ...defaultDomain, record: { A: '::1' } }, ]; const validCases = [ @@ -86,6 +91,8 @@ describe('validateDomainData', () => { { ...defaultDomain, name: '_github-challenge-phenax.akshay' }, { ...defaultDomain, name: '_github-challenge-hello01-ga' }, { ...defaultDomain, name: '_github-challenge-hello01_ga' }, + { ...defaultDomain, record: { AAAA: ['::1', '2001:db8:3333:4444:5555:6666:7777:8888'] } }, + { ...defaultDomain, record: { A: ['122.222.222.222'] } }, ]; it('should return false for invalid data', () => { diff --git a/utils/constants.js b/utils/constants.js index 273a2761e..19430e5bf 100644 --- a/utils/constants.js +++ b/utils/constants.js @@ -18,7 +18,7 @@ const DOMAINS_PATH = path.resolve('domains'); module.exports = { ENV, IS_TEST, - VALID_RECORD_TYPES: ['CNAME', 'A', 'URL', 'MX', 'TXT'], + VALID_RECORD_TYPES: ['CNAME', 'A', 'URL', 'MX', 'TXT', 'AAAA'], DOMAIN_DOMAIN: DOMAIN_DOMAIN || 'booboo.xyz', DOMAIN_USER: IS_TEST ? 'testuser' : DOMAIN_USER, DOMAIN_API_KEY: IS_TEST ? 'testkey' : DOMAIN_API_KEY, diff --git a/utils/validations.js b/utils/validations.js index 402733437..e4e6206cf 100644 --- a/utils/validations.js +++ b/utils/validations.js @@ -2,7 +2,7 @@ const R = require('ramda'); const { VALID_RECORD_TYPES } = require('./constants'); const { or, and, validate, between, testRegex, withLengthEq, withLengthGte } = require('./helpers'); const INVALID_NAMES = require('./invalid-domains.json'); -const { isIPv4, isIPv6 } = require('is-ip'); +const { default: ipRegex } = require('ip-regex'); const isValidURL = and([R.is(String), testRegex(/^https?:\/\//ig)]); @@ -18,7 +18,7 @@ const validateCnameRecord = type => and([ const validateARecord = type => and([ R.propIs(Array, type), R.propSatisfies(withLengthGte(1), type), - R.all(isIPv4), + R.all(testRegex(ipRegex.v4({ exact: true }))), ]); const validateMXRecord = type => and([ @@ -30,7 +30,7 @@ const validateMXRecord = type => and([ const validateAAAARecord = R.propSatisfies(and([ R.is(Array), withLengthGte(1), - R.all(isIPv6), + R.all(testRegex(ipRegex.v6({ exact: true }))), ])) const checkRestrictedNames = R.complement(R.includes(R.__, INVALID_NAMES))