示例#1
0
    def manage_afterAdd(self, item, container, **kw):
        """Setup properties and sub-objects"""
        # Only run on add, not rename, etc.
        if not base_hasattr(self, 'mqueue'):
            setMailBoxerProperties(self, self.REQUEST, kw)
            # Setup the default checkMail validator chain
            setDefaultValidatorChain(self)

            # Add Archive
            archive = zapi.createObject('listen.ArchiveFactory', self.storage,
                                        title=_(u'List Archive'))
            item._setObject(self.storage, archive)

            # Add moderation queue
            mqueue = zapi.createObject('listen.QueueFactory', self.mailqueue,
                                       title=_(u'Moderation queue'))
            item._setObject(self.mailqueue, mqueue)

            ttool = getToolByName(self, 'portal_types', None)
            if ttool is not None:
                # If the archive/queue are CMF types then we must finish
                # constructing them.
                fti = ttool.getTypeInfo(mqueue)
                if fti is not None:
                    fti._finishConstruction(mqueue)
                fti = ttool.getTypeInfo(archive)
                if fti is not None:
                    fti._finishConstruction(archive)
        MailBoxer.manage_afterAdd(self, self.REQUEST, kw)
    def manage_afterAdd(self, item, container, **kw):
        """Setup properties and sub-objects"""
        # Only run on add, not rename, etc.
        if not base_hasattr(self, 'mqueue'):
            setMailBoxerProperties(self, self.REQUEST, kw)
            # Setup the default checkMail validator chain
            setDefaultValidatorChain(self)

            # Add Archive
            archive = zapi.createObject('listen.ArchiveFactory', self.storage,
                                        title=u'List Archive')
            item._setObject(self.storage, archive)

            # Add moderation queue
            mqueue = zapi.createObject('listen.QueueFactory', self.mailqueue,
                                       title=u'Moderation queue')
            item._setObject(self.mailqueue, mqueue)

            ttool = getToolByName(self, 'portal_types', None)
            if ttool is not None:
                # If the archive/queue are CMF types then we must finish
                # constructing them.
                fti = ttool.getTypeInfo(mqueue)
                if fti is not None:
                    fti._finishConstruction(mqueue)
                fti = ttool.getTypeInfo(archive)
                if fti is not None:
                    fti._finishConstruction(archive)
        MailBoxer.manage_afterAdd(self, self.REQUEST, kw)
示例#3
0
 def topicContent(self):
     """ render the source of the help topic """
     source = zapi.createObject(self.context.type,
                                self.context.source)
     view = zapi.getMultiAdapter((source, self.request))
     html = view.render()
     return html
示例#4
0
 def createServiceObject(self, parent, serviceDict):
     """helper methode to create service instance
     """
     dateNow = datetime.utcnow()
     #if port['port'] == u"389":   ## ldap
     #newService = zapi.createObject(None, 'ikom.service.ServiceLdap')
     #newService.__setattr__("basedn", u'dc=domain,dc=tld')
     if False:
         pass
     elif serviceDict['port'] == u"22":  ## ssh
         newService = zapi.createObject(\
             u'org.ict_ok.components.service.special.ssh.service.ServiceSsh')
     elif serviceDict['port'] == u"80":  ## ssh
         newService = zapi.createObject(\
             u'org.ict_ok.components.service.special.http.service.ServiceHttp')
     else:
         newService = zapi.createObject(\
             u'org.ict_ok.components.service.service.Service')
     newServiceId = u"%s" % (serviceDict['port'])
     parent.__setitem__(newService.getObjectId(), newService)
     #newService.__setattr__("genNagios", True)
     newServiceDc = IZopeDublinCore(newService, None)
     newServiceDc.title = u"%s" % serviceDict['service']
     newServiceDc.created = datetime.utcnow()
     newServiceDc.creators = [u'ikportscan']
     try:
         intPort = int(serviceDict['port'])
         newService.__setattr__("port", intPort)
     except ValueError:
         raise Exception, "port number isn't valid '%s'" % serviceDict[
             'port']
     except TypeError:
         raise Exception, "port number isn't valid '%s'" % serviceDict[
             'port']
     newService.__setattr__("product", unicode(serviceDict['product']))
     newService.__setattr__("ipprotocol",
                            unicode(serviceDict['protocol'.lower()]))
     if serviceDict.has_key('service'):  ## and (len(port['service']) > 0):
         newServiceDc.title = u"%s" % serviceDict['service']
     else:
         newServiceDc.title = u"%s" % serviceDict['port']
     notify(ObjectCreatedEvent(newService))
