diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1521b5990..91d81f6e7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,7 +10,6 @@ on: - "tests/*" - "util/*" - ".github/workflows/ci.yml" - - "dnsconfig.js" workflow_dispatch: @@ -44,11 +43,5 @@ jobs: env: GH_TOKEN: ${{ github.token }} - - name: Run DNSControl tests - if: github.event_name == 'pull_request' && contains(fromJson(env.CHANGED_FILES), 'dnsconfig.js') - uses: is-a-dev/dnscontrol-action@main - with: - args: check - - name: Run tests run: npx ava tests/*.test.js --timeout=1m diff --git a/.github/workflows/dnscontrol.yml b/.github/workflows/dnscontrol.yml new file mode 100644 index 000000000..847aae8cb --- /dev/null +++ b/.github/workflows/dnscontrol.yml @@ -0,0 +1,25 @@ +name: DNSControl + +on: + push: + branches: [main] + paths: + - ".github/workflows/dnscontrol.yml" + - "dnsconfig.js" + + workflow_dispatch: + +concurrency: + group: ${{ github.ref }}-dnscontrol + cancel-in-progress: true + +jobs: + tests: + name: Tests + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: is-a-dev/dnscontrol-action@main + with: + args: check diff --git a/.github/workflows/label.yml b/.github/workflows/label.yml index e0891daae..415277fbe 100644 --- a/.github/workflows/label.yml +++ b/.github/workflows/label.yml @@ -1,12 +1,15 @@ -name: Pull Request Labeler +name: Label + on: schedule: - cron: "*/10 * * * *" + jobs: - labeler: + pull-requests: + name: Pull Requests runs-on: ubuntu-latest steps: - - uses: docker://docker.io/ilyam8/periodic-pr-labeler:v0.1.1 + - uses: ilyam8/periodic-pr-labeler@v0.3.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_REPOSITORY: ${{ github.repository }} diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 6094cba76..157d73bfc 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -22,11 +22,6 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Run DNSControl tests - uses: is-a-dev/dnscontrol-action@main - with: - args: check - - name: Generate creds.json run: echo '{"cloudflare":{"TYPE":"CLOUDFLAREAPI","apitoken":"$CLOUDFLARE_API_TOKEN"}}' > ./creds.json diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index ad78c7b61..815d5ace0 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -1,12 +1,14 @@ -name: StaleBOT +name: Stale on: - workflow_dispatch: schedule: - - cron: "30 14 * * *" + - cron: "0 12 * * *" + + workflow_dispatch: jobs: - stale: + label: + name: Label runs-on: ubuntu-latest steps: - uses: actions/stale@v3 diff --git a/README.md b/README.md index 9b4b42f9c..0c3a0828f 100644 --- a/README.md +++ b/README.md @@ -11,41 +11,42 @@

is-a.dev

-

is-a.dev is a service that allows developers to get a sweet-looking .is-a.dev domain for their personal websites.

+

is-a.dev is a service that allows developers to get a sweet-looking .is-a.dev subdomain for their personal websites.

