Appearance
Domains & Hosting Admin
Domains & Hosting Admin (formerly "InterWorx Hosting") is the operator console for everything a hosted domain needs: InterWorx cPanel-style hosting accounts (files, mailboxes, FTP, SSL, backups), Cloudflare zones/DNS records and TLD pricing, and the two domain registrars (Cloudflare Domains, Namecheap Domains) plus ZARC (.za) registrations. It replaced three separate CloudTools portal screens (local-domains, international-domains, host-cloudflare) with one place to see hosting, DNS and registration side by side. It is staff-only — hidden from customers since the 2026-07-29 rename — used by admins provisioning and troubleshooting hosting/domains for tc's customers and for Lubb's own sites.
What you can do
- Hosting Accounts — the tracked inventory of every SiteWorx account on host1 (internal) and host3 (customers): add a new hosting account, sync live status/storage/bandwidth/SSL/backup state from InterWorx, suspend/unsuspend, or permanently delete an account (files, mail, databases, DNS zone).
- Drill from a Hosting Account row into its DNS Records, Mailboxes, SSL, FTP Accounts and Backups — all read live from the InterWorx panel, nothing cached locally except the parent Hosting Accounts row itself.
- Add, edit and delete a domain's DNS records (A/AAAA/CNAME/MX/TXT/NS/SRV/CAA/SPF) directly on InterWorx, either via the drilldown or the standalone DNS Records page with its own domain picker.
- Create mailboxes, reset a mailbox password, and delete mailboxes on a hosting account's mail server.
- Generate/renew an SSL certificate for a domain and view its current cert (common name, validity dates, issuer, SANs).
- Browse a hosting account's FTP accounts and backup history (read-only).
- Open a one-click SSO login into a customer's SiteWorx panel, or email their SiteWorx panel credentials (with a send preview first).
- Manage Cloudflare Zones: add/delete a zone, drill into its DNS Records to add/delete records (with proxy on/off) — both live against the Cloudflare v4 API.
- Check Domain Pricing — a cached table of registration/renewal cost per TLD, refreshed on demand via Cloudflare's Registrar Check endpoint.
- Manage ZARC Domains (
.co.za/.org.za/.net.za/.web.za) registered through the ZARC EPP registry: add a domain to track, sync its live registration status/registrant/nameservers/expiry. - Manage Cloudflare Domains (sync expiry/autorenew/lock from the Cloudflare Registrar API, toggle autorenew) and Namecheap Domains (sync-only — read-only by design; renewals/transfers happen at Cloudflare or ZARC instead).
- Review the Hosting ⇄ Registration comparison report: a read-only join of Hosting Accounts × ZARC Domains × Registrar Domains that flags accounts with no backups, no registration record, an inactive ZARC status, or expiry within 30/60 days.
Common tasks
Provision a new hosting account On Hosting Accounts, click "Add Domain", fill in the domain name, choose Host1 or Host3, and optionally an admin email/package template. This creates the SiteWorx account live on InterWorx, then immediately pulls back account info, SSL status, backup status and nameservers to populate the row.
Add a DNS record on a hosted domain From a Hosting Accounts row, click "Zones" (or open the standalone DNS Records page and pick the domain), then "Add Record" — enter host, type and target/value (TTL defaults to 43200s if left blank). Records are written straight to the live InterWorx zone; there is no local copy to go stale.
Add a DNS record on a Cloudflare zone On Cloudflare Zones, drill into a zone's DNS Records, click "Add Record", and supply the zone ID (pre-filled from the row), type, name, content and whether it should be proxied through Cloudflare.
Check domain renewal/registration pricing Open Domain Pricing and click "Refresh Pricing" (or select specific TLD rows and "Refresh Selected"). This probes a random unregistered name under each TLD through Cloudflare's Registrar Check endpoint, 20 TLDs per batch, and caches the returned registration/renewal cost and currency.
Suspend or restore a hosting account Select one or more rows on Hosting Accounts and use the bulk "Suspend" / "Unsuspend" buttons — both call the live InterWorx API and update the row's status only on success.
Track and check a ZARC domain's registration status On ZARC Domains, "Add Domain" to register it for tracking (this immediately checks it against the ZARC EPP registry and stores whether it's registered, its registrar, registrant, nameservers and expiry), then use "Sync from ZARC" (toolbar) or "Sync Selected" (bulk) to refresh that status later.
Data model
- InterworxDomain — the real local table backing Hosting Accounts: one row per tracked SiteWorx account (domain, host_slug, status, package, storage/bandwidth usage & limits, SSL/backup status, nameservers, sync timestamps/errors). DNS records, mailboxes, FTP accounts and backups are never stored here — they're read live off InterWorx on every request, keyed by a composite id
"<host_slug>::<domain>::<panel-key>"since InterWorx's own ids aren't globally unique across host1/host3. - ZarcDomain — one row per
.zadomain tracked against the ZARC EPP registry (registered flag, status, EPP registrar id, registrant, nameservers, created/expiry dates); cached from live EPP lookups, kept separate from RegistrarDomain because ZARC is checked domain-by-domain over EPP rather than bulk-synced. - RegistrarDomain — one unified table for Cloudflare and Namecheap domain registrations (domain, TLD, status, expiry, autorenew, locked, nameservers, plus Cloudflare-only zone/plan/migration fields), split into two grids (
cloudflare-domains,namecheap-domains) by a server-enforcedregistrarfilter so neither module can see or edit the other's rows. Also holds ZARC's rows for the comparison report, though ZARC has no grid of its own here. - CloudflareTldPrice — the TLD pricing cache: one row per TLD with its last-probed sample domain, registrable flag, currency, registration/renewal cost and check timestamp/error. There's no bulk "list every TLD's price" endpoint on Cloudflare's side, hence the cache.
- Cloudflare Zones and its DNS Records have no local table at all — every read/write goes straight to the live Cloudflare v4 API.
Configuration & integrations
- InterWorx — two NodeWorx/SiteWorx panel connections,
interworx_host1(internal accounts) andinterworx_host3(customer accounts), resolved through theerp_credentialsConnections overlay. Everything under a Hosting Accounts row (DNS, mailboxes, SSL, FTP, backups) is resolved against whichever host the tracked domain names. - Cloudflare — a single
cloudflareconnection (API Token + Account ID) under Connections, used by Zones, Cloudflare Domains, and TLD Pricing alike. - Namecheap — a
namecheapconnection under Connections; used only for read-only sync (domains.getList/getInfo), never for writes. - ZARC — a
zarcconnection under Connections for the EPP registry used by ZARC Domains. - All four connections are shared with tc (customer hosting) and reused by the platform-hub site rather than configured separately per site, since it's the same physical InterWorx panels and Cloudflare/Namecheap/ZARC accounts either way.
API reference
Every grid in this module rides the shared grid engine under /api/grid/{slug}/...: GET /data (list/search/sort/paginate), GET /stats, POST /action/{key} (toolbar/row/bulk buttons — Add Domain, Sync, Suspend, Add Record, Refresh Pricing, Toggle Autorenew, etc.), plus standard POST /{slug}, PUT /{slug}/{row_id}, DELETE /{slug}/{row_id} where the grid allows create/edit/delete. Relevant slugs:
interworx-domains(Hosting Accounts) — full CRUD plus action buttons for add/sync/suspend/unsuspend/delete/SSO login/email credentials.interworx-dns/interworx-dns-records— DNS Records, standalone (with a domain scope selector) and hidden drilldown variants; read-only grid, write via thenew/edit_record/delete_recordactions.interworx-mailboxes,interworx-ssl,interworx-ftp,interworx-backups— hidden drilldown-only grids from a Hosting Accounts row.zarc-domains— ZARC Domains, editable + add/sync actions.domains-hosting-comparison— read-only Hosting ⇄ Registration report, no live API calls (pure join over the three cached tables).cloudflare-zones,cloudflare-dns-records— Cloudflare Zones and its drilldown DNS Records, read-only grid with add/delete actions.cloudflare-tld-pricing— Domain Pricing, read-only grid with refresh actions.cloudflare-domains,namecheap-domains— the two registrar grids, editable (notes only) with sync/toggle-autorenew actions.
There are no purpose-built REST endpoints beyond this generic grid mechanism — all InterWorx/Cloudflare/Namecheap/ZARC calls happen inside action handlers and providers (app/services/providers/interworx.py, cloudflare.py, namecheap.py, zarc_epp.py), not as separately routed API paths.