From: allfro Date: Sun, 9 Dec 2012 00:10:23 +0000 (-0500) Subject: Added auto install and uninstall of entities and machines during install-package... X-Git-Url: https://git.nothing2do.fr/?a=commitdiff_plain;h=08f5279cc23d32af36e1037023761d3cf1d5ebcc;p=get-hack-src.git Added auto install and uninstall of entities and machines during install-package and uninstall-package operations. --- diff --git a/src/canari/commands/common.py b/src/canari/commands/common.py index 5c7931a..1433cda 100644 --- a/src/canari/commands/common.py +++ b/src/canari/commands/common.py @@ -39,9 +39,9 @@ def get_commands(module='canari.commands'): def _detect_settings_dir(d): - vs = [ i for i in listdir(d) if path.isdir(sep.join([d, i])) if path.isdir(sep.join([d, i, 'config']))] + vs = [ i for i in listdir(d) if path.isdir(path.join(d, i)) if path.isdir(path.join(d, i, 'config'))] if len(vs) == 1: - return sep.join([d, vs[0]]) + return path.join(d, vs[0]) else: while True: print('Multiple versions of Maltego detected: ') @@ -50,9 +50,9 @@ def _detect_settings_dir(d): r = raw_input('Please select which version you wish to use [0]: ') try: if not r: - return sep.join([d, vs[0]]) + return path.join(d, vs[0]) elif int(r) < len(vs): - return sep.join([d, vs[int(r)]]) + return path.join(d, vs[int(r)]) except ValueError: pass print('Invalid selection... %s' % repr(r)) @@ -62,11 +62,11 @@ def _detect_settings_dir(d): def detect_settings_dir(): d = None if platform.startswith('linux'): - d = _detect_settings_dir(sep.join([path.expanduser('~'), '.maltego'])) + d = _detect_settings_dir(path.join(path.expanduser('~'), '.maltego')) elif platform == 'darwin': - d = _detect_settings_dir(sep.join([path.expanduser('~'), 'Library', 'Application Support', 'maltego'])) + d = _detect_settings_dir(path.join(path.expanduser('~'), 'Library', 'Application Support', 'maltego')) elif platform == 'win32': - d = _detect_settings_dir(sep.join([environ['APPDATA'], '.maltego'])) + d = _detect_settings_dir(path.join(environ['APPDATA'], '.maltego')) else: raise NotImplementedError('Unknown or unsupported OS: %s' % repr(platform)) return d diff --git a/src/canari/commands/create_package.py b/src/canari/commands/create_package.py index a4ff4f0..7d62dfe 100644 --- a/src/canari/commands/create_package.py +++ b/src/canari/commands/create_package.py @@ -5,7 +5,7 @@ from common import read_template, write_template, generate_all, build_skeleton, from argparse import ArgumentParser from datetime import datetime from getpass import getuser -from os import path, sep +from os import path __author__ = 'Nadeem Douba' @@ -32,42 +32,42 @@ parser.add_argument( def write_setup(package_name, values): - write_template(sep.join([package_name, '.canari']), read_template('_canari', values)) - write_template(sep.join([package_name, 'setup.py']), read_template('setup', values)) - write_template(sep.join([package_name, 'README.md']), read_template('README', values)) - write_template(sep.join([package_name, 'MANIFEST.in']), read_template('MANIFEST', values)) + write_template(path.join(package_name, '.canari'), read_template('_canari', values)) + write_template(path.join(package_name, 'setup.py'), read_template('setup', values)) + write_template(path.join(package_name, 'README.md'), read_template('README', values)) + write_template(path.join(package_name, 'MANIFEST.in'), read_template('MANIFEST', values)) def write_root(base, init): write_template( - sep.join([base, '__init__.py']), + path.join(base, '__init__.py'), init + generate_all('resources', 'transforms') ) def write_resources(package_name, resources, init, values): write_template( - sep.join([resources, '__init__.py']), + path.join(resources, '__init__.py'), init + generate_all('etc', 'images', 'maltego') ) write_template( - sep.join([resources, 'etc', '__init__.py']), + path.join(resources, 'etc', '__init__.py'), init ) write_template( - sep.join([resources, 'images', '__init__.py']), + path.join(resources, 'images', '__init__.py'), init ) write_template( - sep.join([resources, 'maltego', '__init__.py']), + path.join(resources, 'maltego', '__init__.py'), init ) write_template( - sep.join([resources, 'etc', '%s.conf' % package_name]), + path.join(resources, 'etc', '%s.conf' % package_name), read_template('conf', values) ) @@ -76,27 +76,27 @@ def write_common(transforms, init, values): if values['example']: write_template( - sep.join([transforms, '__init__.py']), + path.join(transforms, '__init__.py'), init + generate_all('common', 'helloworld') ) write_template( - sep.join([transforms, 'helloworld.py']), + path.join(transforms, 'helloworld.py'), read_template('transform', values) ) else: write_template( - sep.join([transforms, '__init__.py']), + path.join(transforms, '__init__.py'), init + generate_all('common') ) write_template( - sep.join([transforms, 'common', '__init__.py']), + path.join(transforms, 'common', '__init__.py'), init + generate_all('entities') ) write_template( - sep.join([transforms, 'common', 'entities.py']), + path.join(transforms, 'common', 'entities.py'), read_template('entities', values) ) @@ -159,9 +159,9 @@ def run(args): ask_user(values) - base = sep.join([package_name, 'src', package_name]) - transforms = sep.join([base, 'transforms']) - resources = sep.join([base, 'resources']) + base = path.join(package_name, 'src', package_name) + transforms = path.join(base, 'transforms') + resources = path.join(base, 'resources') if not path.exists(package_name): print('creating skeleton in %s' % package_name) diff --git a/src/canari/commands/create_transform.py b/src/canari/commands/create_transform.py index e1a5b84..c9a35d5 100644 --- a/src/canari/commands/create_transform.py +++ b/src/canari/commands/create_transform.py @@ -4,7 +4,7 @@ from common import write_template, read_template, cmd_name, init_pkg from argparse import ArgumentParser -from os import path, sep, getcwd +from os import path, getcwd from re import sub @@ -56,10 +56,10 @@ def run(args): opts = parse_args(args) - initf = sep.join([opts.transform_dir, '__init__.py']) + initf = path.join(opts.transform_dir, '__init__.py') transform = opts.transform directory = opts.transform_dir - transformf = sep.join([directory, transform if transform.endswith('.py') else '%s.py' % transform ]) + transformf = path.join(directory, transform if transform.endswith('.py') else '%s.py' % transform ) if not path.exists(initf): print ('Directory %s does not appear to be a python package directory... quitting!' % repr(opts.transform_dir)) diff --git a/src/canari/commands/delete_transform.py b/src/canari/commands/delete_transform.py index faed7c1..6bed264 100644 --- a/src/canari/commands/delete_transform.py +++ b/src/canari/commands/delete_transform.py @@ -2,7 +2,7 @@ from common import cmd_name -from os import path, sep, getcwd, unlink +from os import path, getcwd, unlink from argparse import ArgumentParser from re import sub @@ -55,9 +55,9 @@ def run(args): opts = parse_args(args) - initf = sep.join([opts.transform_dir, '__init__.py']) + initf = path.join(opts.transform_dir, '__init__.py') transform = opts.transform - transformf = sep.join([opts.transform_dir, transform if transform.endswith('.py') else '%s.py' % transform ]) + transformf = path.join(opts.transform_dir, transform if transform.endswith('.py') else '%s.py' % transform ) if not path.exists(initf): print ('Directory %s does not appear to be a python package directory... quitting!' % repr(opts.transform_dir)) diff --git a/src/canari/commands/install_package.py b/src/canari/commands/install_package.py index 3141acd..2d457e4 100644 --- a/src/canari/commands/install_package.py +++ b/src/canari/commands/install_package.py @@ -8,8 +8,8 @@ from common import detect_settings_dir, cmd_name, fix_pypath, get_bin_dir, impor from ..maltego.message import ElementTree from pkg_resources import resource_filename, resource_listdir -from xml.etree.cElementTree import XML, Element, SubElement -from os import sep, path, mkdir, chdir, getcwd, name +from xml.etree.cElementTree import XML, SubElement +from os import path, mkdir, chdir, getcwd, name from argparse import ArgumentParser from re import findall, sub from zipfile import ZipFile @@ -85,12 +85,12 @@ def parse_args(args): # Logic to install transforms def install_transform(module, name, author, spec, prefix, working_dir): - installdir = sep.join([prefix, 'config', 'Maltego', 'TransformRepositories', 'Local']) + installdir = path.join(prefix, 'config', 'Maltego', 'TransformRepositories', 'Local') if not path.exists(installdir): mkdir(installdir) - setsdir = sep.join([prefix, 'config', 'Maltego', 'TransformSets']) + setsdir = path.join(prefix, 'config', 'Maltego', 'TransformSets') for i,n in enumerate(spec.uuids): @@ -104,10 +104,10 @@ def install_transform(module, name, author, spec, prefix, working_dir): sets = None if spec.inputs[i][0] is not None: - setdir = sep.join([setsdir, spec.inputs[i][0]]) + setdir = path.join(setsdir, spec.inputs[i][0]) if not path.exists(setdir): mkdir(setdir) - open(sep.join([setdir, n]), 'w').close() + open(path.join(setdir, n), 'w').close() sets=TransformSet(spec.inputs[i][0]) transform = MaltegoTransform( @@ -127,7 +127,7 @@ def install_transform(module, name, author, spec, prefix, working_dir): transform.sets - ElementTree(transform).write(sep.join([installdir, '%s.transform' % n])) + ElementTree(transform).write(path.join(installdir, '%s.transform' % n)) transformsettings = TransformSettings(properties=[ CmdLineTransformPropertySetting(path.join(get_bin_dir(), 'dispatcher')), @@ -135,7 +135,7 @@ def install_transform(module, name, author, spec, prefix, working_dir): CmdCwdTransformPropertySetting(working_dir), CmdDbgTransformPropertySetting(spec.debug) ]) - ElementTree(transformsettings).write(sep.join([installdir, '%s.transformsettings' % n])) + ElementTree(transformsettings).write(path.join(installdir, '%s.transformsettings' % n)) def writeconf(sf, df, **kwargs): @@ -180,7 +180,7 @@ def installconf(opts, args): src = resource_filename('canari.resources.template', 'canari.plate') writeconf( src, - sep.join([opts.working_dir, 'canari.conf']), + path.join(opts.working_dir, 'canari.conf'), sub=True, command=' '.join(['canari install'] + args), config=('%s.conf' % opts.package) if opts.package != 'canari' else '', @@ -189,8 +189,8 @@ def installconf(opts, args): if opts.package != 'canari': src = resource_filename('%s.resources.etc' % opts.package, '%s.conf' % opts.package) - writeconf(src, sep.join([opts.working_dir, '%s.conf' % opts.package]), sub=False) - updateconf('%s.conf' % opts.package, sep.join([opts.working_dir, 'canari.conf'])) + writeconf(src, path.join(opts.working_dir, '%s.conf' % opts.package), sub=False) + updateconf('%s.conf' % opts.package, path.join(opts.working_dir, 'canari.conf')) def installmtz(package, prefix): @@ -282,6 +282,7 @@ def run(args): pass print ('Looking for transforms in %s.transforms' % opts.package) + m = None try: m = import_package('%s.transforms' % opts.package) except ImportError, e: diff --git a/src/canari/commands/rename_transform.py b/src/canari/commands/rename_transform.py index d56b45c..cd3edac 100644 --- a/src/canari/commands/rename_transform.py +++ b/src/canari/commands/rename_transform.py @@ -2,7 +2,7 @@ from common import cmd_name -from os import path, sep, getcwd, rename +from os import path, getcwd, rename from argparse import ArgumentParser from re import sub @@ -61,11 +61,11 @@ def run(args): opts = parse_args(args) - initf = sep.join([opts.transform_dir, '__init__.py']) + initf = path.join(opts.transform_dir, '__init__.py') transform = opts.transform - transformf = sep.join([opts.transform_dir, transform if transform.endswith('.py') else '%s.py' % transform ]) + transformf = path.join(opts.transform_dir, transform if transform.endswith('.py') else '%s.py' % transform ) dtransform = opts.new_transform - dtransformf = sep.join([opts.transform_dir, dtransform if dtransform.endswith('.py') else '%s.py' % dtransform ]) + dtransformf = path.join(opts.transform_dir, dtransform if dtransform.endswith('.py') else '%s.py' % dtransform ) if not path.exists(initf): print ('Directory %s does not appear to be a python package directory... quitting!' % repr(opts.transform_dir)) diff --git a/src/canari/commands/uninstall_package.py b/src/canari/commands/uninstall_package.py index 9ab1f60..c360f43 100644 --- a/src/canari/commands/uninstall_package.py +++ b/src/canari/commands/uninstall_package.py @@ -2,9 +2,9 @@ from common import detect_settings_dir, cmd_name, fix_pypath, import_package, import_transform -from xml.etree.cElementTree import ElementTree, SubElement, XML -from pkg_resources import resource_listdir, resource_filename -from os import sep, path, mkdir, listdir, unlink, rmdir +from xml.etree.cElementTree import ElementTree, XML +from os import path, mkdir, listdir, unlink, rmdir +from pkg_resources import resource_listdir from argparse import ArgumentParser @@ -76,27 +76,27 @@ def uninstallmachines(package, prefix): def uninstall_transform(module, spec, prefix): - installdir = sep.join([prefix, 'config', 'Maltego', 'TransformRepositories', 'Local']) + installdir = path.join(prefix, 'config', 'Maltego', 'TransformRepositories', 'Local') if not path.exists(installdir): mkdir(installdir) - setsdir = sep.join([prefix, 'config', 'Maltego', 'TransformSets']) + setsdir = path.join(prefix, 'config', 'Maltego', 'TransformSets') for i,n in enumerate(spec.uuids): print ('Uninstalling transform %s from %s...' % (n, module)) if spec.inputs[i][0] is not None: - setdir = sep.join([setsdir, spec.inputs[i][0]]) - f = sep.join([setdir, n]) + setdir = path.join(setsdir, spec.inputs[i][0]) + f = path.join(setdir, n) if path.exists(f): unlink(f) if path.exists(setdir) and not listdir(setdir): rmdir(setdir) - tf = sep.join([installdir, '%s.transform' % n]) - tsf = sep.join([installdir, '%s.transformsettings' % n]) + tf = path.join(installdir, '%s.transform' % n) + tsf = path.join(installdir, '%s.transformsettings' % n) if path.exists(tf): unlink(tf) diff --git a/src/canari/config.py b/src/canari/config.py index e25c790..d8cdc82 100644 --- a/src/canari/config.py +++ b/src/canari/config.py @@ -4,7 +4,7 @@ from resource import conf from re import findall, search, match, split from ConfigParser import SafeConfigParser -from os import environ, getcwd, sep +from os import environ, getcwd, path from utils.wordlist import wordlist from urlparse import urlsplit @@ -101,8 +101,8 @@ class CanariConfigParser(SafeConfigParser): config = CanariConfigParser() -dconf = sep.join([ conf ]) -lconf = sep.join([ getcwd(), 'canari.conf' ]) +dconf = path.join( conf ) +lconf = path.join( getcwd(), 'canari.conf' ) config.read([ dconf , lconf ]) config.read(config['default/configs']) \ No newline at end of file diff --git a/src/canari/utils/fs.py b/src/canari/utils/fs.py index 0287193..1b74a0c 100644 --- a/src/canari/utils/fs.py +++ b/src/canari/utils/fs.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -from os import path, name, sep, stat +from os import path, name, stat from tempfile import gettempdir from sys import maxint from time import time @@ -50,7 +50,7 @@ if name == 'nt': def cookie(name): - return sep.join([gettempdir(), name]) + return path.join(gettempdir(), name) class fsemaphore(file):