diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 000000000..4ddac2b32 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,6 @@ +# Security Policy + +## Reporting a Vulnerability + +You can report low severity bugs as [issues](https://github.com/is-a-dev/register/issues/new/choose) on this repo. +For higher severity vulnerabilities and bugs, kindly email them to me at [phenax5@gmail.com](mailto:phenax5@gmail.com). diff --git a/domains/aaraam.json b/domains/aaraam.json new file mode 100644 index 000000000..f75b6b11d --- /dev/null +++ b/domains/aaraam.json @@ -0,0 +1,12 @@ +{ + "description": "This website is a link to my personal developer portfolio.", + "repo": "https://github.com/aaraam/aaraam.github.io", + "owner": { + "username": "aaraam", + "email": "aaraam.goblin@gmail.com" + }, + "record": { + "CNAME": "aaraam.github.io", + "URL": "https://aaraam.is-a.dev" + } +} diff --git a/domains/abdulrshaikh.json b/domains/abdulrshaikh.json new file mode 100644 index 000000000..94621368c --- /dev/null +++ b/domains/abdulrshaikh.json @@ -0,0 +1,12 @@ +{ + "description": "Abdul's personal developer website", + "repo": "https://github.com/ariskycode/ariskycode.github.io", + "owner": { + "username": "ariskycode", + "email": "arirfanshaikh23@gmail.com" + }, + "record": { + "CNAME": "ariskycode.github.io", + "URL": "https://abdulrshaikh.is-a.dev" + } +} diff --git a/domains/adarsh.json b/domains/adarsh.json new file mode 100644 index 000000000..4abb316bd --- /dev/null +++ b/domains/adarsh.json @@ -0,0 +1,12 @@ +{ + "description": "Adarsh's personal developer website", + "repo": "https://github.com/Adarsh1999/adarsh-portfolio.github.io", + "owner": { + "username": "Adarsh1999", + "email": "adarshguptamaurya@gmail.com" + }, + "record": { + "CNAME": "adarsh-portfolio.github.io", + "URL": "https://adarsh.is-a.dev" + } +} diff --git a/domains/allsyed.json b/domains/allsyed.json new file mode 100644 index 000000000..f12be2194 --- /dev/null +++ b/domains/allsyed.json @@ -0,0 +1,11 @@ +{ + "description": "Allsyed's personal website", + "repo": "https://github.com/allsyed", + "owner": { + "username": "allsyed", + "email": "allsyed@pm.me" + }, + "record": { + "CNAME": "allsyed.com" + } +} diff --git a/domains/andy.json b/domains/andy.json new file mode 100644 index 000000000..3b626ef57 --- /dev/null +++ b/domains/andy.json @@ -0,0 +1,12 @@ +{ + "description": "Andy's portfolio website", + "repo": "https://github.com/andyfaizan/andyfaizan.github.io", + "owner": { + "username": "andyfaizan", + "email": "andyfaizan@gmail.com" + }, + "record": { + "CNAME": "andyfaizan.github.io", + "URL": "https://andy.is-a.dev" + } +} diff --git a/domains/anlshn.json b/domains/anlshn.json new file mode 100644 index 000000000..58b12cac2 --- /dev/null +++ b/domains/anlshn.json @@ -0,0 +1,12 @@ +{ + "description": "Anil's personal developer website", + "repo": "https://github.com/anilsahindev", + "owner": { + "username": "anilsahindev", + "email": "anilsahindev@gmail.com" + }, + "record": { + "CNAME": "anlshn.com", + "URL": "https://anlshn.is-a.dev" + } +} diff --git a/domains/anupam.json b/domains/anupam.json new file mode 100644 index 000000000..20d42352f --- /dev/null +++ b/domains/anupam.json @@ -0,0 +1,12 @@ +{ + "description": "Anupam's portfolio website", + "repo": "https://github.com/anupamroy8/portfolio", + "owner": { + "username": "anupamroy8", + "email": "anupamroy8@gmail.com" + }, + "record": { + "CNAME": "anupamroy8.github.io", + "URL": "https://anupam.is-a.dev" + } +} diff --git a/domains/anwar.json b/domains/anwar.json new file mode 100644 index 000000000..5451e6598 --- /dev/null +++ b/domains/anwar.json @@ -0,0 +1,11 @@ +{ + "description": "Anwar's personal website", + "repo": "https://github.com/getanwar", + "owner": { + "username": "getanwar", + "email": "say@anwar.im" + }, + "record": { + "URL": "https://anwar.im" + } +} diff --git a/domains/art.json b/domains/art.json new file mode 100644 index 000000000..fbfcc4a11 --- /dev/null +++ b/domains/art.json @@ -0,0 +1,11 @@ +{ + "description": "Art's personal developer website", + "repo": "https://github.com/dotiful", + "owner": { + "username": "dotiful", + "email": "dots.util@gmail.com" + }, + "record": { + "CNAME": "dotiful.github.io" + } +} diff --git a/domains/ashleymavericks.json b/domains/ashleymavericks.json new file mode 100644 index 000000000..2aa81aab6 --- /dev/null +++ b/domains/ashleymavericks.json @@ -0,0 +1,11 @@ +{ + "description": "Portfolio Website", + "repo": "https://github.com/ashleymavericks/Portfolio-Site", + "owner": { + "username": "ashlyemavericks", + "email": "singhanurag024@gmail.com" + }, + "record": { + "URL": "https://anuragsingh.dev" + } +} diff --git a/domains/aswin.json b/domains/aswin.json new file mode 100644 index 000000000..9ce17190d --- /dev/null +++ b/domains/aswin.json @@ -0,0 +1,12 @@ +{ + "description": "Aswin's personal portfolio", + "repo": "https://github.com/aswinskumar67/iamaswin.github.io", + "owner": { + "username": "aswinskumar67", + "email": "aswin.skumaro2bme@gmail.com" + }, + "record": { + "CNAME": "aswinskumar67.github.io", + "URL": "https://aswin.is-a.dev" + } +} \ No newline at end of file diff --git a/domains/biplob.json b/domains/biplob.json new file mode 100644 index 000000000..963b9c3e2 --- /dev/null +++ b/domains/biplob.json @@ -0,0 +1,12 @@ +{ + "description": "Biplob's website", + "repo": "https://github.com/revolutionisme/revolutionisme.github.io", + "owner": { + "username": "revolutionisme", + "email": "revolutionisme+github@gmail.com" + }, + "record": { + "CNAME": "revolutionisme.github.io", + "URL": "https://biplob.is-a.dev" + } +} diff --git a/domains/daria.json b/domains/daria.json new file mode 100644 index 000000000..83fa7e075 --- /dev/null +++ b/domains/daria.json @@ -0,0 +1,11 @@ +{ + "description": "Daria is a dev", + "repo": "https://github.com/dariatrainor/dariatrainor.github.io", + "owner": { + "username": "dariatrainor", + "email": "dariasu@gmail.com" + }, + "record": { + "CNAME": "dariatrainor.github.io" + } +} diff --git a/domains/edwin.json b/domains/edwin.json new file mode 100644 index 000000000..207976914 --- /dev/null +++ b/domains/edwin.json @@ -0,0 +1,10 @@ +{ + "description": "My proud is-a.dev website", + "owner": { + "username": "edwinm", + "email": "edwin@bitstorm.org" + }, + "record": { + "CNAME": "bitstorm.org" + } +} diff --git a/domains/ericp3reira.json b/domains/ericp3reira.json new file mode 100644 index 000000000..8fb80ae9a --- /dev/null +++ b/domains/ericp3reira.json @@ -0,0 +1,13 @@ +{ + "description": "Frontend Engineer", + "repo": "https://github.com/ericp3reira/ericp3reira.github.io", + "owner": { + "username": "ericp3reira", + "email": "", + "twitter": "ericp3reira" + }, + "record": { + "CNAME": "ericp3reira.github.io", + "URL": "https://ericp3reira.is-a.dev" + } +} diff --git a/domains/fityan.json b/domains/fityan.json new file mode 100644 index 000000000..1df5f4479 --- /dev/null +++ b/domains/fityan.json @@ -0,0 +1,12 @@ +{ + "description": "Fityan Azizi's portofolio website", + "repo": "https://github.com/fityanazizi/fityanazizi.github.io", + "owner": { + "username": "fityanazizi", + "email": "ftyns57@gmail.com" + }, + "record": { + "CNAME": "fityanazizi.rf.gd", + "URL": "https://fityan.is-a.dev" + } + } \ No newline at end of file diff --git a/domains/fjavierlh.json b/domains/fjavierlh.json new file mode 100644 index 000000000..cb527a766 --- /dev/null +++ b/domains/fjavierlh.json @@ -0,0 +1,12 @@ +{ + "description": "F Javier López GitHub profile", + "repo": "https://github.com/fjavierlh/fjavierlh.github.io", + "owner": { + "username": "fjavierlh", + "email": "fjavierlh@gmail.com" + }, + "record": { + "CNAME": "fjavierlh.github.io", + "URL": "https://fjavierlh.is-a.dev" + } + } \ No newline at end of file diff --git a/domains/forsas.json b/domains/forsas.json new file mode 100644 index 000000000..7398d4ec7 --- /dev/null +++ b/domains/forsas.json @@ -0,0 +1,12 @@ +{ + "description": "Forsas website and blog", + "repo": "https://github.com/forsas/forsas.github.io", + "owner": { + "username": "forsas", + "email": "forsaslt@gmail.com" + }, + "record": { + "CNAME": "forsas.github.io", + "URL": "https://forsas.is-a.dev" + } +} diff --git a/domains/frankie.json b/domains/frankie.json new file mode 100644 index 000000000..bbba813a8 --- /dev/null +++ b/domains/frankie.json @@ -0,0 +1,12 @@ +{ + "description": "Now that's a spicy 404 page!", + "repo": "https://github.com/frankie-tech/frankie-tech.github.io", + "owner": { + "username": "frankie-tech", + "email": "", + "twitter":"this_frankie" + }, + "record": { + "CNAME": "frankie-tech.github.io" + } +} diff --git a/domains/ganesh.json b/domains/ganesh.json new file mode 100644 index 000000000..3128e3739 --- /dev/null +++ b/domains/ganesh.json @@ -0,0 +1,12 @@ +{ + "description": "Ganesh Sekhar's Personal Portfolio", + "repo": "https://github.com/iamganeshsekhar/iamganeshsekhar.github.io", + "owner": { + "username": "iamganeshsekhar", + "email": "ganeshsekha6@gmail.com" + }, + "record": { + "CNAME": "iamganeshsekhar.github.io", + "URL": "https://ganesh.is-a.dev" + } +} diff --git a/domains/gkr.json b/domains/gkr.json index fed031e3c..71f25038f 100644 --- a/domains/gkr.json +++ b/domains/gkr.json @@ -4,6 +4,6 @@ "email": "hello@gautamkrishnar.com" }, "record": { - "A": ["185.224.138.125"] + "CNAME": "gautamkrishnar.github.io" } } diff --git a/domains/hemanth.json b/domains/hemanth.json new file mode 100644 index 000000000..9e35a8ef8 --- /dev/null +++ b/domains/hemanth.json @@ -0,0 +1,13 @@ +{ + "description": "Hemanth's developer portfolio", + "repo": "https://github.com/Hemanthwarrier/hemanth.github.io", + "owner": { + "username": "Hemanthwarrier", + "email": "hemanthwarrier@gmail.com" + }, + "record": { + "CNAME": "Hemanthwarrier.github.io", + "URL": "https://hemanth.is-a.dev" + } + } + \ No newline at end of file diff --git a/domains/hjmao.json b/domains/hjmao.json new file mode 100644 index 000000000..33b6cca15 --- /dev/null +++ b/domains/hjmao.json @@ -0,0 +1,11 @@ +{ + "description": "hjmao.is-a.dev", + "repo": "https://github.com/huajianmao/huajianmao.github.io", + "owner": { + "username": "huajianmao", + "email": "huajianmao@gmail.com" + }, + "record": { + "CNAME": "huajianmao.github.io" + } +} diff --git a/domains/kiran.json b/domains/kiran.json new file mode 100644 index 000000000..e418ae2e0 --- /dev/null +++ b/domains/kiran.json @@ -0,0 +1,12 @@ +{ + "description": "My very own is a dev domain for github pages", + "repo": "https://github.com/kiranhart/kiranhart.github.io", + "owner": { + "username": "kiranhart", + "email": "kiran.hart@live.com" + }, + "record": { + "CNAME": "kiranhart.github.io", + "URL": "https://kiran.is-a.dev" + } +} diff --git a/domains/kirann.json b/domains/kirann.json new file mode 100644 index 000000000..7fd93f279 --- /dev/null +++ b/domains/kirann.json @@ -0,0 +1,11 @@ +{ + "description": "Kiran's personal developer website", + "repo": "https://github.com/sudopower", + "owner": { + "username": "sudopower", + "email": "nkirandroid@gmail.com" + }, + "record": { + "URL": "http://sudopower.com" + } +} diff --git a/domains/lacti.json b/domains/lacti.json new file mode 100644 index 000000000..22b589fa9 --- /dev/null +++ b/domains/lacti.json @@ -0,0 +1,12 @@ +{ + "description": "Lacti's blog", + "repo": "https://github.com/lacti/lacti.github.io", + "owner": { + "username": "lacti", + "email": "lactrious@gmail.com" + }, + "record": { + "CNAME": "lacti.github.io", + "URL": "https://lacti.is-a.dev" + } +} diff --git a/domains/leon.json b/domains/leon.json new file mode 100644 index 000000000..946310ba2 --- /dev/null +++ b/domains/leon.json @@ -0,0 +1,14 @@ +{ + "repo": "https://github.com/LeonskiDev/leonskidev.github.io", + "description": "This is my portfolio website, if possible I'll also have bodged.is-a.dev as my blog.", + + "owner": { + "username": "LeonskiDev", + "email": "bodged@pm.me" + }, + + "record": { + "CNAME": "leonskidev.github.io", + "URL": "https://leonskidev.is-a.dev" + } +} diff --git a/domains/lnfnunes.json b/domains/lnfnunes.json new file mode 100644 index 000000000..063c01ba1 --- /dev/null +++ b/domains/lnfnunes.json @@ -0,0 +1,11 @@ +{ + "description": "Little Big Nunes", + "repo": "https://github.com/lnfnunes", + "owner": { + "username": "lnfnunes", + "email": "dr1design@gmail.com" + }, + "record": { + "URL": "https://lnfnunes.com.br" + } +} diff --git a/domains/lok.json b/domains/lok.json new file mode 100644 index 000000000..750f9104e --- /dev/null +++ b/domains/lok.json @@ -0,0 +1,12 @@ +{ + "description": "Lok's portfolio website", + "repo": "https://github.com/lokgubhaju/lokgubhaju.github.io", + "owner": { + "username": "lokgubhaju", + "email": "lok.gubhaju@gmail.com" + }, + "record": { + "CNAME": "lokgubhaju.github.io", + "URL": "https://lok.is-a.dev" + } +} diff --git a/domains/madhan.json b/domains/madhan.json new file mode 100644 index 000000000..a4451276c --- /dev/null +++ b/domains/madhan.json @@ -0,0 +1,12 @@ +{ + "description": "Madhan's portfolio", + "repo": "https://github.com/madhank93/madhank93.github.io", + "owner": { + "username": "madhank93", + "email": "madhankumaravelu93@gmail.com" + }, + "record": { + "CNAME": "madhank93.github.io", + "URL": "https://madhan.is-a.dev" + } +} diff --git a/domains/mk.json b/domains/mk.json new file mode 100644 index 000000000..cc0b5df23 --- /dev/null +++ b/domains/mk.json @@ -0,0 +1,11 @@ +{ + "description": "mklabs' website", + "repo": "https://github.com/mklabs/mklabs.github.com", + "owner": { + "username": "mklabs", + "email": "daniel.mickael@gmail.com" + }, + "record": { + "CNAME": "mklabs.github.io" + } +} diff --git a/domains/muchenski.json b/domains/muchenski.json new file mode 100644 index 000000000..95b5bff19 --- /dev/null +++ b/domains/muchenski.json @@ -0,0 +1,12 @@ +{ + "description": "Muchenski's personal developer website", + "repo": "https://github.com/HenriqueMuchenski/henriquemuchenski.github.io", + "owner": { + "username": "HenriqueMuchenski", + "email": "hjmuchenski@gmail.com" + }, + "record": { + "CNAME": "henriquemuchenski.github.io", + "URL": "https://muchenski.is-a.dev" + } +} diff --git a/domains/nand.json b/domains/nand.json new file mode 100644 index 000000000..f0960965a --- /dev/null +++ b/domains/nand.json @@ -0,0 +1,11 @@ +{ + "description" : "Nand's web", + "owner" : { + "username" : "nandkk05", + "email" : "nandkk07@gmail.com" + }, + "record" : { + "CNAME" : "nandkk05.github.io", + "URL" : "https://nand.is-a.dev" + } +} diff --git a/domains/nils.json b/domains/nils.json new file mode 100644 index 000000000..4984fdb72 --- /dev/null +++ b/domains/nils.json @@ -0,0 +1,10 @@ +{ + "owner": { + "username": "TheNoim", + "email": "nilsbergmann@noim.io" + }, + "description": "Use as alias for noim.io (My private webpage)", + "record": { + "URL": "https://noim.io" + } +} diff --git a/domains/paranoiasystem.json b/domains/paranoiasystem.json new file mode 100644 index 000000000..54c2d68ce --- /dev/null +++ b/domains/paranoiasystem.json @@ -0,0 +1,12 @@ +{ + "description": "ParanoiaSystem's Domain", + "repo": "https://github.com/paranoiasystem/paranoiasystem.github.io", + "owner": { + "username": "paranoiasystem", + "email": "marcoferraioli@live.com" + }, + "record": { + "CNAME": "paranoiasystem.github.io", + "URL": "https://paranoiasystem.is-a.dev" + } +} \ No newline at end of file diff --git a/domains/rusiru.json b/domains/rusiru.json new file mode 100644 index 000000000..dab934bbb --- /dev/null +++ b/domains/rusiru.json @@ -0,0 +1,12 @@ +{ + "description": "Rusiru Anupama is a Dev", + "repo": "https://github.com/sparkstark03/register", + "owner": { + "username": "sparkstark03", + "email": "rusirurasanjana@gmail.com" + }, + "record": { + "CNAME": "sparkstark03.github.io", + "URL": "https://rusiru.is-a.dev" + } + } \ No newline at end of file diff --git a/domains/shajanjp.json b/domains/shajanjp.json new file mode 100644 index 000000000..8d04c0a3d --- /dev/null +++ b/domains/shajanjp.json @@ -0,0 +1,12 @@ +{ + "description": "Full Stack Software Engineer", + "repo": "https://github.com/shajanjp/shajanjp.github.io", + "owner": { + "username": "shajanjp", + "email": "shajanjp@gmail.com" + }, + "record": { + "CNAME": "shajanjp.github.io", + "URL": "https://shajanjp.is-a.dev" + } +} diff --git a/domains/shambhavi.json b/domains/shambhavi.json new file mode 100644 index 000000000..d55b56f53 --- /dev/null +++ b/domains/shambhavi.json @@ -0,0 +1,11 @@ +{ + "description": "Shambhavi's Web-Dev Home", + "repo": "https://github.com/ShambhaviCodes/ShambhaviCodes.github.io", + "owner": { + "username": "ShambhaviCodes", + "email": "shambhavimishra26@gmail.com" + }, + "record": { + "CNAME": "shambhavicodes.github.io" + } +} diff --git a/domains/siful.json b/domains/siful.json new file mode 100644 index 000000000..4e0631e67 --- /dev/null +++ b/domains/siful.json @@ -0,0 +1,12 @@ +{ + "description": "Frontend Developer Siful", + "repo": "https://github.com/sifulbd/sifulbd.github.io", + "owner": { + "username": "sifulbd", + "email": "sifulweb@gmail.com" + }, + "record": { + "CNAME": "sifulbd.github.io", + "URL": "https://siful.is-a.dev" + } + } \ No newline at end of file diff --git a/domains/snaildos.json b/domains/snaildos.json new file mode 100644 index 000000000..a02f59fa2 --- /dev/null +++ b/domains/snaildos.json @@ -0,0 +1,12 @@ +{ + "description": "My Site", + "repo": "https://github.com/snaildos", + "owner": { + "username": "snaildos", + "email": "" + }, + "record": { + "CNAME": "snaildos.tk", + "URL": "https://snaildos.is-a.dev" + } +} diff --git a/domains/sumedhaa.json b/domains/sumedhaa.json new file mode 100644 index 000000000..c05a0796b --- /dev/null +++ b/domains/sumedhaa.json @@ -0,0 +1,12 @@ +{ + "description": "Sumedhaa's Portfolio", + "repo": "https://github.com/misticorion/misticorion.github.io", + "owner": { + "username": "misticorion", + "email": "mistic.orion@gmail.com" + }, + "record": { + "CNAME": "misticorion.github.io", + "URL": "https://sumedhaa.is-a.dev" + } +} diff --git a/domains/sycured.json b/domains/sycured.json new file mode 100644 index 000000000..3f92e4984 --- /dev/null +++ b/domains/sycured.json @@ -0,0 +1,9 @@ +{ + "owner": { + "username": "sycured", + "email": "sycured@protonmail.com" + }, + "record": { + "URL": "https://sycured.com" + } +} diff --git a/domains/tharindu.json b/domains/tharindu.json new file mode 100644 index 000000000..455011b92 --- /dev/null +++ b/domains/tharindu.json @@ -0,0 +1,12 @@ +{ + "description": "Tharindu's personal developer website", + "repo": "https://github.com/tharindusathis/tharindu", + "owner": { + "username": "tharindusathis", + "email": "tharindu.sathis@gmail.com" + }, + "record": { + "CNAME": "tharindu.vercel.app", + "URL": "https://tharindu.is-a.dev" + } +} diff --git a/domains/thesct22.json b/domains/thesct22.json new file mode 100644 index 000000000..d431e0139 --- /dev/null +++ b/domains/thesct22.json @@ -0,0 +1,12 @@ +{ + "description": "Social media website project", + "repo": "https://github.com/thesct22", + "owner": { + "username": "thesct22", + "email": "sharathct22@gmail.com" + }, + "record": { + "CNAME": "34.67.228.107.xip.io", + "URL": "http://thesct.is-a.dev" + } +} diff --git a/domains/tim.json b/domains/tim.json new file mode 100644 index 000000000..a0eb45dbb --- /dev/null +++ b/domains/tim.json @@ -0,0 +1,11 @@ +{ + "description": "Tim is a Dev", + "owner": { + "username": "xorob0", + "email": "xorob0@toum" + }, + "repo": "https://github.com/xorob0/register", + "record": { + "CNAME": "toum.me" + } +} diff --git a/domains/yusuf.json b/domains/yusuf.json new file mode 100644 index 000000000..d69bddd05 --- /dev/null +++ b/domains/yusuf.json @@ -0,0 +1,12 @@ +{ + "description": "My Github pages portfolio", + "repo": "https://github.com/YAOfficial/portfolio/tree/gh-pages", + "owner": { + "username": "YAOfficial", + "email": "yahumble1@gmail.com" + }, + "record": { + "CNAME": "yaofficial.github.io", + "URL": "https://yusuf.is-a.dev" + } +} diff --git a/tests/domain-utils.test.js b/tests/domain-utils.test.js index 8dfbbacb8..ad231b281 100644 --- a/tests/domain-utils.test.js +++ b/tests/domain-utils.test.js @@ -31,9 +31,13 @@ describe('validateDomainData', () => { })), { ...defaultDomain, record: { CNAME: 'sd', A: ['121,3213'] } }, { ...defaultDomain, record: { A: ['121', '12'], FOOBAR: ['sd'] } }, + { ...defaultDomain, record: { A: [] } }, + { ...defaultDomain, record: { A: ['11122'], URL: 'foobar' } }, { ...defaultDomain, owner: {}, }, { ...defaultDomain, owner: { username: 'hwelo', }, }, { ...defaultDomain, owner: { email: 'hwelo' }, }, + { ...defaultDomain, record: { CNAME: 'http://foobar.com' } }, + { ...defaultDomain, record: { CNAME: 'https://foobar.com' } }, ]; const validCases = [ diff --git a/utils/domain.js b/utils/domain.js index f7819f02a..452aab658 100644 --- a/utils/domain.js +++ b/utils/domain.js @@ -17,6 +17,7 @@ const getDomains = () => }))); const between = (min, max) => num => num >= min && num <= max; +const testRegex = regex => str => !!(str && str.match(regex)); const validate = pattern => data => R.compose( invalidPairs => invalidPairs.length ? { errors: invalidPairs, valid: false } : { errors: [], valid: true }, @@ -24,9 +25,15 @@ const validate = pattern => data => R.compose( R.toPairs, )(pattern); -const validateNameRecord = type => R.allPass([ +const validateCnameRecord = key => R.allPass([ + R.propSatisfies(R.is(String), key), R.compose(R.equals(1), R.length, R.reject(R.equals('URL')), R.keys), - R.propSatisfies(R.is(String), type), + R.propSatisfies(R.complement(testRegex(/^https?:\/\//ig)), key), +]); + +const validateARecord = key => R.allPass([ + R.compose(R.equals(1), R.length, R.keys), + R.propSatisfies(R.compose(R.gte(R.__, 1), R.length), key), ]); const validateDomainData = validate({ @@ -36,7 +43,7 @@ const validateDomainData = validate({ R.equals('@'), R.allPass([ R.compose(between(2, 100), R.length), - str => str && str.match(/^[a-z0-9\-]+$/ig), + testRegex(/^[a-z0-9\-]+$/g), ]) ]), }, @@ -54,13 +61,13 @@ const validateDomainData = validate({ ]), }, record: { - reason: 'Invalid record', + reason: 'Invalid record. CNAME records have to be a host name and A records has to be a list of ips', fn: R.allPass([ R.is(Object), R.compose(R.isEmpty, R.flip(R.difference)(VALID_RECORD_TYPES), R.keys), R.cond([ - [R.prop('CNAME'), validateNameRecord('CNAME')], - [R.prop('A'), R.propSatisfies(R.is(Array), 'A')], + [R.prop('CNAME'), validateCnameRecord('CNAME')], + [R.prop('A'), validateARecord('A')], [R.prop('URL'), R.propSatisfies(R.is(String), 'URL')], [R.T, R.T], ]),