示例#5
0
    def importAllData(self, xml_str):
        """get data file for all objects"""
        from pprint import pprint
        print "#" * 80
        data_structure = loads(xml_str)
        print 'objects'
        pprint(data_structure['objects'])
        print 'conns'
        pprint(data_structure['conns'])
        print "#" * 80
        for obj in data_structure['objects']:
            print "Obj: ", obj['ikName']
            print "myFactory: ", obj['meta']['myFactory']
            o2 = zapi.createObject(obj['meta']['myFactory'], **obj)
            print o2
            o2.importAllData(obj)
            IBrwsOverview(o2).setTitle(obj['ikName'])
            o2.__post_init__()
            c2 = o2.getFirstContainer()
            print c2
            print "len1: ", len(c2)
            c2[o2.objectID] = o2
            print "len2: ", len(c2)
        #print data_structure
        print "conn"
        my_catalog = zapi.getUtility(ICatalog)
        for conn in data_structure['conns']:
            #(('obj1Id'. 'obj1AttrName'), ('obj2Id'. 'obj2AttrName'))
            ((obj1Id, obj1AttrName), (obj2Id, obj2AttrName)) = conn
            print "()(): ", ((obj1Id, obj1AttrName), (obj2Id, obj2AttrName))
            res1 = my_catalog.searchResults(oid_index=obj1Id)
            res2 = my_catalog.searchResults(oid_index=obj2Id)
            if len(res1) > 0 and len(res2) > 0:
                obj1 = iter(res1).next()
                obj2 = iter(res2).next()
                print "obj1: ", obj1
                print "obj2: ", obj2
                attr1 = getattr(obj1, obj1AttrName, None)
                if attr1 is not None:
                    if type(attr1) is list:
                        attr1.append(obj2)
                    else:
                        attr1 = obj2
                    obj1._p_changed = 1
                    obj2._p_changed = 1
#            for relation in 
#            res = my_catalog.searchResults(oid_index=arg_oid)
#            if len(res) > 0:
#                return iter(res).next().getDcTitle()
#            
        return True
    def testFactory(self):

        self.assertRaises(ComponentLookupError, zapi.createObject, 'foo')

        xmlconfig(StringIO(template % (
            '''
            <factory
               id="foo.bar"
               component="zope.app.component.tests.factory.f"
               />
            '''
            )))

        from factory import X
        self.assertEqual(zapi.createObject('foo.bar').__class__, X)
示例#7
0
    def getIntroduction(self):
        text = self.context.__description__ or self.schema.__doc__
        text = translate(text, context=self.request, default=text)

        # Determine common whitespace ...
        cols = len(re.match('^[ ]*', text).group())
        # ... and clean it up.
        text = re.sub('\n[ ]{%i}' %cols, '\n', text).strip()

        if not text:
            return u''

        # Render the description as ReST.
        source = zapi.createObject('zope.source.rest', text)
        renderer = zapi.getMultiAdapter((source, self.request))
        return renderer.render()
示例#8
0
    def addObject(self, msgHeader, msgOldparent, msgNewparent, msgObj):
        """
        a new object should be created
        """
        print "addObject"
        print "msgHeader: %s" % msgHeader
        print "msgOldparent: %s" % msgOldparent
        print "msgNewparent: %s" % msgNewparent
        print "msgObj: %s" % msgObj
        if msgObj.has_key('myFactory'):
            newObj = zapi.createObject(msgObj['myFactory'])
            print "newObj: %s" % newObj
            print "msgObj['listAttr']: %s" % msgObj['listAttr']

            try:
                ISlave['objectID'].readonly = False
                for i in msgObj['listAttr']:
                    print "atr:  %s = %s" % (i, msgObj['listAttr'][i])
                    newObj.__setattr__(i, msgObj['listAttr'][i])
            finally:
                ISlave['objectID'].readonly = True
            newOid = msgObj['listAttr']['objectID']
            notify(ObjectCreatedEvent(newObj))
            #if (not msgOldparent) and (not msgNewparent):
                ##search from_oid -> ikslave
                #my_catalog = zapi.getUtility(ICatalog)
                #for result in my_catalog.searchResults(
                    #oid_index=msgHeader['from_oid']):
                    #print "result: %s = %s" % (result.ikName, result)
                    #if result.has_key(newOid):
                        #result.__delitem__(newOid)
                    #result[newOid] = newObj
            my_catalog = zapi.getUtility(ICatalog)
            newParentObj = None
            if not msgNewparent: # in root-folder of slave
                res = my_catalog.searchResults(oid_index=msgHeader['from_oid'])
                if len(res) > 0:
                    newParentObj = iter(res).next()
            else:
                res = my_catalog.searchResults(oid_index=msgNewparent)
                if len(res) > 0:
                    newParentObj = iter(res).next()
            if newParentObj and newParentObj.has_key(newOid):
                newParentObj.__delitem__(newOid)
            newParentObj[newOid] = newObj
