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 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 #3
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 #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))
Beispiel #5
0
def CreatorAnnotator(event):
    """Update Dublin-Core creator property"""
    dc = IZopeDublinCore(event.object, None)
    # Principals that can create objects do not necessarily have
    # 'zope.app.dublincore.change' permission.
    # https://bugs.launchpad.net/zope3/+bug/98124
    dc = removeSecurityProxy(dc)
    if dc is None:
        return

    # Try to find a principal for that one. If there
    # is no principal then we don't touch the list
    # of creators.
    interaction = queryInteraction()
    if interaction is not None:
        for participation in interaction.participations:
            if participation.principal is None:
                continue
            principalid = participation.principal.id
            if not principalid in dc.creators:
                dc.creators = dc.creators + (unicode(principalid), )
def lastActivitySubscriber(event, item):
    """Update Dublin-Core creator property"""
    dc = IZopeDublinCore(item, None)
    # Principals that can create objects do not necessarily have
    # 'zope.app.dublincore.change' permission.
    # https://bugs.launchpad.net/zope3/+bug/98124
    dc = removeSecurityProxy(dc)
    if dc is None:
        return

    # Try to find a principal for that one. If there
    # is no principal then we don't touch the list
    # of creators.
    interaction = queryInteraction()
    if interaction is not None:
        for participation in interaction.participations:
            if participation.principal is None:
                continue
            principalid = participation.principal.id
            if not principalid in dc.creators:
                dc.creators = dc.creators + (unicode(principalid), )
Beispiel #7
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 #8
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