mirror of https://github.com/MISP/misp-modules
				
				
				
			Skeleton for misp-modules helpers added
Helpers will support modules with basic functionalities like caching or alike.pull/12/head
							parent
							
								
									7517485227
								
							
						
					
					
						commit
						be1962195b
					
				|  | @ -5,3 +5,4 @@ urlarchiver | |||
| passivetotal | ||||
| PyPDNS | ||||
| pypssl | ||||
| redis | ||||
|  |  | |||
|  | @ -27,7 +27,7 @@ import json | |||
| import logging | ||||
| import fnmatch | ||||
| import argparse | ||||
| 
 | ||||
| import re | ||||
| 
 | ||||
| def init_logger(): | ||||
|     log = logging.getLogger('misp-modules') | ||||
|  | @ -41,6 +41,26 @@ def init_logger(): | |||
|     return log | ||||
| 
 | ||||
| 
 | ||||
| def load_helpers(helpersdir='../helpers'): | ||||
|     sys.path.append(helpersdir) | ||||
|     hhandlers = {} | ||||
|     helpers = [] | ||||
|     for root, dirnames, filenames in os.walk(helpersdir): | ||||
|         if os.path.basename(root) == '__pycache__': | ||||
|             continue | ||||
|         if re.match(r'^\.', os.path.basename(root)): | ||||
|             continue | ||||
|         for filename in fnmatch.filter(filenames, '*.py'): | ||||
|             helpername = filename.split(".")[0] | ||||
|             hhandlers[helpername] = importlib.import_module(helpername) | ||||
|             selftest= hhandlers[helpername].selftest() | ||||
|             if selftest is None: | ||||
|                 helpers.append(helpername) | ||||
|                 log.info('Helpers loaded {} '.format(filename)) | ||||
|             else: | ||||
|                 log.info('Helpers failed {} due to {}'.format(filename, selftest)) | ||||
| 
 | ||||
| 
 | ||||
| def load_modules(mod_dir): | ||||
|     sys.path.append(mod_dir) | ||||
|     mhandlers = {} | ||||
|  | @ -90,7 +110,9 @@ if __name__ == '__main__': | |||
|     args = argParser.parse_args() | ||||
|     port = args.p | ||||
|     modulesdir = '../modules' | ||||
|     helpersdir = '../helpers' | ||||
|     log = init_logger() | ||||
|     load_helpers(helpersdir=helpersdir) | ||||
|     mhandlers, modules = load_modules(modulesdir) | ||||
|     service = [(r'/modules', ListModules), (r'/query', QueryModule)] | ||||
| 
 | ||||
|  |  | |||
|  | @ -0,0 +1,13 @@ | |||
| import redis | ||||
| 
 | ||||
| port = 6379 | ||||
| hostname = '127.0.0.1' | ||||
| 
 | ||||
| def selftest(enable=True): | ||||
|     if not enable: | ||||
|         return False | ||||
|     r = redis.StrictRedis(host='localhost', port=port) | ||||
|     try: | ||||
|         r.set('test','selftest') | ||||
|     except: | ||||
|         return 'Redis not running or not installed. Helper will be disabled.' | ||||
		Loading…
	
		Reference in New Issue