def test_06_slit_uri(self): uri = "ldap://server" server, port, ssl = LDAPResolver.split_uri(uri) self.assertEqual(ssl, False) self.assertEqual(server, "server") self.assertEqual(port, None) uri = "ldap://server:389" server, port, ssl = LDAPResolver.split_uri(uri) self.assertEqual(ssl, False) self.assertEqual(server, "server") self.assertEqual(port, 389) uri = "ldaps://server:389" server, port, ssl = LDAPResolver.split_uri(uri) self.assertEqual(ssl, True) self.assertEqual(server, "server") self.assertEqual(port, 389) uri = "ldaps://server" server, port, ssl = LDAPResolver.split_uri(uri) self.assertEqual(ssl, True) self.assertEqual(server, "server") self.assertEqual(port, None) uri = "server" server, port, ssl = LDAPResolver.split_uri(uri) self.assertEqual(ssl, False) self.assertEqual(server, "server") self.assertEqual(port, None)
def testconnection(cls, params): """ Test if the given filename exists. :param params: :return: """ success = False try: (host, port, ssl) = IdResolver.split_uri(params.get("LDAPURI")) server = ldap3.Server(host, port=port, use_ssl=ssl, connect_timeout=float(params.get("TIMEOUT", 5))) l = IdResolver.create_connection(authtype=\ params.get("AUTHTYPE", AUTHTYPE.SIMPLE), server=server, user=params.get("BINDDN"), password=params.get("BINDPW"), auto_referrals=not params.get( "NOREFERRALS")) l.open() if not l.bind(): raise Exception("Wrong credentials") # search for users... l.search(search_base=params["LDAPBASE"], search_scope=ldap3.SUBTREE, search_filter="(&" + params["SEARCHFILTER"] + ")", attributes=[ params["HOSTNAMEATTRIBUTE"] ]) count = len([x for x in l.response if x.get("type") == "searchResEntry"]) desc = _("Your LDAP config seems to be OK, %i machine objects " "found.")\ % count l.unbind() success = True except Exception as e: desc = "%r" % e return success, desc
def load_config(self, config): """ This loads the configuration dictionary, which contains the necessary information for the machine resolver to find and connect to the machine store. class=computer or sAMAccountType=805306369 (MachineAccount) * hostname: attribute dNSHostName * id: DN or objectSid * ip: N/A :param config: The configuration dictionary to run the machine resolver :type config: dict :return: None """ self.uri = config.get("LDAPURI") if self.uri is None: raise MachineResolverError("LDAPURI is missing!") (self.server, self.port, self.ssl) = IdResolver.split_uri(self.uri) self.basedn = config.get("LDAPBASE") if self.basedn is None: raise MachineResolverError("LDAPBASE is missing!") self.binddn = config.get("BINDDN") self.bindpw = config.get("BINDPW") self.timeout = float(config.get("TIMEOUT", 5)) self.sizelimit = config.get("SIZELIMIT", 500) self.hostname_attribute = config.get("HOSTNAMEATTRIBUTE") self.id_attribute = config.get("IDATTRIBUTE", "DN") self.ip_attribute = config.get("IPATTRIBUTE") self.search_filter = config.get("SEARCHFILTER", "(objectClass=computer)") self.reverse_map = {self.ip_attribute: "ip", self.hostname_attribute: "hostname", self.id_attribute: "id"} self.noreferrals = config.get("NOREFERRALS", False) self.certificate = config.get("CACERTIFICATE") self.authtype = config.get("AUTHTYPE", AUTHTYPE.SIMPLE)