{"id":22631670,"url":"https://github.com/getpinga/tembo","last_synced_at":"2025-06-28T17:36:01.678Z","repository":{"id":65155895,"uuid":"584725016","full_name":"getpinga/tembo","owner":"getpinga","description":"Namingo EPP is an open-source PHP EPP client that enables seamless connection to EPP servers for domain registration and management. It supports multiple EPP extensions, integrates easily with any PHP framework, and is fully customizable for various domain registries.","archived":false,"fork":false,"pushed_at":"2025-03-30T18:16:42.000Z","size":732,"stargazers_count":20,"open_issues_count":4,"forks_count":1,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-06-15T09:51:49.797Z","etag":null,"topics":["cctld","epp","epp-client","epp-protocol","epp-registry","forth","gtld","nask","php","registry"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/getpinga.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"ko_fi":"namingo"}},"created_at":"2023-01-03T11:00:58.000Z","updated_at":"2025-06-12T13:29:48.000Z","dependencies_parsed_at":"2023-12-12T11:30:59.476Z","dependency_job_id":"6675f78f-f66b-4a7f-b66b-6db610b19eb6","html_url":"https://github.com/getpinga/tembo","commit_stats":{"total_commits":307,"total_committers":1,"mean_commits":307.0,"dds":0.0,"last_synced_commit":"20da0fb84d60fb000caf58f194522115c802d4b4"},"previous_names":[],"tags_count":46,"template":false,"template_full_name":null,"purl":"pkg:github/getpinga/tembo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getpinga%2Ftembo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getpinga%2Ftembo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getpinga%2Ftembo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getpinga%2Ftembo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/getpinga","download_url":"https://codeload.github.com/getpinga/tembo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getpinga%2Ftembo/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262470255,"owners_count":23316465,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cctld","epp","epp-client","epp-protocol","epp-registry","forth","gtld","nask","php","registry"],"created_at":"2024-12-09T02:10:40.838Z","updated_at":"2025-06-28T17:36:01.658Z","avatar_url":"https://github.com/getpinga.png","language":"PHP","readme":"# Namingo EPP Client\n\n[![StandWithUkraine](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/badges/StandWithUkraine.svg)](https://github.com/vshymanskyy/StandWithUkraine/blob/main/docs/README.md)\n\n[![SWUbanner](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/banner2-direct.svg)](https://github.com/vshymanskyy/StandWithUkraine/blob/main/docs/README.md)\n\n**Namingo EPP** is an open-source PHP EPP client that enables seamless connection to EPP servers for domain registration and management. It supports multiple EPP extensions, integrates easily with any PHP framework, and is fully customizable for various domain registries.\n\nThe client also provides EPP modules for WHMCS and FOSSBilling, supporting all essential features for efficient domain management.\n\n## Installation\n\nTo begin, follow these steps for setting up the EPP Client. This installation process is optimized for a VPS running Ubuntu 22.04/24.04 or Debian 12.\n\n### 1. Install PHP\n\nMake sure PHP is installed on your server. Use the appropriate commands for your operating system.\n\n```bash\napt install -y curl software-properties-common ufw\nadd-apt-repository ppa:ondrej/php\napt update\napt install -y bzip2 composer git net-tools php8.3 php8.3-bz2 php8.3-cli php8.3-common php8.3-curl php8.3-fpm php8.3-gd php8.3-gmp php8.3-imagick php8.3-intl php8.3-mbstring php8.3-opcache php8.3-readline php8.3-soap php8.3-xml unzip wget whois\n```\n\n### 2. Install Tembo Package\n\nNavigate to your project directory and run the following command:\n\n```bash\ncomposer require pinga/tembo\n```\n\n### 3. Configure Access to the Registry\n\nEdit the `examples/Connection.php` file to configure your registry access credentials.\nIf the registry requires SSL certificates and you don't have them, refer to the troubleshooting section for steps to generate `cert.pem` and `key.pem`.\n\n### Using the EPP Client\n\n- You can use the commands provided in the `examples` directory to interact with the EPP server.\n\n- Alternatively, include the `Connection.php` file in your project and build your custom application using the `EppClient` class and its functions.\n\n## Supported EPP Commands\n\n| | domain | contact | host | session |\n|----------|----------|----------|----------|----------|\n| check | ✅ | ✅ | ✅ | login ✅ |\n| checkClaims | ✅ | N/A | N/A | logout ✅ |\n| info | ✅ | ✅ | ✅ | poll ✅ |\n| create | ✅ | ✅ | ✅ | hello ✅ |\n| createDNSSEC | ✅ | N/A | N/A | keep-alive ✅ |\n| createClaims | ✅ | N/A | N/A | new password ✅ |\n| update | N/A | ✅ | ✅ | |\n| updateNS | ✅ | N/A | N/A | |\n| updateContact | ✅ | N/A | N/A | |\n| updateAuthinfo | ✅ | N/A | N/A | |\n| updateStatus | ✅ | ❌ | ❌| |\n| updateDNSSEC | ✅ | N/A | N/A | |\n| renew | ✅ | N/A | N/A | |\n| delete | ✅ | ✅ | ✅ |  |\n| transferRequest | ✅ | ❌ | ❌ | |\n| transferQuery | ✅ | ❌ | ❌ | |\n| transferApprove | ✅ | ❌ | ❌ | |\n| transferReject | ✅ | ❌ | ❌ | |\n| transferCancel | ✅ | ❌ | ❌ | |\n| rgp:restore | ✅ | N/A | N/A | |\n| rgp:report | ✅ | N/A | N/A | |\n\n## Supported Connection Types\n\n| type | status |\n|----------|----------|\n| EPP over TLS/TCP | ✅ |\n| EPP over HTTPS | ✅ |\n| RRI | ✅ |\n| TMCH | ✅ |\n| REGRR | ❌ |\n\n## Registry Support (36 backends and counting)\n\n| Registry | TLDs | Extension | Status | TODO |\n|----------|----------|----------|----------|----------|\n| Generic RFC EPP | any | | ✅ | |\n| AFNIC | .fr/others | FR | ✅ | |\n| CARNET | .hr | HR | ✅ | |\n| Caucasus Online | .ge | | ✅ | |\n| CentralNic | all | | ✅ | |\n| CoCCA | all | | ✅ | |\n| CORE/Knipp | all | | ✅ | |\n| DENIC | .de | | ✅ | |\n| Domicilium | .im | | ✅ | |\n| DOMREG | .lt | LT | 🚧 | work on extensions |\n| DRS.UA | all | | ✅ | |\n| EURid | .eu | EU | ✅ | |\n| FORTH-ICS | .gr, .ελ | GR | ✅ | |\n| FRED | .cz/any | FRED | ✅ | domain update NS/DNSSEC |\n| GoDaddy Registry | all | | ✅ | |\n| Google Nomulus | all | | ✅ | |\n| Hostmaster | .ua | UA | ✅ | |\n| Identity Digital | all | | ✅ | |\n| IIS | .se, .nu | SE | ✅ | |\n| HKIRC | .hk | HK | ✅ | |\n| NASK | .pl | PL | ✅ | |\n| Namingo | all | | ✅ | |\n| NIC Chile | .cl | | ✅ | |\n| NIC Mexico | .mx | MX | ✅ | |\n| NIC.LV | .lv | LV | ✅ | |\n| NORID | .no | NO | ✅ | |\n| .PT | .pt | PT | ✅ | |\n| Registro.it | .it | IT | ✅ | |\n| RoTLD | .ro | | ✅ | |\n| RyCE | all | | ✅ | |\n| SIDN | all | | ✅ | |\n| SWITCH | .ch, .li | | ✅ | |\n| Traficom | .fi | FI | ✅ | only org contacts |\n| Verisign | all | VRSN | ✅ | |\n| ZADNA | .za |  | ✅ | |\n| ZDNS | all |  | ✅ | |\n\n## Integration with billing systems\n\nWould you like to see any registry added as a WHMCS/FOSSBilling module? Or an EPP module for any other billing system? Simply create an [issue](https://github.com/getpinga/tembo/issues) in this project and let us know.\n\n### WHMCS\n\n| Registry | TLDs | Status | Project |\n|----------|----------|----------|----------|\n| Generic RFC EPP | any | ✅ | [whmcs-epp-rfc](https://github.com/getpinga/whmcs-epp-rfc) |\n| Hostmaster | .ua | ✅ | [whmcs-epp-ua](https://github.com/getpinga/whmcs-epp-ua) |\n| EURid | .eu | ✅ | [whmcs-epp-eurid](https://github.com/getpinga/whmcs-epp-eurid) |\n\n### FOSSBilling\n\n| Registry | TLDs | Status | Project |\n|----------|----------|----------|----------|\n| Generic RFC EPP | any | ✅ | [fossbilling-epp-rfc](https://github.com/getpinga/fossbilling-epp-rfc) |\n| AFNIC | .fr/others | ✅ | [fossbilling-epp-fr](https://github.com/getpinga/fossbilling-epp-fr) |\n| Caucasus Online | .ge | ✅ | [fossbilling-epp-ge](https://github.com/getpinga/fossbilling-epp-ge) |\n| FRED | .cz/any | ✅ | [fossbilling-epp-fred](https://github.com/getpinga/fossbilling-epp-fred) |\n| Hostmaster | .ua | ✅ | [fossbilling-epp-ua](https://github.com/getpinga/fossbilling-epp-ua) |\n\n## Troubleshooting\n\n### EPP Server Access\n\nIf you're unsure whether your system can access the EPP server, you can test the connection using OpenSSL. Try one or both of the following commands:\n\n1. Basic Connectivity Test:\n\n```bash\nopenssl s_client -showcerts -connect epp.example.com:700\n```\n\n2. Test with Client Certificates:\n\n```bash\nopenssl s_client -connect epp.example.com:700 -CAfile cacert.pem -cert cert.pem -key key.pem\n```\n\nReplace `epp.example.com` with your EPP server's hostname and adjust the paths to your certificate files (`cacert.pem`, `cert.pem`, and `key.pem`) as needed. These tests can help identify issues with SSL/TLS configurations or network connectivity.\n\n### Generating an SSL Certificate and Key\n\nIf you do not have an SSL certificate and private key for secure communication with the registry, you can generate one using OpenSSL.\n\n```bash\nopenssl genrsa -out key.pem 2048\nopenssl req -new -x509 -key key.pem -out cert.pem -days 365\n```\n\n**Note:** For production environments, it's recommended to use a certificate signed by a trusted Certificate Authority (CA) instead of a self-signed certificate.\n\n### EPP-over-HTTPS Issues\n\nIf you experience login or other issues with EPP-over-HTTPS registries such as `.eu`, `.fi`, `.hr`, `.it`, or `.lv`, it might be caused by a corrupted or outdated cookie file. Follow these steps to fix it:\n\n```bash\nrm -f /tmp/eppcookie.txt\n```\n\nAfter deleting the cookie file, try logging in again. This will force the creation of a new cookie file and may resolve the issue.\n\n### Need More Help?\n\nIf the steps above don’t resolve your issue, refer to the EPP Client logs (`/path/to/tembo/log`) to identify the specific problem.\n\n## Benchmarking an EPP Server\n\nTo run tests against an EPP server using the Tembo EPP client, follow these steps:\n\n### 1. Configure Your Connection\n\nEdit the file `benchmark/Connection.php` - this file should contain the connection details for the server you want to test. It uses the same format as `examples/Connection.php`.\n\n### 2. Run the Benchmark\n\nFrom the root directory, run `php benchmark/Benchmark.php` - this will execute a series of domain check commands to test your server’s response and performance.\n\n### 3. Customize the Benchmark\n\nYou can modify `benchmark/Benchmark.php` to:\n- Add your own EPP commands\n- Change the number of requests\n- Adjust the test logic\n\nUse this script as a starting point to test and tune your EPP server setup.","funding_links":["https://ko-fi.com/namingo"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetpinga%2Ftembo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgetpinga%2Ftembo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetpinga%2Ftembo/lists"}