Example #1
0
def get_shape(shapes, shape=None):
    if shape is None:
        shape = common.get_input("Shape: ", shapes.keys())
    shape = shape.lower()
    if shape not in shapes:
        raise common.LoginError("Shape not found")
    return shapes[shape]
Example #2
0
def follow(client, penguin_id_or_name=None, dx=None, dy=None):
    if penguin_id_or_name is None:
        if client._follow:
            return 'Currently following "{}"'.format(
                client.get_penguin(client._follow[0]).name)
        return "Currently not following"
    penguin_id = client.get_penguin_id(penguin_id_or_name)
    if dx is None:
        client.follow(penguin_id)
    elif dy is None:
        raise common.LoginError("Invalid parameters")
    else:
        try:
            dx = int(dx)
            dy = int(dy)
        except ValueError:
            common.LoginError("Invalid parameters")
        client.follow(penguin_id, dx, dy)
Example #3
0
def walk(clients_offsets, x, y):
    try:
        x = int(x)
        y = int(y)
    except ValueError:
        raise common.LoginError("Invalid parameters")

    @for_all
    def inner_walk(client, dx, dy):
        client.walk(x + dx, y + dy)

    inner_walk(clients_offsets)
Example #4
0
def get_penguins(cpps=None, server=None, shape=None):
    servers = common.get_json("servers")
    shapes = common.get_json("shapes")
    try:
        cpps = common.get_cpps(servers, cpps)
        server = common.get_server(servers, cpps, server)
        shape = get_shape(shapes, shape)
    except (KeyboardInterrupt, EOFError):
        raise common.LoginError()
    logger = logging.getLogger()
    logger.addHandler(logging.NullHandler())
    clients_offsets = [(common.get_client(servers, cpps, server, logger),
                        int(offset["x"]), int(offset["y"]))
                       for offset in shape["offsets"]]
    return cpps, server, shape, clients_offsets
Example #5
0
def login():
    remember = common.get_remember()
    argc = len(sys.argv)
    cpps = sys.argv[1] if argc > 1 else None
    server = sys.argv[2] if argc > 2 else None
    user = sys.argv[3] if argc > 3 else None
    cpps, server, user, password, encrypted, client = common.get_penguin(
        cpps, server, user, remember)
    try:
        client.connect(user, password, encrypted)
    except ClientError as e:
        if e.code == 101 or e.code == 603:
            common.remove_penguin(cpps, user)
        raise common.LoginError("Failed to connect")
    print "Connected!"
    return client
Example #6
0
def log(client, level_name=None):
    if level_name is None:
        level_name = "all" if client.logger.level else "error"
    level = {
        "all": logging.NOTSET,
        "debug": logging.DEBUG,
        "info": logging.INFO,
        "warning": logging.WARNING,
        "error": logging.ERROR,
        "critical": logging.CRITICAL
    }.get(level_name)
    if level is None:
        raise common.LoginError(
            'Unknown logging level "{}"'.format(level_name))
    client.logger.setLevel(level)
    return "Logging {} messages".format(level_name)
Example #7
0
def connect_clients(cpps, server, shape, clients_offsets, remember):
    clients = [client for client, dx, dy in clients_offsets]
    print "Logging in with {} penguin{}...".format(
        len(clients), "s" if len(clients) > 1 else "")
    if cpps == "cpr":
        try:
            import recaptcha
        except ImportError:
            raise common.LoginError(
                "cefpython is not installed; Please install it using the following command and try again:\npip install cefpython3"
            )
        recaptcha.preload_tokens(len(clients))
    penguins = common.get_json("penguins")
    not_connected = auto_login(cpps, shape, penguins,
                               clients) if cpps in penguins else clients
    connected = [client for client in clients if client not in not_connected]
    try:
        manual_login(cpps, server, shape, connected, not_connected, remember)
    except common.LoginError:
        logout(clients_offsets)
        raise
    print "All connected!"