Table of Contents

EPP-DRS Installation and Configuration

This document is a detailed guide to EPP-DRS installation, configuration and customization.

Introduction

EPP-DRS (EPP Domain Registration System) is a the most powerfull domain selling and management system in the world.

It allows you to run your own full-cycle domain registration service, with ability for your clients to register, renew, transfer domain names.

System web interface consists of 3 areas: Domain Order Wizard, Registrant Control Panel and Registrar Control Panel.

The system communicates with various registries and SRS via modules and is handling over 50 domain extensions (and counting). API allows developers to easily build and plug custom modules.

Software is made by registrars for registrars - it's a result of tigh collaboration with respected domain business players.

Please visit EPP-DRS product website for latest information and updates.

Pricing and licensing

For latest pricing and licensing options, please check EPP-DRS website

System requirements

To quickly check either your server meets EPP-DRS system requirements, use this script
Simply upload php file on your host and open it in browser. It should find most of major issues.

EPP-DRS requires a webserver and can run on any posix-compatible (Linux, BSD etc.) operating system, as long as the following requirements are met:

Required PHP configuration options

Required PHP extensions

Module-specific requirements

Some modules may require additional components on your server. See Module-specific requirements

Installation

Installing from tar.gz package

:!: If you think that you do not have enough skills to perform installation, Webta provides an installation service for its customers for a flat fee. Installation service is also included in premium support package. See Support Policy and product pricing for more details.

Before you proceed to installation, you must know paths to some files on your server.
One of these is a PHP command-line binary (CLI), which is needed to execute cronjobs. The following shell commands will help you to find PHP binary on your server:

which php
whereis php

You may also make sure that you are using the right binary by checking it's version:

/path/to/php -v

Copy files

:!: Note: If you are using FTP to upload files, make sure that you are uploading in binary mode!

Copy contents of app folder on your webserver.
Only app/www folder must be readable by webserver, all other folders must be underneath web root.

Hereinafter, let's assume that:

In this case, you will have the following folder structure at the end:

/home/srsbox/cron
/home/srsbox/etc
/home/srsbox/lang
/home/srsbox/modules
/home/srsbox/src
/home/srsbox/templates
/home/srsbox/www

Set folders permissions

Set permissions on cache folder (and subfolders) to 777 (world-writable), On Unix systems you can run in console:

sh preinstall.sh

Create database

  1. Create new MySQL database
  2. Import database dump from sql/database.sql file.
  3. Edit database connection details in etc/config.ini file.

The contents of config.ini file must look like this:

[database]
dsn="mysqli://USER:PASSWORD@HOST/DBNAME?persist&fetchmode=ADODB_FETCH_ASSOC#pear:extend:date:transaction"

where USER - database user,
PASSWORD - password,
DBNAME - database name.

Set Cron jobs

For system to work properly, it needs to run a few tasks periodicaly.
EPP-DRS has a single cron/cron.php file that must be executed with various command-line switches.
The following recurring tasks must be sheduled:

Switch Frequency Doing what
--Autoupdate Hourly Checks for available software updates. If update is approved by admin, installs it
--LogRotate Nightly Cleans old entries in logs database table
--CleanZombyUsers Weekly Deletes users that don't have active domains or paid invoices
--DNSPush Hourly Commits DNS zones updates to al nameservers. This is for Managed DNS feature
--Renew Nightly Sends notifications to registrants about expiration of their domains. Issues invoices for renew
--PollQueueEvent Every 5 minutes Retrieves messages from poll message queue on registry server and calls appropriate handlers
--TaskQueue Every 10 minutes Retrieves messages from EPP-DRS message queue and calls appropriate handlers
--AssignDiscount Nightly Assigns new pricing package to client in accordance with auto assignment options

Sample crontab file would look like:

16 * * * * /usr/bin/php -q /home/srsbox/cron/cron.php --Autoupdate 
34 3 * * * /usr/bin/php -q /home/srsbox/cron/cron.php --LogRotate 
34 4 * * 0 /usr/bin/php -q /home/srsbox/cron.php --CleanZombyUsers
12 5 * * * /usr/bin/php -q /home/srsbox/cron.php --DNSPush
18 2 * * * /usr/bin/php -q /home/srsbox/cron.php --Renew
*/5 * * * * /usr/bin/php -q /home/srsbox/cron.php --PollQueueEvent
*/10 * * * * /usr/bin/php -q /home/srsbox/cron.php --TaskQueue
50 1 * * * /usr/bin/php -q /home/srsbox/cron.php --AssignDiscount

:!: Cronjobs must be executed under real system user. The user must have access for overwriting all EPP-DRS files, create new files and directories, and execute ''tar'' command-line tool.

Installation complete! You may now proceed to configuration.

Configuration

EPP-DRS Configuration

Obtaining and installing license file

Before you can proceed to EPP-DRS configuration, you must install a trial license file that was send to you after purchase. EPP-DRS uses Zend Optimizer internal licensing. To install license, follow these simple steps:

  1. Save license.zl somewhere on your server. /etc/epp-drs/ folder would be a good choice.
  2. Open your php.ini file and add the following line into it:
    zend_optimizer.license_path="/etc/epp-drs/"
  3. Restart web server.


