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))
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
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))
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))
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), )
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
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