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
Example #2
0
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!")
Example #3
0
 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")
Example #4
0
 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)
Example #6
0
    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()
Example #7
0
 def __init__(self, message, error_dict=None):
     TVBException.__init__(self, message)
     self.error_dict = error_dict
Example #8
0
 def __init__(self, message):
     TVBException.__init__(self, message)
Example #9
0
 def __init__(self, message, redirect_url):
     TVBException.__init__(self, message)
     self.redirect_url = redirect_url
     self.status = 403
Example #10
0
def upgrade(migrate_engine):
    """
    """
    raise TVBException("Not yet implemented project update logic!")