feat(integrations): add Hostinger (hPanel) host provider with domain mapping — Resolves #877#1194
Conversation
…mapping Adds a new Hostinger integration that uses Hostinger's public API (https://developers.hostinger.com) to manage DNS records for subdomain network sites and mapped custom domains. The integration registers a domain-mapping capability that: - Adds a CNAME record to the matching Hostinger zone when a new subsite is created. - Adds an A/CNAME record when a customer maps a domain that is hosted on Hostinger. - Deletes those records when subsites or mappings are removed. - Surfaces the live Hostinger zone records on the domain-mapping comparison table. - Skips any zone that is not in the configured Hostinger account so the integration never modifies DNS it does not own. Authentication is a single Bearer API token (WU_HOSTINGER_API_TOKEN) created in hPanel under Account -> API. AutoSSL is declared as supported because Hostinger issues SSL certificates automatically for hostnames that resolve to its infrastructure. Includes the official Hostinger SVG wordmark, a wizard instructions partial that walks the user through token generation and explains the scope (and the deliberate out-of-scope areas: WP update controls, CDN toggles, email accounts), and 29 unit tests covering construction, detection, connection testing, zone lookup, record naming, and the four domain/subdomain lifecycle handlers. Resolves #877
|
Warning Rate limit exceeded
You’ve run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (7)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Performance Test Results Performance test results for 843b5b8 are in 🛎️! Note: the numbers in parentheses show the difference to the previous (baseline) test run. Differences below 2% or 0.5 in absolute values are not shown. URL:
|
|
Companion PRs for Hostinger integration (issue #877):
Each PR attaches to the same core aidevops.sh v3.15.38 plugin for OpenCode v1.14.48 with gpt-5.5 spent 4h 10m and 15,815 tokens on this as a headless worker. |
🔨 Build Complete - Ready for Testing!📦 Download Build Artifact (Recommended)Download the zip build, upload to WordPress and test:
🌐 Test in WordPress Playground (Very Experimental)Click the link below to instantly test this PR in your browser - no installation needed! Login credentials: |
Summary
First of three PRs for #877 (hPanel/Hostinger integration). This one lands the core provider and domain-mapping capability inside
inc/integrations/providers/hostinger/, matching the modular integrations architecture introduced in 2.5.0.The two follow-up PRs (filed against
ultimate-multisite-domain-sellerandultimate-multisite-multi-tenancy) layer additional capability modules on top of the sameHostinger_Integrationregistered here — so they share a single API token credential.What this PR adds
WP_Ultimo\Integrations\Providers\Hostinger\Hostinger_Integration— provider class with a Bearer-token API client (hostinger_api_call()), credential constantWU_HOSTINGER_API_TOKEN, and atest_connection()that hits/api/domains/v1/portfolio.Hostinger_Domain_Mappingcapability module wired towu_add_domain,wu_remove_domain,wu_add_subdomain,wu_remove_subdomain, and thewu_domain_dns_get_recordfilter. Uses Hostinger'sPUT /api/dns/v1/zones/{domain}non-destructive append (overwrite: false) for adds, andDELETEfor removes.find_root_domain()queries/api/domains/v1/portfolioand only acts when the target hostname falls under a zone present in the configured account. Zones not in the portfolio are logged and skipped — the integration never modifies DNS it does not own.views/wizards/host-integrations/hostinger-instructions.phpexplaining token generation, scope and the explicit out-of-scope items (WP update controls, CDN toggles, email accounts — none of which are exposed by the public Hostinger API today).assets/img/hosts/hostinger.svg.What this PR deliberately does not do
ultimate-multisite-domain-sellerultimate-multisite-multi-tenancyVerification
The pre-existing
Integration_Registry_Test::test_each_integration_has_domain_mapping_capabilityfailure is unrelated to this PR — it asserts every integration owns adomain-mappingcapability, which is incorrect foramazon-ses(transactional-email only). That failure is reproducible onmainat the same commit.References
Resolves #877
aidevops.sh v3.15.38 plugin for OpenCode v1.14.48 with gpt-5.5 spent 3h 45m and 15,815 tokens on this as a headless worker.