示例#9
0
def renderText(text, module=None, format=None, dedent=True):
    if not text:
        return u''

    if module is not None:
        if isinstance(module, (str, unicode)):
            module = sys.modules.get(module, None)
        format = getDocFormat(module)

    if format is None:
        format = 'zope.source.stx'

    assert format in _format_dict.values()

    text = dedentString(text)

    source = zapi.createObject(format, text)
    renderer = zapi.getMultiAdapter((source, TestRequest()))
    return renderer.render()
    def addMailBoxerMail(self, folder, id, sender, subject, date, mail):
        # Strip out the list name from the subject, as it serves no purpose
        # in the archive.
        subject = subject.replace('[%s]' % self.getValueFor('title'), '')

        new_message = zapi.createObject('listen.MailFactory',
                                        id, sender, subject, date)
        folder._setObject(id, new_message)
        msg = getattr(folder, id)
        # Adapt message to provide methods for parsing mail and extracting
        # headers
        settable_msg = IMailFromString(msg)
        # This is ugly, but it is the MailBoxer way, last option means no
        # attachments.
        store_attachments = self.archived == 0
        # Set properties on message
        settable_msg.createMailFromMessage(mail, store_attachments)
        zope.event.notify(
            zope.app.event.objectevent.ObjectModifiedEvent(msg))
        
        return msg
示例#11
0
    def addMailBoxerMail(self, folder, id, sender, subject, date, mail):
        # Strip out the list name from the subject, as it serves no purpose
        # in the archive.
        subject = subject.replace('[%s]' % self.getValueFor('title'), '')

        new_message = zapi.createObject('listen.MailFactory',
                                        id, sender, subject, date)
        folder._setObject(id, new_message)
        msg = getattr(folder, id)
        # Adapt message to provide methods for parsing mail and extracting
        # headers
        settable_msg = IMailFromString(msg)
        # This is ugly, but it is the MailBoxer way, last option means no
        # attachments.
        store_attachments = self.archived == 0
        # Set properties on message
        settable_msg.createMailFromMessage(mail, store_attachments)
        zope.event.notify(
            zope.app.event.objectevent.ObjectModifiedEvent(msg))
        
        return msg
 def addMailBoxerFolder(self, context, id, title, btree=True):
     """ Adds an archive-folder using a configured factory
     """
     folder = zapi.createObject('listen.FolderFactory',
                                id, title, btree=btree)
     context._setObject(id, folder)
