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.
If the random dns challenge string happens to contain 'id',
the parsing method passed a broken, mingled mix of the
record's data and id field, instead of just the id. As a result,
deleting the TXT record failed. We now specifically look for
'"id":', which cannot appear as part of the challenge string.
- Fix array handling for 3+ domains by detecting if content is already
an array and extracting all existing values correctly
- Restructure code following dns_cf.sh best practices
- Add better debug output ("Getting txt records", "Adding record")
- Improve error handling and make error messages consistent
- Ensure wildcard certificates work correctly with multiple TXT values
The previous implementation used simple string trimming which only
worked for single-value content fields. When content was already an
array (2nd domain onwards), only the first character was extracted,
causing data loss and failures for 3+ domains.
Now properly detects array vs string format using grep and extracts
all existing values before appending new ones, preserving all TXT
records.
handle the case of metadata 404 in old api domains
fix index of domain start
fix shfmt
Revert "handle the case of metadata 404 in old api domains"
This reverts commit 9fe4616664.
fix 404 on dot ad hyphen
fix shfmt