Explorar el Código

fix(api): add signature generation for image previews (#9893)

tags/0.10.2
-LAN- hace 1 año
padre
commit
dd3ac7a2c9
No account linked to committer's email address
Se han modificado 1 ficheros con 20 adiciones y 2 borrados
  1. 20
    2
      api/models/dataset.py

+ 20
- 2
api/models/dataset.py Ver fichero

) )


def get_sign_content(self): def get_sign_content(self):
pattern = r"/files/([a-f0-9\-]+)/file-preview"
signed_urls = []
text = self.content text = self.content

# For data before v0.10.0
pattern = r"/files/([a-f0-9\-]+)/image-preview"
matches = re.finditer(pattern, text)
for match in matches:
upload_file_id = match.group(1)
nonce = os.urandom(16).hex()
timestamp = str(int(time.time()))
data_to_sign = f"image-preview|{upload_file_id}|{timestamp}|{nonce}"
secret_key = dify_config.SECRET_KEY.encode() if dify_config.SECRET_KEY else b""
sign = hmac.new(secret_key, data_to_sign.encode(), hashlib.sha256).digest()
encoded_sign = base64.urlsafe_b64encode(sign).decode()

params = f"timestamp={timestamp}&nonce={nonce}&sign={encoded_sign}"
signed_url = f"{match.group(0)}?{params}"
signed_urls.append((match.start(), match.end(), signed_url))

# For data after v0.10.0
pattern = r"/files/([a-f0-9\-]+)/file-preview"
matches = re.finditer(pattern, text) matches = re.finditer(pattern, text)
signed_urls = []
for match in matches: for match in matches:
upload_file_id = match.group(1) upload_file_id = match.group(1)
nonce = os.urandom(16).hex() nonce = os.urandom(16).hex()

Cargando…
Cancelar
Guardar