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.
# 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`
+ );
+ });
+});