def __init__(self,
                 credentials,
                 encryption=False,
                 env=None,
                 top_layers=None):
        """
        :param credentials: number and registed password
        :param bool encryptionEnabled:  E2E encryption enabled/ disabled
        :param string env:  yowsup environment string
        :params top_layers: tuple of layer between :class:`yowsup_gateway.layer.CeleryLayer`
        and Yowsup Core Layers
        """
        if env and isinstance(env, str):
            YowsupEnv.setEnv(env)

        top_layers = top_layers + (CeleryLayer, ) if top_layers else (
            CeleryLayer, )
        layers = stacks.YowStackBuilder.getDefaultLayers(
            axolotl=encryption) + top_layers
        try:
            super(YowsupStack, self).__init__(layers, reversed=False)
        except ValueError as e:
            raise exceptions.ConfigurationError(e.args[0])
        self.setCredentials(credentials)
        self.detached_queue = Queue.Queue()
        self.facade = self.getLayerInterface(CeleryLayer)
        self.listening = False
Beispiel #2
0
    def process(self):
        super(RegistrationArgParser, self).process()

        config = self.getConfig(
            self.args["config"]) if self.args["config"] else {}

        if self.args["env"]:
            YowsupEnv.setEnv(self.args["env"])

        if self.args["mcc"]:
            config["mcc"] = self.args["mcc"]

        if self.args["mnc"]:
            config["mnc"] = self.args["mnc"]

        if self.args["phone"]:
            config["phone"] = self.args["phone"]

        if self.args["cc"]:
            config["cc"] = self.args["cc"]

        if not "mcc" in config:
            config["mcc"] = "000"

        if not "mnc" in config:
            config["mnc"] = "000"

        if not "sim_mcc" in config:
            config["sim_mcc"] = "000"

        if not "sim_mnc" in config:
            config["sim_mnc"] = "000"

        try:
            assert self.args["requestcode"] or self.args[
                "register"], "Must specify one of the modes -r/-R"
            assert "cc" in config, "Must specify cc (country code)"
            assert "phone" in config, "Must specify phone number"
        except AssertionError as e:
            self.tryPrint(e)
            self.tryPrint("\n")
            return False

        if not config["phone"].startswith(config["cc"]):
            self.tryPrint(
                "Error, phone number does not start with the specified country code\n"
            )
            return False

        config["phone"] = config["phone"][len(config["cc"]):]

        if self.args["requestcode"]:
            self.handleRequestCode(self.args["requestcode"], config)
        elif self.args["register"]:
            self.handleRegister(self.args["register"], config)
        else:
            return False

        return True
Beispiel #3
0
    def __init__(self):
        YowsupEnv.setEnv('android')

        super(YowsupWebLayer, self).__init__()
        YowInterfaceLayer.__init__(self)

        self.connected = False
        self.username = None
        self.sendReceipts = False
        self.sendRead = False
        self.credentials = None

        self.jidAliases = {
            # "NAME": "*****@*****.**"
        }
Beispiel #4
0
    def process(self):
        super(DemosArgParser, self).process()

        if self.args["env"]:
            YowsupEnv.setEnv(self.args["env"])

        if self.args["yowsup"]:
            self.startCmdline()
        elif self.args["echo"]:
            self.startEcho()
        elif self.args["send"]:
            self.startSendClient()
        elif self.args["sync"]:
            self.startSyncContacts()
        else:
            return False
        return True
Beispiel #5
0
    def process(self):
        super(RegistrationArgParser, self).process()

        config = self.getConfig(self.args["config"]) if self.args["config"] else {}

        if self.args["env"]:
            YowsupEnv.setEnv(self.args["env"])

        if self.args["mcc"]     : config["mcc"]     = self.args["mcc"]
        if self.args["mnc"]     : config["mnc"]     = self.args["mnc"]
        if self.args["phone"]   : config["phone"]   = self.args["phone"]
        if self.args["cc" ]     : config["cc"]      = self.args["cc"]
        #if self.args["sim_mnc"] : config["sim_mnc"] = self.args["sim_mnc"]
        #if self.args["sim_mcc"] : config["sim_mcc"] = self.args["sim_mcc"]

        if not "mcc"     in config: config["mcc"] = "000"
        if not "mnc"     in config: config["mnc"] = "000"
        if not "sim_mcc" in config: config["sim_mcc"] = "000"
        if not "sim_mnc" in config: config["sim_mnc"] = "000"




        try:
            assert self.args["requestcode"] or self.args["register"], "Must specify one of the modes -r/-R"
            assert "cc"      in config, "Must specify cc (country code)"
            assert "phone"   in config, "Must specify phone number"
        except AssertionError as e:
            print(e)
            print("\n")
            return False

        if not config["phone"].startswith(config["cc"]):
            print("Error, phone number does not start with the specified country code\n")
            return False

        config["phone"] = config["phone"][len(config["cc"]):]

        if self.args["requestcode"]:
            self.handleRequestCode(self.args["requestcode"], config)
        elif self.args["register"]:
            self.handleRegister(self.args["register"], config)
        else:
            return False

        return True
Beispiel #6
0
    def process(self):
        self.args = vars(self.parse_args())

        if self.args["debug"]:
            logger.setLevel(logging.DEBUG)
            yowlogger.setLevel(level=logging.DEBUG)
        else:
            logger.setLevel(logging.INFO)
            yowlogger.setLevel(level=logging.INFO)

        YowsupEnv.setEnv("android")

        config_manager = ConfigManager()
        profile_name = None
        config_loaded_from_profile = True
        if self.args["config"]:
            config = config_manager.load(self.args["config"])
            if not os.path.isfile(self.args["config"]):
                profile_name = self.args["config"]
            elif not self.args["config"].startswith(
                    StorageTools.getStorageForProfile(config.phone)):
                config_loaded_from_profile = False
        else:
            raise ValueError("Must specify --config")

        if config is None:
            config = Config()

        if not config_loaded_from_profile:
            # config file was explicitly specified and is not that of profile,
            # load profile config and override values
            internal_config = config_manager.load(config.phone,
                                                  profile_only=True)
            if internal_config is not None:
                for property in config.keys():
                    if property != "version" and config[property] is not None:
                        internal_config[property] = config[property]
                config = internal_config

        if self._profile is None or self._profile.config is None:
            self._profile = YowProfile(profile_name or config.phone, config)

        if self._profile.config.phone is None:
            print("Invalid config")
            sys.exit(1)
Beispiel #7
-2
    def process(self):
        super(DemosArgParser, self).process()

        if self.args["env"]:
            YowsupEnv.setEnv(self.args["env"])

        if self.args["news"]:
            self.startNews()
        else:
            return False
        return True