fix level requirements, level picker
This commit is contained in:
		
							parent
							
								
									706c9548a7
								
							
						
					
					
						commit
						9673655b44
					
				| @ -1,9 +1,9 @@ | |||||||
| import yaml  # reads hint configurations from a .yml file | import yaml  # reads hint configurations from a .yml file | ||||||
| 
 | 
 | ||||||
| class LevelSelector: | class LevelSelector: | ||||||
|     def __init__(self, tool_list_filename): |     def __init__(self, tool_list_filename, level_requirements_filename): | ||||||
|         self.read_level_requirements(filename) |         self.read_level_requirements(level_requirements_filename) | ||||||
|         self.read_tool_list(filename) |         self.read_tool_list(tool_list_filename) | ||||||
|         self.known_tools = [] |         self.known_tools = [] | ||||||
| 
 | 
 | ||||||
|     def read_level_requirements(self, filename):   |     def read_level_requirements(self, filename):   | ||||||
| @ -20,14 +20,14 @@ class LevelSelector: | |||||||
|         self.known_tools.append(tool) |         self.known_tools.append(tool) | ||||||
| 
 | 
 | ||||||
|     def next_level(self, current_level, current_time): |     def next_level(self, current_level, current_time): | ||||||
|         next_levels = self.level_requirements[level] |         next_levels = self.level_requirements["level" + str(current_level+1)] | ||||||
|         if len(next_levels) == 1: |         if len(next_levels) == 1: | ||||||
|             return next_levels[0][0] |             return next_levels[0][0] | ||||||
|         candidate_level = None |         candidate_level = None | ||||||
|         for {level, requirements} in next_levels: |         for level, requirements in next_levels: | ||||||
|             if requirements is None: |             if requirements is None: | ||||||
|                 candidate_level = level |                 candidate_level = level | ||||||
|             elif ((requirements[0] < current_time) and (requirements[1] in self.known_tools)): |             elif ((requirements[0] > current_time) and (requirements[1] in self.known_tools)): | ||||||
|                 candidate_level = level |                 candidate_level = level | ||||||
|             else: |             else: | ||||||
|                 pass |                 pass | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| --- | --- | ||||||
| # level_name: {branch_name: [machines_to_provision]} | # level_name: {branch_name: [machines_to_provision]} | ||||||
| level2: [{level2a, null}, {level2b, {10, "SQL injection"}}] | level2: [[level2a, null], [level2b, [10, "SQL injection"]]] | ||||||
| level3: [{level3, null}] | level3: [[level3, null]] | ||||||
| level4: [{level4a, null}, {level4b, {30, "John the Ripper"}}] | level4: [[level4a, null], [level4b, [30, "John the Ripper"]]] | ||||||
| level5: [{level5, null}] | level5: [[level5, null]] | ||||||
| ... | ... | ||||||
| @ -1,6 +1,6 @@ | |||||||
| --- | --- | ||||||
| metamask: null | - metamask | ||||||
| SQL injection: {10, level2b} | - SQL injection | ||||||
| nmap: null | - nmap | ||||||
| John the Ripper: {30, level4b} | - John the Ripper | ||||||
| ... | ... | ||||||
		Reference in New Issue
	
	Block a user