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
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