mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-06-28 07:47:10 +00:00
[Update] 兼容guacamole手动模式上传system user是uuid
This commit is contained in:
parent
74c3f12275
commit
7e65e44a3c
@ -118,6 +118,8 @@ class SystemUser(AssetUser):
|
|||||||
shell = models.CharField(max_length=64, default='/bin/bash', verbose_name=_('Shell'))
|
shell = models.CharField(max_length=64, default='/bin/bash', verbose_name=_('Shell'))
|
||||||
login_mode = models.CharField(choices=LOGIN_MODE_CHOICES, default=AUTO_LOGIN, max_length=10, verbose_name=_('Login mode'))
|
login_mode = models.CharField(choices=LOGIN_MODE_CHOICES, default=AUTO_LOGIN, max_length=10, verbose_name=_('Login mode'))
|
||||||
|
|
||||||
|
cache_key = "__SYSTEM_USER_CACHED_{}"
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return '{0.name}({0.username})'.format(self)
|
return '{0.name}({0.username})'.format(self)
|
||||||
|
|
||||||
@ -154,6 +156,24 @@ class SystemUser(AssetUser):
|
|||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def set_cache(self):
|
||||||
|
cache.set(self.cache_key.format(self.id), self, 3600)
|
||||||
|
|
||||||
|
def expire_cache(self):
|
||||||
|
cache.delete(self.cache_key.format(self.id))
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_system_user_by_id_or_cached(cls, sid):
|
||||||
|
cached = cache.get(cls.cache_key.format(sid))
|
||||||
|
if cached:
|
||||||
|
return cached
|
||||||
|
try:
|
||||||
|
system_user = cls.objects.get(id=sid)
|
||||||
|
system_user.set_cache()
|
||||||
|
return system_user
|
||||||
|
except cls.DoesNotExist:
|
||||||
|
return None
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
ordering = ['name']
|
ordering = ['name']
|
||||||
verbose_name = _("System user")
|
verbose_name = _("System user")
|
||||||
|
@ -4,7 +4,6 @@ from collections import OrderedDict
|
|||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import uuid
|
import uuid
|
||||||
import copy
|
|
||||||
|
|
||||||
from django.core.cache import cache
|
from django.core.cache import cache
|
||||||
from django.shortcuts import get_object_or_404, redirect
|
from django.shortcuts import get_object_or_404, redirect
|
||||||
@ -16,12 +15,13 @@ from django.conf import settings
|
|||||||
|
|
||||||
import jms_storage
|
import jms_storage
|
||||||
|
|
||||||
from rest_framework import viewsets, serializers
|
from rest_framework import viewsets
|
||||||
from rest_framework.views import APIView, Response
|
from rest_framework.views import APIView, Response
|
||||||
from rest_framework.permissions import AllowAny
|
from rest_framework.permissions import AllowAny
|
||||||
from rest_framework_bulk import BulkModelViewSet
|
from rest_framework_bulk import BulkModelViewSet
|
||||||
|
|
||||||
from common.utils import get_object_or_none
|
from common.utils import get_object_or_none, is_uuid
|
||||||
|
from .hands import SystemUser
|
||||||
from .models import Terminal, Status, Session, Task
|
from .models import Terminal, Status, Session, Task
|
||||||
from .serializers import TerminalSerializer, StatusSerializer, \
|
from .serializers import TerminalSerializer, StatusSerializer, \
|
||||||
SessionSerializer, TaskSerializer, ReplaySerializer
|
SessionSerializer, TaskSerializer, ReplaySerializer
|
||||||
@ -187,8 +187,13 @@ class SessionViewSet(viewsets.ModelViewSet):
|
|||||||
return self.queryset
|
return self.queryset
|
||||||
|
|
||||||
def perform_create(self, serializer):
|
def perform_create(self, serializer):
|
||||||
if self.request.user.terminal:
|
if hasattr(self.request.user, 'terminal'):
|
||||||
serializer.validated_data["terminal"] = self.request.user.terminal
|
serializer.validated_data["terminal"] = self.request.user.terminal
|
||||||
|
sid = serializer.validated_data["system_user"]
|
||||||
|
if is_uuid(sid):
|
||||||
|
_system_user = SystemUser.get_system_user_by_id_or_cached(sid)
|
||||||
|
if _system_user:
|
||||||
|
serializer.validated_data["system_user"] = _system_user.name
|
||||||
return super().perform_create(serializer)
|
return super().perform_create(serializer)
|
||||||
|
|
||||||
|
|
||||||
|
@ -5,3 +5,4 @@ from users.models import User
|
|||||||
from users.permissions import IsSuperUserOrAppUser, IsAppUser, \
|
from users.permissions import IsSuperUserOrAppUser, IsAppUser, \
|
||||||
IsSuperUserOrAppUserOrUserReadonly
|
IsSuperUserOrAppUserOrUserReadonly
|
||||||
from users.utils import AdminUserRequiredMixin
|
from users.utils import AdminUserRequiredMixin
|
||||||
|
from assets.models import SystemUser
|
@ -58,7 +58,7 @@
|
|||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<div class="input-group-btn">
|
<div class="input-group-btn">
|
||||||
<button id='search_btn' type="submit" class="btn btn-sm btn-primary">
|
<button id='search_btn' type="submit" class="btn btn-sm btn-primary">
|
||||||
搜索
|
{% trans 'Search' %}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
# ~*~ coding: utf-8 ~*~
|
# ~*~ coding: utf-8 ~*~
|
||||||
|
|
||||||
from django import template
|
from django import template
|
||||||
|
|
||||||
from ..backends import get_multi_command_storage
|
from ..backends import get_multi_command_storage
|
||||||
|
|
||||||
register = template.Library()
|
register = template.Library()
|
||||||
@ -10,3 +11,4 @@ command_store = get_multi_command_storage()
|
|||||||
@register.filter
|
@register.filter
|
||||||
def get_session_command_amount(session_id):
|
def get_session_command_amount(session_id):
|
||||||
return command_store.count(session=session_id)
|
return command_store.count(session=session_id)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user