本文整理汇总了Python中yapsy.PluginManager.PluginManager.deactivatePluginByName方法的典型用法代码示例。如果您正苦于以下问题:Python PluginManager.deactivatePluginByName方法的具体用法?Python PluginManager.deactivatePluginByName怎么用?Python PluginManager.deactivatePluginByName使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类yapsy.PluginManager.PluginManager
的用法示例。
在下文中一共展示了PluginManager.deactivatePluginByName方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __init__
# 需要导入模块: from yapsy.PluginManager import PluginManager [as 别名]
# 或者: from yapsy.PluginManager.PluginManager import deactivatePluginByName [as 别名]
class PluginHandler:
def __init__(self):
self._plugin_manager = PluginManager()
self._category_active = {"Modifier": False, "Analyzer": False, "Comparator": False}
self._plugin_from_category = {"Modifier": [], "Analyzer": [], "Comparator": []}
self._modifier_plugins = []
self._analyzer_plugins = []
self._collect_all_plugins()
def _collect_all_plugins(self):
self._plugin_manager.setPluginPlaces(
["hugin/analyze/modifier", "hugin/analyze/analyzer", "hugin/analyze/comparator"]
)
# setting filter categories for pluginmanager
self._plugin_manager.setCategoriesFilter(
{
# movie metadata provider
"Modifier": IModifier,
# movie metadata provider
"Comparator": IComparator,
# sub metadata provider
"Analyzer": IAnalyzer,
}
)
self._plugin_manager.collectPlugins()
def activate_plugins_by_category(self, category):
self._toggle_activate_plugins_by_category(category)
def deactivate_plugins_by_category(self, category):
self._toggle_activate_plugins_by_category(category)
def _toggle_activate_plugins_by_category(self, category):
plugins = self._plugin_manager.getPluginsOfCategory(category)
is_active = self._category_active[category]
for pluginInfo in plugins:
if is_active:
self._plugin_manager.deactivatePluginByName(name=pluginInfo.name, category=category)
self._plugin_from_category[category].remove(pluginInfo)
else:
self._plugin_manager.activatePluginByName(name=pluginInfo.name, category=category)
self._plugin_from_category[category].append(pluginInfo)
self._category_active[category] = not is_active
def get_plugins_from_category(self, category):
plugins = []
for plugin in self._plugin_from_category[category]:
plugin.plugin_object.name = plugin.name
plugin.plugin_object.description = plugin.description
plugins.append(plugin.plugin_object)
return plugins
def is_activated(self, category):
""" True if category is activated. """
return self._category_active[category]
示例2: SimpleTestsCase
# 需要导入模块: from yapsy.PluginManager import PluginManager [as 别名]
# 或者: from yapsy.PluginManager.PluginManager import deactivatePluginByName [as 别名]
class SimpleTestsCase(unittest.TestCase):
"""
Test the correct loading of a simple plugin as well as basic
commands.
"""
def setUp(self):
"""
init
"""
# create the plugin manager
self.simplePluginManager = PluginManager(directories_list=[
os.path.join(
os.path.dirname(os.path.abspath(__file__)),"plugins")])
# load the plugins that may be found
self.simplePluginManager.collectPlugins()
# Will be used later
self.plugin_info = None
def plugin_loading_check(self):
"""
Test if the correct plugin has been loaded.
"""
if self.plugin_info is None:
# check nb of categories
self.assertEqual(len(self.simplePluginManager.getCategories()),1)
sole_category = self.simplePluginManager.getCategories()[0]
# check the number of plugins
self.assertEqual(len(self.simplePluginManager.getPluginsOfCategory(sole_category)),1)
self.plugin_info = self.simplePluginManager.getPluginsOfCategory(sole_category)[0]
# test that the name of the plugin has been correctly defined
self.assertEqual(self.plugin_info.name,"Simple Plugin")
self.assertEqual(sole_category,self.plugin_info.category)
else:
self.assert_(True)
def testLoaded(self):
"""
Test if the correct plugin has been loaded.
"""
self.plugin_loading_check()
def testGetAll(self):
"""
Test if the correct plugin has been loaded.
"""
self.plugin_loading_check()
self.assertEqual(len(self.simplePluginManager.getAllPlugins()),1)
self.assertEqual(self.simplePluginManager.getAllPlugins()[0],self.plugin_info)
def testActivationAndDeactivation(self):
"""
Test if the activation procedure works.
"""
self.plugin_loading_check()
self.assert_(not self.plugin_info.plugin_object.is_activated)
self.simplePluginManager.activatePluginByName(self.plugin_info.name,
self.plugin_info.category)
self.assert_(self.plugin_info.plugin_object.is_activated)
self.simplePluginManager.deactivatePluginByName(self.plugin_info.name,
self.plugin_info.category)
self.assert_(not self.plugin_info.plugin_object.is_activated)
示例3: WeaponSystem
# 需要导入模块: from yapsy.PluginManager import PluginManager [as 别名]
# 或者: from yapsy.PluginManager.PluginManager import deactivatePluginByName [as 别名]
class WeaponSystem(rpyc.Service):
'''
RPC Services: This is the code that does the actual password cracking
and returns the results to orbital control. Currently only supports
cracking using rainbow tables (RCrackPy)
'''
is_initialized = False
mutex = Lock()
is_busy = False
job_id = None
def initialize(self):
''' Initializes variables, this should only be called once '''
logging.info("Weapon system initializing ...")
self.plugin_manager = PluginManager()
self.plugin_manager.setPluginPlaces(["plugins/"])
self.plugin_manager.setCategoriesFilter(FILTERS)
self.plugin_manager.collectPlugins()
self.plugins = {}
logging.info(
"Loaded %d plugin(s)" % len(self.plugin_manager.getAllPlugins())
)
self.__cpu__()
logging.info("Weapon system online, good hunting.")
@atomic
def on_connect(self):
''' Called when successfully connected '''
if not self.is_initialized:
self.initialize()
self.is_initialized = True
logging.info("Uplink to orbital control active")
def on_disconnect(self):
''' Called if the connection is lost/disconnected '''
logging.info("Disconnected from orbital command server.")
def __cpu__(self):
''' Detects the number of CPU cores on a system (including virtual cores) '''
if cpu_count is not None:
try:
self.cpu_cores = cpu_count()
logging.info("Detected %d CPU core(s)" % self.cpu_cores)
except NotImplementedError:
logging.error("Could not detect number of processors; assuming 1")
self.cpu_cores = 1
else:
try:
self.cpu_cores = int(sysconf("SC_NPROCESSORS_CONF"))
logging.info("Detected %d CPU core(s)" % self.cpu_cores)
except ValueError:
logging.error("Could not detect number of processors; assuming 1")
self.cpu_cores = 1
############################ [ EXPOSED METHODS ] ############################
@atomic
def exposed_crack(self, plugin_name, job_id, hashes, **kwargs):
''' Exposes plugins calls '''
assert plugin_name in self.plugins
self.is_busy = True
self.job_id = job_id
self.plugin_manager.activatePluginByName(plugin_name)
plugin = self.plugin_manager.getPluginByName(plugin_name)
results = plugin.execute(hashes, **kwargs)
self.plugin_manager.deactivatePluginByName(plugin_name)
self.job_id = None
self.is_busy = False
return results
def exposed_get_plugin_names(self):
''' Returns what algorithms can be cracked '''
logging.info("Method called: exposed_get_capabilities")
plugins = self.plugin_manager.getAllPlugins()
return [plugin.name for plugin in plugins]
def exposed_get_categories(self):
''' Return categories for which we have plugins '''
categories = []
for category in self.plugin_manager.getCategories():
if 0 < len(self.plugin_manager.getPluginsOfCategory(category)):
categories.append(category)
return categories
def exposed_get_category_plugins(self, category):
''' Get plugin names for a category '''
plugins = self.plugin_manager.getPluginsOfCategory(category)
return [plugin.name for plugin in plugins]
def exposed_get_plugin_details(self, category, plugin_name):
''' Get plugin based on name details '''
plugin = self.plugin_manager.getPluginByName(plugin_name, category)
info = {'name': plugin.name}
info['author'] = plugin.details.get('Documentation', 'author')
info['website'] = plugin.details.get('Documentation', 'website')
info['version'] = plugin.details.get('Documentation', 'version')
info['description'] = plugin.details.get('Documentation', 'description')
info['copyright'] = plugin.details.get('Documentation', 'copyright')
info['precomputation'] = plugin.details.getboolean('Core', 'precomputation')
return info
#.........这里部分代码省略.........
示例4: main
# 需要导入模块: from yapsy.PluginManager import PluginManager [as 别名]
# 或者: from yapsy.PluginManager.PluginManager import deactivatePluginByName [as 别名]
def main():
#Find and load plugins
pm = PluginManager()
libpath = '%s/OpenMesher/plugins' %(get_python_lib())
pm.setPluginPlaces(["/usr/share/openmesher/plugins", "~/.openmesher/plugins", "./OpenMesher/plugins", "./plugins", libpath])
pm.setPluginInfoExtension('plugin')
pm.setCategoriesFilter({
'config': IOpenMesherConfigPlugin,
'package': IOpenMesherPackagePlugin,
'deploy': IOpenMesherDeployPlugin,
})
pm.collectPlugins()
parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter, description="Configure, package, and deploy an OpenVPN mesh")
parser.add_argument('-r', '--router', action='append', help='Adds a router that can be a client and server')
parser.add_argument('-s', '--server', action='append', help='Adds a router that can only act as a server, not a client.')
parser.add_argument('-c', '--client', action='append', help='Adds a router than can only act as a client. For example, a router that is behind NAT and not accessible by a public IP')
#BUG: Stupid argparse appends your switches to the default.
#parser.add_argument('-n', '--network', action='append', default=['10.99.99.0/24'])
parser.add_argument('-n', '--network', action='append', required=True)
portgroup = parser.add_mutually_exclusive_group()
portgroup.add_argument('-p', '--ports', action='append', default=['7000-7999'])
portgroup.add_argument('-a', '--random', action='store_true')
parser.add_argument('-v', '--verbose', action='append_const', const='verbose', help='Specify multiple times to make things more verbose')
parser.add_argument('--version', action='version', version='v0.6.4')
pluginargsgroup = parser.add_argument_group('plugins')
for plugin in pm.getAllPlugins():
plugin.plugin_object.setupargs(pluginargsgroup)
arg = parser.parse_args()
for plugin in pm.getAllPlugins():
if plugin.plugin_object.__class__.__name__.lower() in arg:
if eval('arg.%s' %(plugin.plugin_object.__class__.__name__.lower())):
logging.debug('Plugin enabled: %s' %(plugin.name))
pm.activatePluginByName(plugin.name)
else:
logging.debug('Plugin disabled: %s' %(plugin.name))
pm.deactivatePluginByName(plugin.name)
else:
logging.debug('Plugin disabled: %s' %(plugin.name))
pm.deactivatePluginByName(plugin.name)
l = logging.getLogger()
if arg.verbose:
if len(arg.verbose) == 1:
l.setLevel(logging.INFO)
if len(arg.verbose) >= 2:
l.setLevel(logging.DEBUG)
# Call activate() on all plugins so they prep themselves for use
for plugin in pm.getAllPlugins():
if eval('arg.%s' %(plugin.plugin_object.__class__.__name__.lower())):
logging.info('Enabled plugin: %s' %(plugin.name))
pm.activatePluginByName(plugin.name)
plugin.plugin_object.activate()
plugin.plugin_object._enabled = True
if len(arg.ports) > 1:
arg.ports.reverse()
arg.ports.pop()
port_list = []
if arg.random:
numdevs = 0
if arg.router:
numdevs += len(arg.router)
if arg.server:
numdevs += len(arg.server)
if arg.client:
numdevs += len(arg.client)
ports_needed = numdevs * (numdevs - 1) / 2
for i in range(0, ports_needed):
port_list.append(random.randrange(1025,32767))
try:
if not arg.random:
# If we're not using random ports, pull whatever is in arg.ports
for portrange in arg.ports:
portstart, portstop = portrange.split('-')
port_list += range(int(portstart),int(portstop))
except ValueError as e:
print 'Invalid port range: %s' %(portrange)
raise ValueError('Invalid port range: %s' %(portrange))
linkmesh = create_link_mesh(routers=arg.router, servers=arg.server, clients=arg.client)
m = Mesh(linkmesh, port_list, arg.network)
#.........这里部分代码省略.........
示例5: Manager
# 需要导入模块: from yapsy.PluginManager import PluginManager [as 别名]
# 或者: from yapsy.PluginManager.PluginManager import deactivatePluginByName [as 别名]
class Manager(object):
"""
This is the main ``octo`` application class.
Normally, you would call `octo.main` instead of creating an instance of this
class directly, as `octo.main` will make it available globally as `octo.instance`
so plugins may interact with it.
"""
def __init__(self, plugin_dirs=[]):
logging.info("Initializing with plugin directories: {!r}".format(plugin_dirs))
self.plugin_manager = PluginManager(directories_list=plugin_dirs, plugin_info_ext='octoplugin')
self.plugin_manager.collectPlugins()
for plugin in self.get_plugins(include_inactive=True).values():
# Bind the plugin object so the plugin can refer to it via self
plugin.plugin_object.plugin_object = plugin
# And bind it's configparser object separately as well for a cleaner API
plugin.plugin_object.plugin_config = plugin.details
def get_plugins(self, include_inactive=False):
"""
Return a dictionary of loaded plugins
Keys will consist of plugin names, with their values being the plugin
instances (yapsy.PluginInfo.PluginInfo objects).
When ``include_inactive`` is True, all collected plugins will be
returned, otherwise only the activated plugins will be returned.
"""
if include_inactive:
plugins = self.plugin_manager.getAllPlugins()
else:
plugins = [plugin for plugin in self.plugin_manager.getAllPlugins()
if hasattr(plugin, 'is_activated') and plugin.is_activated]
return dict(zip([plugin.name for plugin in plugins], plugins))
def activate_plugin(self, plugin_name):
"""
Activate the given plugin
plugin_name should be the name of the plugin to be activated.
"""
self.plugin_manager.activatePluginByName(plugin_name)
def deactivate_plugin(self, plugin_name):
"""
Deactivate the given plugin
plugin_name should be the name of the plugin to be deactivated.
"""
self.plugin_manager.deactivatePluginByName(plugin_name)
def call(self, plugin_name, func, args=[], kwargs={}):
"""
Call the given function on the given plugin object (specifed by plugin name)
"""
for plugin in self.get_plugins().values():
if plugin.name == plugin_name:
return getattr(plugin.plugin_object, func)(*args, **kwargs)
raise octo.exceptions.NoSuchPluginError("The specified plugin isn't active or doesn't exist")
def call_many(self, func, args=[], kwargs={}):
"""
Call the given function on all active plugins and return results as a dictionary
The returned dictionary will have the form of {'plugin name': <function_result>}
"""
results = {}
for plugin in self.get_plugins().values():
try:
logging.debug("Calling {} on plugin '{}'".format(func, plugin.name))
results[plugin.name] = getattr(plugin.plugin_object, func)(*args, **kwargs)
except AttributeError as e:
logging.debug("'{}' has no attribute {}".format(plugin.name, func))
except Exception as e:
logging.exception("Exception while calling '{}' on '{}'".format(func, plugin.name))
results[plugin.name] = e
return results
def start(self):
"""Start and activate collected plugins
A plugin will be activated when it has a config item 'Enable'
under the section 'Config' with a value of True"""
logging.debug("Activating plugins")
for plugin in self.get_plugins(include_inactive=True).values():
try:
should_activate = plugin.details.getboolean('Config', 'Enable')
except configparser.NoSectionError:
should_activate = False
if should_activate:
logging.debug("Activating plugin {}".format(plugin.name))
self.activate_plugin(plugin.name)
else:
logging.debug("Plugin {} not activated because config item Enable "
"is not True".format(plugin.name))
logging.debug("Plugin activation done")
return self
#.........这里部分代码省略.........
示例6: NimbusPI
# 需要导入模块: from yapsy.PluginManager import PluginManager [as 别名]
# 或者: from yapsy.PluginManager.PluginManager import deactivatePluginByName [as 别名]
#.........这里部分代码省略.........
def activate_sensor(self, sensor):
"""Activates a sensor on the service"""
if sensor in self.sensors:
self.__logger.warn("Cannot activate sensor '%s' - sensor already active", sensor)
return False
self.__logger.debug("Activating sensor '%s'", sensor)
self.sensors[sensor] = self.__plugins.getPluginByName(sensor, plugins.ISensorPlugin.CATEGORY)
if not self.sensors[sensor]:
raise LookupError
self.__plugins.activatePluginByName(sensor, plugins.ISensorPlugin.CATEGORY)
self.threads.append(self.sensors[sensor].plugin_object.thread)
return True
def deactivate_sensor(self, sensor):
"""Deactivates a sensor on the service"""
if sensor not in self.sensors:
self.__logger.warn("Cannot deactivate sensor '%s' - sensor not active", sensor)
return False
self.__logger.debug("Deactivating sensor '%s'", sensor)
if self.sensors[sensor].plugin_object.thread:
self.sensors[sensor].plugin_object.thread.stop()
self.__plugins.deactivatePluginByName(sensor, plugins.ISensorPlugin.CATEGORY)
del self.sensors[sensor]
return True
def activate_broadcaster(self, broadcaster):
"""Activates a broadcaster on the service"""
if broadcaster in self.broadcasters:
self.__logger.warn("Cannot activate broadcaster '%s' - broadcaster already active", broadcaster)
return False
self.__logger.debug("Activating broadcaster '%s'", broadcaster)
self.broadcasters[broadcaster] = self.__plugins.getPluginByName(
broadcaster,
plugins.IBroadcasterPlugin.CATEGORY
)
if not self.broadcasters[broadcaster]:
raise LookupError
self.__plugins.activatePluginByName(broadcaster, plugins.IBroadcasterPlugin.CATEGORY)
self.threads.append(self.broadcasters[broadcaster].plugin_object.thread)
return True
def deactivate_broadcaster(self, broadcaster):
示例7: HandlerManager
# 需要导入模块: from yapsy.PluginManager import PluginManager [as 别名]
# 或者: from yapsy.PluginManager.PluginManager import deactivatePluginByName [as 别名]
class HandlerManager(QThread):
# 返回命令执行结果
# int: 0 -- 返回PlainText
# 1 -- 返回RichText
# str: 结果
outSignal = pyqtSignal(int, str)
def __init__(self):
super(HandlerManager, self).__init__()
# 创建工作队列,用户输入的命令按照顺序put进该队列
# 由CommandHandler在后台逐个处理
self.workQueue = Queue()
# 初始化插件功能
self.initPlugin()
def __del__(self):
self.wait()
def initPlugin(self):
'''
启动插件管理器,获取插件列表
'''
# 创建插件管理器
self.pluginManager = PluginManager()
# 设置插件接口为 DPlugin,所有插件必须继承categories.DPlugin
self.pluginManager.setCategoriesFilter({"DPlugin": DPlugin})
# 设置插件目录
self.pluginManager.setPluginPlaces(['plugins'])
# 加载插件到内存
self.pluginManager.locatePlugins()
self.pluginManager.loadPlugins()
def getAllPlugins(self):
'''获取插件列表'''
return self.pluginManager.getPluginsOfCategory('DPlugin')
def activateAllPlugins(self):
'''使能所有插件'''
for plugin in self.pluginManager.getPluginsOfCategory('DPlugin'):
plugin.plugin_object.activate()
def deactivateAllPlugins(self):
'''禁用所有插件'''
for plugin in self.pluginManager.getPluginsOfCategory('DPlugin'):
plugin.plugin_object.deactivate()
def activatePlugin(self, name):
'''使能特定插件'''
self.pluginManager.activatePluginByName(name, category="DPlugin")
def deactivatePlugin(self, name):
'''使能特定插件'''
self.pluginManager.deactivatePluginByName(name, category="DPlugin")
def processInput(self, userInput):
'''将命令放入队列'''
self.workQueue.put((False, userInput))
def processFile(self, filepath):
'''将待处理文件放入队列'''
self.workQueue.put((True, filepath))
def run(self):
'''不断从Queue中获取数据,然后执行解析命令'''
while True:
isFile, userInput = self.workQueue.get()
if isFile:
self.execFile(userInput)
else:
self.execCommand(userInput, None)
def execCommand(self, userInput, currentFile):
'''
解析命令
'''
if not len(userInput) or userInput.startswith('#'):
return
# 命令回显
self.writeCommand(userInput)
# 命令分割
command, *params = userInput.split(maxsplit=1)
if command == 'source':
if len(params) == 1:
filepath = params[0]
if not os.path.isabs(filepath):
basepath = os.path.dirname(currentFile)
filepath = os.path.normpath(filepath)
filepath = os.path.join(basepath, filepath)
self.execFile(filepath)
else:
#.........这里部分代码省略.........