To obtain a permanent license, you will need to send an email to licensing@epp-drs.com and include your Zend HostID.
To obtain HostID, you need to log in to your EPP-DRS Registrar Control Panel (http://srsbox/admin) with default username and password (admin/admin) and check Settings⇒Product info page.



Make sure to delete a trial license before installing permanent one.

Core settings

You must change few essential settings of your system immediately after installation.
Log in to Registrar CP (/admin) using default username/password (admin/admin) and go to Settings » Core settings

Change default admin password
Change E-Mail delivery settings

Sample SMTP connection setting should look like: info+srsbox:password@mail.srsbox.com:25

Service owner email settings

These are email address and name (as it will appear in To: field of service owner (admin)).

Registry options

These are your default nameservers that will be assiged to newly registered domains.

Binary tools

You must properly set paths to tar and zendid command-line tools.
Setting correct path to tar is important because it is used to extract updates.
If zendid will be not found in specified path, EPP-DRS will try to use bundled zendid binary (that is distributed with EPP-DRS). Bundled binaries for different platforms reside in bin folder.

Basic configuration is now complete (athough it is a good idea to check through all remaining settings). You can now proceed to modules configuration.

Registry modules Configuration

See the full list of currently available modules

Payment modules Configuration

Please follow instructions in inline help for each specific module. Make sure that you have inline help enabled.



Managed DNS Configuration

Managed DNS allows you to provide DNS hosting for your clients. Your clients are able to edit DNS records for their domains in Client CP.

See Managed DNS Configuration for configuration guide.

Keeping EPP-DRS up-to-date

Assuming that you have correctly configured all cronjobs, you do not need to do anything to keep your EPP-DRS copy up-to-date. It updates itself periodically via Webta proprietary auto-update system. Each time new update is published, you will receive email notification. You then need to log in, revise an update, probably backup your files and approve update.

Design customization and localization

Customizing look and feel

EPP-DRS look and feel is fully configurable. If you do not like the slick and user-friendly default EPP-DRS design, you may change all aspects of presentation by simply editing HTML templates (Smarty), CSS files, images and even JavaScript files. You do not have to make any edits in PHP files, since no HTML is generated or prepared inside PHP code.

HTML Templates and CSS styles

All templates are in templates folder, with .tpl file extension. In previous versions, we had several copies of all templates for each language. Since EPP-DRS 600, there is only one copy of templates, and they are translateable via language files.

:!: Strings that are surrounded with {t}{/t} tag, should not be changed. These are language-dependent strings that will be automatically translated on the fly (see next topic for translation tips).

CSS stylesheets can be found in www/css (for Order Wizard), www/client/css (for Registrant Control Panel), www/admin/css (for Registrar Control Panel).

Translating

EPP-DRS platform is designed to support multiple languages. All source codes and templates are being developed with the use of gettext

To translate a system on a new language follow these steps:

Essentials

  1. Copy lang\en_US\ folder to lang\ll_CC\,

where ll is a two-letter language code, according to ISO 639 standard, CC is two-letter country code, according to ISO 3166 standard. You can find a list of major locales

  1. Translate strings in LC_MESSAGES/default.po file,
  2. Generate a binary LC_MESSAGES/default.mo file. We recommend using poedit for this.
  3. Create www/images/lang/ll_CC.gif - This is used as a flag icon for your locale. You can find templates for flag icons in EPP-DRS SDK, inside resources/www/images/lang folder.


.po and .mo files must be readable by web server (chmod +r). If you are using FTP, .mo file must be uploaded in binary mode.

:!: The above steps must be performed to make your language be recognized by the system.

Translating and customizing emails

Each email template is a simple text file with .eml extension. The format of the file is the following:

[settings priority=3 charset=UTF-8 type=html]
[subject]This is a subject[/subject]
The body of the message.

[settings] section is optional and each setting is optional. priority: 1 = High, 3 = Normal, 5 = Low. Default: 3
charset: charset of the message. Default: UTF-8
type: html or text Default: text

Optional actions

  1. Translate email templates in email_templates folder.

You may now go to Registrar Control Panel → Settings → Languages and see if the system recognises new language.

If it was recognized fully, new flag icon will appear at the top of order wizard pages. When visitor clicks on a flag icon, information about selected language is stored in a cookie on his computer.

Separating static resources for each language

What if you have images with text on them, like graphical buttons, and want them to be translated too? www/.htaccess contains a set of mod_rewrite rules that will solve this problem.

Say you have two languages enabled in Registrant CP - English (en_US) and Russian (ru_RU). You have two copies of button.png - one with engish text on it and one with russian. You create two subfolders inside images folder - en_US and ru_RU (these folder names are the same as folder names in lang folder), and place your button copies in each folder, respectively.

Now, if your visitor, who previously clicked on russian flag icon, will request http://srsbox.com/images/button.png, image from images/ru_RU/button.png will be loaded.
By default, if no cookies were set, www/images/button.png will be returned. Thus it's a good idea to have a 3rd, default copy in images folder.
All these rules apply to www/client/images as well.

You can also localize CSS files using the same approach (applies to www/css and 'www/client/css').


Adding custom text to templates

If you need some text added to templates, you have two possible ways to achieve this:

  1. Good for massive additions.
    1. Use bin/tsmarty2c.php from command line to scan templates and generate a .c file.
php bin/tsmarty2c.php ./templates > smarty.c
  1. Then generate a .PO a .c file using this command:
xgettext -j --no-location  --language=C --omit-header --no-wrap -o "default.po" "smarty.c"
  1. Good for small additions. Use {$smarty.const.LOCALE} variable inside template to determine the current user's language. Then copy your text for each language:
{if $smarty.const.LOCALE == "en_US"}
English text.
{elseif $smarty.const.LOCALE == "el_GR"}
Greek text.
{/if}

EPP-DRS v4 will support web-based language creation and translation.