## Announcements & Status Updates -Please join our [Discord server](https://discord.gg/is-a-dev-830872854677422150) for announcements, updates & upgrades, and downtimes regarding the service. -Not all of these will be posted on GitHub, however they will always be posted in our Discord server. +Please join our [Discord server](https://discord.gg/is-a-dev-830872854677422150) for announcements, updates & upgrades, and downtime notifications regarding the service. +Not all of these will be posted on GitHub[^1], however they will always be posted in our Discord server. + +[^1]: We usually only post announcements on GitHub in the case of a serious incident. In that case, you'll likely see it at the top of this README file. Discord Server # Register -## How to Register > If you want a more visual guide, check out [this blog post](https://wdh.gg/tX3ghge). -- [Fork](https://github.com/is-a-dev/register/fork) this repository -- Add a new file called `your-domain-name.json` in the `domains` folder to register `your-domain-name.is-a.dev` -- [Read the documentation](https://docs.is-a.dev) +- [Fork](https://github.com/is-a-dev/register/fork) this repository. +- Add a new file called `your-domain-name.json` in the `domains` folder to register `your-domain-name.is-a.dev`. +- [Read the documentation](https://docs.is-a.dev). - If you are applying for NS records please read [this](#ns-records). -- Your pull request will be reviewed and merged. *Make sure to keep an eye on it incase we need you to make any changes!* -- After the pull request is merged, please allow up to 24 hours for the changes to propagate -- Enjoy your new `.is-a.dev` domain! Please consider leaving us a star ⭐️ to help support us! +- Your pull request will be reviewed and merged. *Make sure to keep an eye on it in case we need you to make any changes!* +- After the pull request is merged, please allow up to 24 hours for the changes to propagate. +- Enjoy your new `.is-a.dev` subdomain! Please consider leaving us a star ⭐️ to help support us! ### NS Records When applying for NS records, please be aware we already support a [wide range of DNS records](https://docs.is-a.dev/faq/#which-records-are-supported), so you may not need them. -In your PR, please explain why you need NS records, including examples, to help mitigate potential abuse. Refer to the [FAQ](https://docs.is-a.dev/faq/#who-can-use-ns-records) for guidelines on allowed usage. Good examples of NS record requests are [#17592](https://github.com/is-a-dev/register/pull/17592) and [#18026](https://github.com/is-a-dev/register/pull/18026). +In your PR, please explain why you need NS records, including examples, to help mitigate potential abuse. Refer to the [FAQ](https://docs.is-a.dev/faq/#who-can-use-ns-records) for guidelines on allowed usage. ***Pull requests adding NS records without sufficient reasoning will be closed.*** -> Also see: [Why are you so strict with NS records?](https://docs.is-a.dev/faq/#why-are-you-so-strict-with-ns-records) +> Also see: [Why are you so strict with NS records](https://docs.is-a.dev/faq/#why-are-you-so-strict-with-ns-records)? > [!NOTE] -> You can bypass these requirements[^1] by donating just $2 [here](https://wdh.gg/pvNCdvs), or via [GitHub Sponsors](https://wdh.gg/sponsor). As a thank-you, you'll also receive a special role in our [Discord server](https://discord.gg/is-a-dev-830872854677422150)! +> You can bypass these requirements[^2] by donating just $2 [here](https://wdh.gg/pvNCdvs), or via [GitHub Sponsors](https://wdh.gg/sponsor). As a thank you, you'll also receive a special role in our [Discord server](https://discord.gg/is-a-dev-830872854677422150)! > > If you donate, email william@is-a.dev or DM `@williamharrison` on Discord with your receipt and PR link. -[^1]: Requests deemed to be made with malicious intent may be denied, with a refund provided. +[^2]: Requests deemed to be made with malicious intent may be denied, with a refund provided. ## Report Abuse If you find any subdomains being used for abusive purposes, please report them by [creating an issue](https://github.com/is-a-dev/register/issues/new?assignees=&labels=report-abuse&projects=&template=report-abuse.md&title=Report+abuse) with the relevant evidence. diff --git a/dnsconfig.js b/dnsconfig.js index 2e056ad43..ae7905e0f 100644 --- a/dnsconfig.js +++ b/dnsconfig.js @@ -133,7 +133,6 @@ for (var subdomain in domains) { // Handle URL records if (domainData.record.URL) { records.push(A(subdomainName, IP("192.0.2.1"), CF_PROXY_ON)); - records.push(TXT("_redirect." + subdomainName, "\"" + domainData.record.URL + "\"")); } } diff --git a/domains/0xarchit.json b/domains/0xarchit.json index cc3476cd2..965e8b8ad 100644 --- a/domains/0xarchit.json +++ b/domains/0xarchit.json @@ -4,13 +4,9 @@ "email": "0xarchit@proton.me" }, "record": { - "MX": ["mx.zoho.in", "mx2.zoho.in", "mx3.zoho.in"], - "TXT": [ - "v=spf1 include:zohomail.in ~all", - "zoho-verification=zb94087787.zmverify.zoho.in", - "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCIIsclFhtL6ruTL5EClsNzTNxFf7jJBCyWJl+7VW9EXPt+x09GBVsYiaMEcLvNve0PGmuZKKVGv1H19OeJbZOAFg+kd4W7kgW9Bpw2oVklstLNZGPThu1Uv+UXgjpMIOQSwhzuWGo9yFn1k91eLkzqt2NvhMqmGVVqT9OibGwwowIDAQAB" - ], - "CNAME": "0xarchit.pages.dev" - }, - "proxied": true + "NS": [ + "brenna.ns.cloudflare.com", + "cartman.ns.cloudflare.com" + ] + } } diff --git a/domains/_discord.thangle.json b/domains/_discord.thangle.json deleted file mode 100644 index ed21f0026..000000000 --- a/domains/_discord.thangle.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "owner": { - "username": "ThangLe9999", - "discord": "872078632565215282", - "OWL": "eyJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwiYWxnIjoiUlNBLU9BRVAiLCJraWQiOiJaa1VsRmRqVThiUEstLXVVM2JJR09PVHFYYVFFS1ZINFVXOW53MTR6WTJnIn0.G5BtkuOaAUmFdixUP1IN4ZTmec-NZCllzsliK6q8sggJkBzasXefGfeEh6pBOiZ6ZkV2gr-GCdTN7LkP7QLPgLN6FglXac8BP1DSGDF3Lo8ULvrM-CpLUdeR0mqes6OQVvWdmPhZgVFGF3ItzDXQ7SqB6zrMbEWEwuZeg2KLHyPqvHsdrWLjzNpvVUwZRBuxicPyNTT70oMbPaOn3cvg4J_mVxNywnrIY5F34-T4tmiOEijsHmPwG2RzHsTCzC3cGYfNmokQtAsL0jhIMH4GzYdbTUsjDOrqbLdT-W2y33pQkeQuCjdf8KkeYCfacE0oWAZKFhrW2X0zJLYvGQBeuw.3qY1yT9H2x2WH2DePTziiw.PJvjWBGxfTgCKqZiHuAsRaUEdjld3XeMAw7NwX9P28VSFOS3-xsSiOvbLrCo1n1nTF-4g8EIRkkFJPn2P1T6YUDNuHVqbvnGg2wfhpfdSaM.yxghx67x9iGLMjDEKJdeAw" - }, - - "record": { - "TXT": "dh=8d98fb5fefbb1915e89d5dc43c9fdd9fa801557f" - } -} diff --git a/domains/_dnslink.daoch4n.json b/domains/_dnslink.daoch4n.json new file mode 100644 index 000000000..9e429a414 --- /dev/null +++ b/domains/_dnslink.daoch4n.json @@ -0,0 +1,11 @@ +{ + "description": "IPFS DNSLink integration for Web3-enabled video player", + "repo": "https://github.com/dtub3/DaokoTube", + "owner": { + "username": "daoch4n", + "email": "digitaimadness@pm.me" + }, + "record": { + "TXT": "/ipfs/bafybeictsmpmyy5cbtc52hr3awxgsl6gojyfgr3b23uudte4i7gmeof6om" + } +} \ No newline at end of file diff --git a/domains/_github-pages-challenge-riviox.galaxytweaks.riviox.json b/domains/_github-pages-challenge-riviox.galaxytweaks.riviox.json deleted file mode 100644 index 844946459..000000000 --- a/domains/_github-pages-challenge-riviox.galaxytweaks.riviox.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "owner": { - "username": "riviox", - "email": "rivioxyt@hotmail.com" - }, - "record": { - "TXT": "15bce163359555d636e6bd2cc5903f" - } -} diff --git a/domains/_minecraft._tcp.mc.3gee.json b/domains/_minecraft._tcp.mc.3gee.json index ca7a9f426..b717967fb 100644 --- a/domains/_minecraft._tcp.mc.3gee.json +++ b/domains/_minecraft._tcp.mc.3gee.json @@ -9,7 +9,7 @@ "priority": 0, "weight": 5, "port": 32279, - "target": "gold.magmanode.com" + "target": "mc.3gee.is-a.dev" } ] } diff --git a/domains/_vercel.akshtt.json b/domains/_vercel.akshtt.json index 0a681d05c..e9ab85e92 100644 --- a/domains/_vercel.akshtt.json +++ b/domains/_vercel.akshtt.json @@ -6,7 +6,7 @@ }, "record": { - "TXT": "vc-domain-verify=qr.akshtt.is-a.dev,827e057fc258ab24d42c" + "TXT": "vc-domain-verify=akshtt.is-a.dev,456706754e19d95b29f0" } } - \ No newline at end of file + diff --git a/domains/_vercel.rith.json b/domains/_vercel.rith.json new file mode 100644 index 000000000..f165ccda7 --- /dev/null +++ b/domains/_vercel.rith.json @@ -0,0 +1,9 @@ +{ + "owner": { + "username": "Rithb898", + "email": "rithb2004@gmail.com" + }, + "record": { + "TXT": "vc-domain-verify=rith.is-a.dev,9233c12a34113300d9af" + } +} \ No newline at end of file diff --git a/domains/akshtt.json b/domains/akshtt.json index 1768db9b2..2f39cc293 100644 --- a/domains/akshtt.json +++ b/domains/akshtt.json @@ -5,6 +5,6 @@ "discord": "1056531806763102218" }, "record": { - "A": ["173.208.244.13"] + "A": ["76.76.21.21"] } } diff --git a/domains/angel.json b/domains/angel.json deleted file mode 100644 index 2b8a5383d..000000000 --- a/domains/angel.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "owner": { - "username": "chewieleaf", - "email": "cchirrpy@outlook.com" - }, - "record": { - "TXT": "dh=440ef941b9b55391f86cf985e87ed861fc6e9512" - } -} diff --git a/domains/api.0xarchit.json b/domains/api.0xarchit.json deleted file mode 100644 index 4a5b7a150..000000000 --- a/domains/api.0xarchit.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "owner": { - "username": "0xarchit", - "email": "0xarchit@proton.me" - }, - "record": { - "CNAME": "status.cron-job.org" - } -} diff --git a/domains/api.karyakarsa.willo.json b/domains/api.karyakarsa.willo.json deleted file mode 100644 index c70b3e330..000000000 --- a/domains/api.karyakarsa.willo.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "description": "api for karyakarsa", - "repo": "https://github.com/WilloIzCitron/karyakarsa-rest-api", - "owner": { - "username": "WilloIzCitron", - "twitter": "willoizcitron" - }, - "record": { - "CNAME": "karyakarsa-rest-api-production.up.railway.app" - } -} diff --git a/domains/auth.sign.alvin.json b/domains/auth.sign.alvin.json new file mode 100644 index 000000000..c279d0ff2 --- /dev/null +++ b/domains/auth.sign.alvin.json @@ -0,0 +1,9 @@ +{ + "owner": { + "username": "alvinsjoy", + "discord": "825382504353234954" + }, + "record": { + "TXT": "Created to allow nested subdomains to exist." + } +} diff --git a/domains/cdn.akk1to.json b/domains/cdn.akk1to.json new file mode 100644 index 000000000..b6723a57d --- /dev/null +++ b/domains/cdn.akk1to.json @@ -0,0 +1,10 @@ +{ + "owner": { + "username": "akk1to", + "email": "akk1to.dev@gmail.com", + "discord": "727497287777124414" + }, + "record": { + "TXT": "Created to allow nested subdomains to exist." + } +} diff --git a/domains/cedrickfeze.json b/domains/cedrickfeze.json deleted file mode 100644 index 8585ed122..000000000 --- a/domains/cedrickfeze.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "owner": { - "username": "cedrickdev", - "email": "cedrickv.tchindaf@hes-so.ch" - }, - "record": { - "CNAME": "cedrickfeze.vercel.app" - } -} diff --git a/domains/chewieleaf.json b/domains/chewieleaf.json deleted file mode 100644 index 699471137..000000000 --- a/domains/chewieleaf.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "owner": { - "username": "chewieleaf", - "email": "cchirrpy@outlook.com", - "discord": "898255050592366642" - }, - "record": { - "TXT": "dh=440ef941b9b55391f86cf985e87ed861fc6e9512" - } -} diff --git a/domains/coder.json b/domains/coder.json new file mode 100644 index 000000000..d74f24d92 --- /dev/null +++ b/domains/coder.json @@ -0,0 +1,12 @@ +{ + "owner": { + "username": "turbomaster95", + "email": "devamidhun.3c.kmbvm@gmail.com" + }, + "record": { + "NS": [ + "aria.ns.cloudflare.com", + "leonard.ns.cloudflare.com" + ] + } +} diff --git a/domains/colix.json b/domains/colix.json deleted file mode 100644 index e9f5291a9..000000000 --- a/domains/colix.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "owner": { - "username": "YeahhColix", - "email": "yeahhcolix@gmail.com" - }, - "record": { - "CNAME": "colix.pages.dev" - } -} diff --git a/domains/daoch4n.json b/domains/daoch4n.json new file mode 100644 index 000000000..2f3e71db6 --- /dev/null +++ b/domains/daoch4n.json @@ -0,0 +1,11 @@ +{ + "description": "Web3-enabled video player for Daoko MVs", + "repo": "https://github.com/dtub3/DaokoTube", + "owner": { + "username": "daoch4n", + "email": "digitaimadness@pm.me" + }, + "record": { + "A": ["75.2.60.5"] + } +} \ No newline at end of file diff --git a/domains/denisklimenko.json b/domains/denisklimenko.json deleted file mode 100644 index b7d688c90..000000000 --- a/domains/denisklimenko.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "owner": { - "username": "DenisKlimenko", - "email": "denis.klimenko.92@gmail.com" - }, - "record": { - "NS": ["destiny.ns.cloudflare.com", "kirk.ns.cloudflare.com"] - } -} diff --git a/domains/eternasuno.json b/domains/eternasuno.json new file mode 100644 index 000000000..1484a2bad --- /dev/null +++ b/domains/eternasuno.json @@ -0,0 +1,11 @@ +{ + "description": "Blog for eternasuno", + "repo": "https://github.com/eternasuno/eternasuno.github.io", + "owner": { + "username": "eternasuno", + "email": "eternasuno@gmail.com" + }, + "record": { + "CNAME": "eternasuno.github.io" + } +} diff --git a/domains/exrand.json b/domains/exrand.json index 5d3190765..ec9fc953f 100644 --- a/domains/exrand.json +++ b/domains/exrand.json @@ -1,9 +1,9 @@ { "owner": { - "username": "exrand", + "username": "randomyaps", "email": "totallynota903@gmail.com" }, "record": { - "A": ["207.180.248.6"] + "A": ["212.91.26.79"] } } diff --git a/domains/exx.json b/domains/exx.json deleted file mode 100644 index 977561c23..000000000 --- a/domains/exx.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "owner": { - "username": "xqxyzl", - "email": "exemailhelp+3@gmail.com" - }, - "record": { - "TXT": "_discord.exx.is-a.dev" - } -} diff --git a/domains/faultysden.json b/domains/faultysden.json deleted file mode 100644 index b2c3cdc94..000000000 --- a/domains/faultysden.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "owner": { - "username": "FaultyFaulty-glitch", - "email": "faultywindows+github@gmail.com", - "discord": "1041028534690386051" - }, - "record": { - "TXT": "google-site-verification=ix1jczu2q87igryc4eaexvdv1vrzjxolu14sjfpsnko" - } -} diff --git a/domains/interstellaros.json b/domains/interstellaros.json deleted file mode 100644 index cf559db57..000000000 --- a/domains/interstellaros.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "owner": { - "username": "jacksoncraft859", - "email": "pollardjackson@outlook.com" - }, - "record": { - "TXT": "replit-verify=ac38945f-f53b-4b1b-980d-e2a1d64175c6" - } -} diff --git a/domains/jeielmiranda.json b/domains/jeielmiranda.json index 1f38f558f..0faaba1cb 100644 --- a/domains/jeielmiranda.json +++ b/domains/jeielmiranda.json @@ -1,11 +1,11 @@ { "description": "Personal subdomain", - "repo": "https://github.com/Jetrom17/jetrom17.github.io", + "repo": "https://github.com/Jeiel0rbit/Jeiel0rbit.github.io", "owner": { - "username": "Jetrom17", + "username": "Jeiel0rbit", "email": "jeiel@duck.com" }, "record": { - "CNAME": "jetrom17.github.io" + "CNAME": "Jeiel0rbit.github.io" } } diff --git a/domains/katidoki.json b/domains/katidoki.json new file mode 100644 index 000000000..54be96678 --- /dev/null +++ b/domains/katidoki.json @@ -0,0 +1,9 @@ +{ + "owner": { + "username": "hitoshi-okada", + "email": "okada@katidoki.com" + }, + "record": { + "CNAME": "hitoshi-okada.github.io" + } +} diff --git a/domains/luoxiaohei.json b/domains/luoxiaohei.json deleted file mode 100644 index 1ef5b4c72..000000000 --- a/domains/luoxiaohei.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "description": "🌸 This is nicer with it's own site of discord app named Luo Xiaohei", - "repo": "https://github.com/lxhapp/lxhapp.github.io", - "owner": { - "username": "Melishy", - "email": "themelishy@outlook.com", - "twitter": "themelishy", - "discord": "1053012080812359750" - }, - "record": { - "CNAME": "lxhapp.github.io" - } -} diff --git a/domains/mc.3gee.json b/domains/mc.3gee.json new file mode 100644 index 000000000..754a634a0 --- /dev/null +++ b/domains/mc.3gee.json @@ -0,0 +1,9 @@ +{ + "owner": { + "username": "3geETR", + "email": "egemacun@gmail.com" + }, + "record": { + "CNAME": "gold.magmanode.com" + } +} diff --git a/domains/reejit.json b/domains/reejit.json new file mode 100644 index 000000000..3a5d8a374 --- /dev/null +++ b/domains/reejit.json @@ -0,0 +1,9 @@ +{ + "owner": { + "username": "reejit", + "email": "guardiansofspartax@gmail.com" + }, + "record": { + "NS": ["gloria.ns.cloudflare.com", "west.ns.cloudflare.com"] + } +} diff --git a/domains/ritesh.json b/domains/ritesh.json new file mode 100644 index 000000000..17521b68f --- /dev/null +++ b/domains/ritesh.json @@ -0,0 +1,11 @@ +{ + "description": "For personal portfolio website.", + "repo": "https://github.com/riteshsargam/register", + "owner": { + "username": "riteshsargam", + "email": "ritesh.sargam00@gmail.com" + }, + "record": { + "CNAME": "riteshsargam.github.io" + } +} diff --git a/domains/rith.json b/domains/rith.json new file mode 100644 index 000000000..15ebde14e --- /dev/null +++ b/domains/rith.json @@ -0,0 +1,9 @@ +{ + "owner": { + "username": "Rithb898", + "email": "rithb2004@gmail.com" + }, + "record": { + "CNAME": "rith-portfolio-next-js.vercel.app" + } +} \ No newline at end of file diff --git a/domains/thangle.json b/domains/thangle.json deleted file mode 100644 index f3b5eea08..000000000 --- a/domains/thangle.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "owner": { - "username": "thangle9999", - "discord": "thangle9999" - }, - "record": { - "TXT": "vc-domain-verify=thangle.is-a.dev,bd6f80914ee2949ce900" - } -} diff --git a/domains/thinhnguyen.json b/domains/thinhnguyen.json new file mode 100644 index 000000000..4023b9961 --- /dev/null +++ b/domains/thinhnguyen.json @@ -0,0 +1,9 @@ +{ + "owner": { + "username": "thinhdnn", + "email": "nguyenvanthinh.dnn@gmail.com" + }, + "record": { + "A": ["152.69.196.244"] + } +} diff --git a/domains/vulehuan.json b/domains/vulehuan.json new file mode 100644 index 000000000..4676646d1 --- /dev/null +++ b/domains/vulehuan.json @@ -0,0 +1,10 @@ +{ + "description": "vulehuan.is-a.dev : This is my personal notebook", + "owner": { + "username": "vulehuan", + "email": "vulehuan@gmail.com" + }, + "record": { + "URL": "https://vulehuan.com" + } +} diff --git a/domains/w.json b/domains/w.json deleted file mode 100644 index 55dcef36b..000000000 --- a/domains/w.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "owner": { - "username": "wdhdev", - "email": "william@is-a.dev" - }, - "record": { - "URL": "https://william.is-a.dev" - }, - "redirect_config": { - "redirect_paths": true - } -} diff --git a/domains/www.0xarchit.json b/domains/www.0xarchit.json deleted file mode 100644 index 2283aae72..000000000 --- a/domains/www.0xarchit.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "owner": { - "username": "0xarchit", - "email": "mail@0xarchit.is-a.dev" - }, - "record": { - "URL": "https://0xarchit.is-a.dev" - } -} diff --git a/domains/yu.json b/domains/yu.json new file mode 100644 index 000000000..47b754fa2 --- /dev/null +++ b/domains/yu.json @@ -0,0 +1,9 @@ +{ + "owner": { + "username": "yunexiz", + "discord": "1040303561847881729" + }, + "record": { + "CNAME": "redirecting-for-yu.pages.dev" + } +} diff --git a/domains/zmail._domainkey.0xarchit.json b/domains/zmail._domainkey.0xarchit.json deleted file mode 100644 index 9e1d85a52..000000000 --- a/domains/zmail._domainkey.0xarchit.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "owner": { - "username": "0xarchit", - "email": "0xarchit@proton.me" - }, - "record": { - "TXT": "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCIIsclFhtL6ruTL5EClsNzTNxFf7jJBCyWJl+7VW9EXPt+x09GBVsYiaMEcLvNve0PGmuZKKVGv1H19OeJbZOAFg+kd4W7kgW9Bpw2oVklstLNZGPThu1Uv+UXgjpMIOQSwhzuWGo9yFn1k91eLkzqt2NvhMqmGVVqT9OibGwwowIDAQAB" - } -} diff --git a/tests/domains.test.js b/tests/domains.test.js index 9df9598f4..43395fcda 100644 --- a/tests/domains.test.js +++ b/tests/domains.test.js @@ -24,26 +24,31 @@ function getDomainData(subdomain) { t("Nested subdomains should not exist without a parent subdomain", (t) => { files.forEach((file) => { const subdomain = file.replace(/\.json$/, ""); - const parentDomain = subdomain.split(".").reverse()[0]; + const parts = subdomain.split("."); + + for (let i = 1; i < parts.length; i++) { + const parent = parts.slice(i).join("."); + if (parent.startsWith("_")) continue; - if (parentDomain !== subdomain) { t.true( - parentDomain && files.includes(`${parentDomain}.json`), - `${file}: Parent subdomain does not exist` + files.includes(`${parent}.json`), + `${file}: Parent subdomain "${parent}" does not exist` ); } }); }); -t("Nested subdomains should not exist if the parent subdomain has NS records", (t) => { +t("Nested subdomains should not exist if any parent subdomain has NS records", (t) => { files.forEach((file) => { const subdomain = file.replace(/\.json$/, ""); - const parentDomain = subdomain.split(".").reverse()[0]; + const parts = subdomain.split("."); - if (parentDomain !== subdomain) { - const parentData = getDomainData(parentDomain); + for (let i = 1; i < parts.length; i++) { + const parent = parts.slice(i).join("."); + if (parent.startsWith("_") || !files.includes(`${parent}.json`)) continue; + const parentData = getDomainData(parent); - t.true(!parentData.record.NS, `${file}: Parent subdomain has NS records`); + t.true(!parentData.record.NS, `${file}: Parent subdomain "${parent}" has NS records`); } }); }); diff --git a/tests/records.test.js b/tests/records.test.js index 52fb1f677..573e0604e 100644 --- a/tests/records.test.js +++ b/tests/records.test.js @@ -216,7 +216,10 @@ function validateRecordValues(t, data, file) { Number.isInteger(record.matchingType) && record.matchingType >= 0 && record.matchingType <= 255, `${file}: Invalid matchingType for ${key} at index ${idx}` ); - t.true(isValidHexadecimal(record.certificate), `${file}: Invalid certificate for ${key} at index ${idx}`); + t.true( + isValidHexadecimal(record.certificate), + `${file}: Invalid certificate for ${key} at index ${idx}` + ); } }); } @@ -310,3 +313,20 @@ t("All files should have valid record types", (t) => { t.pass(); }); + +t("Root subdomains should have at least one usable record", (t) => { + const usableRecordTypes = ["A", "AAAA", "CNAME", "MX", "NS", "URL"]; + + files.forEach((file) => { + const subdomain = file.replace(/\.json$/, ""); + if (subdomain.includes(".") || subdomain.startsWith("_")) return; + + const data = getDomainData(file); + const recordKeys = Object.keys(data.record); + + t.true( + usableRecordTypes.some((record) => recordKeys.includes(record)), + `${file}: Root subdomains must have at least one A, AAAA, CNAME, MX, NS, or URL record` + ); + }); +});