]> git.nothing2do.fr Git - get-hack-src.git/commitdiff
Added support for V2 transform spec for WSGI compatibility
authorallfro <ndouba@gmail.com>
Mon, 8 Apr 2013 01:25:07 +0000 (21:25 -0400)
committerallfro <ndouba@gmail.com>
Mon, 8 Apr 2013 01:25:07 +0000 (21:25 -0400)
src/canari/commands/common.py
src/canari/commands/debug_transform.py
src/canari/commands/run_server.py
src/canari/commands/run_transform.py

index 01270414c0b0499081e35eb1352a94ad35b6f835..aab1fcfb7a18a278b060c4731481c7a5f99ebc98 100644 (file)
@@ -8,6 +8,7 @@ from string import Template
 import unicodedata
 import subprocess
 import threading
+import inspect
 import sys
 import os
 
@@ -20,7 +21,7 @@ __copyright__ = 'Copyright 2012, Canari Project'
 __credits__ = []
 
 __license__ = 'GPL'
-__version__ = '0.3'
+__version__ = '0.4'
 __maintainer__ = 'Nadeem Douba'
 __email__ = 'ndouba@gmail.com'
 __status__ = 'Development'
@@ -37,6 +38,16 @@ def synchronized(func):
     return synced_func
 
 
+def get_transform_version(transform):
+    spec = inspect.getargspec(transform)
+    if spec.varargs is not None:
+        return 3
+    n = len(spec.args)
+    if 2 <= n <= 3:
+        return n
+    raise Exception('Could not determine transform version.')
+
+
 def fix_etree():
     try:
         from xml.etree.cElementTree import XML
@@ -45,6 +56,7 @@ def fix_etree():
     except SyntaxError:
         import canari.xmltools.fixetree
 
+
 def get_bin_dir():
     d = install(Distribution())
     d.finalize_options()
@@ -227,14 +239,11 @@ def init_pkg():
 
 
 def project_root():
-
     marker = '.canari'
-
     for i in range(0, 5):
         if os.path.exists(marker):
             return os.path.dirname(os.path.realpath(marker))
         marker = '..%s%s' % (os.sep, marker)
-
     print 'Unable to determine project root.'
     exit(-1)
 
index db6aa7e577f56aa39beb73058f52e2168f9a6662..8143c9fb6a16d34757185aa0ad1b119e696bfedb 100644 (file)
@@ -6,8 +6,9 @@ import sys
 from argparse import ArgumentParser
 from traceback import format_exc
 
-from canari.maltego.message import MaltegoException, MaltegoTransformResponseMessage, UIMessage
-from common import croak, import_transform, cmd_name, console_message, fix_binpath, sudo
+from common import croak, import_transform, cmd_name, console_message, fix_binpath, sudo, get_transform_version
+from canari.maltego.message import (MaltegoException, MaltegoTransformResponseMessage, UIMessage,
+                                    MaltegoTransformRequestMessage)
 from canari.maltego.utils import onterminate, parseargs
 from canari.config import config
 
@@ -17,7 +18,7 @@ __copyright__ = 'Copyright 2012, Canari Project'
 __credits__ = []
 
 __license__ = 'GPL'
-__version__ = '0.3'
+__version__ = '0.4'
 __maintainer__ = 'Nadeem Douba'
 __email__ = 'ndouba@gmail.com'
 __status__ = 'Development'
@@ -86,16 +87,12 @@ def run(args):
             m.__setattr__('onterminate', lambda *args: exit(-1))
 
         msg = m.dotransform(
-            type(
-                'MaltegoTransformRequestMessage',
-                (object,),
-                    {
-                    'value' : value,
-                    'fields' : fields,
-                    'params' : params
-                }
-            )(),
+            MaltegoTransformRequestMessage(value, fields, params),
             MaltegoTransformResponseMessage()
+        ) if get_transform_version(m.dotransform) == 2 else m.dotransform(
+            MaltegoTransformRequestMessage(value, fields, params),
+            MaltegoTransformResponseMessage(),
+            config
         )
 
         if isinstance(msg, MaltegoTransformResponseMessage):
