From 3bf495a02ae12af3038c121198a6e24a2fd7e156 Mon Sep 17 00:00:00 2001 From: Bai Date: Fri, 6 Mar 2026 18:46:04 +0800 Subject: [PATCH] feat: support get license from jdmc --- apps/common/decorators.py | 25 +++++++++++++++++++++++++ apps/jumpserver/conf.py | 1 + apps/jumpserver/settings/custom.py | 1 + 3 files changed, 27 insertions(+) diff --git a/apps/common/decorators.py b/apps/common/decorators.py index 3ddee64ab..840101578 100644 --- a/apps/common/decorators.py +++ b/apps/common/decorators.py @@ -296,6 +296,31 @@ def cached_method(ttl=20): return decorator +def cached_method_to_redis(key, ttl, should_cache=None): + from django.core.cache import cache + + def decorator(func): + @wraps(func) + def wrapper(*args, **kwargs): + # 尝试从缓存读取 + cached_result = cache.get(key) + if cached_result is not None: + return cached_result + + # 执行函数 + result = func(*args, **kwargs) + + # 判断是否缓存 + if should_cache is None or should_cache(result): + cache.set(key, result, ttl) + + return result + + return wrapper + + return decorator + + def bulk_handle(handler, batch_size=50, timeout=0.5): def decorator(func): from orgs.utils import get_current_org_id diff --git a/apps/jumpserver/conf.py b/apps/jumpserver/conf.py index 51155b6b8..c2a62181b 100644 --- a/apps/jumpserver/conf.py +++ b/apps/jumpserver/conf.py @@ -750,6 +750,7 @@ class Config(dict): # JDMC 'JDMC_ENABLED': False, 'JDMC_SOCK_PATH': '', + 'JDMC_LICENSE_PUBLIC_KEY_PATH': '', } old_config_map = { diff --git a/apps/jumpserver/settings/custom.py b/apps/jumpserver/settings/custom.py index ebb3daaef..6f52006d2 100644 --- a/apps/jumpserver/settings/custom.py +++ b/apps/jumpserver/settings/custom.py @@ -281,3 +281,4 @@ if Path(VENDOR_TEMPLATES_DIR).is_dir(): JDMC_ENABLED = CONFIG.JDMC_ENABLED JDMC_SOCK_PATH = CONFIG.JDMC_SOCK_PATH JDMC_BASE_URL = f"http+unix://{quote(JDMC_SOCK_PATH, safe='')}" +JDMC_LICENSE_PUBLIC_KEY_PATH = CONFIG.JDMC_LICENSE_PUBLIC_KEY_PATH \ No newline at end of file