EverydayTech Platform - Developer Reference
Complete Source Code Documentation - All Applications
Loading...
Searching...
No Matches
scripts Directory Reference

Files

 
add-missing-invoice-line-items.js
 
backfill_domain_notifications.js
 
bulk-update-nameservers.js
 
check-meshes.js
 
cleanup_old_agents.js
 
create-test-portal-user.js
 
create_wildcard_demo_cname.js
 
ensure_demo_a_record.js
 
meshcentral-webhook-monitor.js
 
migrate-customer-portal.js
 
migrate-pax8-tables.js
 
migrate_add_platform.js
 
pax8_sync_standalone.js
 
sample-domains.json
 
seed_cloudflare_dns.js
 
sync_pax8_direct.js
 
test-jwt.js
 
test-meshcentral-connection.js
 
test-token-flow.js
 
test_moniker.js
 
test_pax8_sync.js
 
test_register.js
 
trigger-tenant-sync.js
 
update_subdomain_cnames.js

Detailed Description

Nameserver Management Scripts

Bulk Nameserver Updater

Update nameservers for multiple domains across different registrars (Moniker, eNom).

Prerequisites

  • Node.js installed
  • Environment variables configured (see .env file):
    • MONIKER_USER_KEY and MONIKER_API_PASSWORD for Moniker
    • ENOM_UID and ENOM_PASSWORD for eNom
    • CLOUDFLARE_API_TOKEN for Cloudflare

Usage

Update single domain to Cloudflare nameservers

node scripts/bulk-update-nameservers.js \
--registrar moniker \
--domain example.com \
--cloudflare

Update multiple domains from a file

node scripts/bulk-update-nameservers.js \
--registrar enom \
--file scripts/domains.json \
--cloudflare

Update to custom nameservers

node scripts/bulk-update-nameservers.js \
--registrar moniker \
--file scripts/domains.txt \
--nameservers "ns1.example.com,ns2.example.com"

Dry run (test without making changes)

node scripts/bulk-update-nameservers.js \
--registrar moniker \
--domain example.com \
--cloudflare \
--dry-run

Options

Option Description Required
--registrar <name> Registrar API to use (moniker or enom) Yes
--domain <domain> Single domain to update One of --domain or --file
--file <path> File with list of domains One of --domain or --file
--nameservers <ns> Comma-separated list of nameservers One of --nameservers or --cloudflare
--cloudflare Use Cloudflare nameservers (auto-fetches from API) One of --nameservers or --cloudflare
--dry-run Test mode - show what would be updated without making changes No
--delay <ms> Delay between API calls in milliseconds (default: 1000) No

File Formats

JSON Format (domains.json)

[
"domain1.com",
"domain2.com",
"domain3.com"
]

Or with object wrapper:

{
"domains": [
"domain1.com",
"domain2.com"
]
}

Text Format (domains.txt)

domain1.com
domain2.com
domain3.com
# Comments start with #

How It Works

  1. Domain Loading: Loads domains from file or command line
  2. Cloudflare Setup (if --cloudflare flag used):
    • Checks if Cloudflare zone exists for domain
    • Creates zone if it doesn't exist
    • Extracts Cloudflare nameservers from zone
  3. Nameserver Update:
    • Calls the appropriate registrar API (Moniker or eNom)
    • Updates domain nameservers
    • Waits between requests to avoid rate limiting
  4. Results: Saves results to JSON file with timestamp

Output

The script will:

  • Show progress for each domain
  • Display success/failure status
  • Save detailed results to nameserver-update-results-<timestamp>.json
  • Print summary at the end

Example output:

============================================================
Processing: example.com
============================================================
[Cloudflare] Checking if zone exists for example.com...
[Cloudflare] Zone ID: abc123xyz
[Cloudflare] Nameservers: ns1.cloudflare.com, ns2.cloudflare.com
[Moniker] Updating nameservers...
✅ Success!
Updated nameservers: ["ns1.cloudflare.com", "ns2.cloudflare.com"]
============================================================
SUMMARY
============================================================
Total domains: 3
✅ Successful: 3
❌ Failed: 0
Results saved to: nameserver-update-results-2026-03-03T03-30-00.json

Error Handling

  • API errors are caught and logged
  • Failed domains don't stop the script
  • All results are saved even if some domains fail
  • Exit code 1 if any domains failed, 0 if all successful

Rate Limiting

Use --delay <ms> to add delays between API requests:

node scripts/bulk-update-nameservers.js \
--registrar moniker \
--file domains.json \
--cloudflare \
--delay 2000

Default delay is 1000ms (1 second).

Examples

Scenario 1: 32 Moniker domains need Cloudflare nameservers

  1. Create domains file:
    echo '["domain1.com", "domain2.com", ...]' > moniker-domains.json
  2. Test with dry run:
    node scripts/bulk-update-nameservers.js \
    --registrar moniker \
    --file moniker-domains.json \
    --cloudflare \
    --dry-run
  3. Run for real:
    node scripts/bulk-update-nameservers.js \
    --registrar moniker \
    --file moniker-domains.json \
    --cloudflare

Scenario 2: Update single test domain

node scripts/bulk-update-nameservers.js \
--registrar moniker \
--domain test-domain.com \
--cloudflare

Scenario 3: Custom nameservers

node scripts/bulk-update-nameservers.js \
--registrar enom \
--file domains.txt \
--nameservers "ns1.myhost.com,ns2.myhost.com"

Troubleshooting

"Unsupported registrar" error

  • Make sure you're using moniker or enom (lowercase)

API authentication errors

  • Check your .env file has the correct credentials
  • Verify environment variables are loaded

"Failed to get Cloudflare nameservers"

  • Check CLOUDFLARE_API_TOKEN is configured
  • Verify token has permissions to create zones

Rate limiting errors

  • Increase --delay value
  • Run smaller batches of domains

Production Use

Before running on production domains:

  1. ✅ Test with --dry-run first
  2. ✅ Test on 1-2 domains without --dry-run
  3. ✅ Verify nameservers were updated at registrar
  4. ✅ Run full batch with appropriate delay

Support

For issues or questions, check: