operasoftware / dns-ui

Opera's LDAP-authenticated PowerDNS user interface
Apache License 2.0
282 stars 57 forks source link

"Bad Data:" when autocreate_reverse_records = 1 and reverse domain does not exist #197

Open XANi opened 1 year ago

XANi commented 1 year ago

Problem: If that option is enabled and zone doesn't exist, previous version(sry don't remember which combination of opera DNS and PowerDNS worked) just sent warning about reverse not existing (which is fine, we don't own reverse for all records we need to set), new version doesn't allow to change

version 0.2.7

image

response from PowerDNS:

curl -H"X-API-Key: xyz" http://127.0.1.3:8001/api/v1/servers/localhost/zones/in-addr.arpa. -I
HTTP/1.1 404 Not Found
Transfer-Encoding: chunked
Connection: close
Content-Type: text/plain; charset=utf-8
Server: PowerDNS/4.4.1

https://doc.powerdns.com/authoritative/http-api/zone.html

The response in JSON from ODNS isn't very helpful either:

HTTP/1.1 400 Bad request
Server: nginx/1.18.0
Date: Tue, 14 Feb 2023 13:14:27 GMT
Content-Type: application/json
Transfer-Encoding: chunked
Connection: keep-alive

8d
{
    "errors": [
        {
            "userMessage": "Bad data",
            "internalMessage": "",
            "code": 2
        }
    ]
}
0

stack trace:

2023/02/14 10:08:58 [error] 545#545: *3453 FastCGI sent in stderr: "
PHP message: 1676365738: BadData in /var/www/html/dns-ui-0.2.7/model/zone.php:727
PHP message: 1676365738: Stack trace:
PHP message: 1676365738: #0 /var/www/html/dns-ui-0.2.7/views/api.php(147): Zone->process_bulk_json_rrset_update()
PHP message: 1676365738: #1 /var/www/html/dns-ui-0.2.7/views/api.php(63): API->update_zone_rrsets()
PHP message: 1676365738: #2 /var/www/html/dns-ui-0.2.7/views/api.php(106): API->options()
PHP message: 1676365738: #3 /var/www/html/dns-ui-0.2.7/views/api.php(33): API->zone()
PHP message: 1676365738: #4 /var/www/html/dns-ui-0.2.7/requesthandler.php(62): require('/var/www/html/d...')
PHP message: 1676365738: #5 /var/www/html/dns-ui-0.2.3/public_html/init.php(18): require('/var/www/html/d...')
PHP message: 1676365738: #6 {main}" while reading response header from upstream, client: 127.0.0.1, server: _, request: "PATCH /api/v2/zones/example.com. HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.4-fpm.sock:", host: "www.hq-core-dnsmaster.non.3dart.com", referrer: "https://www.example.com.com/zones/example.com?name=tt"
Napsty commented 1 year ago

Can confirm.

[Wed Mar 01 15:24:36.460499 2023] [php7:notice] [pid 25251] [client 10.162.210.49:58281] 1677680676: BadData in /var/dns-ui/model/zone.php:679, referer: http://dnsmgmt-test.example.com/zones/example.com
[Wed Mar 01 15:24:36.460530 2023] [php7:notice] [pid 25251] [client 10.162.210.49:58281] 1677680676: Stack trace:, referer: http://dnsmgmt-test.example.com/zones/example.com
[Wed Mar 01 15:24:36.460536 2023] [php7:notice] [pid 25251] [client 10.162.210.49:58281] 1677680676: #0 /var/dns-ui/views/api.php(147): Zone->process_bulk_json_rrset_update(Object(stdClass)), referer: http://dnsmgmt-test.example.com/zones/example.com
[Wed Mar 01 15:24:36.460670 2023] [php7:notice] [pid 25251] [client 10.162.210.49:58281] 1677680676: #1 /var/dns-ui/views/api.php(63): API->update_zone_rrsets('example.com.'), referer: http://dnsmgmt-test.example.com/zones/example.com
[Wed Mar 01 15:24:36.460829 2023] [php7:notice] [pid 25251] [client 10.162.210.49:58281] 1677680676: #2 /var/dns-ui/views/api.php(106): API->options(Array, Array), referer: http://dnsmgmt-test.example.com/zones/example.com
[Wed Mar 01 15:24:36.460897 2023] [php7:notice] [pid 25251] [client 10.162.210.49:58281] 1677680676: #3 /var/dns-ui/views/api.php(33): API->zone('example.com.'), referer: http://dnsmgmt-test.example.com/zones/example.com
[Wed Mar 01 15:24:36.460923 2023] [php7:notice] [pid 25251] [client 10.162.210.49:58281] 1677680676: #4 /var/dns-ui/requesthandler.php(62): require('/var/dns-ui/vie...'), referer: http://dnsmgmt-test.example.com/zones/example.com
[Wed Mar 01 15:24:36.460974 2023] [php7:notice] [pid 25251] [client 10.162.210.49:58281] 1677680676: #5 /var/dns-ui/public_html/init.php(18): require('/var/dns-ui/req...'), referer: http://dnsmgmt-test.example.com/zones/example.com
[Wed Mar 01 15:24:36.460998 2023] [php7:notice] [pid 25251] [client 10.162.210.49:58281] 1677680676: #6 {main}, referer: http://dnsmgmt-test.example.com/zones/example.com

Works when the PTR Zone is created in PowerDNS. Other workaround is probably to disable the auto-creation of PTR records by setting autocreate_reverse_records = 0 in config.ini, as @XANi mentioned, but haven't tested this.