Ошибка python скрипта на dns unbound на базе CentOS 7

Тема в разделе "Linux", создана пользователем imperituroard, 9 янв 2017.

  1. TopicStarter Overlay
    imperituroard
    Оффлайн

    imperituroard Новичок

    Вместе с:
    9 янв 2017
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1
    Добрый день !

    Пытаюсь расширить функционал ДНСа unbound с помощью скриптов python.
    Только выходит ошибка от которой не получается избавиться (
    Пытался гуглить, но с помощью информации из гугла решить проблему не получилось (
    Моя версия python 3.4.5

    Ошибка следующая:

    Код:
    Jan 02 14:25:12 unbound[4519:4] error: pythonmod: Exception occurred in function operate, event: module_event_new
    Traceback (most recent call last):
      File "/scripts/resgen.py", line 44, in operate
        if (qstate.qinfo.qname_str.endswith(".localdomain.")): #query name ends with localdomain
      File "/usr/lib64/python3.4/site-packages/unboundmodule.py", line 98, in _get_qname_str
        def _get_qname_str(self): return dnameAsStr(self.qname)
    TypeError: in method 'dnameAsStr', argument 1 of type 'char const *'
    Jan 02 14:25:12 unbound[4519:4] debug: mesh_run: python module exit state is module_error
    Вот мой скрипт:

    Код:
    def init(id, cfg): return True
    
    def deinit(id): return True
    
    def inform_super(id, qstate, superqstate, qdata): return True
    
    def operate(id, event, qstate, qdata):
        if (event == MODULE_EVENT_NEW) or (event == MODULE_EVENT_PASS):
            if (qstate.qinfo.qname_str.endswith(".localdomain.")): #query name ends with localdomain
                #create instance of DNS message (packet) with given parameters
                msg = DNSMessage(qstate.qinfo.qname_str, RR_TYPE_A, RR_CLASS_IN, PKT_QR | PKT_RA | PKT_AA)
                #append RR
                if (qstate.qinfo.qtype == RR_TYPE_A) or (qstate.qinfo.qtype == RR_TYPE_ANY):
                    msg.answer.append("%s 10 IN A 127.0.0.1" % qstate.qinfo.qname_str)
                #set qstate.return_msg
                if not msg.set_return_msg(qstate):
                    qstate.ext_state[id] = MODULE_ERROR
                    return True
    
                #we don't need validation, result is valid
                qstate.return_msg.rep.security = 2
    
                qstate.return_rcode = RCODE_NOERROR
                qstate.ext_state[id] = MODULE_FINISHED
                return True
            else:
                #pass the query to validator
                qstate.ext_state[id] = MODULE_WAIT_MODULE
                return True
    
        if event == MODULE_EVENT_MODDONE:
            log_info("pythonmod: iterator module done")
            qstate.ext_state[id] = MODULE_FINISHED
            return True
       
        log_err("pythonmod: bad event")
        qstate.ext_state[id] = MODULE_ERROR
        return True


    Может есть мысли как исправить ?
    Буду благодарен за любые советы.

Поделиться этой страницей