No description
  • PHP 98%
  • CSS 1.4%
  • Shell 0.6%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Nick Bebout f47b7d2024 Remove curl_close calls, which are deprecated in PHP 8.5
curl_close has had no effect since PHP 8.0, and PHP 8.5 reports a
deprecation notice for each call.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 23:37:26 -05:00
classes Remove curl_close calls, which are deprecated in PHP 8.5 2026-10-24 23:37:26 -05:00
test-api Run the dev and stub servers on PHP 8.5 to match production 2026-10-24 23:37:26 -05:00
.gitignore Add private subdirectory to .gitignore 2017-12-12 17:15:59 -06:00
config.sample.php Add Cloudflare pricing and list domains with the registrations API 2026-10-24 21:37:59 -05:00
deleteDNSSEC.php Set lock state explicitly, fix renewal prices and dates, redirect after changes 2026-10-22 22:14:28 -05:00
Dockerfile.dev Run the dev and stub servers on PHP 8.5 to match production 2026-10-24 23:37:26 -05:00
index.php Show auto renew for every registrar on the domain list 2026-10-24 22:36:03 -05:00
init.php Warn when showing cached data after a failed refresh, and back off 2026-10-24 22:36:03 -05:00
LICENSE This is 2019 2019-04-23 11:44:20 -07:00
manageDNS.php Move page styles into styles.css 2026-10-23 08:46:05 -05:00
manageDNSSEC.php Move page styles into styles.css 2026-10-23 08:46:05 -05:00
pricing.php Warn when showing cached data after a failed refresh, and back off 2026-10-24 22:36:03 -05:00
README.md Add Cloudflare pricing and list domains with the registrations API 2026-10-24 21:37:59 -05:00
renewinfo.php Price the TLDs of each registrar's own domains on the renewal page 2026-10-24 22:36:03 -05:00
start-dev-server.sh Add missing stub endpoints and document running against the stubs 2026-10-22 22:21:35 -05:00
styles.css Increase the text size and cell padding slightly 2026-10-23 11:38:14 -05:00
toggleLockStatus.php Set lock state explicitly, fix renewal prices and dates, redirect after changes 2026-10-22 22:14:28 -05:00

Domain Name Manager

Supported Registrars:

  • eNom
  • ResellerClub
  • Namecheap (No DNSSEC management)
  • Cloudflare (Domain list, lock status, pricing, and read-only DNSSEC status)

Developing

To start the development servers, run ./test-api/start-stub-server.sh and ./start-dev-server.sh. Then browse to http://localhost:8080.

Using the stub registrar APIs

test-api/ holds stub versions of the eNom, Namecheap, and Cloudflare APIs that return canned responses, so the app can be run without real registrar accounts. The stub server serves that directory at http://dns-test-api on the dnmanager Docker network, which the dev server also joins.

To point the app at the stubs, copy config.sample.php to config.php, define TESTING, and set each registrar's server to the stub server and api_path to its stub script. api_path is only used when TESTING is defined, so it can't redirect a production config by accident. The credentials can be anything non-empty; the stubs don't check them.

<?php
define('TESTING', true);

$config['enom'] = [
    'server' => 'http://dns-test-api',
    'username' => 'test',
    'password' => 'test',
    'api_path' => '/enom/Stub.php',
];

$config['namecheap'] = [
    'server' => 'http://dns-test-api',
    'username' => 'test',
    'apikey' => 'test',
    'clientip' => '127.0.0.1',
    'api_path' => '/namecheap/Stub.php',
];

$config['cloudflare'] = [
    'server' => 'http://dns-test-api',
    'account-id' => 'test',
    'apitoken' => 'test',
    'api_path' => '/cloudflare/Stub.php',
];

$config['pricingTLDs'] = ['com', 'net', 'org'];

Each stub script picks a canned response by the API command it's called with (command for eNom, Command for Namecheap, the request path for Cloudflare) and returns nothing for commands it doesn't know, which the app reports as a failed request. The responses are static, so changes such as locking a domain or editing nameservers report success but don't change what's shown. There's no ResellerClub stub; leave its server empty to skip it.