Exemplo n.º 1
0
	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
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
	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)
Exemplo n.º 4
0
    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))