Skip to content

Commit

Permalink
Fix:decrypt connector metatada (#18)
Browse files Browse the repository at this point in the history
* fixing connector metadata by decrypting

* mypy resolve prompt studio

* reverting old FE changes to get connector metadata
  • Loading branch information
kirtimanmishrazipstack authored Feb 29, 2024
1 parent e8df8ab commit 513f704
Show file tree
Hide file tree
Showing 6 changed files with 28 additions and 44 deletions.
14 changes: 13 additions & 1 deletion backend/connector/models.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
import json
import uuid
from typing import Any

from account.models import User
from account.models import EncryptionSecret, User
from connector.fields import ConnectorAuthJSONField
from connector_auth.models import ConnectorAuth
from connector_processor.connector_processor import ConnectorProcessor
from connector_processor.constants import ConnectorKeys
from cryptography.fernet import Fernet
from django.db import models
from project.models import Project
from utils.models.base_model import BaseModel
Expand Down Expand Up @@ -107,6 +110,15 @@ def __str__(self) -> str:
f" workflow: {self.workflow})"
)

@property
def metadata(self) -> Any:
encryption_secret: EncryptionSecret = EncryptionSecret.objects.get()
cipher_suite: Fernet = Fernet(encryption_secret.key.encode("utf-8"))
decrypted_value = cipher_suite.decrypt(
bytes(self.connector_metadata_b).decode("utf-8")
)
return json.loads(decrypted_value)

