I further analyzed the Issue…
i used following to make a “simple” DNS Query:
env DEBUG=1 cpcmd -d domain.net dns:get-hosting-nameservers domain.net
ERROR : Opcenter\Dns\Providers\Hetzner\Module::__construct(): DNS management unavailable until migration to new Hetzner API key
0. Error_Reporter::add_error("DNS management unavailable until migration to new Hetzner API key", )
[/usr/local/apnscp/lib/log_wrapper.php:72]
1. error("DNS management unavailable until migration to new Hetzner API key")
[/usr/local/apnscp/config/custom/dns-hetzner/Module.php:62]
2. Opcenter\Dns\Providers\Hetzner\Module->__construct()
[/usr/local/apnscp/lib/ContextableTrait.php:41]
3. Opcenter\Dns\Providers\Hetzner\Module::instantiateContexted(Auth_Info_User, [username:"domain_admin", domain:"domain.net", level:2, site_id:3, group_id:1004, user_id:9997, id:"xACuLO74kYAKiU0rZfCuMajL8rWooUus", hotworker:null, language:"en_US.UTF-8", ])
[/usr/local/apnscp/lib/Module/Provider.php:34]
4. Module\Provider::get("dns", "hetzner", Auth_Info_User, [username:"domain_admin", domain:"domain.net", level:2, site_id:3, group_id:1004, user_id:9997, id:"xACuLO74kYAKiU0rZfCuMajL8rWooUus", ])
[/usr/local/apnscp/lib/modules/dns.php:201]
5. Dns_Module->_proxy()
[/usr/local/apnscp/lib/Module/Skeleton/Standard.php:105]
6. Module\Skeleton\Standard::autoloadModule(Auth_Info_User, [username:"domain_admin", domain:"domain.net", level:2, site_id:3, group_id:1004, user_id:9997, id:"xACuLO74kYAKiU0rZfCuMajL8rWooUus", hotworker:null, language:"en_US.UTF-8", ])
[/usr/local/apnscp/lib/apnscpfunction.php:612]
7. apnscpFunctionInterceptor->load_module("dns")
[/usr/local/apnscp/lib/apnscpfunction.php:815]
8. apnscpFunctionInterceptor->get_instance("dns")
[/usr/local/apnscp/lib/apnscpfunction.php:744]
9. apnscpFunctionInterceptor->validate_functions("dns")
[/usr/local/apnscp/lib/apnscpfunction.php:1068]
10. apnscpFunctionInterceptor->verify_args("dns_get_hosting_nameservers", ["domain.net"])
[/usr/local/apnscp/lib/CLI/cmd.php:52]
11. CLI\__call("dns_get_hosting_nameservers", ["domain.net"])
[/usr/local/apnscp/lib/CLI/cmd.php:574]
12. CLI\main()
[/usr/local/apnscp/bin/cmd:7]
(442eee88-74bc-5c1c-a947-7421deda29f6 GuzzleHttp\Exception\ClientException) EXCEPTION: Client error: `GET https://api.hetzner.cloud/v1/zones/domain.net` resulted in a `401 Unauthorized` response:
{"error":{"code":"unauthorized","details":null,"message":"the token you have provided is invalid"}}
[/usr/local/apnscp/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:111]
0. GuzzleHttp\Exception\RequestException::create(GuzzleHttp\Psr7\Request, GuzzleHttp\Psr7\Response, null, null)
[/usr/local/apnscp/vendor/guzzlehttp/guzzle/src/Middleware.php:72]
1. GuzzleHttp\Middleware::GuzzleHttp\{closure}(GuzzleHttp\Psr7\Response)
[/usr/local/apnscp/vendor/guzzlehttp/promises/src/Promise.php:209]
2. GuzzleHttp\Promise\Promise::callHandler(1, GuzzleHttp\Psr7\Response, null)
[/usr/local/apnscp/vendor/guzzlehttp/promises/src/Promise.php:158]
3. GuzzleHttp\Promise\Promise::GuzzleHttp\Promise\{closure}()
[/usr/local/apnscp/vendor/guzzlehttp/promises/src/TaskQueue.php:52]
4. GuzzleHttp\Promise\TaskQueue->run(true)
[/usr/local/apnscp/vendor/guzzlehttp/promises/src/Promise.php:251]
5. GuzzleHttp\Promise\Promise->invokeWaitFn()
[/usr/local/apnscp/vendor/guzzlehttp/promises/src/Promise.php:227]
6. GuzzleHttp\Promise\Promise->waitIfPending()
[/usr/local/apnscp/vendor/guzzlehttp/promises/src/Promise.php:272]
7. GuzzleHttp\Promise\Promise->invokeWaitList()
[/usr/local/apnscp/vendor/guzzlehttp/promises/src/Promise.php:229]
8. GuzzleHttp\Promise\Promise->waitIfPending()
[/usr/local/apnscp/vendor/guzzlehttp/promises/src/Promise.php:69]
9. GuzzleHttp\Promise\Promise->wait()
[/usr/local/apnscp/vendor/guzzlehttp/guzzle/src/Client.php:189]
10. GuzzleHttp\Client->request("GET", "zones/domain.net", [[User-Agent:"webCP@domain.net 3.2", Accept:"application/json", Authorization:"Bearer fsbqJEO7TRFgJEZ8kMbrg8p3lB0OdZky"], json:null, synchronous:true])
[/usr/local/apnscp/config/custom/dns-hetzner/Api.php:58]
11. Opcenter\Dns\Providers\Hetzner\Api->do("GET", "zones/domain.net")
[/usr/local/apnscp/config/custom/dns-hetzner/Module.php:321]
12. Opcenter\Dns\Providers\Hetzner\Module->populateZoneMetaCache("domain.net")
[/usr/local/apnscp/config/custom/dns-hetzner/Module.php:371]
13. Opcenter\Dns\Providers\Hetzner\Module->getZoneMeta("domain.net", "authoritative_nameservers")
[/usr/local/apnscp/config/custom/dns-hetzner/Module.php:388]
14. Opcenter\Dns\Providers\Hetzner\Module->get_hosting_nameservers("domain.net")
[/usr/local/apnscp/lib/Module/Skeleton/Standard.php:146]
15. Module\Skeleton\Standard->_invoke("get_hosting_nameservers", ["domain.net"])
[/usr/local/apnscp/lib/apnscpfunction.php:996]
16. apnscpFunctionInterceptor->call("dns_get_hosting_nameservers", ["domain.net"])
[/usr/local/apnscp/lib/CLI/cmd.php:55]
17. CLI\__call("dns_get_hosting_nameservers", ["domain.net"])
[/usr/local/apnscp/lib/CLI/cmd.php:574]
18. CLI\main()
[/usr/local/apnscp/bin/cmd:7]
19. GuzzleHttp\Exception\RequestException::create(GuzzleHttp\Psr7\Request, GuzzleHttp\Psr7\Response, null, null)
[/usr/local/apnscp/vendor/guzzlehttp/guzzle/src/Middleware.php:72]
20. GuzzleHttp\Middleware::GuzzleHttp\{closure}(GuzzleHttp\Psr7\Response)
[/usr/local/apnscp/vendor/guzzlehttp/promises/src/Promise.php:209]
21. GuzzleHttp\Promise\Promise::callHandler(1, GuzzleHttp\Psr7\Response, null)
[/usr/local/apnscp/vendor/guzzlehttp/promises/src/Promise.php:158]
22. GuzzleHttp\Promise\Promise::GuzzleHttp\Promise\{closure}()
[/usr/local/apnscp/vendor/guzzlehttp/promises/src/TaskQueue.php:52]
23. GuzzleHttp\Promise\TaskQueue->run(true)
[/usr/local/apnscp/vendor/guzzlehttp/promises/src/Promise.php:251]
24. GuzzleHttp\Promise\Promise->invokeWaitFn()
[/usr/local/apnscp/vendor/guzzlehttp/promises/src/Promise.php:227]
25. GuzzleHttp\Promise\Promise->waitIfPending()
[/usr/local/apnscp/vendor/guzzlehttp/promises/src/Promise.php:272]
26. GuzzleHttp\Promise\Promise->invokeWaitList()
[/usr/local/apnscp/vendor/guzzlehttp/promises/src/Promise.php:229]
27. GuzzleHttp\Promise\Promise->waitIfPending()
[/usr/local/apnscp/vendor/guzzlehttp/promises/src/Promise.php:69]
28. GuzzleHttp\Promise\Promise->wait()
[/usr/local/apnscp/vendor/guzzlehttp/guzzle/src/Client.php:189]
29. GuzzleHttp\Client->request("GET", "zones/domain.net", [[User-Agent:"webCP@domain.net 3.2", Accept:"application/json", Authorization:"Bearer fsbqJEO7TRFgJEZ8kMbrg8p3lB0OdZky"], json:null, synchronous:true])
[/usr/local/apnscp/config/custom/dns-hetzner/Api.php:58]
30. Opcenter\Dns\Providers\Hetzner\Api->do("GET", "zones/domain.net")
[/usr/local/apnscp/config/custom/dns-hetzner/Module.php:321]
31. Opcenter\Dns\Providers\Hetzner\Module->populateZoneMetaCache("domain.net")
[/usr/local/apnscp/config/custom/dns-hetzner/Module.php:371]
32. Opcenter\Dns\Providers\Hetzner\Module->getZoneMeta("domain.net", "authoritative_nameservers")
[/usr/local/apnscp/config/custom/dns-hetzner/Module.php:388]
33. Opcenter\Dns\Providers\Hetzner\Module->get_hosting_nameservers("domain.net")
[/usr/local/apnscp/lib/Module/Skeleton/Standard.php:146]
34. Module\Skeleton\Standard->_invoke("get_hosting_nameservers", ["domain.net"])
[/usr/local/apnscp/lib/apnscpfunction.php:996]
35. apnscpFunctionInterceptor->call("dns_get_hosting_nameservers", ["domain.net"])
[/usr/local/apnscp/lib/CLI/cmd.php:55]
36. CLI\__call("dns_get_hosting_nameservers", ["domain.net"])
[/usr/local/apnscp/lib/CLI/cmd.php:574]
37. CLI\main()
[/usr/local/apnscp/bin/cmd:7]
I recognized that this method still uses the old Token from the old Hetzner API
So i also checked the files
/root/apnscp-vars.yml
/root/apnscp-vars-runtime.yml
and set again the dns-default provider key via
env DEBUG=1 cpcmd scope:set dns.default-provider-key 'averiefiedtokenwith64chars'
Run again
cpcmd -d domain.net dns:get-hosting-nameservers domain.net
with the same result
Debug output shows that the new Hetzner API Url is used, but still the old Authorization:"Bearer
BTW: i´m also unsure that this cpcmd Command is functional, because i didn´t see that i queries the zoneID, it sets directly the domainname as “zone” which doesn´t work with the new API
But the Point is: it still doesn´t use the new dns-default-provider-key