mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-09-03 16:35:10 +00:00
Config (#3502)
* [Update] 修改config * [Update] 移动存储设置到到terminal中 * [Update] 修改permission 查看 * [Update] pre merge * [Update] 录像存储 * [Update] 命令存储 * [Update] 添加存储测试可连接性 * [Update] 修改 meta 值的 key 为大写 * [Update] 修改 Terminal 相关 Storage 配置 * [Update] 删除之前获取录像/命令存储的代码 * [Update] 修改导入失败 * [Update] 迁移文件添加default存储 * [Update] 删除之前代码,添加help_text信息 * [Update] 删除之前代码 * [Update] 删除之前代码 * [Update] 抽象命令/录像存储 APIView * [Update] 抽象命令/录像存储 APIView 1 * [Update] 抽象命令/录像存储 DictField * [Update] 抽象命令/录像存储列表页面 * [Update] 修复CustomDictField的bug * [Update] RemoteApp 页面添加 hidden * [Update] 用户页面添加用户关联授权 * [Update] 修改存储测试可连接性 target * [Update] 修改配置 * [Update] 修改存储前端 Form 渲染逻辑 * [Update] 修改存储细节 * [Update] 统一存储类型到 const 文件 * [Update] 修改迁移文件及Model,创建默认存储 * [Update] 修改迁移文件及Model初始化默认数据 * [Update] 修改迁移文件 * [Update] 修改迁移文件 * [Update] 修改迁移文件 * [Update] 修改迁移文件 * [Update] 修改迁移文件 * [Update] 修改迁移文件 * [Update] 修改迁移文件 * [Update] 限制删除默认存储配置,只允许创建扩展的存储类型 * [Update] 修改ip字段长度 * [Update] 修改ip字段长度 * [Update] 修改一些css * [Update] 修改关联 * [Update] 添加操作日志定时清理 * [Update] 修改记录syslog的instance encoder * [Update] 忽略登录产生的操作日志 * [Update] 限制更新存储时不覆盖原有AK SK 等字段 * [Update] 修改迁移文件添加comment字段 * [Update] 修改迁移文件 * [Update] 添加 comment 字段 * [Update] 修改默认存储no -> null * [Update] 修改细节 * [Update] 更新翻译(存储配置 * [Update] 修改定时任务注册,修改系统用户资产、节点关系api * [Update] 添加监控磁盘任务 * [Update] 修改session * [Update] 拆分serializer * [Update] 还原setting原来的manager
This commit is contained in:
@@ -4,9 +4,6 @@ import json
|
||||
|
||||
from django.dispatch import receiver
|
||||
from django.db.models.signals import post_save, pre_save
|
||||
from django.conf import LazySettings, empty, global_settings
|
||||
from django.db.utils import ProgrammingError, OperationalError
|
||||
from django.core.cache import cache
|
||||
|
||||
from jumpserver.utils import current_request
|
||||
from common.utils import get_logger, ssh_key_gen
|
||||
@@ -23,56 +20,9 @@ def refresh_settings_on_changed(sender, instance=None, **kwargs):
|
||||
|
||||
|
||||
@receiver(django_ready)
|
||||
def monkey_patch_settings(sender, **kwargs):
|
||||
logger.debug("Monkey patch settings")
|
||||
cache_key_prefix = '_SETTING_'
|
||||
custom_need_cache_settings = [
|
||||
'AUTHENTICATION_BACKENDS', 'TERMINAL_HOST_KEY',
|
||||
]
|
||||
custom_no_cache_settings = [
|
||||
'BASE_DIR', 'VERSION', 'AUTH_OPENID',
|
||||
]
|
||||
django_settings = dir(global_settings)
|
||||
uncached_settings = [i for i in django_settings if i.isupper()]
|
||||
uncached_settings = [i for i in uncached_settings if not i.startswith('EMAIL')]
|
||||
uncached_settings = [i for i in uncached_settings if not i.startswith('SESSION_REDIS')]
|
||||
uncached_settings = [i for i in uncached_settings if i not in custom_need_cache_settings]
|
||||
uncached_settings.extend(custom_no_cache_settings)
|
||||
|
||||
def monkey_patch_getattr(self, name):
|
||||
if name not in uncached_settings:
|
||||
key = cache_key_prefix + name
|
||||
cached = cache.get(key)
|
||||
if cached is not None:
|
||||
return cached
|
||||
if self._wrapped is empty:
|
||||
self._setup(name)
|
||||
val = getattr(self._wrapped, name)
|
||||
return val
|
||||
|
||||
def monkey_patch_setattr(self, name, value):
|
||||
key = cache_key_prefix + name
|
||||
cache.set(key, value, None)
|
||||
if name == '_wrapped':
|
||||
self.__dict__.clear()
|
||||
else:
|
||||
self.__dict__.pop(name, None)
|
||||
super(LazySettings, self).__setattr__(name, value)
|
||||
|
||||
def monkey_patch_delattr(self, name):
|
||||
super(LazySettings, self).__delattr__(name)
|
||||
self.__dict__.pop(name, None)
|
||||
key = cache_key_prefix + name
|
||||
cache.delete(key)
|
||||
|
||||
try:
|
||||
cache.delete_pattern(cache_key_prefix+'*')
|
||||
LazySettings.__getattr__ = monkey_patch_getattr
|
||||
LazySettings.__setattr__ = monkey_patch_setattr
|
||||
LazySettings.__delattr__ = monkey_patch_delattr
|
||||
Setting.refresh_all_settings()
|
||||
except (ProgrammingError, OperationalError):
|
||||
pass
|
||||
def on_django_ready_add_db_config(sender, **kwargs):
|
||||
from django.conf import settings
|
||||
settings.DYNAMIC.db_setting = Setting
|
||||
|
||||
|
||||
@receiver(django_ready)
|
||||
|
Reference in New Issue
Block a user