Beispiel #1
0
 def createHostObject(self, parent, hostDict):
     """helper methode to create host instance
     """
     dateNow = datetime.utcnow()
     newHost = createObject(u'org.ict_ok.components.host.host.Host')
     notify(ObjectCreatedEvent(newHost))
     parent.__setitem__(newHost.getObjectId(), newHost)
     dc = IZopeDublinCore(newHost, None)
     dc.creators = [u'ikportscan']
     newHost.ikComment += u"scanner: %s" % (dateNow)
     if hostDict.has_key('hostname'):
         newHost.__setattr__("ikName", hostDict['hostname'])
         newHost.__setattr__("hostname", hostDict['hostname'])
         dc.title = hostDict['hostname']
     else:
         newHost.__setattr__("ikName", hostDict['ipAddress'])
         dc.title = hostDict['ipAddress']
     for i_os in hostDict['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 hostDict.has_key("interfaces") and len(hostDict['interfaces']) > 0:
         for interfaceDict in hostDict['interfaces']:
             self.createInterfaceObject(newHost, interfaceDict)
     notify(ObjectCreatedEvent(newHost))
Beispiel #2
0
def CreatedAnnotator(event):
    dc = IZopeDublinCore(event.object, None)
    if dc is not None:
        # Principals that can create objects do not necessary have permissions
        # to arbitrarily modify DC data, see issue 373
        dc = removeSecurityProxy(dc)
        now = datetime.now(pytz.utc)
        dc.created = now
        dc.modified = now
def CreatedAnnotator(event):
    dc = IZopeDublinCore(event.object, None)
    if dc is not None:
        # Principals that can create objects do not necessary have permissions
        # to arbitrarily modify DC data, see issue 373
        dc = removeSecurityProxy(dc)
        now = datetime.now(pytz.utc)
        dc.created = now
        dc.modified = now
Beispiel #4
0
def CreatedAnnotator(object, event=None):
    if event is None:
        # annotator was only called the event as only argument
        object = object.object
    dc = IZopeDublinCore(object, None)
    if dc is not None:
        # Principals that can create objects do not necessary have permissions
        # to arbitrarily modify DC data, see issue 373
        dc = removeSecurityProxy(dc)
        now = _now()
        dc.created = now
        dc.modified = now
Beispiel #5
0
 def __post_init__(self, **data):
     """
     triggerd after constructor has been finished
     """
     newEntry = Entry(u"Object created", self, level=u"info")
     newEntry.setObjVersion(self.ikRevision)
     self.history.append(newEntry)
     self.connectToEventXbar()
     newEntry = Entry(u"Object connected to event crossbar", self, level=u"info")
     newEntry.setObjVersion(self.ikRevision)
     self.history.append(newEntry)
     dc = IZopeDublinCore(self, None)
     if dc is not None:
         now = datetime.now(pytz.utc)
         dc.created = now
         dc.modified = now
Beispiel #6
0
def createLocalSystem(root_folder):
    dateNow = datetime.utcnow()
    newHost = createObject(u'org.ict_ok.components.host.host.Host')
    notify(ObjectCreatedEvent(newHost))
    root_folder.__setitem__(newHost.getObjectId(), newHost)
    dcore = IZopeDublinCore(newHost, None)
    dcore.creators = [u'first bootstrap']
    newHost.ikComment += u"bootstrap on %s" % (dateNow)
    newHost.__setattr__("ikName", u'Local System')
    newHost.__setattr__("hostname", u'Local System')
    dcore.title = u'Local System'
    newHost.__setattr__("ikDesc", u'this is the ict-ok.org management-system')
    newHost.__setattr__("manufacturer", u'see ict-ok.org')
    newHost.__setattr__("vendor", u'see ict-ok.org')
    newHost.__setattr__("genNagios", True)
    dcore.created = dateNow
Beispiel #7
0
 def createInterfaceObject(self, parent, interfaceDict):
     """helper methode to create interface instance
     """
     dateNow = datetime.utcnow()
     newInterface = createObject(\
         u'org.ict_ok.components.interface.interface.Interface')
     newInterfaceId = u"If%s" % (interfaceDict['nbr'])
     parent.__setitem__(newInterface.getObjectId(), newInterface)
     newInterfaceDc = IZopeDublinCore(newInterface, None)
     newInterfaceDc.title = u"%s" % interfaceDict['name']
     newInterfaceDc.__setattr__("ikName", newInterfaceDc.title)
     newInterfaceDc.created = datetime.utcnow()
     newInterfaceDc.creators = [u'ikportscan']
     newInterface.ikComment += u"scanner: %s" % (dateNow)
     if interfaceDict.has_key('macAddress'):
         newInterface.__setattr__("mac",
                                  unicode(interfaceDict['macAddress']))
     if interfaceDict.has_key('ipAddressType') and \
        interfaceDict['ipAddressType'] == u'ipv4':
         if interfaceDict.has_key('ipAddress'):
             #newInterface.ipv4List.append(interfaceDict['ipAddress'])
             newInterface.ipv4List = unicode(interfaceDict['ipAddress'])
     ### build snmp objects
     #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)
     ### build services
     for serviceDict in interfaceDict['services']:
         self.createServiceObject(newInterface, serviceDict)
     notify(ObjectCreatedEvent(newInterface))
Beispiel #8
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))
Beispiel #9
0
    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