class Meta:
constraints = [
models.UniqueConstraint(
Expand Down
2 changes: 1 addition & 1 deletion backend/file_management/file_management_helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ class FileManagerHelper:
@staticmethod
def get_file_system(connector: ConnectorInstance) -> UnstractFileSystem:
"""Creates the `UnstractFileSystem` for the corresponding connector."""
metadata = connector.connector_metadata
metadata = connector.metadata
if connector.connector_id in fs_connectors:
connector = fs_connectors[connector.connector_id]["metadata"][
"connector"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -388,7 +388,6 @@ def dynamic_indexer(
vector_db = str(profile_manager.vector_store.id)
x2text_adapter = str(profile_manager.x2text.id)
file_hash = ToolUtils.get_hash_from_file(file_path=file_name)
extract_file_path = None
if not is_summary:
directory, filename = os.path.split(file_name)
extract_file_path: str = os.path.join(
Expand Down
23 changes: 9 additions & 14 deletions backend/tool_instance/tool_instance_helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,12 +59,9 @@ def update_instance_metadata(
output_connector = ConnectorInstanceHelper.get_output_connector_instance_by_name_for_workflow( # noqa
tool_instance.workflow_id, output_connector_name
)
if (
output_connector
and "path" in output_connector.connector_metadata
):
if output_connector and "path" in output_connector.metadata:
metadata[JsonSchemaKey.OUTPUT_FOLDER] = os.path.join(
output_connector.connector_metadata["path"],
output_connector.metadata["path"],
*(metadata[JsonSchemaKey.OUTPUT_FOLDER].split("/")),
)
if (
Expand All @@ -76,9 +73,9 @@ def update_instance_metadata(
tool_instance.workflow_id, input_connector_name
)

if input_connector and "path" in input_connector.connector_metadata:
if input_connector and "path" in input_connector.metadata:
metadata[JsonSchemaKey.ROOT_FOLDER] = os.path.join(
input_connector.connector_metadata["path"],
input_connector.metadata["path"],
*(metadata[JsonSchemaKey.ROOT_FOLDER].split("/")),
)
ToolInstanceHelper.update_metadata_with_adapter_instances(
Expand Down Expand Up @@ -181,6 +178,7 @@ def update_metadata_with_adapter_instances(
adapter_property=adapter_property,
adapter_type=AdapterTypes.OCR,
)

@staticmethod
def get_altered_metadata(
tool_instance: ToolInstance,
Expand Down Expand Up @@ -210,13 +208,10 @@ def get_altered_metadata(
output_connector = ConnectorInstanceHelper.get_output_connector_instance_by_name_for_workflow( # noqa
tool_instance.workflow_id, output_connector_name
)
if (
output_connector
and "path" in output_connector.connector_metadata
):
if output_connector and "path" in output_connector.metadata:
relative_path = ToolInstanceHelper.get_relative_path(
metadata[JsonSchemaKey.OUTPUT_FOLDER],
output_connector.connector_metadata["path"],
output_connector.metadata["path"],
)
metadata[JsonSchemaKey.OUTPUT_FOLDER] = relative_path
if (
Expand All @@ -227,10 +222,10 @@ def get_altered_metadata(
input_connector = ConnectorInstanceHelper.get_input_connector_instance_by_name_for_workflow( # noqa
tool_instance.workflow_id, input_connector_name
)
if input_connector and "path" in input_connector.connector_metadata:
if input_connector and "path" in input_connector.metadata:
relative_path = ToolInstanceHelper.get_relative_path(
metadata[JsonSchemaKey.ROOT_FOLDER],
input_connector.connector_metadata["path"],
input_connector.metadata["path"],
)
metadata[JsonSchemaKey.ROOT_FOLDER] = relative_path
return metadata
Expand Down
17 changes: 3 additions & 14 deletions backend/workflow_manager/endpoint/destination.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,7 @@

import fsspec
import magic
from account.models import EncryptionSecret
from connector.models import ConnectorInstance
from cryptography.fernet import Fernet
from django.db import connection
from fsspec.implementations.local import LocalFileSystem
from unstract.sdk.constants import ToolExecKey
Expand Down Expand Up @@ -78,15 +76,8 @@ def _get_endpoint_for_workflow(
endpoint_type=WorkflowEndpoint.EndpointType.DESTINATION,
)
if endpoint.connector_instance:
encryption_secret: EncryptionSecret = EncryptionSecret.objects.get()
f: Fernet = Fernet(encryption_secret.key.encode("utf-8"))
endpoint.connector_instance.connector_metadata = json.loads(
f.decrypt(
bytes(endpoint.connector_instance.connector_metadata_b
).decode(
"utf-8"
)
)
endpoint.connector_instance.connector_metadata = (
endpoint.connector_instance.metadata
)
return endpoint

Expand Down Expand Up @@ -191,9 +182,7 @@ def copy_output_to_output_directory(self) -> None:
def insert_into_db(self, file_history: Optional[FileHistory]) -> None:
"""Insert data into the database."""
connector_instance: ConnectorInstance = self.endpoint.connector_instance
connector_settings: dict[
str, Any
] = connector_instance.connector_metadata
connector_settings: dict[str, Any] = connector_instance.metadata
destination_configurations: dict[str, Any] = self.endpoint.configuration
table_name: str = str(
destination_configurations.get(DestinationKey.TABLE)
Expand Down
15 changes: 2 additions & 13 deletions backend/workflow_manager/endpoint/source.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import fnmatch
import json
import logging
import os
import shutil
Expand All @@ -8,10 +7,8 @@
from typing import Any, Optional

import fsspec
from account.models import EncryptionSecret
from connector.models import ConnectorInstance
from connector_processor.constants import ConnectorKeys
from cryptography.fernet import Fernet
from django.core.files.uploadedfile import UploadedFile
from django.db import connection
from unstract.workflow_execution.enums import LogState
Expand Down Expand Up @@ -93,17 +90,9 @@ def _get_endpoint_for_workflow(
endpoint_type=WorkflowEndpoint.EndpointType.SOURCE,
)
if endpoint.connector_instance:
encryption_secret: EncryptionSecret = EncryptionSecret.objects.get()
f: Fernet = Fernet(encryption_secret.key.encode("utf-8"))
endpoint.connector_instance.connector_metadata = json.loads(
f.decrypt(
bytes(endpoint.connector_instance.connector_metadata_b
).decode(
"utf-8"
)
)
endpoint.connector_instance.connector_metadata = (
endpoint.connector_instance.metadata
)

return endpoint

def validate(self) -> None:
Expand Down

0 comments on commit 513f704

Please sign in to comment.