def passive_config(self, msg, nick, send_message): parts = [ x.strip() for x in msg.strip().split(' ') if x.strip() != '' ] if len(parts) == 0: return False command = parts[0] undo = False data = parts[1:] args = {'send_message': send_message, 'cmdline': msg.strip(), 'nick': nick } if command == 'no': undo = True command = parts[1] data = parts[2:] if not command in self.handlers: return False if undo and command == 'show': # "no show" is invalid return False if command != 'show': data = [ undo ] + data for handler in self.handlers[command]: if startswith(data, handler['info']): data = data[len(handler['info']):] if handler['handler'] is None: continue try: handler['handler'](*data, **args) return True except: pass
def statement(self, caller_nick, caller_jid, msg): try: parts = parse(msg) except SyntaxError: return if len(parts) == 0: return False command = parts[0] undo = False data = parts[1:] cmdline = msg.strip() if command == 'no': undo = True command = parts[1] data = parts[2:] if not command in self.handlers: return if undo and command == 'show': # "no show" is invalid return for handler in self.handlers[command]: if startswith(data, handler['info']): canundo = handler['undo'] if undo and not canundo: continue args = data[len(handler['info']):] if type(handler['argc']) == list: if not len(args) in handler['argc']: continue elif len(args) != handler['argc']: continue cmd = [command] if len(handler['info']) > 0: cmd += handler['info'] self.send_cmd('cli_cmd', args=args, cmdline=cmdline, undo=undo, command=cmd, caller_nick=caller_nick, caller_jid=caller_jid)
def main(self): args = [] show_help = None debug_level = 3 mode = None server_name = None server_name_opt = "--server-name" needs_server_name = 0 for arg in sys.argv[1:]: if needs_server_name: server_name = arg needs_server_name = 0 continue if arg in ('--help', '-h'): show_help = 1 continue if utils.startswith(arg, server_name_opt): rarg = arg[len(server_name_opt):] if not rarg: needs_server_name = 1 continue if rarg[0] == '=': server_name = rarg[1:] continue print "Unknown option %s" % arg return 1 if mode is None: # This should be the mode mode = arg if mode == '': # Bad self.usage(1) if mode[0] == '-': # Mode can't be an option self.usage(1) if mode not in self.modes: print "Unknown mode %s" % mode self.usage(1) continue args.append(arg) if needs_server_name: print "No argument specified to %s" % server_name_opt return 1 rhn_log.set_debug_level(debug_level) if mode is None: # No args were specified self.usage(0) execname = os.path.basename(sys.argv[0]) # Class names cannot have dot in them, so strip the extension execname = string.split(execname, '.', 1)[0] mode_module = string.replace(mode, '-', '_') module_name = "%s_%s" % (self.mode_prefix, mode_module) full_module_name = "%s.%s" % (self.plugins_dir, module_name) try: module = __import__(full_module_name) except ImportError, e: rhn_log.die(1, "Unable to load plugin for mode '%s': %s" % (mode, e))