Esempio n. 1
0
	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
Esempio n. 2
0
	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
Esempio n. 3
0
	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)		
Esempio n. 4
0
    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
Esempio n. 5
0
	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
Esempio n. 6
0
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
Esempio n. 7
0
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
Esempio n. 8
0
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
Esempio n. 9
0
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
Esempio n. 11
0
	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)
Esempio n. 12
0
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'),
Esempio n. 13
0
    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)
Esempio n. 14
0
		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