def __init__(self,question_library_path,question_path): config = file_util.dynamic_import(os.path.join( question_library_path,question_path,'cqg_config.py')) self.question_library_path = question_library_path self.question_path = question_path self.question_text = config.question_text self.answers = config.answers self.correct_answer = config.correct_answer
def __init__(self,question_library_path,question_path): self.question_library_path = question_library_path self.question_path = question_path config = file_util.dynamic_import(os.path.join( question_library_path,question_path,'cqg_config.py')) self.parity = config.parity self.code_word = list( hamming_util.generate_code_word(config.message,config.parity)) self.code_word_indexes = config.code_word_indexes
def __init__(self,question_library_path,question_path): config = file_util.dynamic_import(os.path.join( question_library_path,question_path,'cqg_config.py')) self.question_library_path = question_library_path self.question_path = question_path self.plaintext = config.plaintext self.key = config.key self.hotspots = config.hotspots self.ciphertext = caesar_util.caeser_encrypt(self.plaintext, self.key)
def __init__(self, question_library_path, question_path): self.question_library_path = question_library_path self.question_path = question_path config = file_util.dynamic_import( os.path.join(question_library_path, question_path, 'cqg_config.py')) self.parity = config.parity self.code_word = list( hamming_util.generate_code_word(config.message, config.parity)) self.code_word_indexes = config.code_word_indexes
def __init__(self,question_library_path,question_path): self.question_library_path = question_library_path self.question_path = question_path config = file_util.dynamic_import(os.path.join( question_library_path,question_path,'cqg_config.py')) self.public_ip_address = config.public_ip_address self.starting_port = config.starting_port self.traffic_list = config.traffic_list self.traffic_hotspots = config.traffic_hotspots self.conntrack_hotspots = config.conntrack_hotspots
def question_verifier_main(argv, title, condition_list, verify_conditions): ''' Purpose if len(argv) == 1: print condition_list formatted in HTML elif len(argv) == 2: verify condition_list by using verify_conditions else: print usage of argv[0] Precondition argv is a list of strings title is a string condition_list is a list of 2-string lists verify_conditions(Q,C,L) is a function where Q is a directory containing a config file, C is a reference to the cqg_config module in Q and L is a list where each element is a list of 2 strings ''' # process command line arguments if len(argv) == 1: # print conditions print_conditions(title, condition_list) return SUCCESS elif len(argv) == 2: # verify conditions if not file_util.check_directory(argv[1], True): print 'Not a readable directory: ' + argv[1] return DIRECTORY_FAILURE config_file = os.path.join(argv[1], 'cqg_config.py') try: config = file_util.dynamic_import(config_file) except: print 'Failure while importing', config_file return IMPORT_FAILURE # check conditions error_message = verify_conditions(argv[1], config, condition_list) if error_message == None: return SUCCESS else: print 'Condition failed:\n\t', error_message return CONDITION_FAILURE else: # argv syntax error print 'Usage: echo_question_verifier.py [question_directory]' return COMMAND_LINE_SYNTAX_FAILURE
def template_verifier_main(argv, title, condition_list, verify_conditions): ''' CONSIDER: is this documentation worth maintaining? it is longer than the code! is it easier to read? Purpose if len(argv) == 1: invoke print_conditions(title,condition_list) return SUCCESS elif len(argv) == 2: invoke verify_conditions(argv[2],condition_list) if argv is not a readable file containing valid Python return IMPORT_FAILURE else if return value is a string write the string to stdout return CONDITION_FAILURE else return SUCCESS else: return COMMAND_LINE_SYNTAX_FAILURE Precondition argv is a list of strings title is a string condition_list is a list where each element is a list of two strings verify_conditions is a function accepting a string and a condition list ''' if len(argv) == 1: # print conditions print_conditions(title, condition_list) return SUCCESS elif len(sys.argv) == 2: # verify conditions try: template = file_util.dynamic_import(argv[1]) except: print 'Failure while importing', argv[1] return IMPORT_FAILURE # check conditions error_message = verify_conditions(template, condition_list) if error_message == None: return SUCCESS else: print 'Condition failed:\n\t', error_message return CONDITION_FAILURE else: # argv syntax error return COMMAND_LINE_SYNTAX_FAILURE
def question_verifier_main(argv,title,condition_list,verify_conditions): ''' Purpose if len(argv) == 1: print condition_list formatted in HTML elif len(argv) == 2: verify condition_list by using verify_conditions else: print usage of argv[0] Precondition argv is a list of strings title is a string condition_list is a list of 2-string lists verify_conditions(Q,C,L) is a function where Q is a directory containing a config file, C is a reference to the cqg_config module in Q and L is a list where each element is a list of 2 strings ''' # process command line arguments if len(argv) == 1: # print conditions print_conditions(title,condition_list) return SUCCESS elif len(argv) == 2: # verify conditions if not file_util.check_directory(argv[1],True): print 'Not a readable directory: ' + argv[1] return DIRECTORY_FAILURE config_file = os.path.join(argv[1],'cqg_config.py') try: config = file_util.dynamic_import(config_file) except: print 'Failure while importing',config_file return IMPORT_FAILURE # check conditions error_message = verify_conditions(argv[1],config,condition_list) if error_message == None: return SUCCESS else: print 'Condition failed:\n\t',error_message return CONDITION_FAILURE else: # argv syntax error print 'Usage: echo_question_verifier.py [question_directory]' return COMMAND_LINE_SYNTAX_FAILURE
def template_verifier_main(argv,title,condition_list,verify_conditions): ''' CONSIDER: is this documentation worth maintaining? it is longer than the code! is it easier to read? Purpose if len(argv) == 1: invoke print_conditions(title,condition_list) return SUCCESS elif len(argv) == 2: invoke verify_conditions(argv[2],condition_list) if argv is not a readable file containing valid Python return IMPORT_FAILURE else if return value is a string write the string to stdout return CONDITION_FAILURE else return SUCCESS else: return COMMAND_LINE_SYNTAX_FAILURE Precondition argv is a list of strings title is a string condition_list is a list where each element is a list of two strings verify_conditions is a function accepting a string and a condition list ''' if len(argv) == 1: # print conditions print_conditions(title,condition_list) return SUCCESS elif len(sys.argv) == 2: # verify conditions try: template = file_util.dynamic_import(argv[1]) except: print 'Failure while importing',argv[1] return IMPORT_FAILURE # check conditions error_message = verify_conditions(template,condition_list) if error_message == None: return SUCCESS else: print 'Condition failed:\n\t',error_message return CONDITION_FAILURE else: # argv syntax error return COMMAND_LINE_SYNTAX_FAILURE
def instantiate_question(question_library_path,question_path): ''' purpose returns a question object instantiated from question_library_path/question_path precondition path is a string exceptions throws an exception of question could not be instantiated ''' config_file = os.path.join(question_library_path,question_path, 'cqg_config.py') config = file_util.dynamic_import(config_file) # construct question object exec('import question.'+config.product_family) exec('question_obj = question.%s.%s(question_library_path,question_path)' % \ (config.product_family, config.question_type)) return question_obj
def __init__(self,question_library_path,question_path): ''' purpose retrieve the question specified by path preconditions question_library_path,question_path are strings ''' config = file_util.dynamic_import( os.path.join( question_library_path, question_path, 'cqg_config.py')) self.question_library_path = question_library_path self.question_path = question_path self.plaintext = config.plaintext self.key = config.key self.hotspots = config.hotspots self.ciphertext = caesar_util.caesar_encrypt(self.plaintext, self.key)
template_string = '''\ product_family = 'caesar' question_type = 'caesar' plaintext = '{plaintext}' key = {key} hotspots = {hotspots} ''' if len(sys.argv) != 3: print 'Usage: caesar_generate.py template question_directory' sys.exit(1) try: template = file_util.dynamic_import(sys.argv[1]) except ImportError: print 'Failure while importing', sys.argv[1] sys.exit(2) for group in template.group_list: prefix = group[0] for question_id, (plaintext, key, hotspots) in enumerate(group[1:]): path = os.path.join(sys.argv[2], prefix + str(question_id)) if not os.path.exists(path): os.mkdir(path) config_string = template_string.format(**locals()) file_util.write_string(os.path.join(path, 'cqg_config.py'),
else: return warning_message # handle invocation from command line if __name__ == '__main__': # print condition if len(sys.argv) == 1: verify_util.print_conditions('Quiz Verification Conditions', condition_list) # check command line arguments if len(sys.argv) != 3: print 'Usage: quiz_verifier.py quiz_file question_library' sys.exit(-1) # load quiz file try: quiz = file_util.dynamic_import(sys.argv[1]) except ImportError: print "quiz_file must be a Python file" sys.exit(-1) # question library existance check question_library = os.path.abspath(sys.argv[2]) if not os.path.isdir(question_library): print "question library directory must exist" sys.exit(-1) print verify_conditions(quiz, condition_list)
return None else: return warning_message # handle invocation from command line if __name__ == '__main__': # print condition if len(sys.argv) == 1: verify_util.print_conditions('Quiz Verification Conditions', condition_list) # check command line arguments if len(sys.argv) != 3: print 'Usage: quiz_verifier.py quiz_file question_library' sys.exit(-1) # load quiz file try: quiz = file_util.dynamic_import(sys.argv[1]) except ImportError: print "quiz_file must be a Python file" sys.exit(-1) # question library existance check question_library = os.path.abspath(sys.argv[2]) if not os.path.isdir(question_library): print "question library directory must exist" sys.exit(-1) print verify_conditions(quiz,condition_list)
template_string = '''\ product_family = 'caesar' question_type = 'caesar' plaintext = $p key = $k hotspots = $h ''' if len(sys.argv) != 3: print 'Usage: caesar_generate.py template question_directory' sys.exit(1) try: template = file_util.dynamic_import(sys.argv[1]) except ImportError: print 'Failure while importing',sys.argv[1] sys.exit(2) for group in template.question_groups: prefix = group[0] question_id = 0 #We should generate the cipher using the alg not load it in... later... for (plaintext, key, hotspots) in group[1:]: path = os.path.join(sys.argv[2], prefix + str(question_id)) if not os.path.exists(path): os.mkdir(path) config_string = template_string