Exemplo n.º 1
0
def connect_callback(cli):
    if IDENT:
        irclogger.debug('Identifying with %s.'%IDENT)
        helpers.identify(cli,IDENT)
    else:
        irclogger.debug('NOT identifying')
    helpers.user(cli,NICK,NAME)
    for CHAN in CHANS:
        helpers.join(cli, CHAN)
Exemplo n.º 2
0
    def connect(self):
        """ initiates the connection to the server set in self.host:self.port
        and returns a generator object.

        >>> cli = IRCClient(my_handler, host="irc.freenode.net", port=6667)
        >>> g = cli.connect()
        >>> while 1:
        ...     g.next()

        """
        try:
            logging.info('connecting to %s:%s' % (self.host, self.port))
            self.socket.connect(("%s" % self.host, self.port))
            if self.blocking:
                # this also overrides default timeout
                self.socket.setblocking(1)
            else:
                self.socket.setblocking(0)

            helpers.nick(self, self.nick)
            helpers.user(self, self.nick, self.real_name)

            if self.connect_cb:
                self.connect_cb(self)

            buffer = bytes()
            while not self._end:
                try:
                    buffer += self.socket.recv(1024)
                except socket.error as e:
                    try:  # a little dance of compatibility to get the errno
                        errno = e.errno
                    except AttributeError:
                        errno = e[0]
                    if not self.blocking and errno == 11:
                        pass
                    else:
                        raise e
                else:
                    data = buffer.split(bytes("\n", "ascii"))
                    buffer = data.pop()

                    for el in data:
                        prefix, command, args = parse_raw_irc_command(el)
                        try:
                            self.command_handler.run(command, prefix, *args)
                        except CommandError:
                            # error will of already been loggingged by the handler
                            pass

                yield True
        finally:
            if self.socket:
                logging.info('closing socket')
                self.socket.close()
Exemplo n.º 3
0
 def connect_callback(self,cli):
     logger = logging.getLogger('IRCTerm.IRCMain.connect_callback')
     logger.debug('user %s realname %s nick %s'%\
             (self.user,self.realname,self.nick))
     helpers.user(self.cli,self.user,self.realname)
     
     if self.password is not None:
         logger.debug('Identifying %s with %s'%(self.nick,self.password))
         helpers.identify(self.cli,self.password)
     else:
         logger.debug('No identify required')
     logger.info('Joining %s'%self.channel)
     helpers.join(self.cli,self.channel)
Exemplo n.º 4
0
    def connect(self):
        """ initiates the connection to the server set in self.host:self.port 
        """

        logging.info('connecting to %s:%s' % (self.host, self.port))
        self.socket.connect(("%s" % self.host, self.port))
        if not self.blocking:
            self.socket.setblocking(0)
        if self.timeout:
            self.socket.settimeout(self.timeout)
        helpers.nick(self, self.nick)
        helpers.user(self, self.nick, self.real_name)

        if self.connect_cb:
            self.connect_cb(self)
Exemplo n.º 5
0
    def connect(self):
        """ initiates the connection to the server set in self.host:self.port 
        """

        logging.info('connecting to %s:%s' % (self.host, self.port))
        self.socket.connect(("%s" % self.host, self.port))
        if not self.blocking:
            self.socket.setblocking(0)
        if self.timeout:
            self.socket.settimeout(self.timeout)
        helpers.nick(self, self.nick)
        helpers.user(self, self.nick, self.real_name)

        if self.connect_cb:
            self.connect_cb(self)
Exemplo n.º 6
0
    def connect(self):
        """ initiates the connection to the server set in self.host:self.port 
        and returns a generator object. 

        >>> cli = IRCClient(my_handler, host="irc.freenode.net", port=6667)
        >>> g = cli.connect()
        >>> while 1:
        ...     g.next()

        """
        try:
            log.info("connecting to %s:%s" % (self.host, self.port))
            self.socket.connect(("%s" % self.host, self.port))
            if not self.blocking:
                self.socket.setblocking(0)

            helpers.nick(self, self.nick)
            helpers.user(self, self.nick, self.real_name)

            if self.connect_cb:
                self.connect_cb(self)

            buffer = ""
            while not self._end:
                try:
                    buffer += self.socket.recv(1024)
                except socket.error, e:
                    if not self.blocking and e[0] == 11:
                        pass
                    else:
                        raise e
                else:
                    data = buffer.split("\n")
                    buffer = data.pop()

                    for el in data:
                        prefix, command, args = parse_raw_irc_command(el)
                        try:
                            self.command_handler.run(command, prefix, *args)
                        except CommandError:
                            # error will of already been logged by the handler
                            pass

                yield True
        finally:
            if self.socket:
                log.info("closing socket")
                self.socket.close()