Fred-client HOW TO

This guide describes how users work with the client and what are the usual procedures for communicating with the server.

Autologin

The client runs the command: fred-client. If the configuration file is found and if it provided the necessary credentials the client connect to the EPP server, send command hello for download needed variables and then the command login open session.

After login is displayed the prompt:

$ ./fred-client
FredClient 2.1
Type "help", "license" or "credits" for more information.

Using configuration from /home/zbohm/.fred-client.conf
Connecting to localhost, port 22351 ...
Connected!

REG-FRED_A@localhost>

List of commands is displayed by command help or by inserting a question mark. A list of available commands is shown. They are divided into session commands and EPP commands. The first group is used to set environment variables on the client and they send to server nothing. The second group includes commands that communicate with the server.

Create contact

To register domain you must first establish a record to which the domain is bound. It is a record type contact that holds information about the owner of the domain. Concact is created by command create_contact & required parameters. The list of parameters is always in the help of the command. A question mark entering before the command displays help:

REG-FRED_A@localhost> ?create_contact
Help for command: create_contact
...
SYNTAX:
  create_contact contact_id name email street city [other_options]

OPTIONS:
  contact_id (required)    Contact ID
  name (required)          Name
  email (required)         Email
  street (required)        Street (list with max 3 items.)
  city (required)          City
  pc (required)            Postal code
  cc (required)            Country code
  sp                       State or province
  org                      Organisation
  auth_info                Password required by server to authorize the transfer
  voice                    Phone
  fax                      Fax
  disclose                 Disclose
    flag (required)        Disclose flag (default y)
                           (y,n)
    data                   Data for with is set the flag value (list with max 6 items.)
                           (voice,fax,email,vat,ident,notify_email)
  vat                      VAT (Value-added tax)
  ident                    Identificator
    number (required)      Identificator number
    type (required)        Identificator type
                           (op,passport,mpsv,ico,birthday)
  notify_email             Notification email
  cltrid                   Client transaction ID

There are 7 required items. Values are entered in the order mentioned in the help:

REG-FRED_A@localhost> create_contact ID01 'John Smith' john.smith@mail.com 'Working str. 21' Prague 12300 CZ

The contact was created. The contact details are displayed command info_contact:

REG-FRED_A@localhost> info_contact ID01
... (contact details)

List of all available contacts is obtained by typing list_contacts:

REG-FRED_A@localhost> list_contacts
Number of records:        1
ID01

Contact ID is always unique. Is not known if the ID already exists in the registry, you can verify this by running command check_contact:

REG-FRED_A@localhost> check_contact ID01
ID01:                     Not available. within protection peridod.
REG-FRED_A@localhost> check_contact ID02
ID02:                     Available. Not in registry: Object is available.

Create nsset

That the domain could include the zone, it may be assigned a name server. It is stored into the record type nsset. Assignment is more complex than the contact, because it is necessary to enter the lists, which may be other lists etc. The client is endeavouring after a maximum of simplified list - just put the items in parentheses: This is a three element list:
(one two three)

and this is a list of two items each of which has three items:
((1 2 3) (1 2 3))

The help for each command below is an example of use, which indicated how such an order looks like. In addition, the client also lets you run interactive mode input parameter order. Excamation mark before command switch into this interactive mode. The client then receives the parameters one by one. Optionnal parameters can be skiept by pressing key Enter. The whole command will be shown after interactive mode is finished. This way allow to the registrar get allong with syntax very easily.

REG-FRED_A@localhost> !create_nsset
Interactive input mode started. Press Ctrl+C to abort or Ctrl+D to finish command.
NSSET ID [required]: ID01
LIST of DNS[1/9] / Name server [required]: ns.domain.cz
LIST of DNS[1/9] / Server address[1/oo] [optional]: 217.31.207.130
LIST of DNS[1/9] / Server address[2/oo] [optional]: 217.31.207.129
LIST of DNS[1/9] / Server address[3/oo] [optional]:
LIST of DNS[2/9] / Name server [required]: ns2.domain.cz
LIST of DNS[2/9] / Server address[1/oo] [optional]: 217.31.207.130
LIST of DNS[2/9] / Server address[2/oo] [optional]:
LIST of DNS[3/9] / Name server [optional]:
Technical contact[1/oo] [required]: ID01
Technical contact[2/oo] [optional]:
Password required by server to authorize the transfer [optional]: test
Report range level (0 - 10; higher = more detailed) [optional]:
Client transaction ID [optional]:

