def _handleAnswerFileParams(answerFile): """ handle loading and validating params from answer file supports reading single or group params """ try: logging.debug("Starting to handle config file") # Read answer file fconf = ConfigParser.ConfigParser() fconf.read(answerFile) # Iterate all the groups and check the pre/post conditions for group in controller.getAllGroups(): # Get all params per group # Handle pre conditions for group preConditionValue = True if group.getKey("PRE_CONDITION"): preConditionValue = _handleGroupCondition(fconf, group.getKey("PRE_CONDITION"), preConditionValue) # Handle pre condition match with case insensitive values logging.info("Comparing pre- conditions, value: '%s', and match: '%s'" % (preConditionValue, group.getKey("PRE_CONDITION_MATCH"))) if utils.compareStrIgnoreCase(preConditionValue, group.getKey("PRE_CONDITION_MATCH")): for param in group.getAllParams(): _loadParamFromFile(fconf, "general", param.getKey("CONF_NAME")) # Handle post conditions for group only if pre condition passed postConditionValue = True if group.getKey("POST_CONDITION"): postConditionValue = _handleGroupCondition(fconf, group.getKey("POST_CONDITION"), postConditionValue) # Handle post condition match for group if not utils.compareStrIgnoreCase(postConditionValue, group.getKey("POST_CONDITION_MATCH")): logging.error("The group condition (%s) returned: %s, which differs from the excpeted output: %s"%\ (group.getKey("GROUP_NAME"), postConditionValue, group.getKey("POST_CONDITION_MATCH"))) raise ValueError(output_messages.ERR_EXP_GROUP_VALIDATION_ANS_FILE%\ (group.getKey("GROUP_NAME"), postConditionValue, group.getKey("POST_CONDITION_MATCH"))) else: logging.debug("condition (%s) passed" % group.getKey("POST_CONDITION")) else: logging.debug("no post condition check for group %s" % group.getKey("GROUP_NAME")) else: logging.debug("skipping params group %s since value of group validation is %s" % (group.getKey("GROUP_NAME"), preConditionValue)) except Exception as e: logging.error(traceback.format_exc()) raise Exception(output_messages.ERR_EXP_HANDLE_ANSWER_FILE%(e))
def validatePort(param, options = []): #TODO: add actual port check with socket open logging.debug("Validating %s as a valid TCP Port" % (param)) minVal = 0 controller = Controller() isProxyEnabled = utils.compareStrIgnoreCase(controller.CONF["OVERRIDE_HTTPD_CONFIG"], "yes") if not isProxyEnabled: minVal = 1024 if not validateInteger(param, options): return False port = int(param) if not (port > minVal and port < 65535) : logging.warn(output_messages.INFO_VAL_PORT_NOT_RANGE %(minVal)) print output_messages.INFO_VAL_PORT_NOT_RANGE %(minVal) return False (portOpen, process, pid) = utils.isTcpPortOpen(param) if portOpen: logging.warn(output_messages.INFO_VAL_PORT_OCCUPIED % (param, process, pid)) print output_messages.INFO_VAL_PORT_OCCUPIED % (param, process, pid) return False if isProxyEnabled and not checkAndSetHttpdPortPolicy(param): logging.warn(output_messages.INFO_VAL_FAILED_ADD_PORT_TO_HTTP_POLICY, port) print output_messages.INFO_VAL_FAILED_ADD_PORT_TO_HTTP_POLICY % port return False return True
def validatePort(param, options=[]): #TODO: add actual port check with socket open logging.debug("Validating %s as a valid TCP Port" % (param)) minVal = 0 controller = Controller() isProxyEnabled = utils.compareStrIgnoreCase( controller.CONF["OVERRIDE_HTTPD_CONFIG"], "yes") if not isProxyEnabled: minVal = 1024 if not validateInteger(param, options): return False port = int(param) if not (port > minVal and port < 65535): logging.warn(output_messages.INFO_VAL_PORT_NOT_RANGE % (minVal)) print output_messages.INFO_VAL_PORT_NOT_RANGE % (minVal) return False (portOpen, process, pid) = utils.isTcpPortOpen(param) if portOpen: logging.warn(output_messages.INFO_VAL_PORT_OCCUPIED % (param, process, pid)) print output_messages.INFO_VAL_PORT_OCCUPIED % (param, process, pid) return False if isProxyEnabled and not checkAndSetHttpdPortPolicy(param): logging.warn(output_messages.INFO_VAL_FAILED_ADD_PORT_TO_HTTP_POLICY, port) print output_messages.INFO_VAL_FAILED_ADD_PORT_TO_HTTP_POLICY % port return False return True
def _handleInteractiveParams(): try: for group in controller.getAllGroups(): preConditionValue = True logging.debug("going over group %s" % group.getKey("GROUP_NAME")) # If pre_condition is set, get Value if group.getKey("PRE_CONDITION"): preConditionValue = _getConditionValue(group.getKey("PRE_CONDITION")) inputLoop = True # If we have a match, i.e. condition returned True, go over all params in the group logging.info( "Comparing pre-conditions; condition: '%s', and match: '%s'" % (preConditionValue, group.getKey("PRE_CONDITION_MATCH")) ) if utils.compareStrIgnoreCase(preConditionValue, group.getKey("PRE_CONDITION_MATCH")): while inputLoop: for param in group.getAllParams(): if not param.getKey("CONDITION"): input_param(param) # update password list, so we know to mask them _updateMaskedValueSet() postConditionValue = True # If group has a post condition, we check it after we get the input from # all the params in the group. if the condition returns False, we loop over the group again if group.getKey("POST_CONDITION"): postConditionValue = _getConditionValue(group.getKey("POST_CONDITION")) if postConditionValue == group.getKey("POST_CONDITION_MATCH"): inputLoop = False else: # we clear the value of all params in the group # in order to re-input them by the user for param in group.getAllParams(): if controller.CONF.has_key(param.getKey("CONF_NAME")): del controller.CONF[param.getKey("CONF_NAME")] if commandLineValues.has_key(param.getKey("CONF_NAME")): del commandLineValues[param.getKey("CONF_NAME")] else: inputLoop = False else: logging.debug("no post condition check for group %s" % group.getKey("GROUP_NAME")) _displaySummary() except KeyboardInterrupt: logging.error("keyboard interrupt caught") raise Exception(output_messages.ERR_EXP_KEYBOARD_INTERRUPT) except Exception: logging.error(traceback.format_exc()) raise except: logging.error(traceback.format_exc()) raise Exception(output_messages.ERR_EXP_HANDLE_PARAMS)
def _handleInteractiveParams(): try: logging.debug("Groups: %s" % ', '.join([x.getKey("GROUP_NAME") for x in controller.getAllGroups()])) for group in controller.getAllGroups(): preConditionValue = True logging.debug("going over group %s" % group.getKey("GROUP_NAME")) # If pre_condition is set, get Value if group.getKey("PRE_CONDITION"): preConditionValue = _getConditionValue(group.getKey("PRE_CONDITION")) inputLoop = True # If we have a match, i.e. condition returned True, go over all params in the group logging.info("Comparing pre-conditions; condition: '%s', and match: '%s'" % (preConditionValue, group.getKey("PRE_CONDITION_MATCH"))) if utils.compareStrIgnoreCase(preConditionValue, group.getKey("PRE_CONDITION_MATCH")): while inputLoop: for param in group.getAllParams(): if not param.getKey("CONDITION"): input_param(param) #update password list, so we know to mask them _updateMaskedValueSet() postConditionValue = True # If group has a post condition, we check it after we get the input from # all the params in the group. if the condition returns False, we loop over the group again if group.getKey("POST_CONDITION"): postConditionValue = _getConditionValue(group.getKey("POST_CONDITION")) if postConditionValue == group.getKey("POST_CONDITION_MATCH"): inputLoop = False else: #we clear the value of all params in the group #in order to re-input them by the user for param in group.getAllParams(): if controller.CONF.has_key(param.getKey("CONF_NAME")): del controller.CONF[param.getKey("CONF_NAME")] if commandLineValues.has_key(param.getKey("CONF_NAME")): del commandLineValues[param.getKey("CONF_NAME")] else: inputLoop = False else: logging.debug("no post condition check for group %s" % group.getKey("GROUP_NAME")) path = None msg = "\nCould not find a suitable path to create the answer's file" # We'll use the first path with # write permissions. Order matters. for p in ["./", "~/", "/tmp"]: if os.access(p, os.W_OK): path = os.path.abspath( os.path.expanduser(os.path.join(p, "answers.txt"))) msg = "\nA new answer's file will be created in: %s" % path break print msg, _displaySummary() if path: generateAnswerFile(path) except KeyboardInterrupt: logging.error("keyboard interrupt caught") raise Exception(output_messages.ERR_EXP_KEYBOARD_INTERRUPT) except Exception: logging.error(traceback.format_exc()) raise except: logging.error(traceback.format_exc()) raise Exception(output_messages.ERR_EXP_HANDLE_PARAMS)
def _handleInteractiveParams(): try: logging.debug("Groups: %s" % ', '.join( [x.getKey("GROUP_NAME") for x in controller.getAllGroups()])) for group in controller.getAllGroups(): preConditionValue = True logging.debug("going over group %s" % group.getKey("GROUP_NAME")) # If pre_condition is set, get Value if group.getKey("PRE_CONDITION"): preConditionValue = _getConditionValue( group.getKey("PRE_CONDITION")) inputLoop = True # If we have a match, i.e. condition returned True, go over all params in the group logging.info( "Comparing pre-conditions; condition: '%s', and match: '%s'" % (preConditionValue, group.getKey("PRE_CONDITION_MATCH"))) if utils.compareStrIgnoreCase(preConditionValue, group.getKey("PRE_CONDITION_MATCH")): while inputLoop: for param in group.getAllParams(): if not param.getKey("CONDITION"): input_param(param) #update password list, so we know to mask them _updateMaskedValueSet() postConditionValue = True # If group has a post condition, we check it after we get the input from # all the params in the group. if the condition returns False, we loop over the group again if group.getKey("POST_CONDITION"): postConditionValue = _getConditionValue( group.getKey("POST_CONDITION")) if postConditionValue == group.getKey( "POST_CONDITION_MATCH"): inputLoop = False else: #we clear the value of all params in the group #in order to re-input them by the user for param in group.getAllParams(): if controller.CONF.has_key( param.getKey("CONF_NAME")): del controller.CONF[param.getKey( "CONF_NAME")] if commandLineValues.has_key( param.getKey("CONF_NAME")): del commandLineValues[param.getKey( "CONF_NAME")] else: inputLoop = False else: logging.debug("no post condition check for group %s" % group.getKey("GROUP_NAME")) path = _getanswerfilepath() _displaySummary() if path: generateAnswerFile(path) except KeyboardInterrupt: logging.error("keyboard interrupt caught") raise Exception(output_messages.ERR_EXP_KEYBOARD_INTERRUPT) except Exception: logging.error(traceback.format_exc()) raise except: logging.error(traceback.format_exc()) raise Exception(output_messages.ERR_EXP_HANDLE_PARAMS)
def _handleAnswerFileParams(answerFile): """ handle loading and validating params from answer file supports reading single or group params """ try: logging.debug("Starting to handle config file") # Read answer file fconf = ConfigParser.ConfigParser() fconf.read(answerFile) # Iterate all the groups and check the pre/post conditions for group in controller.getAllGroups(): # Get all params per group # Handle pre conditions for group preConditionValue = True if group.getKey("PRE_CONDITION"): preConditionValue = _handleGroupCondition( fconf, group.getKey("PRE_CONDITION"), preConditionValue) # Handle pre condition match with case insensitive values logging.info( "Comparing pre- conditions, value: '%s', and match: '%s'" % (preConditionValue, group.getKey("PRE_CONDITION_MATCH"))) if utils.compareStrIgnoreCase(preConditionValue, group.getKey("PRE_CONDITION_MATCH")): for param in group.getAllParams(): _loadParamFromFile(fconf, "general", param.getKey("CONF_NAME")) # Handle post conditions for group only if pre condition passed postConditionValue = True if group.getKey("POST_CONDITION"): postConditionValue = _handleGroupCondition( fconf, group.getKey("POST_CONDITION"), postConditionValue) # Handle post condition match for group if not utils.compareStrIgnoreCase( postConditionValue, group.getKey("POST_CONDITION_MATCH")): logging.error("The group condition (%s) returned: %s, which differs from the excpeted output: %s"%\ (group.getKey("GROUP_NAME"), postConditionValue, group.getKey("POST_CONDITION_MATCH"))) raise ValueError(output_messages.ERR_EXP_GROUP_VALIDATION_ANS_FILE%\ (group.getKey("GROUP_NAME"), postConditionValue, group.getKey("POST_CONDITION_MATCH"))) else: logging.debug("condition (%s) passed" % group.getKey("POST_CONDITION")) else: logging.debug("no post condition check for group %s" % group.getKey("GROUP_NAME")) else: logging.debug( "skipping params group %s since value of group validation is %s" % (group.getKey("GROUP_NAME"), preConditionValue)) except Exception as e: logging.error(traceback.format_exc()) raise Exception(output_messages.ERR_EXP_HANDLE_ANSWER_FILE % (e))