def validateFQDN(param, options=[]): logging.info("Validating %s as a FQDN"%(param)) if not validateDomain(param,options): return False try: #get set of IPs ipAddresses = utils.getConfiguredIps() if len(ipAddresses) < 1: logging.error("Could not find any configured IP address on the host") raise Exception(output_messages.ERR_EXP_CANT_FIND_IP) #resolve fqdn pattern = 'Address: (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})' resolvedAddresses = _getPatternFromNslookup(param, pattern) if len(resolvedAddresses) < 1: logging.error("Failed to resolve %s"%(param)) print output_messages.ERR_DIDNT_RESOLVED_IP%(param) return False #string is generated here since we use it in all latter error messages prettyString = " ".join(["%s"%string for string in resolvedAddresses]) #compare found IP with list of local IPs and match. if not resolvedAddresses.issubset(ipAddresses): logging.error("the following address(es): %s are not configured on this host"%(prettyString)) #different grammar for plural and single if len(resolvedAddresses) > 1: print output_messages.ERR_IPS_NOT_CONFIGED%(prettyString, param) else: print output_messages.ERR_IPS_NOT_CONFIGED_ON_INT%(prettyString, param) return False #reverse resolved IP and compare with given fqdn counter = 0 pattern = '[\w\.-]+\s+name\s\=\s([\w\.\-]+)\.' for address in resolvedAddresses: addressSet = _getPatternFromNslookup(address, pattern) reResolvedAddress = None if len(addressSet) > 0: reResolvedAddress = addressSet.pop() if reResolvedAddress == param: counter += 1 else: logging.warn("%s did not reverse-resolve into %s"%(address,param)) if counter < 1: logging.error("The following addresses: %s did not reverse resolve into %s"%(prettyString, param)) #different grammar for plural and single if len(resolvedAddresses) > 1: print output_messages.ERR_IPS_HAS_NO_PTR%(prettyString, param) else: print output_messages.ERR_IP_HAS_NO_PTR%(prettyString, param) return False #conditions passed return True except: logging.error(traceback.format_exc()) raise
def validateFQDN(param, options=[]): logging.info("Validating %s as a FQDN"%(param)) if not validateDomain(param,options): return False try: #get set of IPs ipAddresses = utils.getConfiguredIps() if len(ipAddresses) < 1: logging.error("Could not find any configured IP address on the host") raise Exception(output_messages.ERR_EXP_CANT_FIND_IP) #resolve fqdn pattern = 'Address: (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})' resolvedAddresses = _getPatternFromNslookup(param, pattern) if len(resolvedAddresses) < 1: logging.error("Failed to resolve %s"%(param)) print output_messages.ERR_DIDNT_RESOLVED_IP%(param) return False #string is generated here since we use it in all latter error messages prettyString = " ".join(["%s"%string for string in resolvedAddresses]) #compare found IP with list of local IPs and match. if not resolvedAddresses.issubset(ipAddresses): logging.error("the following address(es): %s are not configured on this host"%(prettyString)) #different grammar for plural and single if len(resolvedAddresses) > 1: print output_messages.ERR_IPS_NOT_CONFIGED%(prettyString, param) else: print output_messages.ERR_IPS_NOT_CONFIGED_ON_INT%(prettyString, param) return False #reverse resolved IP and compare with given fqdn counter = 0 pattern = '[\w\.-]+\s+name\s\=\s([\w\.\-]+)\.' for address in resolvedAddresses: addressSet = _getPatternFromNslookup(address, pattern) reResolvedAddress = None if len(addressSet) > 0: reResolvedAddress = addressSet.pop() if reResolvedAddress == param: counter += 1 else: logging.warn("%s did not reverse-resolve into %s"%(address,param)) if counter < 1: logging.error("The following addresses: %s did not reverse resolve into %s"%(prettyString, param)) #different grammar for plural and single if len(resolvedAddresses) > 1: print output_messages.ERR_IPS_HAS_NO_PTR%(prettyString, param) else: print output_messages.ERR_IP_HAS_NO_PTR%(prettyString, param) return False #conditions passed return True except Exception, (instance): logging.error(traceback.format_exc()) raise Exception(instance)