Interactive input completed. [Press Enter]
Command to issue:
create_nsset ID01 ((ns.domain.cz (217.31.207.130, 217.31.207.129)), (ns2.domain.cz 217.31.207.130)) ID01 test
Do you really want to send this command to the server? (y/N):
NSSET ID:                 ID01
Created on:               2009-10-21T17:19:52+02:00

The client store EPP xml document of the last command sent to the server and the last response from the server. The last command sent into server displays raw-command:

REG-FRED_A@localhost> raw-command

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd">
  <command>
    <create>
      <nsset:create xmlns:nsset="http://www.nic.cz/xml/epp/nsset-1.2"
        xsi:schemaLocation="http://www.nic.cz/xml/epp/nsset-1.2 nsset-1.2.xsd">
        <nsset:id>ID01</nsset:id>
        <nsset:ns>
          <nsset:name>ns.domain.cz</nsset:name>
          <nsset:addr>217.31.207.130</nsset:addr>
          <nsset:addr>217.31.207.129</nsset:addr>
        </nsset:ns>
        <nsset:ns>
          <nsset:name>ns2.domain.cz</nsset:name>
          <nsset:addr>217.31.206.130</nsset:addr>
        </nsset:ns>
        <nsset:tech>ID01</nsset:tech>
        <nsset:authInfo>test</nsset:authInfo>
      </nsset:create>
    </create>
    <clTRID>owal005#09-10-22at16:09:09</clTRID>
  </command>
</epp>

The server answer displays raw-answer:

REG-FRED_A@localhost> raw-answer

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd">
  <response>
    <result code="1000">
      <msg>Command completed successfully</msg>
    </result>
    <resData>
      <nsset:creData xmlns:nsset="http://www.nic.cz/xml/epp/nsset-1.2"
        xsi:schemaLocation="http://www.nic.cz/xml/epp/nsset-1.2 nsset-1.2.xsd">
        <nsset:id>ID10</nsset:id>
        <nsset:crDate>2009-10-23T15:57:20+02:00</nsset:crDate>
      </nsset:creData>
    </resData>
    <trID>
      <clTRID>qecl009#09-10-23at15:57:19</clTRID>
      <svTRID>ccReg-0000002475</svTRID>
    </trID>
  </response>
</epp>

Continuous display of all EPP communication can be set by increasing verbose output level. It is one of the commands from the first group session to influence the behavior of the client. Enter them without parameters dispaly current value:

REG-FRED_A@localhost> verbose
Verbose mode is 1

Setting display of all EPP communications - Level 3:

REG-FRED_A@localhost> verbose 3
Verbose mode has been set to 3

Create domain

Example of a domain with associated nsset to include into the zone:

REG-FRED_A@localhost> create_domain myfirstdomain.cz ID01 NULL ID01
Do you really want to send this command to the server? (y/N):
Domain name:              myfirstdomain.cz
Created on:               2009-10-22T16:30:07+02:00
Expiration date:          2010-10-22

The NULL value occurs between parameters at the third position. This is auth_info value. NULL causes in the EPP does not generate this element:

...
   <domain:name>myfirstdomain.cz</domain:name>
   <domain:nsset>ID01</domain:nsset>
   <domain:registrant>ID01</domain:registrant>
...

Insert an empty string into EPP document provide set of quotation mark '' or "".

REG-FRED_A@localhost> create_domain myseconddomain.cz ID01 "" ID01

...
   <domain:name>myseconddomain.cz</domain:name>
   <domain:nsset>ID01</domain:nsset>
   <domain:registrant>ID01</domain:registrant>
   <domain:authInfo/>
...

No any changes in the first case with NULL and insert empty string in the second case with '' or "" entry.

