def _project_key(project_name): password_encryption_key = os.environ[ DataEncryptionHandler. CRYPTO_PASS] if DataEncryptionHandler.CRYPTO_PASS in os.environ else None if password_encryption_key is None: raise TVBException("Password encryption key is not defined.") project_keys_folder = os.path.join(TvbProfile.current.TVB_STORAGE, DataEncryptionHandler.KEYS_FOLDER) DataEncryptionHandler.file_helper.check_created(project_keys_folder) encrypted_project_key = DataEncryptionHandler.project_key_path( project_name) if os.path.exists(encrypted_project_key): with open(encrypted_project_key, "rb") as fIn: inputFileSize = stat(encrypted_project_key).st_size pass_stream = BytesIO() pyAesCrypt.decryptStream(fIn, pass_stream, password_encryption_key, 64 * 1024, inputFileSize) project_key = pass_stream.getvalue().decode() pass_stream.close() return project_key project_key = EncryptionHandler.generate_random_password(64) with open(encrypted_project_key, "wb") as fOut: pass_stream = BytesIO(str.encode(project_key)) pyAesCrypt.encryptStream(pass_stream, fOut, password_encryption_key, 64 * 1024) pass_stream.close() return project_key
def update(project_path): """ """ for root, _, files in os.walk(project_path): for file_name in files: LOGGER.info("Translating from version 2 to 3 File %s" % (file_name)) raise TVBException("Not yet implemented project update logic!")
def data_encryption_handler(self, method, **data): self.logger.debug( "Received a request to data encryption handler: method {} data {}". format(method, data)) func = getattr(encryption_handler, method, None) if func: return json.dumps(func(**data)) else: self.logger.error("Cannot find {} method in {}".format( method, encryption_handler)) raise TVBException("Invalid data encryption handler method")
def execute(operation_id, user_name_label, adapter_instance): """Start asynchronous operation locally""" thread = OperationExecutor(operation_id) CURRENT_ACTIVE_THREADS.append(thread) if adapter_instance.launch_mode is AdapterLaunchModeEnum.SYNC_DIFF_MEM: thread.run() operation = dao.get_operation_by_id(operation_id) if operation.additional_info and operation.status == STATUS_ERROR: raise TVBException(operation.additional_info) else: thread.start()
def sync_folders(folder): if not DataEncryptionHandler.encryption_enabled(): return encrypted_folder = DataEncryptionHandler.compute_encrypted_folder_path( folder) crypto_pass = os.environ[ DataEncryptionHandler. CRYPTO_PASS] if DataEncryptionHandler.CRYPTO_PASS in os.environ else None if crypto_pass is None: raise TVBException( "Storage encryption/decryption is not possible because password is not provided." ) crypto = Crypto(crypto_pass) syncro = Syncrypto(crypto, encrypted_folder, folder) syncro.sync_folder() trash_path = os.path.join(encrypted_folder, "_syncrypto", "trash") if os.path.exists(trash_path): shutil.rmtree(trash_path)
def start_operation(operation_id): LOGGER.info("Start processing operation id:{}".format(operation_id)) operation = dao.get_operation_by_id(operation_id) operation.queue_full = False dao.store_entity(operation) thread = OperationExecutor(operation_id) CURRENT_ACTIVE_THREADS.append(thread) adapter_instance = ABCAdapter.build_adapter(operation.algorithm) if adapter_instance.launch_mode is AdapterLaunchModeEnum.SYNC_DIFF_MEM: thread.run() operation = dao.get_operation_by_id(operation_id) if operation.additional_info and operation.status == STATUS_ERROR: raise TVBException(operation.additional_info) else: thread.start()
def __init__(self, message, error_dict=None): TVBException.__init__(self, message) self.error_dict = error_dict
def __init__(self, message): TVBException.__init__(self, message)
def __init__(self, message, redirect_url): TVBException.__init__(self, message) self.redirect_url = redirect_url self.status = 403
def upgrade(migrate_engine): """ """ raise TVBException("Not yet implemented project update logic!")