EPPIC 3.1.0 is released

The CZ.NIC Association released a new version of EPPIC on July 2, 2025. Compared to the previous version, new commands have been added, the behavior of existing commands has been improved (in a backward-compatible way), and errors in texts have been fixed. Since EPPIC has only been briefly mentioned on this blog so far, let’s introduce it in more detail.

What is EPPIC

EPPIC (Extensible Provisioning Protocol Interactive Client) is an interactive terminal EPP client, which is developed as part of the FRED system and replaces the older fred-client. The Extensible Provisioning Protocol (EPP), used by EPPIC to communicate with FRED servers, specifies the communication between registrars and the domain registry. Interested members of the public can try it out following the instructions in our public testing environment.

Registrars usually implement their own clients for communication with the registry and integrate them into their systems. EPPIC is a command-line (CLI) tool, suitable mainly for one-time manual operations, but can also be used in shell scripts, for example.

Like fred-client, EPPIC is implemented in Python. It works in currently supported versions 3.9 to 3.13. It is built on a separate library called epplib, which can be used by other client tools written in Python in addition to EPPIC. These can be interactive, like EPPIC, or work fully automatically.

Installation

EPPIC can be installed as a Python package from the server https://pypi.nic.cz/cznic/public. Since EPPIC is a separate CLI tool, it is advisable to use the tool pipx or a similar one.

Interactive mode

The interactive mode of EPPIC largely imitates the shell. It displays a prompt to inform the user whether connected to the server and, if applicable, displays the username and the server’s hostname. Commands and their parameters can be entered into the command line using the syntax based on the POSIX standard. In interactive mode, the history of already used commands can be browsed, similarly to the shell. To increase user comfort, color highlighting is applied to various parts of the written command. Suggestions are probably the biggest step forward compared to the fred-client tool for interactive mode users.

Suggestions offer commands, parameters, and allowed values for enumerated parameters. They also take into account which parameters have already been entered. When writing a command, the user is also informed about errors via the status line.

For a complete description of the available commands and their options, the help command is available directly in the EPPIC environment.

Selected parameters can be entered as positional (the entire command can then be, for example, info-domain nic.cz). However, it is more convenient, and in some cases even necessary, to enter named parameters. The entry method complies with POSIX: The parameter name is preceded by two hyphens (e.g., --email), and the parameter value can be separated from its name by a space or an equals sign. Multi-word values should be enclosed in single (') or double (") quotes (e.g. --postal-info.addr.city='New York').

For repeated use, it is advisable to prepare a configuration file, which can contain login details, settings for input, output, logging, etc. For a public test instance of FRED, it might look like this:

To start EPPIC interactively and log in to the first configured session in the file, just enter the eppic command without parameters.

Non-interactive mode

It is also possible to enter a specific EPPIC command (e.g., create-contact, info-domain, …) directly in the shell. In this mode, EPPIC logs into the first configured session, executes the entered command, closes the connection, and exits. The command is given as parameters to the eppic program, for example:

However, if you are specifying named parameters within the EPPIC command, don’t forget to insert the -- parameter before the EPPIC command, so that the EPPIC command parameters are not interpreted as program launch options.

What’s new in version 3.1.0

We would like to inform especially current EPPIC users about the changes done in the new version. Their complete overview is available in the changelog.

Sessions

Above all, working with sessions in the program runtime has been significantly improved.

In EPP, login is split between establishing a TLS connection and
the command. Older versions of EPPIC allowed login with a single login command, which required submitting an existing session, defined either in a configuration file or at runtime using the new-session command.

This simplification concealed some options of the EPP command from the user, such as changing the password (newPW), setting the language of texts from the server (lang), setting the extension URI (extURI), or the client transaction identifier (clTRID).

These options can now be specified using the new epp-login command, whose parameters correspond to the EPP command.

However, it is necessary to set up a session in advance that provides the data required for establishing a TLS connection. The new use-session command is used to load a session. Otherwise, the data from the previous login will be reused.

In each case, the user is informed about a loaded but not logged-in session by a prompt, where the access data is shown in parentheses.

While using the use-session command, immediate login to the specified session can be requested using the --login parameter.

Such a command corresponds to the existing login, which should be replaced by the current epp-login command in the next major version (see Semantic versioning) as the current naming deviates from the convention within EPPIC.

The active session indicated in the prompt, regardless of whether logged in or logged out, can be saved for later use to the list of known sessions with the new save-session command.

The list of known sessions can be printed using the list-sessions command. This list is maintained in the memory of the running process; EPPIC does not change its configuration files. However, from the output of the list-sessions command in YAML format, it is possible to manually copy the session data directly into the configuration file. You only need to pay attention to the indentation of the items in the file and to the fact that list-sessions prints asterisks instead of passwords.

Other selected news

Other changes of the current version are more straightforward; thus, we can discuss them more briefly:

  • It is now possible to remove the mailing address of a contact using the update-contact command by specifying the --mailing.rem=true parameter.
  • The format of the help (help` command) has been modified to list the command with its parameters in a format inspired by POSIX.
  • The transaction identifiers (cl_tr_id and sv_tr_id) are now listed as part of the server response.
  • The type of received message is listed in the output of the poll-req command.
  • If a broken connection is detected when sending a command, EPPIC will attempt to restore the connection and re-send the command.

Conclusion

Hopefully, this article was useful if you are already using EPPIC or considering it. If you are aware of any problems or have an mprovement idea, do not hesitate to contact us at mailto:fred@nic.cz.

Autor:

Zanechte komentář

Všechny údaje jsou povinné. E-mail nebude zobrazen.