index 69152849702c5cf5462abf9abddb6c337e3fa4c3..55b853f8725bc34967bda5d00870df7c351d176d 100755 (executable)
@@ -14,9 +14,9 @@ from urlparse import urlsplit
 from re import sub, findall
 from hashlib import md5
 
-from canari.maltego.message import (MaltegoTransformResponseMessage, MaltegoException,
+from canari.maltego.message import (MaltegoTransformResponseMessage, MaltegoException, MaltegoTransformRequestMessage,
                                MaltegoTransformExceptionMessage, MaltegoMessage, Message)
-from common import cmd_name, import_transform, fix_binpath, fix_pypath, import_package
+from common import cmd_name, import_transform, fix_binpath, fix_pypath, import_package, get_transform_version
 from canari.config import config
 
 
@@ -25,7 +25,7 @@ __copyright__ = 'Copyright 2012, Canari Project'
 __credits__ = []
 
 __license__ = 'GPL'
-__version__ = '0.5'
+__version__ = '0.6'
 __maintainer__ = 'Nadeem Douba'
 __email__ = 'ndouba@gmail.com'
 __status__ = 'Development'
@@ -187,22 +187,15 @@ class MaltegoTransformRequestHandler(BaseHTTPRequestHandler):
                     config['default/%s' % k] = i
             limits = xml.find('Limits').attrib
 
-
             msg = t[0](
-                type(
-                    'MaltegoTransformRequestMessage',
-                    (object,),
-                        {
-                        'value' : value,
-                        'fields' : fields,
-                        'params' : params,
-                        'limits' : limits
-                    }
-                )(),
+                MaltegoTransformRequestMessage(value, fields, params, limits),
                 request_str if hasattr(t[0], 'cmd') and callable(t[0].cmd) else MaltegoTransformResponseMessage()
+            ) if get_transform_version(t[0]) == 2 else t[0](
+                MaltegoTransformRequestMessage(value, fields, params, limits),
+                request_str if hasattr(t[0], 'cmd') and callable(t[0].cmd) else MaltegoTransformResponseMessage(),
+                config
             )
 
-
             if isinstance(msg, MaltegoTransformResponseMessage) or isinstance(msg, basestring):
                 message(msg, self)
                 return
index d063b37ee6ae0b7098939bab9a55f088fc8a8e5c..1845ff2d485e65970d0eced5d2ab8b4b28728a45 100644 (file)
@@ -6,9 +6,10 @@ from traceback import format_exc
 
 from argparse import ArgumentParser
 
-from canari.maltego.message import MaltegoException, MaltegoTransformResponseMessage, UIMessage
-from common import cmd_name, import_transform, fix_binpath, sudo
+from canari.maltego.message import (MaltegoException, MaltegoTransformResponseMessage, UIMessage,
+                                    MaltegoTransformRequestMessage)
 from canari.maltego.utils import onterminate, parseargs, croak, message
+from common import cmd_name, import_transform, fix_binpath, sudo, get_transform_version
 from canari.config import config
 
 
@@ -17,7 +18,7 @@ __copyright__ = 'Copyright 2012, Canari Project'
 __credits__ = []
 
 __license__ = 'GPL'
-__version__ = '0.3'
+__version__ = '0.4'
 __maintainer__ = 'Nadeem Douba'
 __email__ = 'ndouba@gmail.com'
 __status__ = 'Development'
@@ -87,16 +88,12 @@ def run(args):
             m.__setattr__('onterminate', lambda *args: exit(-1))
 
         msg = m.dotransform(
-            type(
-                'MaltegoTransformRequestMessage',
-                (object,),
-                    {
-                    'value' : value,
-                    'fields' : fields,
-                    'params' : params
-                }
-            )(),
+            MaltegoTransformRequestMessage(value, fields, params),
             MaltegoTransformResponseMessage()
+        ) if get_transform_version(m.dotransform) == 2 else m.dotransform(
+            MaltegoTransformRequestMessage(value, fields, params),
+            MaltegoTransformResponseMessage(),
+            config
         )
 
         if isinstance(msg, MaltegoTransformResponseMessage):