Skip to content

Commit ac8ae68

Browse files
authored
Add script to create DNS records with DeSEC API
This script checks for the 'jq' command, installs it if missing, retrieves the server's IPv4 address, generates a random subdomain, and creates a DNS record using the DeSEC API.
1 parent 6b8e6a2 commit ac8ae68

1 file changed

Lines changed: 28 additions & 0 deletions

File tree

free-domain.sh

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#!/bin/bash
2+
3+
if ! command -v jq &> /dev/null; then
4+
apt install jq -y
5+
fi
6+
SERVER_IPV4=$(curl -s -4 icanhazip.com)
7+
DESEC_DOMAIN="manager.firewallfalcon.qzz.io"
8+
DESEC_TOKEN="V55cFY8zTictLCPfviiuX5DHjs15"
9+
RANDOM_SUBDOMAIN="vps-$(tr -dc a-z0-9 < /dev/urandom | head -c 8)"
10+
FULL_DOMAIN="$RANDOM_SUBDOMAIN.$DESEC_DOMAIN"
11+
HAS_IPV6="false"
12+
API_DATA=$(printf '[{"subname": "%s", "type": "A", "ttl": 3600, "records": ["%s"]}]' "$RANDOM_SUBDOMAIN" "$SERVER_IPV4")
13+
CREATE_RESPONSE=$(curl -s -w "%{http_code}" -X POST "https://desec.io/api/v1/domains/$DESEC_DOMAIN/rrsets/" \
14+
-H "Authorization: Token $DESEC_TOKEN" -H "Content-Type: application/json" \
15+
--data "$API_DATA")
16+
HTTP_CODE=${CREATE_RESPONSE: -3}
17+
RESPONSE_BODY=${CREATE_RESPONSE:0:${#CREATE_RESPONSE}-3}
18+
if [[ "$HTTP_CODE" -ne 201 ]]; then
19+
echo -e "${C_RED}❌ Failed to create DNS records. API returned HTTP $HTTP_CODE.${C_RESET}"
20+
if ! echo "$RESPONSE_BODY" | jq . > /dev/null 2>&1; then
21+
echo "Raw Response: $RESPONSE_BODY"
22+
else
23+
echo "Response: $RESPONSE_BODY" | jq
24+
fi
25+
return 1
26+
fi
27+
echo -e "\n${C_GREEN}✅ Successfully created domain: ${C_YELLOW}$FULL_DOMAIN${C_RESET}"
28+
echo -e "\nWait 3 Minutes For Setting Domain"

0 commit comments

Comments
 (0)