The first time I tried this, I did --test with -d <my.dom> -d <alt.my.dom>. It worked, but it failed to remove the TXT record for the alt domain even though there was NO error. Checking the code closer I noticed dns_zoneedit.sh is using _get for create and _post for delete ("DELETE" != GET). I haven't been able to reproduce this, so _post IS working for delete most of the time (I've not tried it for create). You have "Replace the usage of the get method to post in order to get better protection of id and token." so I'm not sure if this is intentional?
If you tell ZoneEdit to delete a non-existent TXT record, it will report HTTP code 200, success. So that might give an idea on why the delete "failed successfully".
ZoneEdit is enforcing a minimum 10 second delay to create or delete TXT records with the same host name. This breaks wildcard support. I have an idea of how I would fix this in the code that isn't just a sleep 10. I haven't spent enough time learning acme.sh's hooks, but you might have a better idea of what acme.sh expects. I'm not entirely sure I will be using wildcards. My internal LAN has a lot of cname's so I thought it might be useful there, otherwise my external end points are limited.
OPNSense is a lot different than Pfsense, there is no inc file for instance. Not sure I will be running acme.sh there. I might just do a SSH deploy from another system.
https://github.com/opnsense/plugins/tree/master/security/acme-client/src/opnsense/mvc/app
Just grepping for "FreeDNS" for example...
./library/OPNsense/AcmeClient/LeValidation/DnsFreedns.php: * FreeDNS API
./controllers/OPNsense/AcmeClient/forms/dialogValidation.xml: <label>FreeDNS</label>
./models/OPNsense/AcmeClient/AcmeClient.xml: <dns_freedns>FreeDNS</dns_freedns>
I appreciate your script. Regards.