Ejemplo n.º 1
0
    def _coro():
        futs = []

        for connections in ctx.storage.connections.values():
            for conn in connections:
                futs.append(conn.disconnect())

        yield parallel(*futs)
Ejemplo n.º 2
0
    def _coro():
        futs = []

        for connections in ctx.storage.connections.values():
            for conn in connections:
                futs.append(conn.disconnect())

        yield parallel(*futs)
Ejemplo n.º 3
0
    def on_message(self, message):
        self.ctx.message(self.ctx._("\x02[Omegle] {id}:\x02 {message}").format(id=self.id, message=message))

        k = (self.ctx.client.name, self.ctx.target)
        futs = []

        for conn in self.ctx.storage.connections.get(k, set([])):
            if conn is self:
                continue

            futs.append(conn.send(message))

        yield parallel(*futs)
Ejemplo n.º 4
0
    def on_message(self, message):
        self.ctx.message(
            self.ctx._("\x02[Omegle] {id}:\x02 {message}").format(
                id=self.id, message=message))

        k = (self.ctx.client.name, self.ctx.target)
        futs = []

        for conn in self.ctx.storage.connections.get(k, set([])):
            if conn is self:
                continue

            futs.append(conn.send(message))

        yield parallel(*futs)
Ejemplo n.º 5
0
def relay_irc(ctx, target, origin, message):
    if message[0] == ctx.config.ignore_prefix:
        return

    k = (ctx.client.name, ctx.target)
    futs = []

    for conn in ctx.storage.connections.get(k, set([])):
        @coroutine
        def _coro():
            yield conn.typing()
            yield conn.send(message)

        futs.append(_coro())

    yield parallel(*futs)
Ejemplo n.º 6
0
def relay_irc(ctx, target, origin, message):
    if message[0] == ctx.config.ignore_prefix:
        return

    k = (ctx.client.name, ctx.target)
    futs = []

    for conn in ctx.storage.connections.get(k, set([])):

        @coroutine
        def _coro():
            yield conn.typing()
            yield conn.send(message)

        futs.append(_coro())

    yield parallel(*futs)
Ejemplo n.º 7
0
    def whois(self, nickname):
        """
        If nickname is a list, performs multiple nicknames per WHOIS.  Otherwise, does default WHOIS behavior.

        :param nicknames: Nickname(s) to lookup.
        :return: Future
        """
        if isinstance(nickname, str):
            return super().whois(nickname)

        nicknames = set(filter(None, [nick.strip() for nick in nickname]))
        if not nicknames or any(protocol.ARGUMENT_SEPARATOR.search(nickname) is not None for nickname in nicknames):
            # IRCds don't like spaces in nicknames.  Adapted from pydle.features.rfc1459
            return None

        all_futures = set()  # Store all relevant futures.
        drop_nicknames = []  # List of nicknames we'll delete after the pass.
        for nickname in nicknames:
            if nickname in self._pending['whois']:
                all_futures.add(self._pending['whois'][nickname])
                drop_nicknames.append(nickname)
                continue
            future = Future()
            all_futures.add(future)
            self._pending['whois'][nickname] = future
            self._whois_info[nickname] = {
                'oper': False,
                'idle': 0,
                'away': False,
                'away_message': None,
                'account': None,
                'identified': False,
            }

        if nicknames:
            # It's possible we eliminated all nicknames due to already in-progress /WHOIS requests.  But we're here,
            # so we didn't.

            # Send WHOIS
            self.rawmsg('WHOIS', ",".join(nicknames))

        return parallel(*all_futures)
Ejemplo n.º 8
0
def disconnect(ctx):
    """
    Disconnect from Omegle.

    Sever all Omegle connections.
    """
    k = (ctx.client.name, ctx.target)

    if k not in ctx.storage.connections:
        ctx.respond(ctx._("I'm not connected to any Omegle users."))
        return

    futs = []

    for client in set(ctx.storage.connections[k]):
        futs.append(client.disconnect())

    yield parallel(*futs)

    del ctx.storage.connections[k]
Ejemplo n.º 9
0
def disconnect(ctx):
    """
    Disconnect from Omegle.

    Sever all Omegle connections.
    """
    k = (ctx.client.name, ctx.target)

    if k not in ctx.storage.connections:
        ctx.respond(ctx._("I'm not connected to any Omegle users."))
        return

    futs = []

    for client in set(ctx.storage.connections[k]):
        futs.append(client.disconnect())

    yield parallel(*futs)

    del ctx.storage.connections[k]