Пример #1
0
def __format_additionals(additional):
    """
    helper function to "reformat" linked objects as named dict
    
    @param additional: Array of additional items
    
    @return: dict of additional objects
    """
    formated_additional = {
        'contacts' : {},
        'hosts' : {},
        'registrars' : {}
    }

    if additional :
        for item in additional :
            if isinstance(item, objects.Contact) :
                formater.filterDisclosed(item)
                formated_additional['contacts'][item.roid] = item
            elif isinstance(item, objects.Host) :
                formated_additional['hosts'][item.name] = item
            elif isinstance(item, objects.Registrar) :
                formated_additional['registrars'][item.roid] = item

    return formated_additional
Пример #2
0
def format_contact(contact):
    """
    format object of type contact
    add type as '!type' key and filters all internal id data  
    
    @param contact: Contact object to format
    
    @return: formated contact as dict
    """
    formater.filterDisclosed(contact)
    x = objects.objref.todict(contact)
    x['!type'] = 'Contact'
    formater.filterROID(x)
    return x
Пример #3
0
def format(result):
    """
    function to format given Result object to HTML
    iterate over given Result object and format objects.
    
    @param result: Result object
    
    @return: Flask Response Object of converted Result object
    """
    out = header()
    for item in result.items :
        if isinstance(item, objects.Domain) :
            out += format_domain(item, result.additional)
        elif isinstance(item, objects.Contact) :
            formater.filterDisclosed(item)
            out += format_contact(item, result.additional)
        elif isinstance(item, objects.Host) :
            out += format_host(item, result.additional)
        elif isinstance(item, objects.Registrar) :
            out += format_registrar(item, result.additional)
        else :
            raise formater.Error('Unknown object given: ' + str(item))
        out += LF

    out += LF

    for item in result.additional :
        if isinstance(item, objects.Domain) :
            out += format_domain(item, result.additional)
        elif isinstance(item, objects.Contact) :
            formater.filterDisclosed(item)
            out += format_contact(item, result.additional)
        elif isinstance(item, objects.Host) :
            out += format_host(item, result.additional)
        elif isinstance(item, objects.Registrar) :
            out += format_registrar(item, result.additional)
        else :
            raise formater.Error('Unknown object given: ' + str(item))
        out += LF

    resp = flask.make_response(out, 200)
    resp.headers['Content-Type'] = 'text/plain'
    return resp
Пример #4
0
def format(result):
    """
    function to format given Result object to HTML
    iterate over given Result object and preformat objects.
    render to HTML by jinja2
    
    @param result: Result object
    
    @return: Flask Response Object of converted Result object
    """
    domains = []
    contacts = []
    hosts = []
    registrars = []

    for item in result.items :
        if isinstance(item, objects.Domain) :
            domains.append(format_domain(item))
        elif isinstance(item, objects.Contact) :
            formater.filterDisclosed(item)
            contacts.append(item)
        elif isinstance(item, objects.Host) :
            hosts.append(item)
        elif isinstance(item, objects.Registrar) :
            registrars.append(item)
        else :
            raise formater.Error('Unknown object given: ' + str(item))

    formated_additional = __format_additionals(result.additional)
    out = render_template('view.html', domains = domains, contacts = contacts,
                                       hosts = hosts, registrars = registrars,
                                       additional = formated_additional)

    resp = flask.make_response(out, 200)
    resp.headers['Content-Type'] = 'text/html'
    return resp
Пример #5
0
def format_contact(d, contact, parent):
    """
    format object of type contact
    add additional contact:object node to given parent
    
    @param d: Frame object
    @param contact: Contact object
    @param parent: parent node in Frame object    
    """
    formater.filterDisclosed(contact)
    contactEl = d._addElement('contact:object', parent)
    contactEl.setAttribute('xmlns:contact', 'urn:ietf:params:xml:ns:rwsContact-1.0')
    contactEl.setAttribute('href', '/domain/' + contact.roid)
    d._addElement('contact:id', contactEl, contact.roid)
    for status in contact.status :
        statusEl = d._addElement('contact:status', contactEl)
        statusEl.setAttribute('s', status)

    for postalInfo in contact.postalInfo :
        postalInfoEl = d._addElement('contact:postalInfo', contactEl)
        postalInfoEl.setAttribute('type', postalInfo.type)
        if 'name' not in postalInfo.disclose and postalInfo.name :
            d._addElement('contact:name', postalInfoEl, postalInfo.name)

        if 'org' not in postalInfo.disclose and postalInfo.org :
            d._addElement('contact:org', postalInfoEl, postalInfo.org)

        if 'addr' not in postalInfo.disclose :
            addrEl = d._addElement('contact:addr', postalInfoEl)
            if 'street' not in postalInfo.disclose :
                for street in postalInfo.addr.street :
                    d._addElement('contact:street', addrEl, street)

            if 'city' not in postalInfo.disclose :
                d._addElement('contact:city', addrEl, postalInfo.addr.city)

            if 'sp' not in postalInfo.disclose :
                d._addElement('contact:sp', addrEl, postalInfo.addr.sp)

            if 'pc' not in postalInfo.disclose :
                d._addElement('contact:pc', addrEl, postalInfo.addr.pc)

            if 'cc' not in postalInfo.disclose :
                d._addElement('contact:cc', addrEl, postalInfo.addr.cc)

            if not addrEl.hasChildNodes() :
                addrEl.unlink()

    if not postalInfoEl.hasChildNodes() :
        postalInfoEl.unlink()

    if 'voice' not in contact.disclose and contact.voice :
        voiceEl = d._addElement('contact:voice', contactEl, contact.voice.number)
        if contact.voice.extension:
            voiceEl.setAttribute('x', contact.voice.extension)

    if 'fax' not in contact.disclose and contact.fax :
        faxEl = d._addElement('contact:fax', contactEl, contact.fax.number)
        if contact.fax.extension:
            faxEl.setAttribute('x', contact.fax.extension)

    if 'email' not in contact.disclose and contact.email :
        d._addElement('contact:email', contactEl, contact.email)

    for registrar in contact.registrar :
        registrarEl = d._addElement('contact:registrar', contactEl, registrar.roid)
        registrarEl.setAttribute('type', registrar.type)
        registrarEl.setAttribute('href', '/registrar/' + registrar.roid)

    if contact.crDate :
        d._addElement('contact:crDate', contactEl, contact.crDate)

    if contact.upDate :
        d._addElement('contact:upDate', contactEl, contact.upDate)

    if contact.trDate :
        d._addElement('contact:trDate', contactEl, contact.trDate)