예제 #1
0
    def __create_client(self):
        """
        Exchange instance creation
        :return:
        """
        if self.exchange_manager.ignore_config or self.exchange_manager.check_config(
                self.name):
            try:
                if self.exchange_manager.ignore_config or not self.exchange_manager.should_decrypt_token(
                        self.logger):
                    key = ""
                    secret = ""
                    password = ""
                else:
                    config_exchange = self.config[CONFIG_EXCHANGES][self.name]
                    key = decrypt(config_exchange[CONFIG_EXCHANGE_KEY]) \
                        if config_exchange[CONFIG_EXCHANGE_KEY] else None
                    secret = decrypt(config_exchange[CONFIG_EXCHANGE_SECRET]) \
                        if config_exchange[CONFIG_EXCHANGE_SECRET] else None
                    password = decrypt(config_exchange[CONFIG_EXCHANGE_PASSWORD]) \
                        if CONFIG_EXCHANGE_PASSWORD in config_exchange else None
                    self.is_authenticated = True

                self.client = self.exchange_type({
                    'apiKey':
                    key,
                    'secret':
                    secret,
                    'password':
                    password,
                    'verbose':
                    False,
                    'enableRateLimit':
                    True,
                    'options':
                    self.CCXT_CLIENT_LOGIN_OPTIONS
                })
            except Exception as e:
                self.is_authenticated = False
                self.exchange_manager.handle_token_error(e, self.logger)
                self.client = self.exchange_type({
                    'verbose':
                    False,
                    'enableRateLimit':
                    True,
                    'options':
                    self.CCXT_CLIENT_LOGIN_OPTIONS
                })
        else:
            self.client = self.exchange_type({
                'verbose':
                False,
                'enableRateLimit':
                True,
                'options':
                self.CCXT_CLIENT_LOGIN_OPTIONS
            })
            self.logger.error(
                "configuration issue: missing login information !")
        self.client.logger.setLevel(logging.INFO)
 def get_exchange_credentials(self, logger, exchange_name):
     if self.ignore_config or not self.should_decrypt_token(
             logger) or self.without_auth:
         return "", "", ""
     config_exchange = self.config[CONFIG_EXCHANGES][exchange_name]
     return decrypt(config_exchange[CONFIG_EXCHANGE_KEY]) \
                if config_exchange.get(CONFIG_EXCHANGE_KEY, '') else None, \
            decrypt(config_exchange[CONFIG_EXCHANGE_SECRET]) \
                if config_exchange.get(CONFIG_EXCHANGE_SECRET, '') else None, \
            decrypt(config_exchange[CONFIG_EXCHANGE_PASSWORD]) \
                if config_exchange.get(CONFIG_EXCHANGE_PASSWORD, '') else None
예제 #3
0
def _handle_encrypted_value(value_key, config_element, verbose=False):
    if value_key in config_element:
        key = config_element[value_key]
        if not has_invalid_default_config_value(key):
            try:
                decrypt(key, silent_on_invalid_token=True)
                return True
            except Exception:
                config_element[value_key] = encrypt(key).decode()
                if verbose:
                    get_logger().warning(
                        f"Non encrypted secret info found in config ({value_key}): replaced "
                        f"value with encrypted equivalent.")
                return False
    return True