sharing/token/resolver: add delay in case token was not found

This commit is contained in:
Peter Bieringer
2026-03-29 14:41:04 +02:00
parent fc50170a8d
commit 024712de85

View File

@@ -19,8 +19,10 @@ import base64
import io
import json
import logging
import random
import re
import socket
import time
import uuid
from csv import DictWriter
from datetime import datetime
@@ -138,6 +140,7 @@ class BaseSharing:
_storage: storage.BaseStorage
_rights: rights.BaseRights
_auth_delay: float
_enabled: bool = False
default_permissions_create_token: str
default_permissions_create_map: str
@@ -154,6 +157,7 @@ class BaseSharing:
self.configuration = configuration
self._rights = rights.load(configuration)
self._storage = storage.load(configuration)
self._auth_delay = configuration.get("auth", "delay")
# Sharing
self.sharing_collection_by_map = configuration.get("sharing", "collection_by_map")
self.sharing_collection_by_token = configuration.get("sharing", "collection_by_token")
@@ -388,6 +392,10 @@ class BaseSharing:
if share is None:
share = self.sharing_collection_by_token_resolver(path)
if share is not None and 'error' in share:
if self._auth_delay > 0:
random_delay = self._auth_delay * (1 + random.random())
logger.debug("Failed shared-by-token resolver, sleeping random: %.3f sec", random_delay)
time.sleep(random_delay)
return None
else:
if logger.isEnabledFor(logging.DEBUG):