Beispiel #10
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]
    def convertobj(self):
        """
        converts this esx object to an internal object
        """
        hostname = u"%s" % self.eval_on_obj('obj.name()')
        ip = u"%s" % self.eval_on_obj('obj.guest().ipAddress()')
        hardware = u"ESX virtual machine (%s MB)" % \
            self.eval_on_obj('obj.runtime().maxMemoryUsage()')
        uuid = u"%s" % self.eval_on_obj('obj.config().uuid()')
        netList = []
        index = 0
        while True:
            mac = self.eval_on_obj('obj.guest().net()[%s].macAddress()' %
                                   index)
            name = self.eval_on_obj('obj.guest().net()[%s].network()' % index)
            if type(mac) == type('') and \
                type(name) == type(''):
                ipList = []
                ipIndex = 0
                while True:
                    ip = self.eval_on_obj('obj.guest().net()[%s].ipAddress()[%s]' %\
                        (index, ipIndex))
                    if type(ip) == type(''):
                        ipList.append(u"%s" % ip)
                        ipIndex += 1
                    else:
                        break
            else:
                break
            net = {}
            net['index'] = index
            net['mac'] = u"%s" % mac
            net['name'] = u"%s" % name
            net['ips'] = ipList
            netList.append(net)
            index += 1
            if index > 10:
                break
        # name: 'cbw-ikomtrol01'
        # ip: '192.168.157.98'
        # hardware: 'ESX virtual machine (384 MB)'
        # uuid: '500c4d26-525f-ab35-b2ee-9f77842f65b9'
        # netList: [{'index': 0, 'mac': '00:50:56:8c:63:77', 'name': 'CBW Servers', 'ips': ['192.168.157.98']}]

        if len(netList) > 0 and len(netList[0]['ips']) > 0:
            firstIp = netList[0]['ips'][0]
            allNetworks = getAllNetworks()
            for network in allNetworks:
                if network.containsIp(firstIp):
                    print "create here:", network.ikName
                    dateNow = datetime.utcnow()
                    newHost = createObject(\
                        u'org.ict_ok.components.host.host.HostVMwareVm')
                    newHost.__post_init__()
                    notify(ObjectCreatedEvent(newHost))
                    network.__setitem__(newHost.getObjectId(), newHost)
                    dcore = IZopeDublinCore(newHost, None)
                    #dcore.creators = [u'ikportscan']
                    newHost.ikComment += u"esx scanner: %s" % (dateNow)
                    newHost.__setattr__("ikName", hostname)
                    newHost.__setattr__("hostname", hostname)
                    dcore.title = hostname
                    newHost.__setattr__("hardware", hardware)
                    newHost.__setattr__("esxUuid", uuid)
                    newHost.__setattr__("genNagios", False)
                    dcore.created = dateNow
                    for interf in netList:
                        newInterface = createObject(\
                            u'org.ict_ok.components.interface.interface.Interface')
                        notify(ObjectCreatedEvent(newInterface))
                        newInterfaceId = u"If%s" % (interf['index'])
                        newHost.__setitem__(newInterfaceId, newInterface)
                        newInterface.__setattr__("description", interf['name'])
                        newInterface.__setattr__("ikName", newInterfaceId)
                        newInterface.ikComment += u"esx scanner: %s" % (
                            dateNow)
                        newInterfaceDc = IZopeDublinCore(newInterface, None)
                        newInterfaceDc.title = newInterfaceId
                        newInterfaceDc.created = datetime.utcnow()
                        #newInterfaceDc.creators = [u'ikportscan']
                        newInterface.netType = "ethernet"
                        newInterface.mac = interf['mac']
                        #newInterface.ipv4List.append(interfaceDict['ipAddress'])
                        newInterface.ipv4List.extend(interf['ips'])
                    return newHost
        return None
Beispiel #12
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