Esempio n. 1
0
    def __init__(self, ip, port, nick, user, password, *chan_list):
        """ It sets up the bot instance. """
        sock = socket(AF_INET, SOCK_STREAM)

        # We have to wrap our socket with a SuperSocket instance
        # in order to have our events issued when data comes
        # from the socket.
        con = SuperSocket(sock)

        # This protocol is required by uxirc.irc protocol.
        # It spawns CONNECT.
        Client(con)

        # We use connect_ex since we do not want an exception.
        # Untwisted uses non blocking sockets.
        con.connect_ex((ip, port))

        # We save whatever we might need.
        self.nick = nick
        self.user = user
        self.password = password
        self.chan_list = chan_list
        self.ip = ip
        self.port = port

        # It maps CONNECT to self.send_auth so
        # when our socket connects it sends NICK and USER info.
        con.add_map(CONNECT, self.send_auth)
        con.add_map(CONNECT_ERR, lambda con, err: lose(con))
Esempio n. 2
0
    def on_connect(self, con):
        area = self.create_area(self.addr)
        area.bind('<Destroy>',
                  lambda event: send_cmd(con, 'QUIT :vy rules!'),
                  add=True)

        SockWriter(con)
        SockReader(con)
        Terminator(con)
        Irc(con)
        self.misc = Misc(con)

        con.add_map(CLOSE, lambda con, err: lose(con))
        con.add_map('*JOIN', self.create_channel)

        con.add_map(
            Terminator.FOUND,
            lambda con, data: area.append('%s\n' % data.decode(self.encoding)))

        con.add_map('PMSG', self.e_pmsg)
        con.add_map('376', lambda con, *args: send_cmd(con, self.irccmd))

        con.add_map('376', self.auto_join)

        con.add_map(
            'PING',
            lambda con, prefix, servaddr: send_cmd(con, 'PONG :%s' % servaddr))

        send_cmd(con, 'NICK %s' % self.nick)
        send_cmd(con, 'USER %s' % self.user)
Esempio n. 3
0
    def on_connect(self, ssock):
        """
        """

        SockReader(ssock)
        SockWriter(ssock)
        ssock.add_map(LOAD, self.on_load)
        ssock.add_map(CLOSE, lambda con, err: lose(con))
Esempio n. 4
0
    def on_accept(self, local, ssock):
        """
        """

        SockReader(ssock)
        SockWriter(ssock)
        Fixed(ssock)

        ssock.dumpfile(self.fd)

        ssock.add_map(CLOSE, lambda con, err: lose(con))
        ssock.add_map(Fixed.FOUND, self.on_ack)
        ssock.add_handle(
            lambda ssock, event, args: self.drive(event, ssock, *args))
        self.timer.cancel()
Esempio n. 5
0
    def __init__(self, host, port, fd, size):
        """
        """
        Dispatcher.__init__(self)

        sock = socket(AF_INET, SOCK_STREAM)
        ssock = SuperSocket(sock)
        self.port = port
        self.fd = fd
        self.size = size

        Client(ssock)
        ssock.connect_ex((host, port))

        ssock.add_map(CONNECT, self.on_connect)
        ssock.add_map(CONNECT_ERR, lambda con, err: lose(con))

        ssock.add_handle(
            lambda ssock, event, args: self.drive(event, ssock, *args))
Esempio n. 6
0
def send_auth(con, nick, user, cmd, delay):
    SockWriter(con)
    SockReader(con)
    Terminator(con)
    Irc(con)
    logcon(con)

    def do_job(ssock, *args):
        for ind in cmd:
            send_cmd(ssock, ind)
            sleep(delay)

    con.add_map('376', do_job)
    con.add_map(
        'PING',
        lambda con, prefix, servaddr: send_cmd(con, 'PONG :%s' % servaddr))

    con.add_map(CLOSE, lambda con, err: lose(con))
    send_cmd(con, 'NICK %s' % nick)
    send_cmd(con, 'USER %s' % user)
