Skip to main content

A Python API on top of the EPP protocol.

Project description

PyEPP

A Python API on top of EPP protocol to work with registry systems.

This a Python API on EPP protocol to connect to any registry systems that support EPP and work with it. It supports bellow RFCs:

Installation

pip install pyepp

Usage example

from datetime import date

from pyepp import EppCommunicator
from pyepp.domain import Domain, DomainData, DSRecordData, DNSSECAlgorithm, DigestTypeEnum
from pyepp.contact import Contact, ContactData, PostalInfoData, AddressData

# client_cert and client_key may be omitted where
# a registry does not require certificate based authentication
config = {
    "server": "epp.test.net.nz",
    "port": "700",
    "client_cert": "/PATH/TO/YOUR/CLIENT_CERTIFICATE.crt",
    "client_key": "/PATH/TO/YOUR/CLIENT_KEY.pem"
}

epp = EppCommunicator(**config)

connect = epp.connect()
login = epp.login("user_name", "password")
# Sends a hello request and receive greeting in respond
hello = epp.hello()

contact = Contact(epp)

# Check contacts availability
contact_check = contact.check(['contact-1', 'contact-2'])

# Create a new contact
contact_create_params = ContactData(
    id='contact-1',
    email='epp@example.net.nz',
    postal_info=PostalInfoData(
        name='Registrar 1',
        organization='Registrar 1',
        address=AddressData(
            street_1='18 Registrar Street',
            street_2='Registrar CBD',
            city='Registrar',
            country_code='NZ',
            province='Registrar',
            postal_code='6011'
        ),
    ),
    phone='+64.111111111'
)
contact_create = contact.create(contact_create_params)

# Get contact details
contact_info = contact.info('contact-1')

domain = Domain(epp)
# Check domains availability
domain_check = domain.check(['domain1.nz', 'domain2.nz'])

# Create a new domain name
domain_create_params = DomainData(
    domain_name='example.nz',
    registrant='contact-1',
    admin='contact-1',
    tech='contact-1',
    billing='contact-3',
    period=3,
    host=['01y.test-indwrx2vkicn2otgm3otav5wpnzvjd.co.nz', '0d9x6239.example.co.nz'],
    dns_sec=DSRecordData(
        key_tag=1235,
        algorithm=DNSSECAlgorithm.DSA_SHA_1.value,
        digest_type=DigestTypeEnum.SHA_1.value,
        digest='8cdb09364147aed879d12c68d615f98af5900b73'
    ),
)
domain_create = domain.create(domain_create_params)

# Renew a domain name
renew_domain = domain.renew(domain_name='example-1.nz', expiry_date=date(2024, 2, 23), period=2)

PyEPP CLI

PyEPP also has a command line interface that allows the user to interact with the registry system.

Usage: pyepp [OPTIONS] COMMAND [ARGS]...

  A command line interface to work with PyEpp library.

Options:
  --server TEXT                   [required]
  --port TEXT                     [required]
  --user TEXT                     [required]
  --password TEXT                 [required]
  --client-cert TEXT              [optional]
  --client-key TEXT               [optional]
  -o, --output-format [XML|OBJECT|MIN]
                                  [default: XML]
  --no-pretty
  --dry-run
  -f, --file FILENAME             If provided, the output will be written in
                                  the file.
  -v, --verbose
  -d, --debug
  --version                       Show the version and exit.
  -h, --help                      Show this message and exit.

Commands:
  contact  To work with Contact objects in the registry.
  domain   To work with Domain name objects in the registry.
  host     To work with Host objects in the registry.
  poll     To manage registry service messages.
  run      Receive an XML file containing an EPP XML command and execute it.

Enable shell autocomplete

To enable shell autocompletion for your shell follow the below commands:

Zsh

mkdir -p ~/.pyepp
_PYEPP_COMPLETE=zsh_source pyepp > ~/.pyepp/shell-complete.zsh

Source the file in ~/.zshrc.

. ~/.pyepp/shell-complete.zsh

Bash

mkdir -p ~/.pyepp
_PYEPP_COMPLETE=bash_source pyepp > ~/.pyepp/shell-complete.bash

Source the file in ~/.bashrc.

. ~/.pyepp/shell-complete.bash

Development setup

Clone this project. It's recommended to create virtual environment. Then install the dependencies and development dependencies:

pip install -r requirements.txt
pip install -r requirements.dev.txt

Before creating any pull requests please make sure your code lints and there is no security issues in your code by running below scripts:

./scripts/linter.sh
./scripts/code-security-check.sh

Happy developing!

Contributing

Please refer to CONTRIBUTING.md

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyepp-0.1.2.tar.gz (45.2 kB view details)

Uploaded Source

Built Distribution

pyepp-0.1.2-py3-none-any.whl (40.5 kB view details)

Uploaded Python 3

File details

Details for the file pyepp-0.1.2.tar.gz.

File metadata

  • Download URL: pyepp-0.1.2.tar.gz
  • Upload date:
  • Size: 45.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.10

File hashes

Hashes for pyepp-0.1.2.tar.gz
Algorithm Hash digest
SHA256 cb54a7e03f5b9ce275d222bdf42b1223590693cc729ff8fa37630314453c3677
MD5 fd98dc030f2de659260ed617d0d10c1f
BLAKE2b-256 d6ab9591876bff19729f2a07d1ffc9a3ca58953333465f6250e56a2c9f1d29c9

See more details on using hashes here.

Provenance

File details

Details for the file pyepp-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: pyepp-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 40.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.10

File hashes

Hashes for pyepp-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 743faa36e3a08349e4adb1627fd90819b0dcddf884bd3f2046707eea9be760c5
MD5 4e5a704d5f22f402bfa1b170b2aa2e9e
BLAKE2b-256 d22e75facdcd695be3942e76fa6114cdc2836d00d033e8894896618a70aa8f46

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page