From 0752c5e3f4f27fe528072dbe5728436b87f117f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Vinot?= Date: Sat, 18 Jun 2016 11:04:41 +0900 Subject: [PATCH] Make it a package --- .gitignore | 3 +++ README.rst | 1 + bin/misp-modules.py | 15 +++++++------ helpers/__init__.py | 0 helpers/cache.py | 21 +++++++++---------- modules/expansion/cve.py | 1 - setup.py | 37 +++++++++++++++++++++++++++++++++ tests/query-circl_passivedns.sh | 0 tests/query-circl_passivessl.sh | 0 tests/query-cve.sh | 0 tests/query-dns.sh | 0 tests/query-sourcecache.sh | 0 tests/search-modules.sh | 0 13 files changed, 60 insertions(+), 18 deletions(-) create mode 120000 README.rst create mode 100644 helpers/__init__.py create mode 100644 setup.py mode change 100644 => 100755 tests/query-circl_passivedns.sh mode change 100644 => 100755 tests/query-circl_passivessl.sh mode change 100644 => 100755 tests/query-cve.sh mode change 100644 => 100755 tests/query-dns.sh mode change 100644 => 100755 tests/query-sourcecache.sh mode change 100644 => 100755 tests/search-modules.sh diff --git a/.gitignore b/.gitignore index e69364e..9676396 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ *.pyc *.swp __pycache__ +build/ +dist/ +misp_modules.egg-info/ diff --git a/README.rst b/README.rst new file mode 120000 index 0000000..42061c0 --- /dev/null +++ b/README.rst @@ -0,0 +1 @@ +README.md \ No newline at end of file diff --git a/bin/misp-modules.py b/bin/misp-modules.py index f5adc83..2eb38d3 100755 --- a/bin/misp-modules.py +++ b/bin/misp-modules.py @@ -29,6 +29,7 @@ import fnmatch import argparse import re + def init_logger(): log = logging.getLogger('misp-modules') formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') @@ -41,7 +42,7 @@ def init_logger(): return log -def load_helpers(helpersdir='../helpers'): +def load_helpers(helpersdir): sys.path.append(helpersdir) hhandlers = {} helpers = [] @@ -51,9 +52,11 @@ def load_helpers(helpersdir='../helpers'): if re.match(r'^\.', os.path.basename(root)): continue for filename in fnmatch.filter(filenames, '*.py'): + if filename == '__init__.py': + continue helpername = filename.split(".")[0] hhandlers[helpername] = importlib.import_module(helpername) - selftest= hhandlers[helpername].selftest() + selftest = hhandlers[helpername].selftest() if selftest is None: helpers.append(helpername) log.info('Helpers loaded {} '.format(filename)) @@ -110,8 +113,8 @@ class QueryModule(tornado.web.RequestHandler): if __name__ == '__main__': - if os.path.dirname(__file__) is not '': - os.chdir(os.path.dirname(__file__)) + if os.path.dirname(__file__) is '.': + os.chdir('../') argParser = argparse.ArgumentParser(description='misp-modules server') argParser.add_argument('-t', default=False, action='store_true', help='Test mode') argParser.add_argument('-p', default=6666, help='misp-modules TCP port (default 6666)') @@ -119,8 +122,8 @@ if __name__ == '__main__': args = argParser.parse_args() port = args.p listen = args.l - modulesdir = '../modules' - helpersdir = '../helpers' + modulesdir = 'modules' + helpersdir = 'helpers' log = init_logger() load_helpers(helpersdir=helpersdir) mhandlers, modules = load_modules(modulesdir) diff --git a/helpers/__init__.py b/helpers/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/helpers/cache.py b/helpers/cache.py index da43cd8..7d70159 100644 --- a/helpers/cache.py +++ b/helpers/cache.py @@ -32,7 +32,7 @@ def selftest(enable=True): return False r = redis.StrictRedis(host=hostname, port=port, db=db) try: - r.set('test', 'selftest') + r.ping() except: return 'Redis not running or not installed. Helper will be disabled.' @@ -44,16 +44,15 @@ def get(modulename=None, query=None, value=None, debug=False): h = hashlib.sha1() h.update(query.encode('UTF-8')) hv = h.hexdigest() - key = "m:"+modulename+":"+hv + key = "m:" + modulename + ":" + hv if not r.exists(key): if debug: - print ("Key {} added in cache".format(key)) - r.set(key, value) - r.expire(key, 86400) + print("Key {} added in cache".format(key)) + r.setex(key, 86400, value) else: if debug: - print ("Cache hit with Key {}".format(key)) + print("Cache hit with Key {}".format(key)) return r.get(key) @@ -68,14 +67,14 @@ if __name__ == "__main__": if selftest() is not None: sys.exit() else: - print ("Selftest ok") + print("Selftest ok") v = get(modulename="testmodule", query="abcdef", value="barfoo", debug=True) if v == b'barfoo': - print ("Cache ok") + print("Cache ok") v = get(modulename="testmodule", query="abcdef") - print (v) + print(v) v = get(modulename="testmodule") if (not v): - print ("Failed ok") + print("Failed ok") if flush(): - print ("Cache flushed ok") + print("Cache flushed ok") diff --git a/modules/expansion/cve.py b/modules/expansion/cve.py index 48e8f02..e370116 100755 --- a/modules/expansion/cve.py +++ b/modules/expansion/cve.py @@ -11,7 +11,6 @@ cveapi_url = 'https://cve.circl.lu/api/cve/' def handler(q=False): if q is False: return False - print (q) request = json.loads(q) if not request.get('vulnerability'): misperrors['error'] = 'Vulnerability id missing' diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..d9d0f79 --- /dev/null +++ b/setup.py @@ -0,0 +1,37 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +from setuptools import setup + +setup( + name='misp-modules', + version='1.0', + author='Alexandre Dulaunoy', + author_email='alexandre.dulaunoy@circl.lu', + maintainer='Alexandre Dulaunoy', + url='https://github.com/MISP/misp-modules', + description='MISP modules are autonomous modules that can be used for expansion and other services in MISP', + packages=['modules', 'helpers'], + scripts=['bin/misp-modules.py'], + test_suite="tests", + classifiers=[ + 'License :: OSI Approved :: GNU Affero General Public License v3', + 'Development Status :: 5 - Production/Stable', + 'Environment :: Console', + 'Intended Audience :: Science/Research', + 'Programming Language :: Python :: 3', + 'Topic :: Security', + ], + install_requires=[ + 'tornado', + 'dnspython3', + 'requests', + 'urlarchiver', + 'passivetotal', + 'PyPDNS', + 'pypssl', + 'redis', + 'pyeupi', + 'ipasn-redis', + 'asnhistory', + ] +) diff --git a/tests/query-circl_passivedns.sh b/tests/query-circl_passivedns.sh old mode 100644 new mode 100755 diff --git a/tests/query-circl_passivessl.sh b/tests/query-circl_passivessl.sh old mode 100644 new mode 100755 diff --git a/tests/query-cve.sh b/tests/query-cve.sh old mode 100644 new mode 100755 diff --git a/tests/query-dns.sh b/tests/query-dns.sh old mode 100644 new mode 100755 diff --git a/tests/query-sourcecache.sh b/tests/query-sourcecache.sh old mode 100644 new mode 100755 diff --git a/tests/search-modules.sh b/tests/search-modules.sh old mode 100644 new mode 100755