2013-12-05 2 views
1

Я пытаюсь написать собственный трубопровод для powerdns, но не могу заставить его работать правильно. Я начинаю pdn_server с моим бэкэндом и попытаться проверить его с помощью команды:PowerDNS не получил ответ от бэкэнда канала

# nslookup example.com 127.0.0.1 

и

# dig @127.0.0.1 example.com 

Первой проблема заключается в том, что первый запрос бакэнд приходит с типом «SOA» (базовая аби версией 2):

Q example.com IN SOA -1 127.0.0.1 0.0.0.0 

Я, хотя «Хорошо, давайте начать с SOA» и попытаемся написать часть кода. В отладочном состоянии я могу видеть, что начальный сервер начал, получил запрос и отправил ответ на pdns. Но похоже, что что-то идет не так, и pdns этого не понимает. Не могу понять, в чем проблема. Исходный код и отладки заключается в следующем:

#!/usr/bin/python 

from sys import stdin, stdout, stderr 

data = stdin.readline() 
stdout.write("OK\tCC DNS Backend\n") 
stdout.flush() 

stderr.write("$$$ Main loop started...\n") 

while True: 
    line = stdin.readline().strip() 

    kind, qname, qclass, qtype, id, ip, mask = line.split('\t') 

    if kind == 'Q': 
     stderr.write('$$$ Got request ' + qname + '\n') 
     if qtype != 'SOA': 
      r = "DATA\t'+qname+'\t'+qtype+'\t'+qclass+'\t'+'127.0.0.1\n" 
      stderr.write(r) 
      stdout.write(r) 
     else: 
      stderr.write("$$$ Sending SOA\n") 
      r = "DATA\texample.com\tIN\tSOA\t86400\t1\tahu.example.com ns1.example.com 2008080300 1800 3600 604800 3600\n" 
      stdout.write(r) 
      stderr.write(r) 

     stdout.write("END\n") 
     stderr.write("END\n") 

отладки:

Dec 05 15:36:43 Done launching threads, ready to distribute questions 
Dec 05 15:36:49 Query: 'Q example.com IN SOA -1 127.0.0.1 0.0.0.0' 
$$$ Got request example.com 
$$$ Sending SOA 
DATA example.com IN SOA 86400 1 ahu.example.com ns1.example.com 2008080300 1800 3600 604800 3600 
END 
$$$ Main loop started... 
Dec 05 15:36:49 Backend launched with banner: OK CC DNS Backend 
$$$ Main loop started... 
Dec 05 15:36:49 Backend launched with banner: OK CC DNS Backend 
Dec 05 15:36:54 Query: 'Q example.com IN SOA -1 127.0.0.1 0.0.0.0' 
$$$ Got request example.com 
$$$ Sending SOA 
DATA example.com IN SOA 86400 1 ahu.example.com ns1.example.com 2008080300 1800 3600 604800 3600 
END 
Dec 05 15:36:59 Query: 'Q example.com IN SOA -1 127.0.0.1 0.0.0.0' 
$$$ Got request example.com 
$$$ Sending SOA 
DATA example.com IN SOA 86400 1 ahu.example.com ns1.example.com 2008080300 1800 3600 604800 3600 
END 

ответ

0

Проблема заключалась в буферном ввода-вывода Python. список рассылки пользователи дали ответ - изменить строку:

#!/usr/bin/python 

к

#!/usr/bin/python -u 

'-u' отключить буферизацию.

Смежные вопросы