Example #1
0
    def get_events_since(self, start_time):
        type_check("start_time", start_time, int, float)
        if start_time < 0:
            raise ServerError("start_time must be a positive number.")

        events = self.events.get_events_since(start_time)
        for server in self.remote_irc_servers.itervalues():
            events.extend(server._get_events_since(start_time))
        return events
Example #2
0
    def get_events_since(self, start_time):
        type_check("start_time", start_time, int, float)
        if start_time < 0:
            raise ServerError("start_time must be a positive number.")

        events = self.events.get_events_since(start_time)
        for server in self.remote_irc_servers.itervalues():
            events.extend(server._get_events_since(start_time))
        return events
Example #3
0
    def server_disconnect(self, server_name, part_message=""):
        type_check("server_name", server_name, basestring)
        type_check("part_message", part_message, basestring)
        if server_name not in self.remote_irc_servers:
            raise ServerError('Server with name="%s" does not exist' % server_name)

        server = self.remote_irc_servers[server_name]
        server._disconnect(part_message)
        del self.remote_irc_servers[server_name]
        self.events.append(type="server_disconnect", server=server_name)
        return True
Example #4
0
    def server_disconnect(self, server_name, part_message=""):
        type_check("server_name", server_name, basestring)
        type_check("part_message", part_message, basestring)
        if server_name not in self.remote_irc_servers:
            raise ServerError('Server with name="%s" does not exist' % server_name)

        server = self.remote_irc_servers[server_name]
        server._disconnect(part_message)
        del self.remote_irc_servers[server_name]
        self.events.append(type="server_disconnect", server=server_name)
        return True
Example #5
0
    def _dispatch_channel(self, method, params):
        """Dispatch for xmlrpc methods starting with _channel."""

        # Checks for methods existance an non-privacy are done in
        # RemoteIRCServer._dispatch_channel_method

        # Get server
        if len(params) <= 0:
            raise ServerError('Not enough arguments for method "%s".' % method)
        server_name = params[0]
        type_check("server_name", server_name, basestring)
        if server_name not in self.remote_irc_servers:
            raise ServerError('Server with name "%s" was not found' % server_name)
        server = self.remote_irc_servers[server_name]

        # Dispatch to corresponding server
        return server._dispatch_channel_method(method, params[1:])
Example #6
0
    def _dispatch_channel(self, method, params):
        '''Dispatch for xmlrpc methods starting with _channel.'''

        # Checks for methods existance an non-privacy are done in
        # RemoteIRCServer._dispatch_channel_method

        # Get server
        if len(params) <= 0:
            raise ServerError('Not enough arguments for method "%s".' % method)
        server_name = params[0]
        type_check("server_name", server_name, basestring)
        if server_name not in self.remote_irc_servers:
            raise ServerError('Server with name "%s" was not found' % server_name)
        server = self.remote_irc_servers[server_name]

        # Dispatch to corresponding server
        return server._dispatch_channel_method(method, params[1:])
Example #7
0
    def _dispatch_server(self, method, params):
        """Dispatch for xmlrpc methods starting with _server."""

        # Check for method existence and callability
        server_method = method[len("server_") :]
        if not server_method.startswith("_") and callable(getattr(RemoteIRCServer, server_method, None)):

            # Get server
            if len(params) <= 0:
                raise ServerError('Not enough arguments for method "%s".' % method)
            server_name = params[0]
            type_check("server_name", server_name, basestring)
            if server_name not in self.remote_irc_servers:
                raise ServerError('Server with name "%s" was not found' % server_name)
            server = self.remote_irc_servers[server_name]

            # Call server method
            func = getattr(server, server_method)
            return func(*params[1:])

        raise ServerError('Method "%s" not found.' % method)
Example #8
0
    def _dispatch_server(self, method, params):
        '''Dispatch for xmlrpc methods starting with _server.'''

        # Check for method existence and callability
        server_method = method[len("server_"):]
        if not server_method.startswith("_") and \
                callable(getattr(RemoteIRCServer, server_method, None)):

            # Get server
            if len(params) <= 0:
                raise ServerError('Not enough arguments for method "%s".' % method)
            server_name = params[0]
            type_check("server_name", server_name, basestring)
            if server_name not in self.remote_irc_servers:
                raise ServerError('Server with name "%s" was not found' % server_name)
            server = self.remote_irc_servers[server_name]

            # Call server method
            func = getattr(server, server_method)
            return func(*params[1:])

        raise ServerError('Method "%s" not found.' % method)
Example #9
0
    def server_connect(self, server_name, nick_name, uri, port=6667, password="", ssl=False, ipv6=False):
        type_check("server_name", server_name, basestring)
        type_check("nick_name", nick_name, basestring)
        type_check("uri", uri, basestring)
        type_check("port", port, int)
        type_check("password", password, basestring)
        type_check("ssl", ssl, bool)
        type_check("ipv6", ipv6, bool)
        if port < 0 or port > 65535:
            raise ServerError("port must be between 0 and 65535 inclusive.")

        if not password:
            password = None
        if server_name in self.server_list():
            raise ServerError("Server with that name is already connected!")

        connection = self.irc_client.server()
        remote_server = RemoteIRCServer(connection, server_name, nick_name, uri, port, password, ssl, ipv6)
        self.remote_irc_servers[server_name] = remote_server
        self.events.append(type="server_connect", server=server_name)
        return True
Example #10
0
    def server_connect(self, server_name, nick_name, uri, port=6667,
                       password="", ssl=False, ipv6=False):
        type_check("server_name", server_name, basestring)
        type_check("nick_name", nick_name, basestring)
        type_check("uri", uri, basestring)
        type_check("port", port, int)
        type_check("password", password, basestring)
        type_check("ssl", ssl, bool)
        type_check("ipv6", ipv6, bool)
        if port < 0 or port > 65535:
            raise ServerError("port must be between 0 and 65535 inclusive.")

        if not password:
            password = None
        if server_name in self.server_list():
            raise ServerError("Server with that name is already connected!")

        connection = self.irc_client.server()
        remote_server = RemoteIRCServer(connection, server_name, nick_name,
                                        uri, port, password, ssl, ipv6)
        self.remote_irc_servers[server_name] = remote_server
        self.events.append(type="server_connect", server=server_name)
        return True