Python engine & rest/api with JS webui to provide a complete Domain Name Registry & Registrar
To see a demo of it running the current latest master
go to https://nameshake.net/
It's probably now ready to go live in a limited installation - supports payment by PayPal or crypto via NowPayments
If you want to play with buying domains on the demo, I can give you some fake credit, just ask.
If you would like to help with this development effort, right now, the absolutely biggest help would be to help fund it.
- Donate by PayPal
- Donate by BTC - 357ynBdTQiVKybo93bP2cYbrkLbpGmQCj6
- Donate by ETH - 0x20fbf9555F09a8579540970488dcB8245244b683 (Etherium Network ONLY)
Donations are paid into a UK Limited Company, so if you want a trade invoice / recipt, just ask.
Or you can sponsor me through GitHub - Also see Sponsor this project
To help users go live with this system, either as a registry or registrar (or both), we plan to offer a fully hosted & supported service that (we hope) will be price competative with public cloud.
The service will be graded by the level of performance you want, and will always be on an unmetered basis - i.e. no surcharges for extra usage ever - the price quoted is the price you pay. Anti-D/DoS measures will be applied.
Optional extras include additonal Name Servers (e.g. in almost any part of the world, to improve DNS performance) and the option of "off-shore" hosting at locations like Iceland, The Seychelles or Morocco. With the option of a local "off-shore" domain name for your site.
Two Name Servers will be included in the price of all services.
- Set up suitable payment accounts (e.g PayPal) and provide us with the API crterdentials we'd need
- All payments from users will be received by you directly
- Promote you service (PR/sales/marketing)
- Handle first level support - generally this means payment & refund issues
- Host the PyRar Server & its required MySQL databases
- Give you full access to daily backups of the databases to download
- Provide technical back-up support
- Give you access to the Admin Web/UI for your system (but not command line access)
If you would prefer, I'm sure it would not be hard to find a tech-guru on Fiverr (etc) who could get this all set up & running for you on any public cloud of your choice. Its just a single docker container so there are many places you can host it.
If you opt to host with us to begin with, but become unhappy with the service, then the daily database backups should make it relatively simple for you to switch to public cloud at a later date.
A copy of the current latest master
build as a container is available at https://hub.docker.com/r/jamesstevens/pyrar
This image is updated every time there is a merge to master
as well as old version date-stamped.
PyRar is designed to run as a single container, with everything you need to operate a Domain Name Registrar (reseller) included in the one container.
This includes buying & renewing domains and hosting & editing DNS for client zones (with DNS signing), but does not include value-add services like web or email hosting for clients.
It runs as a number of micro-services within one container, so these could be split into separate containers, but that's for the future (or for you to do).
PyRar is made of a rest/api and processing engine written in Python and a web/ui written in JS. Replacing the JS web/ui with one of your choice should be relatively straight forward, but it would need writing. The JS front-end provided doesn't use any specific framework.
The DNS is handled by PowerDNS, with all access done using its rest/api. This means it should be possible to move it into a separate container without too much trouble.
A bind
"Catalog Zone" is automatically maintained,
so all TLD & client zones hosted can be easily slaved into any standard DNS server that supports this.
If you want to run external name servers, the PowerDNS can be configured to NOTIFY
them
and allow zone transfers to them.
PyRar can also run as a self-contained registry platform. It does not (yet) support in-bound EPP connections (e.g. from other registrars), but connecting between other PyRar Registry Systems should be available shortly.
It maintains the TLD in PowerDNS, adding & removing SLDs as they are bought / expire. By default
TLDs are signed NSEC3+OptOut KSK+ZSK ECDSA256
. This can be reconfigured, or you can pre-create
the TLD with the DNSSEC options of your choice.
If SLD owners chose to host their DNS withing the system, then their DS
records will be automatically
updated in the TLD if they Sign/Unsign their SLD zone data. This makes running their SLD signed extremely easy.
Different back-ends, to sell domains from, are supported using plug-ins. These are python code files that register a series of call-backs for the functions that are required, e.g. get-price, buy-domain, renew-domain, etc
Currently the only plug-ins provided are epp
& local
and PyRar
will be added shortly, but it should be possible to write plug-ins for
domain registry systems that follow the same basic model. Support for auction based sale systems would require significant code changes.
This means it should be relatively easy to write a plug-in for a block-chain based domain name system, if it supports fixed price domains.
The EPP plug-in has only been tested with a registry that supports the RFC 8748 fee-1.0
extension,
but registries that do not support this should work, although setting up the pricing will be more work!
EPP Registries that use differential prices, will need to support fee-1.0
. EPP Registries with flat pricing (all domains are the same price)
can be supprted without fee-1.0
.
- Can automatically add tables, columns & indexes to the PyRar or P/DNS database after an upgrade
- Register
- Login & Logout
- View & edit account details
- Run an account
- View a history of transactions
- Change password
- Password reset
- Maintain payment options e.g. card / account details etc (some done, still needs work)
- Close account
- Money Managment fully woking with push-pay via PayPal, or by crypto via NowPayment, fully working
- Search for available domains (very fast)
- Built-in emoji search option (super-cool feature)
- IDN & Emoji Domain fully supported
- Buy domains
- Renew domains
- Auto-Renew domains (partly working)
- Gift a domain to another user on the same platform
- Transfer domains using the standard AuthCode mechanism
- Edit NS and DS records (in the parent zone)
- Edit locally hosted client zone data
- Sign / Unsign locally hosted client zone file
- Offer domains for sale to others users (partly working)
- Support for the four EPP standard domain locks
- Automatic securing of hosts, using TLSA records & generating PEM files, for locally hosted DNS in a signed zones
- All function required to support an EPP registry (delayed transfers needs work)
- All functions required to support running a registry locally (see below)
- Schedule and process event jobs for aging domains (renewal reminders, auto-renew, expire, delete)
- Cronjob for routine maintenance
- Background processing pending payments after credit comes in
- A Web/UI to the PowerDNS server is provided
- Quick search by SLD name, SLD id, user's email, user's id, TLD name
- Cross-links between related table data
- view domain history
- view transaction history
- view activity history
- Search, Add, Edit, Delete rows in any table
- Add, edit, remove SysAdmins
- One click view of the P/DNS data for TLDs/SLDs
- Check domain data held at a remote EPP registry, shown in EPP format
- View event log to give a history of the domain
- Runs a Postfix SMTP spooler with optional support for relaying out via an external mail server/service, optionally with TLS & SMTP/AUTH
- Can email users from template, either plain text or HTML
- Email Templates use the python standard
jinja2
templating package, so making your own is easy - Supported email events are...
- Password Reset request
- Password reset confirmation
- Password Changed (warning to user, just in case)
- Renewal Reminder
- Verify User's email address
- Notification when you've been gifted a domain
- Receipt for all payments
- Domain transfer request succeeded (by EPP)
- Payment received
- Order processed
- Maintain the TLD zone file, automatically signed
- Support premium domain pricing
- By individually named domain
- By wildcard/regular expression, e.g
- "all one/two letter SLDs" =
^(.|..)$
- "all unicode / punycode / emoji domain" =
^xn--
- "all one/two letter SLDs" =
It's probably now ready to go live in a limited installation - so long as you're happy with being paid by PayPal or Crypto.
- 2fA (enable & disable)
- Make payments - Just Stripe to do
- Pull Payments for auto-renew (Stripe & PayPal only)
- Ability to opt out of emails, by type of message
- UI to request transfers (some done)
- Auto-renewals
- Ability to "recover" an expired domain
Right now there is no support for contact records & attaching contact record to domains.
This may be required to be allowed to work with some EPP registries, but my preferance is for privacy!
So there is a contacts
table, in case this functionality needs to be added, but right now its not used.
- Poll for messages and know what some mean!!
- Ability for PyRar system to connect to each other so PyRar users can resell each other's TLDs
- refunds (partly done)