This is a simple command line interface to the EPP Proxy as part of the NZ Shared Registry system.
It is designed to allow generation and transmission of all the XML actions that the registry supports using command line arguments rather than having to manually write the XML yourself.
Registrars may use that when integrating the SRS into their own systems as well as for executing any one-off transactions that their system does not support.
InternetNZ developers use the client when testing the SRS EPP Proxy.
Using --dry-run it is also possible to generate XML than can then be
sent using the send-xml action for any feature not supported by the
client itself.
sec uses the following non-standard python modules: lxml and jinja2.
These are all available as Debian packages, to install them run:
sudo apt-get install python3-lxml python3-jinja2.
The following environment variables can be used:
-
EPP_SERVERHostname of the EPP server. Used when--serveris not specified. -
EPP_PORTPort the EPP server accepts connections on, defaults to 700. -
EPP_CA_CERTIFICATESSL CA certificate that authenticates the HTTPS connection, used when--ca-certificateis not specified. -
EPP_USERNAMEEPP client username (registrar ID), used when--usernameis not specified. -
EPP_PASSWORDEPP client password, used when--passwordis not specified. -
EPP_CERTIFICATEEPP client certificate signed by the registry, used when--certificiateis not specified. -
EPP_KEYEPP client private key, used when--keyis not specified and will default to using the same file as--certificiate. -
EPP_KEY_PASSWORDPassword to decrypted the EPP client private key if--key-passwordis not specified.
The following keys are in the registry/ directory:
srs-root-ca.pemThe SSL CA certificate used to authenticate the SSL connection.
Usage: sec ACTION OPTIONS. Run sec help to see available
actions.
Each action has a help message that shows all the possible options for that
action and brief, what they do. Run sec help ACTION to see that help, eg:
sec help domain-updateMost command line arguments are optional, you should always run the command
with --dry-run first to verify that the XML is what you want to send.
In the following examples, each option is shown on it's own line for readability, your shell will require everything to be on one line.
An example that gets the server greeting.
sec hello
--server epp.test.srs.net.nz
--certificate "./registrar-500.crt"
--key "./registrar-500.key"You can check that the username and password are correct using the login
command.
sec login
--server epp.test.srs.net.nz
--username 500
--password "test-password"
--certificate "./registrar-500.crt"
--key "./registrar-500.key"The client password can be changed using --new-password for any action other
than hello. The easiest method is to use login.
sec login
--server epp.test.srs.net.nz
--username 500
--password "test-password"
--new-password "new-test-password"
--certificate "./registrar-500.crt"
--key "./registrar-500.key"All the following example assume that the client connection details have been set using environment variables shown below.
In this case the client certificate and key are contained in a single file.
export EPP_SERVER="epp.test.srs.net.nz"
export EPP_USERNAME="500"
export EPP_PASSWORD="test-password"
export EPP_CERTIFICATE="./registrar-500.pem"Some options parsed by the client are context sensitive, they are sub-options of the option that preceded it.
In this example, the sub-options to --contact are context specific.
sec contact-create
--contact test-handle-1
--name "Test"
--email "test@example.co.nz"
--street1 "Test Street1"
--city "Test City"
--country NZ
--phone +64.40000123And in this example, the sub-option to --nameserver are context specific.
sec domain-create
--domain example.co.nz
--period 12
--registrant registrant-handle-1
--admin admin-handle-1
--nameserver ns1.example.co.nz
--v4 192.168.0.1
--nameserver ns2.example.net.nzWhen updating a domain, details can be added or removed which is specified using
--add or --remove.
sec domain-update
--domain example.co.nz
--remove
--admin admin-handle-1
--nameserver ns1.example.co.nz
--add
--admin admin-handle-2
--technical technical-handle-3
--nameserver ns1.example.net.nzThe default update mode is --add so it can be omitted if the new details are
put first. The following is equivalent to the above.
sec domain-update
--domain example.co.nz
--admin admin-handle-2
--technical technical-handle-3
--nameserver ns1.example.co.nz
--remove
--admin admin-handle-1
--nameserver ns1.example.co.nzTo send your own XML, use send-xml as the action, the client will authenticate
first before sending the request.
sec send-xml
--file request.xml