示例#13
0
    def create(self, data):
        print "SnmpScanWizardForm.create(%s)" % data
        interfaceCnt = self.getInterfaceCnt(data)
        if interfaceCnt and interfaceCnt > 0:
            #interfacesDict = {}
            #for i in range(0, interfaceCnt):
            #interfacesDict[i] = {}
            #oidTuple = (1, 3, 6, 1, 2, 1, 2, 2, 1, 1) # InterfaceIndex
            #snmpList = self.getInterfaceVect(data, oidTuple)
            #if snmpList:
            #for snmpItem in snmpList:
            #interfacesDict[snmpList.index(snmpItem)]['index'] = \
            #int(snmpItem[0][1])
            #oidTuple = (1, 3, 6, 1, 2, 1, 2, 2, 1, 2) # InterfaceDesc
            #snmpList = self.getInterfaceVect(data, oidTuple)
            #if snmpList:
            #for snmpItem in snmpList:
            #interfacesDict[snmpList.index(snmpItem)]['desc'] = \
            #snmpItem[0][1].prettyPrint().strip("'")
            #oidTuple = (1, 3, 6, 1, 2, 1, 2, 2, 1, 4) # InterfaceMtu
            #snmpList = self.getInterfaceVect(data, oidTuple)
            #if snmpList:
            #for snmpItem in snmpList:
            #interfacesDict[snmpList.index(snmpItem)]['mtu'] = \
            #int(snmpItem[0][1])
            #oidTuple = (1, 3, 6, 1, 2, 1, 2, 2, 1, 5) # InterfaceSpeed
            #snmpList = self.getInterfaceVect(data, oidTuple)
            #if snmpList:
            #for snmpItem in snmpList:
            #interfacesDict[snmpList.index(snmpItem)]['speed'] = \
            #int(snmpItem[0][1])
            #oidTuple = (1, 3, 6, 1, 2, 1, 2, 2, 1, 6) # InterfacehysAddress
            #snmpList = self.getInterfaceVect(data, oidTuple)
            #if snmpList:
            #for snmpItem in snmpList:
            #interfacesDict[snmpList.index(snmpItem)]['mac'] = \
            #"%02x:%02x:%02x:%02x:%02x:%02x" % \
            #tuple([ord(i) for i in snmpItem[0][1]])
            #oidTuple = (1, 3, 6, 1, 2, 1, 2, 2, 1, 7) # InterfaceAdminStatus
            #snmpList = self.getInterfaceVect(data, oidTuple)
            #if snmpList:
            #for snmpItem in snmpList:
            #interfacesDict[snmpList.index(snmpItem)]['adminstat'] = \
            #snmpItem[0][1] == 1
            #oidTuple = (1, 3, 6, 1, 2, 1, 2, 2, 1, 8) # InterfaceOperStatus
            #snmpList = self.getInterfaceVect(data, oidTuple)
            #if snmpList:
            #for snmpItem in snmpList:
            #interfacesDict[snmpList.index(snmpItem)]['operstat'] = \
            #snmpItem[0][1] == 1
            #oidTuple = (1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 1) # InterfaceName
            #snmpList = self.getInterfaceVect(data, oidTuple)
            #if snmpList:
            #for snmpItem in snmpList:
            #interfacesDict[snmpList.index(snmpItem)]['name'] = \
            #snmpItem[0][1].prettyPrint().strip("'")
            ## -------------------------------------------
            #if data['indexType'] == u'index':
            #atrList = [i['index'] for i in interfacesDict.values()]
            #atrDict = {}.fromkeys(atrList)
            #if len(atrDict.keys()) != interfaceCnt:
            #self.status = _(u"Error: interface index type 'Interface index' isn't unique")
            #return None
            #elif data['indexType'] == u'mac':
            #atrList = [i['mac'] for i in interfacesDict.values()]
            #atrDict = {}.fromkeys(atrList)
            #if len(atrDict.keys()) != interfaceCnt:
            #self.status = _(u"Error: interface index type 'Ethernet address' isn't unique")
            #return None
            #elif data['indexType'] == u'desc':
            #atrList = [i['desc'] for i in interfacesDict.values()]
            #atrDict = {}.fromkeys(atrList)
            #if len(atrDict.keys()) != interfaceCnt:
            #self.status = _(u"Error: interface index type 'Description' isn't unique")
            #return None
            #elif data['indexType'] == u'name':
            #atrList = [i['name'] for i in interfacesDict.values()]
            #atrDict = {}.fromkeys(atrList)
            #if len(atrDict.keys()) != interfaceCnt:
            #self.status = _(u"Error: interface index type 'Name' isn't unique")
            #return None
            ## -------------------------------------------
            retList = []
            dateNow = datetime.utcnow()
            newInterface = zapi.createObject(\
                u'org.ict_ok.components.interface.interface.Interface')
            newInterfaceDc = IZopeDublinCore(newInterface, None)
            newInterface.ikName = u"ddd1"
            newInterfaceDc.title = u"ddd2"
            newInterfaceDc.created = datetime.utcnow()
            newInterface.__post_init__()
            retList.append(newInterface)
            #for interfaceKey in interfacesDict.keys()[:3]:
            #tmpInterface = interfacesDict[interfaceKey]
            #print "oooo:", tmpInterface
            #dateNow = datetime.utcnow()
            #newInterface = zapi.createObject(\
            #u'org.ict_ok.components.interface.interface.Interface')
            ##notify(ObjectCreatedEvent(newInterface))
            #newInterfaceDc = IZopeDublinCore(newInterface, None)
            #newInterface.ikName = u"%s" % tmpInterface['desc']
            #newInterfaceDc.title = u"%s" % tmpInterface['desc']
            #newInterfaceDc.created = datetime.utcnow()
            #newInterface.ikComment = u"%s" % tmpInterface['name']
            #newInterface.mac = u"%s" % tmpInterface['mac']
            #newInterface.ipv4List = None
            ## -------------------------------
            ##from org.ict_ok.components.snmpvalue.snmpvalue import SnmpValue
            ##from org.ict_ok.components.superclass.interfaces import IBrwsOverview
            ##from zope.app.keyreference.interfaces import IKeyReference
            ##from zope.interface import directlyProvides
            ##newSnmpvalue = zapi.createObject(\
            ##u'org.ict_ok.components.snmpvalue.snmpvalue.SnmpValue')
            ###directlyProvides(newSnmpvalue, IKeyReference)
            ###notify(ObjectCreatedEvent(newSnmpvalue))
            ##newSnmpvalueDc = IZopeDublinCore(newSnmpvalue, None)
            ##newSnmpvalueDc.title = u"%s" % "ddd"
            ##newSnmpvalueDc.created = datetime.utcnow()
            ##newSnmpvalue.__post_init__()
            ###data = {'ikName': u"ddd314"}
            ###obj = SnmpValue(**data)
            ###IBrwsOverview(obj).setTitle(data['ikName'])
            ###obj.__post_init__()
            ### -------------------------------
            ##newInterface.__setitem__(u"ddd", newSnmpvalue)
            ##newInterface.__setitem__(u"ddd", obj)
            #newInterface.__post_init__()
            #retList.append(newInterface)
            return retList
            # -------------------------------------------

        #import pprint
        #print "-" * 80
        #pprint.pprint(interfacesDict)
        #print "-" * 80
        ##print "zzz: '%s'" % ddd
        self.status = _(u"Error: no unique Id")
        return None  #[1,2,3]