Update domain

Parameter auth_info is the password, used for the transfer of the domain. The value is random now becasue it was not be specified.

REG-FRED_A@localhost> ?update_domain
...
OPTIONS:
  name (required)          Domain name
  add_admin                Add administrative contact ID (libovolně velký seznam)
  rem_admin                Remove administrative contact ID (libovolně velký seznam)
  rem_tempc                Remove temporary contact ID (libovolně velký seznam)
  chg                      Change values
    nsset                  NSSET ID
    keyset                 KEYSET ID
    registrant             Registrant ID
    auth_info              Password required by server to authorize the transfer
  val_ex_date              Validation expires at
  cltrid                   Client transaction ID
...

Required parameter is only the first one. Parametr auth_info is situated in parameter chg (on the fifth position), on the fourth position of this list (chg). If we want change only auth_info and others keep same, than we need enter NULL or empty list:

REG-FRED_A@localhost> update_domain myfirstdomain.cz NULL NULL NULL (NULL NULL NULL password)
or
REG-FRED_A@localhost> update_domain myfirstdomain.cz () () () (NULL NULL NULL password)

Other possibility how to enter parameter situated on the tail of the command is named paramter. The name is build from paramter parents. This is chg this case and auth_info itself. Final result is:

REG-FRED_A@localhost> update_domain myfirstdomain.cz --chg.auth_info=mypassword
Do you really want to send this command to the server? (y/N): y
myfirstdomain.cz updated.

It has been sent to the server only password:

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd">
  <command>
    <update>
      <domain:update xmlns:domain="http://www.nic.cz/xml/epp/domain-1.4"
        xsi:schemaLocation="http://www.nic.cz/xml/epp/domain-1.4
        domain-1.4.xsd">
        <domain:name>myfirstdomain.cz</domain:name>
        <domain:chg>
          <domain:authInfo>mypassword</domain:authInfo>
        </domain:chg>
      </domain:update>
    </update>
    <clTRID>juen002#09-10-22at17:02:13</clTRID>
  </command>
</epp>

Update nsset

Before sending the client requests from the user verification for each command that changes an object in the registry. This behavior is controlled by the command confirm:

REG-FRED_A@localhost> confirm
Command confirmation is ON
REG-FRED_A@localhost> confirm off
Command confirmation has been set to OFF

Update nsset executes command update_nsset:

REG-FRED_A@localhost> ?update_nsset
...
OPTIONS:
  id (required)            NSSET ID
  add                      Add values
    dns                    List of DNS (seznam o maximálně 9 položkách.)
      name (required)      Name server
      addr                 Server address (libovolně velký seznam)
    tech                   Technical contact ID (libovolně velký seznam)
  rem                      Remove values
    name                   Name server (seznam o maximálně 9 položkách.)
    tech                   Technical contact ID (libovolně velký seznam)
  auth_info                Password required by server to authorize the transfer
  reportlevel              Report range level (0 - 10; higher = more detailed)
  cltrid                   Client transaction ID

Remove previous ns.domain.cz, ns2.domain.cz and add ns1.change.cz with three IP address and ns2.change.cz with one IP:

REG-FRED_A@localhost> update_nsset ID01 (((ns1.change.cz (217.31.207.130, 217.31.207.131, 217.31.207.132)), (ns2.change.cz 217.31.207.133))) ((ns.domain.cz, ns2.domain.cz))

Update contact

All items have status Disclose.

REG-FRED_A@localhost> info_contact ID01
...
Status:                   ok - Objekt is without restrictions
Disclose:                 voice
                          fax
                          email
                          vat
                          ident
                          notify_email

Add flag hidden on selected items:

REG-FRED_A@localhost> update_contact ID01 --chg.disclose.flag=n --chg.disclose.data=(vat,fax,voice)
ID01 updated.
REG-FRED_A@localhost> info_contact ID01
...
Status:                   ok - Objekt is without restrictions
Disclose:                 email
                          ident
                          notify_email
Hide:                     vat
                          voice
                          fax

Domain Transfer

Another registrar log on:

$ ./fred-client
FredClient 2.1
Type "help", "license" or "credits" for more information.

Using configuration from /home/zbohm/.fred-client.conf
Connecting to localhost, port 22351 ...
Connected!

REG-FRED_B@localhost>

Registrar make domain transfer:

REG-FRED_B@localhost> transfer_domain myfirstdomain.cz password
myfirstdomain.cz successfully transfered.

Delete domain

Deleting domain executes command delete_domain:

REG-FRED_A@localhost> delete_domain myfirstdomain.cz
ERROR: Authorization error
Reason: Object do not belong to registrar

Only registrar that manages the domain can delete a domain.

Delete nsset

Deleting Nsset executes command delete_nsset:

REG-FRED_A@localhost> delete_nsset ID01
ERROR: Object association prohibits operation

Nsset can be deleted only if it's not tied to any other records.

Delete contact

Deleting contact executes command delete_contact:

REG-FRED_A@localhost> delete_contact ID02
ERROR: Object does not exist

Can only delete the objects that exist.

Read messages

Server generates a service message. Those stored in the queue, which can be read from the command poll req:

REG-FRED_A@localhost> poll req
Command completed successfully; ack to dequeue

Queue size:               1
Message ID:               20
Message date:             2009-10-23T16:27:45+02:00
Message content:
                          name: myfirstdomain.cz
                          trDate: 2009-10-23
                          clID: REG-FRED_A

For remove message from the queue execute command poll ack:

REG-FRED_A@localhost> poll ack 20
Command completed successfully; no messages

The number of remaining messages is given at under Queue size.

Quit session

The connection with server terminated command quit. The client send EPP command logout and disconnected.


Summary of commands sorted to groups by usage

  • Connect, authentisation

    • hello - request for information to the server
    • login - log on into administration
    • logout - log out
  • Create

    • create_contact - create contact record
    • create_nsset - create nsset record
    • create_keyset - create keyset record
    • create_domain - create domain record
  • Update

    • update_contact - update contact
    • update_nsset - update nsset
    • update_keyset - update keyset
    • update_domain - update domain
  • Delete

    • delete_contact - delete contact
    • delete_nsset - delete nsset
    • delete_keyset - delete keyset
    • delete_domain - delete domain
  • Transfer

    • transfer_contact - transfer contact
    • transfer_nsset - transfer nsset
    • transfer_keyset - transfer keyset
    • transfer_domain - transfer domain
  • Reading messages

    • poll - display server messages
  • Check accessibility

    • check_contact - is contact available
    • check_nsset - is nsset available
    • check_keyset - is keyset available
    • check_domain - is domain available
  • Information

    • info_contact - contact information
    • info_nsset - nsset information
    • info_keyset - keyset information
    • info_domain - domain information
  • Lists

    • prep_contacts - preparation list of contact

    • prep_nssets - preparation list of nsset

    • prep_nssets_by_contact - preparation list of nsset by contact

    • prep_nssets_by_ns - preparation list of nsset by name server

    • prep_keysets - preparation list of keyset

    • prep_keysets_by_contact - preparation list of keyset by contact

    • prep_domains - preparation list of domain

    • prep_domains_by_contact - preparation list of domain by contact

    • prep_domains_by_keyset - preparation list of domain by keyset

    • prep_domains_by_nsset - preparation list of domain by nsset

    • get_results - reading of prepared list

    • list_contacts - preparation list of contacts and reading loop up to the list end

    • list_nssets - preparation list of nssets and reading loop up to the list end

    • list_keysets - preparation list of keysets and reading loop up to the list end

    • list_domains - preparation list of domains and reading loop up to the list end

  • Display credits

    • credit_info - display registrar credits
  • Extend validity

    • renew_domain - Extend validity of domain
  • Request for send the passwod

    • sendauthinfo_contact - send the contact passwod
    • sendauthinfo_nsset - send the nssest passwod
    • sendauthinfo_keyset - send the keyset passwod
    • sendauthinfo_domain - send the domain passwod
  • Technical test

    • technical_test - requirement to undertake a technical test