Hello!

I am trying to get the OperaDNS UI to work with my PowerDNS installation and
I've run into a potential bug.

OperaDNS uses the API to connect to PowerDNS. I noticed that whenever
I try to insert a record containing dots in its name PowerDNS gives me
an interal server error. So I ran tcpdump to catch the request that is
being sent to the PowerDNS API (confidential info overwritten with
aserisks):

----> snip <----
PATCH /api/v1/servers/localhost/zones/ferdl.test. HTTP/1.1
Host: ************************:8081
X-API-Key: ***************************************
0: Content-Length: 283
Accept: application/json
Content-Type: application/json
Content-Length: 283

{"rrsets":[{"name":"this.is.my.shiny.new.name.ferdl.test.","type":"A","ttl":86400,"changetype":"REPLACE","records":[{"name":"this.is.my.shiny.new.name.ferdl.test.","type":"A","content":"127.0.0.1","disabled":false,"set-ptr":false}],"comments":[{"content":"","account":"********"}]}]}HTTP/1.1
 500 Internal Server Error
Connection: close
Content-Length: 34
Content-Type: application/json
Server: PowerDNS/4.4.1

{"error": "Internal Server Error"}
----> snip <----

This API request leaves me with the following error in the pdns.log:

Mar 16 15:48:10 **** pdns[67880]: [webserver] 759b42ae-4c22-42be-a961-6b27805d9171 HTTP ISE for 
"/api/v1/servers/localhost/zones/ferdl.test.": Exception: GSQLBackend unable to insert 
empty non-terminal rr 'name.ferdl.test' in domain_id 86: Fatal error during query: insert into 
records (type,domain_id,disabled,name,ordername,auth,ttl,prio,content) values 
(null,$1,false,$2,$3,$4,null,null,null): ERROR:  null value in column "type" violates 
not-null constraint DETAIL:  Failing row contains (4835479, 86, name.ferdl.test, null, null, null, 
null, f, null, t).

According to this log entry, the name 'this.is.my.shiny.new.name.ferdl.test' is 
somehow
truncated by PowerDNS so only the last part (name.ferdl.test) is left.

The corresponding Postgres errors are:

Mar 16 15:48:10 **** postgres[69658]: [55-1] 2021-03-16 15:48:10.411 CET [69658] ERROR:  
null value in column "type" violates not-null constraint
Mar 16 15:48:10 **** postgres[69658]: [55-2] 2021-03-16 15:48:10.411 CET 
[69658] DETAIL:  Failing row contains (4835479, 86, name.ferdl.test, null, 
null, null, null, f, null, t).
Mar 16 15:48:10 **** postgres[69658]: [55-3] 2021-03-16 15:48:10.411 CET 
[69658] STATEMENT:  insert into records 
(type,domain_id,disabled,name,ordername,auth,ttl,prio,content) values 
(null,$1,false,$2,$3,$4,null,null,null)

So I'm wondering if I'm doing something wrong or if there's a bug in
the API and/or Postgres backend.

A name like this should be perfectly legal. In fact, there are such names
in our zones (inserted directly into the DB, not via API) and they work
just fine and PowerDNS is able to resolve those names.

Has anybody successfully tried inserting such names into PowerDNS using the API?
I'm using PowerDNS 4.4.1 and Postgres 12.5.

Regards
Ferdiand
--
Ferdinand Goldmann
System Administrator
Information Management

JOHANNES KEPLER
UNIVERSITY LINZ
ferdinand.goldm...@jku.at

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

_______________________________________________
Pdns-users mailing list
Pdns-users@mailman.powerdns.com
https://mailman.powerdns.com/mailman/listinfo/pdns-users

Reply via email to