EverydayTech Platform - Developer Reference
Complete Source Code Documentation - All Applications
Loading...
Searching...
No Matches
create_wildcard_demo_cname.js
Go to the documentation of this file.
1// Script to create a wildcard CNAME for *.demo.everydaytech.au pointing to your Cloudflare Tunnel hostname
2require('dotenv').config();
3const axios = require('axios');
4
5const CLOUDFLARE_BASE_URL = process.env.CLOUDFLARE_BASE_URL || 'https://api.cloudflare.com/client/v4';
6const CLOUDFLARE_ZONE_ID = process.env.CLOUDFLARE_ZONE_ID;
7const CLOUDFLARE_TOKEN = process.env.CLOUDFLARE_TOKEN;
8const ZONE_NAME = process.env.ZONE_NAME || 'everydaytech.au';
9const TUNNEL_HOSTNAME = '52106555-6961-4b4d-bb84-1026b4892bec.cfargotunnel.com';
10
11/**
12 *
13 */
14async function createWildcardCNAME() {
15 if (!CLOUDFLARE_ZONE_ID || !CLOUDFLARE_TOKEN) {
16 throw new Error('Cloudflare credentials not configured');
17 }
18
19 const wildcardName = `*.demo.${ZONE_NAME}`;
20 const headers = {
21 Authorization: `Bearer ${CLOUDFLARE_TOKEN}`,
22 'Content-Type': 'application/json'
23 };
24
25 // Check for existing record
26 const listUrl = `${CLOUDFLARE_BASE_URL}/zones/${CLOUDFLARE_ZONE_ID}/dns_records?type=CNAME&name=${wildcardName}`;
27 const res = await axios.get(listUrl, { headers });
28 if (res.data.result && res.data.result.length > 0) {
29 console.log(`Wildcard CNAME for ${wildcardName} already exists.`);
30 return;
31 }
32
33 // Create wildcard CNAME
34 const createUrl = `${CLOUDFLARE_BASE_URL}/zones/${CLOUDFLARE_ZONE_ID}/dns_records`;
35 const payload = {
36 type: 'CNAME',
37 name: wildcardName,
38 content: TUNNEL_HOSTNAME,
39 ttl: 120,
40 proxied: true
41 };
42
43 const createRes = await axios.post(createUrl, payload, { headers });
44 if (createRes.data.success) {
45 console.log(`✅ Created wildcard CNAME for ${wildcardName} → ${TUNNEL_HOSTNAME}`);
46 } else {
47 console.error('❌ Failed to create wildcard CNAME:', createRes.data.errors);
48 }
49}
50
51createWildcardCNAME().catch(err => {
52 console.error('Error:', err.message);
53 process.exit(1);
54});