Esempio n. 7
0
def setup(con):
    SockWriter(con)
    SockReader(con)
    Terminator(con)
    Irc(con)
    CTCP(con)

    con.add_map(
        'PING',
        lambda con, prefix, servaddr: send_cmd(con, 'PONG :%s' % servaddr))
    con.add_map('376', lambda con, *args: send_cmd(con, 'JOIN #ameliabot'))

    con.add_map('PRIVMSG', send_file)
    con.add_map('DCC SEND', check_file_existence)
    con.add_map('376', get_myaddr)
    con.add_map(CLOSE, lambda con, err: lose(con))

    logcon(con)

    send_cmd(con, 'NICK %s' % NICK)
    send_cmd(con, 'USER %s' % USER)
Esempio n. 8
0
    def send_auth(self, con):
        # It is what we use to send data. send_msg function uses
        # ssock.dump function to dump commands.
        SockWriter(con)
        SockReader(con)

        # This protocol spawns FOUND whenever it finds \r\n.
        Terminator(con)

        Irc(con)

        con.add_map(CLOSE, lambda con, err: lose(con))

        # Now, it basically means: when it '376' irc command is
        # issued by the server then calls self.auto_join.
        # We use auto_join to send the sequence of JOIN
        # commands in order to join channels.
        con.add_map('376', self.auto_join)

        # Below the remaining stuff follows the same pattern.
        con.add_map('JOIN', self.on_join)
        con.add_map('PING', self.on_ping)
        con.add_map('PART', self.on_part)
        con.add_map('376', self.on_376)
        con.add_map('NOTICE', self.on_notice)
        con.add_map('PRIVMSG', self.on_privmsg)
        con.add_map('332', self.on_332)
        con.add_map('001', self.on_001)
        con.add_map('001', self.on_002)
        con.add_map('003', self.on_003)
        con.add_map('004', self.on_004)
        con.add_map('333', self.on_333)
        con.add_map('353', self.on_353)
        con.add_map('366', self.on_366)
        con.add_map('474', self.on_474)
        con.add_map('302', self.on_302)

        send_cmd(con, 'NICK %s' % self.nick)
        send_cmd(con, 'USER %s' % self.user)
        send_msg(con, 'nickserv', 'identify %s' % self.password)
Esempio n. 9
0
    def handle_accept(self, server, con):
        SockWriter(con)
        SockReader(con)

        con.dump(('%s\r\n' % asctime()).encode('utf-8'))
        con.add_map(CLOSE, lambda con, err: lose(con))
Esempio n. 10
0
 def handle_bdata(self, con, fd, data):
     lose(con)
     self.handle_response()
Esempio n. 11
0
 def terminate(self):
     lose(self.ssock)
     lose(self.server)
     die()
Esempio n. 12
0
 def handle_connect(self, client):
     print('Connected!', client)
     lose(client)
     lose(self.server)
     die()
Esempio n. 13
0
 def handle_done(self, client, data):
     print('Received bytes from:', self.client)
     lose(client)
     lose(self.server)
     die()
Esempio n. 14
0
 def handle_done(self, client, a, b):
     self.assertEqual(a, b'abc' * 100)
     self.assertEqual(b, b'efg' * 100)
     lose(client)
     lose(self.server)
     die()
Esempio n. 15
0
 def handle_accept(self, server, ssock):
     print('Accepted:', ssock)
     lose(ssock)
     lose(self.server)
     die()
Esempio n. 16
0
 def handle_done(self, ssock, data):
     print('Received bytes from:', ssock)
     lose(ssock)
     lose(self.server)
     die()
Esempio n. 17
0
 def handle_connect(self, client):
     lose(client)
     lose(self.server)
Esempio n. 18
0
def setup(server, con):
    SockReader(con)
    SockWriter(con)
    con.add_map(CLOSE, lambda con, err: lose(con))
    con.add_map(LOAD, lambda con, data: sys.stdout.write('%s\r\n' % data))
Esempio n. 19
0
 def run_done(self, ssock):
     lose(ssock)
     self.sdrive(DONE)
Esempio n. 20
0
 def run_done(self, ssock):
     lose(ssock)
     lose(self.local)
     ssock.drive(DONE)
Esempio n. 21
0
 def on_timeout(self):
     self.drive(TIMEOUT)
     lose(self.local)