示例#14
0
 def addMailBoxerFolder(self, context, id, title, btree=True):
     """ Adds an archive-folder using a configured factory
     """
     folder = zapi.createObject('listen.FolderFactory',
                                id, title, btree=btree)
     context._setObject(id, folder)
示例#15
0
 def addLanguage(self, language):
     'See `IWriteTranslationDomain`'
     catalog = zapi.createObject(u'zope.app.MessageCatalog',
                                 language)
     self[language] = catalog
示例#16
0
文件: nmap.py 项目: mleist/ict-ok.org
    def createObjects(self, hostList, containerObject):
        """
        will use factories to create the objects from the dataDict
        """
        for host in hostList:
            dateNow = datetime.now(berlinTZ)
            newHost = createObject(u'org.ict_ok.components.host.host.Host')
            notify(ObjectCreatedEvent(newHost))
            containerObject.__setitem__(newHost.getObjectId(), newHost)
            dc = IZopeDublinCore(newHost, None)
            dc.creators = [u'ikportscan']
            newHost.ikComment += u"scanner: %s" % (dateNow)
            if host.has_key('hostname'):
                newHost.__setattr__("ikName", host['hostname'])
                newHost.__setattr__("hostname", host['hostname'])
                dc.title = host['hostname']
            else:
                newHost.__setattr__("ikName", host['ipAddress'])
                dc.title = host['ipAddress']
            for i_os in host['oss']:
                os_string = u"%s %s (%s) (%s)" % (i_os['osfamily'],
                                                  i_os['osgen'], i_os['type'],
                                                  i_os['vendor'])
                newHost.osList.append(os_string)
            newHost.__setattr__("genNagios", True)
            dc.created = dateNow

            if host.has_key("interfaces") and len(host['interfaces']) > 0:
                for interfaceDict in host['interfaces']:
                    newInterface = createObject(\
                        u'org.ict_ok.components.interface.interface.Interface')
                    notify(ObjectCreatedEvent(newInterface))
                    newInterfaceId = u"If%s" % (interfaceDict['nbr'])
                    newHost.__setitem__(newInterfaceId, newInterface)
                    #newInterface.__setattr__("description", interfaceDict['name'])
                    #newInterface.__setattr__("ifindex", interfaceDict['nbr'])
                    newInterfaceDc = IZopeDublinCore(newInterface, None)
                    newInterfaceDc.title = u"%s" % interfaceDict['name']
                    newInterfaceDc.created = datetime.utcnow()
                    newInterfaceDc.creators = [u'ikportscan']
                    ### SNMP-Liste aufbauen
                    #if interfaceDict.has_key("snmplist") and len(interfaceDict['snmplist'])>0:
                    #for snmpDict in interfaceDict['snmplist']:
                    ### oid-Test
                    #newSnmp = zapi.createObject(None, 'ikom.snmp.Snmp')
                    #notify(ObjectCreatedEvent(newSnmp))
                    #newSnmp.__setattr__("description", snmpDict['name'])
                    #newSnmp.__setattr__("checktype", "oid")
                    #newSnmp.__setattr__("inputtype", "abs")
                    #newSnmp.__setattr__("oid1", snmpDict['oid1'])
                    #newSnmp.__setattr__("oid2", snmpDict['oid2'])
                    #for i in ["cmd", "inptype", "inpUnit", "displayUnitNumerator", "displayUnitDenominator",
                    #"checkMax", "checkMaxLevel", "checkMaxLevelUnitNumerator", "checkMaxLevelUnitDenominator"]:
                    #newSnmp.__setattr__(i, snmpDict[i])
                    #newSnmpDc = IZopeDublinCore(newSnmp, None)
                    #newSnmpId=u"%s" % (snmpDict['name'])
                    #newSnmpDc.title = u"%s" % (snmpDict['name'])
                    #newSnmpDc.created = datetime.utcnow()
                    #newSnmpDc.creators = [u'ikportscan']
                    #newInterface.__setitem__(newSnmpId, newSnmp)
                    #newHost.__setitem__(newInterfaceId, newInterface)

            #if host.has_key("building"):
            #newHost.__setattr__("building", host['building'])

            #if host.has_key('oss') and len(host['oss'])>0:
            #hostOs = host['oss'][0]
            #firstOs = "%s - %s - %s - %s - %s" % (hostOs['vendor'],hostOs['osfamily'],hostOs['osgen'],hostOs['accuracy'],hostOs['type'])
            #newHost.__setattr__("os", firstOs)
            #else:
            #newHost.__setattr__("os", u"unknown")

            ### add services to interface if1
            ####### Interface
            portsInterface = zapi.createObject(\
                u'org.ict_ok.components.interface.interface.Interface')
            notify(ObjectCreatedEvent(portsInterface))
            newHost.__setitem__(portsInterface.getObjectId(), portsInterface)
            newInterfaceDc = IZopeDublinCore(portsInterface, None)
            newInterfaceDc.title = u"If10000"
            portsInterface.__setattr__("ikName", u"If10000")
            newInterfaceDc.created = dateNow
            newInterfaceDc.creators = [u'ikportscan']
            portsInterface.ikComment += u"scanner: %s" % (dateNow)
            #portsInterface.ipv4List.append(host['ipAddress'])
            portsInterface.ipv4List = host['ipAddress']
            portsInterface.netType = 'ethernet'
            if host.has_key('macAddress'):
                portsInterface.mac = host['macAddress']

            for port in host['ports']:
                #if port['protocol'].lower() == "tcp":
                #print "tcp"
                #elif port['protocol'].lower() == "udp":
                #print "udp"
                #if port['port'] == u"389":   ## ldap
                #newService = zapi.createObject(None, 'ikom.service.ServiceLdap')
                #notify(ObjectCreatedEvent(newService))
                #newService.__setattr__("basedn", u'dc=domain,dc=tld')
                #elif port['port'] == u"1111180":   ## http
                #pass
                #else:
                #newService = zapi.createObject(None, 'ikom.service.Service')
                #notify(ObjectCreatedEvent(newService))
                newService = zapi.createObject(\
                    u'org.ict_ok.components.service.service.Service')
                notify(ObjectCreatedEvent(newService))
                newServiceId = u"%s" % (port['port'])
                portsInterface.__setitem__(newServiceId, newService)
                #newService.__setattr__("genNagios", True)
                newServiceDc = IZopeDublinCore(newService, None)
                #newService.__setattr__("port", port['port'])
                #newService.__setattr__("protocol", port['protocol'])
                #newService.__setattr__("description", port['service'])
                newServiceDc.creators = [u'ikportscan']
                newServiceDc.created = datetime.utcnow()
                if port.has_key('service'):  ## and (len(port['service']) > 0):
                    newServiceDc.title = u"%s" % port['service']
                else:
                    newServiceDc.title = u"%s" % port['port']
                #newHost.__setitem__(newServiceId, newService)
            #containerObject.__setitem__(new_id, newHost)
        return None
