Create a PHP/MySQL based DNS registration system, with optional webhosting/webaliasing and email alias hosting features.
Requirements are:
* PHP >= 5.3.8
* CSS
* HTML
* jQuery (for form validation)
* MySQL >= 5.3
* Good understanding of DNS and zone records
* Site is basic and does not require webdesign element
If you do not understand DNS, please do not post bids!
NOTE: Payment gateway integration is not required for this project!
## Deliverables
Project requirements:
Definitions:
Registrar: User/Company that registers a domain on behalf of themselves or someone else
Registrant: "Owner" of the domain
Admin Contact: Administrative contact for the domain (in case of queries etc)
Tech Contact: Technical contact for the domain (in case of technical queries)
Registration flow/requirements:
* Registrar can be the same detail as Registrant + Admin Contact + Tech Contact
* All 4 above objects needs to be completed before a domain can be registered
* Registrant can ONLY have 1 domain assigned to him/her
* Registrar can register multiple domains, but each domain requires a unique Registrant
* According to the above rules, a Registrar can register a domain for itself, but only 1 domain. A registrar can register multiple domains for others and behave as Admin+Tech contact, but can only be Registrant of a single domain
* Each of the above 4 objects need to be verified. A domain cannot be registered without all 4 contacts verifying their existence
-- If Admin+Tech contact are the same as Registrar, then no need to verify, as we have done so already during registration
Look and feel:
Look and feel is simplistic and google-esque
IMPORTANT: Colors/fonts/sizes/themes etc should ALL be located in CSS to allow for site-wide changes afterwards
A. Login/Registration/Password reset
Details required are:
* username (needs to be unique)
* password (minimum 6 chars, case sensitive, must include 1 number)
* name
* surname
* company (if exists)
* valid email (needs to be unique)
* street number, street name
* city
* state/county
* country
* phone
* fax (if exists)
* rechaptcha code
When registering, the following needs to be checked:
* username is not taken
* e-mail has not already been registered
* recpatcha code to avoid bots
-- I have a valid recaptcha code from Google which will be used on the live site
Forgetten passwords can be reset by following a link on the login page, which sends a reset URL with a token to the original e-mail address. A new password should be chosen immediately.
B. Main menu after login
* Update Registrar details
* Create/Modify/Delete new Registrant
* Create/Modify/Delete new Admin Contact
* Create/Modify/Delete new Tech Contact
* Create/Modify/Delete new Domain
* Manage E-Mail
* Manage Websites
* Domain Whois
C. Registrant/Admin/Tech
Details required are:
* name
* surname
* valid email
* street number, street name
* city
* state/county
* country
* phone
* fax (if exists)
D. Domain name
Requirements are:
* domain name (needs to be unique)
* name server 1 FQDN
* name server 1 IP (IPv4 or IPv6)
* name server 2 FQDN
* name server 2 IP (IPv4 or IPv6)
* name server 3 FQDN
* name server 3 IP (IPv4 or IPv6)
* name server 4 FQDN
* name server 4 IP (IPv4 or IPv6)
* DNSSEC key (optional)
Flow required:
* select existing Admin and Tech contacts (if these don't exist, send registrar back to main page)
* enter domain name + nameservers
* check that name server specified matches IP address specific for ALL given name servers
* check that domain name resolves NS records from ALL given name servers
* if name servers are not configured, offer registrar option of creating name servers (payment is required, but not taken yet)
-- pass information to backend process as: domain-name, domain-id
-- wait 5 minutes to ensure nameservers have updated
-- allow registrar to resubmit using local nameservers pre-filled
* if name servers are correctly configured, then place domain in a queue for admin to accept/reject
* if admin accepts entry (can be up to 24 hours), send domain-name, domain-id, number-of-name-servers, each-name-server(s), dnssec-key
* once above step is verified as completed (return code 0 will be supplied) then process payment
* if above step returns anything other than 0, notify registrar of error and allow them to re-submit with all previous fields filled in for them
E. E-Mail
* Create/Modify/Delete e-mail forwarding
* Create/Modify/Delete e-mail address
Email-Forwarding Details required are:
* forward e-mail address - attached to newly registered domain
* e-mail address to forward the e-mail to
* payment is required for this and can be taken immediately
* if "*" is specified as the forward e-mail, then different payment amount is required
Email-Address Details required are:
* name
* surname
* e-mail address (attached to domain belonging to registrant)
* password
* mailbox size
* payment is required per e-mail address, per size
F. Websites
* Create/Modify/Delete hosted website
* Create/Modify/Delete website alias
Hosted website Details required are:
* size required (amount in MB for hosted space, from dropdown)
* FTP admin username
* FTP admin password
Website alias Details required are:
* Current domain name (selected from registered domain)
* FQDN to point the domain to
* IP address of FQDN to point domain to
G. Domain Whois
This allows Registrar to query the details of a domain.
Required input is:
* Domain name
-- No wildcard are allowed
-- Maximum of 3 queries are allowed in 24 hours
* reCaptcha code
Required details shown is:
* Domain name
* Registrant name
* Registrant city
* Registrant country
* Registrant email
* Admin name
* Admin city
* Admin country
* Admin email
* Tech name
* Tech city
* Tech country
* Tech email
* All name servers
----
The following needs to be in a configuration file:
* captcha API code
* domain (second level ccTLD)
* database user
* database password
* database name
* token salt (for authenticated users)
* token salt (for registration verification)
The following needs to be editable:
* welcome message/email for registration
* error messages/email relating to each problem found (when creating new domain)
* confirmation messages/email for successful registration
* payment related messages/email
* sizes available for web hosting
* sizes available for email hosting