dns_czechia: fix syntax errors and API payload format
- Fix missing 'done' in for-loop within _czechia_pick_zone
- Correct variable naming (use _fd_input instead of _fulldomain)
- Update hostname extraction to correctly send "@" for apex domains
- Fix "Invalid domain" error by normalizing zone names in API calls
- Replaced 'tr' for case conversion with internal '_lower_case' function for better POSIX compatibility.
- Cleaned up redundant helper functions and simplified hostname calculation.
- Fixed ShellCheck SC2140 warnings by using properly escaped JSON strings.
- Aligned code formatting with 'shfmt' requirements (indentation and spacing).
- Updated configuration loading to use standard shell variable defaults.
Refactor the Czechia/Zoner DNS API script to ensure stability and better user experience.
Changes:
- Replaced Bash-specific substitutions with POSIX-compliant code (fixes 'Bad substitution' errors on dash/sh).
- Improved JSON payload construction to be more robust across different shell environments.
- Updated hostname logic to correctly use "@" for apex domains.
- Refined error reporting: API error messages are now captured and displayed in English.
- Cleaned up internal debug messages and aligned them with acme.sh standards.
- Optimized zone picking logic for faster matching in multi-zone setups.
dns_czechia: fix POSIX compatibility for Alpine/BusyBox and cleanup
Replace non-POSIX escape sequences in sed with 'tr' for Alpine/BusyBox compatibility.
Remove unnecessary 'export' from local HTTP header variables.
Fix domain normalization to prevent character stripping in Docker tests.
dns_czechia: remove _lower_case helper and use POSIX-safe lowercasing
Replace internal _lower_case calls with tr-based normalization
to avoid helper dependency and follow acme.sh DNS plugin style.
This PR adds a DNS API plugin for CZECHIA.COM / RegZone (ZONER a.s.).
- Supports ACME DNS-01 TXT record management
- Uses official REST API (Swagger)
- Credentials are stored in account.conf for non-interactive renewals
- IP whitelisting is not required for DNS TXT changes used for SSL automation
(per official REST API terms)
Tested with:
- acme.sh v3.x
- Zones: zoner-test.eu
The error response also contains 'name' in 'zone_name' field,
causing false positives. Check for 'dnssec_status' which only
exists in valid zone responses.
- Added _opusdns_api() for all API requests
- Added _opusdns_init() for config initialization
- Removed duplicate code in add/rm functions
- Removed dead code (orphaned lines 173-178)
- Script now 158 lines (was 255, originally 379)
Instead of fetching all zones and matching, iterate through domain
parts and check each against the API until a valid zone is found.
Same approach as GoDaddy DNS plugin.
Example: _acme-challenge.test.example.com
- Try: test.example.com → 404
- Try: example.com → 200 ✓ → zone found!
Script reduced from 304 to 255 lines.
- Fixed jq path: .pagination.has_next_page instead of .has_next_page
- Fixed grep fallback: remove rrsets before extracting zone names
to avoid matching nested 'name' fields
- Simplified has_next_page detection with simple grep -q
- Added debug output for page zones and has_next status
acme.sh handles DNS propagation checking internally via --dnssleep
and _check_dns_record. Custom propagation checks are unnecessary
and can conflict with acme.sh's own timing.
Removed:
- _opusdns_wait_for_propagation() function
- OPUSDNS_Polling_Interval option
- OPUSDNS_Propagation_Timeout option
Script is now consistent with other DNS API implementations
(Cloudflare, AWS, etc.) which don't have custom propagation checks.