示例#17
0
    def createObjects(self, dataDict, containerObject):
        """
        will use factories to create the objects from the dataDict
        """
        for host in dataDict:
            dateNow = datetime.utcnow()
            newHost = createObject(u'org.ict_ok.components.host.host.Host')
            notify(ObjectCreatedEvent(newHost))
            containerObject.__setitem__(newHost.getObjectId(), newHost)
            dcore = IZopeDublinCore(newHost, None)
            dcore.creators = [u'ikportscan']
            newHost.ikComment += u"scanner: %s" % (dateNow)
            if host.has_key('hostname'):
                newHost.__setattr__("ikName", host['hostname'])
                newHost.__setattr__("hostname", host['hostname'])
                dcore.title = host['hostname']
            else:
                if host.has_key('interfaces'):
                    newHost.__setattr__("ikName",
                                        host['interfaces'][0]['ipAddress'])
                    dcore.title = host['interfaces'][0]['ipAddress']
                else:
                    newHost.__setattr__("ikName", u"unknown")
                    newHost.__setattr__("hostname", u"unknown")
                    dcore.title = u"unknown"

            if host.has_key('description'):
                print "description: %s" % host['description']
                newHost.__setattr__("ikDesc", host['description'])
            for my_atrb in [
                    'building', 'room', 'manufacturer', 'vendor',
                    'workinggroup', 'hardware', 'user', 'inv_id'
            ]:
                if host.has_key(my_atrb):
                    newHost.__setattr__(my_atrb, host[my_atrb])
            #if host.has_key('building'):
            #newHost.__setattr__("building", host['building'])
            #if host.has_key('room'):
            #newHost.__setattr__("room", host['room'])
            if host.has_key('oss'):
                for i_os in host['oss']:
                    os_string = u"%s %s (%s) (%s)" % (
                        i_os['osfamily'], i_os['osgen'], i_os['type'],
                        i_os['vendor'])
                    newHost.osList.append(os_string)
            newHost.__setattr__("genNagios", True)
            dcore.created = dateNow

            if host.has_key("interfaces") and len(host['interfaces']) > 0:
                for interfaceDict in host['interfaces']:
                    #print "interfaceDict: ", interfaceDict
                    dateNow = datetime.utcnow()
                    newInterface = zapi.createObject(\
                        u'org.ict_ok.components.interface.interface.Interface')
                    notify(ObjectCreatedEvent(newInterface))
                    newInterfaceId = u"If%s" % (interfaceDict['nbr'])
                    newHost.__setitem__(newInterfaceId, newInterface)
                    #newInterface.__setattr__("description", interfaceDict['name'])
                    #newInterface.__setattr__("ifindex", interfaceDict['nbr'])
                    newInterface.__setattr__("ikName", interfaceDict['name'])
                    newInterface.ikComment += u"scanner: %s" % (dateNow)
                    newInterfaceDc = IZopeDublinCore(newInterface, None)
                    newInterfaceDc.title = u"%s" % interfaceDict['name']
                    newInterfaceDc.created = datetime.utcnow()
                    newInterfaceDc.creators = [u'ikportscan']
                    newInterface.netType = "ethernet"
                    if interfaceDict.has_key('macAddress'):
                        newInterface.mac = interfaceDict['macAddress']
                    if interfaceDict.has_key('ipAddressType') and interfaceDict[
                            'ipAddressType'] == 'ipv4' and interfaceDict.has_key(
                                'ipAddress'):
                        #newInterface.ipv4List.append(interfaceDict['ipAddress'])
                        newInterface.ipv4List.append(\
                            interfaceDict['ipAddress'])
                    #### services
                    for service in interfaceDict['services']:
                        newService = zapi.createObject(\
                            u'org.ict_ok.components.service.service.Service')
                        notify(ObjectCreatedEvent(newService))
                        newServiceId = u"%s" % (service['port'])
                        newInterface.__setitem__(newServiceId, newService)
                        newServiceDc = IZopeDublinCore(newService, None)
                        newServiceDc.creators = [u'ikportscan']
                        newServiceDc.created = datetime.utcnow()
                        tmpString = u""
                        if service.has_key('product'):
                            tmpString += service['product'] + u"\n"
                        if service.has_key('version'):
                            tmpString += u"Ver. " + service['version'] + u"\n"
                        if service.has_key('extrainfo'):
                            tmpString += service['extrainfo'] + u"\n"
                        if service.has_key('method'):
                            tmpString += u"scan method: " + service[
                                'method'] + u"\n"
                        if len(tmpString) > 0:
                            newService.ikComment += tmpString
                        if service.has_key(
                                'service'):  ## and (len(port['service']) > 0):
                            newServiceDc.title = u"%s" % service['service']
                            newService.__setattr__("ikName",
                                                   service['service'])
                        else:
                            newServiceDc.title = u"%s" % service['port']
                        #newHost.__setitem__(newServiceId, newService)
                    #containerObject.__setitem__(new_id, newHost)
                    ### SNMP-Liste aufbauen
                    #if interfaceDict.has_key("snmplist") and len(interfaceDict['snmplist'])>0:
                    #for snmpDict in interfaceDict['snmplist']:
                    ### oid-Test
                    #newSnmp = zapi.createObject(None, 'ikom.iksnmp.IkSnmp')
                    #notify(ObjectCreatedEvent(newSnmp))
                    #newSnmp.__setattr__("description", snmpDict['name'])
                    #newSnmp.__setattr__("checktype", "oid")
                    #newSnmp.__setattr__("inputtype", "abs")
                    #newSnmp.__setattr__("oid1", snmpDict['oid1'])
                    #newSnmp.__setattr__("oid2", snmpDict['oid2'])
                    #for i in ["cmd", "inptype", "inpUnit", "displayUnitNumerator", "displayUnitDenominator",
                    #"checkMax", "checkMaxLevel", "checkMaxLevelUnitNumerator", "checkMaxLevelUnitDenominator"]:
                    #newSnmp.__setattr__(i, snmpDict[i])
                    #newSnmpDc = IZopeDublinCore(newSnmp, None)
                    #newSnmpId=u"%s" % (snmpDict['name'])
                    #newSnmpDc.title = u"%s" % (snmpDict['name'])
                    #newSnmpDc.created = datetime.utcnow()
                    #newSnmpDc.creators = [u'ikportscan']
                    #newInterface.__setitem__(newSnmpId, newSnmp)
                    #newHost.__setitem__(newInterfaceId, newInterface)
            #if host.has_key("building"):
            #newHost.__setattr__("building", host['building'])

            #if host.has_key('oss') and len(host['oss'])>0:
            #hostOs = host['oss'][0]
            #firstOs = "%s - %s - %s - %s - %s" % (hostOs['vendor'],hostOs['osfamily'],hostOs['osgen'],hostOs['accuracy'],hostOs['type'])
            #newHost.__setattr__("os", firstOs)
            #else:
            #newHost.__setattr__("os", u"unknown")

            ### add services to interface if1
            ####### Interface
            ####portsInterface = zapi.createObject(\
            ####u'org.ict_ok.ikinterface.ikinterface.Interface')
            ####notify(ObjectCreatedEvent(portsInterface))
            ####newHost.__setitem__(portsInterface.getObjectId(),
            ####portsInterface)
            ####newInterfaceDc = IZopeDublinCore(portsInterface, None)
            ####newInterfaceDc.title = u"If10000"
            ####portsInterface.__setattr__("ikName", u"If10000")
            ####newInterfaceDc.created = dateNow
            ####newInterfaceDc.creators = [u'ikportscan']
            ####portsInterface.ikComment += u"scanner: %s" % (dateNow)
            ####portsInterface.ipv4List.append(host['ipAddress'])
            ####portsInterface.netType = 'ethernet'
            ####if host.has_key('macAddress'):
            ####portsInterface.mac = host['macAddress']

        return None