diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md
index e4efd5e4da..a6f78a530f 100644
--- a/.github/copilot-instructions.md
+++ b/.github/copilot-instructions.md
@@ -45,7 +45,7 @@ Every file must be valid JSON and follow this exact structure from https://docs.
**Critical rules (enforce strictly):**
- `"owner"."username"` **MUST** exactly match the GitHub username of the person who opened the PR, **unless** the PR author is a trusted maintainer listed in `util/trusted.json`.
- Trusted maintainers: STICKnoLOGIC, DEV-DIBSTER, iostpa, orangci, Stef-00012, satr14washere, wdhdev.
+ Trusted maintainers: STICKnoLOGIC, DEV-DIBSTER, iostpa, orangci, Stef-DP, satr14washere, wdhdev.
- `"records"` is required (note: it must be `"records"`, never `"record"`).
- **CNAME records cannot be used with any other records and vice versa.** Only one record type is allowed if CNAME is present.
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index e94fd11087..826f192592 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -10,6 +10,8 @@ on:
- "tests/*"
- "util/*"
- ".github/workflows/ci.yml"
+ - "package.json"
+ - "package-lock.json"
workflow_dispatch:
diff --git a/README.md b/README.md
index 63f51856c8..7cb235a0a7 100644
--- a/README.md
+++ b/README.md
@@ -17,6 +17,13 @@
is-a.dev is a service that allows developers to get a sweet-looking .is-a.dev subdomain for their personal websites.
+> [!TIP]
+> We have just launched another free subdomain service for developers, called [**`is-a.bot`**](https://is-a.bot)!
+>
+> Claim your `.is-a.bot` subdomain for free, before it's too late!
+>
+> **GitHub** — [**free-domains/is-a.bot**](https://github.com/free-domains/is-a.bot)
+
---
## Announcements
diff --git a/domains/_discord.rusky.json b/domains/_discord.rusky.json
new file mode 100644
index 0000000000..5893125593
--- /dev/null
+++ b/domains/_discord.rusky.json
@@ -0,0 +1,8 @@
+{
+ "owner": {
+ "username": "ruskydev"
+ },
+ "records": {
+ "TXT": "dh=cb120c45e7e8c3ff2e65938b1e2fdf9d2f18707f"
+ }
+}
diff --git a/domains/_github-pages-challenge-patelnaeem7.naeem-patel.json b/domains/_github-pages-challenge-patelnaeem7.naeem-patel.json
new file mode 100644
index 0000000000..1e8d0a3ef5
--- /dev/null
+++ b/domains/_github-pages-challenge-patelnaeem7.naeem-patel.json
@@ -0,0 +1,9 @@
+{
+ "owner": {
+ "username": "patelnaeem7",
+ "email": "naeem.patel.dev@gmail.com"
+ },
+ "records": {
+ "TXT": "02a5d526f08626c4a17ee75fe8c185"
+ }
+}
diff --git a/domains/_railway-verify.marwaabubaker.json b/domains/_railway-verify.marwaabubaker.json
new file mode 100644
index 0000000000..721f923e1f
--- /dev/null
+++ b/domains/_railway-verify.marwaabubaker.json
@@ -0,0 +1,9 @@
+{
+ "owner": {
+ "username": "5marvv",
+ "email": "safa4marwa5@gmail.com"
+ },
+ "records": {
+ "TXT": "railway-verify=28a5353c309efdc1a66b67d3008701c3631ac4dd2a0168a6365f6d1ca334e35a"
+ }
+}
diff --git a/domains/_vercel.arem.json b/domains/_vercel.arem.json
new file mode 100644
index 0000000000..1c4a88500f
--- /dev/null
+++ b/domains/_vercel.arem.json
@@ -0,0 +1,9 @@
+{
+ "owner": {
+ "username": "Arem-ee",
+ "email": "toromadeadesina@gmail.com"
+ },
+ "records": {
+ "TXT": "vc-domain-verify=arem.is-a.dev,2ed19320fd195ba3dd09"
+ }
+}
diff --git a/domains/_vercel.piyush.json b/domains/_vercel.piyush.json
new file mode 100644
index 0000000000..f6c585d53b
--- /dev/null
+++ b/domains/_vercel.piyush.json
@@ -0,0 +1,9 @@
+{
+ "owner": {
+ "username": "Piyush-Sagar",
+ "email": "sagarpiyush.27@gmail.com"
+ },
+ "records": {
+ "TXT": "vc-domain-verify=piyush.is-a.dev,3332d110f16d6401a6ce"
+ }
+}
\ No newline at end of file
diff --git a/domains/_vercel.rusky.json b/domains/_vercel.rusky.json
new file mode 100644
index 0000000000..7c84829d1c
--- /dev/null
+++ b/domains/_vercel.rusky.json
@@ -0,0 +1,9 @@
+{
+ "owner": {
+ "username": "ruskydev",
+ "email": "iamayaanalee@gmail.com"
+ },
+ "records": {
+ "TXT": "vc-domain-verify=rusky.is-a.dev,79b8189df5b481e60e4c"
+ }
+}
diff --git a/domains/alwaysboner.json b/domains/alwaysboner.json
new file mode 100644
index 0000000000..632ad34901
--- /dev/null
+++ b/domains/alwaysboner.json
@@ -0,0 +1,11 @@
+{
+ "owner": {
+ "username": "alwaysboner",
+ "email": "slimmestpickings@gmail.com"
+ },
+ "records": {
+ "A": [
+ "20.127.232.249"
+ ]
+ }
+}
diff --git a/domains/arem.json b/domains/arem.json
new file mode 100644
index 0000000000..a437432063
--- /dev/null
+++ b/domains/arem.json
@@ -0,0 +1,9 @@
+{
+ "owner": {
+ "username": "Arem-ee",
+ "email": "toromadeadesina@gmail.com"
+ },
+ "records": {
+ "A": ["216.198.79.1"]
+ }
+}
diff --git a/domains/austin.json b/domains/austin.json
new file mode 100644
index 0000000000..c254bc08bb
--- /dev/null
+++ b/domains/austin.json
@@ -0,0 +1,11 @@
+{
+ "description": "Austin Munene - Developer Portfolio",
+ "repo": "https://github.com/AustinMunene/Austin.is-a.dev",
+ "owner": {
+ "username": "AustinMunene",
+ "email": "austinmunesh@gmail.com"
+ },
+ "records": {
+ "CNAME": "austinmunene.netlify.app"
+ }
+}
diff --git a/domains/gojo.json b/domains/gojo.json
index 41614189a4..e936e80eaf 100644
--- a/domains/gojo.json
+++ b/domains/gojo.json
@@ -6,7 +6,22 @@
"records": {
"CNAME": "azanbroib-hash.github.io",
"TXT": [
- "zoho-verification=zb65283090.zmverify.zoho.eu"
+ "zoho-verification=zb65283090.zmverify.zoho.eu",
+ "v=spf1 include:zohomail.eu ~all"
+ ],
+ "MX": [
+ {
+ "target": "mx.zoho.eu",
+ "priority": 10
+ },
+ {
+ "target": "mx2.zoho.eu",
+ "priority": 20
+ },
+ {
+ "target": "mx3.zoho.eu",
+ "priority": 50
+ }
]
},
"proxied": true
diff --git a/domains/hasnatibrahim.json b/domains/hasnatibrahim.json
new file mode 100644
index 0000000000..97b69e4fdc
--- /dev/null
+++ b/domains/hasnatibrahim.json
@@ -0,0 +1,10 @@
+{
+ "description": "Portfolio of Hasnat Ibrahim",
+ "owner": {
+ "username": "hasnatibrahim10-sys",
+ "email": "hasnatibrahim10@gmail.com"
+ },
+ "records": {
+ "CNAME": "hasnat-ibrahim.pages.dev"
+ }
+}
diff --git a/domains/joe50097.json b/domains/joe50097.json
index 902e88da00..c087e881d4 100644
--- a/domains/joe50097.json
+++ b/domains/joe50097.json
@@ -1,7 +1,7 @@
{
"owner": {
"username": "Joe50097",
- "email": "me@joe50097.is-a.dev"
+ "email": "me@joe50097.dev"
},
"records": {
"MX": ["mx01.mail.icloud.com", "mx02.mail.icloud.com"],
diff --git a/domains/novastar.json b/domains/novastar.json
new file mode 100644
index 0000000000..b7d3128e59
--- /dev/null
+++ b/domains/novastar.json
@@ -0,0 +1,9 @@
+{
+ "owner": {
+ "username": "novastardev",
+ "email": "novastar.dev1@gmail.com"
+ },
+ "records": {
+ "CNAME": "novastar-dev.vercel.app"
+ }
+}
diff --git a/domains/phoenix.json b/domains/phoenix.json
new file mode 100644
index 0000000000..c8c6e7363f
--- /dev/null
+++ b/domains/phoenix.json
@@ -0,0 +1,9 @@
+{
+ "owner": {
+ "username": "mj-praba",
+ "email": "manojprabaharj@gmail.com"
+ },
+ "records": {
+ "CNAME": "mj-praba.github.io"
+ }
+}
\ No newline at end of file
diff --git a/domains/piyush.json b/domains/piyush.json
new file mode 100644
index 0000000000..5af78d9f68
--- /dev/null
+++ b/domains/piyush.json
@@ -0,0 +1,11 @@
+{
+ "owner": {
+ "username": "Piyush-Sagar",
+ "email": "sagarpiyush.27@gmail.com"
+ },
+ "records": {
+ "A": [
+ "216.198.79.1"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/domains/rusky.json b/domains/rusky.json
new file mode 100644
index 0000000000..7dd0d3b0ec
--- /dev/null
+++ b/domains/rusky.json
@@ -0,0 +1,9 @@
+{
+ "owner": {
+ "username": "ruskydev",
+ "email": "iamayaanalee@gmail.com"
+ },
+ "records": {
+ "A": ["216.198.79.1"]
+ }
+}
diff --git a/domains/sig1._domainkey.joe50097.json b/domains/sig1._domainkey.joe50097.json
index 79803016f8..77c16a25ce 100644
--- a/domains/sig1._domainkey.joe50097.json
+++ b/domains/sig1._domainkey.joe50097.json
@@ -1,7 +1,7 @@
{
"owner": {
"username": "Joe50097",
- "email": "me@joe50097.is-a.dev"
+ "email": "me@joe50097.dev"
},
"records": {
"CNAME": "sig1.dkim.joe50097.is-a.dev.at.icloudmailadmin.com"
diff --git a/domains/tatpow.json b/domains/tatpow.json
new file mode 100644
index 0000000000..d95f0b2c90
--- /dev/null
+++ b/domains/tatpow.json
@@ -0,0 +1,8 @@
+{
+ "owner": {
+ "username": "tatpow"
+ },
+ "records": {
+ "CNAME": "tatpow.github.io"
+ }
+}
diff --git a/domains/tuliodutra27.json b/domains/tuliodutra27.json
new file mode 100644
index 0000000000..9b934262b1
--- /dev/null
+++ b/domains/tuliodutra27.json
@@ -0,0 +1,9 @@
+{
+ "owner": {
+ "username": "tuliodutra27",
+ "email": "tuliodutra27@gmail.com"
+ },
+ "records": {
+ "CNAME": "tuliodutra27.github.io"
+ }
+}
diff --git a/domains/ukasha167.json b/domains/ukasha167.json
new file mode 100644
index 0000000000..30b70ac241
--- /dev/null
+++ b/domains/ukasha167.json
@@ -0,0 +1,9 @@
+{
+ "owner": {
+ "username": "ukasha167",
+ "email": "ukashaanwar167@gmail.com"
+ },
+ "records": {
+ "CNAME": "ukasha167.github.io"
+ }
+}
diff --git a/domains/will.json b/domains/will.json
deleted file mode 100644
index 340e2bfa92..0000000000
--- a/domains/will.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "owner": {
- "username": "wdhdev",
- "email": "william@is-a.dev"
- },
- "records": {
- "URL": "https://wharrison.com.au"
- }
-}
diff --git a/domains/zmail._domainkey.gojo.json b/domains/zmail._domainkey.gojo.json
new file mode 100644
index 0000000000..089fe76ff4
--- /dev/null
+++ b/domains/zmail._domainkey.gojo.json
@@ -0,0 +1,9 @@
+{
+ "owner": {
+ "username": "azanbroib-hash",
+ "email": "piko98631@gmail.com"
+ },
+ "records": {
+ "TXT": "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCQyJbxrl3TBlfmFDgLvzE5WG08DoeOF+9WaiEEkNicQ4jv3NH/ql3STTzb85BBwLlKiUQ7MNahl1jnxu9SD0QTjO3hIysMTJB/oIbLqRZeteTZM1QmJpAJCrRUZES/lxXD4Cv1gTHgMAgWZBDao7YThEWDIJ3ObOVL769PUZYs4wIDAQAB"
+ }
+}
diff --git a/tests/proxy.test.js b/tests/proxy.test.js
index 8fc60f9d46..2cc601ec88 100644
--- a/tests/proxy.test.js
+++ b/tests/proxy.test.js
@@ -50,7 +50,7 @@ t("Domains with proxy enabled must have at least one proxy-able record", (t) =>
});
});
-const disallowedRecords = [
+const unproxyable = [
{
type: "CNAME",
value: "*.onrender.com"
@@ -62,7 +62,7 @@ t("Domains with specific records must not have proxy enabled", (t) => {
const data = getDomainData(file);
if (data.proxied) {
- disallowedRecords.forEach((record) => {
+ unproxyable.forEach((record) => {
let recordExists = false;
if (!data.records[record.type]) {
diff --git a/util/internal.json b/util/internal.json
index 33a1b3bd1f..4481442486 100644
--- a/util/internal.json
+++ b/util/internal.json
@@ -7,6 +7,8 @@
"ns2",
"ns3",
"ns4",
+ "ns5",
+ "ns6",
"raw",
"www"
]
diff --git a/util/reserved.json b/util/reserved.json
index 987aceea6c..d54a5702ec 100644
--- a/util/reserved.json
+++ b/util/reserved.json
@@ -79,8 +79,6 @@
"notifications",
"ns",
"ns0",
- "ns5",
- "ns6",
"ns7",
"ns8",
"ns9",
diff --git a/util/trusted.json b/util/trusted.json
index 8ac2f289ec..a7d185cc66 100644
--- a/util/trusted.json
+++ b/util/trusted.json
@@ -12,7 +12,7 @@
"id": 90866414
},
{
- "username": "Stef-00012",
+ "username": "Stef-DP",
"id": 81536172
},
{